UNPKG

7.03 MBSource Map (JSON)View Raw
1{"version":3,"sources":["powerbi-visuals-externals.min.js","../ts/VisualsContracts/enums.ts","../ts/visualsCommon/typedefs/typedefs.ts","../ts/visualsCommon/typedefs/typedefs.obj.ts","../ts/visualsCommon/DOMConstants.ts","../ts/visualsCommon/serviceError.ts","../ts/visualsCommon/services/build.ts","../ts/visualsCommon/services/geoTaggingAnalyzerService.ts","../ts/visualsCommon/typedefs/buildConstants.ts","../ts/visualsCommon/clientError.ts","../ts/visualsCommon/arrayExtensions.ts","../ts/visualsCommon/Controls/DomFactory.ts","../ts/visualsCommon/Double.ts","../ts/visualsCommon/color.ts","../ts/visualsCommon/CssConstants.ts","../ts/visualsCommon/debug.ts","../ts/visualsCommon/Errors.ts","../ts/visualsCommon/JQueryExtensions.ts","../ts/visualsCommon/Lazy.ts","../ts/visualsCommon/Prototype.ts","../ts/visualsCommon/ScriptErrorInfo.ts","../ts/visualsCommon/Formatting.ts","../ts/visualsCommon/services/requires.ts","../ts/visualsCommon/services/jqueryPromiseFactory.ts","../ts/visualsCommon/services/localStorageService.ts","../ts/visualsCommon/Utility/wordBreaker.ts","../ts/visualsCommon/services/textMeasurementService.ts","../ts/visualsCommon/Utility/ThrottleUtility.ts","../ts/visualsCommon/Utility/TimerPromiseFactory.ts","../ts/visualsCommon/Utility/Utility.ts","../ts/visualsCommon/tracing/traceItem.ts","../ts/visualsCommon/Utility/StandaloneUtility.ts","../ts/visualsCommon/tracing/trace.ts","../ts/visualsCommon/tracing/traceType.ts","../ts/visualsCommon/services/dependencies.ts","../ts/visualsCommon/_references.ts","../ts/visualsCommon/TraceType.ts","../ts/visualsData/typedefs/typedefs.ts","../ts/visualsData/typedefs/typedefs.obj.ts","../ts/visualsData/semanticQuery/sqExprVisitor.ts","../ts/visualsData/types/enumType.ts","../ts/visualsData/types/fill.ts","../ts/visualsData/types/fillRule.ts","../ts/visualsData/types/image.ts","../ts/visualsData/types/paragraphs.ts","../ts/visualsData/types/structuralType.ts","../ts/visualsData/types/valueType.ts","../ts/visualsData/contracts/conceptualSchema.ts","../ts/visualsData/contracts/dataShapeBinding.ts","../ts/visualsData/contracts/dataShapeBindingDataReduction.ts","../ts/visualsData/contracts/federatedConceptualSchema.ts","../ts/visualsData/contracts/selector.ts","../ts/visualsData/contracts/query.ts","../ts/visualsData/contracts/queryProjection.ts","../ts/visualsData/contracts/visualData.ts","../ts/visualsData/dataView/colorAllocator.ts","../ts/visualsData/dataView/compiledDataViewMapping.ts","../ts/visualsData/dataView/dataViewObjectDefinition.ts","../ts/visualsData/dataView/dataViewObjectDescriptor.ts","../ts/visualsData/dataView/dataViewObjectEvaluationUtils.ts","../ts/visualsData/dataView/dataViewObjectEvaluator.ts","../ts/visualsData/dataView/dataViewObject.ts","../ts/visualsData/dataView/dataViewPivotCategorical.ts","../ts/visualsData/dataView/dataViewPivotMatrix.ts","../ts/visualsData/dataView/dataViewSelfCrossJoin.ts","../ts/visualsData/dataView/dataViewPivotCategoricalToPrimaryGroups.ts","../ts/visualsData/dataView/dataViewTransform.ts","../ts/visualsData/dataView/dataViewNormalizeValues.ts","../ts/visualsData/displayNameGetter.ts","../ts/visualsData/dataReader/dataReader.ts","../ts/visualsData/iFormattingService.ts","../ts/visualsData/semanticQuery/exprPatterns/fieldExprPattern.ts","../ts/visualsData/dataView/dataViewAnalysis.ts","../ts/visualsData/dataView/dataViewScopeIdentity.ts","../ts/visualsData/dataView/dataViewScopeWildcard.ts","../ts/visualsData/dataView/rules/evalContext.ts","../ts/visualsData/dataView/rules/categoricalEvalContext.ts","../ts/visualsData/dataView/rules/ruleEvaluation.ts","../ts/visualsData/dataView/rules/colorRuleEvaluation.ts","../ts/visualsData/dataView/rules/filterRuleEvaluation.ts","../ts/visualsData/dataView/scriptResultUtil.ts","../ts/visualsData/segmentation/dataViewMerger.ts","../ts/visualsData/semanticQuery/sqExprRewriter.ts","../ts/visualsData/semanticQuery/exprPatterns/equalsToInRewriter.ts","../ts/visualsData/semanticQuery/exprPatterns/filterScopeIdsCollector.ts","../ts/visualsData/semanticQuery/exprPatterns/scopeIdentityExtractor.ts","../ts/visualsData/semanticQuery/primitiveValueEncoding.ts","../ts/visualsData/semanticQuery/sqHierarchyExprUtils.ts","../ts/visualsData/semanticQuery/sqExprGroupUtils.ts","../ts/visualsData/semanticQuery/sqExpr.ts","../ts/visualsData/semanticQuery/sqExprUtils.ts","../ts/visualsData/semanticQuery/semanticQueryRewriter.ts","../ts/visualsData/semanticQuery/semanticQuery.ts","../ts/visualsData/dataView/dataViewBuilder.ts","../ts/visualsData/dataView/rules/staticEvalContext.ts","../ts/visualsData/dataView/rules/matrixEvalContext.ts","../ts/visualsData/services/formattingService.ts","../ts/visualsData/services/serialization/sqExprShortSerializer.ts","../ts/visualsData/_references.ts","../ts/visuals/typedefs/typedefs.ts","../ts/visuals/typedefs/typedefs.obj.ts","../ts/visuals/common/point.ts","../ts/visuals/common/rect.ts","../ts/visuals/legend.ts","../ts/visuals/types/axisScale.ts","../ts/visuals/types/axisStyle.ts","../ts/visuals/types/axisType.ts","../ts/visuals/types/basicShapeType.ts","../ts/visuals/types/imageScalingType.ts","../ts/visuals/types/labelPosition.ts","../ts/visuals/types/labelStyle.ts","../ts/visuals/types/legendPosition.ts","../ts/visuals/types/kpi_direction_type.ts","../ts/visuals/types/lineStyle.ts","../ts/visuals/types/outline.ts","../ts/visuals/types/referenceLinePosition.ts","../ts/visuals/types/slicerOrientation.ts","../ts/visuals/types/yAxisPosition.ts","../ts/visuals/animators/animatorCommon.ts","../ts/visuals/animators/columnChartAnimator.ts","../ts/visuals/animators/donutChartAnimator.ts","../ts/visuals/animators/funnelChartAnimator.ts","../ts/visuals/animators/treemapAnimator.ts","../ts/visuals/capabilities/animatedNumber.capabilities.ts","../ts/visuals/capabilities/basicShape.capabilities.ts","../ts/visuals/capabilities/columnChart.capabilities.ts","../ts/visuals/capabilities/comboChart.capabilities.ts","../ts/visuals/capabilities/donutChart.capabilities.ts","../ts/visuals/capabilities/dataDotChart.capabilities.ts","../ts/visuals/capabilities/filledMap.capabilities.ts","../ts/visuals/capabilities/funnelChart.capabilities.ts","../ts/visuals/capabilities/gauge.capabilities.ts","../ts/visuals/capabilities/imageVisual.capabilities.ts","../ts/visuals/capabilities/scriptVisual.capabilities.ts","../ts/visuals/capabilities/lineChart.capabilities.ts","../ts/visuals/capabilities/map.capabilities.ts","../ts/visuals/capabilities/multiRowCard.capabilities.ts","../ts/visuals/capabilities/textbox.capabilities.ts","../ts/visuals/capabilities/sampleVisual.capabilities.ts","../ts/visuals/capabilities/scatterChart.capabilities.ts","../ts/visuals/capabilities/slicer.capabilities.ts","../ts/visuals/capabilities/table.capabilities.ts","../ts/visuals/capabilities/matrix.capabilities.ts","../ts/visuals/capabilities/treemap.capabilities.ts","../ts/visuals/capabilities/card.capabilities.ts","../ts/visuals/capabilities/waterfallChart.capabilities.ts","../ts/visuals/capabilities/sunburst.capabilities.ts","../ts/visuals/capabilities/kpiStatusWithHistory.capabilities.ts","../ts/visuals/pluginsCapabilities.ts","../ts/visuals/behaviours/columnChartBehaviors.ts","../ts/visuals/behaviours/dataDotChartBehavior.ts","../ts/visuals/behaviours/donutChartBehaviors.ts","../ts/visuals/behaviours/funnelBehaviors.ts","../ts/visuals/behaviours/lineChartBehaviors.ts","../ts/visuals/behaviours/mapBehaviors.ts","../ts/visuals/behaviours/scatterChartBehaviors.ts","../ts/visuals/behaviours/horizontalSlicerBehaviors.ts","../ts/visuals/behaviours/verticalSlicerBehaviors.ts","../ts/visuals/behaviours/slicerBehaviors.ts","../ts/visuals/behaviours/legendBehaviors.ts","../ts/visuals/behaviours/treemapBehaviors.ts","../ts/visuals/behaviours/waterfallChartBehavior.ts","../ts/visuals/behaviours/LabelsBehavior.ts","../ts/visuals/behaviours/cartesianChartBehaviors.ts","../ts/visuals/contracts/contracts.ts","../ts/visuals/common/axisHelper.ts","../ts/visuals/common/basicShapeUtils.ts","../ts/visuals/common/cartesianHelper.ts","../ts/visuals/common/colorHelper.ts","../ts/visuals/common/columnChartUtil.ts","../ts/visuals/common/converterHelper.ts","../ts/visuals/common/dataLabelUtils.ts","../ts/visuals/common/donutLabelUtils.ts","../ts/visuals/common/newDataLabelUtils.ts","../ts/visuals/common/dataRoleHelper.ts","../ts/visuals/common/kpiUtil.ts","../ts/visuals/common/referenceLineHelper.ts","../ts/visuals/common/invalidDataValuesChecker.ts","../ts/visuals/common/listView.ts","../ts/visuals/common/mapUtil.ts","../ts/visuals/common/selectionId.ts","../ts/visuals/common/selectionManager.ts","../ts/visuals/common/shapes.ts","../ts/visuals/common/slicerUtil.ts","../ts/visuals/common/tooltipUtils.ts","../ts/visuals/common/svgUtil.ts","../ts/visuals/common/textUtil.ts","../ts/visuals/common/urlHelper.ts","../ts/visuals/common/gradientHelper.ts","../ts/visuals/common/visualBackgroundHelper.ts","../ts/visuals/common/objectEnumerationBuilder.ts","../ts/visuals/common/visualBorderUtil.ts","../ts/visuals/common/transform.ts","../ts/visuals/common/visibilityUtil.ts","../ts/visuals/converter/slicer.converter.ts","../ts/visuals/formatting/dataLabelManager.ts","../ts/visuals/formatting/labelLayout.ts","../ts/visuals/formatting/dateTimeSequence.ts","../ts/visuals/formatting/displayUnitSystem.ts","../ts/visuals/formatting/numericSequence.ts","../ts/visuals/formatting/numericSequenceRange.ts","../ts/visuals/formatting/valueFormatter.ts","../ts/visuals/formatting/donutLabelLayout.ts","../ts/visuals/formatting/filledMapLabelLayout.ts","../ts/visuals/services/colorAllocatorFactory.ts","../ts/visuals/services/defaultVisualHostService.ts","../ts/visuals/services/interactivityService.ts","../ts/visuals/services/geocoder.ts","../ts/visuals/services/geocodingCache.ts","../ts/visuals/services/visualPluginService.ts","../ts/visuals/controls/scrollbar/scrollbar.ts","../ts/visuals/controls/tablix/internal/tablixGridPresenter.ts","../ts/visuals/controls/tablix/internal/tablixRealizationManager.ts","../ts/visuals/controls/tablix/internal/tablixGrid.ts","../ts/visuals/controls/tablix/internal/tablixLayoutManager.ts","../ts/visuals/controls/tablix/internal/tablixUtils.ts","../ts/visuals/controls/tablix/iTablixHierarchyNavigator.ts","../ts/visuals/controls/tablix/iTablixBinder.ts","../ts/visuals/controls/tablix/iTablixLayoutManager.ts","../ts/visuals/controls/tablix/tablixControl.ts","../ts/visuals/controls/tablix/tablixDimension.ts","../ts/visuals/controls/tablix/tablixTouchDelegate.ts","../ts/visuals/controls/tablix/touchRegionAbstraction.ts","../ts/visuals/controls/tablix/ITablixFormatting.ts","../ts/visuals/controls/tablix/tablixColumnWidthManager.ts","../ts/visuals/visuals/animatedText.ts","../ts/visuals/visuals/animatedNumber.ts","../ts/visuals/visuals/basicShape.ts","../ts/visuals/cartesian/cartesianChart.ts","../ts/visuals/cartesian/columnChart.ts","../ts/visuals/cartesian/columnChartClustered.ts","../ts/visuals/cartesian/columnChartStacked.ts","../ts/visuals/cartesian/comboChart.ts","../ts/visuals/dataColorPalette.ts","../ts/visuals/cartesian/dataDotChart.ts","../ts/visuals/visuals/funnelChart.ts","../ts/visuals/visuals/gauge.ts","../ts/visuals/visuals/imageVisual.ts","../ts/visuals/visuals/kpiStatusWithHistory.ts","../ts/visuals/cartesian/lineChart.ts","../ts/visuals/visuals/map.ts","../ts/visuals/visuals/multiRowCard.ts","../ts/visuals/visuals/textbox.ts","../ts/visuals/visuals/sampleVisual.ts","../ts/visuals/cartesian/scatterChart.ts","../ts/visuals/cartesian/playChart.ts","../ts/visuals/visuals/verticalSlicer.ts","../ts/visuals/visuals/horizontalSlicer.ts","../ts/visuals/visuals/slicer.ts","../ts/visuals/visuals/table.ts","../ts/visuals/visuals/matrix.ts","../ts/visuals/visuals/treemap.ts","../ts/visuals/visuals/card.ts","../ts/visuals/visuals/owlGauge.ts","../ts/visuals/warnings/visualWarnings.ts","../ts/visuals/cartesian/waterfallChart.ts","../ts/visuals/tooltip.ts","../ts/visuals/styles/visualStyles.ts","../ts/visuals/visuals/donutChart.ts","../ts/visuals/visuals/scriptVisual.ts","../ts/visuals/plugins.ts","../ts/visuals/_references.ts","../ts/visuals/behaviours/playChartBehaviors.ts","../ts/visuals/common/canvasBackgroundHelper.ts"],"names":["powerbi","powerbi.VisualDataRoleKind","powerbi.VisualDataChangeOperationKind","jsCommon","jsCommon.DOMConstants","powerbi.PowerBIErrorResourceType","powerbi.ServiceErrorToClientError","powerbi.ServiceErrorToClientError.constructor","powerbi.ServiceErrorToClientError.code","powerbi.ServiceErrorToClientError.ignorable","powerbi.ServiceErrorToClientError.requestId","powerbi.ServiceErrorToClientError.getDetails","powerbi.PowerBIErrorDetailHelper","powerbi.PowerBIErrorDetailHelper.constructor","powerbi.PowerBIErrorDetailHelper.addAdditionalInfo","powerbi.PowerBIErrorDetailHelper.addMessageAndStackTrace","powerbi.PowerBIErrorDetailHelper.GetDetailsFromTransformError","powerbi.PowerBIErrorDetailHelper.GetDetailsFromServerErrorStatusCode","powerbi.createGeoTaggingAnalyzerService","powerbi.GeoTaggingAnalyzerService","powerbi.GeoTaggingAnalyzerService.constructor","powerbi.GeoTaggingAnalyzerService.isLongitudeOrLatitude","powerbi.GeoTaggingAnalyzerService.isGeographic","powerbi.GeoTaggingAnalyzerService.isGeocodable","powerbi.GeoTaggingAnalyzerService.isGeoshapable","powerbi.GeoTaggingAnalyzerService.isGeoshapableEnglish","powerbi.GeoTaggingAnalyzerService.isAddress","powerbi.GeoTaggingAnalyzerService.isPlace","powerbi.GeoTaggingAnalyzerService.isCity","powerbi.GeoTaggingAnalyzerService.isStateOrProvince","powerbi.GeoTaggingAnalyzerService.isCountry","powerbi.GeoTaggingAnalyzerService.isCounty","powerbi.GeoTaggingAnalyzerService.isContinent","powerbi.GeoTaggingAnalyzerService.isPostalCode","powerbi.GeoTaggingAnalyzerService.isLongitude","powerbi.GeoTaggingAnalyzerService.isLatitude","powerbi.GeoTaggingAnalyzerService.isTerritory","powerbi.GeoTaggingAnalyzerService.hasMatches","powerbi.GeoTaggingAnalyzerService.getFieldType","powerbi.GeoTaggingAnalyzerService.isEnglishAddress","powerbi.GeoTaggingAnalyzerService.isEnglishPlace","powerbi.GeoTaggingAnalyzerService.isEnglishCity","powerbi.GeoTaggingAnalyzerService.isEnglishStateOrProvince","powerbi.GeoTaggingAnalyzerService.isEnglishCountry","powerbi.GeoTaggingAnalyzerService.isEnglishCounty","powerbi.GeoTaggingAnalyzerService.isEnglishContinent","powerbi.GeoTaggingAnalyzerService.isEnglishPostalCode","powerbi.GeoTaggingAnalyzerService.isEnglishLongitude","powerbi.GeoTaggingAnalyzerService.isEnglishLatitude","powerbi.GeoTaggingAnalyzerService.isEnglishTerritory","powerbi.GeoTaggingAnalyzerService.getEnglishFieldType","powerbi.UnknownClientError","powerbi.UnknownClientError.constructor","powerbi.UnknownClientError.code","powerbi.UnknownClientError.ignorable","powerbi.UnknownClientError.getDetails","powerbi.HttpClientError","powerbi.HttpClientError.constructor","powerbi.HttpClientError.code","powerbi.HttpClientError.ignorable","powerbi.HttpClientError.requestId","powerbi.HttpClientError.getDetails","powerbi.IgnorableClientError","powerbi.IgnorableClientError.constructor","powerbi.IgnorableClientError.code","powerbi.IgnorableClientError.ignorable","powerbi.IgnorableClientError.getDetails","jsCommon.ArrayExtensions","jsCommon.ArrayExtensions.intersect","jsCommon.ArrayExtensions.diff","jsCommon.ArrayExtensions.distinct","jsCommon.ArrayExtensions.union","jsCommon.ArrayExtensions.unionSingle","jsCommon.ArrayExtensions.range","jsCommon.ArrayExtensions.take","jsCommon.ArrayExtensions.copy","jsCommon.ArrayExtensions.sequenceEqual","jsCommon.ArrayExtensions.emptyToNull","jsCommon.ArrayExtensions.indexOf","jsCommon.ArrayExtensions.rotate","jsCommon.ArrayExtensions.createWithId","jsCommon.ArrayExtensions.extendWithId","jsCommon.ArrayExtensions.findWithId","jsCommon.ArrayExtensions.withId","jsCommon.ArrayExtensions.createWithName","jsCommon.ArrayExtensions.extendWithName","jsCommon.ArrayExtensions.findItemWithName","jsCommon.ArrayExtensions.indexWithName","jsCommon.ArrayExtensions.withName","jsCommon.ArrayExtensions.clear","jsCommon.ArrayExtensions.isUndefinedOrEmpty","jsCommon.ArrayExtensions.swap","jsCommon.ArrayExtensions.isInArray","InJs","InJs.DomFactory","InJs.DomFactory.div","InJs.DomFactory.span","InJs.DomFactory.checkbox","InJs.DomFactory.ul","InJs.DomFactory.li","InJs.DomFactory.button","InJs.DomFactory.select","InJs.DomFactory.textBox","InJs.DomFactory.img","InJs.DomFactory.iframe","powerbi.Double","powerbi.Double.pow10","powerbi.Double.log10","powerbi.Double.getPrecision","powerbi.Double.equalWithPrecision","powerbi.Double.lessWithPrecision","powerbi.Double.lessOrEqualWithPrecision","powerbi.Double.greaterWithPrecision","powerbi.Double.greaterOrEqualWithPrecision","powerbi.Double.floorWithPrecision","powerbi.Double.ceilWithPrecision","powerbi.Double.floorToPrecision","powerbi.Double.ceilToPrecision","powerbi.Double.roundToPrecision","powerbi.Double.ensureInRange","powerbi.Double.round","powerbi.Double.project","powerbi.Double.removeDecimalNoise","powerbi.Double.isInteger","powerbi.Double.toIncrement","powerbi.applyDefault","jsCommon.Color","jsCommon.Color.rotate","jsCommon.Color.normalizeToHexString","jsCommon.Color.parseColorString","jsCommon.Color.rgbToHsv","jsCommon.Color.hsvToRgb","jsCommon.Color.rotateHsv","jsCommon.Color.darken","jsCommon.Color.rgbString","jsCommon.Color.hexString","jsCommon.Color.componentToHex","jsCommon.CssConstants","jsCommon.CssConstants.createClassAndSelector","debug","debug.assert","debug.assertValue","debug.assertNonEmpty","debug.assertAnyValue","debug.assertFail","jsCommon.Errors","jsCommon.Errors.infoNavAppAlreadyPresent","jsCommon.Errors.invalidOperation","jsCommon.Errors.argument","jsCommon.Errors.argumentNull","jsCommon.Errors.argumentUndefined","jsCommon.Errors.argumentOutOfRange","jsCommon.Errors.pureVirtualMethodException","jsCommon.Errors.notImplementedException","jsCommon.Errors.getExceptionStackTrace","jsCommon.getStackTrace","jsCommon.JQueryConstants","jsCommon.Lazy","jsCommon.Lazy.constructor","jsCommon.Lazy.getValue","powerbi.Prototype","powerbi.Prototype.inherit","powerbi.Prototype.inherit.wrapCtor","powerbi.Prototype.inheritSingle","powerbi.Prototype.overrideArray","jsCommon.Formatting","jsCommon.Formatting.findDateFormat","jsCommon.Formatting.fixDateTimeFormat","jsCommon.requires","jsCommon.loadStyleSheets","jsCommon.loadJavaScriptFiles","jsCommon.loadJavaScriptFiles.parseIfLoadingComplete","jsCommon.loadJavaScriptFiles.makeCallbackIfParsingComplete","jsCommon.loadStyleSheet","jsCommon.loadJavaScriptSourceCode","jsCommon.parseJavaScript","jsCommon.parseInternalJavaScriptCode","jsCommon.loadExternalJavaScriptFile","jsCommon.parseJavaScriptSourceCodes","jsCommon.webGet","jsCommon.isExternalUrl","jsCommon._","jsCommon.asyncSteps","jsCommon.asyncLoop","powerbi.createJQueryPromiseFactory","powerbi.JQueryPromiseFactory","powerbi.JQueryPromiseFactory.constructor","powerbi.JQueryPromiseFactory.defer","powerbi.JQueryPromiseFactory.reject","powerbi.JQueryPromiseFactory.resolve","powerbi.JQueryPromiseFactory.all","powerbi.JQueryPromiseFactory.when","powerbi.JQueryDeferredWrapper","powerbi.JQueryDeferredWrapper.constructor","powerbi.JQueryDeferredWrapper.resolve","powerbi.JQueryDeferredWrapper.reject","powerbi.JQueryPromiseWrapper","powerbi.JQueryPromiseWrapper.constructor","powerbi.JQueryPromiseWrapper.then","powerbi.JQueryPromiseWrapper.catch","powerbi.JQueryPromiseWrapper.finally","powerbi.JQueryPromiseWrapper.wrapCallback","powerbi.LocalStorageService","powerbi.LocalStorageService.constructor","powerbi.LocalStorageService.getData","powerbi.LocalStorageService.setData","powerbi.EphemeralStorageService","powerbi.EphemeralStorageService.constructor","powerbi.EphemeralStorageService.getData","powerbi.EphemeralStorageService.setData","powerbi.EphemeralStorageService.clearCache","jsCommon.WordBreaker","jsCommon.WordBreaker.search","jsCommon.WordBreaker.find","jsCommon.WordBreaker.hasBreakers","jsCommon.WordBreaker.wordCount","jsCommon.WordBreaker.getMaxWordWidth","jsCommon.WordBreaker.split","jsCommon.WordBreaker.getWidth","jsCommon.WordBreaker.truncate","jsCommon.WordBreaker.splitByWidth","powerbi.TextMeasurementService","powerbi.TextMeasurementService.ensureDOM","powerbi.TextMeasurementService.removeSpanElement","powerbi.TextMeasurementService.measureSvgTextWidth","powerbi.TextMeasurementService.measureSvgTextRect","powerbi.TextMeasurementService.measureSvgTextHeight","powerbi.TextMeasurementService.estimateSvgTextRect","powerbi.TextMeasurementService.estimateSvgTextBaselineDelta","powerbi.TextMeasurementService.estimateSvgTextHeight","powerbi.TextMeasurementService.measureSvgTextElementWidth","powerbi.TextMeasurementService.getMeasurementProperties","powerbi.TextMeasurementService.getSvgMeasurementProperties","powerbi.TextMeasurementService.getDivElementWidth","powerbi.TextMeasurementService.getTailoredTextOrDefault","powerbi.TextMeasurementService.svgEllipsis","powerbi.TextMeasurementService.wordBreak","powerbi.TextMeasurementService.wordBreakOverflowingText","jsCommon.ThrottleUtility","jsCommon.ThrottleUtility.constructor","jsCommon.ThrottleUtility.run","jsCommon.ThrottleUtility.timerComplete","jsCommon.TimerPromiseFactory","jsCommon.TimerPromiseFactory.constructor","jsCommon.TimerPromiseFactory.create","jsCommon.HttpStatusCode","jsCommon.HttpConstants","jsCommon.StringExtensions","jsCommon.StringExtensions.format","jsCommon.StringExtensions.equalIgnoreCase","jsCommon.StringExtensions.startsWithIgnoreCase","jsCommon.StringExtensions.startsWith","jsCommon.StringExtensions.containsIgnoreCase","jsCommon.StringExtensions.normalizeCase","jsCommon.StringExtensions.isNullOrEmpty","jsCommon.StringExtensions.isNullOrUndefinedOrWhiteSpaceString","jsCommon.StringExtensions.containsWhitespace","jsCommon.StringExtensions.isWhitespace","jsCommon.StringExtensions.trimTrailingWhitespace","jsCommon.StringExtensions.trimWhitespace","jsCommon.StringExtensions.getLengthDifference","jsCommon.StringExtensions.repeat","jsCommon.StringExtensions.replaceAll","jsCommon.StringExtensions.ensureUniqueNames","jsCommon.StringExtensions.findUniqueName","jsCommon.StringExtensions.constructCommaSeparatedList","jsCommon.StringExtensions.escapeStringForRegex","jsCommon.StringExtensions.normalizeFileName","jsCommon.StringExtensions.stringifyAsPrettyJSON","jsCommon.StringExtensions.deriveClsCompliantName","jsCommon.Utility","jsCommon.Utility.constructor","jsCommon.Utility.throwIfNullOrUndefined","jsCommon.Utility.throwIfNullOrEmpty","jsCommon.Utility.throwIfNullOrEmptyString","jsCommon.Utility.throwIfNullEmptyOrWhitespaceString","jsCommon.Utility.throwIfNotTrue","jsCommon.Utility.isString","jsCommon.Utility.isBoolean","jsCommon.Utility.isNumber","jsCommon.Utility.isDate","jsCommon.Utility.isObject","jsCommon.Utility.isNullOrUndefined","jsCommon.Utility.urlCombine","jsCommon.Utility.getAbsoluteUri","jsCommon.Utility.getStaticResourceUri","jsCommon.Utility.getComponentName","jsCommon.Utility.throwException","jsCommon.Utility.createClassSelector","jsCommon.Utility.createIdSelector","jsCommon.Utility.generateGuid","jsCommon.Utility.getCookieValue","jsCommon.Utility.getDomainForUrl","jsCommon.Utility.getHostNameForUrl","jsCommon.Utility.getUrlWithoutQueryString","jsCommon.Utility.getProtocolFromUrl","jsCommon.Utility.getHrefObjectFromUrl","jsCommon.Utility.convertWcfToJsDictionary","jsCommon.Utility.getDateFromWcfJsonString","jsCommon.Utility.getOuterHtml","jsCommon.Utility.compareInt","jsCommon.Utility.getIndexOfMinValue","jsCommon.Utility.isValidUrl","jsCommon.Utility.findAllValidUrls","jsCommon.Utility.extractUrlFromCssBackgroundImage","jsCommon.Utility.isValidImageDataUrl","jsCommon.Utility.saveAsFile","jsCommon.Utility.getType","jsCommon.Utility.isEventSupported","jsCommon.Utility.toPixel","jsCommon.Utility.getPropertyCount","jsCommon.Utility.getFileExtension","jsCommon.Utility.extractFileNameFromPath","jsCommon.Utility.canUseClipboard","jsCommon.Utility.is64BitOperatingSystem","jsCommon.Utility.parseNumber","jsCommon.Utility.getURLParamValue","jsCommon.Utility.getLocalTimeZoneString","jsCommon.VersionUtility","jsCommon.VersionUtility.constructor","jsCommon.VersionUtility.compareVersions","jsCommon.PerformanceUtil","jsCommon.PerformanceUtil.PerfMarker","jsCommon.PerformanceUtil.PerfMarker.constructor","jsCommon.PerformanceUtil.PerfMarker.begin","jsCommon.PerformanceUtil.PerfMarker.end","jsCommon.PerformanceUtil.create","jsCommon.DeferUtility","jsCommon.DeferUtility.deferUntilNextFrame","jsCommon.TraceItem","jsCommon.TraceItem.constructor","jsCommon.TraceItem.toString","jsCommon.EnumExtensions","jsCommon.EnumExtensions.hasFlag","jsCommon.EnumExtensions.setFlag","jsCommon.EnumExtensions.resetFlag","jsCommon.EnumExtensions.toString","jsCommon.StringExtensions.endsWith","jsCommon.LogicExtensions","jsCommon.LogicExtensions.XOR","jsCommon.JsonComparer","jsCommon.JsonComparer.equals","jsCommon.TextSizeDefaults","jsCommon.TextSizeDefaults.getScale","jsCommon.PixelConverter","jsCommon.PixelConverter.toString","jsCommon.PixelConverter.fromPoint","jsCommon.PixelConverter.fromPointToPixel","jsCommon.PixelConverter.toPoint","jsCommon.RegExpExtensions","jsCommon.RegExpExtensions.run","jsCommon.ConsoleTracer","jsCommon.ConsoleTracer.constructor","jsCommon.ConsoleTracer.logTrace","jsCommon.Trace","jsCommon.Trace.warning","jsCommon.Trace.error","jsCommon.Trace.verbose","jsCommon.Trace.addListener","jsCommon.Trace.removeListener","jsCommon.Trace.resetListeners","jsCommon.Trace.reset","jsCommon.Trace.getTraces","jsCommon.Trace.disableDefaultListener","jsCommon.Trace.enableDefaultListener","jsCommon.Trace.logTraceInternal","jsCommon.TraceType","jsCommon.ensurePowerView","jsCommon.ensureMap","jsCommon.mapControlLoaded","jsCommon.waitForMapControlLoaded","InJs.TraceType","powerbi.data","powerbi.data.DefaultSQExprVisitorWithArg","powerbi.data.DefaultSQExprVisitorWithArg.constructor","powerbi.data.DefaultSQExprVisitorWithArg.visitEntity","powerbi.data.DefaultSQExprVisitorWithArg.visitColumnRef","powerbi.data.DefaultSQExprVisitorWithArg.visitMeasureRef","powerbi.data.DefaultSQExprVisitorWithArg.visitAggr","powerbi.data.DefaultSQExprVisitorWithArg.visitHierarchy","powerbi.data.DefaultSQExprVisitorWithArg.visitHierarchyLevel","powerbi.data.DefaultSQExprVisitorWithArg.visitPropertyVariationSource","powerbi.data.DefaultSQExprVisitorWithArg.visitBetween","powerbi.data.DefaultSQExprVisitorWithArg.visitIn","powerbi.data.DefaultSQExprVisitorWithArg.visitAnd","powerbi.data.DefaultSQExprVisitorWithArg.visitOr","powerbi.data.DefaultSQExprVisitorWithArg.visitCompare","powerbi.data.DefaultSQExprVisitorWithArg.visitContains","powerbi.data.DefaultSQExprVisitorWithArg.visitExists","powerbi.data.DefaultSQExprVisitorWithArg.visitNot","powerbi.data.DefaultSQExprVisitorWithArg.visitStartsWith","powerbi.data.DefaultSQExprVisitorWithArg.visitConstant","powerbi.data.DefaultSQExprVisitorWithArg.visitDateSpan","powerbi.data.DefaultSQExprVisitorWithArg.visitDateAdd","powerbi.data.DefaultSQExprVisitorWithArg.visitNow","powerbi.data.DefaultSQExprVisitorWithArg.visitDefaultValue","powerbi.data.DefaultSQExprVisitorWithArg.visitAnyValue","powerbi.data.DefaultSQExprVisitorWithArg.visitDefault","powerbi.data.DefaultSQExprVisitor","powerbi.data.DefaultSQExprVisitor.constructor","powerbi.data.DefaultSQExprVisitorWithTraversal","powerbi.data.DefaultSQExprVisitorWithTraversal.constructor","powerbi.data.DefaultSQExprVisitorWithTraversal.visitEntity","powerbi.data.DefaultSQExprVisitorWithTraversal.visitColumnRef","powerbi.data.DefaultSQExprVisitorWithTraversal.visitMeasureRef","powerbi.data.DefaultSQExprVisitorWithTraversal.visitAggr","powerbi.data.DefaultSQExprVisitorWithTraversal.visitHierarchy","powerbi.data.DefaultSQExprVisitorWithTraversal.visitHierarchyLevel","powerbi.data.DefaultSQExprVisitorWithTraversal.visitPropertyVariationSource","powerbi.data.DefaultSQExprVisitorWithTraversal.visitBetween","powerbi.data.DefaultSQExprVisitorWithTraversal.visitIn","powerbi.data.DefaultSQExprVisitorWithTraversal.visitAnd","powerbi.data.DefaultSQExprVisitorWithTraversal.visitOr","powerbi.data.DefaultSQExprVisitorWithTraversal.visitCompare","powerbi.data.DefaultSQExprVisitorWithTraversal.visitContains","powerbi.data.DefaultSQExprVisitorWithTraversal.visitExists","powerbi.data.DefaultSQExprVisitorWithTraversal.visitNot","powerbi.data.DefaultSQExprVisitorWithTraversal.visitStartsWith","powerbi.data.DefaultSQExprVisitorWithTraversal.visitConstant","powerbi.data.DefaultSQExprVisitorWithTraversal.visitDateSpan","powerbi.data.DefaultSQExprVisitorWithTraversal.visitDateAdd","powerbi.data.DefaultSQExprVisitorWithTraversal.visitNow","powerbi.data.DefaultSQExprVisitorWithTraversal.visitDefaultValue","powerbi.data.DefaultSQExprVisitorWithTraversal.visitAnyValue","powerbi.data.DefaultSQExprVisitorWithTraversal.visitDefault","powerbi.createEnumType","powerbi.EnumType","powerbi.EnumType.constructor","powerbi.EnumType.members","powerbi.FillSolidColorTypeDescriptor","powerbi.FillSolidColorTypeDescriptor.nullable","powerbi.ImageDefinition","powerbi.StructuralTypeDescriptor","powerbi.StructuralTypeDescriptor.isValid","powerbi.ValueType","powerbi.ValueType.constructor","powerbi.ValueType.fromDescriptor","powerbi.ValueType.fromExtendedType","powerbi.ValueType.fromPrimitiveTypeAndCategory","powerbi.ValueType.fromEnum","powerbi.ValueType.isCompatibleFrom","powerbi.ValueType.primitiveType","powerbi.ValueType.extendedType","powerbi.ValueType.categoryString","powerbi.ValueType.text","powerbi.ValueType.numeric","powerbi.ValueType.integer","powerbi.ValueType.bool","powerbi.ValueType.dateTime","powerbi.ValueType.duration","powerbi.ValueType.binary","powerbi.ValueType.none","powerbi.ValueType.temporal","powerbi.ValueType.geography","powerbi.ValueType.misc","powerbi.ValueType.formatting","powerbi.ValueType.enum","powerbi.ValueType.scripting","powerbi.ScriptType","powerbi.ScriptType.constructor","powerbi.ScriptType.source","powerbi.TemporalType","powerbi.TemporalType.constructor","powerbi.TemporalType.year","powerbi.TemporalType.month","powerbi.GeographyType","powerbi.GeographyType.constructor","powerbi.GeographyType.address","powerbi.GeographyType.city","powerbi.GeographyType.continent","powerbi.GeographyType.country","powerbi.GeographyType.county","powerbi.GeographyType.region","powerbi.GeographyType.postalCode","powerbi.GeographyType.stateOrProvince","powerbi.GeographyType.place","powerbi.GeographyType.latitude","powerbi.GeographyType.longitude","powerbi.MiscellaneousType","powerbi.MiscellaneousType.constructor","powerbi.MiscellaneousType.image","powerbi.MiscellaneousType.imageUrl","powerbi.MiscellaneousType.webUrl","powerbi.FormattingType","powerbi.FormattingType.constructor","powerbi.FormattingType.color","powerbi.FormattingType.formatString","powerbi.FormattingType.alignment","powerbi.FormattingType.labelDisplayUnits","powerbi.FormattingType.fontSize","powerbi.FormattingType.labelDensity","powerbi.PrimitiveType","powerbi.ExtendedType","powerbi.getPrimitiveType","powerbi.isPrimitiveType","powerbi.getCategoryFromExtendedType","powerbi.toExtendedType","powerbi.matchesExtendedTypeWithAnyPrimitive","powerbi.data.ConceptualSchema","powerbi.data.ConceptualSchema.constructor","powerbi.data.ConceptualSchema.findProperty","powerbi.data.ConceptualSchema.findHierarchy","powerbi.data.ConceptualSchema.findHierarchyByVariation","powerbi.data.ConceptualSchema.findPropertyWithKpi","powerbi.data.ConceptualDataCategory","powerbi.data.DataShapeBindingLimitType","powerbi.data.SubtotalType","powerbi.data.DataShapeBindingDataReduction","powerbi.data.DataShapeBindingDataReduction.createFrom","powerbi.data.FederatedConceptualSchema","powerbi.data.FederatedConceptualSchema.constructor","powerbi.data.FederatedConceptualSchema.schema","powerbi.data.Selector","powerbi.data.Selector.filterFromSelector","powerbi.data.Selector.matchesData","powerbi.data.Selector.matchesKeys","powerbi.data.Selector.equals","powerbi.data.Selector.equalsDataArray","powerbi.data.Selector.equalsData","powerbi.data.Selector.getKey","powerbi.data.Selector.containsWildcard","powerbi.data.EntitySourceType","powerbi.data.TimeUnit","powerbi.data.QueryAggregateFunction","powerbi.data.QueryComparisonKind","powerbi.data.SemanticType","powerbi.data.SelectKind","powerbi.data.FilterKind","powerbi.data.QueryProjectionCollection","powerbi.data.QueryProjectionCollection.constructor","powerbi.data.QueryProjectionCollection.all","powerbi.data.QueryProjectionCollection.activeProjectionQueryRef","powerbi.data.QueryProjectionCollection.showAll","powerbi.data.QueryProjectionCollection.clone","powerbi.data.QueryProjectionsByRole","powerbi.data.QueryProjectionsByRole.clone","powerbi.data.QueryProjectionsByRole.getRole","powerbi.DisplayUnitSystemType","powerbi.data.DataViewObjectDefinitions","powerbi.data.DataViewObjectDefinitions.ensure","powerbi.data.DataViewObjectDefinitions.deleteProperty","powerbi.data.DataViewObjectDefinitions.getValue","powerbi.data.DataViewObjectDefinitions.getPropertyContainer","powerbi.data.DataViewObjectDefinitions.getObjectDefinition","powerbi.data.DataViewObjectDefinitions.propertiesAreEqual","powerbi.data.DataViewObjectDefinitions.allPropertiesAreEqual","powerbi.data.DataViewObjectDefinitions.encodePropertyValue","powerbi.data.DataViewObjectDefinitions.clone","powerbi.data.DataViewObjectDefinitions.cloneProperties","powerbi.data.DataViewObjectDefinition","powerbi.data.DataViewObjectDefinition.deleteSingleProperty","powerbi.data.DataViewObjectDescriptors","powerbi.data.DataViewObjectDescriptors.findFormatString","powerbi.data.DataViewObjectDescriptors.findFilterOutput","powerbi.data.DataViewObjectDescriptors.findDefaultValue","powerbi.data.DataViewObjectDescriptors.findProperty","powerbi.data.DataViewObjectEvaluationUtils","powerbi.data.DataViewObjectEvaluationUtils.evaluateDataViewObjects","powerbi.data.DataViewObjectEvaluationUtils.groupObjectsBySelector","powerbi.data.DataViewObjectEvaluationUtils.ensureDefinitionListForSelector","powerbi.data.DataViewObjectEvaluationUtils.addImplicitObjects","powerbi.data.DataViewObjectEvaluationUtils.addDefaultFormatString","powerbi.data.DataViewObjectEvaluationUtils.addDefaultValue","powerbi.data.DataViewObjectEvaluationUtils.getColumnFormatForIndex","powerbi.data.DataViewObjectEvaluationUtils.applyFormatString","powerbi.data.DataViewObjectEvaluationUtils.applyDefaultValue","powerbi.data.DataViewObjectEvaluationUtils.applyMetadataProperty","powerbi.data.DataViewObjectEvaluationUtils.findWithMatchingSelector","powerbi.data.DataViewObjectEvaluationUtils.findExistingObject","powerbi.data.DataViewObjectEvaluator","powerbi.data.DataViewObjectEvaluator.run","powerbi.data.DataViewObjectEvaluator.evaluateProperty","powerbi.data.DataViewObjectEvaluator.evaluateFill","powerbi.data.DataViewObjectEvaluator.evaluateFillRule","powerbi.data.DataViewObjectEvaluator.evaluateColorStop","powerbi.data.DataViewObjectEvaluator.evaluateImage","powerbi.data.DataViewObjectEvaluator.evaluateParagraphs","powerbi.data.DataViewObjectEvaluator.evaluateParagraph","powerbi.data.DataViewObjectEvaluator.evaluateTextRun","powerbi.data.DataViewObjectEvaluator.evaluateArrayCopyOnChange","powerbi.data.DataViewObjectEvaluator.evaluateValue","powerbi.data.DataViewObjectEvaluator.ExpressionEvaluator","powerbi.data.DataViewObjectEvaluator.ExpressionEvaluator.constructor","powerbi.data.DataViewObjectEvaluator.ExpressionEvaluator.evaluate","powerbi.data.DataViewObjectEvaluator.ExpressionEvaluator.visitConstant","powerbi.data.DataViewObjectEvaluator.ExpressionEvaluator.visitMeasureRef","powerbi.data.DataViewObjectEvaluator.ExpressionEvaluator.visitAggr","powerbi.DataViewObjects","powerbi.DataViewObjects.getValue","powerbi.DataViewObjects.getObject","powerbi.DataViewObjects.getUserDefinedObjects","powerbi.DataViewObjects.getFillColor","powerbi.DataViewObjects.isUserDefined","powerbi.DataViewObject","powerbi.DataViewObject.getValue","powerbi.DataViewObject.getFillColorByPropertyName","powerbi.data.DataViewPivotCategorical","powerbi.data.DataViewPivotCategorical.apply","powerbi.data.DataViewPivotMatrix","powerbi.data.DataViewPivotMatrix.apply","powerbi.data.DataViewPivotMatrix.forEachLeaf","powerbi.data.DataViewPivotMatrix.cloneTree","powerbi.data.DataViewPivotMatrix.cloneTreeExecuteOnLeaf","powerbi.data.DataViewSelfCrossJoin","powerbi.data.DataViewSelfCrossJoin.apply","powerbi.data.DataViewSelfCrossJoin.applyCategorical","powerbi.data.DataViewSelfCrossJoin.createGroupedValues","powerbi.data.createNullValues","powerbi.data.inheritArrayWithValue","powerbi.data.DataViewPivotCategoricalToPrimaryGroups","powerbi.data.DataViewPivotCategoricalToPrimaryGroups.pivotBinding","powerbi.data.DataViewPivotCategoricalToPrimaryGroups.isPivotableAxis","powerbi.data.DataViewPivotCategoricalToPrimaryGroups.canPivotCategorical","powerbi.data.DataViewPivotCategoricalToPrimaryGroups.unpivotResult","powerbi.data.DataViewPivotCategoricalToPrimaryGroups.projectionsFromSelects","powerbi.data.DataViewPivotCategoricalToPrimaryGroups.createRoleKindFromMetadata","powerbi.data.DataViewPivotCategoricalToPrimaryGroups.getRolesInRoleMapping","powerbi.data.DataViewPivotCategoricalToPrimaryGroups.getRolesInRoleMappings","powerbi.data.DataViewPivotCategoricalToPrimaryGroups.inferUnpivotTransform","powerbi.data.DataViewPivotCategoricalToPrimaryGroups.unpivotMatrix","powerbi.data.DataViewPivotCategoricalToPrimaryGroups.categoricalFromUnpivotedMatrix","powerbi.data.DataViewTransform","powerbi.data.DataViewTransform.apply","powerbi.data.DataViewTransform.transformEmptyDataView","powerbi.data.DataViewTransform.transformDataView","powerbi.data.DataViewTransform.getTargetKinds","powerbi.data.DataViewTransform.transformSelects","powerbi.data.DataViewTransform.applyTransformsToColumns","powerbi.data.DataViewTransform.getFormatForColumn","powerbi.data.DataViewTransform.upgradeSettingsToObjects","powerbi.data.DataViewTransform.setObjectDefinition","powerbi.data.DataViewTransform.applyRewritesToCategorical","powerbi.data.DataViewTransform.applyRewritesToCategorical.override","powerbi.data.DataViewTransform.applyRewritesToTable","powerbi.data.DataViewTransform.createTableColumnPositionMapping","powerbi.data.DataViewTransform.applyRewritesToMatrix","powerbi.data.DataViewTransform.applyRewritesToMatrix.override","powerbi.data.DataViewTransform.applyRewritesToMatrix.overrideHierarchy","powerbi.data.DataViewTransform.reorderChildNodes","powerbi.data.DataViewTransform.createMatrixValuesPositionMapping","powerbi.data.DataViewTransform.createMatrixValuesPositionMapping.matchValueSource","powerbi.data.DataViewTransform.createOrderMapping","powerbi.data.DataViewTransform.forEachNodeAtLevel","powerbi.data.DataViewTransform.findOverride","powerbi.data.DataViewTransform.ensureRewritten","powerbi.data.DataViewTransform.transformObjects","powerbi.data.DataViewTransform.evaluateUserDefinedObjects","powerbi.data.DataViewTransform.evaluateMetadataObjects","powerbi.data.DataViewTransform.createRuleEvaluationInstance","powerbi.data.DataViewTransform.createRuleEvaluationInstanceFillRule","powerbi.data.DataViewTransform.createColorAllocatorLinearGradient2","powerbi.data.DataViewTransform.createColorAllocatorLinearGradient3","powerbi.data.DataViewTransform.createRuleEvaluationInstanceFilter","powerbi.data.DataViewTransform.evaluateDataRepetition","powerbi.data.DataViewTransform.evaluateDataRepetitionCategoricalCategory","powerbi.data.DataViewTransform.evaluateDataRepetitionCategoricalValueGrouping","powerbi.data.DataViewTransform.evaluateDataRepetitionMatrix","powerbi.data.DataViewTransform.evaluateDataRepetitionMatrixHierarchy","powerbi.data.DataViewTransform.evaluateDataRepetitionMatrixNode","powerbi.data.DataViewTransform.inheritNodeAndChildren","powerbi.data.DataViewTransform.evaluateMetadataRepetition","powerbi.data.DataViewTransform.findSelectedCategoricalColumn","powerbi.data.DataViewTransform.findSelectorForRuleInput","powerbi.data.DataViewTransform.findRuleInputColumnNumberRange","powerbi.data.DataViewTransform.createTransformActions","powerbi.data.DataViewTransform.toTransformSelect","powerbi.data.DataViewTransform.describeDataType","powerbi.data.DataViewTransform.populateDataRoles","powerbi.data.DataViewTransform.fillArray","powerbi.data.DataViewTransform.populateSplit","powerbi.data.DataViewTransform.createValueColumns","powerbi.data.DataViewTransform.setGrouped","powerbi.data.DataViewTransform.groupValues","powerbi.data.DataViewTransform.pivotIfNecessary","powerbi.data.DataViewTransform.determineCategoricalTransformation","powerbi.data.DataViewTransform.shouldPivotMatrix","powerbi.data.DataViewTransform.hasRolesBind","powerbi.data.DataViewTransform.hasRolesFor","powerbi.data.DataViewTransform.hasRolesGrouped","powerbi.data.DataViewNormalizeValues","powerbi.data.DataViewNormalizeValues.apply","powerbi.data.DataViewNormalizeValues.filterVariantMeasures","powerbi.data.DataViewNormalizeValues.generateMetadataColumnFilter","powerbi.data.DataViewNormalizeValues.generateValueFilter","powerbi.data.DataViewNormalizeValues.generateColumnValueFilter","powerbi.data.DataViewNormalizeValues.getColumnRequiredTypes","powerbi.data.DataViewNormalizeValues.filterVariantMeasuresCategorical","powerbi.data.DataViewNormalizeValues.filterVariantMeasuresTable","powerbi.data.DataViewNormalizeValues.filterVariantMeasuresTreeNode","powerbi.data.DataViewNormalizeValues.filterVariantMeasuresMatrix","powerbi.data.DataViewNormalizeValues.filterVariantMeasuresSingle","powerbi.data.DataViewNormalizeValues.normalizeVariant","powerbi.data.DataViewNormalizeValues.doesValueMatchTypes","powerbi.data.DataViewNormalizeValues.toMetadataColumnIndex","powerbi.data.DataViewNormalizeValues.firstColumnByRoleName","powerbi.data.createDisplayNameGetter","powerbi.data.getDisplayName","powerbi.DateTimeUnit","powerbi.data.SQExprBuilder","powerbi.data.SQExprBuilder.fieldExpr","powerbi.data.SQExprBuilder.wrapColumnAggr","powerbi.data.SQExprBuilder.wrapHierarchyLevel","powerbi.data.SQExprBuilder.wrapHierarchy","powerbi.data.SQExprBuilder.wrapPropertyVariationSource","powerbi.data.SQExprBuilder.wrapColumn","powerbi.data.SQExprBuilder.wrapMeasure","powerbi.data.SQExprBuilder.wrapEntityAggr","powerbi.data.SQExprBuilder.wrapEntity","powerbi.data.SQExprConverter","powerbi.data.SQExprConverter.asFieldPattern","powerbi.data.FieldExprPatternBuilder","powerbi.data.FieldExprPatternBuilder.constructor","powerbi.data.FieldExprPatternBuilder.visitColumnRef","powerbi.data.FieldExprPatternBuilder.visitMeasureRef","powerbi.data.FieldExprPatternBuilder.visitAggr","powerbi.data.FieldExprPatternBuilder.visitHierarchy","powerbi.data.FieldExprPatternBuilder.visitHierarchyLevel","powerbi.data.SourceExprPatternBuilder","powerbi.data.SourceExprPatternBuilder.constructor","powerbi.data.SourceExprPatternBuilder.visitEntity","powerbi.data.SourceExprPatternBuilder.visitPropertyVariationSource","powerbi.data.HierarchyExprPatternBuiler","powerbi.data.HierarchyExprPatternBuiler.constructor","powerbi.data.HierarchyExprPatternBuiler.visitHierarchy","powerbi.data.FieldExprPattern","powerbi.data.FieldExprPattern.hasFieldExprName","powerbi.data.FieldExprPattern.getPropertyName","powerbi.data.FieldExprPattern.getColumnRef","powerbi.data.FieldExprPattern.getFieldExprName","powerbi.data.FieldExprPattern.toFieldExprEntityItemPattern","powerbi.DataViewAnalysis","powerbi.DataViewAnalysis.validateAndReshape","powerbi.DataViewAnalysis.reshapeCategorical","powerbi.DataViewAnalysis.reshapeSingle","powerbi.DataViewAnalysis.reshapeTree","powerbi.DataViewAnalysis.reshapeTable","powerbi.DataViewAnalysis.countGroups","powerbi.DataViewAnalysis.countMeasures","powerbi.DataViewAnalysis.supports","powerbi.DataViewAnalysis.supportsCategorical","powerbi.DataViewAnalysis.supportsSingle","powerbi.DataViewAnalysis.supportsTree","powerbi.DataViewAnalysis.supportsTable","powerbi.DataViewAnalysis.supportsScriptResult","powerbi.DataViewAnalysis.conformsToRange","powerbi.DataViewAnalysis.conformsToKind","powerbi.DataViewAnalysis.chooseDataViewMappings","powerbi.DataViewAnalysis.matchesCondition","powerbi.DataViewAnalysis.getPropertyCount","powerbi.DataViewAnalysis.hasSameCategoryIdentity","powerbi.DataViewAnalysis.getLengthOptional","powerbi.DataViewAnalysis.areMetadataColumnsEquivalent","powerbi.DataViewAnalysis.isMetadataEquivalent","powerbi.DataViewScopeIdentity","powerbi.DataViewScopeIdentity.equals","powerbi.DataViewScopeIdentity.filterFromIdentity","powerbi.DataViewScopeIdentity.filterFromExprs","powerbi.data.createDataViewScopeIdentity","powerbi.data.DataViewScopeIdentityImpl","powerbi.data.DataViewScopeIdentityImpl.constructor","powerbi.data.DataViewScopeIdentityImpl.expr","powerbi.data.DataViewScopeIdentityImpl.key","powerbi.data.DataViewScopeWildcard","powerbi.data.DataViewScopeWildcard.matches","powerbi.data.DataViewScopeWildcard.fromExprs","powerbi.data.DataViewScopeWildcard.DataViewScopeWildcardImpl","powerbi.data.DataViewScopeWildcard.DataViewScopeWildcardImpl.constructor","powerbi.data.DataViewScopeWildcard.DataViewScopeWildcardImpl.exprs","powerbi.data.DataViewScopeWildcard.DataViewScopeWildcardImpl.key","powerbi.data.createCategoricalEvalContext","powerbi.data.CategoricalEvalContext","powerbi.data.CategoricalEvalContext.constructor","powerbi.data.CategoricalEvalContext.getCurrentIdentity","powerbi.data.CategoricalEvalContext.getExprValue","powerbi.data.CategoricalEvalContext.getRoleValue","powerbi.data.CategoricalEvalContext.setCurrentRowIndex","powerbi.data.findRuleInputColumn","powerbi.data.findRuleInputInColumns","powerbi.data.RuleEvaluation","powerbi.data.RuleEvaluation.constructor","powerbi.data.RuleEvaluation.evaluate","powerbi.data.ColorRuleEvaluation","powerbi.data.ColorRuleEvaluation.constructor","powerbi.data.ColorRuleEvaluation.evaluate","powerbi.data.FilterRuleEvaluation","powerbi.data.FilterRuleEvaluation.constructor","powerbi.data.FilterRuleEvaluation.evaluate","powerbi.ScriptResultUtil","powerbi.ScriptResultUtil.findScriptResult","powerbi.ScriptResultUtil.extractScriptResult","powerbi.ScriptResultUtil.extractScriptResultFromVisualConfig","powerbi.ScriptResultUtil.getScriptInput","powerbi.ScriptResultUtil.ScriptInputColumnNameVisitor","powerbi.ScriptResultUtil.ScriptInputColumnNameVisitor.constructor","powerbi.ScriptResultUtil.ScriptInputColumnNameVisitor.visitEntity","powerbi.ScriptResultUtil.ScriptInputColumnNameVisitor.visitColumnRef","powerbi.ScriptResultUtil.ScriptInputColumnNameVisitor.visitMeasureRef","powerbi.ScriptResultUtil.ScriptInputColumnNameVisitor.visitAggr","powerbi.ScriptResultUtil.ScriptInputColumnNameVisitor.visitHierarchy","powerbi.ScriptResultUtil.ScriptInputColumnNameVisitor.visitHierarchyLevel","powerbi.ScriptResultUtil.ScriptInputColumnNameVisitor.getNameForProperty","powerbi.ScriptResultUtil.ScriptInputColumnNameVisitor.getNameForAggregate","powerbi.ScriptResultUtil.ScriptInputColumnNameVisitor.getNameForHierarchy","powerbi.ScriptResultUtil.ScriptInputColumnNameVisitor.getNameForHierarchyLevel","powerbi.ScriptResultUtil.ScriptInputColumnNameVisitor.getVariationLevelName","powerbi.data.segmentation","powerbi.data.segmentation.DataViewMerger","powerbi.data.segmentation.DataViewMerger.mergeDataViews","powerbi.data.segmentation.DataViewMerger.mergeTables","powerbi.data.segmentation.DataViewMerger.mergeCategorical","powerbi.data.segmentation.DataViewMerger.merge","powerbi.data.segmentation.DataViewMerger.mergeTreeNodes","powerbi.data.segmentation.DataViewMerger.findFirstAppendIndex","powerbi.data.SQExprRewriter","powerbi.data.SQExprRewriter.constructor","powerbi.data.SQExprRewriter.visitColumnRef","powerbi.data.SQExprRewriter.visitMeasureRef","powerbi.data.SQExprRewriter.visitAggr","powerbi.data.SQExprRewriter.visitHierarchy","powerbi.data.SQExprRewriter.visitHierarchyLevel","powerbi.data.SQExprRewriter.visitPropertyVariationSource","powerbi.data.SQExprRewriter.visitEntity","powerbi.data.SQExprRewriter.visitAnd","powerbi.data.SQExprRewriter.visitBetween","powerbi.data.SQExprRewriter.visitIn","powerbi.data.SQExprRewriter.rewriteAll","powerbi.data.SQExprRewriter.visitOr","powerbi.data.SQExprRewriter.visitCompare","powerbi.data.SQExprRewriter.visitContains","powerbi.data.SQExprRewriter.visitExists","powerbi.data.SQExprRewriter.visitNot","powerbi.data.SQExprRewriter.visitStartsWith","powerbi.data.SQExprRewriter.visitConstant","powerbi.data.SQExprRewriter.visitDateSpan","powerbi.data.SQExprRewriter.visitDateAdd","powerbi.data.SQExprRewriter.visitNow","powerbi.data.SQExprRewriter.visitDefaultValue","powerbi.data.SQExprRewriter.visitAnyValue","powerbi.data.EqualsToInRewriter","powerbi.data.EqualsToInRewriter.run","powerbi.data.EqualsToInRewriter.Rewriter","powerbi.data.EqualsToInRewriter.Rewriter.constructor","powerbi.data.EqualsToInRewriter.Rewriter.visitCompare","powerbi.data.EqualsToInRewriter.Rewriter.visitOr","powerbi.data.EqualsToInRewriter.Rewriter.visitAnd","powerbi.data.EqualsToInRewriter.Rewriter.visitUnsupported","powerbi.data.EqualsToInRewriter.Rewriter.isSupported","powerbi.data.EqualsToInRewriter.Rewriter.isComparand","powerbi.data.EqualsToInRewriter.InBuilder","powerbi.data.EqualsToInRewriter.InBuilder.constructor","powerbi.data.EqualsToInRewriter.InBuilder.add","powerbi.data.EqualsToInRewriter.InBuilder.cancel","powerbi.data.EqualsToInRewriter.InBuilder.complete","powerbi.data.SQExprConverter.asScopeIdsContainer","powerbi.data.SQExprConverter.getFirstComparandValue","powerbi.data.FilterScopeIdsCollectorVisitor","powerbi.data.FilterScopeIdsCollectorVisitor.constructor","powerbi.data.FilterScopeIdsCollectorVisitor.getResult","powerbi.data.FilterScopeIdsCollectorVisitor.getScopeIdentity","powerbi.data.FilterScopeIdsCollectorVisitor.visitOr","powerbi.data.FilterScopeIdsCollectorVisitor.visitNot","powerbi.data.FilterScopeIdsCollectorVisitor.visitConstant","powerbi.data.FilterScopeIdsCollectorVisitor.visitCompare","powerbi.data.FilterScopeIdsCollectorVisitor.visitIn","powerbi.data.FilterScopeIdsCollectorVisitor.visitColumnRef","powerbi.data.FilterScopeIdsCollectorVisitor.visitDefaultValue","powerbi.data.FilterScopeIdsCollectorVisitor.visitAnyValue","powerbi.data.FilterScopeIdsCollectorVisitor.visitDefault","powerbi.data.FilterScopeIdsCollectorVisitor.unsupportedSQExpr","powerbi.data.FindComparandVisitor","powerbi.data.FindComparandVisitor.constructor","powerbi.data.FindComparandVisitor.visitAnd","powerbi.data.FindComparandVisitor.visitCompare","powerbi.data.ScopeIdentityExtractor","powerbi.data.ScopeIdentityExtractor.getKeys","powerbi.data.ScopeIdentityExtractor.getInExpr","powerbi.data.ScopeIdentityExtractor.ScopeIdExtractorImpl","powerbi.data.ScopeIdentityExtractor.ScopeIdExtractorImpl.constructor","powerbi.data.ScopeIdentityExtractor.ScopeIdExtractorImpl.visitAnd","powerbi.data.ScopeIdentityExtractor.ScopeIdExtractorImpl.visitCompare","powerbi.data.ScopeIdentityExtractor.ScopeIdExtractorImpl.visitColumnRef","powerbi.data.ScopeIdentityExtractor.ScopeIdExtractorImpl.visitHierarchyLevel","powerbi.data.ScopeIdentityExtractor.ScopeIdExtractorImpl.visitConstant","powerbi.data.ScopeIdentityExtractor.ScopeIdExtractorImpl.visitDefault","powerbi.data.PrimitiveValueEncoding","powerbi.data.PrimitiveValueEncoding.decimal","powerbi.data.PrimitiveValueEncoding.double","powerbi.data.PrimitiveValueEncoding.integer","powerbi.data.PrimitiveValueEncoding.dateTime","powerbi.data.PrimitiveValueEncoding.text","powerbi.data.PrimitiveValueEncoding.nullEncoding","powerbi.data.PrimitiveValueEncoding.boolean","powerbi.data.SQHierarchyExprUtils","powerbi.data.SQHierarchyExprUtils.getConceptualHierarchy","powerbi.data.SQHierarchyExprUtils.expandExpr","powerbi.data.SQHierarchyExprUtils.isHierarchyOrVariation","powerbi.data.SQHierarchyExprUtils.getSourceVariationExpr","powerbi.data.SQHierarchyExprUtils.getSourceHierarchy","powerbi.data.SQHierarchyExprUtils.getHierarchySourceAsVariationSource","powerbi.data.SQHierarchyExprUtils.areHierarchyLevelsOrdered","powerbi.data.SQHierarchyExprUtils.getInsertionIndex","powerbi.data.SQExprHierarchyToHierarchyLevelConverter","powerbi.data.SQExprHierarchyToHierarchyLevelConverter.convert","powerbi.data.SQExprHierarchyLevelConverter","powerbi.data.SQExprHierarchyLevelConverter.expand","powerbi.data.SQExprVariationConverter","powerbi.data.SQExprVariationConverter.expand","powerbi.data.SQExprGroupUtils","powerbi.data.SQExprGroupUtils.groupExprs","powerbi.data.SQExprGroupUtils.addChildToGroup","powerbi.data.SQExpr","powerbi.data.SQExpr.constructor","powerbi.data.SQExpr.equals","powerbi.data.SQExpr.validate","powerbi.data.SQExpr.accept","powerbi.data.SQExpr.getMetadata","powerbi.data.SQExpr.getDefaultAggregate","powerbi.data.SQExpr.getKeyColumns","powerbi.data.SQExpr.hasGroupOnKeys","powerbi.data.SQExpr.getPropertyKeys","powerbi.data.SQExpr.getConceptualProperty","powerbi.data.SQExpr.getTargetEntityForVariation","powerbi.data.SQExpr.getHierarchyLevelConceptualProperty","powerbi.data.SQExpr.getMetadataForVariation","powerbi.data.SQExpr.getMetadataForHierarchyLevel","powerbi.data.SQExpr.getPropertyMetadata","powerbi.data.SQExpr.getMetadataForProperty","powerbi.data.SQExpr.getMetadataForEntity","powerbi.data.defaultAggregateForDataType","powerbi.data.defaultAggregateToQueryAggregateFunction","powerbi.data.SQEntityExpr","powerbi.data.SQEntityExpr.constructor","powerbi.data.SQEntityExpr.accept","powerbi.data.SQPropRefExpr","powerbi.data.SQPropRefExpr.constructor","powerbi.data.SQColumnRefExpr","powerbi.data.SQColumnRefExpr.constructor","powerbi.data.SQColumnRefExpr.accept","powerbi.data.SQMeasureRefExpr","powerbi.data.SQMeasureRefExpr.constructor","powerbi.data.SQMeasureRefExpr.accept","powerbi.data.SQAggregationExpr","powerbi.data.SQAggregationExpr.constructor","powerbi.data.SQAggregationExpr.accept","powerbi.data.SQPropertyVariationSourceExpr","powerbi.data.SQPropertyVariationSourceExpr.constructor","powerbi.data.SQPropertyVariationSourceExpr.accept","powerbi.data.SQHierarchyExpr","powerbi.data.SQHierarchyExpr.constructor","powerbi.data.SQHierarchyExpr.accept","powerbi.data.SQHierarchyLevelExpr","powerbi.data.SQHierarchyLevelExpr.constructor","powerbi.data.SQHierarchyLevelExpr.accept","powerbi.data.SQAndExpr","powerbi.data.SQAndExpr.constructor","powerbi.data.SQAndExpr.accept","powerbi.data.SQBetweenExpr","powerbi.data.SQBetweenExpr.constructor","powerbi.data.SQBetweenExpr.accept","powerbi.data.SQInExpr","powerbi.data.SQInExpr.constructor","powerbi.data.SQInExpr.accept","powerbi.data.SQOrExpr","powerbi.data.SQOrExpr.constructor","powerbi.data.SQOrExpr.accept","powerbi.data.SQCompareExpr","powerbi.data.SQCompareExpr.constructor","powerbi.data.SQCompareExpr.accept","powerbi.data.SQContainsExpr","powerbi.data.SQContainsExpr.constructor","powerbi.data.SQContainsExpr.accept","powerbi.data.SQStartsWithExpr","powerbi.data.SQStartsWithExpr.constructor","powerbi.data.SQStartsWithExpr.accept","powerbi.data.SQExistsExpr","powerbi.data.SQExistsExpr.constructor","powerbi.data.SQExistsExpr.accept","powerbi.data.SQNotExpr","powerbi.data.SQNotExpr.constructor","powerbi.data.SQNotExpr.accept","powerbi.data.SQConstantExpr","powerbi.data.SQConstantExpr.constructor","powerbi.data.SQConstantExpr.accept","powerbi.data.SQConstantExpr.getMetadata","powerbi.data.SQDateSpanExpr","powerbi.data.SQDateSpanExpr.constructor","powerbi.data.SQDateSpanExpr.accept","powerbi.data.SQDateAddExpr","powerbi.data.SQDateAddExpr.constructor","powerbi.data.SQDateAddExpr.accept","powerbi.data.SQNowExpr","powerbi.data.SQNowExpr.constructor","powerbi.data.SQNowExpr.accept","powerbi.data.SQDefaultValueExpr","powerbi.data.SQDefaultValueExpr.constructor","powerbi.data.SQDefaultValueExpr.accept","powerbi.data.SQAnyValueExpr","powerbi.data.SQAnyValueExpr.constructor","powerbi.data.SQAnyValueExpr.accept","powerbi.data.SQExprBuilder.entity","powerbi.data.SQExprBuilder.columnRef","powerbi.data.SQExprBuilder.measureRef","powerbi.data.SQExprBuilder.aggregate","powerbi.data.SQExprBuilder.hierarchy","powerbi.data.SQExprBuilder.propertyVariationSource","powerbi.data.SQExprBuilder.hierarchyLevel","powerbi.data.SQExprBuilder.and","powerbi.data.SQExprBuilder.between","powerbi.data.SQExprBuilder.inExpr","powerbi.data.SQExprBuilder.or","powerbi.data.SQExprBuilder.tryUseInExprs","powerbi.data.SQExprBuilder.compare","powerbi.data.SQExprBuilder.contains","powerbi.data.SQExprBuilder.exists","powerbi.data.SQExprBuilder.equal","powerbi.data.SQExprBuilder.not","powerbi.data.SQExprBuilder.startsWith","powerbi.data.SQExprBuilder.nullConstant","powerbi.data.SQExprBuilder.now","powerbi.data.SQExprBuilder.defaultValue","powerbi.data.SQExprBuilder.anyValue","powerbi.data.SQExprBuilder.boolean","powerbi.data.SQExprBuilder.dateAdd","powerbi.data.SQExprBuilder.dateTime","powerbi.data.SQExprBuilder.dateSpan","powerbi.data.SQExprBuilder.decimal","powerbi.data.SQExprBuilder.double","powerbi.data.SQExprBuilder.integer","powerbi.data.SQExprBuilder.text","powerbi.data.SQExprBuilder.typedConstant","powerbi.data.SQExprBuilder.setAggregate","powerbi.data.SQExprBuilder.removeAggregate","powerbi.data.SQExprBuilder.removeEntityVariables","powerbi.data.SQExprBuilder.createExprWithAggregate","powerbi.data.SQExprInfo","powerbi.data.SQExprInfo.getAggregate","powerbi.data.SQExprEqualityVisitor","powerbi.data.SQExprEqualityVisitor.constructor","powerbi.data.SQExprEqualityVisitor.run","powerbi.data.SQExprEqualityVisitor.visitColumnRef","powerbi.data.SQExprEqualityVisitor.visitMeasureRef","powerbi.data.SQExprEqualityVisitor.visitAggr","powerbi.data.SQExprEqualityVisitor.visitHierarchy","powerbi.data.SQExprEqualityVisitor.visitHierarchyLevel","powerbi.data.SQExprEqualityVisitor.visitPropertyVariationSource","powerbi.data.SQExprEqualityVisitor.visitBetween","powerbi.data.SQExprEqualityVisitor.visitIn","powerbi.data.SQExprEqualityVisitor.visitEntity","powerbi.data.SQExprEqualityVisitor.visitAnd","powerbi.data.SQExprEqualityVisitor.visitOr","powerbi.data.SQExprEqualityVisitor.visitCompare","powerbi.data.SQExprEqualityVisitor.visitContains","powerbi.data.SQExprEqualityVisitor.visitDateSpan","powerbi.data.SQExprEqualityVisitor.visitDateAdd","powerbi.data.SQExprEqualityVisitor.visitExists","powerbi.data.SQExprEqualityVisitor.visitNot","powerbi.data.SQExprEqualityVisitor.visitNow","powerbi.data.SQExprEqualityVisitor.visitDefaultValue","powerbi.data.SQExprEqualityVisitor.visitAnyValue","powerbi.data.SQExprEqualityVisitor.visitStartsWith","powerbi.data.SQExprEqualityVisitor.visitConstant","powerbi.data.SQExprEqualityVisitor.optionalEqual","powerbi.data.SQExprEqualityVisitor.equals","powerbi.data.SQExprEqualityVisitor.equalsAll","powerbi.data.SQExprRootRewriter","powerbi.data.SQExprRootRewriter.constructor","powerbi.data.SQExprRootRewriter.visitDefault","powerbi.data.SQExprValidationVisitor","powerbi.data.SQExprValidationVisitor.constructor","powerbi.data.SQExprValidationVisitor.visitIn","powerbi.data.SQExprValidationVisitor.visitCompare","powerbi.data.SQExprValidationVisitor.visitColumnRef","powerbi.data.SQExprValidationVisitor.visitMeasureRef","powerbi.data.SQExprValidationVisitor.visitAggr","powerbi.data.SQExprValidationVisitor.visitEntity","powerbi.data.SQExprValidationVisitor.visitContains","powerbi.data.SQExprValidationVisitor.visitStartsWith","powerbi.data.SQExprValidationVisitor.validateCompatibleType","powerbi.data.SQExprValidationVisitor.validateEntity","powerbi.data.SQExprValidationVisitor.register","powerbi.data.SQExprValidationVisitor.isQueryable","powerbi.data.SQExprAggregateInfoVisitor","powerbi.data.SQExprAggregateInfoVisitor.constructor","powerbi.data.SQExprAggregateInfoVisitor.visitAggr","powerbi.data.SQExprAggregateInfoVisitor.visitDefault","powerbi.data.SQExprAggregateInfoVisitor.getAggregate","powerbi.data.SQHierarchyExprUtils.getConceptualHierarchyLevelFromExpr","powerbi.data.SQHierarchyExprUtils.getConceptualHierarchyLevel","powerbi.data.SQExprColumnRefInfoVisitor","powerbi.data.SQExprColumnRefInfoVisitor.constructor","powerbi.data.SQExprColumnRefInfoVisitor.visitColumnRef","powerbi.data.SQExprColumnRefInfoVisitor.visitHierarchyLevel","powerbi.data.SQExprColumnRefInfoVisitor.visitHierarchy","powerbi.data.SQExprColumnRefInfoVisitor.visitPropertyVariationSource","powerbi.data.SQExprColumnRefInfoVisitor.visitDefault","powerbi.data.SQExprColumnRefInfoVisitor.getColumnRefSQExpr","powerbi.data.SQExprChangeAggregateRewriter","powerbi.data.SQExprChangeAggregateRewriter.constructor","powerbi.data.SQExprChangeAggregateRewriter.visitAggr","powerbi.data.SQExprChangeAggregateRewriter.visitColumnRef","powerbi.data.SQExprChangeAggregateRewriter.rewrite","powerbi.data.SQExprRemoveAggregateRewriter","powerbi.data.SQExprRemoveAggregateRewriter.constructor","powerbi.data.SQExprRemoveAggregateRewriter.visitAggr","powerbi.data.SQExprRemoveAggregateRewriter.rewrite","powerbi.data.SQExprRemoveEntityVariablesRewriter","powerbi.data.SQExprRemoveEntityVariablesRewriter.constructor","powerbi.data.SQExprRemoveEntityVariablesRewriter.visitEntity","powerbi.data.SQExprRemoveEntityVariablesRewriter.rewrite","powerbi.data.SQExprUtils","powerbi.data.SQExprUtils.getSupportedAggregates","powerbi.data.SQExprUtils.isSupportedAggregate","powerbi.data.SQExprUtils.indexOfExpr","powerbi.data.SQExprUtils.sequenceEqual","powerbi.data.SQExprUtils.uniqueName","powerbi.data.SQExprUtils.defaultName","powerbi.data.SQExprUtils.isMeasure","powerbi.data.SQExprUtils.isAnyValue","powerbi.data.SQExprUtils.isDefaultValue","powerbi.data.SQExprUtils.discourageAggregation","powerbi.data.SQExprUtils.getSchemaCapabilities","powerbi.data.SQExprUtils.getKpiStatus","powerbi.data.SQExprUtils.getKpiMetadata","powerbi.data.SQExprUtils.getKpiStatusProperty","powerbi.data.SQExprUtils.getMetadataForUnderlyingType","powerbi.data.SQExprUtils.getDefaultValue","powerbi.data.SQExprUtils.getDefaultValues","powerbi.data.SQExprUtils.getDataViewScopeIdentityComparisonExpr","powerbi.data.SQExprUtils.getActiveTablesNames","powerbi.data.SQExprUtils.SQExprDefaultNameGenerator","powerbi.data.SQExprUtils.SQExprDefaultNameGenerator.constructor","powerbi.data.SQExprUtils.SQExprDefaultNameGenerator.visitEntity","powerbi.data.SQExprUtils.SQExprDefaultNameGenerator.visitColumnRef","powerbi.data.SQExprUtils.SQExprDefaultNameGenerator.visitMeasureRef","powerbi.data.SQExprUtils.SQExprDefaultNameGenerator.visitAggr","powerbi.data.SQExprUtils.SQExprDefaultNameGenerator.visitConstant","powerbi.data.SQExprUtils.SQExprDefaultNameGenerator.visitDefault","powerbi.data.SQExprUtils.IsMeasureVisitor","powerbi.data.SQExprUtils.IsMeasureVisitor.constructor","powerbi.data.SQExprUtils.IsMeasureVisitor.visitMeasureRef","powerbi.data.SQExprUtils.IsMeasureVisitor.visitAggr","powerbi.data.SQExprUtils.IsMeasureVisitor.visitDefault","powerbi.data.SQExprUtils.IsDefaultValueVisitor","powerbi.data.SQExprUtils.IsDefaultValueVisitor.constructor","powerbi.data.SQExprUtils.IsDefaultValueVisitor.visitCompare","powerbi.data.SQExprUtils.IsDefaultValueVisitor.visitAnd","powerbi.data.SQExprUtils.IsDefaultValueVisitor.visitDefaultValue","powerbi.data.SQExprUtils.IsDefaultValueVisitor.visitDefault","powerbi.data.SQExprUtils.IsAnyValueVisitor","powerbi.data.SQExprUtils.IsAnyValueVisitor.constructor","powerbi.data.SQExprUtils.IsAnyValueVisitor.visitCompare","powerbi.data.SQExprUtils.IsAnyValueVisitor.visitAnd","powerbi.data.SQExprUtils.IsAnyValueVisitor.visitAnyValue","powerbi.data.SQExprUtils.IsAnyValueVisitor.visitDefault","powerbi.data.SemanticQueryRewriter","powerbi.data.SemanticQueryRewriter.constructor","powerbi.data.SemanticQueryRewriter.rewriteFrom","powerbi.data.SemanticQueryRewriter.rewriteSelect","powerbi.data.SemanticQueryRewriter.rewriteOrderBy","powerbi.data.SemanticQueryRewriter.rewriteWhere","powerbi.data.SemanticQuery","powerbi.data.SemanticQuery.constructor","powerbi.data.SemanticQuery.create","powerbi.data.SemanticQuery.createWithTrimmedFrom","powerbi.data.SemanticQuery.from","powerbi.data.SemanticQuery.select","powerbi.data.SemanticQuery.getSelect","powerbi.data.SemanticQuery.setSelect","powerbi.data.SemanticQuery.removeSelect","powerbi.data.SemanticQuery.removeOrderBy","powerbi.data.SemanticQuery.selectNameOf","powerbi.data.SemanticQuery.setSelectAt","powerbi.data.SemanticQuery.addSelect","powerbi.data.SemanticQuery.orderBy","powerbi.data.SemanticQuery.getOrderBy","powerbi.data.SemanticQuery.setOrderBy","powerbi.data.SemanticQuery.where","powerbi.data.SemanticQuery.getWhere","powerbi.data.SemanticQuery.setWhere","powerbi.data.SemanticQuery.addWhere","powerbi.data.SemanticQuery.rewrite","powerbi.data.SemanticFilter","powerbi.data.SemanticFilter.constructor","powerbi.data.SemanticFilter.fromSQExpr","powerbi.data.SemanticFilter.getDefaultValueFilter","powerbi.data.SemanticFilter.getAnyValueFilter","powerbi.data.SemanticFilter.getDataViewScopeIdentityComparisonFilters","powerbi.data.SemanticFilter.from","powerbi.data.SemanticFilter.conditions","powerbi.data.SemanticFilter.where","powerbi.data.SemanticFilter.rewrite","powerbi.data.SemanticFilter.validate","powerbi.data.SemanticFilter.merge","powerbi.data.SemanticFilter.isDefaultFilter","powerbi.data.SemanticFilter.isAnyFilter","powerbi.data.SemanticFilter.isSameFilter","powerbi.data.SemanticFilter.applyFilter","powerbi.data.SQFrom","powerbi.data.SQFrom.constructor","powerbi.data.SQFrom.keys","powerbi.data.SQFrom.entity","powerbi.data.SQFrom.ensureEntity","powerbi.data.SQFrom.remove","powerbi.data.SQFrom.candidateName","powerbi.data.SQFrom.clone","powerbi.data.SQExprRewriterWithSourceRenames","powerbi.data.SQExprRewriterWithSourceRenames.constructor","powerbi.data.SQExprRewriterWithSourceRenames.visitEntity","powerbi.data.SQExprRewriterWithSourceRenames.rewriteFilter","powerbi.data.SQExprRewriterWithSourceRenames.rewriteArray","powerbi.data.SQExprRewriterWithSourceRenames.rewrite","powerbi.data.QuerySourceRenameDetector","powerbi.data.QuerySourceRenameDetector.constructor","powerbi.data.QuerySourceRenameDetector.run","powerbi.data.QuerySourceRenameDetector.visitEntity","powerbi.data.UnreferencedKeyFinder","powerbi.data.UnreferencedKeyFinder.constructor","powerbi.data.UnreferencedKeyFinder.visitEntity","powerbi.data.UnreferencedKeyFinder.result","powerbi.data.createCategoricalDataViewBuilder","powerbi.data.CategoricalDataViewBuilder","powerbi.data.CategoricalDataViewBuilder.constructor","powerbi.data.CategoricalDataViewBuilder.withCategory","powerbi.data.CategoricalDataViewBuilder.withCategories","powerbi.data.CategoricalDataViewBuilder.withValues","powerbi.data.CategoricalDataViewBuilder.withGroupedValues","powerbi.data.CategoricalDataViewBuilder.fillData","powerbi.data.CategoricalDataViewBuilder.build","powerbi.data.getScopeIdentity","powerbi.data.pushIfNotExists","powerbi.data.applySeriesData","powerbi.data.createStaticEvalContext","powerbi.data.StaticEvalContext","powerbi.data.StaticEvalContext.constructor","powerbi.data.StaticEvalContext.getExprValue","powerbi.data.StaticEvalContext.getCurrentIdentity","powerbi.data.StaticEvalContext.getRoleValue","powerbi.data.getExprValue","powerbi.data.createMatrixEvalContext","powerbi.FormattingEncoder","powerbi.FormattingEncoder.preserveEscaped","powerbi.FormattingEncoder.restoreEscaped","powerbi.FormattingEncoder.preserveLiterals","powerbi.FormattingEncoder.restoreLiterals","powerbi.FormattingService","powerbi.FormattingService.constructor","powerbi.FormattingService.formatValue","powerbi.FormattingService.format","powerbi.FormattingService.isStandardNumberFormat","powerbi.FormattingService.formatNumberWithCustomOverride","powerbi.FormattingService.dateFormatString","powerbi.FormattingService.setCurrentCulture","powerbi.FormattingService.getCulture","powerbi.FormattingService.initialize","powerbi.FormattingService.getUrlParam","powerbi.DateTimeFormat","powerbi.DateTimeFormat.canFormat","powerbi.DateTimeFormat.format","powerbi.DateTimeFormat.formatDateStandard","powerbi.DateTimeFormat.formatDateCustom","powerbi.DateTimeFormat.processCustomDateTimeFormat","powerbi.DateTimeFormat.localize","powerbi.DateTimeFormat.ensurePatterns","powerbi.NumberFormat","powerbi.NumberFormat.getNonScientificFormatWithPrecision","powerbi.NumberFormat.getNumericFormat","powerbi.NumberFormat.getNumericFormatFromComponent","powerbi.NumberFormat.addDecimalsToFormat","powerbi.NumberFormat.addDecimalsToFormatComponent","powerbi.NumberFormat.hasFormatComponents","powerbi.NumberFormat.getComponents","powerbi.NumberFormat.canFormat","powerbi.NumberFormat.isStandardFormat","powerbi.NumberFormat.format","powerbi.NumberFormat.formatWithCustomOverride","powerbi.NumberFormat.formatNumberStandard","powerbi.NumberFormat.formatNumberCustom","powerbi.NumberFormat.toNonScientific","powerbi.NumberFormat.getCustomFormatMetadata","powerbi.NumberFormat.getCustomFormatPrecision","powerbi.NumberFormat.getCustomFormatScale","powerbi.NumberFormat.fuseNumberWithCustomFormat","powerbi.NumberFormat.fuseNumberWithCustomFormatLeft","powerbi.NumberFormat.fuseNumberWithCustomFormatRight","powerbi.NumberFormat.localize","powerbi.DateTimeScaleFormatInfo","powerbi.DateTimeScaleFormatInfo.constructor","powerbi.DateTimeScaleFormatInfo.getFormatString","powerbi.data.SQExprShortSerializer","powerbi.data.SQExprShortSerializer.serialize","powerbi.data.SQExprShortSerializer.serializeArray","powerbi.data.SQExprShortSerializer.SQExprSerializer","powerbi.data.SQExprShortSerializer.SQExprSerializer.constructor","powerbi.data.SQExprShortSerializer.SQExprSerializer.visitColumnRef","powerbi.data.SQExprShortSerializer.SQExprSerializer.visitMeasureRef","powerbi.data.SQExprShortSerializer.SQExprSerializer.visitAggr","powerbi.data.SQExprShortSerializer.SQExprSerializer.visitEntity","powerbi.data.SQExprShortSerializer.SQExprSerializer.visitAnd","powerbi.data.SQExprShortSerializer.SQExprSerializer.visitCompare","powerbi.data.SQExprShortSerializer.SQExprSerializer.visitConstant","powerbi.data.SQExprShortSerializer.SQExprSerializer.visitDefault","powerbi.visuals","powerbi.visuals.Point","powerbi.visuals.Point.constructor","powerbi.visuals.Rect","powerbi.visuals.Rect.constructor","powerbi.visuals.LegendIcon","powerbi.visuals.LegendPosition","powerbi.visuals.createLegend","powerbi.visuals.Legend","powerbi.visuals.Legend.isLeft","powerbi.visuals.Legend.isTop","powerbi.visuals.Legend.positionChartArea","powerbi.visuals.SVGLegend","powerbi.visuals.SVGLegend.constructor","powerbi.visuals.SVGLegend.updateLayout","powerbi.visuals.SVGLegend.calculateViewport","powerbi.visuals.SVGLegend.getMargins","powerbi.visuals.SVGLegend.isVisible","powerbi.visuals.SVGLegend.changeOrientation","powerbi.visuals.SVGLegend.getOrientation","powerbi.visuals.SVGLegend.drawLegend","powerbi.visuals.SVGLegend.drawLegendInternal","powerbi.visuals.SVGLegend.normalizePosition","powerbi.visuals.SVGLegend.calculateTitleLayout","powerbi.visuals.SVGLegend.calculateLayout","powerbi.visuals.SVGLegend.updateNavigationArrowLayout","powerbi.visuals.SVGLegend.calculateHorizontalNavigationArrowsLayout","powerbi.visuals.SVGLegend.calculateVerticalNavigationArrowsLayout","powerbi.visuals.SVGLegend.calculateHorizontalLayout","powerbi.visuals.SVGLegend.calculateVerticalLayout","powerbi.visuals.SVGLegend.drawNavigationArrows","powerbi.visuals.SVGLegend.isTopOrBottom","powerbi.visuals.SVGLegend.isCentered","powerbi.visuals.SVGLegend.reset","powerbi.visuals.SVGLegend.getTextProperties","powerbi.visuals.SVGLegend.setTooltipToLegendItems","powerbi.visuals.CartesianChartInteractiveLegend","powerbi.visuals.CartesianChartInteractiveLegend.constructor","powerbi.visuals.CartesianChartInteractiveLegend.getMargins","powerbi.visuals.CartesianChartInteractiveLegend.drawLegend","powerbi.visuals.CartesianChartInteractiveLegend.reset","powerbi.visuals.CartesianChartInteractiveLegend.isVisible","powerbi.visuals.CartesianChartInteractiveLegend.changeOrientation","powerbi.visuals.CartesianChartInteractiveLegend.getOrientation","powerbi.visuals.CartesianChartInteractiveLegend.drawTitle","powerbi.visuals.CartesianChartInteractiveLegend.drawLegendItems","powerbi.visuals.CartesianChartInteractiveLegend.ensureLegendTableCreated","powerbi.visuals.CartesianChartInteractiveLegend.setPanGestureOnLegend","powerbi.visuals.CartesianChartInteractiveLegend.splitArrayToOddEven","powerbi.visuals.LegendData","powerbi.visuals.LegendData.update","powerbi.visuals.axisScale","powerbi.visuals.axisStyle","powerbi.visuals.axisType","powerbi.visuals.basicShapeType","powerbi.visuals.imageScalingType","powerbi.visuals.labelPosition","powerbi.visuals.labelStyle","powerbi.visuals.legendPosition","powerbi.visuals.kpiDirection","powerbi.visuals.lineStyle","powerbi.visuals.outline","powerbi.visuals.referenceLinePosition","powerbi.visuals.referenceLineDataLabelHorizontalPosition","powerbi.visuals.referenceLineDataLabelVerticalPosition","powerbi.visuals.slicerOrientation","powerbi.visuals.yAxisPosition","powerbi.visuals.AnimatorCommon","powerbi.visuals.AnimatorCommon.GetAnimationDuration","powerbi.visuals.BaseAnimator","powerbi.visuals.BaseAnimator.constructor","powerbi.visuals.BaseAnimator.getDuration","powerbi.visuals.BaseAnimator.animate","powerbi.visuals.WebColumnChartAnimator","powerbi.visuals.WebColumnChartAnimator.constructor","powerbi.visuals.WebColumnChartAnimator.animate","powerbi.visuals.WebColumnChartAnimator.animateNormalToHighlighted","powerbi.visuals.WebColumnChartAnimator.animateHighlightedToHighlighted","powerbi.visuals.WebColumnChartAnimator.animateHighlightedToNormal","powerbi.visuals.WebColumnChartAnimator.animateDefaultShapes","powerbi.visuals.WebDonutChartAnimator","powerbi.visuals.WebDonutChartAnimator.constructor","powerbi.visuals.WebDonutChartAnimator.animate","powerbi.visuals.WebDonutChartAnimator.animateNormalToHighlighted","powerbi.visuals.WebDonutChartAnimator.animateHighlightedToHighlighted","powerbi.visuals.WebDonutChartAnimator.animateHighlightedToNormal","powerbi.visuals.WebDonutChartAnimator.animateDefaultShapes","powerbi.visuals.WebDonutChartAnimator.animateDefaultHighlightShapes","powerbi.visuals.WebFunnelAnimator","powerbi.visuals.WebFunnelAnimator.constructor","powerbi.visuals.WebFunnelAnimator.animate","powerbi.visuals.WebFunnelAnimator.animateNormalToHighlighted","powerbi.visuals.WebFunnelAnimator.animateHighlightedToHighlighted","powerbi.visuals.WebFunnelAnimator.animateHighlightedToNormal","powerbi.visuals.WebFunnelAnimator.animateDefaultAxis","powerbi.visuals.WebFunnelAnimator.animateDefaultShapes","powerbi.visuals.WebFunnelAnimator.animateDefaultDataLabels","powerbi.visuals.WebFunnelAnimator.animatePercentBars","powerbi.visuals.WebFunnelAnimator.animateToFunnelPercent","powerbi.visuals.WebFunnelAnimator.animatePercentBarComponents","powerbi.visuals.WebTreemapAnimator","powerbi.visuals.WebTreemapAnimator.constructor","powerbi.visuals.WebTreemapAnimator.animate","powerbi.visuals.WebTreemapAnimator.animateNormalToHighlighted","powerbi.visuals.WebTreemapAnimator.animateHighlightedToHighlighted","powerbi.visuals.WebTreemapAnimator.animateHighlightedToNormal","powerbi.visuals.WebTreemapAnimator.animateDefaultShapes","powerbi.visuals.WebTreemapAnimator.animateDefaultHighlightShapes","powerbi.visuals.WebTreemapAnimator.animateDefaultMajorLabels","powerbi.visuals.WebTreemapAnimator.animateDefaultMinorLabels","powerbi.visuals.getColumnChartCapabilities","powerbi.visuals.capabilities","powerbi.visuals.ColumnChartWebBehavior","powerbi.visuals.ColumnChartWebBehavior.constructor","powerbi.visuals.ColumnChartWebBehavior.bindEvents","powerbi.visuals.ColumnChartWebBehavior.renderSelection","powerbi.visuals.DataDotChartWebBehavior","powerbi.visuals.DataDotChartWebBehavior.constructor","powerbi.visuals.DataDotChartWebBehavior.bindEvents","powerbi.visuals.DataDotChartWebBehavior.renderSelection","powerbi.visuals.DonutChartWebBehavior","powerbi.visuals.DonutChartWebBehavior.constructor","powerbi.visuals.DonutChartWebBehavior.bindEvents","powerbi.visuals.DonutChartWebBehavior.renderSelection","powerbi.visuals.FunnelWebBehavior","powerbi.visuals.FunnelWebBehavior.constructor","powerbi.visuals.FunnelWebBehavior.bindEvents","powerbi.visuals.FunnelWebBehavior.renderSelection","powerbi.visuals.LineChartWebBehavior","powerbi.visuals.LineChartWebBehavior.constructor","powerbi.visuals.LineChartWebBehavior.bindEvents","powerbi.visuals.LineChartWebBehavior.renderSelection","powerbi.visuals.MapBehavior","powerbi.visuals.MapBehavior.constructor","powerbi.visuals.MapBehavior.bindEvents","powerbi.visuals.MapBehavior.renderSelection","powerbi.visuals.MapBehavior.viewChanged","powerbi.visuals.ScatterChartWebBehavior","powerbi.visuals.ScatterChartWebBehavior.constructor","powerbi.visuals.ScatterChartWebBehavior.bindEvents","powerbi.visuals.ScatterChartWebBehavior.renderSelection","powerbi.visuals.ScatterChartMobileBehavior","powerbi.visuals.ScatterChartMobileBehavior.constructor","powerbi.visuals.ScatterChartMobileBehavior.bindEvents","powerbi.visuals.ScatterChartMobileBehavior.renderSelection","powerbi.visuals.ScatterChartMobileBehavior.setSelectionHandler","powerbi.visuals.ScatterChartMobileBehavior.makeDataPointsSelectable","powerbi.visuals.ScatterChartMobileBehavior.makeRootSelectable","powerbi.visuals.ScatterChartMobileBehavior.makeDragable","powerbi.visuals.ScatterChartMobileBehavior.disableDefaultTouchInteractions","powerbi.visuals.ScatterChartMobileBehavior.setOptions","powerbi.visuals.ScatterChartMobileBehavior.select","powerbi.visuals.ScatterChartMobileBehavior.selectRoot","powerbi.visuals.ScatterChartMobileBehavior.drag","powerbi.visuals.ScatterChartMobileBehavior.onDrag","powerbi.visuals.ScatterChartMobileBehavior.onClick","powerbi.visuals.ScatterChartMobileBehavior.getMouseCoordinates","powerbi.visuals.ScatterChartMobileBehavior.selectDotByIndex","powerbi.visuals.ScatterChartMobileBehavior.selectDot","powerbi.visuals.ScatterChartMobileBehavior.moveCrosshairToIndexDot","powerbi.visuals.ScatterChartMobileBehavior.moveCrosshairToXY","powerbi.visuals.ScatterChartMobileBehavior.drawCrosshair","powerbi.visuals.ScatterChartMobileBehavior.findClosestDotIndex","powerbi.visuals.ScatterChartMobileBehavior.updateLegend","powerbi.visuals.ScatterChartMobileBehavior.createLegendDataPoints","powerbi.visuals.HorizontalSlicerWebBehavior","powerbi.visuals.HorizontalSlicerWebBehavior.constructor","powerbi.visuals.HorizontalSlicerWebBehavior.bindEvents","powerbi.visuals.HorizontalSlicerWebBehavior.renderSelection","powerbi.visuals.VerticalSlicerWebBehavior","powerbi.visuals.VerticalSlicerWebBehavior.constructor","powerbi.visuals.VerticalSlicerWebBehavior.bindEvents","powerbi.visuals.VerticalSlicerWebBehavior.renderSelection","powerbi.visuals.SlicerWebBehavior","powerbi.visuals.SlicerWebBehavior.constructor","powerbi.visuals.SlicerWebBehavior.bindEvents","powerbi.visuals.SlicerWebBehavior.renderSelection","powerbi.visuals.SlicerWebBehavior.bindSlicerEvents","powerbi.visuals.SlicerWebBehavior.setSelectionOnSlicerItems","powerbi.visuals.SlicerWebBehavior.styleSlicerItems","powerbi.visuals.SlicerWebBehavior.bindSlicerItemSelectionEvent","powerbi.visuals.SlicerWebBehavior.bindSlicerClearEvent","powerbi.visuals.SlicerWebBehavior.styleSlicerContainer","powerbi.visuals.SlicerWebBehavior.isMultiSelect","powerbi.visuals.SlicerWebBehavior.createWebBehavior","powerbi.visuals.LegendBehavior","powerbi.visuals.LegendBehavior.constructor","powerbi.visuals.LegendBehavior.bindEvents","powerbi.visuals.LegendBehavior.renderSelection","powerbi.visuals.TreemapWebBehavior","powerbi.visuals.TreemapWebBehavior.constructor","powerbi.visuals.TreemapWebBehavior.bindEvents","powerbi.visuals.TreemapWebBehavior.renderSelection","powerbi.visuals.WaterfallChartWebBehavior","powerbi.visuals.WaterfallChartWebBehavior.constructor","powerbi.visuals.WaterfallChartWebBehavior.bindEvents","powerbi.visuals.WaterfallChartWebBehavior.renderSelection","powerbi.visuals.LabelsBehavior","powerbi.visuals.LabelsBehavior.constructor","powerbi.visuals.LabelsBehavior.bindEvents","powerbi.visuals.LabelsBehavior.renderSelection","powerbi.visuals.CartesianChartBehavior","powerbi.visuals.CartesianChartBehavior.constructor","powerbi.visuals.CartesianChartBehavior.bindEvents","powerbi.visuals.CartesianChartBehavior.renderSelection","powerbi.visuals.AxisHelper","powerbi.visuals.AxisHelper.getRecommendedNumberOfTicksForXAxis","powerbi.visuals.AxisHelper.getRecommendedNumberOfTicksForYAxis","powerbi.visuals.AxisHelper.getBestNumberOfTicks","powerbi.visuals.AxisHelper.hasNonIntegerData","powerbi.visuals.AxisHelper.getRecommendedTickValues","powerbi.visuals.AxisHelper.getRecommendedTickValuesForAnOrdinalRange","powerbi.visuals.AxisHelper.getRecommendedTickValuesForAQuantitativeRange","powerbi.visuals.AxisHelper.createTrueZeroTickLabel","powerbi.visuals.AxisHelper.getRecommendedTickValuesForADateTimeRange","powerbi.visuals.AxisHelper.normalizeLinearDomain","powerbi.visuals.AxisHelper.getMargin","powerbi.visuals.AxisHelper.getTickLabelMargins","powerbi.visuals.AxisHelper.columnDataTypeHasValue","powerbi.visuals.AxisHelper.createOrdinalType","powerbi.visuals.AxisHelper.isOrdinal","powerbi.visuals.AxisHelper.isOrdinalScale","powerbi.visuals.AxisHelper.isDateTime","powerbi.visuals.AxisHelper.invertScale","powerbi.visuals.AxisHelper.extent","powerbi.visuals.AxisHelper.invertOrdinalScale","powerbi.visuals.AxisHelper.findClosestXAxisIndex","powerbi.visuals.AxisHelper.diffScaled","powerbi.visuals.AxisHelper.createDomain","powerbi.visuals.AxisHelper.ensureValuesInRange","powerbi.visuals.AxisHelper.getCategoryValueType","powerbi.visuals.AxisHelper.createAxis","powerbi.visuals.AxisHelper.createScale","powerbi.visuals.AxisHelper.createFormatter","powerbi.visuals.AxisHelper.formatAxisTickValues","powerbi.visuals.AxisHelper.getMinTickValueInterval","powerbi.visuals.AxisHelper.createScalarDomain","powerbi.visuals.AxisHelper.createValueDomain","powerbi.visuals.AxisHelper.createOrdinalDomain","powerbi.visuals.AxisHelper.LabelLayoutStrategy","powerbi.visuals.AxisHelper.LabelLayoutStrategy.willLabelsFit","powerbi.visuals.AxisHelper.LabelLayoutStrategy.willLabelsWordBreak","powerbi.visuals.AxisHelper.LabelLayoutStrategy.rotate","powerbi.visuals.AxisHelper.LabelLayoutStrategy.wordBreak","powerbi.visuals.AxisHelper.LabelLayoutStrategy.clip","powerbi.visuals.AxisHelper.createOrdinalScale","powerbi.visuals.AxisHelper.isLogScalePossible","powerbi.visuals.AxisHelper.createNumericalScale","powerbi.visuals.AxisHelper.createLogScale","powerbi.visuals.AxisHelper.createLinearScale","powerbi.visuals.AxisHelper.getRangeForColumn","powerbi.visuals.AxisHelper.applyCustomizedDomain","powerbi.visuals.AxisHelper.combineDomain","powerbi.visuals.AxisHelper.createAxisLabel","powerbi.visuals.AxisHelper.scaleShouldClamp","powerbi.visuals.AxisHelper.normalizeNonFiniteNumber","powerbi.visuals.AxisHelper.powerOfTen","powerbi.visuals.ShapeFactory","powerbi.visuals.ShapeFactory.ShapeFactoryConsts","powerbi.visuals.ShapeFactory.createRectangle","powerbi.visuals.ShapeFactory.createOval","powerbi.visuals.ShapeFactory.createLine","powerbi.visuals.ShapeFactory.createUpArrow","powerbi.visuals.ShapeFactory.createTriangle","powerbi.visuals.ShapeFactory.createPathFromArray","powerbi.visuals.ShapeFactory.createShape","powerbi.visuals.ShapeFactory.getScale","powerbi.visuals.CartesianHelper","powerbi.visuals.CartesianHelper.getCategoryAxisProperties","powerbi.visuals.CartesianHelper.getValueAxisProperties","powerbi.visuals.CartesianHelper.isScalar","powerbi.visuals.CartesianHelper.getPrecision","powerbi.visuals.CartesianHelper.lookupXValue","powerbi.visuals.ColorHelper","powerbi.visuals.ColorHelper.constructor","powerbi.visuals.ColorHelper.getColorForSeriesValue","powerbi.visuals.ColorHelper.getColorScaleForSeries","powerbi.visuals.ColorHelper.getColorForMeasure","powerbi.visuals.ColorHelper.normalizeSelector","powerbi.visuals.ColumnUtil","powerbi.visuals.ColumnUtil.applyUserMinMax","powerbi.visuals.ColumnUtil.transformDomain","powerbi.visuals.ColumnUtil.getCategoryAxis","powerbi.visuals.ColumnUtil.applyInteractivity","powerbi.visuals.ColumnUtil.getFillOpacity","powerbi.visuals.ColumnUtil.getClosestColumnIndex","powerbi.visuals.ColumnUtil.setChosenColumnOpacity","powerbi.visuals.ColumnUtil.drawSeries","powerbi.visuals.ColumnUtil.drawDefaultShapes","powerbi.visuals.ColumnUtil.drawDefaultLabels","powerbi.visuals.ColumnUtil.normalizeInfinityInScale","powerbi.visuals.ColumnUtil.calculatePosition","powerbi.visuals.ClusteredUtil","powerbi.visuals.ClusteredUtil.clearColumns","powerbi.visuals.StackedUtil","powerbi.visuals.StackedUtil.getSize","powerbi.visuals.StackedUtil.calcValueDomain","powerbi.visuals.StackedUtil.getStackedMultiplier","powerbi.visuals.StackedUtil.clearColumns","powerbi.visuals.converterHelper","powerbi.visuals.converterHelper.categoryIsAlsoSeriesRole","powerbi.visuals.converterHelper.getPivotedCategories","powerbi.visuals.converterHelper.getSeriesName","powerbi.visuals.converterHelper.getFormattedLegendLabel","powerbi.visuals.converterHelper.defaultCategories","powerbi.visuals.converterHelper.createAxesLabels","powerbi.visuals.dataLabelUtils","powerbi.visuals.dataLabelUtils.updateLabelSettingsFromLabelsObject","powerbi.visuals.dataLabelUtils.updateLineChartLabelSettingsFromLabelsObject","powerbi.visuals.dataLabelUtils.getDefaultLabelSettings","powerbi.visuals.dataLabelUtils.getDefaultCardLabelSettings","powerbi.visuals.dataLabelUtils.getDefaultTreemapLabelSettings","powerbi.visuals.dataLabelUtils.getDefaultSunburstLabelSettings","powerbi.visuals.dataLabelUtils.getDefaultColumnLabelSettings","powerbi.visuals.dataLabelUtils.getDefaultPointLabelSettings","powerbi.visuals.dataLabelUtils.getDefaultLineChartLabelSettings","powerbi.visuals.dataLabelUtils.getDefaultMapLabelSettings","powerbi.visuals.dataLabelUtils.getDefaultDonutLabelSettings","powerbi.visuals.dataLabelUtils.getDefaultGaugeLabelSettings","powerbi.visuals.dataLabelUtils.getDefaultFunnelLabelSettings","powerbi.visuals.dataLabelUtils.getDefaultKpiLabelSettings","powerbi.visuals.dataLabelUtils.getLabelPrecision","powerbi.visuals.dataLabelUtils.drawDefaultLabelsForDataPointChart","powerbi.visuals.dataLabelUtils.drawDefaultLabelsForFunnelChart","powerbi.visuals.dataLabelUtils.selectLabels","powerbi.visuals.dataLabelUtils.cleanDataLabels","powerbi.visuals.dataLabelUtils.setHighlightedLabelsOpacity","powerbi.visuals.dataLabelUtils.getLabelFormattedText","powerbi.visuals.dataLabelUtils.getLabelLayoutXYForWaterfall","powerbi.visuals.dataLabelUtils.getWaterfallLabelYPosition","powerbi.visuals.dataLabelUtils.getWaterfallInsideLabelYPosition","powerbi.visuals.dataLabelUtils.doesDataLabelFitInShape","powerbi.visuals.dataLabelUtils.getMapLabelLayout","powerbi.visuals.dataLabelUtils.getColumnChartLabelLayout","powerbi.visuals.dataLabelUtils.validateLabelsSize","powerbi.visuals.dataLabelUtils.getColumnChartLabelFilter","powerbi.visuals.dataLabelUtils.getScatterChartLabelLayout","powerbi.visuals.dataLabelUtils.getLineChartLabelLayout","powerbi.visuals.dataLabelUtils.getFunnelChartLabelLayout","powerbi.visuals.dataLabelUtils.enumerateDataLabels","powerbi.visuals.dataLabelUtils.enumerateCategoryLabels","powerbi.visuals.dataLabelUtils.getDisplayUnitValueFromAxisFormatter","powerbi.visuals.dataLabelUtils.createColumnFormatterCacheManager","powerbi.visuals.dataLabelUtils.createColumnFormatterCacheManager.getOrCreate","powerbi.visuals.dataLabelUtils.getOptionsForLabelFormatter","powerbi.visuals.DonutLabelUtils","powerbi.visuals.DonutLabelUtils.getLabelLeaderLineForDonutChart","powerbi.visuals.DonutLabelUtils.getLabelLeaderLinesSizeForDonutChart","powerbi.visuals.DonutLabelUtils.getXPositionForDonutLabel","powerbi.visuals.DonutLabelUtils.getSpaceAvailableForDonutLabels","powerbi.visuals.NewDataLabelUtils","powerbi.visuals.NewDataLabelUtils.drawDefaultLabels","powerbi.visuals.NewDataLabelUtils.animateDefaultLabels","powerbi.visuals.NewDataLabelUtils.drawLabelBackground","powerbi.visuals.NewDataLabelUtils.drawLabelLeaderLines","powerbi.visuals.NewDataLabelUtils.getLabelFormattedText","powerbi.visuals.NewDataLabelUtils.getDisplayUnitValueFromAxisFormatter","powerbi.visuals.NewDataLabelUtils.getLabelPrecision","powerbi.visuals.NewDataLabelUtils.createColumnFormatterCacheManager","powerbi.visuals.NewDataLabelUtils.createColumnFormatterCacheManager.getOrCreate","powerbi.visuals.NewDataLabelUtils.getOptionsForLabelFormatter","powerbi.visuals.NewDataLabelUtils.removeDuplicates","powerbi.visuals.NewDataLabelUtils.getDataLabelLayoutOptions","powerbi.visuals.NewDataLabelUtils.labelKeyFunction","powerbi.visuals.DataRoleHelper","powerbi.visuals.DataRoleHelper.getMeasureIndexOfRole","powerbi.visuals.DataRoleHelper.hasRole","powerbi.visuals.DataRoleHelper.hasRoleInDataView","powerbi.visuals.KpiUtil","powerbi.visuals.KpiUtil.getKpiIcon","powerbi.visuals.KpiUtil.getKpiIconClassName","powerbi.visuals.KpiUtil.getClassForKpi","powerbi.visuals.KpiUtil.getKpiImageMetadata","powerbi.visuals.ReferenceLineHelper","powerbi.visuals.ReferenceLineHelper.enumerateObjectInstances","powerbi.visuals.ReferenceLineHelper.render","powerbi.visuals.ReferenceLineHelper.createLabelDataPoint","powerbi.visuals.getInvalidValueWarnings","powerbi.visuals.InvalidDataValuesChecker","powerbi.visuals.InvalidDataValuesChecker.constructor","powerbi.visuals.InvalidDataValuesChecker.getWarningMessages","powerbi.visuals.InvalidDataValuesChecker.loadWarningStatus","powerbi.visuals.ListViewFactory","powerbi.visuals.ListViewFactory.createListView","powerbi.visuals.ListView","powerbi.visuals.ListView.constructor","powerbi.visuals.ListView.SetDefaultOptions","powerbi.visuals.ListView.rowHeight","powerbi.visuals.ListView.data","powerbi.visuals.ListView.viewport","powerbi.visuals.ListView.empty","powerbi.visuals.ListView.render","powerbi.visuals.ListView.renderImpl","powerbi.visuals.ListView.scrollToFrame","powerbi.visuals.ListView.setTotalRows","powerbi.visuals.ListView.getVisibleRows","powerbi.visuals.ListView.getRowHeight","powerbi.visuals.MapUtil","powerbi.visuals.MapUtil.clip","powerbi.visuals.MapUtil.getMapSize","powerbi.visuals.MapUtil.latLongToPixelXYArray","powerbi.visuals.MapUtil.pointArrayToString","powerbi.visuals.MapUtil.pointArrayToArray","powerbi.visuals.MapUtil.getLocationBoundaries","powerbi.visuals.MapUtil.parseEncodedSpatialValueArray","powerbi.visuals.MapUtil.calcGeoData","powerbi.visuals.MapUtil.locationToPixelXY","powerbi.visuals.MapUtil.locationRectToRectXY","powerbi.visuals.MapUtil.latLongToPixelXY","powerbi.visuals.MapUtil.pixelXYToLocation","powerbi.visuals.MapPolygonInfo","powerbi.visuals.MapPolygonInfo.constructor","powerbi.visuals.MapPolygonInfo.reCalc","powerbi.visuals.MapPolygonInfo.scale","powerbi.visuals.MapPolygonInfo.transform","powerbi.visuals.MapPolygonInfo.outherTransform","powerbi.visuals.MapPolygonInfo.setViewBox","powerbi.visuals.MapPolygonInfo.innerTransform","powerbi.visuals.MapPolygonInfo.transformToString","powerbi.visuals.SelectionId","powerbi.visuals.SelectionId.constructor","powerbi.visuals.SelectionId.equals","powerbi.visuals.SelectionId.includes","powerbi.visuals.SelectionId.getKey","powerbi.visuals.SelectionId.getKeyWithoutHighlight","powerbi.visuals.SelectionId.hasIdentity","powerbi.visuals.SelectionId.getSelector","powerbi.visuals.SelectionId.getSelectorsByColumn","powerbi.visuals.SelectionId.createNull","powerbi.visuals.SelectionId.createWithId","powerbi.visuals.SelectionId.createWithMeasure","powerbi.visuals.SelectionId.createWithIdAndMeasure","powerbi.visuals.SelectionId.createWithIdAndMeasureAndCategory","powerbi.visuals.SelectionId.createWithIds","powerbi.visuals.SelectionId.createWithIdsAndMeasure","powerbi.visuals.SelectionId.createWithSelectorForColumnAndMeasure","powerbi.visuals.SelectionId.createWithHighlight","powerbi.visuals.SelectionId.idArray","powerbi.visuals.SelectionIdBuilder","powerbi.visuals.SelectionIdBuilder.constructor","powerbi.visuals.SelectionIdBuilder.builder","powerbi.visuals.SelectionIdBuilder.withCategory","powerbi.visuals.SelectionIdBuilder.withSeries","powerbi.visuals.SelectionIdBuilder.withMeasure","powerbi.visuals.SelectionIdBuilder.createSelectionId","powerbi.visuals.SelectionIdBuilder.ensureDataMap","powerbi.visuals.utility","powerbi.visuals.utility.SelectionManager","powerbi.visuals.utility.SelectionManager.constructor","powerbi.visuals.utility.SelectionManager.select","powerbi.visuals.utility.SelectionManager.hasSelection","powerbi.visuals.utility.SelectionManager.clear","powerbi.visuals.utility.SelectionManager.getSelectionIds","powerbi.visuals.utility.SelectionManager.sendSelectionToHost","powerbi.visuals.utility.SelectionManager.selectInternal","powerbi.visuals.utility.SelectionManager.containsSelection","powerbi.visuals.shapes","powerbi.visuals.shapes.Polygon","powerbi.visuals.shapes.Polygon.constructor","powerbi.visuals.shapes.Polygon.absoluteCentroid","powerbi.visuals.shapes.Polygon.absoluteBoundingRect","powerbi.visuals.shapes.Polygon.contains","powerbi.visuals.shapes.Polygon.conflicts","powerbi.visuals.shapes.Polygon.lineIntersectionPoint","powerbi.visuals.shapes.Polygon.calculateAbsolutePolygonArea","powerbi.visuals.shapes.Polygon.isConflictWithBoundingBox","powerbi.visuals.shapes.Polygon.calculatePolygonCentroid","powerbi.visuals.shapes.Polygon.calculateBoundingRect","powerbi.visuals.shapes.Polygon.inside","powerbi.visuals.shapes.Polygon.getLineIntersection","powerbi.visuals.shapes.Polygon.convertArrayPathToPoints","powerbi.visuals.shapes.Point","powerbi.visuals.shapes.Point.offset","powerbi.visuals.shapes.Point.equals","powerbi.visuals.shapes.Point.clone","powerbi.visuals.shapes.Point.toString","powerbi.visuals.shapes.Point.serialize","powerbi.visuals.shapes.Point.getDistance","powerbi.visuals.shapes.Point.equalWithPrecision","powerbi.visuals.shapes.Point.parsePoint","powerbi.visuals.shapes.Size","powerbi.visuals.shapes.Size.isEmpty","powerbi.visuals.shapes.Size.equals","powerbi.visuals.shapes.Size.clone","powerbi.visuals.shapes.Size.inflate","powerbi.visuals.shapes.Size.deflate","powerbi.visuals.shapes.Size.combine","powerbi.visuals.shapes.Size.toRect","powerbi.visuals.shapes.Size.toString","powerbi.visuals.shapes.Size.equal","powerbi.visuals.shapes.Size.equalWithPrecision","powerbi.visuals.shapes.Size.parseSize","powerbi.visuals.shapes.Rect","powerbi.visuals.shapes.Rect.getOffset","powerbi.visuals.shapes.Rect.getSize","powerbi.visuals.shapes.Rect.setSize","powerbi.visuals.shapes.Rect.right","powerbi.visuals.shapes.Rect.bottom","powerbi.visuals.shapes.Rect.topLeft","powerbi.visuals.shapes.Rect.topRight","powerbi.visuals.shapes.Rect.bottomLeft","powerbi.visuals.shapes.Rect.bottomRight","powerbi.visuals.shapes.Rect.equals","powerbi.visuals.shapes.Rect.clone","powerbi.visuals.shapes.Rect.toString","powerbi.visuals.shapes.Rect.offset","powerbi.visuals.shapes.Rect.inflate","powerbi.visuals.shapes.Rect.deflate","powerbi.visuals.shapes.Rect.inflateBy","powerbi.visuals.shapes.Rect.deflateBy","powerbi.visuals.shapes.Rect.getClosestPoint","powerbi.visuals.shapes.Rect.equal","powerbi.visuals.shapes.Rect.equalWithPrecision","powerbi.visuals.shapes.Rect.isEmpty","powerbi.visuals.shapes.Rect.containsPoint","powerbi.visuals.shapes.Rect.isIntersecting","powerbi.visuals.shapes.Rect.intersect","powerbi.visuals.shapes.Rect.combine","powerbi.visuals.shapes.Rect.parseRect","powerbi.visuals.shapes.Thickness","powerbi.visuals.shapes.Thickness.inflate","powerbi.visuals.shapes.Thickness.getWidth","powerbi.visuals.shapes.Thickness.getHeight","powerbi.visuals.shapes.Thickness.clone","powerbi.visuals.shapes.Thickness.equals","powerbi.visuals.shapes.Thickness.flipHorizontal","powerbi.visuals.shapes.Thickness.flipVertical","powerbi.visuals.shapes.Thickness.toString","powerbi.visuals.shapes.Thickness.toCssString","powerbi.visuals.shapes.Thickness.isEmpty","powerbi.visuals.shapes.Thickness.equal","powerbi.visuals.shapes.Thickness.equalWithPrecision","powerbi.visuals.shapes.Thickness.parseThickness","powerbi.visuals.shapes.Vector","powerbi.visuals.shapes.Vector.isEmpty","powerbi.visuals.shapes.Vector.equals","powerbi.visuals.shapes.Vector.clone","powerbi.visuals.shapes.Vector.toString","powerbi.visuals.shapes.Vector.getLength","powerbi.visuals.shapes.Vector.getLengthSqr","powerbi.visuals.shapes.Vector.scale","powerbi.visuals.shapes.Vector.normalize","powerbi.visuals.shapes.Vector.rotate90DegCW","powerbi.visuals.shapes.Vector.rotate90DegCCW","powerbi.visuals.shapes.Vector.rotate","powerbi.visuals.shapes.Vector.equal","powerbi.visuals.shapes.Vector.equalWithPrecision","powerbi.visuals.shapes.Vector.add","powerbi.visuals.shapes.Vector.subtract","powerbi.visuals.shapes.Vector.dotProduct","powerbi.visuals.shapes.Vector.getDeltaVector","powerbi.visuals.SlicerUtil","powerbi.visuals.SlicerUtil.Selectors","powerbi.visuals.SlicerUtil.DisplayNameKeys","powerbi.visuals.SlicerUtil.SettingsHelper","powerbi.visuals.SlicerUtil.SettingsHelper.areSettingsDefined","powerbi.visuals.SlicerUtil.DefaultValueHandler","powerbi.visuals.SlicerUtil.DefaultValueHandler.getIdentityFields","powerbi.visuals.SlicerUtil.tryRemoveValueFromRetainedList","powerbi.visuals.SlicerUtil.DOMHelper","powerbi.visuals.SlicerUtil.DOMHelper.constructor","powerbi.visuals.SlicerUtil.DOMHelper.createSlicerHeader","powerbi.visuals.SlicerUtil.DOMHelper.getHeaderTextProperties","powerbi.visuals.SlicerUtil.DOMHelper.getSlicerBodyViewport","powerbi.visuals.SlicerUtil.DOMHelper.updateSlicerBodyDimensions","powerbi.visuals.SlicerUtil.DOMHelper.getHeaderHeight","powerbi.visuals.SlicerUtil.DOMHelper.getRowHeight","powerbi.visuals.SlicerUtil.DOMHelper.styleSlicerHeader","powerbi.visuals.SlicerUtil.DOMHelper.setSlicerTextStyle","powerbi.visuals.SlicerUtil.DOMHelper.getRowsOutlineWidth","powerbi.visuals.SlicerUtil.DOMHelper.setSlicerHeaderTextStyle","powerbi.visuals.SlicerUtil.DOMHelper.getTextProperties","powerbi.visuals.tooltipUtils","powerbi.visuals.tooltipUtils.tooltipUpdate","powerbi.visuals.SVGUtil","powerbi.visuals.SVGUtil.translate","powerbi.visuals.SVGUtil.translateXWithPixels","powerbi.visuals.SVGUtil.translateWithPixels","powerbi.visuals.SVGUtil.translateAndRotate","powerbi.visuals.SVGUtil.scale","powerbi.visuals.SVGUtil.translateAndScale","powerbi.visuals.SVGUtil.transformOrigin","powerbi.visuals.SVGUtil.flushAllD3Transitions","powerbi.visuals.SVGUtil.flushAllD3TransitionsIfNeeded","powerbi.visuals.SVGUtil.ensureDAttribute","powerbi.visuals.SVGUtil.ensureValidSVGPoint","powerbi.visuals.SVGUtil.parseTranslateTransform","powerbi.visuals.SVGUtil.createArrow","powerbi.visuals.SVGUtil.getTransformScaleRatios","powerbi.visuals.TextUtil","powerbi.visuals.TextUtil.removeBreakingSpaces","powerbi.visuals.TextUtil.removeEllipses","powerbi.visuals.UrlHelper","powerbi.visuals.UrlHelper.isValidUrl","powerbi.visuals.UrlHelper.isValidImage","powerbi.visuals.UrlHelper.hasImageColumn","powerbi.visuals.UrlHelper.isImageColumn","powerbi.visuals.GradientUtils","powerbi.visuals.GradientUtils.getFillRuleRole","powerbi.visuals.GradientUtils.shouldShowGradient","powerbi.visuals.GradientUtils.getUpdatedGradientSettings","powerbi.visuals.GradientUtils.getGradientMeasureIndex","powerbi.visuals.GradientUtils.hasGradientRole","powerbi.visuals.GradientUtils.getDefaultGradientSettings","powerbi.visuals.GradientUtils.getDefaultFillRuleDefinition","powerbi.visuals.GradientUtils.updateFillRule","powerbi.visuals.GradientUtils.getGradientSettings","powerbi.visuals.GradientUtils.getFillRule","powerbi.visuals.GradientUtils.getDefaultColors","powerbi.visuals.GradientUtils.getGradientSettingsFromRule","powerbi.visuals.GradientUtils.getLinearGradien2FillRuleDefinition","powerbi.visuals.GradientUtils.getLinearGradien3FillRuleDefinition","powerbi.visuals.GradientUtils.getDefaultColorExpression","powerbi.visuals.GradientUtils.getColorExpressionValue","powerbi.visuals.GradientUtils.updateMinColor","powerbi.visuals.GradientUtils.updateMidColor","powerbi.visuals.GradientUtils.updateMaxColor","powerbi.visuals.GradientUtils.updateMinValue","powerbi.visuals.GradientUtils.updateMidValue","powerbi.visuals.GradientUtils.updateMaxValue","powerbi.visuals.visualBackgroundHelper","powerbi.visuals.visualBackgroundHelper.getDefaultColor","powerbi.visuals.visualBackgroundHelper.getDefaultTransparency","powerbi.visuals.visualBackgroundHelper.getDefaultShow","powerbi.visuals.visualBackgroundHelper.getDefaultValues","powerbi.visuals.visualBackgroundHelper.enumeratePlot","powerbi.visuals.visualBackgroundHelper.renderBackgroundImage","powerbi.visuals.ObjectEnumerationBuilder","powerbi.visuals.ObjectEnumerationBuilder.constructor","powerbi.visuals.ObjectEnumerationBuilder.pushInstance","powerbi.visuals.ObjectEnumerationBuilder.pushContainer","powerbi.visuals.ObjectEnumerationBuilder.popContainer","powerbi.visuals.ObjectEnumerationBuilder.complete","powerbi.visuals.ObjectEnumerationBuilder.canMerge","powerbi.visuals.ObjectEnumerationBuilder.extend","powerbi.visuals.ObjectEnumerationBuilder.merge","powerbi.visuals.ObjectEnumerationBuilder.normalize","powerbi.visuals.ObjectEnumerationBuilder.getContainerForInstance","powerbi.visuals.VisualBorderUtil","powerbi.visuals.VisualBorderUtil.getBorderStyle","powerbi.visuals.VisualBorderUtil.getBorderStyleWithWeight","powerbi.visuals.VisualBorderUtil.getBorderWidth","powerbi.visuals.Transform","powerbi.visuals.Transform.constructor","powerbi.visuals.Transform.applyToPoint","powerbi.visuals.Transform.applyToRect","powerbi.visuals.Transform.translate","powerbi.visuals.Transform.scale","powerbi.visuals.Transform.rotate","powerbi.visuals.Transform.add","powerbi.visuals.Transform.getInverse","powerbi.visuals.createTranslateMatrix","powerbi.visuals.createScaleMatrix","powerbi.visuals.createRotationMatrix","powerbi.visuals.createInverseMatrix","powerbi.visuals.multiplyMatrices","powerbi.visuals.visibilityHelper","powerbi.visuals.visibilityHelper.partiallyVisible","powerbi.visuals.DataConversion","powerbi.visuals.DataConversion.convert","powerbi.visuals.DataConversion.getSlicerData","powerbi.visuals.DataConversion.getLabel","powerbi.visuals.DataConversion.createDefaultSettings","powerbi.RectOrientation","powerbi.OutsidePlacement","powerbi.DataLabelManager","powerbi.DataLabelManager.constructor","powerbi.DataLabelManager.defaultSettings","powerbi.DataLabelManager.hideCollidedLabels","powerbi.DataLabelManager.getLabelInfo","powerbi.DataLabelManager.calculateContentPositionFromPoint","powerbi.DataLabelManager.calculateContentPositionFromRect","powerbi.DataLabelManager.handleInsideCenterPosition","powerbi.DataLabelManager.handleInsideEndPosition","powerbi.DataLabelManager.handleInsideBasePosition","powerbi.DataLabelManager.handleOutsideEndPosition","powerbi.DataLabelManager.handleOutsideBasePosition","powerbi.DataLabelManager.calculateContentPosition","powerbi.DataLabelManager.hasCollisions","powerbi.DataLabelManager.isValid","powerbi.DataLabelArrangeGrid","powerbi.DataLabelArrangeGrid.constructor","powerbi.DataLabelArrangeGrid.add","powerbi.DataLabelArrangeGrid.hasConflict","powerbi.DataLabelArrangeGrid.getGridRowColCount","powerbi.DataLabelArrangeGrid.getGridIndexRect","powerbi.LocationConverter","powerbi.LocationConverter.topInside","powerbi.LocationConverter.bottomInside","powerbi.LocationConverter.rightInside","powerbi.LocationConverter.leftInside","powerbi.LocationConverter.topOutside","powerbi.LocationConverter.bottomOutside","powerbi.LocationConverter.rightOutside","powerbi.LocationConverter.leftOutside","powerbi.LocationConverter.middleHorizontal","powerbi.LocationConverter.middleVertical","powerbi.LabelArrangeGrid","powerbi.LabelArrangeGrid.constructor","powerbi.LabelArrangeGrid.add","powerbi.LabelArrangeGrid.hasConflict","powerbi.LabelArrangeGrid.tryPositionInViewport","powerbi.LabelArrangeGrid.hasCollision","powerbi.LabelArrangeGrid.isWithinGridViewport","powerbi.LabelArrangeGrid.isCloseToGridViewport","powerbi.LabelArrangeGrid.tryMoveInsideViewport","powerbi.LabelArrangeGrid.getContainingGridSubsection","powerbi.LabelArrangeGrid.getCellCount","powerbi.LabelArrangeGrid.bound","powerbi.LabelLayout","powerbi.LabelLayout.constructor","powerbi.LabelLayout.layout","powerbi.LabelLayout.positionDataLabels","powerbi.LabelLayout.tryPositionForRectPositions","powerbi.LabelLayout.tryPositionRect","powerbi.LabelLayout.tryPositionForPointPositions","powerbi.LabelLayout.tryPositionPoint","powerbi.DataLabelRectPositioner","powerbi.DataLabelRectPositioner.getLabelRect","powerbi.DataLabelRectPositioner.canFitWithinParent","powerbi.DataLabelRectPositioner.isLabelWithinParent","powerbi.DataLabelRectPositioner.topInside","powerbi.DataLabelRectPositioner.bottomInside","powerbi.DataLabelRectPositioner.rightInside","powerbi.DataLabelRectPositioner.leftInside","powerbi.DataLabelRectPositioner.topOutside","powerbi.DataLabelRectPositioner.bottomOutside","powerbi.DataLabelRectPositioner.rightOutside","powerbi.DataLabelRectPositioner.leftOutside","powerbi.DataLabelRectPositioner.middleHorizontal","powerbi.DataLabelRectPositioner.middleVertical","powerbi.DataLabelPointPositioner","powerbi.DataLabelPointPositioner.getLabelRect","powerbi.DataLabelPointPositioner.above","powerbi.DataLabelPointPositioner.below","powerbi.DataLabelPointPositioner.left","powerbi.DataLabelPointPositioner.right","powerbi.DataLabelPointPositioner.belowLeft","powerbi.DataLabelPointPositioner.belowRight","powerbi.DataLabelPointPositioner.aboveLeft","powerbi.DataLabelPointPositioner.aboveRight","powerbi.DataLabelPointPositioner.center","powerbi.DataLabelPointPositioner.getLabelLeaderLineEndingPoint","powerbi.DateTimeSequence","powerbi.DateTimeSequence.constructor","powerbi.DateTimeSequence.add","powerbi.DateTimeSequence.extendToCover","powerbi.DateTimeSequence.moveToCover","powerbi.DateTimeSequence.calculate","powerbi.DateTimeSequence.calculateYears","powerbi.DateTimeSequence.calculateMonths","powerbi.DateTimeSequence.calculateWeeks","powerbi.DateTimeSequence.calculateDays","powerbi.DateTimeSequence.calculateHours","powerbi.DateTimeSequence.calculateMinutes","powerbi.DateTimeSequence.calculateSeconds","powerbi.DateTimeSequence.calculateMilliseconds","powerbi.DateTimeSequence.fromNumericSequence","powerbi.DateTimeSequence.addInterval","powerbi.DateTimeSequence.getDelta","powerbi.DateTimeSequence.getIntervalUnit","powerbi.DateUtils","powerbi.DateUtils.isLeap","powerbi.DateUtils.getMonthDays","powerbi.DateUtils.addYears","powerbi.DateUtils.addMonths","powerbi.DateUtils.addWeeks","powerbi.DateUtils.addDays","powerbi.DateUtils.addHours","powerbi.DateUtils.addMinutes","powerbi.DateUtils.addSeconds","powerbi.DateUtils.addMilliseconds","powerbi.DisplayUnit","powerbi.DisplayUnit.constructor","powerbi.DisplayUnit.project","powerbi.DisplayUnit.reverseProject","powerbi.DisplayUnit.isApplicableTo","powerbi.DisplayUnit.isScaling","powerbi.DisplayUnitSystem","powerbi.DisplayUnitSystem.constructor","powerbi.DisplayUnitSystem.title","powerbi.DisplayUnitSystem.update","powerbi.DisplayUnitSystem.findApplicableDisplayUnit","powerbi.DisplayUnitSystem.format","powerbi.DisplayUnitSystem.isFormatSupported","powerbi.DisplayUnitSystem.isPercentageFormat","powerbi.DisplayUnitSystem.shouldRespectScalingUnit","powerbi.DisplayUnitSystem.getNumberOfDecimalsForFormatting","powerbi.DisplayUnitSystem.isScalingUnit","powerbi.DisplayUnitSystem.formatHelper","powerbi.DisplayUnitSystem.formatSingleValue","powerbi.DisplayUnitSystem.shouldUseValuePrecision","powerbi.DisplayUnitSystem.isScientific","powerbi.DisplayUnitSystem.hasScientitifcFormat","powerbi.DisplayUnitSystem.supportsScientificFormat","powerbi.DisplayUnitSystem.shouldFallbackToScientific","powerbi.DisplayUnitSystem.getScientificFormat","powerbi.NoDisplayUnitSystem","powerbi.NoDisplayUnitSystem.constructor","powerbi.DefaultDisplayUnitSystem","powerbi.DefaultDisplayUnitSystem.constructor","powerbi.DefaultDisplayUnitSystem.format","powerbi.DefaultDisplayUnitSystem.reset","powerbi.DefaultDisplayUnitSystem.getUnits","powerbi.WholeUnitsDisplayUnitSystem","powerbi.WholeUnitsDisplayUnitSystem.constructor","powerbi.WholeUnitsDisplayUnitSystem.reset","powerbi.WholeUnitsDisplayUnitSystem.getUnits","powerbi.WholeUnitsDisplayUnitSystem.format","powerbi.DataLabelsDisplayUnitSystem","powerbi.DataLabelsDisplayUnitSystem.constructor","powerbi.DataLabelsDisplayUnitSystem.isFormatSupported","powerbi.DataLabelsDisplayUnitSystem.getUnits","powerbi.DataLabelsDisplayUnitSystem.format","powerbi.createDisplayUnits","powerbi.addUnitIfNonEmpty","powerbi.NumericSequence","powerbi.NumericSequence.constructor","powerbi.NumericSequence.calculate","powerbi.NumericSequence.calculateUnits","powerbi.NumericSequence.trimMinMax","powerbi.NumericSequenceRange","powerbi.NumericSequenceRange.constructor","powerbi.NumericSequenceRange._ensureIncludeZero","powerbi.NumericSequenceRange._ensureNotEmpty","powerbi.NumericSequenceRange._ensureDirection","powerbi.NumericSequenceRange.getSize","powerbi.NumericSequenceRange.shrinkByStep","powerbi.NumericSequenceRange.calculate","powerbi.NumericSequenceRange.calculateDataRange","powerbi.NumericSequenceRange.calculateFixedRange","powerbi.ValueUtil","powerbi.ValueUtil.hasValue","powerbi.visuals.valueFormatter","powerbi.visuals.valueFormatter.beautify","powerbi.visuals.valueFormatter.describeUnit","powerbi.visuals.valueFormatter.getLocalizedString","powerbi.visuals.valueFormatter.getFormatMetadata","powerbi.visuals.valueFormatter.setLocaleOptions","powerbi.visuals.valueFormatter.createDefaultFormatter","powerbi.visuals.valueFormatter.create","powerbi.visuals.valueFormatter.format","powerbi.visuals.valueFormatter.getValueFormat","powerbi.visuals.valueFormatter.formatValueColumn","powerbi.visuals.valueFormatter.createDisplayUnitSystem","powerbi.visuals.valueFormatter.shouldUseNumericDisplayUnits","powerbi.visuals.valueFormatter.shouldUseDateUnits","powerbi.visuals.valueFormatter.getFormatString","powerbi.visuals.valueFormatter.formatListCompound","powerbi.visuals.valueFormatter.formatListAnd","powerbi.visuals.valueFormatter.formatListOr","powerbi.visuals.valueFormatter.formatCore","powerbi.visuals.valueFormatter.getStringFormat","powerbi.visuals.valueFormatter.getDisplayUnits","powerbi.DonutLabelLayout","powerbi.DonutLabelLayout.constructor","powerbi.DonutLabelLayout.layout","powerbi.DonutLabelLayout.positionLabels","powerbi.DonutLabelLayout.tryPositionForDonut","powerbi.DonutLabelLayout.generateCandidate","powerbi.DonutLabelLayout.tryAllPositions","powerbi.DonutLabelLayout.buildLabel","powerbi.DonutLabelLayout.tryPositionPoint","powerbi.DonutLabelLayout.getLabelPointPositions","powerbi.DonutLabelLayout.splitDonutDataPoint","powerbi.DonutLabelLayout.generateCandidateAngleForPosition","powerbi.DonutLabelLayout.getPointPositionForAngle","powerbi.DonutLabelLayout.score","powerbi.FilledMapLabelLayout","powerbi.FilledMapLabelLayout.constructor","powerbi.FilledMapLabelLayout.layout","powerbi.FilledMapLabelLayout.getLabelPolygon","powerbi.FilledMapLabelLayout.getLabelBoundingBox","powerbi.FilledMapLabelLayout.getLabelByPolygonPositions","powerbi.FilledMapLabelLayout.setLeaderLinePoints","powerbi.FilledMapLabelLayout.calculateStemSource","powerbi.FilledMapLabelLayout.calculateStemDestination","powerbi.FilledMapLabelLayout.tryPositionForPolygonPosition","powerbi.FilledMapLabelLayout.tryPlaceLabelOutsidePolygon","powerbi.FilledMapLabelLayout.updateLabelOffsets","powerbi.FilledMapLabelLayout.getAbsoluteRectangle","powerbi.LabelPolygonArrangeGrid","powerbi.LabelPolygonArrangeGrid.constructor","powerbi.LabelPolygonArrangeGrid.hasConflict","powerbi.LabelPolygonArrangeGrid.add","powerbi.LabelPolygonArrangeGrid.getContainingGridSubsection","powerbi.LabelPolygonArrangeGrid.getCellCount","powerbi.LabelPolygonArrangeGrid.bound","powerbi.visuals.createColorAllocatorFactory","powerbi.visuals.ColorAllocatorFactory","powerbi.visuals.ColorAllocatorFactory.constructor","powerbi.visuals.ColorAllocatorFactory.linearGradient2","powerbi.visuals.ColorAllocatorFactory.linearGradient3","powerbi.visuals.LinearGradient2Allocator","powerbi.visuals.LinearGradient2Allocator.constructor","powerbi.visuals.LinearGradient2Allocator.color","powerbi.visuals.LinearGradient3Allocator","powerbi.visuals.LinearGradient3Allocator.constructor","powerbi.visuals.LinearGradient3Allocator.color","powerbi.visuals.LinearGradient3AllocatorWithSplittedScales","powerbi.visuals.LinearGradient3AllocatorWithSplittedScales.constructor","powerbi.visuals.LinearGradient3AllocatorWithSplittedScales.color","powerbi.visuals.DefaultVisualHostServices","powerbi.visuals.DefaultVisualHostServices.constructor","powerbi.visuals.DefaultVisualHostServices.initialize","powerbi.visuals.DefaultVisualHostServices.createLocaleOptions","powerbi.visuals.DefaultVisualHostServices.createTooltipLocaleOptions","powerbi.visuals.DefaultVisualHostServices.getLocalizedString","powerbi.visuals.DefaultVisualHostServices.onDragStart","powerbi.visuals.DefaultVisualHostServices.canSelect","powerbi.visuals.DefaultVisualHostServices.onSelect","powerbi.visuals.DefaultVisualHostServices.loadMoreData","powerbi.visuals.DefaultVisualHostServices.persistProperties","powerbi.visuals.DefaultVisualHostServices.onCustomSort","powerbi.visuals.DefaultVisualHostServices.getViewMode","powerbi.visuals.DefaultVisualHostServices.setWarnings","powerbi.visuals.DefaultVisualHostServices.setToolbar","powerbi.visuals.DefaultVisualHostServices.shouldRetainSelection","powerbi.visuals.DefaultVisualHostServices.geocoder","powerbi.visuals.DefaultVisualHostServices.promiseFactory","powerbi.visuals.DefaultVisualHostServices.analyzeFilter","powerbi.visuals.DefaultVisualHostServices.beautify","powerbi.visuals.DefaultVisualHostServices.describeUnit","powerbi.visuals.createInteractivityService","powerbi.visuals.appendClearCatcher","powerbi.visuals.isCategoryColumnSelected","powerbi.visuals.dataHasSelection","powerbi.visuals.InteractivityService","powerbi.visuals.InteractivityService.constructor","powerbi.visuals.InteractivityService.bind","powerbi.visuals.InteractivityService.clearSelection","powerbi.visuals.InteractivityService.applySelectionStateToData","powerbi.visuals.InteractivityService.hasSelection","powerbi.visuals.InteractivityService.legendHasSelection","powerbi.visuals.InteractivityService.labelsHasSelection","powerbi.visuals.InteractivityService.isSelectionModeInverted","powerbi.visuals.InteractivityService.setSelectionModeInverted","powerbi.visuals.InteractivityService.handleSelection","powerbi.visuals.InteractivityService.handleClearSelection","powerbi.visuals.InteractivityService.toggleSelectionModeInversion","powerbi.visuals.InteractivityService.persistSelectionFilter","powerbi.visuals.InteractivityService.setDefaultValueMode","powerbi.visuals.InteractivityService.isDefaultValueEnabled","powerbi.visuals.InteractivityService.renderAll","powerbi.visuals.InteractivityService.select","powerbi.visuals.InteractivityService.selectInverted","powerbi.visuals.InteractivityService.removeId","powerbi.visuals.InteractivityService.createChangeForFilterProperty","powerbi.visuals.InteractivityService.sendSelectionToHost","powerbi.visuals.InteractivityService.takeSelectionStateFromDataPoints","powerbi.visuals.InteractivityService.syncSelectionState","powerbi.visuals.InteractivityService.syncSelectionStateInverted","powerbi.visuals.InteractivityService.applyToAllSelectableDataPoints","powerbi.visuals.InteractivityService.updateSelectableDataPointsBySelectedIds","powerbi.visuals.InteractivityService.checkDatapointAgainstSelectedIds","powerbi.visuals.services","powerbi.visuals.services.createGeocoder","powerbi.visuals.services.isCategoryType","powerbi.visuals.services.GeocodeQuery","powerbi.visuals.services.GeocodeQuery.constructor","powerbi.visuals.services.GeocodeQuery.incrementCacheHit","powerbi.visuals.services.GeocodeQuery.getCacheHits","powerbi.visuals.services.GeocodeQuery.getBingEntity","powerbi.visuals.services.GeocodeQuery.getUrl","powerbi.visuals.services.GeocodeBoundaryQuery","powerbi.visuals.services.GeocodeBoundaryQuery.constructor","powerbi.visuals.services.GeocodeBoundaryQuery.getBingEntity","powerbi.visuals.services.GeocodeBoundaryQuery.getUrl","powerbi.visuals.services.mapLocalesForBing","powerbi.visuals.services.geocodeCore","powerbi.visuals.services.geocode","powerbi.visuals.services.geocodeBoundary","powerbi.visuals.services.dequeue","powerbi.visuals.services.makeRequest","powerbi.visuals.services.completeRequest","powerbi.visuals.services.getBestResultIndex","powerbi.visuals.services.reset","powerbi.visuals.services.createGeocodingCache","powerbi.visuals.services.GeocodingCache","powerbi.visuals.services.GeocodingCache.constructor","powerbi.visuals.services.GeocodingCache.getCoordinates","powerbi.visuals.services.GeocodingCache.registerCoordinates","powerbi.visuals.services.GeocodingCache.registerInMemory","powerbi.visuals.services.GeocodingCache.registerInStorage","powerbi.visuals.visualPluginFactory","powerbi.visuals.visualPluginFactory.VisualPluginService","powerbi.visuals.visualPluginFactory.VisualPluginService.constructor","powerbi.visuals.visualPluginFactory.VisualPluginService.getVisuals","powerbi.visuals.visualPluginFactory.VisualPluginService.getPlugin","powerbi.visuals.visualPluginFactory.VisualPluginService.capabilities","powerbi.visuals.visualPluginFactory.VisualPluginService.requireSandbox","powerbi.visuals.visualPluginFactory.VisualPluginService.removeAnyCustomVisuals","powerbi.visuals.visualPluginFactory.VisualPluginService.isCustomVisual","powerbi.visuals.visualPluginFactory.VisualPluginService.shouldDisableVisual","powerbi.visuals.visualPluginFactory.VisualPluginService.isScriptVisualQueryable","powerbi.visuals.visualPluginFactory.createPlugin","powerbi.visuals.visualPluginFactory.createDashboardPlugins","powerbi.visuals.visualPluginFactory.createMinervaPlugins","powerbi.visuals.visualPluginFactory.enablePivot","powerbi.visuals.visualPluginFactory.MinervaVisualPluginService","powerbi.visuals.visualPluginFactory.MinervaVisualPluginService.constructor","powerbi.visuals.visualPluginFactory.MinervaVisualPluginService.getVisuals","powerbi.visuals.visualPluginFactory.MinervaVisualPluginService.pushPluginIntoConveratbleTypes","powerbi.visuals.visualPluginFactory.MinervaVisualPluginService.addCustomVisualizations","powerbi.visuals.visualPluginFactory.MinervaVisualPluginService.getPlugin","powerbi.visuals.visualPluginFactory.MinervaVisualPluginService.requireSandbox","powerbi.visuals.visualPluginFactory.PlaygroundVisualPluginService","powerbi.visuals.visualPluginFactory.PlaygroundVisualPluginService.constructor","powerbi.visuals.visualPluginFactory.PlaygroundVisualPluginService.getVisuals","powerbi.visuals.visualPluginFactory.PlaygroundVisualPluginService.getPlugin","powerbi.visuals.visualPluginFactory.PlaygroundVisualPluginService.capabilities","powerbi.visuals.visualPluginFactory.DashboardPluginService","powerbi.visuals.visualPluginFactory.DashboardPluginService.constructor","powerbi.visuals.visualPluginFactory.DashboardPluginService.getPlugin","powerbi.visuals.visualPluginFactory.DashboardPluginService.requireSandbox","powerbi.visuals.visualPluginFactory.InsightsPluginService","powerbi.visuals.visualPluginFactory.InsightsPluginService.constructor","powerbi.visuals.visualPluginFactory.InsightsPluginService.getPlugin","powerbi.visuals.visualPluginFactory.InsightsPluginService.requireSandbox","powerbi.visuals.visualPluginFactory.MobileVisualPluginService","powerbi.visuals.visualPluginFactory.MobileVisualPluginService.constructor","powerbi.visuals.visualPluginFactory.MobileVisualPluginService.getPlugin","powerbi.visuals.visualPluginFactory.MobileVisualPluginService.getMapThrottleInterval","powerbi.visuals.visualPluginFactory.create","powerbi.visuals.visualPluginFactory.createVisualPluginService","powerbi.visuals.visualPluginFactory.createMinerva","powerbi.visuals.visualPluginFactory.createDashboard","powerbi.visuals.visualPluginFactory.createInsights","powerbi.visuals.visualPluginFactory.createMobile","powerbi.visuals.controls","powerbi.visuals.controls.fire","powerbi.visuals.controls.ScrollbarButton","powerbi.visuals.controls.ScrollbarButton.constructor","powerbi.visuals.controls.ScrollbarButton.element","powerbi.visuals.controls.ScrollbarButton.createView","powerbi.visuals.controls.ScrollbarButton.onMouseDown","powerbi.visuals.controls.ScrollbarButton.onMouseUp","powerbi.visuals.controls.ScrollbarButton.arrange","powerbi.visuals.controls.Scrollbar","powerbi.visuals.controls.Scrollbar.constructor","powerbi.visuals.controls.Scrollbar.scrollBy","powerbi.visuals.controls.Scrollbar.scrollUp","powerbi.visuals.controls.Scrollbar.scrollDown","powerbi.visuals.controls.Scrollbar.scrollPageUp","powerbi.visuals.controls.Scrollbar.scrollPageDown","powerbi.visuals.controls.Scrollbar.width","powerbi.visuals.controls.Scrollbar.height","powerbi.visuals.controls.Scrollbar.refresh","powerbi.visuals.controls.Scrollbar.element","powerbi.visuals.controls.Scrollbar.maxButton","powerbi.visuals.controls.Scrollbar.middleBar","powerbi.visuals.controls.Scrollbar._scrollSmallIncrement","powerbi.visuals.controls.Scrollbar.visible","powerbi.visuals.controls.Scrollbar.isInMouseCapture","powerbi.visuals.controls.Scrollbar.show","powerbi.visuals.controls.Scrollbar._getMouseOffset","powerbi.visuals.controls.Scrollbar._getOffsetXDelta","powerbi.visuals.controls.Scrollbar._getOffsetYDelta","powerbi.visuals.controls.Scrollbar._getOffsetXTouchDelta","powerbi.visuals.controls.Scrollbar._getOffsetYTouchDelta","powerbi.visuals.controls.Scrollbar.initTouch","powerbi.visuals.controls.Scrollbar.onTouchStart","powerbi.visuals.controls.Scrollbar.onTouchMove","powerbi.visuals.controls.Scrollbar.onTouchEnd","powerbi.visuals.controls.Scrollbar.onTouchMouseDown","powerbi.visuals.controls.Scrollbar._getOffsetTouchDelta","powerbi.visuals.controls.Scrollbar.onTouchMouseMove","powerbi.visuals.controls.Scrollbar.onTouchMouseUp","powerbi.visuals.controls.Scrollbar.registerElementForMouseWheelScrolling","powerbi.visuals.controls.Scrollbar.createView","powerbi.visuals.controls.Scrollbar.scrollTo","powerbi.visuals.controls.Scrollbar._scrollByPage","powerbi.visuals.controls.Scrollbar._getRunningSize","powerbi.visuals.controls.Scrollbar._getOffsetDelta","powerbi.visuals.controls.Scrollbar.scroll","powerbi.visuals.controls.Scrollbar.actualWidth","powerbi.visuals.controls.Scrollbar.actualHeight","powerbi.visuals.controls.Scrollbar.actualButtonWidth","powerbi.visuals.controls.Scrollbar.actualButtonHeight","powerbi.visuals.controls.Scrollbar.arrange","powerbi.visuals.controls.Scrollbar._calculateButtonWidth","powerbi.visuals.controls.Scrollbar._calculateButtonHeight","powerbi.visuals.controls.Scrollbar._getMinButtonAngle","powerbi.visuals.controls.Scrollbar._getMaxButtonAngle","powerbi.visuals.controls.Scrollbar._setMaxButtonPosition","powerbi.visuals.controls.Scrollbar.invalidateArrange","powerbi.visuals.controls.Scrollbar.onHoldBackgroundMouseDown","powerbi.visuals.controls.Scrollbar.onBackgroundMouseDown","powerbi.visuals.controls.Scrollbar.onBackgroundMouseUp","powerbi.visuals.controls.Scrollbar.getPinchZoomY","powerbi.visuals.controls.Scrollbar.onMiddleBarMouseDown","powerbi.visuals.controls.Scrollbar.onMiddleBarMouseMove","powerbi.visuals.controls.Scrollbar.onMiddleBarMouseUp","powerbi.visuals.controls.Scrollbar._getScreenContextualLeft","powerbi.visuals.controls.Scrollbar._getScreenContextualRight","powerbi.visuals.controls.Scrollbar.onMouseWheel","powerbi.visuals.controls.Scrollbar.onFireFoxMouseWheel","powerbi.visuals.controls.Scrollbar.mouseWheel","powerbi.visuals.controls.Scrollbar._getScreenMousePos","powerbi.visuals.controls.Scrollbar.addDocumentMouseUpEvent","powerbi.visuals.controls.Scrollbar.removeDocumentMouseUpEvent","powerbi.visuals.controls.Scrollbar.addDocumentMouseMoveEvent","powerbi.visuals.controls.Scrollbar.removeDocumentMouseMoveEvent","powerbi.visuals.controls.HorizontalScrollbar","powerbi.visuals.controls.HorizontalScrollbar.constructor","powerbi.visuals.controls.HorizontalScrollbar._calculateButtonWidth","powerbi.visuals.controls.HorizontalScrollbar._calculateButtonHeight","powerbi.visuals.controls.HorizontalScrollbar._getMinButtonAngle","powerbi.visuals.controls.HorizontalScrollbar._getMaxButtonAngle","powerbi.visuals.controls.HorizontalScrollbar._setMaxButtonPosition","powerbi.visuals.controls.HorizontalScrollbar.refresh","powerbi.visuals.controls.HorizontalScrollbar.show","powerbi.visuals.controls.HorizontalScrollbar._scrollByPage","powerbi.visuals.controls.HorizontalScrollbar._getRunningSize","powerbi.visuals.controls.HorizontalScrollbar._getOffsetDelta","powerbi.visuals.controls.HorizontalScrollbar._getOffsetTouchDelta","powerbi.visuals.controls.HorizontalScrollbar._getScreenContextualLeft","powerbi.visuals.controls.HorizontalScrollbar._getScreenContextualRight","powerbi.visuals.controls.HorizontalScrollbar._getScreenMousePos","powerbi.visuals.controls.VerticalScrollbar","powerbi.visuals.controls.VerticalScrollbar.constructor","powerbi.visuals.controls.VerticalScrollbar._calculateButtonWidth","powerbi.visuals.controls.VerticalScrollbar._calculateButtonHeight","powerbi.visuals.controls.VerticalScrollbar._getMinButtonAngle","powerbi.visuals.controls.VerticalScrollbar._getMaxButtonAngle","powerbi.visuals.controls.VerticalScrollbar._setMaxButtonPosition","powerbi.visuals.controls.VerticalScrollbar.refresh","powerbi.visuals.controls.VerticalScrollbar.show","powerbi.visuals.controls.VerticalScrollbar._scrollByPage","powerbi.visuals.controls.VerticalScrollbar._getRunningSize","powerbi.visuals.controls.VerticalScrollbar._getOffsetDelta","powerbi.visuals.controls.VerticalScrollbar._getOffsetTouchDelta","powerbi.visuals.controls.VerticalScrollbar._getScreenContextualLeft","powerbi.visuals.controls.VerticalScrollbar._getScreenContextualRight","powerbi.visuals.controls.VerticalScrollbar._getScreenMousePos","powerbi.visuals.controls.internal","powerbi.visuals.controls.internal.TablixResizer","powerbi.visuals.controls.internal.TablixResizer.constructor","powerbi.visuals.controls.internal.TablixResizer.addDocumentMouseUpEvent","powerbi.visuals.controls.internal.TablixResizer.removeDocumentMouseUpEvent","powerbi.visuals.controls.internal.TablixResizer.addDocumentMouseMoveEvent","powerbi.visuals.controls.internal.TablixResizer.removeDocumentMouseMoveEvent","powerbi.visuals.controls.internal.TablixResizer.getMouseCoordinates","powerbi.visuals.controls.internal.TablixResizer.getMouseCoordinateDelta","powerbi.visuals.controls.internal.TablixResizer.initialize","powerbi.visuals.controls.internal.TablixResizer.uninitialize","powerbi.visuals.controls.internal.TablixResizer.cell","powerbi.visuals.controls.internal.TablixResizer.element","powerbi.visuals.controls.internal.TablixResizer._hotSpot","powerbi.visuals.controls.internal.TablixResizer.onElementMouseDown","powerbi.visuals.controls.internal.TablixResizer.onElementMouseMove","powerbi.visuals.controls.internal.TablixResizer.onElementMouseOut","powerbi.visuals.controls.internal.TablixResizer.onElementMouseDoubleClick","powerbi.visuals.controls.internal.TablixResizer.onDocumentMouseMove","powerbi.visuals.controls.internal.TablixResizer.onDocumentMouseUp","powerbi.visuals.controls.internal.TablixDomResizer","powerbi.visuals.controls.internal.TablixDomResizer.constructor","powerbi.visuals.controls.internal.TablixDomResizer.cell","powerbi.visuals.controls.internal.TablixDomResizer._hotSpot","powerbi.visuals.controls.internal.TablixCellPresenter","powerbi.visuals.controls.internal.TablixCellPresenter.constructor","powerbi.visuals.controls.internal.TablixCellPresenter.initialize","powerbi.visuals.controls.internal.TablixCellPresenter.owner","powerbi.visuals.controls.internal.TablixCellPresenter.registerTableCell","powerbi.visuals.controls.internal.TablixCellPresenter.tableCell","powerbi.visuals.controls.internal.TablixCellPresenter.contentElement","powerbi.visuals.controls.internal.TablixCellPresenter.contentHost","powerbi.visuals.controls.internal.TablixCellPresenter.registerClickHandler","powerbi.visuals.controls.internal.TablixCellPresenter.unregisterClickHandler","powerbi.visuals.controls.internal.TablixCellPresenter.onContentWidthChanged","powerbi.visuals.controls.internal.TablixCellPresenter.onContentHeightChanged","powerbi.visuals.controls.internal.TablixCellPresenter.onColumnSpanChanged","powerbi.visuals.controls.internal.TablixCellPresenter.onRowSpanChanged","powerbi.visuals.controls.internal.TablixCellPresenter.onTextAlignChanged","powerbi.visuals.controls.internal.TablixCellPresenter.setColumnSeparator","powerbi.visuals.controls.internal.TablixCellPresenter.setFontColor","powerbi.visuals.controls.internal.TablixCellPresenter.setBackgroundColor","powerbi.visuals.controls.internal.TablixCellPresenter.setRowSeparator","powerbi.visuals.controls.internal.TablixCellPresenter.setOutline","powerbi.visuals.controls.internal.TablixCellPresenter.setLeadingSpace","powerbi.visuals.controls.internal.TablixCellPresenter.onClear","powerbi.visuals.controls.internal.TablixCellPresenter.onHorizontalScroll","powerbi.visuals.controls.internal.TablixCellPresenter.onVerticalScroll","powerbi.visuals.controls.internal.TablixCellPresenter.onInitializeScrolling","powerbi.visuals.controls.internal.TablixCellPresenter.setContentHostStyle","powerbi.visuals.controls.internal.TablixCellPresenter.setContainerStyle","powerbi.visuals.controls.internal.TablixCellPresenter.clearContainerStyle","powerbi.visuals.controls.internal.TablixCellPresenter.clearTextAndTooltip","powerbi.visuals.controls.internal.TablixCellPresenter.setTextAndTooltip","powerbi.visuals.controls.internal.TablixCellPresenter.enableHorizontalResize","powerbi.visuals.controls.internal.TablixCellPresenter.addNoMarginStyle","powerbi.visuals.controls.internal.TablixCellPresenter.disableDragResize","powerbi.visuals.controls.internal.TablixRowPresenter","powerbi.visuals.controls.internal.TablixRowPresenter.constructor","powerbi.visuals.controls.internal.TablixRowPresenter.initialize","powerbi.visuals.controls.internal.TablixRowPresenter.createCellPresenter","powerbi.visuals.controls.internal.TablixRowPresenter.registerRow","powerbi.visuals.controls.internal.TablixRowPresenter.onAppendCell","powerbi.visuals.controls.internal.TablixRowPresenter.onInsertCellBefore","powerbi.visuals.controls.internal.TablixRowPresenter.onRemoveCell","powerbi.visuals.controls.internal.TablixRowPresenter.getHeight","powerbi.visuals.controls.internal.TablixRowPresenter.getCellHeight","powerbi.visuals.controls.internal.TablixRowPresenter.getCellContentHeight","powerbi.visuals.controls.internal.TablixRowPresenter.tableRow","powerbi.visuals.controls.internal.DashboardRowPresenter","powerbi.visuals.controls.internal.DashboardRowPresenter.constructor","powerbi.visuals.controls.internal.DashboardRowPresenter.getCellHeight","powerbi.visuals.controls.internal.DashboardRowPresenter.getCellContentHeight","powerbi.visuals.controls.internal.CanvasRowPresenter","powerbi.visuals.controls.internal.CanvasRowPresenter.constructor","powerbi.visuals.controls.internal.CanvasRowPresenter.getCellHeight","powerbi.visuals.controls.internal.CanvasRowPresenter.getCellContentHeight","powerbi.visuals.controls.internal.TablixColumnPresenter","powerbi.visuals.controls.internal.TablixColumnPresenter.constructor","powerbi.visuals.controls.internal.TablixColumnPresenter.initialize","powerbi.visuals.controls.internal.TablixColumnPresenter.getWidth","powerbi.visuals.controls.internal.TablixColumnPresenter.getCellWidth","powerbi.visuals.controls.internal.TablixColumnPresenter.getCellContentWidth","powerbi.visuals.controls.internal.DashboardColumnPresenter","powerbi.visuals.controls.internal.DashboardColumnPresenter.constructor","powerbi.visuals.controls.internal.DashboardColumnPresenter.getCellWidth","powerbi.visuals.controls.internal.DashboardColumnPresenter.getCellContentWidth","powerbi.visuals.controls.internal.CanvasColumnPresenter","powerbi.visuals.controls.internal.CanvasColumnPresenter.constructor","powerbi.visuals.controls.internal.CanvasColumnPresenter.getCellWidth","powerbi.visuals.controls.internal.CanvasColumnPresenter.getCellContentWidth","powerbi.visuals.controls.internal.TablixGridPresenter","powerbi.visuals.controls.internal.TablixGridPresenter.constructor","powerbi.visuals.controls.internal.TablixGridPresenter.initialize","powerbi.visuals.controls.internal.TablixGridPresenter.getWidth","powerbi.visuals.controls.internal.TablixGridPresenter.getHeight","powerbi.visuals.controls.internal.TablixGridPresenter.getScreenToCssRatioX","powerbi.visuals.controls.internal.TablixGridPresenter.getScreenToCssRatioY","powerbi.visuals.controls.internal.TablixGridPresenter.createRowPresenter","powerbi.visuals.controls.internal.TablixGridPresenter.createColumnPresenter","powerbi.visuals.controls.internal.TablixGridPresenter.onAppendRow","powerbi.visuals.controls.internal.TablixGridPresenter.onInsertRowBefore","powerbi.visuals.controls.internal.TablixGridPresenter.onRemoveRow","powerbi.visuals.controls.internal.TablixGridPresenter.onAddFooterRow","powerbi.visuals.controls.internal.TablixGridPresenter.onClear","powerbi.visuals.controls.internal.TablixGridPresenter.onFillColumnsProportionallyChanged","powerbi.visuals.controls.internal.TablixGridPresenter.invokeColumnResizeCallBack","powerbi.visuals.controls.internal.TablixGridPresenter.getPersistedCellWidth","powerbi.visuals.controls.internal.DashboardTablixGridPresenter","powerbi.visuals.controls.internal.DashboardTablixGridPresenter.constructor","powerbi.visuals.controls.internal.DashboardTablixGridPresenter.createRowPresenter","powerbi.visuals.controls.internal.DashboardTablixGridPresenter.createColumnPresenter","powerbi.visuals.controls.internal.DashboardTablixGridPresenter.sizeComputationManager","powerbi.visuals.controls.internal.DashboardTablixGridPresenter.getWidth","powerbi.visuals.controls.internal.DashboardTablixGridPresenter.getHeight","powerbi.visuals.controls.internal.CanvasTablixGridPresenter","powerbi.visuals.controls.internal.CanvasTablixGridPresenter.constructor","powerbi.visuals.controls.internal.CanvasTablixGridPresenter.createRowPresenter","powerbi.visuals.controls.internal.CanvasTablixGridPresenter.createColumnPresenter","powerbi.visuals.controls.internal.CanvasTablixGridPresenter.getWidth","powerbi.visuals.controls.internal.CanvasTablixGridPresenter.getHeight","powerbi.visuals.controls.internal.TablixDimensionRealizationManager","powerbi.visuals.controls.internal.TablixDimensionRealizationManager.constructor","powerbi.visuals.controls.internal.TablixDimensionRealizationManager._getOwner","powerbi.visuals.controls.internal.TablixDimensionRealizationManager.binder","powerbi.visuals.controls.internal.TablixDimensionRealizationManager.adjustmentFactor","powerbi.visuals.controls.internal.TablixDimensionRealizationManager.itemsToRealizeCount","powerbi.visuals.controls.internal.TablixDimensionRealizationManager.itemsEstimatedContextualWidth","powerbi.visuals.controls.internal.TablixDimensionRealizationManager.onStartRenderingIteration","powerbi.visuals.controls.internal.TablixDimensionRealizationManager.onEndRenderingIteration","powerbi.visuals.controls.internal.TablixDimensionRealizationManager.onEndRenderingSession","powerbi.visuals.controls.internal.TablixDimensionRealizationManager.onCornerCellRealized","powerbi.visuals.controls.internal.TablixDimensionRealizationManager.onHeaderRealized","powerbi.visuals.controls.internal.TablixDimensionRealizationManager.needsToRealize","powerbi.visuals.controls.internal.TablixDimensionRealizationManager._getEstimatedItemsToRealizeCount","powerbi.visuals.controls.internal.TablixDimensionRealizationManager._getSizeAdjustment","powerbi.visuals.controls.internal.RowRealizationManager","powerbi.visuals.controls.internal.RowRealizationManager.constructor","powerbi.visuals.controls.internal.RowRealizationManager.owner","powerbi.visuals.controls.internal.RowRealizationManager._getOwner","powerbi.visuals.controls.internal.RowRealizationManager._getEstimatedItemsToRealizeCount","powerbi.visuals.controls.internal.RowRealizationManager.estimateRowsToRealizeCount","powerbi.visuals.controls.internal.RowRealizationManager.getEstimatedRowHierarchyWidth","powerbi.visuals.controls.internal.RowRealizationManager.updateRowHiearchyEstimatedWidth","powerbi.visuals.controls.internal.RowRealizationManager._getSizeAdjustment","powerbi.visuals.controls.internal.ColumnRealizationManager","powerbi.visuals.controls.internal.ColumnRealizationManager.constructor","powerbi.visuals.controls.internal.ColumnRealizationManager.owner","powerbi.visuals.controls.internal.ColumnRealizationManager._getOwner","powerbi.visuals.controls.internal.ColumnRealizationManager._getEstimatedItemsToRealizeCount","powerbi.visuals.controls.internal.ColumnRealizationManager.rowRealizationManager","powerbi.visuals.controls.internal.ColumnRealizationManager.getEstimatedRowHierarchyWidth","powerbi.visuals.controls.internal.ColumnRealizationManager.estimateColumnsToRealizeCount","powerbi.visuals.controls.internal.ColumnRealizationManager._getSizeAdjustment","powerbi.visuals.controls.internal.RowWidths","powerbi.visuals.controls.internal.RowWidths.constructor","powerbi.visuals.controls.internal.RowWidth","powerbi.visuals.controls.internal.RowWidth.constructor","powerbi.visuals.controls.internal.TablixCell","powerbi.visuals.controls.internal.TablixCell.constructor","powerbi.visuals.controls.internal.TablixCell.colSpan","powerbi.visuals.controls.internal.TablixCell.rowSpan","powerbi.visuals.controls.internal.TablixCell.textAlign","powerbi.visuals.controls.internal.TablixCell.horizontalOffset","powerbi.visuals.controls.internal.TablixCell.verticalOffset","powerbi.visuals.controls.internal.TablixCell.isScrollable","powerbi.visuals.controls.internal.TablixCell.clear","powerbi.visuals.controls.internal.TablixCell.initializeScrolling","powerbi.visuals.controls.internal.TablixCell.prepare","powerbi.visuals.controls.internal.TablixCell.scrollVertically","powerbi.visuals.controls.internal.TablixCell.scrollHorizontally","powerbi.visuals.controls.internal.TablixCell.setContentWidth","powerbi.visuals.controls.internal.TablixCell.setContentHeight","powerbi.visuals.controls.internal.TablixCell.enableHorizontalResize","powerbi.visuals.controls.internal.TablixColumn","powerbi.visuals.controls.internal.TablixColumn.constructor","powerbi.visuals.controls.internal.TablixColumn.initialize","powerbi.visuals.controls.internal.TablixColumn.owner","powerbi.visuals.controls.internal.TablixColumn.getType","powerbi.visuals.controls.internal.TablixColumn.getColumnHeadersOrCorners","powerbi.visuals.controls.internal.TablixColumn.columnHeadersOrCornersEqual","powerbi.visuals.controls.internal.TablixColumn.itemType","powerbi.visuals.controls.internal.TablixColumn.getLeafItem","powerbi.visuals.controls.internal.TablixColumn.columnHeaderOrCornerEquals","powerbi.visuals.controls.internal.TablixColumn.OnLeafRealized","powerbi.visuals.controls.internal.TablixColumn.clearSpanningCellsWidth","powerbi.visuals.controls.internal.TablixColumn.addCornerCell","powerbi.visuals.controls.internal.TablixColumn.addRowHeader","powerbi.visuals.controls.internal.TablixColumn.addColumnHeader","powerbi.visuals.controls.internal.TablixColumn.addBodyCell","powerbi.visuals.controls.internal.TablixColumn.footer","powerbi.visuals.controls.internal.TablixColumn.resize","powerbi.visuals.controls.internal.TablixColumn.fixSize","powerbi.visuals.controls.internal.TablixColumn.clearSize","powerbi.visuals.controls.internal.TablixColumn.getContentContextualWidth","powerbi.visuals.controls.internal.TablixColumn.getCellIContentContextualWidth","powerbi.visuals.controls.internal.TablixColumn.getCellSpanningWidthWithScrolling","powerbi.visuals.controls.internal.TablixColumn.getScrollingOffset","powerbi.visuals.controls.internal.TablixColumn.getContextualWidth","powerbi.visuals.controls.internal.TablixColumn.calculateSize","powerbi.visuals.controls.internal.TablixColumn.setAligningContextualWidth","powerbi.visuals.controls.internal.TablixColumn.getAligningContextualWidth","powerbi.visuals.controls.internal.TablixColumn.setContentWidth","powerbi.visuals.controls.internal.TablixColumn.getTablixCell","powerbi.visuals.controls.internal.TablixColumn.getIndex","powerbi.visuals.controls.internal.TablixColumn.getHeaders","powerbi.visuals.controls.internal.TablixColumn.getOtherDimensionHeaders","powerbi.visuals.controls.internal.TablixColumn.getCellContextualSpan","powerbi.visuals.controls.internal.TablixColumn.getOtherDimensionOwner","powerbi.visuals.controls.internal.TablixRow","powerbi.visuals.controls.internal.TablixRow.constructor","powerbi.visuals.controls.internal.TablixRow.initialize","powerbi.visuals.controls.internal.TablixRow.presenter","powerbi.visuals.controls.internal.TablixRow.owner","powerbi.visuals.controls.internal.TablixRow.releaseUnusedCells","powerbi.visuals.controls.internal.TablixRow.releaseAllCells","powerbi.visuals.controls.internal.TablixRow.releaseCells","powerbi.visuals.controls.internal.TablixRow.moveScrollableCellsToEnd","powerbi.visuals.controls.internal.TablixRow.moveScrollableCellsToStart","powerbi.visuals.controls.internal.TablixRow.getOrCreateCornerCell","powerbi.visuals.controls.internal.TablixRow.getOrCreateRowHeader","powerbi.visuals.controls.internal.TablixRow.getOrCreateColumnHeader","powerbi.visuals.controls.internal.TablixRow.getOrCreateBodyCell","powerbi.visuals.controls.internal.TablixRow.getOrCreateFooterRowHeader","powerbi.visuals.controls.internal.TablixRow.getOrCreateFooterBodyCell","powerbi.visuals.controls.internal.TablixRow.getRowHeaderLeafIndex","powerbi.visuals.controls.internal.TablixRow.getAllocatedCellAt","powerbi.visuals.controls.internal.TablixRow.moveCellsBy","powerbi.visuals.controls.internal.TablixRow.getRealizedCellCount","powerbi.visuals.controls.internal.TablixRow.getRealizedHeadersCount","powerbi.visuals.controls.internal.TablixRow.getRealizedHeaderAt","powerbi.visuals.controls.internal.TablixRow.getTablixCell","powerbi.visuals.controls.internal.TablixRow.getOrCreateEmptySpaceCell","powerbi.visuals.controls.internal.TablixRow.createCell","powerbi.visuals.controls.internal.TablixRow.getOrCreateCell","powerbi.visuals.controls.internal.TablixRow.resize","powerbi.visuals.controls.internal.TablixRow.fixSize","powerbi.visuals.controls.internal.TablixRow.getContentContextualWidth","powerbi.visuals.controls.internal.TablixRow.getCellIContentContextualWidth","powerbi.visuals.controls.internal.TablixRow.getCellSpanningHeight","powerbi.visuals.controls.internal.TablixRow.getContextualWidth","powerbi.visuals.controls.internal.TablixRow.sizeFixed","powerbi.visuals.controls.internal.TablixRow.calculateSize","powerbi.visuals.controls.internal.TablixRow.setAligningContextualWidth","powerbi.visuals.controls.internal.TablixRow.getAligningContextualWidth","powerbi.visuals.controls.internal.TablixRow.setContentHeight","powerbi.visuals.controls.internal.TablixRow.getIndex","powerbi.visuals.controls.internal.TablixRow.getHeaders","powerbi.visuals.controls.internal.TablixRow.getOtherDimensionHeaders","powerbi.visuals.controls.internal.TablixRow.getCellContextualSpan","powerbi.visuals.controls.internal.TablixRow.getOtherDimensionOwner","powerbi.visuals.controls.internal.TablixGrid","powerbi.visuals.controls.internal.TablixGrid.constructor","powerbi.visuals.controls.internal.TablixGrid.initialize","powerbi.visuals.controls.internal.TablixGrid.owner","powerbi.visuals.controls.internal.TablixGrid.fillColumnsProportionally","powerbi.visuals.controls.internal.TablixGrid.realizedColumns","powerbi.visuals.controls.internal.TablixGrid.realizedRows","powerbi.visuals.controls.internal.TablixGrid.footerRow","powerbi.visuals.controls.internal.TablixGrid.emptySpaceHeaderCell","powerbi.visuals.controls.internal.TablixGrid.emptySpaceFooterCell","powerbi.visuals.controls.internal.TablixGrid.ShowEmptySpaceCells","powerbi.visuals.controls.internal.TablixGrid.HideEmptySpaceCells","powerbi.visuals.controls.internal.TablixGrid.onStartRenderingSession","powerbi.visuals.controls.internal.TablixGrid.onStartRenderingIteration","powerbi.visuals.controls.internal.TablixGrid.onEndRenderingIteration","powerbi.visuals.controls.internal.TablixGrid.getOrCreateRow","powerbi.visuals.controls.internal.TablixGrid.getOrCreateFootersRow","powerbi.visuals.controls.internal.TablixGrid.moveRowsToEnd","powerbi.visuals.controls.internal.TablixGrid.moveRowsToStart","powerbi.visuals.controls.internal.TablixGrid.moveColumnsToEnd","powerbi.visuals.controls.internal.TablixGrid.moveColumnsToStart","powerbi.visuals.controls.internal.TablixGrid.getOrCreateColumn","powerbi.visuals.controls.internal.TablixGrid.initializeColumns","powerbi.visuals.controls.internal.TablixGrid.clearColumns","powerbi.visuals.controls.internal.TablixGrid.initializeRows","powerbi.visuals.controls.internal.TablixGrid.clearRows","powerbi.visuals.controls.internal.TablixGrid.getWidth","powerbi.visuals.controls.internal.TablixGrid.getHeight","powerbi.visuals.controls.internal.SizeComputationManager","powerbi.visuals.controls.internal.SizeComputationManager.constructor","powerbi.visuals.controls.internal.SizeComputationManager.visibleWidth","powerbi.visuals.controls.internal.SizeComputationManager.visibleHeight","powerbi.visuals.controls.internal.SizeComputationManager.gridWidth","powerbi.visuals.controls.internal.SizeComputationManager.gridHeight","powerbi.visuals.controls.internal.SizeComputationManager.rowHeight","powerbi.visuals.controls.internal.SizeComputationManager.cellWidth","powerbi.visuals.controls.internal.SizeComputationManager.cellHeight","powerbi.visuals.controls.internal.SizeComputationManager.contentWidth","powerbi.visuals.controls.internal.SizeComputationManager.contentHeight","powerbi.visuals.controls.internal.SizeComputationManager.updateColumnCount","powerbi.visuals.controls.internal.SizeComputationManager.updateRowHeight","powerbi.visuals.controls.internal.SizeComputationManager.updateScalingFactor","powerbi.visuals.controls.internal.SizeComputationManager.updateViewport","powerbi.visuals.controls.internal.SizeComputationManager.computeColumnWidth","powerbi.visuals.controls.internal.SizeComputationManager.computeColumnHeight","powerbi.visuals.controls.internal.SizeComputationManager.fitToColumnCount","powerbi.visuals.controls.internal.DimensionLayoutManager","powerbi.visuals.controls.internal.DimensionLayoutManager.constructor","powerbi.visuals.controls.internal.DimensionLayoutManager.owner","powerbi.visuals.controls.internal.DimensionLayoutManager.realizationManager","powerbi.visuals.controls.internal.DimensionLayoutManager.fixedSizeEnabled","powerbi.visuals.controls.internal.DimensionLayoutManager.onCornerCellRealized","powerbi.visuals.controls.internal.DimensionLayoutManager.onHeaderRealized","powerbi.visuals.controls.internal.DimensionLayoutManager.needsToRealize","powerbi.visuals.controls.internal.DimensionLayoutManager.getVisibleSizeRatio","powerbi.visuals.controls.internal.DimensionLayoutManager.alignToEnd","powerbi.visuals.controls.internal.DimensionLayoutManager.done","powerbi.visuals.controls.internal.DimensionLayoutManager._requiresMeasure","powerbi.visuals.controls.internal.DimensionLayoutManager.startScrollingSession","powerbi.visuals.controls.internal.DimensionLayoutManager.endScrollingSession","powerbi.visuals.controls.internal.DimensionLayoutManager.isScrolling","powerbi.visuals.controls.internal.DimensionLayoutManager.isResizing","powerbi.visuals.controls.internal.DimensionLayoutManager.getOtherHierarchyContextualHeight","powerbi.visuals.controls.internal.DimensionLayoutManager._isAutoSized","powerbi.visuals.controls.internal.DimensionLayoutManager.onStartRenderingSession","powerbi.visuals.controls.internal.DimensionLayoutManager.onEndRenderingSession","powerbi.visuals.controls.internal.DimensionLayoutManager._sendDimensionsToControl","powerbi.visuals.controls.internal.DimensionLayoutManager.measureEnabled","powerbi.visuals.controls.internal.DimensionLayoutManager.getFooterContextualWidth","powerbi.visuals.controls.internal.DimensionLayoutManager.onStartRenderingIteration","powerbi.visuals.controls.internal.DimensionLayoutManager.allItemsRealized","powerbi.visuals.controls.internal.DimensionLayoutManager.onEndRenderingIteration","powerbi.visuals.controls.internal.DimensionLayoutManager.getScrollDeltaWithinPage","powerbi.visuals.controls.internal.DimensionLayoutManager.swapElements","powerbi.visuals.controls.internal.DimensionLayoutManager._getRealizedItems","powerbi.visuals.controls.internal.DimensionLayoutManager.getRealizedItemsCount","powerbi.visuals.controls.internal.DimensionLayoutManager._moveElementsToBottom","powerbi.visuals.controls.internal.DimensionLayoutManager._moveElementsToTop","powerbi.visuals.controls.internal.DimensionLayoutManager.isScrollingWithinPage","powerbi.visuals.controls.internal.DimensionLayoutManager.getGridContextualWidth","powerbi.visuals.controls.internal.DimensionLayoutManager.updateScrollbar","powerbi.visuals.controls.internal.DimensionLayoutManager.getViewSize","powerbi.visuals.controls.internal.DimensionLayoutManager.isScrollableHeader","powerbi.visuals.controls.internal.DimensionLayoutManager.reachedEnd","powerbi.visuals.controls.internal.DimensionLayoutManager.scrollBackwardToFill","powerbi.visuals.controls.internal.DimensionLayoutManager.getItemContextualWidth","powerbi.visuals.controls.internal.DimensionLayoutManager.getItemContextualWidthWithScrolling","powerbi.visuals.controls.internal.DimensionLayoutManager.getSizeWithScrolling","powerbi.visuals.controls.internal.DimensionLayoutManager.getGridContextualWidthFromItems","powerbi.visuals.controls.internal.DimensionLayoutManager.getMeaurementError","powerbi.visuals.controls.internal.DimensionLayoutManager.scrollForwardToAlignEnd","powerbi.visuals.controls.internal.DimensionLayoutManager.dimension","powerbi.visuals.controls.internal.DimensionLayoutManager.otherLayoutManager","powerbi.visuals.controls.internal.DimensionLayoutManager.contextualWidthToFill","powerbi.visuals.controls.internal.DimensionLayoutManager.getGridScale","powerbi.visuals.controls.internal.DimensionLayoutManager.otherScrollbarContextualWidth","powerbi.visuals.controls.internal.DimensionLayoutManager.getActualContextualWidth","powerbi.visuals.controls.internal.DimensionLayoutManager.canScroll","powerbi.visuals.controls.internal.DimensionLayoutManager.calculateSizes","powerbi.visuals.controls.internal.DimensionLayoutManager._calculateSize","powerbi.visuals.controls.internal.DimensionLayoutManager.calculateContextualWidths","powerbi.visuals.controls.internal.DimensionLayoutManager.calculateSpans","powerbi.visuals.controls.internal.DimensionLayoutManager.updateNonScrollableItemsSpans","powerbi.visuals.controls.internal.DimensionLayoutManager.updateScrollableItemsSpans","powerbi.visuals.controls.internal.DimensionLayoutManager.fixSizes","powerbi.visuals.controls.internal.DimensionLayoutManager.updateSpans","powerbi.visuals.controls.internal.DimensionLayoutManager.updateLastChildSize","powerbi.visuals.controls.internal.ResizeState","powerbi.visuals.controls.internal.ResizeState.constructor","powerbi.visuals.controls.internal.ColumnLayoutManager","powerbi.visuals.controls.internal.ColumnLayoutManager.constructor","powerbi.visuals.controls.internal.ColumnLayoutManager.dimension","powerbi.visuals.controls.internal.ColumnLayoutManager.isResizing","powerbi.visuals.controls.internal.ColumnLayoutManager.fillProportionally","powerbi.visuals.controls.internal.ColumnLayoutManager.getGridScale","powerbi.visuals.controls.internal.ColumnLayoutManager.otherScrollbarContextualWidth","powerbi.visuals.controls.internal.ColumnLayoutManager._getRealizedItems","powerbi.visuals.controls.internal.ColumnLayoutManager._moveElementsToBottom","powerbi.visuals.controls.internal.ColumnLayoutManager._moveElementsToTop","powerbi.visuals.controls.internal.ColumnLayoutManager._requiresMeasure","powerbi.visuals.controls.internal.ColumnLayoutManager.getGridContextualWidth","powerbi.visuals.controls.internal.ColumnLayoutManager.getFirstVisibleColumn","powerbi.visuals.controls.internal.ColumnLayoutManager._isAutoSized","powerbi.visuals.controls.internal.ColumnLayoutManager.applyScrolling","powerbi.visuals.controls.internal.ColumnLayoutManager.scroll","powerbi.visuals.controls.internal.ColumnLayoutManager.scrollCells","powerbi.visuals.controls.internal.ColumnLayoutManager.scrollBodyCells","powerbi.visuals.controls.internal.ColumnLayoutManager.onStartResize","powerbi.visuals.controls.internal.ColumnLayoutManager.onResize","powerbi.visuals.controls.internal.ColumnLayoutManager.onEndResize","powerbi.visuals.controls.internal.ColumnLayoutManager.onReset","powerbi.visuals.controls.internal.ColumnLayoutManager.updateItemToResizeState","powerbi.visuals.controls.internal.ColumnLayoutManager.performResizing","powerbi.visuals.controls.internal.ColumnLayoutManager._sendDimensionsToControl","powerbi.visuals.controls.internal.ColumnLayoutManager.getEstimatedHeaderWidth","powerbi.visuals.controls.internal.ColumnLayoutManager.getEstimatedBodyCellWidth","powerbi.visuals.controls.internal.DashboardColumnLayoutManager","powerbi.visuals.controls.internal.DashboardColumnLayoutManager.constructor","powerbi.visuals.controls.internal.DashboardColumnLayoutManager.getEstimatedHeaderWidth","powerbi.visuals.controls.internal.DashboardColumnLayoutManager.getEstimatedBodyCellWidth","powerbi.visuals.controls.internal.DashboardColumnLayoutManager.canScroll","powerbi.visuals.controls.internal.DashboardColumnLayoutManager._calculateSize","powerbi.visuals.controls.internal.DashboardColumnLayoutManager.ignoreColumn","powerbi.visuals.controls.internal.CanvasColumnLayoutManager","powerbi.visuals.controls.internal.CanvasColumnLayoutManager.constructor","powerbi.visuals.controls.internal.CanvasColumnLayoutManager.getEstimatedHeaderWidth","powerbi.visuals.controls.internal.CanvasColumnLayoutManager.getEstimatedBodyCellWidth","powerbi.visuals.controls.internal.CanvasColumnLayoutManager.calculateContextualWidths","powerbi.visuals.controls.internal.CanvasColumnLayoutManager.canScroll","powerbi.visuals.controls.internal.CanvasColumnLayoutManager._calculateSize","powerbi.visuals.controls.internal.RowLayoutManager","powerbi.visuals.controls.internal.RowLayoutManager.constructor","powerbi.visuals.controls.internal.RowLayoutManager.dimension","powerbi.visuals.controls.internal.RowLayoutManager.getGridScale","powerbi.visuals.controls.internal.RowLayoutManager.otherScrollbarContextualWidth","powerbi.visuals.controls.internal.RowLayoutManager.startScrollingSession","powerbi.visuals.controls.internal.RowLayoutManager._getRealizedItems","powerbi.visuals.controls.internal.RowLayoutManager._moveElementsToBottom","powerbi.visuals.controls.internal.RowLayoutManager._moveElementsToTop","powerbi.visuals.controls.internal.RowLayoutManager._requiresMeasure","powerbi.visuals.controls.internal.RowLayoutManager.getGridContextualWidth","powerbi.visuals.controls.internal.RowLayoutManager.getFirstVisibleRow","powerbi.visuals.controls.internal.RowLayoutManager._isAutoSized","powerbi.visuals.controls.internal.RowLayoutManager.applyScrolling","powerbi.visuals.controls.internal.RowLayoutManager.scroll","powerbi.visuals.controls.internal.RowLayoutManager.scrollCells","powerbi.visuals.controls.internal.RowLayoutManager.getFooterContextualWidth","powerbi.visuals.controls.internal.RowLayoutManager.calculateContextualWidths","powerbi.visuals.controls.internal.RowLayoutManager.fixSizes","powerbi.visuals.controls.internal.RowLayoutManager._sendDimensionsToControl","powerbi.visuals.controls.internal.RowLayoutManager.getEstimatedHeaderWidth","powerbi.visuals.controls.internal.DashboardRowLayoutManager","powerbi.visuals.controls.internal.DashboardRowLayoutManager.constructor","powerbi.visuals.controls.internal.DashboardRowLayoutManager.getEstimatedHeaderWidth","powerbi.visuals.controls.internal.DashboardRowLayoutManager.canScroll","powerbi.visuals.controls.internal.DashboardRowLayoutManager._calculateSize","powerbi.visuals.controls.internal.DashboardRowLayoutManager.getHeaderWidth","powerbi.visuals.controls.internal.CanvasRowLayoutManager","powerbi.visuals.controls.internal.CanvasRowLayoutManager.constructor","powerbi.visuals.controls.internal.CanvasRowLayoutManager.getEstimatedHeaderWidth","powerbi.visuals.controls.internal.CanvasRowLayoutManager.canScroll","powerbi.visuals.controls.internal.CanvasRowLayoutManager._calculateSize","powerbi.visuals.controls.internal.TablixLayoutManager","powerbi.visuals.controls.internal.TablixLayoutManager.constructor","powerbi.visuals.controls.internal.TablixLayoutManager.initialize","powerbi.visuals.controls.internal.TablixLayoutManager.owner","powerbi.visuals.controls.internal.TablixLayoutManager.binder","powerbi.visuals.controls.internal.TablixLayoutManager.columnWidthsToPersist","powerbi.visuals.controls.internal.TablixLayoutManager.getTablixClassName","powerbi.visuals.controls.internal.TablixLayoutManager.getLayoutKind","powerbi.visuals.controls.internal.TablixLayoutManager.getOrCreateColumnHeader","powerbi.visuals.controls.internal.TablixLayoutManager.getOrCreateRowHeader","powerbi.visuals.controls.internal.TablixLayoutManager.getOrCreateCornerCell","powerbi.visuals.controls.internal.TablixLayoutManager.getOrCreateBodyCell","powerbi.visuals.controls.internal.TablixLayoutManager.getOrCreateFooterBodyCell","powerbi.visuals.controls.internal.TablixLayoutManager.getOrCreateFooterRowHeader","powerbi.visuals.controls.internal.TablixLayoutManager.getVisibleWidth","powerbi.visuals.controls.internal.TablixLayoutManager.getVisibleHeight","powerbi.visuals.controls.internal.TablixLayoutManager.updateColumnCount","powerbi.visuals.controls.internal.TablixLayoutManager.updateViewport","powerbi.visuals.controls.internal.TablixLayoutManager.getEstimatedRowHeight","powerbi.visuals.controls.internal.TablixLayoutManager.getCellWidth","powerbi.visuals.controls.internal.TablixLayoutManager.getContentWidth","powerbi.visuals.controls.internal.TablixLayoutManager.adjustContentSize","powerbi.visuals.controls.internal.TablixLayoutManager.alignRowHeaderCells","powerbi.visuals.controls.internal.TablixLayoutManager.grid","powerbi.visuals.controls.internal.TablixLayoutManager.rowLayoutManager","powerbi.visuals.controls.internal.TablixLayoutManager.columnLayoutManager","powerbi.visuals.controls.internal.TablixLayoutManager.showEmptySpaceHeader","powerbi.visuals.controls.internal.TablixLayoutManager.onStartRenderingSession","powerbi.visuals.controls.internal.TablixLayoutManager.onEndRenderingSession","powerbi.visuals.controls.internal.TablixLayoutManager.onStartRenderingIteration","powerbi.visuals.controls.internal.TablixLayoutManager.onEndRenderingIteration","powerbi.visuals.controls.internal.TablixLayoutManager.onCornerCellRealized","powerbi.visuals.controls.internal.TablixLayoutManager.onRowHeaderRealized","powerbi.visuals.controls.internal.TablixLayoutManager.onRowHeaderFooterRealized","powerbi.visuals.controls.internal.TablixLayoutManager.onColumnHeaderRealized","powerbi.visuals.controls.internal.TablixLayoutManager.onBodyCellRealized","powerbi.visuals.controls.internal.TablixLayoutManager.onBodyCellFooterRealized","powerbi.visuals.controls.internal.TablixLayoutManager.setAllowHeaderResize","powerbi.visuals.controls.internal.TablixLayoutManager.enableCellHorizontalResize","powerbi.visuals.controls.internal.TablixLayoutManager.getEstimatedTextWidth","powerbi.visuals.controls.internal.TablixLayoutManager.measureSampleText","powerbi.visuals.controls.internal.DashboardTablixLayoutManager","powerbi.visuals.controls.internal.DashboardTablixLayoutManager.constructor","powerbi.visuals.controls.internal.DashboardTablixLayoutManager.createLayoutManager","powerbi.visuals.controls.internal.DashboardTablixLayoutManager.getTablixClassName","powerbi.visuals.controls.internal.DashboardTablixLayoutManager.getLayoutKind","powerbi.visuals.controls.internal.DashboardTablixLayoutManager.showEmptySpaceHeader","powerbi.visuals.controls.internal.DashboardTablixLayoutManager.measureSampleText","powerbi.visuals.controls.internal.DashboardTablixLayoutManager.getVisibleWidth","powerbi.visuals.controls.internal.DashboardTablixLayoutManager.getVisibleHeight","powerbi.visuals.controls.internal.DashboardTablixLayoutManager.getCellWidth","powerbi.visuals.controls.internal.DashboardTablixLayoutManager.getContentWidth","powerbi.visuals.controls.internal.DashboardTablixLayoutManager.getEstimatedTextWidth","powerbi.visuals.controls.internal.DashboardTablixLayoutManager.adjustContentSize","powerbi.visuals.controls.internal.DashboardTablixLayoutManager.updateColumnCount","powerbi.visuals.controls.internal.DashboardTablixLayoutManager.updateViewport","powerbi.visuals.controls.internal.DashboardTablixLayoutManager.getEstimatedRowHeight","powerbi.visuals.controls.internal.CanvasTablixLayoutManager","powerbi.visuals.controls.internal.CanvasTablixLayoutManager.constructor","powerbi.visuals.controls.internal.CanvasTablixLayoutManager.createLayoutManager","powerbi.visuals.controls.internal.CanvasTablixLayoutManager.getTablixClassName","powerbi.visuals.controls.internal.CanvasTablixLayoutManager.getLayoutKind","powerbi.visuals.controls.internal.CanvasTablixLayoutManager.measureSampleText","powerbi.visuals.controls.internal.CanvasTablixLayoutManager.showEmptySpaceHeader","powerbi.visuals.controls.internal.CanvasTablixLayoutManager.getVisibleWidth","powerbi.visuals.controls.internal.CanvasTablixLayoutManager.getVisibleHeight","powerbi.visuals.controls.internal.CanvasTablixLayoutManager.getCellWidth","powerbi.visuals.controls.internal.CanvasTablixLayoutManager.getContentWidth","powerbi.visuals.controls.internal.CanvasTablixLayoutManager.getEstimatedTextWidth","powerbi.visuals.controls.internal.CanvasTablixLayoutManager.updateColumnCount","powerbi.visuals.controls.internal.CanvasTablixLayoutManager.updateViewport","powerbi.visuals.controls.internal.CanvasTablixLayoutManager.getEstimatedRowHeight","powerbi.visuals.controls.HTMLElementUtils","powerbi.visuals.controls.HTMLElementUtils.clearChildren","powerbi.visuals.controls.HTMLElementUtils.setElementTop","powerbi.visuals.controls.HTMLElementUtils.setElementLeft","powerbi.visuals.controls.HTMLElementUtils.setElementHeight","powerbi.visuals.controls.HTMLElementUtils.setElementWidth","powerbi.visuals.controls.HTMLElementUtils.getElementWidth","powerbi.visuals.controls.HTMLElementUtils.getElementHeight","powerbi.visuals.controls.HTMLElementUtils.isAutoSize","powerbi.visuals.controls.HTMLElementUtils.getAccumulatedScale","powerbi.visuals.controls.HTMLElementUtils.getScale","powerbi.visuals.controls.internal.TablixUtils","powerbi.visuals.controls.internal.TablixUtils.createTable","powerbi.visuals.controls.internal.TablixUtils.createDiv","powerbi.visuals.controls.internal.TablixUtils.appendATagToBodyCell","powerbi.visuals.controls.internal.TablixUtils.appendImgTagToBodyCell","powerbi.visuals.controls.internal.TablixUtils.createKpiDom","powerbi.visuals.controls.internal.TablixUtils.appendSortImageToColumnHeader","powerbi.visuals.controls.internal.TablixUtils.createSortImageHTML","powerbi.visuals.controls.internal.TablixUtils.isValidStatusGraphic","powerbi.visuals.controls.internal.TablixUtils.setEnumeration","powerbi.visuals.controls.internal.TablixUtils.enumerateGeneralOptions","powerbi.visuals.controls.internal.TablixUtils.enumerateColumnsOptions","powerbi.visuals.controls.internal.TablixUtils.enumerateHeaderOptions","powerbi.visuals.controls.internal.TablixUtils.enumerateRowsOptions","powerbi.visuals.controls.internal.TablixUtils.enumerateValuesOptions","powerbi.visuals.controls.internal.TablixUtils.enumerateTotalsOptions","powerbi.visuals.controls.internal.TablixUtils.getTableFormattingProperties","powerbi.visuals.controls.internal.TablixUtils.getMatrixFormattingProperties","powerbi.visuals.controls.internal.TablixUtils.shouldShowTableTotals","powerbi.visuals.controls.internal.TablixUtils.shouldAutoSizeColumnWidth","powerbi.visuals.controls.internal.TablixUtils.getTextSize","powerbi.visuals.controls.internal.TablixUtils.getTextSizeInPx","powerbi.visuals.controls.internal.TablixUtils.shouldShowRowSubtotals","powerbi.visuals.controls.internal.TablixUtils.shouldShowColumnSubtotals","powerbi.visuals.controls.internal.TablixUtils.getColumnSeparatorColor","powerbi.visuals.controls.internal.TablixUtils.getColumnSeparatorWeight","powerbi.visuals.controls.internal.TablixUtils.getTablixOutlineColor","powerbi.visuals.controls.internal.TablixUtils.getTablixOutlineWeight","powerbi.visuals.controls.internal.TablixUtils.getColumnSeparatorShow","powerbi.visuals.controls.internal.TablixUtils.getColumnHeaderFontColor","powerbi.visuals.controls.internal.TablixUtils.getColumnHeaderBackgroundColor","powerbi.visuals.controls.internal.TablixUtils.getColumnHeaderOutlineType","powerbi.visuals.controls.internal.TablixUtils.getRowSeparatorShow","powerbi.visuals.controls.internal.TablixUtils.getRowHeaderFontColor","powerbi.visuals.controls.internal.TablixUtils.getRowHeaderBackgroundColor","powerbi.visuals.controls.internal.TablixUtils.getRowHeaderOutlineStyle","powerbi.visuals.controls.internal.TablixUtils.getValuesFontColor","powerbi.visuals.controls.internal.TablixUtils.getValuesBackgroundColor","powerbi.visuals.controls.internal.TablixUtils.getValuesOutlineType","powerbi.visuals.controls.internal.TablixUtils.getRowTotalsFontColor","powerbi.visuals.controls.internal.TablixUtils.getRowTotalsBackgroundColor","powerbi.visuals.controls.internal.TablixUtils.getRowTotalsOutlineType","powerbi.visuals.controls.internal.TablixUtils.getRowTotalsLeadingSpace","powerbi.visuals.controls.internal.TablixUtils.reverseSort","powerbi.visuals.controls.internal.TablixUtils.checkSortIconExists","powerbi.visuals.controls.internal.TablixUtils.removeSortIcons","powerbi.visuals.controls.TablixControl","powerbi.visuals.controls.TablixControl.constructor","powerbi.visuals.controls.TablixControl.InitializeTouchSupport","powerbi.visuals.controls.TablixControl.InitializeScrollbars","powerbi.visuals.controls.TablixControl.container","powerbi.visuals.controls.TablixControl.contentHost","powerbi.visuals.controls.TablixControl.footerHost","powerbi.visuals.controls.TablixControl.className","powerbi.visuals.controls.TablixControl.hierarchyNavigator","powerbi.visuals.controls.TablixControl.getBinder","powerbi.visuals.controls.TablixControl.autoSizeWidth","powerbi.visuals.controls.TablixControl.autoSizeHeight","powerbi.visuals.controls.TablixControl.maxWidth","powerbi.visuals.controls.TablixControl.viewport","powerbi.visuals.controls.TablixControl.maxHeight","powerbi.visuals.controls.TablixControl.minWidth","powerbi.visuals.controls.TablixControl.minHeight","powerbi.visuals.controls.TablixControl.fontSize","powerbi.visuals.controls.TablixControl.scrollbarWidth","powerbi.visuals.controls.TablixControl.updateModels","powerbi.visuals.controls.TablixControl.updateColumnDimensions","powerbi.visuals.controls.TablixControl.updateRowDimensions","powerbi.visuals.controls.TablixControl.updateTouchDimensions","powerbi.visuals.controls.TablixControl.onMouseWheel","powerbi.visuals.controls.TablixControl.onFireFoxMouseWheel","powerbi.visuals.controls.TablixControl.determineDimensionToScroll","powerbi.visuals.controls.TablixControl.layoutManager","powerbi.visuals.controls.TablixControl.columnDimension","powerbi.visuals.controls.TablixControl.rowDimension","powerbi.visuals.controls.TablixControl.refresh","powerbi.visuals.controls.TablixControl._onScrollAsync","powerbi.visuals.controls.TablixControl.performPendingScroll","powerbi.visuals.controls.TablixControl.updateHorizontalPosition","powerbi.visuals.controls.TablixControl.updateFooterVisibility","powerbi.visuals.controls.TablixControl.updateVerticalPosition","powerbi.visuals.controls.TablixControl.alreadyRendered","powerbi.visuals.controls.TablixControl.render","powerbi.visuals.controls.TablixControl.updateContainerDimensions","powerbi.visuals.controls.TablixControl.cornerCellMatch","powerbi.visuals.controls.TablixControl.renderCorner","powerbi.visuals.controls.TablixControl._unbindCell","powerbi.visuals.controls.TablixControl.onTouchEvent","powerbi.visuals.controls.TablixControl.addFixedSizeClassNameIfNeeded","powerbi.visuals.controls.TablixControl.removeFixSizedClassName","powerbi.visuals.controls.TablixDimension","powerbi.visuals.controls.TablixDimension.constructor","powerbi.visuals.controls.TablixDimension._onStartRenderingIteration","powerbi.visuals.controls.TablixDimension._onEndRenderingIteration","powerbi.visuals.controls.TablixDimension.getValidScrollOffset","powerbi.visuals.controls.TablixDimension.makeScrollOffsetValid","powerbi.visuals.controls.TablixDimension.getIntegerScrollOffset","powerbi.visuals.controls.TablixDimension.getFractionScrollOffset","powerbi.visuals.controls.TablixDimension.scrollbar","powerbi.visuals.controls.TablixDimension.getFirstVisibleItem","powerbi.visuals.controls.TablixDimension.getFirstVisibleChild","powerbi.visuals.controls.TablixDimension.getFirstVisibleChildIndex","powerbi.visuals.controls.TablixDimension._initializeScrollbar","powerbi.visuals.controls.TablixDimension.getItemsCount","powerbi.visuals.controls.TablixDimension.getDepth","powerbi.visuals.controls.TablixDimension.onScroll","powerbi.visuals.controls.TablixDimension.otherDimension","powerbi.visuals.controls.TablixDimension.layoutManager","powerbi.visuals.controls.TablixDimension._createScrollbar","powerbi.visuals.controls.TablixDimension.updateScrollPosition","powerbi.visuals.controls.TablixRowDimension","powerbi.visuals.controls.TablixRowDimension.constructor","powerbi.visuals.controls.TablixRowDimension.setFooter","powerbi.visuals.controls.TablixRowDimension.hasFooter","powerbi.visuals.controls.TablixRowDimension._render","powerbi.visuals.controls.TablixRowDimension._createScrollbar","powerbi.visuals.controls.TablixRowDimension.addNodes","powerbi.visuals.controls.TablixRowDimension.getFirstVisibleChildLeaf","powerbi.visuals.controls.TablixRowDimension.bindRowHeader","powerbi.visuals.controls.TablixRowDimension.addNode","powerbi.visuals.controls.TablixRowDimension.rowHeaderMatch","powerbi.visuals.controls.TablixRowDimension.addBodyCells","powerbi.visuals.controls.TablixRowDimension.bindBodyCell","powerbi.visuals.controls.TablixRowDimension.addFooterRowHeader","powerbi.visuals.controls.TablixRowDimension.addFooterBodyCells","powerbi.visuals.controls.TablixRowDimension.bodyCelMatch","powerbi.visuals.controls.TablixColumnDimension","powerbi.visuals.controls.TablixColumnDimension.constructor","powerbi.visuals.controls.TablixColumnDimension._render","powerbi.visuals.controls.TablixColumnDimension._createScrollbar","powerbi.visuals.controls.TablixColumnDimension.addNodes","powerbi.visuals.controls.TablixColumnDimension.addNode","powerbi.visuals.controls.TablixColumnDimension.columnHeaderMatch","powerbi.visuals.controls.ColumnTouchDelegate","powerbi.visuals.controls.ColumnTouchDelegate.constructor","powerbi.visuals.controls.ColumnTouchDelegate.dimension","powerbi.visuals.controls.ColumnTouchDelegate.setScrollDensity","powerbi.visuals.controls.ColumnTouchDelegate.resize","powerbi.visuals.controls.ColumnTouchDelegate.getPixelToItem","powerbi.visuals.controls.ColumnTouchDelegate.touchEvent","powerbi.visuals.controls.ColumnTouchDelegate.setHandler","powerbi.visuals.controls.RowTouchDelegate","powerbi.visuals.controls.RowTouchDelegate.constructor","powerbi.visuals.controls.RowTouchDelegate.dimension","powerbi.visuals.controls.RowTouchDelegate.setScrollDensity","powerbi.visuals.controls.RowTouchDelegate.resize","powerbi.visuals.controls.RowTouchDelegate.getPixelToItem","powerbi.visuals.controls.RowTouchDelegate.touchEvent","powerbi.visuals.controls.RowTouchDelegate.setHandler","powerbi.visuals.controls.BodyTouchDelegate","powerbi.visuals.controls.BodyTouchDelegate.constructor","powerbi.visuals.controls.BodyTouchDelegate.dimension","powerbi.visuals.controls.BodyTouchDelegate.setScrollDensity","powerbi.visuals.controls.BodyTouchDelegate.resize","powerbi.visuals.controls.BodyTouchDelegate.getPixelToItem","powerbi.visuals.controls.BodyTouchDelegate.touchEvent","powerbi.visuals.controls.BodyTouchDelegate.setHandler","powerbi.visuals.controls.TouchUtils","powerbi.visuals.controls.TouchUtils.Point","powerbi.visuals.controls.TouchUtils.Point.constructor","powerbi.visuals.controls.TouchUtils.Point.offset","powerbi.visuals.controls.TouchUtils.Rectangle","powerbi.visuals.controls.TouchUtils.Rectangle.constructor","powerbi.visuals.controls.TouchUtils.Rectangle.point","powerbi.visuals.controls.TouchUtils.Rectangle.contains","powerbi.visuals.controls.TouchUtils.Rectangle.isEmpty","powerbi.visuals.controls.TouchUtils.MouseButton","powerbi.visuals.controls.TouchUtils.TouchEvent","powerbi.visuals.controls.TouchUtils.TouchEvent.constructor","powerbi.visuals.controls.TouchUtils.TouchEvent.x","powerbi.visuals.controls.TouchUtils.TouchEvent.y","powerbi.visuals.controls.TouchUtils.TouchEvent.dx","powerbi.visuals.controls.TouchUtils.TouchEvent.dy","powerbi.visuals.controls.TouchUtils.TouchEvent.isMouseDown","powerbi.visuals.controls.TouchUtils.TouchManager","powerbi.visuals.controls.TouchUtils.TouchManager.constructor","powerbi.visuals.controls.TouchUtils.TouchManager.lastEvent","powerbi.visuals.controls.TouchUtils.TouchManager.addTouchRegion","powerbi.visuals.controls.TouchUtils.TouchManager.upAllTouches","powerbi.visuals.controls.TouchUtils.TouchManager.touchEvent","powerbi.visuals.controls.TouchUtils.TouchManager._findRegions","powerbi.visuals.controls.TouchUtils.TouchManager._getActive","powerbi.visuals.controls.TouchUtils.TouchEventInterpreter","powerbi.visuals.controls.TouchUtils.TouchEventInterpreter.constructor","powerbi.visuals.controls.TouchUtils.TouchEventInterpreter.initTouch","powerbi.visuals.controls.TouchUtils.TouchEventInterpreter.getXYByClient","powerbi.visuals.controls.TouchUtils.TouchEventInterpreter.onTouchStart","powerbi.visuals.controls.TouchUtils.TouchEventInterpreter.onTouchMove","powerbi.visuals.controls.TouchUtils.TouchEventInterpreter.onTouchEnd","powerbi.visuals.controls.TouchUtils.TouchEventInterpreter.onTouchMouseDown","powerbi.visuals.controls.TouchUtils.TouchEventInterpreter.onTouchMouseMove","powerbi.visuals.controls.TouchUtils.TouchEventInterpreter.onTouchMouseUp","powerbi.visuals.controls.TablixType","powerbi.visuals.controls.TablixColumnWidthManager","powerbi.visuals.controls.TablixColumnWidthManager.constructor","powerbi.visuals.controls.TablixColumnWidthManager.getColumnWidths","powerbi.visuals.controls.TablixColumnWidthManager.getTablixColumnWidthsObject","powerbi.visuals.controls.TablixColumnWidthManager.updateDataView","powerbi.visuals.controls.TablixColumnWidthManager.getVisualObjectInstancesToPersist","powerbi.visuals.controls.TablixColumnWidthManager.persistColumnWidthsOnHost","powerbi.visuals.controls.TablixColumnWidthManager.getTablixQueryNames","powerbi.visuals.controls.TablixColumnWidthManager.suppressOnDataChangedNotification","powerbi.visuals.controls.TablixColumnWidthManager.columnWidthResizeCallback","powerbi.visuals.controls.TablixColumnWidthManager.getPersistedCellWidth","powerbi.visuals.controls.TablixColumnWidthManager.deserializeTablixColumnWidths","powerbi.visuals.controls.TablixColumnWidthManager.columnWidthChanged","powerbi.visuals.controls.TablixColumnWidthManager.persistAllColumnWidths","powerbi.visuals.controls.TablixColumnWidthManager.shouldAutoSizeColumnWidth","powerbi.visuals.controls.TablixColumnWidthManager.getAutoSizeColumnWidthObject","powerbi.visuals.controls.TablixColumnWidthManager.generateVisualObjectInstancesToPersist","powerbi.visuals.controls.TablixColumnWidthManager.removePersistedVisualObjectInstances","powerbi.visuals.controls.TablixColumnWidthManager.deserializeColumnWidths","powerbi.visuals.controls.TablixColumnWidthManager.populateTablixQueryNames","powerbi.visuals.controls.TablixColumnWidthManager.getTableQueryNames","powerbi.visuals.controls.TablixColumnWidthManager.getMatrixQueryNames","powerbi.visuals.AnimatedText","powerbi.visuals.AnimatedText.constructor","powerbi.visuals.AnimatedText.getMetaDataColumn","powerbi.visuals.AnimatedText.getAdjustedFontHeight","powerbi.visuals.AnimatedText.getAdjustedFontHeightCore","powerbi.visuals.AnimatedText.clear","powerbi.visuals.AnimatedText.doValueTransition","powerbi.visuals.AnimatedText.setTextColor","powerbi.visuals.AnimatedText.getSeedFontHeight","powerbi.visuals.AnimatedText.getTranslateX","powerbi.visuals.AnimatedText.getTranslateY","powerbi.visuals.AnimatedText.getTextAnchor","powerbi.visuals.AnimatedText.getFormatString","powerbi.visuals.AnimatedNumber","powerbi.visuals.AnimatedNumber.constructor","powerbi.visuals.AnimatedNumber.init","powerbi.visuals.AnimatedNumber.updateViewportDependantProperties","powerbi.visuals.AnimatedNumber.update","powerbi.visuals.AnimatedNumber.setFormatter","powerbi.visuals.AnimatedNumber.onDataChanged","powerbi.visuals.AnimatedNumber.onResizing","powerbi.visuals.AnimatedNumber.canResizeTo","powerbi.visuals.AnimatedNumber.updateInternal","powerbi.visuals.BasicShapeVisual","powerbi.visuals.BasicShapeVisual.constructor","powerbi.visuals.BasicShapeVisual.shapeType","powerbi.visuals.BasicShapeVisual.lineColor","powerbi.visuals.BasicShapeVisual.lineTransparency","powerbi.visuals.BasicShapeVisual.lineWeight","powerbi.visuals.BasicShapeVisual.roundEdge","powerbi.visuals.BasicShapeVisual.showFill","powerbi.visuals.BasicShapeVisual.fillColor","powerbi.visuals.BasicShapeVisual.shapeTransparency","powerbi.visuals.BasicShapeVisual.angle","powerbi.visuals.BasicShapeVisual.init","powerbi.visuals.BasicShapeVisual.update","powerbi.visuals.BasicShapeVisual.getDataFromDataView","powerbi.visuals.BasicShapeVisual.scaleTo360Deg","powerbi.visuals.BasicShapeVisual.getValueFromColor","powerbi.visuals.BasicShapeVisual.enumerateObjectInstances","powerbi.visuals.BasicShapeVisual.render","powerbi.visuals.CartesianChart","powerbi.visuals.CartesianChart.constructor","powerbi.visuals.CartesianChart.getAxisVisibility","powerbi.visuals.CartesianChart.init","powerbi.visuals.CartesianChart.isPlayAxis","powerbi.visuals.CartesianChart.getIsScalar","powerbi.visuals.CartesianChart.populateObjectProperties","powerbi.visuals.CartesianChart.update","powerbi.visuals.CartesianChart.onDataChanged","powerbi.visuals.CartesianChart.onResizing","powerbi.visuals.CartesianChart.scrollTo","powerbi.visuals.CartesianChart.enumerateObjectInstances","powerbi.visuals.CartesianChart.shouldShowLegendCard","powerbi.visuals.CartesianChart.getCategoryAxisValues","powerbi.visuals.CartesianChart.getValueAxisValues","powerbi.visuals.CartesianChart.onClearSelection","powerbi.visuals.CartesianChart.createAndInitLayers","powerbi.visuals.CartesianChart.renderLegend","powerbi.visuals.CartesianChart.hideLegends","powerbi.visuals.CartesianChart.render","powerbi.visuals.CartesianChart.getPlotAreaRect","powerbi.visuals.CartesianChart.renderBackgroundImage","powerbi.visuals.CartesianChart.hideAxisLabels","powerbi.visuals.CartesianChart.calculateInteractivityRightMargin","powerbi.visuals.CartesianChart.renderPlotArea","powerbi.visuals.CartesianChart.renderReferenceLines","powerbi.visuals.CartesianChart.getReferenceLineLabels","powerbi.visuals.CartesianChart.renderDataLabels","powerbi.visuals.CartesianChart.renderLayers","powerbi.visuals.CartesianChart.getPreferredPlotArea","powerbi.visuals.CartesianChart.getPreferredCategorySpan","powerbi.visuals.CartesianChart.getLayout","powerbi.visuals.CartesianChart.getCategoryThickness","powerbi.visuals.CartesianChart.getMinInterval","powerbi.visuals.getLayerData","powerbi.visuals.hasMultipleYAxes","powerbi.visuals.shouldShowYAxisLabel","powerbi.visuals.tryMergeYDomains","powerbi.visuals.calculateAxes","powerbi.visuals.SvgBrush","powerbi.visuals.SvgBrush.constructor","powerbi.visuals.SvgBrush.init","powerbi.visuals.SvgBrush.remove","powerbi.visuals.SvgBrush.getExtent","powerbi.visuals.SvgBrush.setExtent","powerbi.visuals.SvgBrush.setScale","powerbi.visuals.SvgBrush.setOrientation","powerbi.visuals.SvgBrush.renderBrush","powerbi.visuals.SvgBrush.scroll","powerbi.visuals.SvgBrush.resizeExtent","powerbi.visuals.ScrollableAxes","powerbi.visuals.ScrollableAxes.constructor","powerbi.visuals.ScrollableAxes.filterDataToViewport","powerbi.visuals.ScrollableAxes.render","powerbi.visuals.ScrollableAxes.scrollTo","powerbi.visuals.ScrollableAxes.getMinExtent","powerbi.visuals.ScrollableAxes.onBrushed","powerbi.visuals.ScrollableAxes.clampBrushExtent","powerbi.visuals.SvgCartesianAxes","powerbi.visuals.SvgCartesianAxes.constructor","powerbi.visuals.SvgCartesianAxes.getScrollableRegion","powerbi.visuals.SvgCartesianAxes.getLabelsRegion","powerbi.visuals.SvgCartesianAxes.getLabelBackground","powerbi.visuals.SvgCartesianAxes.getXAxis","powerbi.visuals.SvgCartesianAxes.getY1Axis","powerbi.visuals.SvgCartesianAxes.getY2Axis","powerbi.visuals.SvgCartesianAxes.update","powerbi.visuals.SvgCartesianAxes.init","powerbi.visuals.SvgCartesianAxes.updateAnimatedTickTooltips","powerbi.visuals.SvgCartesianAxes.updateTickTooltips","powerbi.visuals.SvgCartesianAxes.renderAxes","powerbi.visuals.SvgCartesianAxes.renderAxesLabels","powerbi.visuals.SvgCartesianAxes.translateAxes","powerbi.visuals.SvgCartesianAxes.darkenZeroLine","powerbi.visuals.SvgCartesianAxes.setAxisLabelColor","powerbi.visuals.CartesianAxes","powerbi.visuals.CartesianAxes.constructor","powerbi.visuals.CartesianAxes.shouldShowY1OnRight","powerbi.visuals.CartesianAxes.isYAxisCategorical","powerbi.visuals.CartesianAxes.hasCategoryAxis","powerbi.visuals.CartesianAxes.hasY2Axis","powerbi.visuals.CartesianAxes.getYAxisOrientation","powerbi.visuals.CartesianAxes.setAxisLinesVisibility","powerbi.visuals.CartesianAxes.setMaxMarginFactor","powerbi.visuals.CartesianAxes.update","powerbi.visuals.CartesianAxes.addWarnings","powerbi.visuals.CartesianAxes.negotiateAxes","powerbi.visuals.CartesianAxes.isLogScaleAllowed","powerbi.visuals.CartesianAxes.axesHaveTicks","powerbi.visuals.CartesianAxes.shouldRenderAxisTitle","powerbi.visuals.CartesianAxes.shouldRenderAxis","powerbi.visuals.CartesianAxes.getAxisProperty","powerbi.visuals.CartesianAxes.addUnitTypeToAxisLabels","powerbi.visuals.CartesianAxes.getUnitType","powerbi.visuals.CartesianLayerFactory","powerbi.visuals.CartesianLayerFactory.createLayers","powerbi.visuals.CartesianLayerFactory.createLineChartLayer","powerbi.visuals.CartesianLayerFactory.createScatterChartLayer","powerbi.visuals.CartesianLayerFactory.createWaterfallChartLayer","powerbi.visuals.CartesianLayerFactory.createDataDotChartLayer","powerbi.visuals.CartesianLayerFactory.createColumnChartLayer","powerbi.visuals.CartesianLayerFactory.getComboColumnType","powerbi.visuals.SharedColorPalette","powerbi.visuals.SharedColorPalette.constructor","powerbi.visuals.SharedColorPalette.getColorScaleByKey","powerbi.visuals.SharedColorPalette.getNewColorScale","powerbi.visuals.SharedColorPalette.getColorByIndex","powerbi.visuals.SharedColorPalette.getSentimentColors","powerbi.visuals.SharedColorPalette.getBasePickerColors","powerbi.visuals.SharedColorPalette.clearPreferredScale","powerbi.visuals.SharedColorPalette.rotateScale","powerbi.visuals.SharedColorPalette.setPreferredScale","powerbi.visuals.ColumnChartType","powerbi.visuals.ColumnChart","powerbi.visuals.ColumnChart.constructor","powerbi.visuals.ColumnChart.customizeQuery","powerbi.visuals.ColumnChart.getSortableRoles","powerbi.visuals.ColumnChart.updateVisualMetadata","powerbi.visuals.ColumnChart.init","powerbi.visuals.ColumnChart.getCategoryLayout","powerbi.visuals.ColumnChart.converter","powerbi.visuals.ColumnChart.canSupportOverflow","powerbi.visuals.ColumnChart.createDataPoints","powerbi.visuals.ColumnChart.getDataPointColor","powerbi.visuals.ColumnChart.getStackedLabelColor","powerbi.visuals.ColumnChart.sliceSeries","powerbi.visuals.ColumnChart.getInteractiveColumnChartDomElement","powerbi.visuals.ColumnChart.setData","powerbi.visuals.ColumnChart.setChartStrategy","powerbi.visuals.ColumnChart.calculateLegend","powerbi.visuals.ColumnChart.hasLegend","powerbi.visuals.ColumnChart.enumerateObjectInstances","powerbi.visuals.ColumnChart.enumerateDataLabels","powerbi.visuals.ColumnChart.getLabelSettingsOptions","powerbi.visuals.ColumnChart.enumerateDataPoints","powerbi.visuals.ColumnChart.calculateAxesProperties","powerbi.visuals.ColumnChart.getPreferredPlotArea","powerbi.visuals.ColumnChart.ApplyInteractivity","powerbi.visuals.ColumnChart.selectColumn","powerbi.visuals.ColumnChart.createInteractiveLegendDataPoints","powerbi.visuals.ColumnChart.overrideXScale","powerbi.visuals.ColumnChart.render","powerbi.visuals.ColumnChart.onClearSelection","powerbi.visuals.ColumnChart.getVisualCategoryAxisIsScalar","powerbi.visuals.ColumnChart.getSupportedCategoryAxisType","powerbi.visuals.ColumnChart.setFilteredData","powerbi.visuals.ColumnChart.getLabelFill","powerbi.visuals.ColumnChartConverterHelper","powerbi.visuals.ColumnChartConverterHelper.constructor","powerbi.visuals.ColumnChartConverterHelper.getLegend","powerbi.visuals.ColumnChartConverterHelper.getValueBySeriesAndCategory","powerbi.visuals.ColumnChartConverterHelper.getMeasureNameByIndex","powerbi.visuals.ColumnChartConverterHelper.hasHighlightValues","powerbi.visuals.ColumnChartConverterHelper.getHighlightBySeriesAndCategory","powerbi.visuals.ClusteredColumnChartStrategy","powerbi.visuals.ClusteredColumnChartStrategy.constructor","powerbi.visuals.ClusteredColumnChartStrategy.setupVisualProps","powerbi.visuals.ClusteredColumnChartStrategy.setData","powerbi.visuals.ClusteredColumnChartStrategy.setXScale","powerbi.visuals.ClusteredColumnChartStrategy.setYScale","powerbi.visuals.ClusteredColumnChartStrategy.drawColumns","powerbi.visuals.ClusteredColumnChartStrategy.selectColumn","powerbi.visuals.ClusteredColumnChartStrategy.getClosestColumnIndex","powerbi.visuals.ClusteredColumnChartStrategy.getColumnsCenters","powerbi.visuals.ClusteredColumnChartStrategy.moveHandle","powerbi.visuals.ClusteredColumnChartStrategy.getLayout","powerbi.visuals.ClusteredColumnChartStrategy.createLabelDataPoints","powerbi.visuals.ClusteredBarChartStrategy","powerbi.visuals.ClusteredBarChartStrategy.constructor","powerbi.visuals.ClusteredBarChartStrategy.setupVisualProps","powerbi.visuals.ClusteredBarChartStrategy.setData","powerbi.visuals.ClusteredBarChartStrategy.setYScale","powerbi.visuals.ClusteredBarChartStrategy.setXScale","powerbi.visuals.ClusteredBarChartStrategy.drawColumns","powerbi.visuals.ClusteredBarChartStrategy.selectColumn","powerbi.visuals.ClusteredBarChartStrategy.getClosestColumnIndex","powerbi.visuals.ClusteredBarChartStrategy.getBarsCenters","powerbi.visuals.ClusteredBarChartStrategy.moveHandle","powerbi.visuals.ClusteredBarChartStrategy.getLayout","powerbi.visuals.ClusteredBarChartStrategy.createLabelDataPoints","powerbi.visuals.StackedColumnChartStrategy","powerbi.visuals.StackedColumnChartStrategy.constructor","powerbi.visuals.StackedColumnChartStrategy.setupVisualProps","powerbi.visuals.StackedColumnChartStrategy.setData","powerbi.visuals.StackedColumnChartStrategy.setXScale","powerbi.visuals.StackedColumnChartStrategy.setYScale","powerbi.visuals.StackedColumnChartStrategy.drawColumns","powerbi.visuals.StackedColumnChartStrategy.selectColumn","powerbi.visuals.StackedColumnChartStrategy.getClosestColumnIndex","powerbi.visuals.StackedColumnChartStrategy.getColumnsCenters","powerbi.visuals.StackedColumnChartStrategy.moveHandle","powerbi.visuals.StackedColumnChartStrategy.getLayout","powerbi.visuals.StackedColumnChartStrategy.createLabelDataPoints","powerbi.visuals.StackedBarChartStrategy","powerbi.visuals.StackedBarChartStrategy.constructor","powerbi.visuals.StackedBarChartStrategy.setupVisualProps","powerbi.visuals.StackedBarChartStrategy.setData","powerbi.visuals.StackedBarChartStrategy.setYScale","powerbi.visuals.StackedBarChartStrategy.setXScale","powerbi.visuals.StackedBarChartStrategy.drawColumns","powerbi.visuals.StackedBarChartStrategy.selectColumn","powerbi.visuals.StackedBarChartStrategy.getClosestColumnIndex","powerbi.visuals.StackedBarChartStrategy.getBarsCenters","powerbi.visuals.StackedBarChartStrategy.moveHandle","powerbi.visuals.StackedBarChartStrategy.getLayout","powerbi.visuals.StackedBarChartStrategy.createLabelDataPoints","powerbi.visuals.ComboChart","powerbi.visuals.ComboChart.customizeQuery","powerbi.visuals.ComboChart.isComboChart","powerbi.visuals.DataColorPalette","powerbi.visuals.DataColorPalette.constructor","powerbi.visuals.DataColorPalette.getColorScaleByKey","powerbi.visuals.DataColorPalette.getNewColorScale","powerbi.visuals.DataColorPalette.getColorByIndex","powerbi.visuals.DataColorPalette.getSentimentColors","powerbi.visuals.DataColorPalette.getBasePickerColors","powerbi.visuals.DataColorPalette.getAllColors","powerbi.visuals.DataColorPalette.createScale","powerbi.visuals.D3ColorScale","powerbi.visuals.D3ColorScale.constructor","powerbi.visuals.D3ColorScale.getColor","powerbi.visuals.D3ColorScale.clearAndRotateScale","powerbi.visuals.D3ColorScale.clone","powerbi.visuals.D3ColorScale.getDomain","powerbi.visuals.D3ColorScale.createFromColors","powerbi.visuals.ThemeManager","powerbi.visuals.ThemeManager.constructor","powerbi.visuals.ThemeManager.getDefaultTheme","powerbi.visuals.DataDotChart","powerbi.visuals.DataDotChart.constructor","powerbi.visuals.DataDotChart.init","powerbi.visuals.DataDotChart.setData","powerbi.visuals.DataDotChart.setFilteredData","powerbi.visuals.DataDotChart.calculateAxesProperties","powerbi.visuals.DataDotChart.createClippedDataIfOverflowed","powerbi.visuals.DataDotChart.hasDataPoint","powerbi.visuals.DataDotChart.lookupXValue","powerbi.visuals.DataDotChart.overrideXScale","powerbi.visuals.DataDotChart.render","powerbi.visuals.DataDotChart.calculateLegend","powerbi.visuals.DataDotChart.hasLegend","powerbi.visuals.DataDotChart.createLegendDataPoints","powerbi.visuals.DataDotChart.onClearSelection","powerbi.visuals.DataDotChart.converter","powerbi.visuals.FunnelChart","powerbi.visuals.FunnelChart.constructor","powerbi.visuals.FunnelChart.isValidValueColumn","powerbi.visuals.FunnelChart.getFirstValidValueColumn","powerbi.visuals.FunnelChart.converter","powerbi.visuals.FunnelChart.enumerateObjectInstances","powerbi.visuals.FunnelChart.getLabelSettingsOptions","powerbi.visuals.FunnelChart.enumerateDataPoints","powerbi.visuals.FunnelChart.init","powerbi.visuals.FunnelChart.updateViewportProperties","powerbi.visuals.FunnelChart.update","powerbi.visuals.FunnelChart.onDataChanged","powerbi.visuals.FunnelChart.onResizing","powerbi.visuals.FunnelChart.getMaxLeftMargin","powerbi.visuals.FunnelChart.updateInternal","powerbi.visuals.FunnelChart.getUsableVerticalSpace","powerbi.visuals.FunnelChart.isHidingPercentBars","powerbi.visuals.FunnelChart.isSparklines","powerbi.visuals.FunnelChart.setUpAxis","powerbi.visuals.FunnelChart.getPercentBarTextHeight","powerbi.visuals.FunnelChart.onClearSelection","powerbi.visuals.FunnelChart.getLayout","powerbi.visuals.FunnelChart.drawDefaultAxis","powerbi.visuals.FunnelChart.drawDefaultShapes","powerbi.visuals.FunnelChart.getFunnelSliceValue","powerbi.visuals.FunnelChart.drawInteractorShapes","powerbi.visuals.FunnelChart.drawPercentBarComponents","powerbi.visuals.FunnelChart.drawPercentBars","powerbi.visuals.FunnelChart.showCategoryLabels","powerbi.visuals.FunnelChart.addFunnelPercentsToTooltip","powerbi.visuals.FunnelChart.getTextProperties","powerbi.visuals.Gauge","powerbi.visuals.Gauge.constructor","powerbi.visuals.Gauge.enumerateObjectInstances","powerbi.visuals.Gauge.getDataLabelSettingsOptions","powerbi.visuals.Gauge.enumerateAxis","powerbi.visuals.Gauge.getGaugeObjectsProperties","powerbi.visuals.Gauge.init","powerbi.visuals.Gauge.update","powerbi.visuals.Gauge.updateCalloutValue","powerbi.visuals.Gauge.onDataChanged","powerbi.visuals.Gauge.onResizing","powerbi.visuals.Gauge.onStyleChanged","powerbi.visuals.Gauge.getValidSettings","powerbi.visuals.Gauge.getGaugeData","powerbi.visuals.Gauge.overrideGaugeSettings","powerbi.visuals.Gauge.converter","powerbi.visuals.Gauge.convertDataLableSettings","powerbi.visuals.Gauge.getMetaDataColumn","powerbi.visuals.Gauge.initKpiBands","powerbi.visuals.Gauge.updateKpiBands","powerbi.visuals.Gauge.removeTargetElements","powerbi.visuals.Gauge.getTargetRatio","powerbi.visuals.Gauge.updateTargetLine","powerbi.visuals.Gauge.getAnimatedNumberProperties","powerbi.visuals.Gauge.getGaugeVisualProperties","powerbi.visuals.Gauge.drawViewPort","powerbi.visuals.Gauge.createTicks","powerbi.visuals.Gauge.updateInternal","powerbi.visuals.Gauge.updateVisualStyles","powerbi.visuals.Gauge.updateVisualConfigurations","powerbi.visuals.Gauge.appendTextAlongArc","powerbi.visuals.Gauge.truncateTextIfNeeded","powerbi.visuals.Gauge.getFormatter","powerbi.visuals.Gauge.appendTargetTextAlongArc","powerbi.visuals.Gauge.arcTween","powerbi.visuals.Gauge.showMinMaxLabelsOnBottom","powerbi.visuals.Gauge.setMargins","powerbi.visuals.Gauge.showSideNumbersLabelText","powerbi.visuals.ImageVisual","powerbi.visuals.ImageVisual.constructor","powerbi.visuals.ImageVisual.init","powerbi.visuals.ImageVisual.enumerateObjectInstances","powerbi.visuals.ImageVisual.enumerateImageScaling","powerbi.visuals.ImageVisual.update","powerbi.visuals.KPIStatusWithHistory","powerbi.visuals.KPIStatusWithHistory.constructor","powerbi.visuals.KPIStatusWithHistory.init","powerbi.visuals.KPIStatusWithHistory.update","powerbi.visuals.KPIStatusWithHistory.render","powerbi.visuals.KPIStatusWithHistory.setShowDataMissingWarning","powerbi.visuals.KPIStatusWithHistory.getDefaultFormatSettings","powerbi.visuals.KPIStatusWithHistory.getMetaDataColumn","powerbi.visuals.KPIStatusWithHistory.getFormatString","powerbi.visuals.KPIStatusWithHistory.getProp_Show_KPIGoal","powerbi.visuals.KPIStatusWithHistory.getProp_Show_KPITrendLine","powerbi.visuals.KPIStatusWithHistory.getProp_Show_KPIDistance","powerbi.visuals.KPIStatusWithHistory.getProp_KPIDirection","powerbi.visuals.KPIStatusWithHistory.getProp_Indicator_DisplayUnits","powerbi.visuals.KPIStatusWithHistory.getProp_Indicator_Precision","powerbi.visuals.KPIStatusWithHistory.getProp_Indicator_TextSize","powerbi.visuals.KPIStatusWithHistory.initDefaultLabelSettings","powerbi.visuals.KPIStatusWithHistory.getFormattedValue","powerbi.visuals.KPIStatusWithHistory.getFormattedGoalString","powerbi.visuals.KPIStatusWithHistory.converter","powerbi.visuals.KPIStatusWithHistory.getColumnsByRole","powerbi.visuals.KPIStatusWithHistory.enumerateObjectInstances","powerbi.visuals.KPIStatusWithHistory.destroy","powerbi.visuals.GetStatus","powerbi.visuals.getDistanceFromGoalInPercentageString","powerbi.visuals.GetColorByStatus","powerbi.visuals.GetTextColorByStatus","powerbi.visuals.LineChart","powerbi.visuals.LineChart.constructor","powerbi.visuals.LineChart.customizeQuery","powerbi.visuals.LineChart.getSortableRoles","powerbi.visuals.LineChart.converter","powerbi.visuals.LineChart.getInteractiveLineChartDomElement","powerbi.visuals.LineChart.getColor","powerbi.visuals.LineChart.createStackedValueDomain","powerbi.visuals.LineChart.init","powerbi.visuals.LineChart.setData","powerbi.visuals.LineChart.calculateLegend","powerbi.visuals.LineChart.hasLegend","powerbi.visuals.LineChart.setFilteredData","powerbi.visuals.LineChart.calculateAxesProperties","powerbi.visuals.LineChart.enumerateObjectInstances","powerbi.visuals.LineChart.enumerateDataPoints","powerbi.visuals.LineChart.enumerateDataLabels","powerbi.visuals.LineChart.getLabelSettingsOptions","powerbi.visuals.LineChart.overrideXScale","powerbi.visuals.LineChart.onClearSelection","powerbi.visuals.LineChart.render","powerbi.visuals.LineChart.renderNew","powerbi.visuals.LineChart.renderOld","powerbi.visuals.LineChart.getSeriesTooltipInfo","powerbi.visuals.LineChart.getTooltipInfoByPathPointX","powerbi.visuals.LineChart.getVisualCategoryAxisIsScalar","powerbi.visuals.LineChart.getSupportedCategoryAxisType","powerbi.visuals.LineChart.getPreferredPlotArea","powerbi.visuals.LineChart.getCategoryCount","powerbi.visuals.LineChart.getAvailableWidth","powerbi.visuals.LineChart.getAvailableHeight","powerbi.visuals.LineChart.sliceSeries","powerbi.visuals.LineChart.extraLineShift","powerbi.visuals.LineChart.hasDataPoint","powerbi.visuals.LineChart.findMaxDataPoint","powerbi.visuals.LineChart.getXValue","powerbi.visuals.LineChart.shouldDrawCircle","powerbi.visuals.LineChart.selectColumnForTooltip","powerbi.visuals.LineChart.setHoverLineForTooltip","powerbi.visuals.LineChart.setDotsForTooltip","powerbi.visuals.LineChart.selectColumn","powerbi.visuals.LineChart.setHoverLine","powerbi.visuals.LineChart.getChartX","powerbi.visuals.LineChart.findIndex","powerbi.visuals.LineChart.getPosition","powerbi.visuals.LineChart.createTooltipDataPoints","powerbi.visuals.LineChart.createLegendDataPoints","powerbi.visuals.LineChart.createLabelDataPoints","powerbi.visuals.LineChart.showLabelPerSeries","powerbi.visuals.MapBubbleDataPointRenderer","powerbi.visuals.MapBubbleDataPointRenderer.constructor","powerbi.visuals.MapBubbleDataPointRenderer.init","powerbi.visuals.MapBubbleDataPointRenderer.addDataPoint","powerbi.visuals.MapBubbleDataPointRenderer.clearDataPoints","powerbi.visuals.MapBubbleDataPointRenderer.getDataPointCount","powerbi.visuals.MapBubbleDataPointRenderer.getDataPointPadding","powerbi.visuals.MapBubbleDataPointRenderer.clearMaxDataPointRadius","powerbi.visuals.MapBubbleDataPointRenderer.setMaxDataPointRadius","powerbi.visuals.MapBubbleDataPointRenderer.beginDataPointUpdate","powerbi.visuals.MapBubbleDataPointRenderer.getDefaultMap","powerbi.visuals.MapBubbleDataPointRenderer.converter","powerbi.visuals.MapBubbleDataPointRenderer.updateInternal","powerbi.visuals.MapBubbleDataPointRenderer.updateInternalDataLabels","powerbi.visuals.MapBubbleDataPointRenderer.createLabelDataPoints","powerbi.visuals.MapShapeDataPointRenderer","powerbi.visuals.MapShapeDataPointRenderer.constructor","powerbi.visuals.MapShapeDataPointRenderer.getFilledMapParams","powerbi.visuals.MapShapeDataPointRenderer.buildPaths","powerbi.visuals.MapShapeDataPointRenderer.init","powerbi.visuals.MapShapeDataPointRenderer.beginDataPointUpdate","powerbi.visuals.MapShapeDataPointRenderer.addDataPoint","powerbi.visuals.MapShapeDataPointRenderer.clearDataPoints","powerbi.visuals.MapShapeDataPointRenderer.getDataPointCount","powerbi.visuals.MapShapeDataPointRenderer.converter","powerbi.visuals.MapShapeDataPointRenderer.updateInternal","powerbi.visuals.MapShapeDataPointRenderer.getDataPointPadding","powerbi.visuals.MapShapeDataPointRenderer.getIndexOfLargestShape","powerbi.visuals.MapShapeDataPointRenderer.updateInternalDataLabels","powerbi.visuals.MapShapeDataPointRenderer.clearMaxShapeDimension","powerbi.visuals.MapShapeDataPointRenderer.setMaxShapeDimension","powerbi.visuals.MapShapeDataPointRenderer.createLabelDataPoints","powerbi.visuals.MapShapeDataPointRenderer.drawLabelStems","powerbi.visuals.Map","powerbi.visuals.Map.constructor","powerbi.visuals.Map.init","powerbi.visuals.Map.addDataPoint","powerbi.visuals.Map.scheduleRedraw","powerbi.visuals.Map.enqueueGeoCode","powerbi.visuals.Map.enqueueGeoCodeAndGeoShape","powerbi.visuals.Map.enqueueGeoShape","powerbi.visuals.Map.getOptimumLevelOfDetail","powerbi.visuals.Map.getViewCenter","powerbi.visuals.Map.resetBounds","powerbi.visuals.Map.updateBounds","powerbi.visuals.Map.legendObject","powerbi.visuals.Map.isLegendHidden","powerbi.visuals.Map.legendPosition","powerbi.visuals.Map.getLegendFontSize","powerbi.visuals.Map.isShowLegendTitle","powerbi.visuals.Map.legendTitle","powerbi.visuals.Map.renderLegend","powerbi.visuals.Map.calculateGroupSizes","powerbi.visuals.Map.createMapDataPoint","powerbi.visuals.Map.calculateSeriesLegend","powerbi.visuals.Map.calculateSeriesInfo","powerbi.visuals.Map.getOptionalMeasure","powerbi.visuals.Map.calculateRadius","powerbi.visuals.Map.getGeocodingCategory","powerbi.visuals.Map.hasSizeField","powerbi.visuals.Map.shouldEnumerateDataPoints","powerbi.visuals.Map.shouldEnumerateCategoryLabels","powerbi.visuals.Map.enumerateObjectInstances","powerbi.visuals.Map.enumerateDataPoints","powerbi.visuals.Map.enumerateLegend","powerbi.visuals.Map.onDataChanged","powerbi.visuals.Map.swapLogoContainerChildElement","powerbi.visuals.Map.showLocationMissingWarningIfNecessary","powerbi.visuals.Map.onResizing","powerbi.visuals.Map.initialize","powerbi.visuals.Map.onViewChanged","powerbi.visuals.Map.onViewChangeEnded","powerbi.visuals.Map.getMapViewPort","powerbi.visuals.Map.removeTransform3d","powerbi.visuals.Map.updateInternal","powerbi.visuals.Map.updateOffsets","powerbi.visuals.Map.onClearSelection","powerbi.visuals.Map.clearDataPoints","powerbi.visuals.Map.getDefaultMapControlFactory","powerbi.visuals.MultiRowCard","powerbi.visuals.MultiRowCard.constructor","powerbi.visuals.MultiRowCard.init","powerbi.visuals.MultiRowCard.onDataChanged","powerbi.visuals.MultiRowCard.onResizing","powerbi.visuals.MultiRowCard.converter","powerbi.visuals.MultiRowCard.initializeCardRowSelection","powerbi.visuals.MultiRowCard.getMaxColPerRow","powerbi.visuals.MultiRowCard.getRowIndex","powerbi.visuals.MultiRowCard.getStyle","powerbi.visuals.MultiRowCard.getOverridenStyle","powerbi.visuals.MultiRowCard.getTextProperties","powerbi.visuals.MultiRowCard.hideColumn","powerbi.visuals.MultiRowCard.getColumnWidth","powerbi.visuals.MultiRowCard.isLastRowItem","powerbi.visuals.MultiRowCard.setCardDimensions","powerbi.visuals.MultiRowCard.onLoadMoreData","powerbi.visuals.MultiRowCard.getDataLabelSettingsOptions","powerbi.visuals.MultiRowCard.enumerateObjectInstances","powerbi.visuals.appendImage","powerbi.visuals.setImageStyle","powerbi.visuals.getPixelString","powerbi.visuals.Textbox","powerbi.visuals.Textbox.constructor","powerbi.visuals.Textbox.init","powerbi.visuals.Textbox.onResizing","powerbi.visuals.Textbox.onDataChanged","powerbi.visuals.Textbox.destroy","powerbi.visuals.Textbox.focus","powerbi.visuals.Textbox.onViewModeChanged","powerbi.visuals.Textbox.setSelection","powerbi.visuals.Textbox.refreshView","powerbi.visuals.Textbox.saveContents","powerbi.visuals.Textbox.updateSize","powerbi.visuals.RichTextConversion","powerbi.visuals.RichTextConversion.convertDeltaToParagraphs","powerbi.visuals.RichTextConversion.convertParagraphsToHtml","powerbi.visuals.RichTextConversion.convertParagraphsToOps","powerbi.visuals.RichTextConversion.convertFormatAttributesToTextStyle","powerbi.visuals.RichTextConversion.removeQuotes","powerbi.visuals.RichText","powerbi.visuals.RichText.getFontFamily","powerbi.visuals.RichText.QuillWrapper","powerbi.visuals.RichText.QuillWrapper.constructor","powerbi.visuals.RichText.QuillWrapper.addModule","powerbi.visuals.RichText.QuillWrapper.getElement","powerbi.visuals.RichText.QuillWrapper.getContents","powerbi.visuals.RichText.QuillWrapper.setContents","powerbi.visuals.RichText.QuillWrapper.resize","powerbi.visuals.RichText.QuillWrapper.setReadOnly","powerbi.visuals.RichText.QuillWrapper.formatUrls","powerbi.visuals.RichText.QuillWrapper.setSelection","powerbi.visuals.RichText.QuillWrapper.getSelection","powerbi.visuals.RichText.QuillWrapper.focus","powerbi.visuals.RichText.QuillWrapper.destroy","powerbi.visuals.RichText.QuillWrapper.getSelectionAtCursor","powerbi.visuals.RichText.QuillWrapper.getWord","powerbi.visuals.RichText.QuillWrapper.insertLinkAtCursor","powerbi.visuals.RichText.QuillWrapper.getEditorContainer","powerbi.visuals.RichText.QuillWrapper.getTextWithoutTrailingBreak","powerbi.visuals.RichText.QuillWrapper.rebuildQuillEditor","powerbi.visuals.RichText.QuillWrapper.onTextChanged","powerbi.visuals.RichText.Toolbar","powerbi.visuals.RichText.Toolbar.buildToolbar","powerbi.visuals.RichText.Toolbar.setSelectValue","powerbi.visuals.RichText.Toolbar.linkTooltipTemplateGenerator","powerbi.visuals.RichText.Toolbar.buildToolbarLinkInputTemplate","powerbi.visuals.RichText.Toolbar.formatGroup","powerbi.visuals.RichText.Toolbar.label","powerbi.visuals.RichText.Toolbar.div","powerbi.visuals.RichText.Toolbar.span","powerbi.visuals.RichText.Toolbar.toggleGroup","powerbi.visuals.RichText.Toolbar.picker","powerbi.visuals.RichText.Toolbar.selector","powerbi.visuals.RichText.Toolbar.formatButton","powerbi.visuals.RichText.Toolbar.getTooltip","powerbi.visuals.RichText.Toolbar.clearLinkInput","powerbi.visuals.RichText.Toolbar.buildToolbarLinkInput","powerbi.visuals.CheerMeter","powerbi.visuals.CheerMeter.constructor","powerbi.visuals.CheerMeter.converter","powerbi.visuals.CheerMeter.init","powerbi.visuals.CheerMeter.update","powerbi.visuals.CheerMeter.getRecomendedFontProperties","powerbi.visuals.CheerMeter.calculateLayout","powerbi.visuals.CheerMeter.ensureStartState","powerbi.visuals.CheerMeter.clearSelection","powerbi.visuals.CheerMeter.clearSelectionUI","powerbi.visuals.CheerMeter.updateSelectionUI","powerbi.visuals.CheerMeter.draw","powerbi.visuals.CheerMeter.destroy","powerbi.visuals.CheerMeter.enumerateObjectInstances","powerbi.visuals.ScatterChart","powerbi.visuals.ScatterChart.constructor","powerbi.visuals.ScatterChart.init","powerbi.visuals.ScatterChart.getObjectProperties","powerbi.visuals.ScatterChart.converter","powerbi.visuals.ScatterChart.getSizeRangeForGroups","powerbi.visuals.ScatterChart.createDataPoints","powerbi.visuals.ScatterChart.createSeriesLegend","powerbi.visuals.ScatterChart.getBubbleRadius","powerbi.visuals.ScatterChart.getMeasureValue","powerbi.visuals.ScatterChart.getMetadata","powerbi.visuals.ScatterChart.getDefaultData","powerbi.visuals.ScatterChart.renderAtFrame","powerbi.visuals.ScatterChart.setData","powerbi.visuals.ScatterChart.mergeSizeRanges","powerbi.visuals.ScatterChart.calculateLegend","powerbi.visuals.ScatterChart.hasLegend","powerbi.visuals.ScatterChart.enumerateObjectInstances","powerbi.visuals.ScatterChart.hasSizeMeasure","powerbi.visuals.ScatterChart.enumerateDataPoints","powerbi.visuals.ScatterChart.getExtents","powerbi.visuals.ScatterChart.calculateAxesProperties","powerbi.visuals.ScatterChart.overrideXScale","powerbi.visuals.ScatterChart.render","powerbi.visuals.ScatterChart.getStrokeFill","powerbi.visuals.ScatterChart.getBubblePixelAreaSizeRange","powerbi.visuals.ScatterChart.project","powerbi.visuals.ScatterChart.projectSizeToPixels","powerbi.visuals.ScatterChart.rangeContains","powerbi.visuals.ScatterChart.getBubbleOpacity","powerbi.visuals.ScatterChart.onClearSelection","powerbi.visuals.ScatterChart.getSupportedCategoryAxisType","powerbi.visuals.ScatterChart.sortBubbles","powerbi.visuals.SvgRenderer","powerbi.visuals.SvgRenderer.constructor","powerbi.visuals.SvgRenderer.init","powerbi.visuals.SvgRenderer.render","powerbi.visuals.SvgRenderer.createTraceLineRenderer","powerbi.visuals.SvgRenderer.drawScatterMarkers","powerbi.visuals.ScatterChartDataLabels","powerbi.visuals.ScatterChartDataLabels.createLabelDataPoints","powerbi.visuals.ScatterChartDataLabels.getPreferredLabelsKeys","powerbi.visuals.ScatterChartDataLabels.getQuadrantsCenters","powerbi.visuals.ScatterChartDataLabels.getCandidateLabels","powerbi.visuals.ScatterChartDataLabels.getPointQuadrantNumber","powerbi.visuals.ScatterChartDataLabels.getDistanceBetweenPoints","powerbi.visuals.ScatterChartDataLabels.isLabelPreferred","powerbi.visuals.ScatterTraceLineRenderer","powerbi.visuals.ScatterTraceLineRenderer.constructor","powerbi.visuals.ScatterTraceLineRenderer.remove","powerbi.visuals.ScatterTraceLineRenderer.render","powerbi.visuals.PlayAxis","powerbi.visuals.PlayAxis.constructor","powerbi.visuals.PlayAxis.init","powerbi.visuals.PlayAxis.setData","powerbi.visuals.PlayAxis.render","powerbi.visuals.PlayAxis.play","powerbi.visuals.PlayAxis.playNextFrame","powerbi.visuals.PlayAxis.stop","powerbi.visuals.PlayAxis.remove","powerbi.visuals.PlayAxis.setRenderFunction","powerbi.visuals.PlayAxis.getCartesianExtents","powerbi.visuals.PlayAxis.setPlayControlPosition","powerbi.visuals.PlayAxis.moveToFrameAndRender","powerbi.visuals.PlayControl","powerbi.visuals.PlayControl.constructor","powerbi.visuals.PlayControl.getContainer","powerbi.visuals.PlayControl.remove","powerbi.visuals.PlayControl.pause","powerbi.visuals.PlayControl.play","powerbi.visuals.PlayControl.getCurrentIndex","powerbi.visuals.PlayControl.onPlay","powerbi.visuals.PlayControl.calculateSliderWidth","powerbi.visuals.PlayControl.createSliderDOM","powerbi.visuals.PlayControl.rebuild","powerbi.visuals.PlayControl.setFrame","powerbi.visuals.PlayChart","powerbi.visuals.PlayChart.convertMatrixToCategorical","powerbi.visuals.PlayChart.getObjectProperties","powerbi.visuals.PlayChart.buildDataViewForFrame","powerbi.visuals.PlayChart.converter","powerbi.visuals.PlayChart.getDefaultPlayData","powerbi.visuals.PlayChart.getMinMaxForAllFrames","powerbi.visuals.PlayChart.getLabelData","powerbi.visuals.PlayChart.createPipsFilterFn","powerbi.visuals.PlayChart.isDataViewPlayable","powerbi.visuals.PlayChart.renderTraceLines","powerbi.visuals.VerticalSlicerRenderer","powerbi.visuals.VerticalSlicerRenderer.constructor","powerbi.visuals.VerticalSlicerRenderer.getDefaultValue","powerbi.visuals.VerticalSlicerRenderer.getIdentityFields","powerbi.visuals.VerticalSlicerRenderer.init","powerbi.visuals.VerticalSlicerRenderer.render","powerbi.visuals.VerticalSlicerRenderer.updateSelectionStyle","powerbi.visuals.VerticalSlicerRenderer.onEnterSelection","powerbi.visuals.VerticalSlicerRenderer.onUpdateSelection","powerbi.visuals.Selectors","powerbi.visuals.CheckboxSprite","powerbi.visuals.Styles","powerbi.visuals.Styles.buildCheckboxStyle","powerbi.visuals.Styles.getCheckboxScale","powerbi.visuals.HorizontalSlicerRenderer","powerbi.visuals.HorizontalSlicerRenderer.constructor","powerbi.visuals.HorizontalSlicerRenderer.getDefaultValue","powerbi.visuals.HorizontalSlicerRenderer.getIdentityFields","powerbi.visuals.HorizontalSlicerRenderer.init","powerbi.visuals.HorizontalSlicerRenderer.render","powerbi.visuals.HorizontalSlicerRenderer.renderCore","powerbi.visuals.HorizontalSlicerRenderer.updateStyle","powerbi.visuals.HorizontalSlicerRenderer.renderItems","powerbi.visuals.HorizontalSlicerRenderer.bindInteractivityService","powerbi.visuals.HorizontalSlicerRenderer.normalizePosition","powerbi.visuals.HorizontalSlicerRenderer.bindNavigationEvents","powerbi.visuals.HorizontalSlicerRenderer.registerMouseClickEvents","powerbi.visuals.HorizontalSlicerRenderer.registerMouseWheelScrollEvents","powerbi.visuals.HorizontalSlicerRenderer.onMouseWheel","powerbi.visuals.HorizontalSlicerRenderer.scrollRight","powerbi.visuals.HorizontalSlicerRenderer.scrollLeft","powerbi.visuals.HorizontalSlicerRenderer.isLastRowItem","powerbi.visuals.HorizontalSlicerRenderer.getScaledTextWidth","powerbi.visuals.HorizontalSlicerRenderer.isMaxWidthCalculated","powerbi.visuals.HorizontalSlicerRenderer.calculateAndSetMaxItemWidth","powerbi.visuals.HorizontalSlicerRenderer.calculateAndSetTotalItemWidth","powerbi.visuals.HorizontalSlicerRenderer.getNumberOfItemsToDisplay","powerbi.visuals.HorizontalSlicerRenderer.getDataPointsCount","powerbi.visuals.Slicer","powerbi.visuals.Slicer.constructor","powerbi.visuals.Slicer.DefaultStyleProperties","powerbi.visuals.Slicer.init","powerbi.visuals.Slicer.onDataChanged","powerbi.visuals.Slicer.onResizing","powerbi.visuals.Slicer.enumerateObjectInstances","powerbi.visuals.Slicer.loadMoreData","powerbi.visuals.Slicer.onClearSelection","powerbi.visuals.Slicer.render","powerbi.visuals.Slicer.orientationHasChanged","powerbi.visuals.Slicer.initializeSlicerRenderer","powerbi.visuals.Slicer.initializeVerticalSlicer","powerbi.visuals.Slicer.initializeHorizontalSlicer","powerbi.visuals.Slicer.createInitOptions","powerbi.visuals.ObjectEnumerator","powerbi.visuals.ObjectEnumerator.enumerateObjectInstances","powerbi.visuals.ObjectEnumerator.enumerateSelection","powerbi.visuals.ObjectEnumerator.enumerateHeader","powerbi.visuals.ObjectEnumerator.enumerateItems","powerbi.visuals.ObjectEnumerator.enumerateGeneral","powerbi.visuals.TableHierarchyNavigator","powerbi.visuals.TableHierarchyNavigator.constructor","powerbi.visuals.TableHierarchyNavigator.getDepth","powerbi.visuals.TableHierarchyNavigator.getLeafCount","powerbi.visuals.TableHierarchyNavigator.getLeafAt","powerbi.visuals.TableHierarchyNavigator.getParent","powerbi.visuals.TableHierarchyNavigator.getIndex","powerbi.visuals.TableHierarchyNavigator.isRow","powerbi.visuals.TableHierarchyNavigator.getColumnIndex","powerbi.visuals.TableHierarchyNavigator.isLeaf","powerbi.visuals.TableHierarchyNavigator.isRowHierarchyLeaf","powerbi.visuals.TableHierarchyNavigator.isColumnHierarchyLeaf","powerbi.visuals.TableHierarchyNavigator.isLastItem","powerbi.visuals.TableHierarchyNavigator.getChildren","powerbi.visuals.TableHierarchyNavigator.getCount","powerbi.visuals.TableHierarchyNavigator.getAt","powerbi.visuals.TableHierarchyNavigator.getLevel","powerbi.visuals.TableHierarchyNavigator.getIntersection","powerbi.visuals.TableHierarchyNavigator.getCorner","powerbi.visuals.TableHierarchyNavigator.headerItemEquals","powerbi.visuals.TableHierarchyNavigator.bodyCellItemEquals","powerbi.visuals.TableHierarchyNavigator.cornerCellItemEquals","powerbi.visuals.TableHierarchyNavigator.update","powerbi.visuals.TableBinder","powerbi.visuals.TableBinder.constructor","powerbi.visuals.TableBinder.onDataViewChanged","powerbi.visuals.TableBinder.setTablixColumnSeparator","powerbi.visuals.TableBinder.setTablixRegionStyle","powerbi.visuals.TableBinder.onStartRenderingSession","powerbi.visuals.TableBinder.onEndRenderingSession","powerbi.visuals.TableBinder.bindRowHeader","powerbi.visuals.TableBinder.unbindRowHeader","powerbi.visuals.TableBinder.bindColumnHeader","powerbi.visuals.TableBinder.unbindColumnHeader","powerbi.visuals.TableBinder.bindBodyCell","powerbi.visuals.TableBinder.unbindBodyCell","powerbi.visuals.TableBinder.bindCornerCell","powerbi.visuals.TableBinder.unbindCornerCell","powerbi.visuals.TableBinder.bindEmptySpaceHeaderCell","powerbi.visuals.TableBinder.unbindEmptySpaceHeaderCell","powerbi.visuals.TableBinder.bindEmptySpaceFooterCell","powerbi.visuals.TableBinder.unbindEmptySpaceFooterCell","powerbi.visuals.TableBinder.getHeaderLabel","powerbi.visuals.TableBinder.getCellContent","powerbi.visuals.TableBinder.hasRowGroups","powerbi.visuals.TableBinder.ensureHeight","powerbi.visuals.TableBinder.sortIconsEnabled","powerbi.visuals.Table","powerbi.visuals.Table.constructor","powerbi.visuals.Table.customizeQuery","powerbi.visuals.Table.getSortableRoles","powerbi.visuals.Table.init","powerbi.visuals.Table.converter","powerbi.visuals.Table.onResizing","powerbi.visuals.Table.getColumnWidthManager","powerbi.visuals.Table.onDataChanged","powerbi.visuals.Table.populateColumnWidths","powerbi.visuals.Table.columnWidthChanged","powerbi.visuals.Table.persistColumnWidths","powerbi.visuals.Table.updateViewport","powerbi.visuals.Table.refreshControl","powerbi.visuals.Table.getLayoutKind","powerbi.visuals.Table.createOrUpdateHierarchyNavigator","powerbi.visuals.Table.createTablixControl","powerbi.visuals.Table.createColumnWidthManager","powerbi.visuals.Table.createControl","powerbi.visuals.Table.updateInternal","powerbi.visuals.Table.shouldClearControl","powerbi.visuals.Table.createTotalsRow","powerbi.visuals.Table.onBindRowHeader","powerbi.visuals.Table.onColumnHeaderClick","powerbi.visuals.Table.needsMoreData","powerbi.visuals.Table.enumerateObjectInstances","powerbi.visuals.Table.shouldAllowHeaderResize","powerbi.visuals.Table.verifyHeaderResize","powerbi.visuals.createMatrixHierarchyNavigator","powerbi.visuals.MatrixHierarchyNavigator","powerbi.visuals.MatrixHierarchyNavigator.constructor","powerbi.visuals.MatrixHierarchyNavigator.getDataViewMatrix","powerbi.visuals.MatrixHierarchyNavigator.getDepth","powerbi.visuals.MatrixHierarchyNavigator.getLeafCount","powerbi.visuals.MatrixHierarchyNavigator.getLeafAt","powerbi.visuals.MatrixHierarchyNavigator.getLeafIndex","powerbi.visuals.MatrixHierarchyNavigator.getParent","powerbi.visuals.MatrixHierarchyNavigator.getIndex","powerbi.visuals.MatrixHierarchyNavigator.isLeaf","powerbi.visuals.MatrixHierarchyNavigator.isRowHierarchyLeaf","powerbi.visuals.MatrixHierarchyNavigator.isColumnHierarchyLeaf","powerbi.visuals.MatrixHierarchyNavigator.isLastItem","powerbi.visuals.MatrixHierarchyNavigator.getChildren","powerbi.visuals.MatrixHierarchyNavigator.getCount","powerbi.visuals.MatrixHierarchyNavigator.getAt","powerbi.visuals.MatrixHierarchyNavigator.getLevel","powerbi.visuals.MatrixHierarchyNavigator.getIntersection","powerbi.visuals.MatrixHierarchyNavigator.getCorner","powerbi.visuals.MatrixHierarchyNavigator.headerItemEquals","powerbi.visuals.MatrixHierarchyNavigator.bodyCellItemEquals","powerbi.visuals.MatrixHierarchyNavigator.cornerCellItemEquals","powerbi.visuals.MatrixHierarchyNavigator.getMatrixColumnHierarchy","powerbi.visuals.MatrixHierarchyNavigator.getMatrixRowHierarchy","powerbi.visuals.MatrixHierarchyNavigator.update","powerbi.visuals.MatrixHierarchyNavigator.wrapMatrixHierarchy","powerbi.visuals.MatrixHierarchyNavigator.updateHierarchy","powerbi.visuals.MatrixHierarchyNavigator.updateRecursive","powerbi.visuals.MatrixHierarchyNavigator.updateStaticColumnHeaders","powerbi.visuals.MatrixHierarchyNavigator.getMatrixHierarchy","powerbi.visuals.MatrixBinder","powerbi.visuals.MatrixBinder.constructor","powerbi.visuals.MatrixBinder.onDataViewChanged","powerbi.visuals.MatrixBinder.setTablixColumnSeparator","powerbi.visuals.MatrixBinder.setTablixRegionStyle","powerbi.visuals.MatrixBinder.onStartRenderingSession","powerbi.visuals.MatrixBinder.onEndRenderingSession","powerbi.visuals.MatrixBinder.bindRowHeader","powerbi.visuals.MatrixBinder.unbindRowHeader","powerbi.visuals.MatrixBinder.bindColumnHeader","powerbi.visuals.MatrixBinder.unbindColumnHeader","powerbi.visuals.MatrixBinder.bindBodyCell","powerbi.visuals.MatrixBinder.unbindBodyCell","powerbi.visuals.MatrixBinder.registerColumnHeaderClickHandler","powerbi.visuals.MatrixBinder.unregisterColumnHeaderClickHandler","powerbi.visuals.MatrixBinder.bindCornerCell","powerbi.visuals.MatrixBinder.unbindCornerCell","powerbi.visuals.MatrixBinder.bindEmptySpaceHeaderCell","powerbi.visuals.MatrixBinder.unbindEmptySpaceHeaderCell","powerbi.visuals.MatrixBinder.bindEmptySpaceFooterCell","powerbi.visuals.MatrixBinder.unbindEmptySpaceFooterCell","powerbi.visuals.MatrixBinder.getHeaderLabel","powerbi.visuals.MatrixBinder.getCellContent","powerbi.visuals.MatrixBinder.hasRowGroups","powerbi.visuals.MatrixBinder.getNodeLabel","powerbi.visuals.MatrixBinder.bindHeader","powerbi.visuals.MatrixBinder.getSortableCornerColumnMetadata","powerbi.visuals.MatrixBinder.getRowHeaderMetadata","powerbi.visuals.MatrixBinder.getColumnHeaderMetadata","powerbi.visuals.MatrixBinder.getHierarchyMetadata","powerbi.visuals.MatrixBinder.getSortableHeaderColumnMetadata","powerbi.visuals.Matrix","powerbi.visuals.Matrix.constructor","powerbi.visuals.Matrix.customizeQuery","powerbi.visuals.Matrix.getSortableRoles","powerbi.visuals.Matrix.init","powerbi.visuals.Matrix.converter","powerbi.visuals.Matrix.onResizing","powerbi.visuals.Matrix.getColumnWidthManager","powerbi.visuals.Matrix.onDataChanged","powerbi.visuals.Matrix.populateColumnWidths","powerbi.visuals.Matrix.columnWidthChanged","powerbi.visuals.Matrix.persistColumnWidths","powerbi.visuals.Matrix.updateViewport","powerbi.visuals.Matrix.refreshControl","powerbi.visuals.Matrix.getLayoutKind","powerbi.visuals.Matrix.createOrUpdateHierarchyNavigator","powerbi.visuals.Matrix.createTablixControl","powerbi.visuals.Matrix.createColumnWidthManager","powerbi.visuals.Matrix.createControl","powerbi.visuals.Matrix.updateInternal","powerbi.visuals.Matrix.shouldClearControl","powerbi.visuals.Matrix.onBindRowHeader","powerbi.visuals.Matrix.onColumnHeaderClick","powerbi.visuals.Matrix.needsMoreData","powerbi.visuals.Matrix.enumerateObjectInstances","powerbi.visuals.Matrix.shouldAllowHeaderResize","powerbi.visuals.Matrix.verifyHeaderResize","powerbi.visuals.Treemap","powerbi.visuals.Treemap.constructor","powerbi.visuals.Treemap.getLayout","powerbi.visuals.Treemap.init","powerbi.visuals.Treemap.converter","powerbi.visuals.Treemap.getValuesFromCategoricalDataView","powerbi.visuals.Treemap.getCullableValue","powerbi.visuals.Treemap.update","powerbi.visuals.Treemap.onDataChanged","powerbi.visuals.Treemap.onResizing","powerbi.visuals.Treemap.onClearSelection","powerbi.visuals.Treemap.enumerateObjectInstances","powerbi.visuals.Treemap.enumerateDataPoints","powerbi.visuals.Treemap.enumerateLegend","powerbi.visuals.Treemap.checkValueForShape","powerbi.visuals.Treemap.calculateTreemapSize","powerbi.visuals.Treemap.initViewportDependantProperties","powerbi.visuals.Treemap.hasChildrenWithIdentity","powerbi.visuals.Treemap.canDisplayMajorLabel","powerbi.visuals.Treemap.canDisplayMinorLabel","powerbi.visuals.Treemap.createMajorLabelText","powerbi.visuals.Treemap.createMinorLabelText","powerbi.visuals.Treemap.getFill","powerbi.visuals.Treemap.getFillOpacity","powerbi.visuals.Treemap.updateInternal","powerbi.visuals.Treemap.renderLegend","powerbi.visuals.Treemap.getNodeClass","powerbi.visuals.Treemap.createTreemapShapeLayout","powerbi.visuals.Treemap.createTreemapZeroShapeLayout","powerbi.visuals.Treemap.drawDefaultShapes","powerbi.visuals.Treemap.drawDefaultHighlightShapes","powerbi.visuals.Treemap.drawDefaultMajorLabels","powerbi.visuals.Treemap.drawDefaultMinorLabels","powerbi.visuals.Treemap.cleanMinorLabels","powerbi.visuals.Card","powerbi.visuals.Card.constructor","powerbi.visuals.Card.init","powerbi.visuals.Card.onDataChanged","powerbi.visuals.Card.onResizing","powerbi.visuals.Card.updateViewportProperties","powerbi.visuals.Card.setTextProperties","powerbi.visuals.Card.getCardFormatTextSize","powerbi.visuals.Card.getAdjustedFontHeight","powerbi.visuals.Card.clear","powerbi.visuals.Card.updateInternal","powerbi.visuals.Card.displayStatusGraphic","powerbi.visuals.Card.getDefaultFormatSettings","powerbi.visuals.Card.enumerateObjectInstances","powerbi.visuals.OwlHappiness","powerbi.visuals.OwlGauge","powerbi.visuals.OwlGauge.constructor","powerbi.visuals.OwlGauge.converter","powerbi.visuals.OwlGauge.getGaugeData","powerbi.visuals.OwlGauge.init","powerbi.visuals.OwlGauge.update","powerbi.visuals.OwlGauge.updateGauge","powerbi.visuals.OwlGauge.happinessLevel","powerbi.visuals.OwlGauge.updateViewportSize","powerbi.visuals.NoMapLocationWarning","powerbi.visuals.NoMapLocationWarning.constructor","powerbi.visuals.NoMapLocationWarning.code","powerbi.visuals.NoMapLocationWarning.getMessages","powerbi.visuals.FilledMapWithoutValidGeotagCategoryWarning","powerbi.visuals.FilledMapWithoutValidGeotagCategoryWarning.constructor","powerbi.visuals.FilledMapWithoutValidGeotagCategoryWarning.code","powerbi.visuals.FilledMapWithoutValidGeotagCategoryWarning.getMessages","powerbi.visuals.GeometryCulledWarning","powerbi.visuals.GeometryCulledWarning.constructor","powerbi.visuals.GeometryCulledWarning.code","powerbi.visuals.GeometryCulledWarning.getMessages","powerbi.visuals.NegativeValuesNotSupportedWarning","powerbi.visuals.NegativeValuesNotSupportedWarning.constructor","powerbi.visuals.NegativeValuesNotSupportedWarning.code","powerbi.visuals.NegativeValuesNotSupportedWarning.getMessages","powerbi.visuals.AllNegativeValuesWarning","powerbi.visuals.AllNegativeValuesWarning.constructor","powerbi.visuals.AllNegativeValuesWarning.code","powerbi.visuals.AllNegativeValuesWarning.getMessages","powerbi.visuals.NaNNotSupportedWarning","powerbi.visuals.NaNNotSupportedWarning.constructor","powerbi.visuals.NaNNotSupportedWarning.code","powerbi.visuals.NaNNotSupportedWarning.getMessages","powerbi.visuals.InfinityValuesNotSupportedWarning","powerbi.visuals.InfinityValuesNotSupportedWarning.constructor","powerbi.visuals.InfinityValuesNotSupportedWarning.code","powerbi.visuals.InfinityValuesNotSupportedWarning.getMessages","powerbi.visuals.ValuesOutOfRangeWarning","powerbi.visuals.ValuesOutOfRangeWarning.constructor","powerbi.visuals.ValuesOutOfRangeWarning.code","powerbi.visuals.ValuesOutOfRangeWarning.getMessages","powerbi.visuals.ZeroValueWarning","powerbi.visuals.ZeroValueWarning.constructor","powerbi.visuals.ZeroValueWarning.code","powerbi.visuals.ZeroValueWarning.getMessages","powerbi.visuals.VisualKPIDataMissingWarning","powerbi.visuals.VisualKPIDataMissingWarning.constructor","powerbi.visuals.VisualKPIDataMissingWarning.code","powerbi.visuals.VisualKPIDataMissingWarning.getMessages","powerbi.visuals.ScriptVisualRefreshWarning","powerbi.visuals.ScriptVisualRefreshWarning.constructor","powerbi.visuals.ScriptVisualRefreshWarning.code","powerbi.visuals.ScriptVisualRefreshWarning.getMessages","powerbi.visuals.WaterfallChart","powerbi.visuals.WaterfallChart.constructor","powerbi.visuals.WaterfallChart.init","powerbi.visuals.WaterfallChart.converter","powerbi.visuals.WaterfallChart.setData","powerbi.visuals.WaterfallChart.enumerateObjectInstances","powerbi.visuals.WaterfallChart.enumerateSentimentColors","powerbi.visuals.WaterfallChart.calculateLegend","powerbi.visuals.WaterfallChart.hasLegend","powerbi.visuals.WaterfallChart.createClippedDataIfOverflowed","powerbi.visuals.WaterfallChart.calculateAxesProperties","powerbi.visuals.WaterfallChart.getDisplayUnitValueFromAxisFormatter","powerbi.visuals.WaterfallChart.lookupXValue","powerbi.visuals.WaterfallChart.getXAxisCreationOptions","powerbi.visuals.WaterfallChart.getYAxisCreationOptions","powerbi.visuals.WaterfallChart.getPreferredPlotArea","powerbi.visuals.WaterfallChart.getVisualCategoryAxisIsScalar","powerbi.visuals.WaterfallChart.overrideXScale","powerbi.visuals.WaterfallChart.setFilteredData","powerbi.visuals.WaterfallChart.createRects","powerbi.visuals.WaterfallChart.createConnectors","powerbi.visuals.WaterfallChart.render","powerbi.visuals.WaterfallChart.onClearSelection","powerbi.visuals.WaterfallChart.getSupportedCategoryAxisType","powerbi.visuals.WaterfallChart.getRectTop","powerbi.visuals.WaterfallChart.getAvailableWidth","powerbi.visuals.WaterfallChart.getAvailableHeight","powerbi.visuals.WaterfallChart.getSentimentColorsFromObjects","powerbi.visuals.WaterfallChart.createLabelDataPoints","powerbi.visuals.ToolTipComponent","powerbi.visuals.ToolTipComponent.constructor","powerbi.visuals.ToolTipComponent.isTooltipComponentVisible","powerbi.visuals.ToolTipComponent.setTestScreenSize","powerbi.visuals.ToolTipComponent.show","powerbi.visuals.ToolTipComponent.move","powerbi.visuals.ToolTipComponent.hide","powerbi.visuals.ToolTipComponent.createTooltipContainer","powerbi.visuals.ToolTipComponent.setTooltipContent","powerbi.visuals.ToolTipComponent.getTooltipPosition","powerbi.visuals.ToolTipComponent.setPosition","powerbi.visuals.ToolTipComponent.setArrowPosition","powerbi.visuals.ToolTipComponent.getArrowElement","powerbi.visuals.ToolTipComponent.getClickedScreenArea","powerbi.visuals.TooltipManager","powerbi.visuals.TooltipManager.addTooltip","powerbi.visuals.TooltipManager.showDelayedTooltip","powerbi.visuals.TooltipManager.hideDelayedTooltip","powerbi.visuals.TooltipManager.setLocalizedStrings","powerbi.visuals.TooltipManager.showTooltipEventHandler","powerbi.visuals.TooltipManager.moveTooltipEventHandler","powerbi.visuals.TooltipManager.hideTooltipEventHandler","powerbi.visuals.TooltipManager.clearTooltipTimeout","powerbi.visuals.TooltipManager.canDisplayTooltip","powerbi.visuals.TooltipManager.getTouchStartEventName","powerbi.visuals.TooltipManager.getTouchEndEventName","powerbi.visuals.TooltipManager.getCoordinates","powerbi.visuals.TooltipManager.attachGlobalEvents","powerbi.visuals.TooltipManager.getClickedArea","powerbi.visuals.TooltipBuilder","powerbi.visuals.TooltipBuilder.createTooltipInfo","powerbi.visuals.TooltipBuilder.createTooltipData","powerbi.visuals.TooltipBuilder.getFormattedValue","powerbi.visuals.TooltipBuilder.getFormatStringFromColumn","powerbi.visuals.visualStyles","powerbi.visuals.visualStyles.create","powerbi.visuals.DonutChart","powerbi.visuals.DonutChart.constructor","powerbi.visuals.DonutChart.converter","powerbi.visuals.DonutChart.init","powerbi.visuals.DonutChart.update","powerbi.visuals.DonutChart.onDataChanged","powerbi.visuals.DonutChart.onResizing","powerbi.visuals.DonutChart.enumerateObjectInstances","powerbi.visuals.DonutChart.enumerateDataPoints","powerbi.visuals.DonutChart.enumerateLegend","powerbi.visuals.DonutChart.setInteractiveChosenSlice","powerbi.visuals.DonutChart.calculateRadius","powerbi.visuals.DonutChart.getScaleForLegendArrow","powerbi.visuals.DonutChart.initViewportDependantProperties","powerbi.visuals.DonutChart.initDonutProperties","powerbi.visuals.DonutChart.mergeDatasets","powerbi.visuals.DonutChart.updateInternal","powerbi.visuals.DonutChart.createLabels","powerbi.visuals.DonutChart.createLabelDataPoints","powerbi.visuals.DonutChart.getTextSize","powerbi.visuals.DonutChart.createLabelDataPoint","powerbi.visuals.DonutChart.renderLegend","powerbi.visuals.DonutChart.addInteractiveLegendArrow","powerbi.visuals.DonutChart.calculateSliceAngles","powerbi.visuals.DonutChart.assignInteractions","powerbi.visuals.DonutChart.setDrilldown","powerbi.visuals.DonutChart.assignInteractiveChartInteractions","powerbi.visuals.DonutChart.getAngleFromDragEvent","powerbi.visuals.DonutChart.interactiveDragStart","powerbi.visuals.DonutChart.interactiveDragMove","powerbi.visuals.DonutChart.interactiveDragEnd","powerbi.visuals.DonutChart.updateInternalToMove","powerbi.visuals.DonutChart.drawDefaultShapes","powerbi.visuals.DonutChart.drawDefaultHighlightShapes","powerbi.visuals.DonutChart.isSingleColor","powerbi.visuals.DonutChart.drawStrokeForDonutChart","powerbi.visuals.DonutChart.onClearSelection","powerbi.visuals.DonutChart.getLayout","powerbi.visuals.DonutChart.getHighlightRadius","powerbi.visuals.DonutChart.cullDataByViewport","powerbi.visuals.DonutChartInteractiveLegend","powerbi.visuals.DonutChartInteractiveLegend.constructor","powerbi.visuals.DonutChartInteractiveLegend.drawLegend","powerbi.visuals.DonutChartInteractiveLegend.updateLegend","powerbi.visuals.DonutChartInteractiveLegend.assignInteractions","powerbi.visuals.DonutChartInteractiveLegend.dragLegend","powerbi.visuals.DonutChartInteractiveLegend.shouldChangeIndexInNonCycling","powerbi.visuals.DonutChartInteractiveLegend.getCyclingCurrentIndex","powerbi.visuals.DonutChartInteractiveLegend.updateLegendItemsBlocks","powerbi.visuals.DonutChartInteractiveLegend.updateLabelBlocks","powerbi.visuals.DonutChartInteractiveLegend.createBasicLegendItemSpan","powerbi.visuals.DonutChartInteractiveLegend.createLegendItemSpan","powerbi.visuals.DonutChartInteractiveLegend.legendBoxSize","powerbi.visuals.DonutChartInteractiveLegend.spanWidth","powerbi.visuals.DonutChartConversion","powerbi.visuals.DonutChartConversion.DonutChartConverter","powerbi.visuals.DonutChartConversion.DonutChartConverter.constructor","powerbi.visuals.DonutChartConversion.DonutChartConverter.normalizedMeasureAndValue","powerbi.visuals.DonutChartConversion.DonutChartConverter.convert","powerbi.visuals.DonutChartConversion.DonutChartConverter.getLegendTitle","powerbi.visuals.DonutChartConversion.DonutChartConverter.convertCategoricalWithSlicing","powerbi.visuals.DonutChartConversion.DonutChartConverter.convertMeasures","powerbi.visuals.DonutChartConversion.DonutChartConverter.convertSeries","powerbi.visuals.DonutChartConversion.DonutChartConverter.convertDataLabelSettings","powerbi.visuals.DonutChartConversion.DonutChartConverter.convertLegendData","powerbi.visuals.ScriptVisual","powerbi.visuals.ScriptVisual.constructor","powerbi.visuals.ScriptVisual.init","powerbi.visuals.ScriptVisual.update","powerbi.visuals.ScriptVisual.getLastSavedImage","powerbi.visuals.ScriptVisual.updateLastSavedImage","powerbi.visuals.plugins","powerbi.visuals.CanvasBackgroundHelper","powerbi.visuals.CanvasBackgroundHelper.getDefaultColor","powerbi.visuals.CanvasBackgroundHelper.getDefaultValues"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0vGCrJA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,IAAO,OAAO,CAcb;AAdD,WAAO,OAAO,EAAC,CAAC;IACZA,WAAYA,kBAAkBA;QAC1BC,mGAAmGA;QACnGA,mEAAQA,CAAAA;QACRA,wGAAwGA;QACxGA,iEAAOA,CAAAA;QACPA,0EAA0EA;QAC1EA,qFAAiBA,CAAAA;IACrBA,CAACA,EAPWD,0BAAkBA,KAAlBA,0BAAkBA,QAO7BA;IAPDA,IAAYA,kBAAkBA,GAAlBA,0BAOXA,CAAAA;IAEDA,WAAYA,6BAA6BA;QACrCE,qFAAUA,CAAAA;QACVA,qFAAUA,CAAAA;IACdA,CAACA,EAHWF,qCAA6BA,KAA7BA,qCAA6BA,QAGxCA;IAHDA,IAAYA,6BAA6BA,GAA7BA,qCAGXA,CAAAA;AACLA,CA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CA,IAAIA,CAACA,SAASA,CAACA,SAASA,CAACA,CAACA;gBAC1BA,MAAMA,CAACA,qBAAaA,CAACA,OAAOA,CAACA;YACjCA,EAAEA,CAACA,CAACA,IAAIA,CAACA,OAAOA,CAACA,SAASA,CAACA,CAACA;gBACxBA,MAAMA,CAACA,qBAAaA,CAACA,KAAKA,CAACA;YAC/BA,EAAEA,CAACA,CAACA,IAAIA,CAACA,MAAMA,CAACA,SAASA,CAACA,CAACA;gBACvBA,MAAMA,CAACA,qBAAaA,CAACA,IAAIA,CAACA;YAC9BA,EAAEA,CAACA,CAACA,IAAIA,CAACA,SAASA,CAACA,SAASA,CAACA,CAACA;gBAC1BA,MAAMA,CAACA,qBAAaA,CAACA,aAAaA,CAACA;YACvCA,EAAEA,CAACA,CAACA,IAAIA,CAACA,QAAQA,CAACA,SAASA,CAACA,CAACA;gBACzBA,MAAMA,CAACA,qBAAaA,CAACA,MAAMA,CAACA;YAChCA,EAAEA,CAACA,CAACA,IAAIA,CAACA,iBAAiBA,CAACA,SAASA,CAACA,CAACA;gBAClCA,MAAMA,CAACA,qBAAaA,CAACA,eAAeA,CAACA;YACzCA,EAAEA,CAACA,CAACA,IAAIA,CAACA,WAAWA,CAACA,SAASA,CAACA,CAACA;gBAC5BA,MAAMA,CAACA,qBAAaA,CAACA,SAASA,CAACA;YACnCA,MAAMA,CAACA,IAAIA,CAACA,mBAAmBA,CAACA,SAASA,CAACA,CAACA;QAC/CA,CAACA;QAEOnB,oDAAgBA,GAAxBA,UAAyBA,YAAoBA;YACzCoB,MAAMA,CAACA,yBAAyBA,CAACA,UAAUA,CAACA,YAAYA,EAAEA;gBACtDA,aAAaA,CAACA,wBAAwBA;gBACtCA,aAAaA,CAACA,0BAA0BA;gBACxCA,aAAaA,CAACA,uBAAuBA;gBACrCA,aAAaA,CAACA,wBAAwBA;aACzCA,CAACA,CAACA;QACPA,CAACA;QAEOpB,kDAAcA,GAAtBA,UAAuBA,YAAoBA;YACvCqB,MAAMA,CAACA,yBAAyBA,CAACA,UAAUA,CAACA,YAAYA,EAAEA;gBACtDA,aAAaA,CAACA,sBAAsBA;gB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C6B,MAAMA,CAACA,yBAAyBA,CAACA,UAAUA,CAACA,YAAYA,EAAEA;gBACtDA,aAAaA,CAACA,yBAAyBA;gBACvCA,aAAaA,CAACA,+BAA+BA;aAChDA,CAACA,CAACA;QACPA,CAACA;QAES7B,sDAAkBA,GAA5BA,UAA6BA,YAAoBA;YAC7C8B,MAAMA,CAACA,yBAAyBA,CAACA,UAAUA,CAACA,YAAYA,EAAEA;gBACtDA,aAAaA,CAACA,0BAA0BA;gBACxCA,aAAaA,CAACA,4BAA4BA;aAC7CA,CAACA,CAACA;QACPA,CAACA;QAEO9B,uDAAmBA,GAA3BA,UAA4BA,SAAiBA;YACzC+B,EAAEA,CAACA,CAACA,SAASA,IAAIA,IAAIA,CAACA;gBAClBA,MAAMA,CAACA,SAASA,CAACA;YACrBA,EAAEA,CAACA,CAACA,IAAIA,CAACA,iBAAiBA,CAACA,SAASA,CAACA,CAACA;gBAClCA,MAAMA,CAACA,qBAAaA,CAACA,QAAQA,CAACA;YAClCA,EAAEA,CAACA,CAACA,IAAIA,CAACA,kBAAkBA,CAACA,SAASA,CAACA,CAACA;gBACnCA,MAAMA,CAACA,qBAAaA,CAACA,SAASA,CAACA;YACnCA,EAAEA,CAACA,CAACA,IAAIA,CAACA,mBAAmBA,CAACA,SAASA,CAACA,CAACA;gBACpCA,MAAMA,CAACA,qBAAaA,CAACA,UAAUA,CAACA;YACpCA,EAAEA,CAACA,CAACA,IAAIA,CAACA,gBAAgBA,CAACA,SAASA,CAACA,CAACA;gBACjCA,MAAMA,CAACA,qBAAaA,CAACA,OAAOA,CAACA;YACjCA,EAAEA,CAACA,CAACA,IAAIA,CAACA,cAAcA,CAACA,SAASA,CAACA,CAACA;gBAC/BA,MAAMA,CAACA,qBAAaA,CAACA,KAAKA,CAACA;YAC/BA,EAAEA,CAACA,CAACA,IAAIA,CAACA,aAAaA,CAACA,SAASA,CAACA,CAACA;gBAC9BA,MAAMA,CAACA,qBAAaA,CAACA,IAAIA,CAACA;YAC9BA,EAAEA,CAACA,CAACA,IAAIA,CAACA,gBAAgBA,CAACA,SAASA,CAACA,CAACA;gBACjCA,MAA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AAEA,IAAIA,EAAEA,IAAIA,EAAEA,IAAIA,EAAEA,IAAIA,EAAEA,IAAIA,EAAEA,IAAIA,EAAEA,IAAIA,EAAEA,IAAIA,EAAEA,IAAIA,EAAEA,IAAIA,EAAEA,IAAIA,EAAEA,IAAIA,EAAEA,IAAIA,EAAEA,IAAIA,EAAEA,IAAIA,EAAEA,IAAIA,EAAEA,IAAIA,EAAEA,IAAIA,EAAEA,IAAIA,EAAEA,IAAIA,EAAEA,IAAIA,EAAEA,IAAIA,EAAEA,IAAIA,EAAEA,IAAIA,EAAEA,IAAIA,EAAEA,IAAIA,EAAEA,IAAIA,EAAEA,IAAIA,EAAEA,IAAIA,EAAEA,IAAIA,EAAEA,IAAIA,EAAEA,IAAIA,EAAEA,IAAIA,EAAEA,IAAIA,EAAEA,IAAIA,EAAEA,IAAIA,EAAEA,IAAIA,EAAEA,IAAIA,EAAEA,IAAIA,EAAEA,IAAIA,EAAEA,IAAIA,EAAEA,IAAIA,EAAEA,IAAIA,EAAEA,IAAIA,EAAEA,IAAIA,EAAEA,IAAIA,EAAEA,IAAIA,EAAEA,IAAIA,EAAEA,IAAIA,EAAEA,IAAIA,EAAEA,IAAIA,EAAEA,IAAIA,EAAEA,IAAIA,EAAEA,IAAIA,EAAEA,IAAIA,EAAEA,IAAIA,EAAEA,IAAIA,EAAEA,IAAIA,EAAEA,IAAIA,EAAEA,IAAIA,EAAEA,IAAIA,EAAEA,IAAIA,EAAEA,IAAIA,EAAEA,IAAIA,EAAEA,IAAIA,EAAEA,IAAIA,EAAEA,IAAIA,EAAEA,IAAIA,EAAEA,IAAIA,EAAEA,IAAIA,EAAEA,IAAIA,EAAEA,IAAIA,EAAEA,IAAIA,EAAEA,IAAIA,EAAEA,IAAIA,EAAEA,IAAIA,EAAEA,IAAIA,EAAEA,IAAIA,EAAEA,IAAIA,EAAEA,IAAIA;YAC5kBA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA;YAC1rBA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA;YAC1rBA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,CAACA,CAACA;QACtDA,sBAAeA,GAAGA;YAC3BA,GAAGA,EAAEA,IAAIA,EAAEA,IAAIA,EAAEA,IAAIA,EAAEA,IAAIA,EAAEA,IAAIA,EAAEA,IAAIA,EAAEA,IAAIA,EAAEA,IAAIA,EAAEA,IAAIA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,KAAKA;YAC/qBA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA;YAC9xBA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA;YAC9xBA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,MAAMA,CAACA,CAACA;QAE5MA;;;;WAIGA;QACHA,eAAsBA,GAAWA;YAC7BC,KAAKA,CAACA,WAAWA,CAACA,GAAGA,EAAEA,KAAKA,CAACA,CAACA;YAE9BA,kBAAkBA;YAClBA,EAAEA,CAACA,CAACA,GAAGA,IAAIA,CAACA,CAACA,CAACA,CAACA;gBACXA,EAAEA,CAACA,CAACA,GAAGA,GAAGA,MAAMA,CAACA,eAAeA,CAACA,MAAMA,CAACA,CAACA,CAACA;oBACtCA,MAAMA,CAACA,MAAMA,CAACA,eAAeA,CAACA,GAAGA,CAACA,CAACA;gBACvCA,CAACA;gBAACA,IAAIA,CAACA,CAACA;oBACJA,MAAMA,CAACA,QAAQA,CAACA;gBACpBA,CAACA;YACLA,CAACA;YACDA,WAAWA;YACXA,GAAGA,GAAGA,CAACA,GAAGA,CAACA;YACXA,EAAEA,CAACA,CAACA,GAAGA,GAAGA,CAACA,IAAIA,GAAGA,GAAGA,MAAMA,CAACA,eAAeA,CAACA,MAAMA,CAACA,CAACA,CAACA;gBACjDA,MAAMA,CAACA,MAAMA,CAACA,eAAeA,CAACA,GAAGA,CAACA,CAACA;YACvCA,CAACA;YAACA,IAAIA,CAACA,CAACA;gBACJA,MAAMA,CAACA,CAACA,CAACA;YACbA,CAACA;QACLA,CAACA;QAlBeD,YAAKA,QAkBpBA,CAAAA;QAEDA;;;;WAIGA;QACHA,eAAsBA,GAAWA;YAC7BE,KAAKA,CAACA,MAAMA,CAACA,GAAGA,IAAIA,CAACA,EAAEA,KAAKA,CAACA,CAACA;YAE9BA,0BAA0BA;YAC1BA,EAAEA,CAACA,CAACA,GAAGA,GAAGA,CAACA,IAAIA,GAAGA,GAAGA,IAAIA,CAACA,CAACA,CAACA;gBACxBA,EAAEA,CAACA,CAACA,GAAGA,GAAGA,GAAGA,CAACA,CAACA,CAACA;oBACZA,EAAEA,CAACA,CAACA,GAAGA,GAAGA,GAAGA,CAACA,CAACA,CAACA;wBACZA,EAAEA,CAACA,CAACA,GAAGA,GAAGA,GAAGA,CAACA,CAACA,CAACA;4BACZA,EAAEA,CAACA,CAACA,GAAGA,GAAGA,GAAGA,CAACA,CAACA,CAACA;gCACZA,MAAMA,CAACA,CAACA,CAACA;4BACbA,CAACA;4BAACA,IAAIA,CAACA,CAACA;gCACJA,MAAMA,CAACA,CAACA,CAACA;4BACbA,CAACA;wBACLA,CAACA;wBAACA,IAAIA,CAACA,CAACA;4BACJA,EAAEA,CAACA,CAACA,GAAGA,GAAGA,GAAGA,CAACA,CAACA,CAACA;gCACZA,MAAMA,CAACA,CAACA,CAACA;4BACbA,CAACA;4BAACA,IAAIA,CAACA,CAACA;gCACJA,MAAMA,CAACA,CAACA,CAACA;4BACbA,CAACA;wBACLA,CAACA;oBACLA,CAACA;oBAACA,IAAIA,CAACA,CAACA;wBACJA,EAAEA,CAACA,CAACA,GAAGA,GAAGA,GAAGA,CAACA,CAACA,CAACA;4BACZA,EAAEA,CAACA,CAACA,GAAGA,GAAGA,GAAGA,CAACA,CAACA,CAACA;gCACZA,MAAMA,CAACA,CAACA,CAACA;4BACbA,CAACA;4BAACA,IAAIA,CAACA,CAACA;gCACJA,MAAMA,CAACA,CAACA,CAACA;4BACbA,CAACA;wBACLA,CAACA;wBAACA,IAAIA,CAACA,CAACA;4BACJA,EAAEA,CAACA,CAACA,GAAGA,GAAGA,GAAGA,CAACA,CAACA,CAACA;gCACZA,MAAMA,CAACA,CAACA,CAACA;4BACbA,CAACA;4BAACA,IAAIA,CAACA,CAACA;gCACJA,MAAMA,CAACA,CAACA,CAACA;4BACbA,CAACA;wBACLA,CAACA;oBACLA,CAACA;gBACLA,CAACA;gBAACA,IAAIA,CAACA,CAACA;oBACJA,EAAEA,CAACA,CAACA,GAAGA,GAAGA,IAAIA,CAACA,CAACA,CAACA;wBACbA,EAAEA,CAACA,CAACA,GAAGA,GAAGA,IAAIA,CAACA,CAACA,CAACA;4BACbA,EAAEA,CAACA,CAACA,GAAGA,GAAGA,GAAGA,CAACA,CAACA,CAACA;gCACZA,MAAMA,CAACA,CAACA,CAACA;4BACbA,CAACA;4BAACA,IAAIA,CAACA,CAACA;gCACJA,MAAMA,CAACA,CAACA,CAACA;4BACbA,CAACA;wBACLA,CAACA;wBAACA,IAAIA,CAACA,CAACA;4BACJA,EAAEA,CAACA,CAACA,GAAGA,GAAGA,IAAIA,CAACA,CAACA,CAACA;gCACbA,MAAMA,CAACA,EAAEA,CAACA;4BACdA,CAACA;4BAACA,IAAIA,CAACA,CAACA;gCACJA,MAAMA,CAACA,EAAEA,CAACA;4BACdA,CAACA;wBACLA,CAACA;oBACLA,CAACA;oBAACA,IAAIA,CAACA,CAACA;wBACJA,EAAEA,CAACA,CAACA,GAAGA,GAAGA,IAAIA,CAACA,CAACA,CAACA;4BACbA,EAAEA,CAACA,CAACA,GAAGA,GAAGA,IAAIA,CAACA,CAACA,CAACA;gCACbA,MAAMA,CAACA,EAAEA,CAACA;4BACdA,CAACA;4BAACA,IAAIA,CAACA,CAACA;gCACJA,MAAMA,CAACA,EAAEA,CAACA;4BACdA,CAACA;wBACLA,CAACA;wBAACA,IAAIA,CAACA,CAACA;4BACJA,EAAEA,CAACA,CAACA,GAAGA,GAAGA,IAAIA,CAACA,CAACA,CAACA;gCACbA,MAAMA,CAACA,EAAEA,CAACA;4BACdA,CAACA;4BAACA,IAAIA,CAACA,CAACA;gCACJA,MAAMA,CAACA,EAAEA,CAACA;4BACdA,CAACA;wBACLA,CAACA;oBACLA,CAACA;gBACLA,CAACA;YACLA,CAACA;YAEDA,EAAEA,CAACA,CAACA,GAAGA,GAAGA,KAAKA,IAAIA,GAAGA,GAAGA,CAACA,CAACA,CAACA,CAACA;gBACzBA,EAAEA,CAACA,CAACA,GAAGA,GAAGA,IAAIA,CAACA,CAACA,CAACA;oBACbA,EAAEA,CAACA,CAACA,GAAGA,GAAGA,KAAKA,CAACA,CAACA,CAACA;wBACdA,EAAEA,CAACA,CAACA,GAAGA,GAAGA,KAAKA,CAACA,CAACA,CAACA;4BACdA,EAAEA,CAACA,CAACA,GAAGA,GAAGA,KAAKA,CAACA,CAACA,CAACA;gCACdA,MAAMA,CAACA,CAACA,EAAEA,CAACA;4BACfA,CAACA;4BAACA,IAAIA,CAACA,CAACA;gCACJA,MAAMA,CAACA,CAACA,EAAEA,CAACA;4BACfA,CAACA;wBACLA,CAACA;wBAACA,IAAIA,CAACA,CAACA;4BACJA,EAAEA,CAACA,CAACA,GAAGA,GAAGA,KAAKA,CAACA,CAACA,CAACA;gCACdA,MAAMA,CAACA,CAACA,EAAEA,CAACA;4BACfA,CAACA;4BAACA,IAAIA,CAACA,CAACA;gCACJA,MAAMA,CAACA,CAACA,EAAEA,CAACA;4BACfA,CAACA;wBACLA,CAACA;oBACLA,CAACA;oBAACA,IAAIA,CAACA,CAACA;wBACJA,EAAEA,CAACA,CAACA,GAAGA,GAAGA,KAAKA,CAACA,CAACA,CAACA;4BACdA,EAAEA,CAACA,CAACA,GAAGA,GAAGA,KAAKA,CAACA,CAACA,CAACA;gCACdA,MAAMA,CAACA,CAACA,EAAEA,CAACA;4BACfA,CAACA;4BAACA,IAAIA,CAACA,CAACA;gCACJA,MAAMA,CAACA,CAACA,EAAEA,CAACA;4BACfA,CAACA;wBACLA,CAACA;wBAACA,IAAIA,CAACA,CAACA;4BACJA,EAAEA,CAACA,CAACA,GAAGA,GAAGA,IAAIA,CAACA,CAACA,CAACA;gCACbA,MAAMA,CAACA,CAACA,EAAEA,CAACA;4BACfA,CAACA;4BAACA,IAAIA,CAACA,CAACA;gCACJA,MAAMA,CAACA,CAACA,CAACA,CAACA;4BACdA,CAACA;wBACLA,CAACA;oBACLA,CAACA;gBACLA,CAACA;gBAACA,IAAIA,CAACA,CAACA;oBACJA,EAAEA,CAACA,CAACA,GAAGA,GAAGA,IAAIA,CAACA,CAACA,CAACA;wBACbA,EAAEA,CAACA,CAACA,GAAGA,GAAGA,IAAIA,CAACA,CAACA,CAACA;4BACbA,EAAEA,CAACA,CAACA,GAAGA,GAAGA,IAAIA,CAACA,CAACA,CAACA;gCACbA,MAAMA,CAACA,CAACA,CAACA,CAACA;4BACdA,CAACA;4BAACA,IAAIA,CAACA,CAACA;gCACJA,MAAMA,CAACA,CAACA,CAACA,CAACA;4BACdA,CAACA;wBACLA,CAACA;wBAACA,IAAIA,CAACA,CAACA;4BACJA,EAAEA,CAACA,CAACA,GAAGA,GAAGA,IAAIA,CAACA,CAACA,CAACA;gCACbA,MAAMA,CAACA,CAACA,CAACA,CAACA;4BACdA,CAACA;4BAACA,IAAIA,CAACA,CAACA;gCACJA,MAAMA,CAACA,CAACA,CAACA,CAACA;4BACdA,CAACA;wBACLA,CAACA;oBACLA,CAACA;oBAACA,IAAIA,CAACA,CAACA;wBACJA,EAAEA,CAACA,CAACA,GAAGA,GAAGA,IAAIA,CAACA,CAACA,CAACA;4BACbA,EAAEA,CAACA,CAACA,GAAGA,GAAGA,IAAIA,CAACA,CAACA,CAACA;gCACbA,MAAMA,CAACA,CAACA,CAACA,CAACA;4BACdA,CAACA;4BAACA,IAAIA,CAACA,CAACA;gCACJA,MAAMA,CAACA,CAACA,CAACA,CAACA;4BACdA,CAACA;wBACLA,CAACA;wBAACA,IAAIA,CAACA,CAACA;4BACJA,EAAEA,CAACA,CAACA,GAAGA,GAAGA,IAAIA,CAACA,CAACA,CAACA;gCACbA,MAAMA,CAACA,CAACA,CAACA,CAACA;4BACdA,CAACA;4BAACA,IAAIA,CAACA,CAACA;gCACJA,MAAMA,CAACA,CAACA,CAACA,CAACA;4BACdA,CAACA;wBACLA,CAACA;oBACLA,CAACA;gBACLA,CAACA;YACLA,CAACA;YACDA,uFAAuFA;YACvFA,8BAA8BA;YAC9BA,IAAIA,KAAKA,GAAGA,IAAIA,CAACA,GAAGA,CAACA,GAAGA,CAACA,GAAGA,MAAMA,CAACA,QAAQA,CAACA;YAC5CA,MAAMA,CAACA,MAAMA,CAACA,kBAAkBA,CAACA,KAAKA,CAACA,CAACA;QAC5CA,CAACA;QAvIeF,YAAKA,QAuIpBA,CAAAA;QAEDA;;;;;WAKGA;QACHA,sBAA6BA,CAASA,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,CAACA,CAACA;YAC1CA,EAAEA,CAACA,CAACA,SAASA,KAAKA,CAACA,IAAIA,CAACA,KAAKA,CAACA,CAACA,CAACA,CAACA;gBAC7BA,MAAMA,CAACA,CAACA,CAACA;YACbA,CAACA;YACDA,iCAAiCA;YACjCA,IAAIA,MAAMA,GAAGA,IAAIA,CAACA,KAAKA,CAACA,CAACA,GAAGA,SAASA,CAACA,GAAGA,SAASA,CAACA;YACnDA,IAAIA,aAAaA,GAAGA,IAAIA,CAACA,KAAKA,CAACA,MAAMA,CAACA,KAAKA,CAACA,IAAIA,CAACA,GAAGA,CAACA,CAACA,CAACA,CAACA,GAAGA,MAAMA,CAACA,KAAKA,CAACA,SAASA,CAACA,CAACA,GAAGA,CAACA,CAACA;YACxFA,EAAEA,CAACA,CAACA,aAAaA,GAAGA,CAACA,IAAIA,aAAaA,GAAGA,EAAEA,CAACA,CAACA,CAACA;gBAC1CA,MAAMA,GAAGA,UAAUA,CAACA,MAAMA,CAACA,WAAWA,CAACA,aAAaA,CAACA,CAACA,CAACA;YAC3DA,CAACA;YAEDA,MAAMA,CAACA,MAAMA,CAACA;QAClBA,CAACA;QAdeb,uBAAgBA,mBAc/BA,CAAAA;QAEDA;;;;;WAKGA;QACHA,uBAA8BA,CAASA,EAAEA,GAAWA,EAAEA,GAAWA;YAC7Dc,KAAKA,CAACA,MAAMA,CAACA,GAAGA,IAAIA,GAAGA,EAAEA,kCAAkCA,CAACA,CAACA;YAC7DA,EAAEA,CAACA,CAACA,CAACA,KAAKA,SAASA,IAAIA,CAACA,KAAKA,IAAIA,CAACA,CAACA,CAACA;gBAChCA,MAAMA,CAACA,CAACA,CAACA;YACbA,CAACA;YACDA,EAAEA,CAACA,CAACA,CAACA,GAAGA,GAAGA,CAACA,CAACA,CAACA;gBACVA,MAAMA,CAACA,GAAGA,CAACA;YACfA,CAACA;YACDA,EAAEA,CAACA,CAACA,CAACA,GAAGA,GAAGA,CAACA,CAACA,CAACA;gBACVA,MAAMA,CAACA,GAAGA,CAACA;YACfA,CAACA;YACDA,MAAMA,CAACA,CAACA,CAACA;QACbA,CAACA;QAZed,oBAAa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CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,KAAKA,CAACA;gBAC5BA,CAACA;gBACDA,IAAIA,CAACA,CAACA;oBACFA,2BAA2BA;oBAC3BA,CAACA,GAAGA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,KAAKA,CAACA;gBAC5BA,CAACA;YACLA,CAACA;YAEDA,mCAAmCA;YACnCA,0CAA0CA;YAC1CA,eAAeA;YACfA,CAACA,IAAIA,CAACA,CAACA;YACPA,EAAEA,CAACA,CAACA,CAACA,GAAGA,CAACA,CAACA,CAACA,CAACA;gBACRA,CAACA,IAAIA,CAACA,CAACA;YACXA,CAACA;YAEDA,MAAMA,CAACA;gBACHA,CAACA,EAAEA,CAACA;gBACJA,CAACA,EAAEA,CAACA;gBACJA,CAACA,EAAEA,CAACA;aACPA,CAACA;QACNA,CAACA;QAEDJ,kBAAkBA,QAAkBA;YAChCK,IAAIA,CAACA,EAAEA,CAACA,EAAEA,CAACA,CAACA;YACZA,IAAIA,CAACA,GAAGA,QAAQA,CAACA,CAACA,EACdA,CAACA,GAAGA,QAAQA,CAACA,CAACA,EACdA,CAACA,GAAGA,QAAQA,CAACA,CAACA,CAACA;YAEnBA,EAAEA,CAACA,CAACA,CAACA,KAAKA,CAACA,CAACA,CAACA,CAACA;gBACVA,sCAAsCA;gBACtCA,+BAA+BA;gBAC/BA,CAACA,GAAGA,CAACA,CAACA;gBACNA,CAACA,GAAGA,CAACA,CAACA;gBACNA,CAACA,GAAGA,CAACA,CAACA;YACVA,CAACA;YACDA,IAAIA,CAACA,CAACA;gBACFA,IAAIA,CAACA,EAAEA,CAACA,EAAEA,CAACA,EAAEA,gBAAgBA,EAAEA,YAAYA,EAAEA,SAASA,CAACA;gBAEvDA,yCAAyCA;gBACzCA,sCAAsCA;gBACtCA,SAASA,GAAGA,CAACA,GAAGA,CAACA,CAACA;gBAClBA,YAAYA,GAAGA,IAAIA,CAACA,KAAKA,CAACA,SAASA,CAACA,CAACA;gBAErCA,yCAAyCA;gBACzCA,4CAA4CA;gBAC5CA,WAAWA;gBACXA,gBAAgBA,GAAGA,SAASA,GAAGA,YAAYA,CAACA;gBAE5CA,sCAAsCA;gBACtCA,gBAAgBA;gBAChBA,CAACA,GAAGA,CAACA,GAAGA,CAACA,GAAGA,GAAGA,CAACA,CAACA,CAACA;gBAClBA,CAACA,GAAGA,CAACA,GAAGA,CAACA,GAAGA,GAAGA,CAACA,CAACA,GAAGA,gBAAgBA,CAACA,CAACA,CAACA;gBACvCA,CAACA,GAAGA,CAACA,GAAGA,CAACA,GAAGA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,gBAAgBA,CAACA,CAACA,CAACA,CAACA;gBAE7CA,8CAA8CA;gBAC9CA,uCAAuCA;gBACvCA,MAAMA,CAACA,CAACA,YAAYA,CAACA,CAACA,CAACA;oBACnBA,KAAKA,CAACA;wBACFA,CAACA,GAAGA,CAACA,CAACA;wBACNA,CAACA,GAAGA,CAACA,CAACA;wBACNA,CAACA,GAAGA,CAACA,CAACA;wBACNA,KAAKA,CAACA;oBAEVA,KAAKA,CAACA;wBACFA,CAACA,GAAGA,CAACA,CAACA;wBACNA,CAACA,GAAGA,CAACA,CAACA;wBACNA,CAACA,GAAGA,CAACA,CAACA;wBACNA,KAAKA,CAACA;oBAEVA,KAAKA,CAACA;wBACFA,CAACA,GAAGA,CAACA,CAACA;wBACNA,CAACA,GAAGA,CAACA,CAACA;wBACNA,CAACA,GAAGA,CAACA,CAACA;wBACNA,KAAKA,CAACA;oBAEVA,KAAKA,CAACA;wBACFA,CAACA,GAAGA,CAACA,CAACA;wBACNA,CAACA,GAAGA,CAACA,CAACA;wBACNA,CAACA,GAAGA,CAACA,CAACA;wBACNA,KAAKA,CAACA;oBAEVA,KAAKA,CAACA;wBACFA,CAACA,GAAGA,CAACA,CAACA;wBACNA,CAACA,GAAGA,CAACA,CAACA;wBACNA,CAACA,GAAGA,CAACA,CAACA;wBACNA,KAAKA,CAACA;oBAEVA,KAAKA,CAACA;wBACFA,CAACA,GAAGA,CAACA,CAACA;wBACNA,CAACA,GAAGA,CAACA,CAACA;wBACNA,CAACA,GAAGA,CAACA,CAACA;wBACNA,KAA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UAAUA,CAACA,MAAMA,CAACA;gBAACA,MAAMA,CAACA,SAASA,CAACA,gBAAgBA,CAACA,YAAYA,CAACA,MAAMA,CAACA,CAACA;YAC9EA,EAAEA,CAACA,CAACA,UAAUA,CAACA,IAAIA,CAACA;gBAACA,MAAMA,CAACA,SAASA,CAACA,gBAAgBA,CAACA,YAAYA,CAACA,IAAIA,CAACA,CAACA;YAE1EA,iBAAiBA;YACjBA,EAAEA,CAACA,CAACA,UAAUA,CAACA,SAASA,CAACA,CAACA,CAACA;gBACvBA,EAAEA,CAACA,CAACA,UAAUA,CAACA,SAASA,CAACA,MAAMA,CAACA;oBAACA,MAAMA,CAACA,SAASA,CAACA,gBAAgBA,CAACA,YAAYA,CAACA,YAAYA,CAACA,CAACA;YAClGA,CAACA;YACDA,EAAEA,CAACA,CAACA,UAAUA,CAACA,WAAWA,CAACA;gBAACA,MAAMA,CAACA,SAASA,CAACA,QAAQA,CAACA,UAAUA,CAACA,WAAWA,CAACA,CAACA;YAC9EA,EAAEA,CAACA,CAACA,UAAUA,CAACA,QAAQA,CAACA,CAACA,CAACA;gBACtBA,EAAEA,CAACA,CAACA,UAAUA,CAACA,QAAQA,CAACA,IAAIA,CAACA;oBAACA,MAAMA,CAACA,SAASA,CAACA,gBAAgBA,CAACA,YAAYA,CAACA,YAAYA,CAACA,CAACA;gBAC3FA,EAAEA,CAACA,CAACA,UAAUA,CAACA,QAAQA,CAACA,KAAKA,CAACA;oBAACA,MAAMA,CAACA,SAASA,CAACA,gBAAgBA,CAACA,YAAYA,CAACA,aAAaA,CAACA,CAACA;YACjGA,CAACA;YACDA,EAAEA,CAACA,CAACA,UAAUA,CAACA,SAASA,CAACA,CAACA,CAACA;gBACvBA,EAAEA,CAACA,CAACA,UAAUA,CAACA,SAASA,CAACA,OAAOA,CAACA;oBAACA,MAAMA,CAACA,SAASA,CAACA,gBAAgBA,CAACA,YAAYA,CAACA,OAAOA,CAACA,CAACA;gBAC1FA,EAAEA,CAACA,CAACA,UAAUA,CAACA,SAASA,CAACA,IAAIA,CAACA;oBAACA,MAAMA,CAACA,SAASA,CAACA,gBAAgBA,CAACA,YAAYA,CAACA,IAAIA,CAACA,CAACA;gBACpFA,EAAEA,CAACA,CAACA,UAAUA,CAACA,SAASA,CAACA,SAASA,CAACA;oBAACA,MAAMA,CAACA,SAASA,CAACA,gBAAgBA,CAACA,YAAYA,CAACA,SAASA,CAACA,CAACA;gBAC9FA,EAAEA,CAACA,CAACA,UAAUA,CAACA,SAASA,CAACA,OAAOA,CAACA;oBAACA,MAAMA,CAACA,SAASA,CAACA,gBAAgBA,CAACA,YAAYA,CAACA,OAAOA,CAACA,CAACA;gBAC1FA,EAAEA,CAACA,CAACA,UAAUA,CAACA,SAASA,CAACA,MAAMA,CAACA;oBAACA,MAAMA,CAACA,SAASA,CAACA,gBAAgBA,CAACA,YAAYA,CAACA,MAAMA,CAACA,CAACA;gBACxFA,EAAEA,CAACA,CAACA,UAAUA,CAACA,SAASA,CAACA,MAAMA,CAACA;oBAACA,MAAMA,CAACA,SAASA,CAACA,gBAAgBA,CAACA,YAAYA,CAACA,MAAMA,CAACA,CAACA;gBACxFA,EAAEA,CAACA,CAACA,UAAUA,CAACA,SAASA,CAACA,UAAUA,CAACA;oBAACA,MAAMA,CAACA,SAASA,CAACA,gBAAgBA,CAACA,YAAYA,CAACA,eAAeA,CAACA,CAACA;gBACrGA,EAAEA,CAACA,CAACA,UAAUA,CAACA,SAASA,CAACA,eAAeA,CAACA;oBAACA,MAAMA,CAACA,SAASA,CAACA,gBAAgBA,CAACA,YAAYA,CAACA,eAAeA,CAACA,CAACA;gBAC1GA,EAAEA,CAACA,CAACA,UAAUA,CAACA,SAASA,CAACA,KAAKA,CAACA;oBAACA,MAAMA,CAACA,SAASA,CAACA,gBAAgBA,CAACA,YAAYA,CAACA,KAAKA,CAACA,CAACA;gBACtFA,EAAEA,CAACA,CAACA,UAAUA,CAACA,SAASA,CAACA,QAAQA,CAACA;oBAACA,MAAMA,CAACA,SAASA,CAACA,gBAAgBA,CAACA,YAAYA,CAACA,eAAeA,CAACA,CAACA;gBACnGA,EAAEA,CAACA,CAACA,UAAUA,CAACA,SAASA,CAACA,SAASA,CAACA;oBAACA,MAAMA,CAACA,SAASA,CAACA,gBAAgBA,CAACA,YAAYA,CAACA,gBAAgBA,CAACA,CAACA;YACzGA,CAACA;YACDA,EAAEA,CAACA,CAACA,UAAUA,CAACA,IAAIA,CAACA,CAACA,CAACA;gBAClBA,EAAEA,CAACA,CAACA,UAAUA,CAACA,IAAIA,CAACA,KAAKA,CAACA;oBAACA,MAAMA,CAACA,SAASA,CAACA,gBAAgBA,CAACA,YAAYA,CAACA,KAAKA,CAACA,CAACA;gBACjFA,EAAEA,CAACA,CAACA,UAAUA,CAACA,IAAIA,CAACA,QAAQA,CAACA;oBAACA,MAAMA,CAACA,SAASA,CAACA,gBAAgBA,CAACA,YAAYA,CAACA,QAAQA,CAACA,CAACA;gBACvFA,EAAEA,CAACA,CAACA,UAAUA,CAACA,IAAIA,CAACA,MAAMA,CAACA;oBAACA,MAAMA,CAACA,SAASA,CAACA,gBAAgBA,CAACA,YAAYA,CAACA,MAAMA,CAACA,CAACA;YACvFA,CAACA;YACDA,EAAEA,CAACA,CAACA,UAAUA,CAACA,UAAUA,CAACA,CAACA,CAACA;gBACxBA,EAAEA,CAACA,CAACA,UAAUA,CAACA,UAAUA,CAACA,KAAKA,CAACA;oBAACA,MAAMA,CAACA,SAASA,CAACA,gBAAgBA,CAACA,YAAYA,CAACA,KAAKA,CAACA,CAACA;gBACvFA,EAAEA,CAACA,CAACA,UAAUA,CAACA,UAAUA,CAACA,YAAYA,CAACA;oBAACA,MAAMA,CAACA,SAASA,CAACA,gBAAgBA,CAACA,YAAYA,CAACA,YAAYA,CAACA,CAACA;gBACrGA,EAAEA,CAACA,CAACA,UAAUA,CAACA,UAAUA,CAACA,SAASA,CAACA;oBAACA,MAAMA,CAACA,SAASA,CAACA,gBAAgBA,CAACA,YAAYA,CAACA,SAASA,CAACA,CAACA;gBAC/FA,EAAEA,CAACA,CAACA,UAAUA,CAACA,UAAUA,CAACA,iBAAiBA,CAACA;oBAACA,MAAMA,CAACA,SAASA,CAACA,gBAAgBA,CAACA,YAAYA,CAACA,iBAAiBA,CAACA,CAACA;gBAC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ACA;gBACDA,IAAIA,CAACA,EAAEA,CAACA,CAACA,mBAAmBA,CAACA,UAAUA,CAACA,CAACA,CAACA;oBACtCA,EAAEA,CAACA,CAACA,mBAAmBA,CAACA,UAAUA,CAACA,iBAAiBA,CAACA,CAACA,CAACA;wBACnDA,MAAMA,CAACA,kBAAaA,CAACA,MAAMA,CAACA,CAACA,KAAKA,CAACA,CAACA;oBACxCA,CAACA;oBACDA,IAAIA,CAACA,CAACA;wBACFA,MAAMA,CAACA,kBAAaA,CAACA,IAAIA,CAASA,KAAKA,CAACA,CAACA;oBAC7CA,CAACA;gBACLA,CAACA;gBACDA,IAAIA,CAACA,EAAEA,CAACA,CAACA,mBAAmBA,CAACA,WAAWA,CAACA,CAACA,CAACA;oBACvCA,EAAEA,CAACA,CAACA,CAACA,CAACA,SAASA,CAACA,KAAKA,CAACA,CAACA;wBACnBA,MAAMA,CAACA,kBAAaA,CAACA,MAAMA,CAACA,CAACA,KAAKA,CAACA,CAACA;oBACxCA,IAAIA;wBACAA,MAAMA,CAACA,kBAAaA,CAACA,IAAIA,CAASA,KAAKA,CAACA,CAACA;gBACjDA,CAACA;gBACDA,IAAIA,CAACA,EAAEA,CAACA,CAACA,mBAAmBA,CAACA,IAAIA,CAACA,CAACA,CAACA;oBAChCA,EAAEA,CAACA,CAACA,KAAKA,CAACA,CAACA,CAACA;wBACRA,KAAKA,GAAGA,kBAAaA,CAACA,IAAIA,CAASA,KAAKA,CAACA,CAACA;oBAC9CA,CAACA;oBAACA,IAAIA,CAACA,CAACA;wBACJA,KAAKA,GAAGA,IAAIA,CAACA;oBACjBA,CAACA;gBACLA,CAACA;gBACDA,IAAIA,CAACA,EAAEA,CAACA,CAA4BA,mBAAoBA,CAACA,KAAKA,CAACA,CAACA,CAACA;oBAC7DA,EAAEA,CAACA,CAACA,KAAKA,CAACA,CAACA,CAACA;wBACRA,IAAIA,UAAUA,GAAeA,KAAKA,CAACA;wBACnCA,IAAIA,eAAeA,GAAoBA;4BACnCA,IAAIA,EAAEA,kBAAaA,CAACA,IAAIA,CAACA,UAAUA,CAACA,IAAIA,CAACA;4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,UAAUA,CAACA,CAACA;wCACvCA,CAACA;wCACDA,eAAeA,GAAGA,CAACA,CAACA;oCACxBA,CAACA;oCAACA,IAAIA,CAACA,CAACA;wCACJA,eAAeA,EAAEA,CAACA;oCACtBA,CAACA;gCACLA,CAACA;4BACLA,CAACA;4BACDA,EAAEA,CAACA,CAACA,EAAEA,GAAGA,CAACA,CAACA,CAACA,CAACA,CAACA;gCACVA,EAAEA,CAACA,CAACA,MAAMA,IAAIA,UAAUA,KAAKA,gBAAgBA,CAACA,CAACA,CAACA;gCAEhDA,CAACA;gCAACA,IAAIA,CAACA,CAACA;oCACJA,MAAMA,GAAGA,KAAKA,CAACA,MAAMA,CAACA,EAAEA,CAACA,GAAGA,MAAMA,CAACA;gCACvCA,CAACA;gCACDA,EAAEA,EAAEA,CAACA;4BACTA,CAACA;4BAACA,IAAIA,CAACA,EAAEA,CAACA,CAACA,UAAUA,KAAKA,gBAAgBA,CAACA,CAACA,CAACA;gCACzCA,MAAMA,GAAGA,UAAUA,GAAGA,MAAMA,CAACA;4BACjCA,CAACA;wBACLA,CAACA;wBACDA,KAAKA,CAACA;oBACVA,KAAKA,GAAGA;wBACJA,iCAAiCA;wBACjCA,KAAKA,CAACA;oBACVA;wBACIA,UAAUA,GAAGA,UAAUA,GAAGA,UAAUA,CAACA;wBACrCA,KAAKA,CAACA;gBACdA,CAACA;YACLA,CAACA;YAEDA,8IAA8IA;YAC9IA,EAAEA,CAACA,CAACA,CAACA,mBAAmBA,CAACA,CAACA,CAACA;gBACvBA,EAAEA,CAACA,CAACA,EAAEA,GAAGA,CAACA,CAACA,IAAIA,MAAMA,KAAKA,EAAEA,CAACA,CAACA,CAACA;oBAC3BA,EAAEA,CAACA,CAACA,YAAYA,CAACA,CAACA,CAACA;wBACfA,OAAOA,EAAEA,GAAGA,CAACA,CAACA,EAAEA,CAACA;4BACbA,EAAEA,CAACA,CAACA,eAAeA,KAAKA,SAASA,CAACA,CAACA,CAACA;gCAChCA,MAAMA,GAAGA,cAAcA,GAAGA,MAAMA,CAACA;gCACjCA,UAAUA,EAAEA,CAACA;gCACbA,EAAEA,CAACA,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A,CAACA,WAAWA,CAACA,CAACA,CAACA,CAACA;oBACpCA,IAAIA,YAAYA,GAAGA,CAACA,CAACA;oBACrBA,EAAEA,CAACA,CAACA,IAAIA,CAACA,aAAaA,CAACA,IAAIA,CAACA,WAAWA,CAACA,CAACA,CAACA,CAACA;wBACvCA,YAAYA,GAAGA,IAAIA,CAACA,GAAGA,CAACA,CAACA,EAAEA,CAACA,IAAIA,CAACA,cAAcA,CAACA,KAAKA,GAAGA,IAAIA,CAACA,kBAAkBA,CAACA,GAAGA,CAACA,CAACA,CAACA;wBACtFA,KAAKA,CAACA,IAAIA,CAACA,WAAWA,EAAEA,eAAOA,CAACA,SAASA,CAACA,YAAYA,EAAEA,CAACA,CAACA,CAACA,CAACA;oBAChEA,CAACA;oBACDA,IAAIA,CAACA,CAACA;wBACFA,YAAYA,GAAGA,IAAIA,CAACA,GAAGA,CAACA,CAACA,IAAIA,CAACA,cAAcA,CAACA,MAAMA,GAAGA,IAAIA,CAACA,mBAAmBA,CAACA,GAAGA,CAACA,CAACA,CAACA;wBACrFA,KAAKA,CAACA,IAAIA,CAACA,WAAWA,EAAEA,eAAOA,CAACA,SAASA,CAACA,CAACA,EAAEA,YAAYA,CAACA,CAACA,CAACA;oBAChEA,CAACA;gBACLA,CAACA;gBACDA,IAAIA,CAACA,CAACA;oBACFA,KAAKA,CAACA,IAAIA,CAACA,WAAWA,EAAEA,IAAIA,CAACA,CAACA;gBAClCA,CAACA;gBAEDA,IAAIA,WAAWA,GAAGA,KAAKA;qBAClBA,SAASA,CAACA,SAASA,CAACA,WAAWA,CAACA,QAAQA,CAACA;qBACzCA,IAAIA,CAACA,SAASA,CAACA,CAACA;gBAErBA,WAAWA,CAACA,KAAKA,EAAEA;qBACdA,MAAMA,CAACA,MAAMA,CAACA;qBACdA,OAAOA,CAACA,SAASA,CAACA,WAAWA,CAACA,KAAKA,EAAEA,IAAIA,CAACA,CAACA;gBAEhDA,WAAWA;qBACNA,KAAKA,CAACA;oBACHA,MAAMA,EAAEA,IAAIA,CAACA,UAAUA;oBACvBA,WAAWA,EAAEA,cAAcA,CAACA,SAASA,CAACA,IAAIA,CAACA,QAAQA,CAACA;oBACpDA,aAAaA,EAAEA,SAASA,CAACA,sBAAsBA;iBAClDA,CAACA;qBACDA,IAAIA,CAACA,UAACA,CAAcA,IAAKA,OAAAA,CAACA,CAACA,IAAIA,EAANA,CAAMA,CAACA;qBAChCA,IAAIA,CAACA;oBACFA,GAAGA,EAAEA,UAACA,CAAcA,IAAKA,OAAAA,CAACA,CAACA,CAACA,EAAHA,CAAGA;oBAC5BA,GAAGA,EAAEA,UAACA,CAAcA,IAAKA,OAAAA,CAACA,CAACA,CAACA,EAAHA,CAAGA;iBAC/BA,CAACA;qBACDA,MAAMA,CAACA,OAAOA,CAACA,CAACA,IAAIA,CAACA,IAAIA,CAACA,KAAKA,CAACA,CAACA;gBAEtCA,WAAWA,CAACA,IAAIA,EAAEA,CAACA,MAAMA,EAAEA,CAACA;gBAE5BA,IAAIA,qBAAqBA,GAAGA,IAAIA,CAACA,UAAUA,CAACA,KAAKA,CAACA,IAAIA,CAACA,oBAAoBA,EAAEA,IAAIA,CAACA,oBAAoBA,GAAGA,MAAMA,CAACA,aAAaA,CAACA,CAACA;gBAE/HA,IAAIA,WAAWA,GAAGA,KAAKA;qBAClBA,SAASA,CAACA,SAASA,CAACA,UAAUA,CAACA,QAAQA,CAACA;qBACxCA,IAAIA,CAACA,qBAAqBA,EAAEA,UAACA,CAAkBA,IAAKA,OAAAA,CAACA,CAACA,QAAQA,CAACA,MAAMA,EAAEA,EAAnBA,CAAmBA,CAACA,CAACA;gBAE9EA,IAAIA,UAAUA,GAAGA,WAAWA,CAACA,KAAKA,EAAEA;qBAC/BA,MAAMA,CAACA,GAAGA,CAACA;qBACXA,OAAOA,CAACA,SAASA,CAACA,UAAUA,CAACA,KAAKA,EAAEA,IAAIA,CAACA,CAACA;gBAE/CA,UAAUA;qBACLA,MAAMA,CAACA,QAAQA,CAACA;qBAChBA,OAAOA,CAACA,SAASA,CAACA,UAAUA,CAACA,KAAKA,EAAEA,IAAIA,CAACA,CAACA;gBAE/CA,UAAUA;qBACLA,MAAMA,CAACA,MAAMA,CAACA;qBACdA,OAAOA,CAACA,SAASA,CAACA,UAAUA,CAACA,KAAKA,EAAEA,IAAIA,CAACA,CAACA;gBAE/CA,UAAUA;qBACLA,MAAMA,CAACA,OAAOA,CAACA;qBACfA,IAAIA,CAACA,UAACA,CAAkBA,IAAKA,OAAAA,CAACA,CAACA,OAAOA,EAATA,CAASA,CAACA,CAACA;gBAE7CA,UAAUA;qBACLA,KAAKA,CAACA;oBACHA,aAAaA,EAAEA,SAASA,CAACA,iBAAiBA;iBAC7CA,CAACA,CAACA;gBAEPA,WAAWA;qBACNA,MAAMA,CAACA,SAASA,CAACA,UAAUA,CAACA,QAAQA,CAACA;qBACrCA,IAAIA,CAACA;oBACFA,IAAIA,EAAEA,UAACA,CAAkBA,EAAEA,CAACA,IAAKA,OAAAA,CAACA,CAACA,aAAaA,CAACA,CAACA,EAAjBA,CAAiBA;oBAClDA,IAAIA,EAAEA,UAACA,CAAkBA,IAAKA,OAAAA,CAACA,CAACA,aAAaA,CAACA,CAACA,EAAjBA,CAAiBA;oBAC/CA,GAAGA,EAAEA,SAASA,CAACA,gBAAgBA;iBAClCA,CAACA;qBACDA,KAAKA,CAACA;oBACHA,MAAMA,EAAEA,UAACA,CAAkBA;wBACvBA,EAAEA,CAACA,CAACA,YAAYA,IAAIA,CAACA,CAACA,CAACA,QAAQA,CAACA;4BAC5BA,MAAMA,CAACA,sBAAcA,CAACA,iBAAiBA,CAACA;wBAC5CA,IAAIA;4BACAA,MAAMA,CAACA,CAACA,CAACA,KAAKA,CAACA;oBACvBA,CAACA;iBACJA,CAACA,CAACA;gBAEPA,WAAWA;qBACNA,MAAMA,CAACA,OAAOA,CAACA;qBACfA,IAAIA,CAACA,UAACA,CAAkBA,IAAKA,OAAAA,CAACA,CAACA,OAAOA,EAATA,CAASA,CAACA,CAACA;gBAE7CA,WAAWA;qBACNA,MAAMA,CAACA,SAASA,CAACA,UAAUA,CAACA,QAAQA,CAACA;qBACrCA,IAAIA,CAACA;oBACFA,GAAGA,EAAEA,UAACA,CAAkBA,IAAKA,OAAAA,CAACA,CAACA,YAAYA,CAACA,CAACA,EAAhBA,CAAgBA;oBAC7CA,GAAGA,EAAEA,UAACA,CAAkBA,IAAKA,OAAAA,CAACA,CAACA,YAAYA,CAACA,CAACA,EAAhBA,CAAgBA;iBAChDA,CAACA;qBACDA,IAAIA,CAACA,UAACA,CAAkBA,IAAKA,OAAAA,CAACA,CAACA,KAAKA,EAAPA,CAAOA,CAACA;qBACrCA,KAAKA,CAACA,MAAMA,EAAEA,IAAIA,CAACA,UAAUA,CAACA;qBAC9BA,KAAKA,CAACA,WAAWA,EAAEA,cAAcA,CAACA,SAASA,CAACA,IAAIA,CAACA,QAAQA,CAACA,CAACA,CAACA;gBAEjEA,EAAEA,CAACA,CAACA,IAAIA,CAACA,oBAAoBA,CAACA,CAACA,CAACA;oBAC5BA,IAAIA,cAAcA,GAAGA,WAAWA,CAACA,MAAMA,CAACA,SAASA,CAACA,UAAUA,CAACA,QAAQA,CAACA,CAACA;oBACvEA,IAAIA,eAAeA,GAA0BA;wBACzCA,WAAWA,EAAEA,WAAWA;wBACxBA,WAAWA,EAAEA,cAAcA;wBAC3BA,YAAYA,EAAEA,IAAIA,CAACA,YAAYA;qBAClCA,CAACA;oBAEFA,IAAIA,CAACA,oBAAoBA,CAACA,IAAIA,CAACA,IAAIA,CAACA,UAAUA,EAAEA,IAAIA,sBAAcA,EAAEA,EAAEA,eAAeA,EAAEA,EAAEA,QAAQA,EAAEA,IAAIA,EAAEA,CAACA,CAACA;gBAC/GA,CAACA;gBAEDA,WAAWA,CAACA,IAAIA,EAAEA,CAACA,MAAMA,EAAEA,CAACA;gBAE5BA,IAAIA,CAACA,oBAAoBA,CAACA,MAAMA,CAACA,gBAAgBA,CAACA,CAACA;gBAEnDA,IAAIA,CAACA,YAAYA,EAAEA,CAACA;YACxBA,CAACA;YAEOT,qCAAiBA,GAAzBA,UAA0BA,MAAaA;gBACnCU,EAAEA,CAACA,CAACA,IAAIA,CAACA,oBAAoBA,IAAIA,MAAMA,CAACA,MAAMA,CAACA,CAACA,CAACA;oBAC7CA,IAAIA,CAACA,oBAAoBA,GAAGA,MAAMA,CAACA,MAAMA,GAAGA,CAACA,CAACA;gBAClDA,CAACA;gBAEDA,EAAEA,CAACA,CAACA,IAAIA,CAACA,oBAAoBA,GAAGA,CAACA,CAACA,CAACA,CAACA;oBAChCA,IAAIA,CAACA,oBAAoBA,GAAGA,CAACA,CAACA;gBAClCA,CAACA;YACLA,CAACA;YAEOV,wCAAoBA,GAA5BA,UAA6BA,KAAaA;gBACtCW,IAAIA,KAAKA,GAAGA,CAACA,CAACA;gBACdA,IAAIA,QAAQA,GAAGA,CAACA,CAACA,CAACA,OAAOA,CAACA,KAAKA,CAACA,CAACA;gBAEjCA,EAAEA,CAACA,CAACA,QAAQA,CAACA,CAACA,CAACA;oBACXA,IAAIA,YAAYA,GAAGA,IAAIA,CAACA,aAAaA,CAACA,IAAIA,CAACA,WAAWA,CAACA,CAACA;oBACxDA,IAAIA,gBAAwBA,CAACA;oBAE7BA,EAAEA,CAACA,CAACA,YAAYA,CAACA,CAACA,CAACA;wBACfA,IAAIA,cAAcA,GAAGA,IAAIA,CAACA,yBAAyBA,GAAGA,SAASA,CAACA,iBAAiBA,GAAGA,SAASA,CAACA,kBAAkBA,GAAGA,IAAIA,CAACA,8BAA8BA,GAAGA,SAASA,CAACA,kBAAkBA,CAACA;wBACtLA,IAAIA,wBAAwBA,GAAGA,SAASA,CAACA,kBAAkBA,GAAGA,SAASA,CAACA,gBAAgBA,CAACA;wBACzFA,IAAIA,wBAAwBA,GAAGA,SAASA,CAACA,gBAAgBA,GAAGA,cAAcA,GAAGA,wBAAwBA,CAACA;wBACtGA,gBAAgBA,GAAGA,IAAIA,CAACA,cAAcA,CAACA,KAAKA,GAAGA,SAASA,CAACA,oBAAoBA,GAAGA,wBAAwBA,GAAGA,SAASA,CAACA,sBAAsBA,CAACA;oBAChJA,CAACA;oBACDA,IAAIA,CAACA,CAACA;wBACFA,gBAAgBA,GAAGA,IAAIA,CAACA,yBAAyBA,GAAGA,SAASA,CAACA,iBAAiBA,GAAGA,SAASA,CAACA,cAAcA;4BACtGA,SAASA,CAACA,cAAcA,GAAGA,CAACA,SAASA,CAACA,sBAAsBA,GAAGA,IAAIA,CAACA,8BAA8BA,CAACA,CAACA;oBAC5GA,CAACA;oBAEDA,IAAIA,cAAcA,GAAGA,SAASA,CAACA,iBAAiBA,CAACA,IAAIA,EAAEA,KAAKA,EAAEA,IAAIA,CAACA,IAAIA,CAACA,QAAQA,CAACA,CAACA;oBAClFA,IAAIA,IAAIA,GAAGA,KAAKA,CAACA;oBACjBA,KAAKA,GAAGA,8BAAsBA,CAACA,mBAAmBA,CAACA,cAAcA,CAACA,CAACA;oBAEnEA,EAAEA,CAACA,CAACA,KAAKA,GAAGA,gBAAgBA,CAACA,CAACA,CAACA;wBAC3BA,IAAIA,GAAGA,8BAAsBA,CAACA,wBAAwBA,CAACA,cAAcA,EAAEA,gBAAgBA,CAACA,CAACA;wBACzFA,KAAKA,GAAGA,gBAAgBA,CAACA;oBAC7BA,CAACA;oBAAAA,CAACA;oBAEFA,EAAEA,CAACA,CAACA,YAAYA,CAACA;wBACbA,KAAKA,IAAIA,SAASA,CAACA,YAAYA,CAACA;oBAEpCA,MAAMA,CAACA;wBACHA,CAACA,EAAEA,CAACA;wBACJA,CAACA,EAAEA,CAACA;wBACJA,IAAIA,EAAEA,IAAIA;wBACVA,KAAKA,EAAEA,KAAKA;qBACfA,CAACA;gBACNA,CAACA;gBACDA,MAAMA,CAACA,IAAIA,CAACA;YAEhBA,CAACA;YACDX,qDAAqDA;YAC7CA,mCAAeA,GAAvBA,UAAwBA,IAAgBA,EAAEA,SAAkBA;gBACxDY,IAAIA,UAAUA,GAAGA,IAAIA,CAACA,UAAUA,CAACA;gBACjCA,EAAEA,CAACA,CAACA,IAAIA,CAACA,UAAUA,CAACA,MAAMA,KAAKA,CAACA,CAACA,CAACA,CAACA;oBAC/BA,MAAMA,CAACA;wBACHA,UAAUA,EAAEA,IAAIA;wBAChBA,aAAaA,EAAEA,CAACA;wBAChBA,KAAKA,EAAEA,IAAIA;wBACXA,gBAAgBA,EAAEA,EAAEA;qBACvBA,CAACA;gBACNA,CAACA;gBAEDA,IAAIA,CAACA,yBAAyBA,GAAGA,cAAcA,CAACA,gBAAgBA,CAACA,IAAIA,CAACA,IAAIA,IAAIA,IAAIA,CAACA,IAAIA,CAACA,QAAQA,KAAKA,SAASA,GAAGA,IAAIA,CAACA,IAAIA,CAACA,QAAQA,GAAGA,SAASA,CAACA,mBAAmBA,CAACA,CAACA;gBACrKA,IAAIA,CAACA,8BAA8BA,GAAGA,CAACA,IAAIA,CAACA,yBAAyBA,GAAGA,SAASA,CAACA,iBAAiBA,CAACA,CAACA;gBAErGA,IAAIA,CAACA,iBAAiBA,CAACA,UAAUA,CAACA,CAACA;gBACnCA,EAAEA,CAACA,CAACA,IAAIA,CAACA,oBAAoBA,GAAGA,UAAUA,CAACA,MAAMA,CAACA,CAACA,CAACA;oBAChDA,UAAUA,GAAGA,UAAUA,CAACA,KAAKA,CAACA,IAAIA,CAACA,oBAAoBA,CAACA,CAACA;gBAC7DA,CAACA;gBAEDA,IAAIA,KAAKA,GAAGA,IAAIA,CAACA,oBAAoBA,CAACA,IAAIA,CAACA,KAAKA,CAACA,CAACA;gBAElDA,IAAIA,SAA4BA,CAACA;gBACjCA,IAAIA,aAAqBA,CAACA;gBAC1BA,EAAEA,CAACA,CAACA,IAAIA,CAACA,aAAaA,CAACA,IAAIA,CAACA,WAAWA,CAACA,CAACA,CAACA,CAACA;oBACvCA,SAASA,GAAGA,IAAIA,CAACA,YAAYA,GAAGA,IAAIA,CAACA,yCAAyCA,CAACA,KAAKA,CAACA,GAAGA,EAAEA,CAACA;oBAC3FA,aAAaA,GAAGA,IAAIA,CAACA,yBAAyBA,CAACA,UAAUA,EAAEA,KAAKA,EAAEA,SAASA,CAACA,CAACA;gBACjFA,CAACA;gBACDA,IAAIA,CAACA,CAACA;oBACFA,SAASA,GAAGA,IAAIA,CAACA,YAAYA,GAAGA,IAAIA,CAACA,uCAAuCA,CAACA,KAAKA,CAACA,GAAGA,EAAEA,CAACA;oBACzFA,aAAaA,GAAGA,IAAIA,CAACA,uBAAuBA,CAACA,UAAUA,EAAEA,KAAKA,EAAEA,SAASA,EAAEA,SAASA,CAACA,CAACA;gBAC1FA,CAACA;gBACDA,MAAMA,CAACA;oBACHA,aAAaA,EAAEA,aAAaA;oBAC5BA,KAAKA,EAAEA,KAAKA;oBACZA,gBAAgBA,EAAEA,SAASA;iBAC9BA,CAACA;YACNA,CAACA;YAEOZ,+CAA2BA,GAAnCA,UAAoCA,gBAAmCA,EAAEA,mBAAmBA,EAAEA,iBAAiBA;gBAC3Ga,EAAEA,CAACA,CAACA,IAAIA,CAACA,oBAAoBA,KAAKA,CAACA,CAACA,CAACA,CAACA;oBAClCA,gBAAgBA,CAACA,KAAKA,EAAEA,CAACA;gBAC7BA,CAACA;gBAEDA,IAAIA,UAAUA,GAAGA,IAAIA,CAACA,cAAcA,CAACA;gBACrCA,IAAIA,CAACA,cAAcA,GAAGA,iBAAiBA,CAACA;gBAExCA,EAAEA,CAACA,CAACA,gBAAgBA,IAAIA,gBAAgBA,CAACA,MAAMA,GAAGA,CAACA,IAAIA,IAAIA,CAACA,cAAcA,KAAKA,mBAAmBA,CAACA,CAACA,CAACA;oBACjGA,IAAIA,CAACA,cAAcA,GAAGA,UAAUA,CAACA;oBACjCA,gBAAgBA,CAACA,MAAMA,GAAGA,gBAAgBA,CAACA,MAAMA,GAAGA,CAACA,CAACA;gBAC1DA,CAACA;YACLA,CAACA;YAEOb,6DAAyCA,GAAjDA,UAAkDA,KAAkBA;gBAChEc,IAAIA,MAAMA,GAAGA,SAASA,CAACA,iBAAiBA,CAACA;gBACzCA,IAAIA,KAAKA,GAAGA,SAASA,CAACA,gBAAgBA,CAACA;gBACvCA,IAAIA,UAAUA,GAAGA,SAASA,CAACA,qBAAqBA,CAACA;gBAEjDA,IAAIA,IAAIA,GAAsBA,EAAEA,CAACA;gBACjCA,IAAIA,UAAUA,GAAGA,KAAKA,GAAGA,KAAKA,CAACA,CAACA,GAAGA,KAAKA,CAACA,KAAKA,GAAGA,CAACA,CAACA;gBACnDA,IAAIA,SAASA,GAAGA,eAAOA,CAACA,WAAWA,CAACA,KAAKA,EAAEA,MAAMA,EAAEA,GAAGA,CAACA,SAASA,CAACA,CAACA;gBAClEA,IAAIA,UAAUA,GAAGA,eAAOA,CAACA,WAAWA,CAACA,KAAKA,EAAEA,MAAMA,EAAEA,CAACA,CAACA,SAASA,CAACA,CAACA;gBAEjEA,IAAIA,CAACA,IAAIA,CAACA;oBACNA,CAACA,EAAEA,UAAUA;oBACbA,CAACA,EAAEA,UAAUA;oBACbA,IAAIA,EAAEA,SAASA,CAACA,IAAIA;oBACpBA,eAAeA,EAAEA,SAASA,CAACA,SAASA;oBACpCA,IAAIA,EAAEA,gBAA4BA;iBACrCA,CAACA,CAACA;gBAEHA,IAAIA,CAACA,IAAIA,CAACA;oBACNA,CAACA,EAAEA,IAAIA,CAACA,cAAcA,CAACA,KAAKA,GAAGA,KAAKA;oBACpCA,CAACA,EAAEA,UAAUA;oBACbA,IAAIA,EAAEA,UAAUA,CAACA,IAAIA;oBACrBA,eAAeA,EAAEA,UAAUA,CAACA,SAASA;oBACrCA,IAAIA,EAAEA,gBAA4BA;iBACrCA,CAACA,CAACA;gBAEHA,MAAMA,CAACA,IAAIA,CAACA;YAChBA,CAACA;YAEOd,2DAAuCA,GAA/CA,UAAgDA,KAAkBA;gBAC9De,IAAIA,MAAMA,GAAGA,SAASA,CAACA,iBAAiBA,CAACA;gBACzCA,IAAIA,KAAKA,GAAGA,SAASA,CAACA,gBAAgBA,CAACA;gBAEvCA,IAAIA,IAAIA,GAAsBA,EAAEA,CAACA;gBACjCA,IAAIA,UAAUA,GAAGA,EAAEA,CAACA;gBACpBA,IAAIA,QAAQA,GAAGA,eAAOA,CAACA,WAAWA,CAACA,KAAKA,EAAEA,MAAMA,EAAEA,GAAGA,CAACA,SAASA,CAACA,CAACA;gBACjEA,IAAIA,WAAWA,GAAGA,eAAOA,CAACA,WAAWA,CAACA,KAAKA,EAAEA,MAAMA,EAAEA,EAAEA,CAACA,SAASA,CAACA,CAACA;gBAEnEA,IAAIA,CAACA,IAAIA,CAACA;oBACNA,CAACA,EAAEA,UAAUA;oBACbA,CAACA,EAAEA,MAAMA,GAAGA,SAASA,CAACA,iBAAiBA,GAAGA,CAACA;oBAC3CA,IAAIA,EAAEA,QAAQA,CAACA,IAAIA;oBACnBA,eAAeA,EAAEA,QAAQA,CAACA,SAASA;oBACnCA,IAAIA,EAAEA,gBAA4BA;iBACrCA,CAACA,CAACA;gBAEHA,IAAIA,CAACA,IAAIA,CAACA;oBACNA,CAACA,EAAEA,UAAUA;oBACbA,CAACA,EAAEA,IAAIA,CAACA,cAAcA,CAACA,MAAMA,GAAGA,MAAMA;oBACtCA,IAAIA,EAAEA,WAAWA,CAACA,IAAIA;oBACtBA,eAAeA,EAAEA,WAAWA,CAACA,SAASA;oBACtCA,IAAIA,EAAEA,gBAA4BA;iBACrCA,CAACA,CAACA;gBAEHA,MAAMA,CAACA,IAAIA,CAACA;YAChBA,CAACA;YAEOf,6CAAyBA,GAAjCA,UAAkCA,UAA6BA,EAAEA,KAAkBA,EAAEA,gBAAmCA;gBACpHgB,KAAKA,CAACA,WAAWA,CAACA,gBAAgBA,EAAEA,kBAAkBA,CAACA,CAACA;gBACxDA,IAAIA,mBAAmBA,GAAGA,CAACA,CAACA;gBAC5BA,IAAIA,mBAAmBA,GAAGA,EAAEA,CAACA;gBAC7BA,IAAIA,yBAAyBA,GAAGA,IAAIA,CAACA,8BAA8BA,GAAGA,CAACA,CAACA;gBACxEA,IAAIA,cAAcA,GAAGA,yBAAyBA,GAAGA,SAASA,CAACA,kBAAkBA,GAAGA,IAAIA,CAACA,8BAA8BA,GAAGA,SAASA,CAACA,kBAAkBA,CAACA;gBACnJA,IAAIA,cAAcA,GAAGA,SAASA,CAACA,gBAAgBA,GAAGA,cAAcA,GAAGA,mBAAmBA,CAACA;gBACvFA,IAAIA,cAAcA,GAAGA,mBAAmBA,GAAGA,CAACA,yBAAyBA,GAAGA,IAAIA,CAACA,8BAA8BA,GAAGA,CAACA,CAACA,CAACA;gBACjHA,IAAIA,yBAAyBA,GAAGA,CAACA,CAACA;gBAClCA,IAAIA,oBAAoBA,GAAGA,SAASA,CAACA,gBAAgBA,GAAGA,CAACA,GAAGA,cAAcA,GAAGA,CAACA,CAACA;gBAC/EA,IAAIA,aAAaA,GAAWA,UAAUA,CAACA,MAAMA,CAACA;gBAE9CA,EAAEA,CAACA,CAACA,KAAKA,CAACA,CAACA,CAACA;oBACRA,yBAAyBA,GAAGA,KAAKA,CAACA,KAAKA,CAACA;oBACxCA,KAAKA,CAACA,CAACA,GAAGA,cAAcA,CAACA;gBAC7BA,CAACA;gBAEDA,EAAEA,CAACA,CAACA,IAAIA,CAACA,oBAAoBA,GAAGA,CAACA,CAACA,CAACA,CAACA;oBAChCA,yBAAyBA,IAAIA,SAASA,CAACA,iBAAiBA,CAACA;gBAC7DA,CAACA;gBAEDA,+DAA+DA;gBAC/DA,8DAA8DA;gBAC9DA,aAAaA;gBACbA,IAAIA,gBAAgBA,GAAGA,UAAUA,CAACA,MAAMA,CAACA;gBACzCA,IAAIA,WAAWA,GAAGA,IAAIA,CAACA,cAAcA,CAACA,KAAKA,CAACA;gBAC5CA,IAAIA,aAAaA,GAAGA,gBAAgBA,GAAGA,CAACA;sBAClCA,CAACA,CAACA,CAACA,WAAWA,GAAGA,yBAAyBA,CAACA,GAAGA,CAACA,oBAAoBA,GAAGA,gBAAgBA,CAACA,CAACA,GAAGA,gBAAgBA,CAACA,GAAGA,CAACA;sBAChHA,CAACA,CAACA;gBACRA,aAAaA,GAAGA,aAAaA,GAAGA,SAASA,CAACA,aAAaA,GAAGA,aAAaA,GAAGA,SAASA,CAACA,aAAaA,CAACA;gBAElGA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,gBAAgBA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;oBACxCA,IAAIA,EAAEA,GAAGA,UAAUA,CAACA,CAACA,CAACA,CAACA;oBAEvBA,EAAEA,CAACA,aAAaA,GAAGA;wBACfA,CAACA,EAAEA,yBAAyBA,GAAGA,SAASA,CAACA,gBAAgBA;wBACzDA,CAACA,EAAEA,cAAcA;qBACpBA,CAACA;oBAEFA,EAAEA,CAACA,YAAYA,GAAGA;wBACdA,CAACA,EAAEA,yBAAyBA,GAAGA,cAAcA;wBAC7CA,CAACA,EAAEA,cAAcA;qBACpBA,CAACA;oBAEFA,IAAIA,cAAcA,GAAGA,SAASA,CAACA,iBAAiBA,CAACA,KAAKA,EAAEA,EAAEA,CAACA,KAAKA,EAAEA,IAAIA,CAACA,IAAIA,CAACA,QAAQA,CAACA,CAACA;oBAEtFA,IAAIA,KAAKA,GAAGA,8BAAsBA,CAACA,mBAAmBA,CAACA,cAAcA,CAACA,CAACA;oBACvEA,IAAIA,gBAAgBA,GAAGA,CAACA,CAACA;oBACzBA,EAAEA,CAACA,CAACA,KAAKA,GAAGA,aAAaA,CAACA,CAACA,CAACA;wBACxBA,gBAAgBA,GAAGA,oBAAoBA,GAAGA,KAAKA,CAACA;oBACpDA,CAACA;oBAACA,IAAIA,CAACA,CAACA;wBACJA,IAAIA,IAAIA,GAAGA,8BAAsBA,CAACA,wBAAwBA,CACtDA,cAAcA,EACdA,aAAaA,CAACA,CAACA;wBACnBA,EAAEA,CAACA,KAAKA,GAAGA,IAAIA,CAACA;wBAChBA,gBAAgBA,GAAGA,oBAAoBA,GAAGA,aAAaA,CAACA;oBAC5DA,CAACA;oBAEDA,yBAAyBA,IAAIA,gBAAgBA,CAACA;oBAE9CA,EAAEA,CAACA,CAACA,yBAAyBA,GAAGA,WAAWA,CAACA,CAACA,CAACA;wBAC1CA,aAAaA,GAAGA,CAACA,CAACA;wBAClBA,KAAKA,CAACA;oBACVA,CAACA;gBACLA,CAACA;gBAEDA,IAAIA,CAACA,kBAAkBA,GAAGA,yBAAyBA,CAACA;gBAEpDA,IAAIA,CAACA,2BAA2BA,CAACA,gBAAgBA,EAAEA,gBAAgBA,EAAEA,aAAaA,CAACA,CAACA;gBAEpFA,MAAMA,CAACA,aAAaA,CAACA;YACzBA,CAACA;YAEOhB,2CAAuBA,GAA/BA,UACIA,UAA6BA,EAC7BA,KAAkBA,EAClBA,gBAAmCA,EACnCA,SAAkBA;gBAJtBiB,iBAwFCA;gBAnFGA,IAAIA,yBAAyBA,GAAGA,IAAIA,CAACA,8BAA8BA,GAAGA,CAACA,CAACA;gBACxEA,IAAIA,UAAUA,GAAGA,yBAAyBA,GAAGA,IAAIA,CAACA,8BAA8BA,GAAGA,CAACA,CAACA;gBACrFA,IAAIA,oBAAoBA,GAAGA,EAAEA,GAAGA,UAAUA,CAACA;gBAC3CA,IAAIA,kBAAkBA,GAAGA,EAAEA,GAAGA,CAACA,UAAUA,GAAGA,GAAGA,CAACA,CAACA;gBACjDA,IAAIA,yBAAyBA,GAAGA,oBAAoBA,CAACA;gBACrDA,IAAIA,gCAAgCA,GAAGA,CAACA,GAAGA,CAACA,UAAUA,GAAGA,GAAGA,CAACA,CAACA;gBAC9DA,IAAIA,wBAAwBA,GAAGA,SAASA,CAACA,kBAAkBA,GAAGA,SAASA,CAACA,gBAAgBA,CAACA;gBACzFA,IAAIA,wBAAwBA,GAAGA,SAASA,CAACA,gBAAgBA,GAAGA,SAASA,CAACA,kBAAkBA,GAAGA,wBAAwBA,CAACA;gBACpHA,IAAIA,2BAA2BA,GAAGA,SAASA;sBACrCA,IAAIA,CAACA,cAAcA,CAACA,KAAKA,GAAGA,SAASA,CAACA,oBAAoBA;0BAC1DA,wBAAwBA,GAAGA,SAASA,CAACA,sBAAsBA;sBAC3DA,IAAIA,CAACA,mBAAmBA;0BACxBA,wBAAwBA,GAAGA,SAASA,CAACA,sBAAsBA,CAACA;gBAClEA,IAAIA,aAAaA,GAAWA,UAAUA,CAACA,MAAMA,CAACA;gBAE9CA,IAAIA,sBAAsBA,GAAGA,CAACA,CAACA;gBAC/BA,IAAIA,YAAYA,GAAGA,IAAIA,CAACA,cAAcA,CAACA,MAAMA,CAACA;gBAE9CA,EAAEA,CAACA,CAACA,KAAKA,CAACA,CAACA,CAACA;oBACRA,yBAAyBA,IAAIA,kBAAkBA,CAACA;oBAChDA,KAAKA,CAACA,CAACA,GAAGA,SAASA,CAACA,kBAAkBA,CAACA;oBACvCA,KAAKA,CAACA,CAACA,GAAGA,kBAAkBA,CAACA;oBAC7BA,sBAAsBA,GAAGA,KAAKA,CAACA,KAAKA,IAAIA,CAACA,CAACA;gBAC9CA,CAACA;gBAEDA,EAAEA,CAACA,CAACA,IAAIA,CAACA,oBAAoBA,GAAGA,CAACA,CAACA;oBAC9BA,yBAAyBA,IAAIA,SAASA,CAACA,iBAAiBA,CAACA;gBAE7DA,IAAIA,gBAAgBA,GAAGA,UAAUA,CAACA,MAAMA,CAACA;gBACzCA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,gBAAgBA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;oBACxCA,IAAIA,EAAEA,GAAGA,UAAUA,CAACA,CAACA,CAACA,CAACA;oBAEvBA,EAAEA,CAACA,aAAaA,GAAGA;wBACfA,CAACA,EAAEA,wBAAwBA;wBAC3BA,CAACA,EAAEA,yBAAyBA,GAAGA,UAAUA;qBAC5CA,CAACA;oBAEFA,EAAEA,CAACA,YAAYA,GAAGA;wBACdA,CAACA,EAAEA,wBAAwBA;wBAC3BA,CAACA,EAAEA,yBAAyBA,GAAGA,gCAAgCA;qBAClEA,CAACA;oBAEFA,IAAIA,cAAcA,GAAGA,SAASA,CAACA,iBAAiBA,CAACA,KAAKA,EAAEA,EAAEA,CAACA,KAAKA,EAAEA,IAAIA,CAACA,IAAIA,CAACA,QAAQA,CAACA,CAACA;oBAEtFA,6DAA6DA;oBAC7DA,sCAAsCA;oBACtCA,IAAIA,KAAKA,GAAGA,8BAAsBA,CAACA,mBAAmBA,CAACA,cAAcA,CAACA,CAACA;oBACvEA,EAAEA,CAACA,CAACA,KAAKA,GAAGA,sBAAsBA,CAACA,CAACA,CAACA;wBACjCA,sBAAsBA,GAAGA,KAAKA,CAACA;oBACnCA,CAACA;oBAEDA,EAAEA,CAACA,CAACA,KAAKA,GAAGA,2BAA2BA,CAACA,CAACA,CAACA;wBACtCA,IAAIA,IAAIA,GAAGA,8BAAsBA,CAACA,wBAAwBA,CACtDA,cAAcA,EACdA,2BAA2BA,CAACA,CAACA;wBACjCA,EAAEA,CAACA,KAAKA,GAAGA,IAAIA,CAACA;oBACpBA,CAACA;oBAEDA,yBAAyBA,IAAIA,oBAAoBA,CAACA;oBAElDA,EAAEA,CAACA,CAACA,yBAAyBA,GAAGA,YAAYA,CAACA,CAACA,CAACA;wBAC3CA,aAAaA,GAAGA,CAACA,CAACA;wBAClBA,KAAKA,CAACA;oBACVA,CAACA;gBACLA,CAACA;gBAEDA,EAAEA,CAACA,CAACA,SAASA,CAACA,CAACA,CAACA;oBACZA,EAAEA,CAACA,CAACA,sBAAsBA,GAAGA,2BAA2BA,CAACA,CAACA,CAACA;wBACvDA,IAAIA,CAACA,mBAAmBA,GAAGA,IAAIA,CAACA,QAAQA,CAACA,KAAKA,GAAGA,IAAIA,CAACA,IAAIA,CAACA,sBAAsBA,GAAGA,wBAAwBA,GAAGA,SAASA,CAACA,sBAAsBA,CAACA,CAACA;oBACrJA,CAACA;oBAACA,IAAIA,CAACA,CAACA;wBACJA,IAAIA,CAACA,mBAAmBA,GAAGA,IAAIA,CAACA,QAAQA,CAACA,KAAKA,GAAGA,IAAIA,CAACA,IAAIA,CAACA,IAAIA,CAACA,cAAcA,CAACA,KAAKA,GAAGA,SAASA,CAACA,oBAAoBA,CAACA,CAACA;oBAC3HA,CAACA;gBACLA,CAACA;gBACDA,IAAIA,CAACA,CAACA;oBACFA,IAAIA,CAACA,QAAQA,CAACA,KAAKA,GAAGA,IAAIA,CAACA,mBAAmBA,CAACA;gBACnDA,CAACA;gBAEDA,IAAIA,CAACA,mBAAmBA,GAAGA,yBAAyBA,CAACA;gBAErDA,gBAAgBA,CAACA,OAAOA,CAACA,UAAAA,CAACA,IAAIA,OAAAA,CAACA,CAACA,CAACA,GAAGA,KAAIA,CAACA,mBAAmBA,GAAGA,CAACA,EAAlCA,CAAkCA,CAACA,CAACA;gBAClEA,IAAIA,CAACA,2BAA2BA,CAACA,gBAAgBA,EAAEA,gBAAgBA,EAAEA,aAAaA,CAACA,CAACA;gBAEpFA,MAAMA,CAACA,aAAaA,CAACA;YACzBA,CAACA;YAEOjB,wCAAoBA,GAA5BA,UAA6BA,MAAyBA;gBAAtDkB,iBAyBCA;gBAxBGA,IAAIA,MAAMA,GAAGA,IAAIA,CAACA,KAAKA,CAACA,SAASA,CAACA,SAASA,CAACA,eAAeA,CAACA,QAAQA,CAACA;qBAChEA,IAAIA,CAACA,MAAMA,CAACA,CAACA;gBAElBA,MAAMA;qBACDA,KAAKA,EAAEA;qBACPA,MAAMA,CAACA,GAAGA,CAACA;qBACXA,EAAEA,CAACA,OAAOA,EAAEA,UAACA,CAAkBA;oBAC5BA,IAAIA,GAAGA,GAAGA,KAAIA,CAACA,oBAAoBA,CAACA;oBACpCA,KAAIA,CAACA,oBAAoBA,GAAGA,CAACA,CAACA,IAAIA,KAAKA,gBAA4BA;0BAC7DA,GAAGA,GAAGA,KAAIA,CAACA,cAAcA,GAAGA,GAAGA,GAAGA,KAAIA,CAACA,cAAcA,CAACA;oBAC5DA,KAAIA,CAACA,kBAAkBA,CAACA,KAAIA,CAACA,IAAIA,EAAEA,KAAIA,CAACA,cAAcA,EAAEA,KAAKA,CAACA,CAACA;gBACnEA,CAACA,CAACA;qBACDA,OAAOA,CAACA,SAASA,CAACA,eAAeA,CAACA,KAAKA,EAAEA,IAAIA,CAACA;qBAC9CA,MAAMA,CAACA,MAAMA,CAACA,CAACA;gBAEpBA,MAAMA;qBACDA,IAAIA,CAACA,WAAWA,EAAEA,UAACA,CAAkBA,IAAKA,OAAAA,eAAOA,CAACA,SAASA,CAACA,CAACA,CAACA,CAACA,EAAEA,CAACA,CAACA,CAACA,CAACA,EAA3BA,CAA2BA,CAACA;qBACtEA,MAAMA,CAACA,MAAMA,CAACA;qBACdA,IAAIA,CAACA;oBACFA,GAAGA,EAAEA,UAACA,CAAkBA,IAAKA,OAAAA,CAACA,CAACA,IAAIA,EAANA,CAAMA;oBACnCA,WAAWA,EAAEA,UAACA,CAAkBA,IAAKA,OAAAA,CAACA,CAACA,eAAeA,EAAjBA,CAAiBA;iBACzDA,CAACA,CAACA;gBAEPA,MAAMA,CAACA,IAAIA,EAAEA,CAACA,MAAMA,EAAEA,CAACA;YAC3BA,CAACA;YAEOlB,iCAAaA,GAArBA,UAAsBA,WAA2BA;gBAC7CmB,MAAMA,CAACA,CAACA,WAAWA,CAACA,CAACA,CAACA;oBAClBA,KAAKA,cAAcA,CAACA,GAAGA,CAACA;oBACxBA,KAAKA,cAAcA,CAACA,MAAMA,CAACA;oBAC3BA,KAAKA,cAAcA,CAACA,YAAYA,CAACA;oBACjCA,KAAKA,cAAcA,CAACA,SAASA;wBACzBA,MAAMA,CAACA,IAAIA,CAACA;oBAChBA;wBACIA,MAAMA,CAACA,KAAKA,CAACA;gBACrBA,CAACA;YACLA,CAACA;YAEOnB,8BAAUA,GAAlBA,UAAmBA,WAA2BA;gBAC1CoB,MAAMA,CAACA,CAACA,WAAWA,CAACA,CAACA,CAACA;oBAClBA,KAAKA,cAAcA,CAACA,YAAYA,CAACA;oBACjCA,KAAKA,cAAcA,CAACA,UAAUA,CAACA;oBAC/BA,KAAKA,cAAcA,CAACA,WAAWA,CAACA;oBAChCA,KAAKA,cAAcA,CAACA,SAASA;wBACzBA,MAAMA,CAACA,IAAIA,CAACA;oBAChBA;wBACIA,MAAMA,CAACA,KAAKA,CAACA;gBACrBA,CAACA;YACLA,CAACA;YAEMpB,yBAAKA,GAAZA;gBACIqB,6BAA6BA;YACjCA,CAACA;YAEcrB,2BAAiBA,GAAhCA,UAAiCA,OAAgBA,EAAEA,IAAaA,EAAEA,QAAiBA;gBAC/EsB,MAAMA,CAACA;oBACHA,IAAIA,EAAEA,IAAIA;oBACVA,UAAUA,EAAEA,OAAOA,GAAGA,SAASA,CAACA,sBAAsBA,GAAGA,SAASA,CAACA,iBAAiBA;oBACpFA,QAAQA,EAAEA,cAAcA,CAACA,SAASA,CAACA,QAAQA,IAAIA,SAASA,CAACA,mBAAmBA,CAACA;iBAChFA,CAACA;YACNA,CAACA;YAEOtB,2CAAuBA,GAA/BA,UAAgCA,IAAgBA;gBAC5CuB,0CAA0CA;gBAC1CA,GAAGA,CAACA,CAAkBA,UAAeA,EAAfA,KAAAA,IAAIA,CAACA,UAAUA,EAAhCA,cAAaA,EAAbA,IAAgCA,CAACA;oBAAjCA,IAAIA,SAASA,SAAAA;oBACdA,SAASA,CAACA,OAAOA,GAAGA,SAASA,CAACA,KAAKA,CAACA;iBACvCA;YACLA,CAACA;YAjpBavB,6BAAmBA,GAAGA,CAACA,CAACA;YACvBA,0BAAgBA,GAAGA,CAACA,CAACA;YACrBA,uBAAaA,GAAGA,EAAEA,CAACA;YACnBA,wBAAcA,GAAGA,EAAEA,CAACA;YACpBA,4BAAkBA,GAAGA,CAACA,CAACA;YACvBA,sBAAYA,GAAGA,EAAEA,CAACA;YAClBA,gCAAsBA,GAAGA,EAAEA,CAACA;YAC5BA,8BAAoBA,GAAGA,GAAGA,CAACA;YAC3BA,yBAAeA,GAAGA,EAAEA,CAACA;YACrBA,2BAAiBA,GAAGA,cAAcA,CAACA,gBAAgBA,CAACA,SAASA,CAACA,mBAAmBA,CAACA,CAACA;YACnFA,gCAAsBA,GAAGA,SAASA,CAACA,cAAcA,GAAGA,SAASA,CAACA,iBAAiBA,CAACA;YAE/FA,6BAA6BA;YACdA,2BAAiBA,GAAGA,EAAEA,CAACA;YACvBA,2BAAiBA,GAAGA,EAAEA,CAACA;YACvBA,0BAAgBA,GAAGA,GAAGA,CAACA;YACvBA,+BAAqBA,GAAGA,GAAGA,CAACA;YAE5BA,2BAAiBA,GAAGA,oBAAoBA,CAACA;YACzCA,gCAAsBA,GAAGA,sBAAsBA,CAACA;YAEhDA,oBAAUA,GAAqBA,sBAAsBA,CAACA,YAAYA,CAACA,CAACA;YACpEA,oBAAUA,GAAqBA,sBAAsBA,CAACA,YAAYA,CAACA,CAACA;YACpEA,oBAAUA,GAAqBA,sBAAsBA,CAACA,YAAYA,CAACA,CAACA;YACpEA,qBAAWA,GAAqBA,sBAAsBA,CAACA,aAAaA,CAACA,CAACA;YACtEA,yBAAeA,GAAqBA,sBAAsBA,CAACA,UAAUA,CAACA,CAACA;YAynB1FA,gBAACA;QAADA,CAtqBAZ,AAsqBCY,IAAAZ;QAtqBYA,iBAASA,YAsqBrBA,CAAAA;QAEDA;YAcIoC,yCAAYA,OAAeA;gBACvBC,IAAIA,CAACA,qBAAqBA,GAAGA,EAAEA,CAACA,MAAMA,CAACA,OAAOA,CAACA,GAAGA,CAACA,CAACA,CAACA,CAACA,CAACA;YAC3DA,CAACA;YAEMD,oDAAUA,GAAjBA;gBACIE,MAAMA,CAACA;oBACHA,MAAMA,EAAEA,+BAA+BA,CAACA,YAAYA;oBACpDA,KAAKA,EAAEA,CAACA;iBACXA,CAACA;YACNA,CAACA;YAEMF,oDAAUA,GAAjBA,UAAkBA,UAAsBA;gBACpCG,KAAKA,CAACA,WAAWA,CAACA,UAAUA,EAAEA,YAAYA,CAACA,CAACA;gBAC5CA,IAAIA,IAAIA,GAAGA,UAAUA,CAACA,UAAUA,CAACA;gBACjCA,KAAKA,CAACA,WAAWA,CAACA,IAAIA,EAAEA,YAAYA,CAACA,CAACA;gBACtCA,EAAEA,CAACA,CAACA,IAAIA,CAACA,MAAMA,GAAGA,CAACA,CAACA;oBAACA,MAAMA,CAACA;gBAE5BA,IAAIA,kBAAkBA,GAAGA,IAAIA,CAACA,qBAAqBA,CAACA,MAAMA,CAACA,+BAA+BA,CAACA,uBAAuBA,CAACA,CAACA;gBACpHA,EAAEA,CAACA,CAACA,kBAAkBA,CAACA,KAAKA,EAAEA,CAACA,CAACA,CAACA;oBAC7BA,EAAEA,CAACA,CAACA,CAACA,IAAIA,CAACA,MAAMA,CAACA;wBAACA,MAAMA,CAACA;oBACzBA,IAAIA,YAAYA,GAAGA,CAACA,CAACA,aAAaA,CAACA;yBAC9BA,MAAMA,CAACA,IAAIA,CAACA,UAAUA,EAAEA,CAACA,MAAMA,CAACA;yBAChCA,QAAQA,CAACA,+BAA+BA,CAACA,oBAAoBA,CAACA,CAACA;oBACpEA,4DAA4DA;oBAC5DA,CAACA,CAACA,IAAIA,CAACA,qBAAqBA,CAACA,CAACA,CAACA,CAACA,CAACA,OAAOA,CAACA,YAAYA,CAACA,CAACA;oBACvDA,kBAAkBA,GAAGA,EAAEA,CAACA,MAAMA,CAACA,YAAYA,CAACA,GAAGA,CAACA,CAACA,CAACA,CAACA,CAACA;gBACxDA,CAACA;gBACDA,IAAIA,CAACA,kBAAkBA,GAAGA,kBAAkBA,CAACA;gBAE7CA,wCAAwCA;gBACxCA,IAAIA,CAACA,SAASA,CAACA,IAAIA,CAACA,CAACA;gBACrBA,IAAIA,CAACA,eAAeA,CAACA,IAAIA,CAACA,CAACA;YAC/BA,CAACA;YAEMH,+CAAKA,GAAZA;gBACII,EAAEA,CAACA,CAACA,IAAIA,CAACA,kBAAkBA,CAACA,CAACA,CAACA;oBAC1BA,IAAIA,CAACA,kBAAkBA,CAACA,MAAMA,EAAEA,CAACA;oBACjCA,IAAIA,CAACA,kBAAkBA,GAAGA,IAAIA,CAACA;gBACnCA,CAACA;YACLA,CAACA;YAEMJ,mDAASA,GAAhBA;gBACIK,MAAMA,CAACA,IAAIA,CAACA;YAChBA,CAACA;YAEML,2DAAiBA,GAAxBA,UAAyBA,WAA2BA;gBAChDM,gBAAgBA;YACpBA,CAACA;YAEMN,wDAAcA,GAArBA;gBACIO,MAAMA,CAACA,cAAcA,CAACA,GAAGA,CAACA;YAC9BA,CAACA;YAEDP;;eAEGA;YACKA,mDAASA,GAAjBA,UAAkBA,IAAuBA;gBACrCQ,KAAKA,CAACA,MAAMA,CAACA,IAAIA,IAAIA,IAAIA,CAACA,MAAMA,GAAGA,CAACA,EAAEA,uBAAuBA,CAACA,CAACA;gBAC/DA,IAAIA,QAAQA,GAAiBA,IAAIA,CAACA,kBAAkBA,CAACA,SAASA,CAACA,MAAMA,GAAGA,+BAA+BA,CAACA,gBAAgBA,CAACA,CAACA;gBAC1HA,IAAIA,IAAIA,GAAuBA,QAAQA,CAACA,IAAIA,CAACA,CAACA,IAAIA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA;gBAExDA,QAAQA;gBACRA,IAAIA,SAASA,GAAsBA,IAAIA,CAACA,KAAKA,EAAEA,CAACA;gBAChDA,IAAIA,aAAaA,GAAiBA,SAASA,CAACA,MAAMA,CAACA,KAAKA,CAACA,CAACA,IAAIA,CAACA,OAAOA,EAAEA,+BAA+BA,CAACA,gBAAgBA,CAACA,CAACA;gBAC1HA,aAAaA;qBACRA,MAAMA,CAACA,UAACA,CAAkBA,IAAKA,OAAAA,CAACA,CAACA,eAAeA,EAAjBA,CAAiBA,CAACA;qBACjDA,MAAMA,CAACA,MAAMA,CAACA;qBACdA,IAAIA,CAACA,OAAOA,EAAEA,+BAA+BA,CAACA,eAAeA,CAACA;qBAC9DA,IAAIA,CAACA,+BAA+BA,CAACA,mBAAmBA,CAACA,CAACA;gBAC/DA,aAAaA,CAACA,MAAMA,CAACA,MAAMA,CAACA,CAACA;gBAE7BA,SAASA;gBACTA,IAAIA,CAACA,MAAMA,CAACA,UAACA,CAAkBA,IAAKA,OAAAA,CAACA,CAACA,eAAeA,EAAjBA,CAAiBA,CAACA;qBACjDA,MAAMA,CAACA,OAAOA,GAAGA,+BAA+BA,CAACA,eAAeA,CAACA;qBACjEA,KAAKA,CAACA,+BAA+BA,CAACA,cAAcA,EAAEA,UAACA,CAAkBA,IAAKA,OAAAA,CAACA,CAACA,KAAKA,EAAPA,CAAOA,CAACA,CAACA;gBAC5FA,IAAIA,CAACA,MAAMA,CAACA,iBAAiBA,CAACA,CAACA,IAAIA,CAACA,UAACA,CAAkBA,IAAKA,OAAAA,CAACA,CAACA,QAAQA,EAAVA,CAAUA,CAACA,CAACA;YAC5EA,CAACA;YAEDR;;eAEGA;YACKA,yDAAeA,GAAvBA,UAAwBA,IAAuBA;gBAC3CS,yDAAyDA;gBACzDA,IAAIA,CAACA,wBAAwBA,EAAEA,CAACA;gBAChCA,IAAIA,gBAAgBA,GAAwBA,+BAA+BA,CAACA,mBAAmBA,CAACA,IAAIA,CAACA,CAACA;gBACtGA,IAAIA,oBAAoBA,GAAuBA,IAAIA,CAACA,kBAAkBA,CAACA,MAAMA,CAACA,OAAOA,CAACA,CAACA,SAASA,CAACA,IAAIA,CAACA,CAACA,IAAIA,CAACA,gBAAgBA,CAACA,CAACA;gBAE9HA,sBAAsBA;gBACtBA,4BAA4BA;gBAC5BA,iDAAiDA;gBACjDA,kDAAkDA;gBAClDA,iDAAiDA;gBACjDA,+BAA+BA;gBAC/BA,+BAA+BA;gBAC/BA,+BAA+BA;gBAC/BA,wBAAwBA;gBACxBA,+BAA+BA;gBAC/BA,GAAGA;gBAEHA,QAAQA;gBACRA,IAAIA,gBAAgBA,GAAsBA,oBAAoBA,CAACA,KAAKA,EAAEA,CAACA;gBACvEA,IAAIA,QAAQA,GAAiBA,gBAAgBA,CAACA,MAAMA,CAACA,IAAIA,CAACA,CAACA;gBAC3DA,IAAIA,SAASA,GAAiBA,QAAQA,CAACA,SAASA,CAACA,IAAIA,CAACA;qBACjDA,IAAIA,CAACA,UAACA,CAAoBA,IAAKA,OAAAA,CAACA,EAADA,CAACA,EAAEA,UAACA,CAAkBA,IAAKA,OAAAA,CAACA,CAACA,KAAKA,EAAPA,CAAOA,CAACA;qBAClEA,KAAKA,EAAEA;qBACPA,MAAMA,CAACA,IAAIA,CAACA,CAACA,IAAIA,CAACA,OAAOA,EAAEA,+BAA+BA,CAACA,UAAUA,CAACA,CAACA;gBAC5EA,IAAIA,aAAaA,GAAiBA,SAASA,CAACA,MAAMA,CAACA,MAAMA,CAACA,CAACA;gBAC3DA,aAAaA,CAACA,MAAMA,CAACA,UAACA,CAAkBA,IAAKA,OAAAA,CAACA,CAACA,CAACA,eAAeA,EAAlBA,CAAkBA,CAACA;qBAC3DA,MAAMA,CAACA,MAAMA,CAACA;qBACdA,IAAIA,CAACA,+BAA+BA,CAACA,mBAAmBA,CAACA;qBACzDA,IAAIA,CAACA,OAAOA,EAAEA,+BAA+BA,CAACA,eAAeA,CAACA;qBAC9DA,IAAIA,CAACA,aAAaA,EAAEA,QAAQA,CAACA,CAACA;gBACnCA,aAAaA,CAACA,MAAMA,CAACA,MAAMA,CAACA,CAACA,IAAIA,CAACA,OAAOA,EAAEA,+BAA+BA,CAACA,mBAAmBA,CAACA,CAACA;gBAChGA,aAAaA,CAACA,MAAMA,CAACA,MAAMA,CAACA,CAACA,IAAIA,CAACA,OAAOA,EAAEA,+BAA+BA,CAACA,sBAAsBA,CAACA,CAACA;gBAEnGA,SAASA;gBACTA,IAAIA,WAAWA,GAAuBA,oBAAoBA,CAACA,SAASA,CAACA,IAAIA,CAACA,CAACA,IAAIA,CAACA,UAACA,CAAoBA,IAAKA,OAAAA,CAACA,EAADA,CAACA,EAAEA,UAACA,CAAkBA,IAAKA,OAAAA,CAACA,CAACA,KAAKA,EAAPA,CAAOA,CAACA,CAACA;gBAC9IA,WAAWA,CAACA,MAAMA,CAACA,OAAOA,GAAGA,+BAA+BA,CAACA,mBAAmBA,CAACA,CAACA,IAAIA,CAACA,UAACA,CAAkBA,IAAKA,OAAAA,OAAOA,CAACA,OAAOA,CAACA,QAAQA,CAACA,oBAAoBA,CAACA,CAACA,CAACA,KAAKA,CAACA,EAAtDA,CAAsDA,CAACA,CAACA;gBACvKA,WAAWA,CAACA,MAAMA,CAACA,OAAOA,GAAGA,+BAA+BA,CAACA,sBAAsBA,CAACA,CAACA,IAAIA,CAACA,UAACA,CAAkBA,IAAKA,OAAAA,QAAQA,GAAGA,CAACA,CAACA,OAAOA,EAApBA,CAAoBA,CAACA,CAACA;gBACxIA,WAAWA,CAACA,MAAMA,CAACA,OAAOA,GAAGA,+BAA+BA,CAACA,eAAeA,CAACA,CAACA,KAAKA,CAACA,OAAOA,EAAEA,UAACA,CAAkBA,IAAKA,OAAAA,CAACA,CAACA,KAAKA,EAAPA,CAAOA,CAACA,CAACA;gBAE9HA,OAAOA;gBACPA,WAAWA,CAACA,IAAIA,EAAEA,CAACA,MAAMA,EAAEA,CAACA;YAChCA,CAACA;YAEDT;;eAEGA;YACKA,kEAAwBA,GAAhCA;gBACIU,EAAEA,CAACA,CAACA,IAAIA,CAACA,kBAAkBA,CAACA,MAAMA,CAACA,WAAWA,CAACA,CAACA,KAAKA,EAAEA,CAACA,CAACA,CAACA;oBACtDA,IAAIA,WAAWA,GAAiBA,IAAIA,CAACA,kBAAkBA,CAACA,MAAMA,CAACA,KAAKA,CAACA,CAACA,MAAMA,CAACA,OAAOA,CAACA,CAACA;oBACtFA,WAAWA,CAACA,KAAKA,CAACA,cAAcA,EAAEA,OAAOA,CAACA,CAACA,MAAMA,CAACA,OAAOA,CAACA,CAACA;oBAC3DA,mCAAmCA;oBACnCA,IAAIA,CAACA,qBAAqBA,CAACA,WAAWA,CAACA,CAACA;gBAC5CA,CAACA;YACLA,CAACA;YAEDV;;eAEGA;YACKA,+DAAqBA,GAA7BA,UAA8BA,WAAyBA;gBACnDW,IAAIA,aAAaA,GAAWA,CAACA,CAACA,IAAIA,CAACA,kBAAkBA,CAACA,MAAMA,CAACA,kBAAkBA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA,KAAKA,EAAEA,CAACA;gBAC7FA,IAAIA,MAAMA,GAAyBA,EAAEA,CAACA,KAAKA,CAACA,MAAMA,EAAEA,CAACA,MAAMA,CAACA,CAACA,CAACA,EAAEA,aAAaA,CAACA,CAACA,CAACA,KAAKA,CAACA,CAACA,CAACA,EAAEA,aAAaA,CAACA,CAACA,CAACA;gBAC1GA,IAAIA,IAAIA,GAAqBA,EAAEA,CAACA,QAAQA,CAACA,IAAIA,EAAEA;qBAC1CA,WAAWA,CAACA,CAACA,CAACA,EAAEA,CAACA,CAACA,CAACA,CAACA,kBAAkBA;qBACtCA,CAACA,CAACA,MAAMA,CAACA;qBACTA,EAAEA,CAACA,MAAMA,EAAEA;oBACRA,iGAAiGA;oBACjGA,EAAEA,CAACA,CAACA,CAACA,CAACA,WAAWA,CAACA,CAACA,CAACA,CAACA,CAACA,KAAKA,EAAEA,GAAGA,aAAaA,CAACA,CAACA,CAACA;wBAC5CA,IAAIA,CAACA,GAAaA,IAAIA,CAACA,SAASA,EAAEA,CAACA;wBACnCA,IAAIA,EAAEA,GAAWA,CAACA,CAACA,CAACA,CAACA,CAACA;wBACtBA,IAAIA,EAAEA,GAAWA,CAACA,CAACA,CAACA,CAACA,CAACA;wBACtBA,EAAEA,GAAGA,IAAIA,CAACA,GAAGA,CAACA,EAAEA,EAAEA,CAACA,CAACA,CAACA;wBACrBA,EAAEA,GAAGA,IAAIA,CAACA,GAAGA,CAACA,EAAEA,EAAEA,aAAaA,GAAGA,CAACA,CAACA,WAAWA,CAACA,CAACA,CAACA,CAACA,CAACA,KAAKA,EAAEA,CAACA,CAACA;wBAC7DA,IAAIA,CAACA,SAASA,CAACA,CAACA,EAAEA,EAAEA,EAAEA,CAACA,CAACA,CAACA;wBACzBA,WAAWA,CAACA,KAAKA,CAACA,eAAeA,EAAEA;4BAC/BA,MAAMA,CAACA,eAAOA,CAACA,oBAAoBA,CAACA,EAAEA,CAACA,CAACA;wBAC5CA,CAACA,CAACA,CAACA;wBACHA,WAAWA,CAACA,KAAKA,CAACA,mBAAmBA,EAAEA;4BACnCA,MAAMA,CAACA,eAAOA,CAACA,oBAAoBA,CAACA,EAAEA,CAACA,CAACA;wBAC5CA,CAACA,CAACA,CAACA;wBACHA,WAAWA,CAACA,KAAKA,CAACA,WAAWA,EAAEA;4BAC3BA,MAAMA,CAACA,eAAOA,CAACA,oBAAoBA,CAACA,EAAEA,CAACA,CAACA;wBAC5CA,CAACA,CAACA,CAACA;oBACPA,CAACA;gBACLA,CAACA,CAACA,CAACA;gBACPA,EAAEA,CAACA,CAACA,IAAIA,CAACA,kBAAkBA,CAACA,CAACA,CAACA;oBAC1BA,IAAIA,CAACA,kBAAkBA,CAACA,IAAIA,CAACA,IAAIA,CAACA,CAACA;gBACvCA,CAACA;gBAACA,IAAIA,CAACA,CAACA;oBACJA,WAAWA,CAACA,IAAIA,CAACA,IAAIA,CAACA,CAACA;gBAC3BA,CAACA;YACLA,CAACA;YAEDX;;;eAGGA;YACYA,mDAAmBA,GAAlCA,UAAmCA,IAAuBA;gBACtDY,IAAIA,OAAOA,GAAsBA,EAAEA,CAACA;gBACpCA,IAAIA,QAAQA,GAAsBA,EAAEA,CAACA;gBACrCA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,IAAIA,CAACA,MAAMA,EAAEA,EAAEA,CAACA,EAAEA,CAACA;oBACnCA,EAAEA,CAACA,CAACA,CAACA,GAAGA,CAACA,KAAKA,CAACA,CAACA,CAACA,CAACA;wBACdA,QAAQA,CAACA,IAAIA,CAACA,IAAIA,CAACA,CAACA,CAACA,CAACA,CAACA;oBAC3BA,CAACA;oBACDA,IAAIA,CAACA,CAACA;wBACFA,OAAOA,CAACA,IAAIA,CAACA,IAAIA,CAACA,CAACA,CAACA,CAACA,CAACA;oBAC1BA,CAACA;gBACLA,CAACA;gBACDA,MAAMA,CAACA,CAACA,QAAQA,EAAEA,OAAOA,CAACA,CAACA;YAC/BA,CAACA;YA1McZ,4CAAYA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,GAAWA,MAAMA,CAACA,iBAAiBA,CAACA;oBAC5CA,IAAIA,IAAIA,GAAWA,MAAMA,CAACA,iBAAiBA,CAACA;oBAC5CA,IAAIA,IAAIA,GAAWA,MAAMA,CAACA,iBAAiBA,CAACA;oBAE5CA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,IAAIA,CAACA,aAAaA,CAACA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;wBACjDA,EAAEA,CAACA,CAACA,IAAIA,CAACA,aAAaA,CAACA,CAACA,CAACA,CAACA,CAACA,GAAGA,IAAIA,CAACA,CAACA,CAACA;4BACjCA,IAAIA,GAAGA,IAAIA,CAACA,aAAaA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA;wBACnCA,CAACA;wBAACA,IAAIA,CAACA,EAAEA,CAACA,CAACA,IAAIA,CAACA,aAAaA,CAACA,CAACA,CAACA,CAACA,CAACA,GAAGA,IAAIA,CAACA,CAACA,CAACA;4BACxCA,IAAIA,GAAGA,IAAIA,CAACA,aAAaA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA;wBACnCA,CAACA;wBAEDA,EAAEA,CAACA,CAACA,IAAIA,CAACA,aAAaA,CAACA,CAACA,CAACA,CAACA,CAACA,GAAGA,IAAIA,CAACA,CAACA,CAACA;4BACjCA,IAAIA,GAAGA,IAAIA,CAACA,aAAaA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA;wBACnCA,CAACA;wBAACA,IAAIA,CAACA,EAAEA,CAACA,CAACA,IAAIA,CAACA,aAAaA,CAACA,CAACA,CAACA,CAACA,CAACA,GAAGA,IAAIA,CAACA,CAACA,CAACA;4BACxCA,IAAIA,GAAGA,IAAIA,CAACA,aAAaA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA;wBACnCA,CAACA;oBACLA,CAACA;oBAEDA,MAAMA,CAACA;wBACHA,IAAIA,EAAEA,IAAIA;wBACVA,GAAGA,EAAEA,IAAIA;wBACTA,KAAKA,EAAEA,IAAIA,GAAGA,IAAIA;wBAClBA,MAAMA,EAAEA,I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ACA,CAACA,GAAGA,GAAGA,EAAEA,GAAGA,CAACA,CAACA,GAAGA,CAACA;oBAC1CA,IAAIA,GAAGA,GAAGA,CAACA,CAACA,GAAGA,GAAGA,EAAEA,GAAGA,CAACA,CAACA,GAAGA,GAAGA,EAAEA,GAAGA,CAACA,CAACA,GAAGA,CAACA;oBAC1CA,IAAIA,GAAGA,GAAGA,CAACA,CAACA,GAAGA,GAAGA,EAAEA,GAAGA,CAACA,CAACA,GAAGA,GAAGA,EAAEA,GAAGA,CAACA,CAACA,GAAGA,CAACA;oBAC1CA,IAAIA,GAAGA,GAAGA,CAACA,CAACA,GAAGA,GAAGA,EAAEA,GAAGA,CAACA,CAACA,GAAGA,GAAGA,EAAEA,GAAGA,CAACA,CAACA,GAAGA,CAACA;oBAC1CA,IAAIA,GAAGA,GAAGA,CAACA,CAACA,GAAGA,GAAGA,EAAEA,GAAGA,CAACA,CAACA,GAAGA,GAAGA,EAAEA,GAAGA,CAACA,CAACA,GAAGA,CAACA;oBAC1CA,IAAIA,GAAGA,GAAGA,CAACA,CAACA,GAAGA,GAAGA,EAAEA,GAAGA,CAACA,CAACA,GAAGA,GAAGA,EAAEA,GAAGA,CAACA,CAACA,GAAGA,CAACA;oBAC1CA,IAAIA,GAAGA,GAAGA,CAACA,CAACA,GAAGA,GAAGA,EAAEA,GAAGA,CAACA,CAACA,GAAGA,GAAGA,EAAEA,GAAGA,CAACA,CAACA,GAAGA,CAACA;oBAC1CA,IAAIA,GAAGA,GAAGA,CAACA,CAACA,GAAGA,GAAGA,EAAEA,GAAGA,CAACA,CAACA,GAAGA,GAAGA,EAAEA,GAAGA,CAACA,CAACA,GAAGA,CAACA;oBAC1CA,IAAIA,GAAGA,IAAIA,CAACA,GAAGA,CAACA,GAAGA,EAAEA,GAAGA,EAAEA,GAAGA,EAAEA,GAAGA,CAACA,CAACA;oBACpCA,IAAIA,GAAGA,IAAIA,CAACA,GAAGA,CAACA,GAAGA,EAAEA,GAAGA,EAAEA,GAAGA,EAAEA,GAAGA,CAACA,CAACA;oBACpCA,IAAIA,GAAGA,IAAIA,CAACA,GAAGA,CAACA,GAAGA,EAAEA,GAAGA,EAAEA,GAAGA,EAAEA,GAAGA,CAACA,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gCACvFA,IAAIA,MAAMA,GAAGA,QAAMA,CAACA,CAACA,CAACA,OAAOA,CAACA,CAACA,CAACA,CAACA;gCACjCA,IAAIA,UAAUA,GAAGA,MAAMA,CAACA,UAAUA,CAACA;gCACnCA,EAAEA,CAACA,CAACA,UAAUA,IAAIA,UAAUA,CAACA,MAAMA,GAAGA,CAACA,CAACA,CAACA,CAACA;oCACtCA,IAAIA,WAAWA,GAA+BA;wCAC1CA,QAAQA,EAAyBA,IAAIA,CAACA,KAAMA,CAACA,QAAQA;wCACrDA,SAASA,EAAyBA,IAAIA,CAACA,KAAMA,CAACA,SAASA;wCACvDA,SAASA,EAAEA,EAAEA;qCAChBA,CAACA;oCAEFA,UAAUA,CAACA,IAAIA,CAACA,UAACA,CAACA,EAAEA,CAACA;wCACjBA,EAAEA,CAACA,CAACA,CAACA,CAACA,KAAKA,CAACA,MAAMA,GAAGA,CAACA,CAACA,KAAKA,CAACA,MAAMA,CAACA,CAACA,CAACA;4CAClCA,MAAMA,CAACA,CAACA,CAACA;wCACbA,CAACA;wCACDA,EAAEA,CAACA,CAACA,CAACA,CAACA,KAAKA,CAACA,MAAMA,GAAGA,CAACA,CAACA,KAAKA,CAACA,MAAMA,CAACA,CAACA,CAACA;4CAClCA,MAAMA,CAACA,CAACA,CAACA,CAACA;wCACdA,CAACA;wCACDA,MAAMA,CAACA,CAACA,CAACA;oCACbA,CAACA,CAACA,CAACA;oCAEHA,IAAIA,UAAUA,GAAGA,IAAIA,CAACA,GAAGA,CAACA,UAAUA,CAACA,MAAMA,EAAyBA,IAAIA,CAACA,KAAMA,CAACA,UAAUA,CAACA,CAACA;oCAE5FA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,UAAUA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;wCAClCA,IAAIA,OAAOA,GAAGA,UAAUA,CAACA,CAACA,CAACA,CAACA,KAAKA,CAACA;wCAClCA,IAAIA,SAASA,GAAGA,OAAOA,CAACA,KAAKA,CAACA,GAAGA,CAACA,CAACA;wCAEnCA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,SAASA,CAACA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;4CACxCA,WAAWA,CAACA,SAASA,CAACA,IAAIA,CAACA,EAAEA,UAAUA,EAAEA,SAASA,CAACA,CAACA,CAACA,EAAEA,CAACA,CAACA;wCAC7DA,CAACA;oCACLA,CAACA;oCAEDA,eAAeA,CAACA,IAAIA,EAAEA,IAAIA,EAAEA,WAAWA,CAACA,CAACA;gCAC7CA,CAACA;gCACDA,IAAIA,CAACA,CAACA;oCACFA,eAAeA,CAACA,IAAIA,EAAEA,IAAIA,KAAKA,CAACA,0BAA0BA,CAACA,CAACA,CAACA;gCACjEA,CAACA;4BACLA,CAACA;4BACDA,IAAIA,CAACA,CAACA;gCACFA,eAAeA,CAACA,IAAIA,EAAEA,IAAIA,KAAKA,CAACA,0BAA0BA,CAACA,CAACA,CAACA;4BACjEA,CAACA;wBACLA,CAACA;wBACDA,IAAIA,CAACA,CAACA;4BACFA,IAAIA,SAASA,GAAGA,IAAIA,CAACA,YAAYA,CAACA,CAACA,CAACA,CAACA,SAASA,CAACA;4BAC/CA,EAAEA,CAACA,CAACA,KAAKA,CAACA,OAAOA,CAACA,SAASA,CAACA,IAAIA,SAASA,CAACA,MAAMA,GAAGA,CAACA,CAACA,CAACA,CAACA;gCACnDA,IAAIA,KAAKA,GAAGA,kBAAkBA,CAACA,SAASA,EAAEA,IAAIA,CAACA,KAAKA,CAACA,CAACA;gCACtDA,IAAIA,SAASA,GAAGA,SAASA,CAACA,KAAKA,CAACA,CAACA,KAAKA,CAACA,WAAWA,CAACA;gCACnDA,IAAIA,WAAWA,GAAuBA;oCAClCA,QAAQA,EAAEA,UAAUA,CAACA,SAASA,CAACA,CAACA,CAACA,CAACA;oCAClCA,SAASA,EAAEA,UAAUA,CAACA,SAASA,CAACA,CAACA,CAACA,CAACA;iCACtCA,CAACA;gCACFA,eAAeA,CAACA,IAAIA,EAAEA,IAAIA,EAAEA,WAAWA,CAACA,CAACA;4BAC7CA,CAACA;4BACDA,IAAIA,CAACA,CAAC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KAAIA,CAACA,gBAAgBA,CAAaA,CAACA,CAACA,EAApCA,CAAoCA,CAACA,CAACA;wBAC/EA,KAAKA,CAACA,gBAAgBA,CAACA,SAASA,EAAEA,UAAAA,CAACA,IAAIA,OAAAA,KAAIA,CAACA,cAAcA,CAAaA,CAACA,CAACA,EAAlCA,CAAkCA,CAACA,CAACA;oBAC/EA,CAACA;gBACLA,CAACA;gBAEMtB,gCAAYA,GAAnBA,UAAoBA,CAAMA;oBACtBuB,EAAEA,CAACA,CAACA,CAACA,CAACA,OAAOA,CAACA,MAAMA,KAAKA,CAACA,CAACA,CAACA,CAACA;wBACzBA,IAAIA,CAACA,gBAAgBA,CAACA,CAACA,CAACA,OAAOA,CAACA,CAACA,CAACA,CAACA,CAACA;oBACxCA,CAACA;gBACLA,CAACA;gBAEMvB,+BAAWA,GAAlBA,UAAmBA,CAAMA;oBACrBwB,EAAEA,CAACA,CAACA,CAACA,CAACA,OAAOA,CAACA,MAAMA,KAAKA,CAACA,CAACA,CAACA,CAACA;wBACzBA,EAAEA,CAACA,CAACA,CAACA,CAACA,cAAcA,CAACA;4BACjBA,CAACA,CAACA,cAAcA,EAAEA,CAACA;wBACvBA,IAAIA,CAACA,gBAAgBA,CAACA,CAACA,CAACA,OAAOA,CAACA,CAACA,CAACA,CAACA,CAACA;oBACxCA,CAACA;gBACLA,CAACA;gBAEMxB,8BAAUA,GAAjBA,UAAkBA,CAAMA;oBACpByB,IAAIA,CAACA,cAAcA,CAACA,CAACA,CAACA,OAAOA,CAACA,MAAMA,KAAKA,CAACA,GAAGA,CAACA,CAACA,OAAOA,CAACA,CAACA,CAACA,GAAGA,CAACA,EAAEA,IAAIA,CAACA,CAACA;gBACzEA,CAACA;gBAEMzB,oCAAgBA,GAAvBA,UAAwBA,CAAaA;oBACjC0B,oHAAoHA;oBACpHA,EAAEA,CAACA,CAACA,CAACA,IAAIA,CAACA,eAAeA;wBACrBA,CAACA,CAACA,aAAaA,CAACA,KAA+BA,cAAeA,CAACA,oBAAoBA,CAACA,CAACA,CAACA;wBACtFA,MAAMA,CAACA;oBACXA,CAACA;oBACDA,EAAEA,CAACA,CAACA,YAAYA,IAAIA,IAAIA,CAACA,WAAWA,CAACA,CAACA,CAACA;wBACnCA,IAAIA,CAACA,WAAWA,CAACA,UAAUA,CAACA,IAAIA,CAACA,CAACA;oBACtCA,CAACA;oBACDA,IAAIA,CAACA,mBAAmBA,GAAGA,IAAIA,CAACA,oBAAoBA,GAAGA,IAAIA,CAACA;oBAC5DA,IAAIA,CAACA,aAAaA,GAAGA,IAAIA,CAACA;gBAC9BA,CAACA;gBAEM1B,wCAAoBA,GAA3BA,UAA4BA,CAAaA;oBACrC2B,KAAKA,CAACA,UAAUA,CAACA,qDAAqDA,CAACA,CAACA;oBACxEA,MAAMA,CAACA,IAAIA,CAACA;gBAChBA,CAACA;gBAEM3B,oCAAgBA,GAAvBA,UAAwBA,CAAaA;oBACjC4B,EAAEA,CAACA,CAACA,IAAIA,CAACA,aAAaA,CAACA,CAACA,CAACA;wBACrBA,EAAEA,CAACA,CAACA,CAACA,IAAIA,CAACA,oBAAoBA,CAACA,CAACA,CAACA;4BAC7BA,IAAIA,CAACA,mBAAmBA,GAAGA,IAAIA,CAACA,oBAAoBA,GAAGA,IAAIA,CAACA,eAAeA,CAACA,CAACA,CAACA,CAACA;wBACnFA,CAACA;wBAEDA,IAAIA,KAAKA,GAAGA,IAAIA,CAACA,oBAAoBA,CAACA,CAACA,CAACA,CAACA;wBACzCA,EAAEA,CAACA,CAACA,KAAKA,KAAKA,CAACA,CAACA,CAACA,CAACA;4BACdA,IAAIA,CAACA,QAAQA,CAACA,CAACA,KAAKA,GAAGA,IAAIA,CAACA,eAAeA,CAACA,KAAKA,CAACA,GAAGA,IAAIA,CAACA,QAAQA,CAACA,CAACA;4BACpEA,IAAIA,CAACA,mBAAmBA,GAAGA,IAAIA,CAACA,eAAeA,CAACA,CAACA,CAACA,CAACA;wBACvDA,CAACA;wBACDA,EAAEA,CAACA,CAACA,CAACA,CAACA,cAAcA,CAACA;4BACjBA,CAACA,CAACA,cAAcA,EAAEA,CAACA;wBAEvBA,CAACA,CAACA,YAAYA,GAAGA,IAAIA,CAACA;oBAC1BA,CAACA;gBACLA,CAACA;gBAEM5B,kCAAcA,GAArBA,UAAsBA,CAAaA,EAAEA,MAAgBA;oBACjD6B,EAAEA,CAACA,CAACA,IAAIA,CAACA,aAAaA,CAACA,CAACA,CAACA;wBACrBA,EAAEA,CAACA,CAACA,IAAIA,CAACA,oBAAoBA,CAACA,CAACA,CAACA;4BAC5BA,IAAIA,GAAGA,GAAGA,IAAIA,CAACA,eAAeA,CAACA,CAACA,CAACA,CAACA;4BAClCA,EAAEA,CAACA,CAACA,CAACA,MAAMA,IAAIA,CAACA,IAAIA,CAACA,GAAGA,CAACA,IAAIA,CAACA,oBAAoBA,CAACA,CAACA,GAAGA,GAAGA,CAACA,CAACA,CAACA,GAAGA,CAACA,IAAIA,IAAIA,CAACA,GAAGA,CAACA,IAAIA,CAACA,oBAAoBA,CAACA,CAACA,GAAGA,GAAGA,CAACA,CAACA,CAACA,GAAGA,CAACA,CAACA,CAACA,CAACA,CAACA;gCACtHA,EAAEA,CAACA,CAACA,CAACA,CAACA,cAAcA,CAACA;oCACjBA,CAACA,CAACA,cAAcA,EAAEA,CAACA;gCAEvBA,CAACA,CAACA,YAAYA,GAAGA,IAAIA,CAACA;4BAC1BA,CAACA;wBACLA,CAACA;oBACLA,CAACA;oBACDA,EAAEA,CAACA,CAACA,gBAAgBA,IAAIA,IAAIA,CAACA,WAAWA,CAACA,CAACA,CAACA;wBACvCA,IAAIA,CAACA,WAAWA,CAACA,cAAcA,EAAEA,CAACA;oBACtCA,CAACA;oBACDA,IAAIA,CAACA,aAAaA,GAAGA,KAAKA,CAACA;gBAC/BA,CAACA;gBAEM7B,yDAAqCA,GAA5CA,UAA6CA,OAAoBA;oBAAjE8B,iBAGCA;oBAFGA,OAAOA,CAACA,gBAAgBA,CAACA,YAAYA,EAACA,UAACA,CAACA,IAAOA,KAAIA,CAACA,YAAYA,CAAkBA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA;oBACzFA,OAAOA,CAACA,gBAAgBA,CAACA,gBAAgBA,EAACA,UAACA,CAACA,IAAOA,KAAIA,CAACA,mBAAmBA,CAAkBA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA;gBACxGA,C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ACA,CAACA,EAAEA,IAAIA,CAACA,SAASA,CAACA,YAAYA,GAAGA,QAAQA,CAACA,CAACA;4BAClFA,IAAIA,CAACA,MAAMA,CAACA,SAASA,CAACA,OAAOA,GAAGA,IAAIA,CAACA,GAAGA,CAACA,CAACA,EAAEA,IAAIA,CAACA,MAAMA,CAACA,SAASA,CAACA,OAAOA,GAAGA,QAAQA,CAACA,CAACA;4BACtFA,IAAIA,CAACA,MAAMA,CAACA,YAAYA,GAAGA,IAAIA,CAACA,GAAGA,CAACA,CAACA,EAAEA,IAAIA,CAACA,MAAMA,CAACA,YAAYA,GAAGA,QAAQA,CAACA,CAACA;4BAE5EA,EAAEA,CAACA,CAACA,QAAQA,KAAKA,CAACA,CAACA,CAACA,CAACA;gCACjBA,IAAIA,CAACA,cAAcA,CAACA,IAAIA,CAACA,MAAMA,CAACA,CAACA;4BACrCA,CAACA;4BAACA,IAAIA,CAACA,EAAEA,CAACA,CAACA,QAAQA,KAAKA,CAACA,CAACA,CAACA,CAACA;gCACxBA,IAAIA,CAACA,cAAcA,CAACA,IAAIA,CAACA,SAASA,CAACA,CAACA;4BACxCA,CAACA;4BAACA,IAAIA,CAACA,CAACA;gCACJA,IAAIA,CAACA,cAAcA,CAACA,IAAIA,CAACA,CAACA;4BAC9BA,CAACA;wBACLA,CAACA;oBACLA,CAACA;gBACLA,CAACA;gBAEOzC,qDAA6BA,GAArCA;oBACI0C,EAAEA,CAACA,CAACA,CAACA,IAAIA,CAACA,eAAeA,IAAIA,CAACA,IAAIA,CAACA,cAAcA,IAAIA,IAAIA,CAACA,gBAAgBA,CAACA,SAASA,CAACA,OAAOA,CAACA,aAAaA,CAACA,uBAAuBA,CAACA,KAAKA,CAACA,CAACA,CAACA,CAACA,CAACA;wBACzIA,IAAIA,CAACA,gBAAgBA,CAACA,SAASA,IAAIA,GAAGA,GAAGA,aAAaA,CAACA,uBAAuBA,CAACA;oBACnFA,CAACA;gBACLA,CAACA;gBAEO1C,+CAAuBA,GAA/BA;oBACI2C,IAAIA,CAACA,gBAAgBA,CAACA,SAASA,GAAGA,IAAIA,CAACA,gBAAgBA,CAA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ASA,GAAGA,IAAIA,CAACA,SAASA,CAACA,MAAMA,CAACA,CAACA,IAAIA,CAACA,CAACA,CAACA;oBACnDA,CAACA;oBAEDH;;uBAEGA;oBACIA,mCAAYA,GAAnBA;wBACII,IAAIA,UAAsBA,CAACA;wBAC3BA,IAAIA,MAAcA,CAACA;wBAEnBA,MAAMA,GAAGA,IAAIA,CAACA,SAASA,CAACA,MAAMA,CAACA;wBAC/BA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;4BAC9BA,EAAEA,CAACA,CAACA,IAAIA,CAACA,SAASA,CAACA,CAACA,CAACA,CAACA,SAASA,CAACA,WAAWA,CAACA,CAACA,CAACA;gCAC1CA,UAAUA,GAAGA,IAAIA,CAACA,SAASA,CAACA,CAACA,CAACA,CAACA,SAASA,CAACA,cAAcA,CAACA,IAAIA,CAACA,SAASA,CAACA,CAACA,CAACA,CAACA,SAASA,CAACA,CAACA,EAC5BA,IAAIA,CAACA,SAASA,CAACA,CAACA,CAACA,CAACA,SAASA,CAACA,CAACA,EAC7BA,CAACA,EAAEA,CAACA,EAAEA,KAAKA,CAACA,CAACA;gCACtEA,IAAIA,CAACA,SAASA,CAACA,CAACA,CAACA,CAACA,OAAOA,CAACA,UAAUA,CAACA,UAAUA,CAACA,CAACA;4BACrDA,CAACA;4BAEDA,IAAIA,CAACA,SAASA,CAACA,CAACA,CAACA,CAACA,SAASA,GAAGA,IAAIA,UAAUA,CAACA,IAAIA,CAACA,SAASA,CAACA,CAACA,CAACA,CAACA,SAASA,CAACA,CAACA,EAC/BA,IAAIA,CAACA,SAASA,CAACA,CAACA,CAACA,CAACA,SAASA,CAACA,CAACA,EAAEA,KAAKA,CAACA,CAACA;wBACrFA,CAACA;wBAEDA,IAAIA,CAACA,cAAcA,GAAGA,IAAIA,UAAUA,CAACA,CAACA,EAAEA,CAACA,EAAEA,KAAKA,CAACA,CAACA;oBACtDA,CAACA;oBAEMJ,iCAAUA,GAAjBA,UAAkBA,CAAaA;wBAC3BK,IAAIA,IAAwBA,CAACA;wBAC7BA,IAAIA,MAAcA,CAACA;wBAEnBA,IAAIA,CAACA,GAAWA,CAACA,CAACA;wBAClBA,IAAIA,CAACA,GAAWA,CAACA,CAACA;wBAClBA,IAAIA,EAAEA,GAAWA,CAACA,CAACA;wBACnBA,IAAIA,EAAEA,GAAWA,CAACA,CAACA;wBACnBA,IAAIA,KAAKA,GAAWA,CAACA,CAACA;wBAEtBA,IAAIA,UAAUA,GAAeA,IAAIA,CAACA;wBAElCA,sFAAsFA;wBACtFA,IAAIA,GAAGA,IAAIA,CAACA,UAAUA,EAAEA,CAACA;wBAEzBA,sFAAsFA;wBACtFA,EAAEA,CAACA,CAACA,CAACA,IAAIA,CAACA,cAAcA,CAACA,WAAWA,IAAIA,CAACA,CAACA,WAAWA,CAACA,CAACA,CAACA;4BACpDA,IAAIA,GAAGA,IAAIA,CAACA,YAAYA,CAACA,CAACA,CAACA,CAACA;wBAChCA,CAACA;wBAEDA,4FAA4FA;wBAC5FA,EAAEA,GAAGA,IAAIA,CAACA,cAAcA,CAACA,CAACA,GAAGA,CAACA,CAACA,CAACA,CAACA;wBACjCA,EAAEA,GAAGA,IAAIA,CAACA,cAAcA,CAACA,CAACA,GAAGA,CAACA,CAACA,CAACA,CAACA;wBACjCA,IAAIA,CAACA,cAAcA,GAAGA,IAAIA,UAAUA,CAACA,CAACA,CAACA,CAACA,EAAEA,CAACA,CAACA,CAACA,EAAEA,CAACA,CAACA,WAAWA,EAAEA,EAAEA,EAAEA,EAAEA,CAACA,CAACA;wBAEtEA,qBAAqBA;wBACrBA,MAAMA,GAAGA,IAAIA,CAACA,MAAMA,CAACA;wBACrBA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;4BAC9BA,CAACA,GAAGA,CAACA,CAACA,CAACA,GAAGA,IAAIA,CAACA,CAACA,CAACA,CAACA,MAAMA,CAACA,KAAKA,CAACA,CAACA,CAACA;4BACjCA,CAACA,GAAGA,CAACA,CAACA,CAACA,GAAGA,IAAIA,CAACA,CAACA,CAACA,CAACA,MAAMA,CAACA,KAAKA,CAACA,CAACA,CAACA;4BAEjCA,kCAAkCA;4BAClCA,EAAEA,CAACA,CAACA,IAAIA,CAACA,CAACA,CAACA,CAACA,SAASA,CAACA,WAAWA,IAAIA,CAACA,CAACA,WAAWA,CAACA,CAACA,CAACA;gCACjDA,EAAEA,GAAGA,CAACA,GAAGA,IAAIA,CAACA,CAACA,CAACA,CAACA,SAASA,CAACA,CAACA,CAACA;gCAC7BA,EAAEA,GAAGA,CAACA,GAAGA,IAAIA,CAACA,CAACA,CAACA,CAACA,SAASA,CAACA,CAACA,CAACA;gCAE7BA,uDAAuDA;gCACvDA,KAAKA,GAAGA,IAAIA,CAACA,GAAGA,CAACA,GAAGA,GAAGA,IAAIA,CAACA,EAAEA,GAAGA,IAAIA,CAACA,IAAIA,CAACA,EAAEA,GAAGA,EAAEA,CAACA,CAACA,CAACA;gCAErDA,EAAEA,CAACA,CAACA,IAAIA,CAACA,eAAeA,CAACA,CAACA,CAACA;oCACvBA,sEAAsEA;oCACtEA,EAAEA,CAACA,CAACA,IAAIA,CAACA,aAAaA,IAAIA,CAACA,IAAIA,CAACA,sBAAsBA,GAAGA,CAACA,CAACA,CAACA,CAACA,CAACA;wCAC1DA,EAAEA,CAACA,CAACA,IAAIA,CAACA,cAAcA,KAAKA,kBAAyBA,CAACA,CAACA,CAACA;4CACpDA,EAAEA,GAAGA,CAACA,CAACA;wCACXA,CAACA;wCACDA,IAAIA,CAACA,EAAEA,CAACA,CAACA,IAAIA,CAACA,cAAcA,KAAKA,gBAAuBA,CAACA,CAACA,CAACA;4CACvDA,EAAEA,GAAGA,CAACA,CAACA;wCACXA,CAACA;oCACLA,CAACA;oCACDA,IAAIA,CAACA,CAACA;wCACFA,wCAAwCA;wCACxCA,EAAEA,CAACA,CAACA,KAAKA,GAAGA,EAAEA,CAACA,CAACA,CAACA;4CACbA,EAAEA,GAAGA,CAACA,CAACA;4CACPA,EAAEA,CAACA,CAACA,IAAIA,CAACA,cAAcA,KAAKA,kBAAyBA,CAACA,CAACA,CAACA;gDACpDA,IAAIA,CAACA,sBAAsBA,EAAEA,CAACA;4CAClCA,CAACA;4CACDA,IAAIA,CAACA,CAACA;gDACFA,IAAIA,CAACA,sBAAsBA,GAAGA,CAACA,CAACA;gDAChCA,IAAIA,CAACA,cAAcA,GAAGA,kBAAyBA,CAACA;4CACpDA,CAACA;wCACLA,CAACA;wCACDA,IAAIA,CAACA,CAACA;4CACFA,qDAAqDA;4CACrDA,KAAKA,GAAGA,IAAIA,CAACA,GAAGA,CAACA,GAAGA,GAAGA,IAAIA,CAACA,EAAEA,GAAGA,IAAIA,CAACA,IAAIA,CAACA,EAAEA,GAAGA,EAAEA,CAACA,CAACA,CAACA;4CAErDA,wCAAwCA;4CACxCA,EAAEA,CAACA,CAACA,KAAKA,GAAGA,EAAEA,CAACA,CAACA,CAACA;gDACbA,EAAEA,GAAGA,CAACA,CAACA;gDAEPA,EAAEA,CAACA,CAACA,IAAIA,CAACA,cAAcA,KAAKA,gBAAuBA,CAACA,CAACA,CAACA;oDAClDA,IAAIA,CAACA,sBAAsBA,EAAEA,CAACA;gDAClCA,CAACA;gDACDA,IAAIA,CAACA,CAACA;oDACFA,IAAIA,CAACA,sBAAsBA,GAAGA,CAACA,CAACA;oDAChCA,IAAIA,CAACA,cAAcA,GAAGA,gBAAuBA,CAACA;gDAClDA,CAACA;4CACLA,CAACA;4CACDA,IAAIA,CAACA,CAACA;gDACFA,EAAEA,CAACA,CAACA,IAAIA,CAACA,cAAcA,KAAKA,gBAAuBA,CAACA,CAACA,CAACA;oDAClDA,IAAIA,CAACA,sBAAsBA,EAAEA,CAACA;gDAClCA,CAACA;gDACDA,IAAIA,CAACA,CAACA;oDACFA,IAAIA,CAACA,cAAcA,GAAGA,gBAAuBA,CAACA;oDAC9CA,IAAIA,CAACA,sBAAsBA,GAAGA,CAACA,CAACA;gDACpCA,CAACA;4CACLA,CAACA;wCACLA,CAACA;oCACLA,CAACA;gCACLA,CAACA;4BACLA,CAACA;4BAEDA,IAAIA,CAACA,CAACA;gCACFA,EAAEA,GAAGA,CAACA,CAACA;gCACPA,EAAEA,GAAGA,CAACA,CAACA;gCACPA,IAAIA,CAACA,cAAc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A,SAAiBA;gBACvFO,IAAIA,MAAMA,GAAGA,KAAKA,CAACA,SAASA,EAAEA,CAACA;gBAC/BA,IAAIA,KAAKA,GAAGA,MAAMA,CAACA,CAACA,CAACA,GAAGA,MAAMA,CAACA,CAACA,CAACA,CAACA;gBAElCA,EAAEA,CAACA,CAACA,KAAKA,KAAKA,SAASA,IAAIA,MAAMA,CAACA,CAACA,CAACA,IAAIA,eAAeA,IAAIA,MAAMA,CAACA,CAACA,CAACA,IAAIA,CAACA,CAACA;oBACtEA,MAAMA,CAACA;gBAEXA,EAAEA,CAACA,CAACA,KAAKA,GAAGA,SAASA,CAACA,CAACA,CAACA;oBACpBA,IAAIA,OAAOA,GAAGA,CAACA,KAAKA,GAAGA,SAASA,CAACA,GAAGA,CAACA,CAACA;oBACtCA,MAAMA,CAACA,CAACA,CAACA,IAAIA,OAAOA,CAACA;oBACrBA,MAAMA,CAACA,CAACA,CAACA,IAAIA,OAAOA,CAACA;gBACzBA,CAACA;gBAEDA,IAAIA,CAACA,EAAEA,CAACA,CAACA,KAAKA,GAAGA,SAASA,CAACA,CAACA,CAACA;oBACzBA,IAAIA,OAAOA,GAAGA,CAACA,SAASA,GAAGA,KAAKA,CAACA,GAAGA,CAACA,CAACA;oBACtCA,MAAMA,CAACA,CAACA,CAACA,IAAIA,OAAOA,CAACA;oBACrBA,MAAMA,CAACA,CAACA,CAACA,IAAIA,OAAOA,CAACA;gBACzBA,CAACA;gBAEDA,EAAEA,CAACA,CAACA,MAAMA,CAACA,CAACA,CAACA,GAAGA,CAACA,CAACA,CAACA,CAACA;oBAChBA,MAAMA,CAACA,CAACA,CAACA,GAAGA,CAACA,CAACA;oBACdA,MAAMA,CAACA,CAACA,CAACA,GAAGA,SAASA,CAACA;gBAC1BA,CAACA;gBAEDA,IAAIA,CAACA,EAAEA,CAACA,CAACA,MAAMA,CAACA,CAACA,CAACA,GAAGA,eAAeA,GAAGA,SAASA,CAACA,CAACA,CAACA;oBAC/CA,MAAMA,CAACA,CAACA,CAACA,GAAGA,eAAeA,GAAGA,SAASA,CAACA;oBACxCA,MAAMA,CAACA,CAACA,CA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YAC5BA,CAACA;YAEDhB,sBAAsBA;YACdA,+CAAuBA,GAA/BA,UAAgCA,IAA6BA;gBACzDiB,IAAIA,QAAQA,GAAGA,aAAaA,CAACA,WAAWA,CAACA,IAAIA,CAACA,CAACA,CAACA,SAASA,CAACA,CAACA;gBAC3DA,EAAEA,CAACA,CAACA,IAAIA,CAACA,CAACA,CAACA,cAAcA,CAACA,CAACA,CAACA;oBACxBA,IAAIA,CAACA,uBAAuBA,GAAGA,QAAQA,IAAIA,IAAIA,CAACA;gBACpDA,CAACA;gBACDA,IAAIA,CAACA,CAACA;oBACFA,IAAIA,CAACA,oBAAoBA,GAAGA,QAAQA,IAAIA,IAAIA,CAACA;gBACjDA,CAACA;gBAEDA,EAAEA,CAACA,CAACA,IAAIA,CAACA,CAACA,CAACA,SAASA,IAAIA,QAAQA,CAACA,CAACA,CAACA;oBAC/BA,EAAEA,CAACA,CAACA,IAAIA,CAACA,CAACA,CAACA,cAAcA,CAACA,CAACA,CAACA;wBACxBA,IAAIA,CAACA,CAACA,CAACA,SAASA,GAAGA,kBAAUA,CAACA,eAAeA,CAACA,IAAIA,CAACA,sBAAsBA,EAAEA,IAAIA,CAACA,CAACA,CAACA,SAASA,EAAEA,QAAQA,CAACA,CAACA;oBAC3GA,CAACA;oBACDA,IAAIA,CAACA,CAACA;wBACFA,IAAIA,CAACA,CAACA,CAACA,SAASA,GAAGA,kBAAUA,CAACA,eAAeA,CAACA,IAAIA,CAACA,mBAAmBA,EAAEA,IAAIA,CAACA,CAACA,CAACA,SAASA,EAAEA,QAAQA,CAACA,CAACA;oBACxGA,CAACA;gBACLA,CAACA;gBAEDA,QAAQA,GAAGA,aAAaA,CAACA,WAAWA,CAACA,IAAIA,CAACA,EAAEA,CAACA,SAASA,CAACA,CAACA;gBAExDA,EAAEA,CAACA,CAACA,CAACA,IAAIA,CAACA,EAAEA,CAACA,cAAcA,CAACA,CAACA,CAACA;oBAC1BA,IAAIA,CAACA,oBAAoBA,GAAGA,QAAQA,IAAIA,IAAIA,CAACA;gBACjDA,CAACA;gBACDA,IAAIA,CAACA,CAACA;oBACFA,IAAIA,CAACA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CAACA;gBACDA,IAAIA,CAACA,CAACA;oBACFA,UAAUA,GAAGA,MAAMA,CAACA,CAACA,CAACA,CAACA;oBACvBA,SAASA,GAAGA,UAACA,CAAqBA,IAAOA,MAAMA,CAACA,MAAMA,CAACA,CAACA,CAACA,KAAKA,CAACA,CAACA,CAACA,CAACA,CAACA;gBACvEA,CAACA;gBAEDA,IAAIA,IAAIA,CAACA;gBACTA,EAAEA,CAACA,CAACA,WAAWA,CAACA,CAACA,CAACA;oBACdA,IAAIA,GAAGA,EAAEA,CAACA,GAAGA,CAACA,IAAIA,EAAEA;yBACfA,CAACA,CAACA,SAASA,CAACA;yBACZA,EAAEA,CAACA,UAAUA,CAACA;yBACdA,EAAEA,CAACA,SAASA,CAACA;yBACbA,OAAOA,CAACA,UAACA,CAAqBA,IAAOA,MAAMA,CAACA,CAACA,CAACA,KAAKA,KAAKA,IAAIA,CAACA,CAACA,CAACA,CAACA,CAACA;gBAC1EA,CAACA;gBAEDA,IAAIA,IAAIA,GAAGA,EAAEA,CAACA,GAAGA,CAACA,IAAIA,EAAEA;qBACnBA,CAACA,CAACA,SAASA,CAACA;qBACZA,CAACA,CAACA,SAASA,CAACA;qBACZA,OAAOA,CAACA,UAACA,CAAqBA;oBAC3BA,MAAMA,CAACA,CAACA,CAACA,KAAKA,KAAKA,IAAIA,CAACA;gBAC5BA,CAACA,CAACA,CAACA;gBAEPA,EAAEA,CAACA,CAACA,cAAcA,CAACA,OAAOA,CAACA,IAAIA,CAACA,QAAQA,EAAEA,cAAoBA,CAACA,CAACA,CAACA,CAACA;oBAC9DA,IAAIA,CAACA,WAAWA,CAACA,OAAOA,CAACA,CAACA;oBAC1BA,EAAEA,CAACA,CAACA,IAAIA,CAACA,CAACA,CAACA;wBACPA,IAAIA,CAACA,WAAWA,CAACA,OAAOA,CAACA,CAACA;oBAC9BA,CAACA;gBACLA,CAACA;gBAEDA,IAAIA,CAACA,eAAeA;qBACfA,IAAIA,CAACA,QAAQA,EAAEA,MAAMA,CAACA;qBACtBA,IAAIA,CAACA,OAAOA,EAAEA,KAAKA,CAACA,CAACA;gBAC1BA,IAAIA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OAAAA,UAAUA,CAACA,CAACA,CAACA,GAAGA,eAAeA,CAACA,CAACA,CAACA,EAAlCA,CAAkCA;yBACpEA,CAACA,CAACA;wBACPA,EAAEA,CAACA,CAACA,aAAaA,CAACA,CAACA,CAACA;4BAChBA,UAAUA;iCACLA,UAAUA,EAAEA;iCACZA,IAAIA,CAACA,QAAQA,CAACA;iCACdA,QAAQA,CAACA,iBAASA,CAACA,sBAAsBA,CAACA;iCAC1CA,IAAIA,CAACA,mBAAmBA,EAAEA,CAACA,CAACA,CAACA;wBACtCA,CAACA;wBACDA,IAAIA,CAACA,CAACA;4BACFA,UAAUA,CAACA,IAAIA,CAACA,mBAAmBA,EAAEA,CAACA,CAACA,CAACA;wBAC5CA,CAACA;oBACLA,CAACA;oBACDA,IAAIA,CAACA,CAACA;wBACFA,iBAAiBA;wBACjBA,EAAEA,CAACA,CAACA,aAAaA,CAACA,CAACA,CAACA;4BAChBA,UAAUA;iCACLA,UAAUA,EAAEA;iCACZA,IAAIA,CAACA,QAAQA,CAACA;iCACdA,QAAQA,CAACA,iBAASA,CAACA,sBAAsBA,CAACA;iCAC1CA,IAAIA,CAACA,mBAAmBA,EAAEA,UAACA,CAACA,EAAEA,CAACA,IAAKA,OAAAA,eAAeA,CAACA,CAACA,CAACA,GAAGA,UAAUA,CAACA,CAACA,CAACA,EAAlCA,CAAkCA,CAACA;iCACvEA,UAAUA,EAAEA;iCACZA,IAAIA,CAACA,QAAQA,CAACA;iCACdA,QAAQA,CAACA,CAACA,CAACA,CAACA,iEAAiEA;iCAC7EA,KAAKA,CAACA,iBAASA,CAACA,sBAAsBA,CAACA;iCACvCA,KAAKA,CAACA,QAAQA,EAAEA,UAACA,CAAwBA,IAAKA,OAAAA,YAAYA,CAACA,aAAaA,CAACA,CAACA,EAAEA,IAAIA,CAACA,EAAnCA,CAAmCA,CAACA;iCAClFA,IAAIA,CAACA;gCACFA,GAAGA,EAAEA,UAACA,CAACA,EAAEA,CAACA;oCACNA,MAAMA,CAACA,IAAIA,CAACA,YAAYA,CAACA,CAACA,CAACA,CAACA,CAACA;gCACjCA,CAACA;gCACDA,kBAAkBA,EAAEA,UAACA,CAACA,EAAEA,CAACA,IAAKA,OAAAA,UAAUA,CAACA,CAACA,CAACA,GAAGA,GAAGA,GAAGA,UAAUA,CAACA,CAACA,CAACA,EAAnCA,CAAmCA;gCACjEA,mBAAmBA,EAAEA,CAACA;6BACzBA,CAACA,CAACA;wBACXA,CAACA;wBACDA,IAAIA,CAACA,CAACA;4BACFA,UAAUA;iCACLA,KAAKA,CAACA,QAAQA,EAAEA,UAACA,CAAwBA,IAAKA,OAAAA,YAAYA,CAACA,aAAaA,CAACA,CAACA,EAAEA,IAAIA,CAACA,EAAnCA,CAAmCA,CAACA;iCAClFA,IAAIA,CAACA;gCACFA,GAAGA,EAAEA,UAACA,CAACA,EAAEA,CAACA;oCACNA,MAAMA,CAACA,IAAIA,CAACA,YAAYA,CAACA,CAACA,CAACA,CAACA,CAACA;gCACjCA,CAACA;gCACDA,kBAAkBA,EAAEA,UAACA,CAACA,EAAEA,CAACA,IAAKA,OAAAA,UAAUA,CAACA,CAACA,CAACA,GAAGA,GAAGA,GAAGA,UAAUA,CAACA,CAACA,CAACA,EAAnCA,CAAmCA;gCACjEA,mBAAmBA,EAAEA,CAACA;6BACzBA,CAACA,CAACA;wBACXA,CAACA;oBACLA,CAACA;oBAEDA,UAAUA,CAACA,IAAIA,EAAEA;yBACZA,MAAMA,EAAEA,CAACA;oBAEdA,iBAAiBA;oBACjBA,IAAIA,YAAYA,GAA4BA,EAAEA,CAACA;oBAC/CA,GAAGA,CAACA,CAACA,GAAGA,CAACA,eAAaA,GAAGA,CAACA,EAAEA,eAAaA,GAAGA,YAAYA,CAACA,MAAMA,EAAEA,eAAaA,EAAEA,EAAEA,CAACA;wBAC/EA,IAAIA,MAAMA,GAAGA,YAAYA,CAACA,eAAaA,CAACA,CAACA;wBAEzCA,qHAAqHA;wBACrHA,IAAIA,SAASA,GAAGA,uBAAuBA,CAACA,eAAaA,CAACA,GAAGA,MAAMA,CAACA,KAAKA,CAACA,CAACA,EAAEA,MAAMA,CAACA,MAAMA,GAAGA,CAACA,CAACA,GAAGA,MAAMA,CAACA;wBAErGA,YAAYA,GAAGA,YAAYA,CAACA,MAAMA,CAACA,SAASA,CAACA,CAACA;oBAClDA,CAACA;oBAEDA,IAAIA,OAAOA,GAAGA,IAAIA,CAACA,OAAOA,CAACA,SAASA,CAACA,wBAAwBA,CAACA,WAAWA,CAACA,QAAQA,CAACA;yBAC9EA,IAAIA,CAACA,YAAYA,EAAEA,UAACA,CAAwBA,IAAKA,OAAAA,CAACA,CAACA,QAAQA,CAACA,MAAMA,EAAEA,GAAGA,CAACA,CAACA,CAACA,GAAGA,CAACA,CAACA,CAACA,GAAGA,CAACA,CAACA,IAAIA,EAAxCA,CAAwCA,CAACA,CAACA;oBAEhGA,OAAOA,CAACA,KAAKA,EAAEA;yBACVA,MAAMA,CAACA,QAAQA,CAACA;yBAChBA,KAAKA,CAACA,SAASA,EAAEA,CAACA,CAACA,CAACA,kCAAkCA;yBACtDA,OAAOA,CAACA,wBAAwBA,CAACA,WAAWA,CAACA,KAAKA,EAAEA,IAAIA,CAACA,CAACA;oBAE/DA,OAAOA;yBACFA,IAAIA,CAACA,IAAIA,EAAEA,UAACA,CAAwBA,IAAKA,OAAAA,MAAMA,CAACA,CAACA,CAACA,CAACA,CAACA,EAAXA,CAAWA,CAACA;yBACrDA,IAAIA,CAACA,IAAIA,EAAEA,UAACA,CAAwBA,IAAKA,OAAAA,MAAMA,CAACA,CAACA,CAACA,CAACA,CAACA,EAAXA,CAAWA,CAACA;yBACrDA,IAAIA,CAACA,GAAGA,EAAEA,UAACA,CAAwBA,IAAKA,OAAAA,YAAYA,CAACA,eAAeA,CAACA,CAACA,CAACA,MAAMA,EAAqBA,SAASA,CAACA,IAAIA,CAACA,gBAAiBA,CAACA,SAASA,EAAEA,SAASA,CAACA,QAAQA,CAACA,EAAzHA,CAAyHA,CAACA;yBAClKA,KAAKA,CAACA;wBACHA,gBAAgBA,EAAEA,UAACA,CAAwBA,IAAKA,OAAAA,YAAYA,CAACA,gBAAgBA,CAACA,CAACA,EAAEA,IAAIA,CAACA,EAAtCA,CAAsCA;wBACtFA,cAAcA,EAAEA,KAAKA;wBACrBA,QAAQA,EAAEA,UAACA,CAAwBA,IAAKA,OAAAA,YAAYA,CAACA,aAAaA,CAACA,CAACA,EAAEA,SAASA,CAACA,IAAIA,CAACA,gBAAgBA,CAACA,WAAWA,CAACA,EAA1EA,CAA0EA;wBAClHA,MAAMA,EAAEA,UAACA,CAAwBA,IAAKA,OAAAA,CAACA,CAACA,IAAIA,EAANA,CAAMA;wBAC5CA,sHAAsHA;wBACtHA,cAAcA,EAAEA,UAACA,CAAwBA,IAAKA,OAAAA,CAACA,CAACA,IAAIA,IAAIA,IAAIA,GAAGA,IAAIA,GAAGA,CAAsBA,CAAEA,CAACA,UAAUA,GAAGA,iBAAiBA,CAACA,GAAGA,IAAIA,GAAGA,CAACA,EAA3FA,CAA2FA;qBAC5IA,CAACA;yBACDA,UAAUA,EAAEA;yBACZA,IAAIA,CAACA,QAAQA,CAACA;yBACdA,QAAQA,CAACA,iBAASA,CAACA,sBAAsBA,CAACA;yBAC1CA,KAAKA,CAACA,SAASA,EAAEA,CAACA,CAACA,CAACA;oBAEzBA,OAAOA,CAACA,IAAIA,EAAEA;yBACTA,UAAUA,EAAEA;yBACZA,IAAIA,CAACA,QAAQA,CAACA;yBACdA,QAAQA,CAACA,iBAASA,CAACA,sBAAsBA,CAACA;yBAC1CA,KAAKA,CAACA,SAASA,EAAEA,CAACA,CAACA,CAACA,2BAA2BA;yBAC/CA,MAAMA,EAAEA,CAACA;oBAEdA,sBAAcA,CAACA,UAAUA,CAACA,OAAOA,EAAEA,UAACA,YAA0BA,IAAKA,OAAAA,YAAYA,CAACA,IAAIA,CAACA,WAAWA,EAA7BA,CAA6BA,CAACA,CAACA;oBAElGA,yCAAyCA;oBACzCA,OAAOA,CAACA,IAAIA,CAACA,UAACA,EAAyBA,EAAEA,EAAyBA,IAAOA,MAAMA,CAACA,EAAEA,CAACA,IAAIA,GAAGA,EAAEA,CAACA,IAAIA,CAACA,CAACA,CAACA,CAACA,CAACA;gBAC1GA,CAACA;gBACDA,IAAIA,CAACA,CAACA;oBACFA,IAAIA,CAACA,MAAMA,EAAEA,CAACA;gBAClBA,CAACA;YACLA,CAACA;YA7LcH,kCAASA,GAAqBA,sBAAsBA,CAACA,WAAWA,CAACA,CAACA;YAClEA,oCAAWA,GAAqBA,sBAAsBA,CAACA,aAAaA,CAACA,CAACA;YA6LzFA,+BAACA;QAADA,CA/LAx9E,AA+LCw9E,IAAAx9E;IACLA,CAACA,EAh8CcrxC,OAAOA,GAAPA,eAAOA,KAAPA,eAAOA,QAg8CrBA;AAADA,CAACA,EAh8CM,OAAO,KAAP,OAAO,QAg8Cb;AC59CD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,yCAAyC;AAEzC,IAAO,OAAO,CAozBb;AApzBD,WAAO,OAAO;IAACA,IAAAA,OAAOA,CAozBrBA;IApzBcA,WAAAA,OAAOA,EAACA,CAACA;QACpBqxC,IAAOA,sBAAsBA,GAAGA,QAAQA,CAACA,YAAYA,CAACA,sBAAsBA,CAACA;QAU5EA,CAACA;QA4DFA;YAuBI49E,kBAAYA,OAA+BA;gBACvCC,EAAEA,CAACA,CAACA,OAAOA,CAACA,CAACA,CAACA;oBACVA,IAAIA,CAACA,oBAAoBA,GAAGA,OAAOA,CAACA,oBAAoBA,CAACA;gBAC7DA,CAACA;YACLA,CAACA;YAEMD,uBAAIA,GAAXA,UAAYA,OAAwBA;gBAApCE,iBAaCA;gBAZGA,KAAKA,CAACA,WAAWA,CAACA,OAAOA,EAAEA,SAASA,CAACA,CAACA;gBAEtCA,IAAIA,CAACA,OAAOA,GAAGA,OAAOA,CAACA,OAAOA,CAACA;gBAC/BA,IAAIA,CAACA,GAAGA,GAAGA,OAAOA,CAACA,GAAGA,CAACA;gBACvBA,IAAIA,CAACA,IAAIA,GAAGA,OAAOA,CAACA,IAAIA,CAACA;gBAEzBA,IAAIA,CAACA,aAAaA,GAAGA,OAAOA,CAACA,aAAaA,IAAIA,OAAOA,CAACA,aAAaA,CAACA,mBAAmBA,CAACA;gBAExFA,EAAEA,CAACA,CAACA,IAAIA,CAACA,oBAAoBA,IAAIA,CAACA,IAAIA,CAACA,aAAaA,CAACA,CAACA,CAACA;oBACnDA,IAAIA,CAACA,WAAWA,GAAGA,IAAIA,WAAWA,CAACA,IAAIA,CAACA,OAAOA,EAAEA,UAACA,UAAkBA,IAAKA,OAAAA,KAAIA,CAACA,oBAAoBA,CAACA,UAAUA,CAACA,EAArCA,CAAqCA,CAACA,CAACA;oBAChHA,IAAIA,CAACA,WAAWA,CAACA,MAAMA,CAACA,cAAMA,OAAAA,KAAIA,CAACA,IAAIA,EAAEA,EAAXA,CAAWA,CAACA,CAACA;gBAC/CA,CAACA;YACLA,CAACA;YAEMF,0BAAOA,GAAdA,UAAeA,QAAkBA,EAAEA,eAA+CA,EAAEA,WAAoBA;gBACpGG,EAAEA,CAACA,CAACA,QAAQA,CAACA,CAACA,CAACA;oBACXA,EAAEA,CAACA,CAACA,IAAIA,CAACA,kCAAkCA,IAAIA,QAAQA,CAACA,QAAQA,CAACA,CAACA,CAACA;wBAC/DA,mGAAmGA;wBACnGA,6DAA6DA;wBAE7DA,8EAA8EA;wBAC9EA,2DAA2DA;wBAC3DA,6DAA6DA;wBAE7DA,gEAAgEA;wBAChEA,IAAIA,CAACA,kCAAkCA,GAAGA,KAAKA,CAACA;wBAChDA,MAAMA,CAACA,IAAIA,CAACA,QAAQA,CAACA;oBACzBA,CAACA;oBACDA,IAAIA,CAACA,EAAEA,CAACA,CAACA,QAAQA,CAACA,MAAMA,IAAIA,QAAQA,CAACA,WAAWA,CAACA,CAACA,CAACA;wBAC/CA,EAAEA,CAACA,CAACA,WAAWA,CAACA;4BACZA,MAAMA,CAACA,IAAIA,CAACA,QAAQA,CAACA;wBAEzBA,IAAIA,CAACA,QAAQA,GAAGA,SAASA,CAACA,SAASA,CAAIA,QAAQA,EAAEA,eAAeA,CAACA,CAACA;oBACtEA,CAACA;oBACDA,IAAIA,CAACA,CAACA;wBACFA,IAAIA,CAACA,QAAQA,GAAGA,SAASA,CAACA,kBAAkBA,EAAKA,CAACA;oBACtDA,CAACA;gBACLA,CAACA;gBACDA,IAAIA,CAACA,CAACA;oBACFA,IAAIA,CAACA,QAAQA,GAAGA,SAASA,CAACA,kBAAkBA,EAAKA,CAACA;gBACtDA,CAACA;gBAEDA,oCAAoCA;gBACpCA,IAAIA,CAACA,YAAYA,GAAGA,SAASA,CAACA;gBAE9BA,MAAMA,CAACA,IAAIA,CAACA,QAAQA,CAACA;YACzBA,CAACA;YAEMH,yBAAMA,GAAbA,UAA0BA,kBAA2BA,EAAEA,SAAqBA,EAAEA,QAAmBA,EAAEA,MAAeA;gBAC9GI,IAAIA,QAAQA,GAAGA,IAAIA,CAACA,QAAQA,CAACA;gBAE7BA,IAAIA,OAAOA,GAAGA,CAACA,IAAIA,CAACA,YAAYA,IAAIA,CAACA,IAAIA,CAACA,YAAYA,CAACA,MAAMA,KAAKA,QAAQA,CAACA,MAAMA,IAAIA,IAAIA,CAACA,YAAYA,CAACA,KAAKA,KAAKA,QAAQA,CAACA,KAAKA,CAACA,CAACA;gBACjIA,IAAIA,CAACA,YAAYA,GAAGA,QAAQA,CAACA;gBAE7BA,EAAEA,CAACA,CAACA,OAAOA,CAACA;oBACRA,IAAIA,CAACA,IAAIA,EAAEA,CAACA;gBAEhBA,EAAEA,CAACA,CAACA,CAACA,QAAQA,CAACA;oBACVA,MAAMA,CAACA;gBAEXA,IAAIA,aAAaA,GAAsCA;oBACnDA,IAAIA,EAAEA,IAAIA,CAACA,QAAQA;oBACnBA,SAASA,EAAEA,SAASA;oBACpBA,QAAQA,EAAEA,QAAQA;iBACrBA,CAACA;gBAEFA,IAAIA,YAAYA,GAAGA,KAAKA,CAACA;gBACzBA,EAAEA,CAACA,CAACA,IAAIA,CAACA,oBAAoBA,CAACA,CAACA,CAACA;oBAC5BA,IAAIA,MAAIA,GAAsBA,QAAQA,CAACA,gBAAgBA,CAACA;oBACxDA,IAAIA,CAACA,oBAAoBA,CAACA,yBAAyBA,CAACA,MAAIA,CAACA,UAAUA,CAACA,CAACA;oBACrEA,YAAYA,GAAGA,IAAIA,CAACA,oBAAoBA,CAACA,YAAYA,EAAEA,CAACA;gBAC5DA,CAACA;gBAEDA,IAAIA,SAASA,GAAGA,QAAQA,CAACA,SAASA,CAACA;gBACnCA,IAAIA,iBAAiBA,GAAGA,QAAQA,CAACA,iBAAiBA,CAACA;gBACnDA,IAAIA,MAAMA,GAAGA,QAAQA,CAACA,MAAMA,CAACA;gBAC7BA,IAAIA,cAAcA,GAAGA,MAAMA,GAAGA,MAAMA,CAACA,GAAGA,GAAGA,MAAMA,CAACA,MAAMA,CAACA;gBACzDA,IAAIA,KAAKA,GAAGA,QAAQA,CAACA,KAAKA,CAACA;gBAC3BA,IAAIA,aAAaA,GAAGA,KAAKA,GAAGA,MAAMA,CAACA,IAAIA,GAAGA,MAAMA,CAACA,KAAKA,CAACA;gBAEvDA,EAAEA,CAACA,CAACA,IAAIA,CAACA,WAAWA,IAAIA,OAAOA,CAACA,CAACA,CAACA;oBAC9BA,IAAIA,CAACA,WAAWA,CAACA,OAAOA,CAACA,QAAQA,EAAEA,QAAQA,CAACA,CAACA;gBACjDA,CAACA;gBAEDA,wCAAwCA;gBACxCA,IAAIA,gBAAgBA,GAAGA,IAAIA,CAACA,GAAGA,CAACA,MAAMA,EAAEA,KAAKA,GAAGA,GAAGA,CAACA,CAACA,CAACA,mDAAmDA;gBACzGA,IAAIA,QAAQA,GAAGA,IAAIA,CAACA,GAAGA,CAACA,EAAEA,EAAEA,IAAIA,CAACA,KAAKA,CAACA,gBAAgBA,GAAGA,CAACA,CAACA,CAACA,CAACA;gBAC9DA,QAAQA,GAAGA,IAAIA,CAACA,GAAGA,CAACA,QAAQA,EAAEA,EAAEA,CAACA,CAACA;gBAClCA,IAAIA,cAAcA,GAAGA;oBACjBA,QAAQA,EAAEA,EAAEA,GAAGA,QAAQA;oBACvBA,IAAIA,EAAEA,SAASA,CAACA,iBAAiBA,CAACA,IAAIA,EAAEA;oBACxCA,UAAUA,EAAEA,UAAUA;iBACzBA,CAACA;gBACFA,IAAIA,UAAUA,GAAGA,8BAAsBA,CAACA,qBAAqBA,CAACA,cAAcA,CAACA,GAAGA,8BAAsBA,CAACA,4BAA4BA,CAACA,cAAcA,CAACA,CAACA;gBAEpJA,IAAIA,WAAWA,GAAaA,EAAEA,CAACA;gBAAAA,CAACA;gBAChCA,EAAEA,CAACA,CAACA,iBAAiBA,GAAGA,SAASA,CAACA,MAAMA,IAAIA,iBAAiBA,IAAIA,CAACA,IAAIA,UAAUA,GAAGA,cAAcA,CAACA;oBAC9FA,WAAWA,GAAGA,CAACA,8BAAsBA,CAACA,wBAAwBA,CAACA,cAAcA,EAAEA,aAAaA,GAAGA,CAACA,CAACA,GAAGA,QAAQA,CAACA,uBAAuBA,GAAGA,UAAUA,CAACA,CAACA,CAACA,CAACA;gBAEzJA,IAAIA,OAAOA,GAAGA,IAAIA,CAACA,GAAGA,CAACA,SAASA,CAACA,QAAQA,CAACA,WAAWA,CAACA,QAAQA,CAACA,CAACA,IAAIA,CAACA,WAAWA,CAACA,CAACA;gBAElFA,OAAOA,CAACA,KAAKA,EAAEA;qBACVA,MAAMA,CAACA,MAAMA,CAACA;qBACdA,OAAOA,CAACA,QAAQA,CAACA,WAAWA,CAACA,KAAKA,EAAEA,IAAIA,CAACA,CAACA;gBAE/CA,OAAOA;qBACFA,IAAIA,CAACA,UAACA,CAASA,IAAKA,OAAAA,CAACA,EAADA,CAACA,CAACA;qBACtBA,IAAIA,CAACA;oBACFA,CAACA,EAAEA,aAAaA,GAAGA,QAAQA,CAACA,uBAAuBA,GAAGA,UAAUA;oBAChEA,CAACA,EAAEA,cAAMA,OAAAA,UAAUA,EAAVA,CAAUA;iBACtBA,CAACA;qBACDA,KAAKA,CAACA;oBACHA,WAAWA,EAAEA,QAAQA,GAAGA,IAAIA;oBAC5BA,aAAaA,EAAEA,KAAKA;iBACvBA,CAACA,CAACA;gBAEPA,OAAOA,CAACA,IAAIA,EAAEA,CAACA,MAAMA,EAAEA,CAACA;gBAExBA,IAAIA,aAAaA,GAAGA,QAAQA,CAACA,aAAaA,CAACA,GAAGA,CAACA,UAACA,EAAEA,IAAKA,OAAAA,EAAEA,CAACA,UAAUA,EAAbA,CAAaA,CAACA,CAACA;gBACtEA,IAAIA,iBAAiBA,GAAGA,CAACA,CAACA,OAAOA,CAAsBA,aAAaA,CAACA,CAACA;gBAEtEA,0GAA0GA;gBAC1GA,MAAMA,CAACA;oBACHA,aAAaA,EAAEA,iBAAiBA;oBAChCA,SAASA,EAAEA,aAAaA;iBAC3BA,CAACA;YACNA,CAACA;YAEMJ,uBAAIA,GAAXA;gBACIK,IAAIA,QAAQA,GAAGA,IAAIA,CAACA,QAAQA,CAACA;gBAE7BA,EAAEA,CAACA,CAACA,IAAIA,CAACA,SAASA,CAACA,CAACA,CAACA;oBACjBA,IAAIA,CAACA,IAAIA,EAAEA,CAACA;gBAChBA,CAACA;gBACDA,IAAIA,CAACA,EAAEA,CAACA,CAACA,IAAIA,CAACA,WAAWA,CAACA,CAACA,CAACA;oBACxBA,IAAIA,CAACA,SAASA,GAAGA,IAAIA,CAACA;oBACtBA,IAAIA,CAACA,WAAWA,CAACA,IAAIA,EAAEA,CAACA;oBAExBA,IAAIA,WAAWA,GAAGA,IAAIA,CAACA,KAAKA,CAACA,IAAIA,CAACA,WAAWA,CAACA,eAAeA,EAAEA,CAACA,CAACA;oBACjEA,EAAEA,CAACA,CAACA,WAAWA,IAAIA,QAAQA,CAACA,aAAaA,CAACA,MAAMA,GAAGA,CAACA,CAACA,CAACA,CAACA;wBACnDA,QAAQA,CAACA,iBAAiBA,GAAGA,CAACA,CAACA,CAACA;oBACpCA,CAACA;oBAACA,IAAIA,CAACA,CAACA;wBACJA,QAAQA,CAACA,iBAAiBA,GAAGA,WAAWA,GAAGA,CAACA,CAACA;oBACjDA,CAACA;oBAEDA,IAAIA,CAACA,aAAaA,CAACA,QAAQA,CAACA,CAACA;gBACjCA,CAACA;YACLA,CAACA;YAEOL,gCAAaA,GAArBA,UAAsBA,QAA0BA,EAAEA,UAAmBA,EAAEA,QAAiBA;gBAAxFM,iBA2BCA;gBA1BGA,EAAEA,CAACA,CAACA,CAACA,IAAIA,CAACA,SAASA,CAACA,CAACA,CAACA;oBAClBA,IAAIA,CAACA,IAAIA,EAAEA,CAACA;oBACZA,MAAMA,CAACA;gBACXA,CAACA;gBAEDA,IAAIA,SAASA,GAAGA,QAAQA,CAACA,iBAAiBA,GAAGA,CAACA,CAACA;gBAC/CA,EAAEA,CAACA,CAACA,UAAUA,IAAIA,IAAIA,IAAIA,QAAQA,IAAIA,IAAIA,CAACA,CAACA,CAACA;oBACzCA,SAASA,GAAGA,IAAIA,CAACA,GAAGA,CAACA,QAAQA,GAAGA,UAAUA,GAAGA,CAACA,CAACA,CAACA;oBAChDA,UAAUA,GAAGA,SAASA,CAACA;gBAC3BA,CAACA;gBAEDA,EAAEA,CAACA,CAACA,SAASA,GAAGA,QAAQA,CAACA,aAAaA,CAACA,MAAMA,IAAIA,SAASA,GAAGA,CAACA,CAACA,CAACA,CAACA,CAACA;oBAC9DA,QAAQA,CAACA,iBAAiBA,GAAGA,SAASA,CAACA;oBACvCA,QAAQA,CAACA,gBAAgBA,GAAGA,QAAQA,CAACA,aAAaA,CAACA,SAASA,CAACA,CAACA;oBAE9DA,IAAIA,CAACA,cAAcA,CAACA,QAAQA,CAACA,gBAAgBA,CAACA,CAACA;oBAC/CA,IAAIA,CAACA,WAAWA,CAACA,QAAQA,CAACA,SAASA,CAACA,CAACA;oBAErCA,EAAEA,CAACA,CAACA,SAASA,GAAGA,QAAQA,CAACA,aAAaA,CAACA,MAAMA,CAACA,CAACA,CAACA;wBAC5CA,MAAMA,CAACA,UAAUA,CAACA;4BACdA,KAAIA,CAACA,aAAaA,CAACA,QAAQA,EAAEA,UAAUA,EAAEA,QAAQA,CAACA,CAACA;wBACvDA,CAACA,EAAEA,SAASA,CAACA,iBAAiBA,CAACA,CAACA;oBACpCA,CAACA;gBACLA,CAACA;gBAACA,IAAIA,CAACA,CAACA;oBACJA,IAAIA,CAACA,IAAIA,EAAEA,CAACA;gBAChBA,CAACA;YACLA,CAACA;YAEMN,uBAAIA,GAAXA;gBACIO,EAAEA,CAACA,CAACA,IAAIA,CAACA,WAAWA,CAACA;oBACjBA,IAAIA,CAACA,WAAWA,CAACA,KAAKA,EAAEA,CAACA;gBAC7BA,IAAIA,CAACA,SAASA,GAAGA,KAAKA,CAACA;YAC3BA,CAACA;YAEMP,yBAAMA,GAAbA;gBACIQ,EAAEA,CAACA,CAACA,IAAIA,CAACA,WAAWA,CAACA;oBACjBA,IAAIA,CAACA,WAAWA,CAACA,MAAMA,EAAEA,CAACA;gBAC9BA,EAAEA,CAACA,SAASA,CAACA,QAAQA,CAACA,WAAWA,CAACA,QAAQA,CAACA,CAACA,MAAMA,EAAEA,CAACA;gBAErDA,8BAA8BA;YAClCA,CAACA;YAEMR,oCAAiBA,GAAxBA,UAAyBA,EAAmCA;gBACxDS,IAAIA,CAACA,cAAcA,GAAGA,EAAEA,CAACA;YAC7BA,CAACA;YAEMT,sCAAmBA,GAA1BA,UAA2BA,eAAiCA,EAAEA,UAAmCA;gBAC7FU,EAAEA,CAACA,CAACA,IAAIA,CAACA,QAAQA,IAAIA,IAAIA,CAACA,QAAQA,CAACA,aAAaA,IAAIA,IAAIA,CAACA,QAAQA,CAACA,aAAaA,CAACA,MAAMA,GAAGA,CAACA,CAACA,CAACA,CAACA;oBACzFA,MAAMA,CAACA,SAASA,CAACA,qBAAqBA,CAACA,IAAIA,CAACA,QAAQA,EAAEA,UAAUA,CAACA,CAACA;gBACtEA,CAACA;gBAEDA,MAAMA,CAACA,eAAeA,CAACA;YAC3BA,CAACA;YAEMV,yCAAsBA,GAA7BA,UAA8BA,iBAAwBA;gBAClDW,EAAEA,CAACA,CAACA,IAAIA,CAACA,WAAWA,CAACA,CAACA,CAACA;oBACnBA,IAAIA,SAASA,GAAGA,IAAIA,CAACA,WAAWA,CAACA,YAAYA,EAAEA,CAACA;oBAChDA,SAASA,CAACA,GAAGA,CAACA,MAAMA,EAAEA,iBAAiBA,CAACA,IAAIA,GAAGA,iBAAiBA,CAACA,IAAIA,GAAGA,IAAIA,GAAGA,EAAEA,CAACA,CAACA;oBACnFA,SAASA,CAACA,GAAGA,CAACA,KAAKA,EAAEA,iBAAiBA,CAACA,GAAGA,GAAGA,iBAAiBA,CAACA,GAAGA,GAAGA,IAAIA,GAAGA,EAAEA,CAACA,CAACA;gBAGpFA,CAACA;YACLA,CAACA;YAEOX,uCAAoBA,GAA5BA,UAA6BA,UAAkBA;gBAC3CY,IAAIA,QAAQA,GAAGA,IAAIA,CAACA,QAAQA,CAACA;gBAE7BA,IAAIA,CAACA,SAASA,GAAGA,KAAKA,CAACA;gBAEvBA,EAAEA,CAACA,CAACA,UAAUA,GAAGA,CAACA,IAAIA,UAAUA,KAAKA,QAAQA,CAACA,iBAAiBA,IAAIA,UAAUA,IAAIA,QAAQA,CAACA,aAAaA,CAACA,MAAMA,CAACA;oBAC3GA,MAAMA,CAACA;gBAEXA,QAAQA,CAACA,iBAAiBA,GAAGA,UAAUA,CAACA;gBACxCA,IAAIA,IAAIA,GAAGA,QAAQA,CAACA,aAAaA,CAACA,UAAUA,CAACA,CAACA;gBAC9CA,QAAQA,CAACA,gBAAgBA,GAAGA,IAAIA,CAACA;gBACjCA,IAAIA,CAACA,cAAcA,CAACA,IAAIA,CAACA,CAACA;YAC9BA,CAACA;YA5OcZ,oBAAWA,GAAGA,sBAAsBA,CAACA,cAAcA,CAACA,CAACA;YACrDA,gCAAuBA,GAAGA,GAAGA,CAACA;YA4OjDA,eAACA;QAADA,CAjQA59E,AAiQC49E,IAAA59E;QAjQYA,gBAAQA,WAiQpBA,CAAAA;QAEDA;YAaIy+E,qBAAYA,OAAeA,EAAEA,cAAuCA;gBAChEC,IAAIA,CAACA,eAAeA,CAACA,OAAOA,CAACA,CAACA;gBAC9BA,IAAIA,CAACA,cAAcA,GAAGA,cAAcA,CAACA;YACzCA,CAACA;YAEMD,kCAAYA,GAAnBA;gBACIE,MAAMA,CAACA,IAAIA,CAACA,iBAAiBA,CAACA;YAClCA,CAACA;YAEMF,4BAAMA,GAAbA;gBACIG,EAAEA,CAACA,CAACA,IAAIA,CAACA,iBAAiBA,CAACA;oBACvBA,IAAIA,CAACA,iBAAiBA,CAACA,MAAMA,EAAEA,CAACA;YACxCA,CAACA;YAEMH,2BAAKA,GAAZA;gBACII,IAAIA,CAACA,UAAUA,CAACA,WAAWA,CAACA,OAAOA,CAACA,CAACA,QAAQA,CAACA,MAAMA,CAACA,CAACA;YAC1DA,CAACA;YAEMJ,0BAAIA,GAAXA;gBACIK,IAAIA,CAACA,UAAUA,CAACA,WAAWA,CAACA,MAAMA,CAACA,CAACA,QAAQA,CAACA,OAAOA,CAACA,CAACA;YAC1DA,CAACA;YAEML,qCAAeA,GAAtBA;gBACIM,2BAA2BA;gBAC3BA,MAAMA,CAACA,IAAIA,CAACA,KAAKA,CAASA,IAAIA,CAACA,UAAUA,CAACA,GAAGA,EAAEA,CAACA,CAACA;YACrDA,CAACA;YAEMN,4BAAMA,GAAbA,UAAcA,OAAiDA;gBAC3DO,IAAIA,CAACA,gBAAgBA,CAACA,GAAGA,CAACA,OAAOA,CAACA,CAACA;gBACnCA,IAAIA,CAACA,gBAAgBA,CAACA,EAAEA,CAACA,OAAOA,EAAEA,OAAOA,CAACA,CAACA;YAC/CA,CAACA;YAEcP,gCAAoBA,GAAnCA,UAAoCA,SAAgCA,EAAEA,aAAqBA;gBACvFQ,IAAIA,UAAUA,GAAGA,CAACA,EAAEA,WAAWA,GAAGA,CAACA,CAACA;gBACpCA,EAAEA,CAACA,CAACA,CAACA,CAACA,CAACA,OAAOA,CAACA,SAASA,CAACA,SAASA,CAACA,CAACA,CAACA,CAACA;oBAClCA,UAAUA,GAAGA,CAACA,CAACA,KAAKA,CAACA,SAASA,CAACA,SAASA,CAACA,CAACA,UAAUA,GAAGA,CAACA,CAACA;oBACzDA,WAAWA,GAAGA,CAACA,CAACA,IAAIA,CAACA,SAASA,CAACA,SAASA,CAACA,CAACA,UAAUA,GAAGA,CAACA,CAACA;gBAC7DA,CAACA;gBAEDA,IAAIA,gBAAgBA,GAAGA,IAAIA,CAACA,GAAGA,CAACA,UAAUA,EAAEA,WAAWA,CAACA,gBAAgBA,CAACA,CAACA;gBAC1EA,IAAIA,iBAAiBA,GAAGA,IAAIA,CAACA,GAAGA,CAACA,WAAWA,EAAEA,WAAWA,CAACA,iBAAiBA,CAACA,CAACA;gBAE7EA,gBAAgBA,GAAGA,IAAIA,CAACA,GAAGA,CAACA,WAAWA,CAACA,eAAeA,EAAEA,gBAAgBA,CAACA,CAACA;gBAC3EA,iBAAiBA,GAAGA,IAAIA,CAACA,GAAGA,CAACA,WAAWA,CAACA,eAAeA,EAAEA,iBAAiBA,CAACA,CAACA;gBAE7EA,IAAIA,WAAWA,GAAGA,IAAIA,CAACA,GAAGA,CAACA,CAACA,aAAaA,GAAGA,gBAAgBA,GAAGA,iBAAiBA,CAACA,EAAEA,CAACA,CAACA,CAACA;gBACtFA,MAAMA,CAACA,WAAWA,CAACA;YACvBA,CAACA;YAEOR,qCAAeA,GAAvBA,UAAwBA,OAAeA;gBACnCS,IAAIA,CAACA,iBAAiBA,GAAGA,CAACA,CAACA,yCAAyCA,CAACA;qBAChEA,QAAQA,CAACA,OAAOA,CAACA;qBACjBA,GAAGA,CAACA,QAAQA,EAAEA,WAAWA,CAACA,iBAAiBA,GAAGA,IAAIA,CAACA,CAACA;gBAEzDA,IAAIA,CAACA,gBAAgBA,GAAGA,CAACA,CAACA,sCAAsCA,CAACA;qBAC5DA,QAAQA,CAACA,IAAIA,CAACA,iBAAiBA,CAACA,CAACA;gBAEtCA,IAAIA,CAACA,UAAUA,GAAGA,CAACA,CAACA,0BAA0BA,CAACA;qBAC1CA,QAAQA,CAACA,IAAIA,CAACA,gBAAgBA,CAACA,CAACA;gBAErCA,IAAIA,CAACA,MAAMA,GAAGA,CAACA,CAACA,6BAA6BA,CAACA;qBACzCA,QAAQA,CAACA,IAAIA,CAACA,iBAAiBA,CAACA,CAACA;YAC1CA,CAACA;YAEMT,6BAAOA,GAAdA,UAA4CA,QAA0BA,EAAEA,QAAmBA;gBAA3FU,iBAiECA;gBAhEGA,IAAIA,MAAMA,GAAGA,IAAIA,CAACA,MAAMA,CAACA;gBAEzBA,uBAAuBA;gBACvBA,EAAEA,CAACA,CAACA,IAAIA,CAACA,UAAUA,CAACA;oBAChBA,IAAIA,CAACA,UAAUA,CAACA,OAAOA,EAAEA,CAACA;gBAE9BA,IAAIA,aAAaA,GAAwBA,IAAIA,CAACA,MAAMA,CAACA,GAAGA,CAACA,CAACA,CAACA,CAACA;gBAE5DA,IAAIA,SAASA,GAAGA,QAAQA,CAACA,SAASA,CAACA;gBACnCA,IAAIA,WAAWA,GAAGA,WAAWA,CAACA,oBAAoBA,CAACA,SAASA,EAAEA,QAAQA,CAACA,KAAKA,CAACA,CAACA;gBAC9EA,IAAIA,CAACA,MAAMA,CAACA,GAAGA,CAACA,OAAOA,EAAEA,WAAWA,GAAGA,IAAIA,CAACA,CAACA;gBAE7CA,IAAIA,SAASA,GAAGA,QAAQA,CAACA,SAASA,CAACA,MAAMA,CAACA;gBAC1CA,EAAEA,CAACA,CAACA,SAASA,GAAGA,CAACA,CAACA,CAACA,CAACA;oBAChBA,IAAIA,eAAeA,GAAGA,SAASA,CAACA,kBAAkBA,CAACA,QAAQA,EAAEA,WAAWA,EAAEA,SAASA,CAACA,CAACA;oBACrFA,IAAIA,SAASA,GAAGA,SAASA,GAAGA,CAACA,CAACA;oBAC9BA,UAAUA,CAACA,MAAMA,CACbA,aAAaA,EACbA;wBACIA,IAAIA,EAAEA,CAACA;wBACPA,KAAKA,EAAEA,CAACA,QAAQA,CAACA,iBAAiBA,CAACA;wBACnCA,KAAKA,EAAEA;4BACHA,GAAGA,EAAEA,CAACA,CAACA,CAACA;4BACRA,GAAGA,EAAEA,CAACA,SAASA,CAACA;yBACnBA;wBACDA,IAAIA,EAAEA;4BACFA,IAAIA,EAAEA,OAAOA;4BACbA,OAAOA,EAAEA,IAAIA,CAACA,KAAKA,CAACA,GAAGA,GAAGA,SAASA,CAACA;4BACpCA,MAAMA,EAAEA;gCACJA,EAAEA,EAAEA,UAACA,KAAKA,IAAKA,OAAAA,QAAQA,CAACA,SAASA,CAACA,KAAKA,CAACA,EAAzBA,CAAyBA;gCACxCA,IAAIA,EAAEA,UAACA,KAAKA,IAAKA,OAAAA,QAAQA,CAACA,SAASA,CAACA,OAAOA,CAACA,KAAKA,CAACA,EAAjCA,CAAiCA;6BACrDA;4BACDA,MAAMA,EAAEA,eAAeA;yBAC1BA;qBACJA,CACJA,CAACA;gBACNA,CAACA;gBACDA,IAAIA,CAACA,CAACA;oBACFA,UAAUA,CAACA,MAAMA,CACbA,aAAaA,EACbA;wBACIA,IAAIA,EAAEA,CAACA;wBACPA,KAAKA,EAAEA,CAACA,CAACA,CAACA;wBACVA,KAAKA,EAAEA;4BACHA,GAAGA,EAAEA,CAACA,CAACA,CAACA;4BACRA,GAAGA,EAAEA,CAACA,CAACA,CAACA;yBACXA;qBACJA,CAACA,CAACA;gBACXA,CAACA;gBAEDA,IAAIA,CAACA,UAAUA,GAAGA,aAAaA,CAACA,UAAUA,CAACA;gBAE3CA,IAAIA,CAACA,UAAUA,CAACA,EAAEA,CAACA,OAAOA,EAAEA;oBACxBA,IAAIA,WAAWA,GAAGA,KAAIA,CAACA,eAAeA,EAAEA,CAACA;oBACzCA,KAAIA,CAACA,cAAcA,CAACA,WAAWA,CAACA,CAACA;gBACrCA,CAACA,CAACA,CAACA;gBAEHA,2DAA2DA;gBAC3DA,CAACA,CAACA,aAAaA,EAAEA,MAAMA,CAACA,CAACA,IAAIA,CAACA,UAACA,GAAGA,EAAEA,IAAIA;oBACpCA,yDAAyDA;oBACzDA,IAAIA,WAAWA,GAAGA,SAASA,CAACA,SAASA,CAACA,MAAMA,CAACA,UAAAA,CAACA,IAAIA,OAAAA,CAACA,CAACA,KAAKA,KAAKA,CAACA,CAACA,IAAIA,CAACA,CAACA,IAAIA,EAAEA,EAA1BA,CAA0BA,CAACA,CAACA,CAACA,CAACA,CAACA,UAAUA,CAACA;oBAC5FA,CAACA,CAACA,IAAIA,CAACA,CAACA,KAAKA,CAACA,WAAWA,CAACA,CAACA;oBAC3BA,CAACA,CAACA,IAAIA,CAACA,CAACA,GAAGA,CAACA,aAAaA,EAAEA,CAACA,WAAWA,GAAGA,CAACA,GAAGA,IAAIA,CAACA,CAACA;gBACxDA,CAACA,CAACA,CAACA;YACPA,CAACA;YAEMV,8BAAQA,GAAfA,UAAgBA,UAAkBA;gBAC9BW,IAAIA,CAACA,UAAUA,CAACA,GAAGA,CAACA,CAACA,UAAUA,CAACA,CAACA,CAACA;YACtCA,CAACA;;YA1IcX,4BAAgBA,GAAGA,EAAEA,GAAGA,EAAEA,GAAGA,CAACA,CAACA,CAACA,2CAA2CA;YAC3EA,6BAAiBA,GAAGA,EAAEA,CAACA;YACvBA,2BAAeA,GAAGA,GAAGA,CAACA;YACtBA,6BAAiBA,GAAGA,EAAEA,CAACA,CAACA,iIAAiIA;YAwI5KA,kBAACA;QAADA,CAnJAz+E,AAmJCy+E,IAAAz+E;QAEDA,IAAcA,SAASA,CAoVtBA;QApVDA,WAAcA,SAASA,EAACA,CAACA;YACrBq/E,2CAA2CA;YAC3CA,oLAAoLA;YACpLA,wCAAwCA;YAC3BA,2BAAiBA,GAAGA,GAAGA,CAACA;YACxBA,gCAAsBA,GAAGA,GAAGA,CAACA,CAACA,kGAAkGA;YAEhIA,mBAASA,GAAGA,WAAWA,CAACA;YAErCA,oCAA2CA,MAAsBA,EAAEA,KAAaA;gBAE5EC,IAAIA,WAAWA,GAAwBA;oBACnCA,UAAUA,EAAEA,EAAEA;oBACdA,MAAMA,EAAEA,OAAOA,CAACA,IAAIA,CAACA,iBAAiBA,CAACA,kBAAkBA,EAAEA;iBAC9DA,CAACA;gBAEFA,2FAA2FA;gBAC3FA,EAAEA,CAACA,CAACA,MAAMA,CAACA,IAAIA,CAACA,MAAMA,CAACA,MAAMA,GAAGA,CAACA,IAAIA,MAAMA,CAACA,OAAOA,CAACA,MAAMA,CAACA,MAAMA,KAAKA,CAACA,CAACA;oBACpEA,MAAMA,CAACA,WAAWA,CAACA;gBAEvBA,IAAIA,QAAQA,GAA2BA;oBACnCA,MAAMA,EAAEA,MAAMA,CAACA,IAAIA,CAACA,MAAMA,CAACA,MAAMA,GAAGA,CAACA,GAAGA,MAAMA,CAACA,IAAIA,CAACA,MAAMA,CAACA,CAACA,CAACA,CAACA,OAAOA,CAACA,CAACA,CAACA,GAAGA,MAAMA,CAACA,OAAOA,CAACA,MAAMA,CAACA,CAACA,CAACA,CAACA,OAAOA,CAACA,CAACA,CAACA;oBAC9GA,MAAMA,EAAEA,EAAEA;oBACVA,OAAOA,EAAEA,SAASA;oBAClBA,QAAQA,EAAEA,EAAEA;iBACfA,CAACA;gBAEFA,yBAAyBA;gBACzBA,EAAEA;gBACFA,4CAA4CA;gBAC5CA,wCAAwCA;gBACxCA,uCAAuCA;gBACvCA,uCAAuCA;gBACvCA,cAAcA;gBACdA,uCAAuCA;gBACvCA,uCAAuCA;gBACvCA,MAAMA;gBAENA,iEAAiEA;gBACjEA,IAAIA,cAAcA,GAAGA,MAAMA,CAACA,IAAIA,CAACA,IAAIA,CAACA,QAAQA,CAACA;gBAC/CA,IAAIA,cAAcA,GAAGA,MAAMA,CAACA,OAAOA,CAACA,IAAIA,CAACA,QAAQA,CAACA;gBAClDA,IAAIA,SAASA,GAAGA,MAAMA,CAACA,OAAOA,CAACA,MAAMA,CAACA,MAAMA,GAAGA,CAACA,IAAIA,cAAcA,CAACA;gBACnEA,IAAIA,kBAAkBA,GAAGA,MAAMA,CAACA,IAAIA,CAACA,MAAMA,CAACA,MAAMA,GAAGA,CAACA,IAAIA,cAAcA,CAACA;gBAEzEA,EAAEA,CAACA,CAACA,SAASA,IAAIA,CAACA,kBAAkBA,CAACA,CAACA,CAACA;oBACnCA,qEAAqEA;oBAErEA,8BAA8BA;oBAC9BA,WAAWA,CAACA,UAAUA,GAAGA,SAASA,CAACA;oBAEnCA,IAAIA,IAAIA,GAAGA,MAAMA,CAACA,OAAOA,CAACA,IAAIA,CAACA;oBAC/BA,WAAWA,CAACA,MAAMA,CAACA,MAAMA,GAAGA,MAAMA,CAACA,OAAOA,CAACA,MAAMA,CAACA,CAACA,CAACA,CAACA,OAAOA,CAACA,CAACA,CAACA,CAACA;oBAChEA,IAAIA,YAAYA,GAAGA,MAAMA,CAACA,YAAYA,CAACA,MAAMA,CAACA;oBAC9CA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,GAAGA,GAAGA,IAAIA,CAACA,QAAQA,CAACA,MAAMA,EAAEA,CAACA,GAAGA,GAAGA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;wBACvDA,4CAA4CA;wBAC5CA,IAAIA,UAAUA,GAAGA,IAAIA,CAACA,QAAQA,CAACA,CAACA,CAACA,CAACA;wBAClCA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,YAAYA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;4BACpCA,IAAIA,MAAMA,GAAQA,CAACA,CAACA,MAAMA,CAACA,MAAMA,CAACA,YAAYA,CAACA,CAACA,CAACA,EAAEA,EAAEA,SAASA,EAAEA,UAAUA,CAACA,KAAKA,EAAEA,CAACA,CAACA;4BACpFA,IAAIA,cAAcA,GAAwBA;gCACtCA,QAAQA,EAAEA,UAAUA,CAACA,QAAQA;gCAC7BA,MAAMA,EAAEA,EAAEA;gCACVA,MAAMA,EAAEA,MAAMA;6BACjBA,CAACA;4BACFA,WAAWA,CAACA,MAAMA,CAACA,IAAIA,CAACA,cAAcA,CAACA,CAACA;wBAC5CA,CAACA;oBACLA,CAACA;oBAEDA,IAAIA,cAAcA,GAAGA,MAAMA,CAACA,IAAIA,CAACA,IAAIA,CAACA,QAAQA,CAACA,KAAKA,CAACA,CAACA;oBACtDA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,GAAGA,GAAGA,IAAIA,CAACA,QAAQA,CAACA,MAAMA,EAAEA,CAACA,GAAGA,GAAGA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;wBACvDA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,YAAYA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;4BACpCA,WAAWA,CAACA,MAAMA,CAACA,CAACA,GAAGA,YAAYA,GAAGA,CAACA,CAACA,CAACA,MAAMA,CAACA,IAAIA,CAACA,cAAcA,CAACA,MAAMA,CAACA,CAACA,GAAGA,YAAYA,GAAGA,CAACA,CAACA,CAACA,KAAKA,CAACA,CAACA;wBAC5GA,CAACA;oBACLA,CAACA;gBACLA,CAACA;gBACDA,IAAIA,CAACA,EAAEA,CAACA,CAACA,SAASA,IAAIA,cAAcA,CAACA,CAACA,CAACA;oBACnCA,wBAAwBA;oBACxBA,IAAIA,IAAIA,GAAGA,MAAMA,CAACA,IAAIA,CAACA,IAAIA,CAACA,QAAQA,CAACA,KAAKA,CAACA,CAACA;oBAE5CA,8BAA8BA;oBAC9BA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,GAAGA,GAAGA,IAAIA,CAACA,QAAQA,CAACA,MAAMA,EAAEA,CAACA,GAAGA,GAAGA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;wBACvDA,IAAIA,SAASA,GAAGA,IAAIA,CAACA,QAAQA,CAACA,CAACA,CAACA,CAACA;wBACjCA,QAAQA,CAACA,QAAQA,CAACA,IAAIA,CAACA,SAASA,CAACA,QAAQA,CAACA,CAACA;wBAC3CA,QAAQA,CAACA,MAAMA,CAACA,IAAIA,CAACA,SAASA,CAACA,KAAKA,CAACA,CAACA;oBAC1CA,CAACA;oBAEDA,0BAA0BA;oBAC1BA,WAAWA,CAACA,MAAMA,CAACA,MAAMA,GAAGA,MAAMA,CAACA,OAAOA,CAACA,MAAMA,CAACA,CAACA,CAACA,CAACA,OAAOA,CAACA,CAACA,CAACA,CAACA;oBAChEA,IAAIA,SAASA,GAAGA,EAAEA,CAACA;oBACnBA,IAAIA,UAAUA,GAAGA,MAAMA,CAACA,OAAOA,CAACA,IAAIA,CAACA;oBACrCA,IAAIA,WAAWA,GAAGA,CAACA,CAACA,CAACA;oBACrBA,OAAOA,UAAUA,EAAEA,CAACA;wBAChBA,EAAEA,CAACA,CAACA,UAAUA,CAACA,QAAQA,IAAIA,UAAUA,CAACA,QAAQA,CAACA,CAACA,CAACA,CAACA,QAAQA,CAACA,CAACA,CAACA;4BACzDA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,IAAIA,GAAGA,UAAUA,CAACA,QAAQA,CAACA,MAAMA,EAAEA,CAACA,GAAGA,IAAIA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;gCAC/DA,8BAA8BA;gCAC9BA,SAASA,CAACA,IAAIA,CAACA,UAAUA,CAACA,QAAQA,CAACA,CAACA,CAACA,CAACA,CAACA;4BAC3CA,CAACA;wBACLA,CAACA;wBAACA,IAAIA,CAACA,EAAEA,CAACA,CAACA,UAAUA,CAACA,QAAQA,IAAIA,IAAIA,CAACA,QAAQA,CAACA,CAACA,CAACA;4BAC9CA,sFAAsFA;4BACtFA,IAAIA,YAAYA,GAAGA,UAAUA,CAACA,QAAQA,CAACA,MAAMA,CAACA;4BAC9CA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,YAAYA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;gCACpCA,IAAIA,MAAMA,GAAQA,CAACA,CAACA,MAAMA,CAACA,MAAMA,CAACA,YAAYA,CAACA,CAACA,CAACA,EAAEA,EAAEA,SAASA,EAAEA,UAAUA,CAACA,KAAKA,EAAEA,CAACA,CAACA;gCACpFA,IAAIA,cAAcA,GAAwBA;oCACtCA,QAAQA,EAAEA,UAAUA,CAACA,QAAQA;oCAC7BA,MAAMA,EAAEA,EAAEA;oCACVA,MAAMA,EAAEA,MAAMA;iCACjBA,CAACA;gCACFA,WAAWA,CAACA,MAAMA,CAACA,IAAIA,CAACA,cAAcA,CAACA,CAACA;4BAC5CA,CAACA;4BACDA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,GAAGA,GAAGA,IAAIA,CAACA,QAAQA,CAACA,MAAMA,EAAEA,CAACA,GAAGA,GAAGA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;gCACvDA,IAAIA,SAASA,GAAGA,IAAIA,CAACA,QAAQA,CAACA,CAACA,CAACA,CAACA;gCACjCA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,YAAYA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;oCACpCA,WAAWA,CAACA,MAAMA,CAACA,WAAWA,GAAGA,YAAYA,GAAGA,CAACA,CAACA,CAACA,MAAMA,CAACA,IAAIA,CAACA,SAASA,CAACA,MAAMA,CAACA,WAAWA,GAAGA,YAAYA,GAAGA,CAACA,CAACA,CAACA,KAAKA,CAACA,CAACA;gCAC3HA,CAACA;4BACLA,CAACA;wBACLA,CAACA;wBAEDA,EAAEA,CAACA,CAACA,SAASA,CAACA,MAAMA,GAAGA,CAACA,CAACA,CAACA,CAACA;4BACvBA,UAAUA,GAAGA,SAASA,CAACA,CAACA,CAACA,CAACA;4BAC1BA,SAASA,GAAGA,SAASA,CAACA,MAAMA,CAACA,CAACA,CAACA,CAACA;4BAChCA,WAAWA,EAAEA,CAACA;wBAClBA,CAACA;wBAACA,IAAIA;4BACFA,UAAUA,GAAGA,SAASA,CAACA;oBAC/BA,CAACA;gBACLA,CAACA;gBACDA,IAAIA,CAACA,EAAEA,CAACA,CAACA,kBAAkBA,CAACA,CAACA,CAACA;oBAC1BA,oCAAoCA;oBACpCA,IAAIA,IAAIA,GAAGA,MAAMA,CAACA,IAAIA,CAACA,IAAIA,CAACA,QAAQA,CAACA,KAAKA,CAACA,CAACA;oBAC5CA,IAAIA,aAAaA,GAAGA,MAAMA,CAACA,YAAYA,CAACA,MAAMA,CAACA;oBAC/CA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,aAAaA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;wBACrCA,IAAIA,cAAcA,GAAwBA;4BACtCA,QAAQA,EAAEA,SAASA;4BACnBA,MAAMA,EAAEA,EAAEA;4BACVA,MAAMA,EAAEA,MAAMA,CAACA,YAAYA,CAACA,CAACA,CAACA;yBACjCA,CAACA;wBACFA,WAAWA,CAACA,MAAMA,CAACA,IAAIA,CAACA,cAAcA,CAACA,CAACA;oBAC5CA,CAACA;oBAEDA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,GAAGA,GAAGA,IAAIA,CAACA,QAAQA,CAACA,MAAMA,EAAEA,CAACA,GAAGA,GAAGA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;wBACvDA,IAAIA,SAASA,GAAGA,IAAIA,CAACA,QAAQA,CAACA,CAACA,CAACA,CAACA;wBACjCA,QAAQA,CAACA,QAAQA,CAACA,IAAIA,CAACA,SAASA,CAACA,QAAQA,CAACA,CAACA;wBAC3CA,QAAQA,CAACA,MAAMA,CAACA,IAAIA,CAACA,SAASA,CAACA,KAAKA,CAACA,CAACA;wBAEtCA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,aAAaA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;4BACrCA,WAAWA,CAACA,MAAMA,CAACA,CAACA,CAACA,CAACA,MAAMA,CAACA,IAAIA,CAACA,SAASA,CAACA,MAAMA,CAACA,CAACA,CAACA,CAACA,KAAKA,CAACA,CAACA;wBACjEA,CAACA;oBACLA,CAACA;gBACLA,CAACA;gBAEDA,EAAEA,CAACA,CAACA,WAAWA,CAACA,UAAUA,CAACA;oBACvBA,WAAWA,CAACA,UAAUA,CAACA,IAAIA,CAACA,QAAQA,CAACA,CAACA;gBAE1CA,MAAMA,CAACA,WAAWA,CAACA;YACvBA,CAACA;YA/IeD,oCAA0BA,6BA+IzCA,CAAAA;YAEDA,6BAA6BA,gBAAkCA,EAAEA,kBAA4CA;gBACzGE,IAAIA,gBAAgBA,GAAyBA,EAAEA,CAACA;gBAEhDA,EAAEA,CAACA,CAACA,gBAAgBA,IAAIA,gBAAgBA,CAACA,OAAOA,CAACA,CAACA,CAACA;oBAC/CA,IAAIA,OAAOA,GAAGA,gBAAgBA,CAACA,OAAOA,CAACA;oBACvCA,gBAAgBA;oBAChBA,gBAAgBA,CAACA,iBAAiBA,GAAGA,uBAAeA,CAACA,QAAQA,CAACA,OAAOA,EAAEA,yBAAiBA,CAACA,iBAAiBA,CAACA,KAAKA,EAAEA,IAAIA,CAACA,CAACA;gBAC5HA,CAACA;gBACDA,MAAMA,CAACA,gBAAgBA,CAACA;YAC5BA,CAACA;YAEDF,+BAA+BA,QAA0BA,EAAEA,WAAgCA;gBACvFG,MAAMA,CAACA;oBACHA,QAAQA,EAAEA,QAAQA;oBAClBA,WAAWA,EAAEA,WAAWA;iBAC3BA,CAACA;YACNA,CAACA;YAEDH,mBAAuDA,QAAkBA,EAAEA,eAA+CA;gBACtHI,IAAIA,gBAAgBA,GAAqBA,QAAQA,CAACA,QAAQA,CAACA;gBAC3DA,IAAIA,kBAAkBA,GAAGA,sBAAcA,CAACA,4BAA4BA,EAAEA,CAACA;gBACvEA,IAAIA,gBAAgBA,GAAGA,mBAAmBA,CAACA,gBAAgBA,EAAEA,kBAAkBA,CAACA,CAACA;gBAEjFA,IAAIA,aAAaA,GAAQA,EAAEA,CAACA;gBAC5BA,IAAIA,SAASA,GAAaA,EAAEA,CAACA;gBAC7BA,IAAIA,aAAaA,GAAMA,SAASA,CAACA;gBACjCA,IAAIA,UAAUA,GAAGA,QAAQA,CAACA,MAAMA,CAACA,IAAIA,CAACA;gBACtCA,IAAIA,iBAAiBA,GAAGA,UAAUA,CAACA,IAAIA,CAACA,QAAQA,GAAGA,UAAUA,CAACA,IAAIA,CAACA,QAAQA,CAACA,MAAMA,GAAGA,CAACA,CAACA;gBACvFA,IAAIA,eAAuCA,CAACA;gBAC5CA,EAAEA,CAACA,CAACA,QAAQA,CAACA,MAAMA,IAAIA,iBAAiBA,GAAGA,CAACA,CAACA,CAACA,CAACA;oBAC3CA,eAAeA,GAAGA,UAAUA,CAACA,MAAMA,CAACA,CAACA,CAACA,CAACA,OAAOA,CAACA,CAACA,CAACA,CAACA;oBAElDA,2FAA2FA;oBAC3FA,IAAIA,YAAYA,GAAGA,sBAAcA,CAACA,eAAeA,CAACA,eAAeA,EAAEA,yBAAiBA,CAACA,OAAOA,CAACA,YAAYA,CAACA,CAACA;oBAC3GA,IAAIA,YAA6BA,CAACA;oBAClCA,EAAEA,CAACA,CAACA,eAAeA,CAACA,IAAIA,CAACA,OAAOA,CAACA,CAACA,CAACA;wBAC/BA,qCAAqCA;wBACrCA,IAAIA,UAAUA,GAAGA,IAAIA,CAACA,GAAGA,CAACA,UAAUA,CAACA,IAAIA,CAACA,QAAQA,CAACA,iBAAiBA,GAAGA,CAACA,CAACA,CAACA,KAAKA,GAAGA,UAAUA,CAACA,IAAIA,CAACA,QAAQA,CAACA,CAACA,CAACA,CAACA,KAAKA,CAACA,CAACA;wBACrHA,YAAYA,GAAGA,sBAAcA,CAACA,MAAMA,CAACA;4BACjCA,MAAMA,EAAEA,YAAYA;4BACpBA,KAAKA,EAAEA,UAAUA;4BACjBA,MAAMA,EAAEA,CAACA;yBACZA,CAACA,CAACA;oBACPA,CAACA;oBAACA,IAAIA,CAACA,CAACA;wBACJA,YAAYA,GAAGA,sBAAcA,CAACA,sBAAsBA,CAACA,YAAYA,EAAEA,IAAIA,CAACA,CAACA;oBAC7EA,CAACA;oBAEDA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,GAAGA,GAAGA,iBAAiBA,EAAEA,CAACA,GAAGA,GAAGA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;wBACpDA,IAAIA,GAAGA,GAAGA,UAAUA,CAACA,IAAIA,CAACA,QAAQA,CAACA,CAACA,CAACA,CAACA;wBACtCA,IAAIA,UAAUA,GAAGA,YAAYA,CAACA,MAAMA,CAACA,GAAGA,CAACA,KAAKA,CAACA,CAACA;wBAChDA,SAASA,CAACA,IAAIA,CAACA,UAAUA,CAACA,CAACA;wBAE3BA,IAAIA,mBAAmBA,GAAGA,0BAA0BA,CAACA,QAAQA,CAACA,MAAMA,EAAEA,CAACA,CAACA,CAACA;wBACzEA,IAAIA,SAASA,GAAGA,EAAEA,KAAKA,EAAEA,UAAUA,EAAEA,MAAMA,EAAEA,eAAeA,EAAEA,CAACA;wBAC/DA,aAAaA,GAAGA,eAAeA,CAACA,qBAAqBA,CAACA,QAAQA,CAACA,QAAQA,EAAEA,mBAAmBA,CAACA,EAAEA,SAASA,CAACA,CAACA;wBAC1GA,aAAaA,CAACA,IAAIA,CAACA,aAAaA,CAACA,CAACA;oBACtCA,CAACA;gBACLA,CAACA;gBACDA,IAAIA,CAACA,CAACA;oBACFA,IAAIA,mBAAmBA,GAAGA,0BAA0BA,CAACA,QAAQA,CAACA,MAAMA,EAAEA,CAACA,CAACA,CAACA;oBACzEA,aAAaA,GAAGA,eAAeA,CAACA,qBAAqBA,CAACA,QAAQA,CAACA,QAAQA,EAAEA,mBAAmBA,CAACA,CAACA,CAACA;oBAC/FA,aAAaA,CAACA,IAAIA,CAACA,aAAaA,CAACA,CAACA;gBACtCA,CAACA;gBAEDA,0DAA0DA;gBAC1DA,gBAAgBA,CAACA,iBAAiBA,GAAGA,SAASA,CAACA,MAAMA,GAAGA,CAACA,CAACA;gBAE1DA,MAAMA,CAACA;oBACHA,aAAaA,EAAEA,aAAaA;oBAC5BA,gBAAgBA,EAAEA,aAAaA;oBAC/BA,SAASA,EAAEA,SAASA;oBACpBA,iBAAiBA,EAAEA,gBAAgBA,CAACA,iBAAiBA;oBACrDA,SAASA,EAAEA,YAAYA,CAACA,SAASA,EAAEA,eAAeA,CAACA;iBACtDA,CAACA;YACNA,CAACA;YAxDeJ,mBAASA,YAwDxBA,CAAAA;YAEDA;gBACIK,IAAIA,WAAWA,GAAqBA;oBAChCA,SAASA,EAAEA,EAAEA;oBACbA,aAAaA,EAAEA,EAAEA;oBACjBA,iBAAiBA,EAAEA,CAACA;oBACpBA,gBAAgBA,EAAEA,SAASA;oBAC3BA,SAASA,EAAEA;wBACPA,aAAaA,EAAEA,KAAKA;wBACpBA,SAASA,EAAEA,EAAEA;qBAChBA;iBACJA,CAACA;gBACFA,MAAMA,CAACA,WAAWA,CAACA;YACvBA,CAACA;YAZeL,4BAAkBA,qBAYjCA,CAAAA;YAEDA,+BAAmEA,QAA0BA,EAAEA,UAAmCA;gBAC9HM,IAAIA,OAAOA,GAAqBA;oBAC5BA,IAAIA,EAAEA,CAACA;oBACPA,IAAIA,EAAEA,EAAEA;oBACRA,IAAIA,EAAEA,CAACA;oBACPA,IAAIA,EAAEA,EAAEA;iBACXA,CAACA;gBAEFA,EAAEA,CAACA,CAACA,QAAQA,CAACA,aAAaA,IAAIA,QAAQA,CAACA,aAAaA,CAACA,MAAMA,GAAGA,CAACA,CAACA,CAACA,CAACA;oBAC9DA,OAAOA,CAACA,IAAIA,GAAGA,OAAOA,CAACA,IAAIA,GAAGA,MAAMA,CAACA,SAASA,CAACA;oBAC/CA,OAAOA,CAACA,IAAIA,GAAGA,OAAOA,CAACA,IAAIA,GAAGA,MAAMA,CAACA,SAASA,CAACA;oBAC/CA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,GAAGA,GAAGA,QAAQA,CAACA,aAAaA,CAACA,MAAMA,EAAEA,CAACA,GAAGA,GAAGA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;wBAChEA,IAAIA,MAAIA,GAAGA,QAAQA,CAACA,aAAaA,CAACA,CAACA,CAACA,CAACA;wBACrCA,IAAIA,CAACA,GAAGA,UAAUA,CAACA,MAAIA,CAACA,CAACA;wBAEzBA,+EAA+EA;wBAC/EA,OAAOA,GAAGA;4BACNA,IAAIA,EAAEA,EAAEA,CAACA,GAAGA,CAACA,CAACA,CAACA,CAACA,IAAIA,EAAEA,OAAOA,CAACA,IAAIA,CAACA,CAACA;4BACpCA,IAAIA,EAAEA,EAAEA,CAACA,GAAGA,CAACA,CAACA,CAACA,CAACA,IAAIA,EAAEA,OAAOA,CAACA,IAAIA,CAACA,CAACA;4BACpCA,IAAIA,EAAEA,EAAEA,CAACA,GAAGA,CAACA,CAACA,CAACA,CAACA,IAAIA,EAAEA,OAAOA,CAACA,IAAIA,CAACA,CAACA;4BACpCA,IAAIA,EAAEA,EAAEA,CAACA,GAAGA,CAACA,CAACA,CAACA,CAACA,IAAIA,EAAEA,OAAOA,CAACA,IAAIA,CAACA,CAACA;yBACvCA,CAACA;oBACNA,CAACA;gBACLA,CAACA;gBAEDA,MAAMA,CAACA,OAAOA,CAACA;YACnBA,CAACA;YA1BeN,+BAAqBA,wBA0BpCA,CAAAA;YAEDA,sBAAsBA,IAAcA,EAAEA,SAAkCA;gBACpEO,IAAIA,cAAcA,GAAmBA;oBACjCA,UAAUA,EAAEA,oBAAoBA;oBAChCA,QAAQA,EAAEA,QAAQA,CAACA,cAAcA,CAACA,QAAQA,CAACA,EAAEA,CAACA;iBACjDA,CAACA;gBAEFA,IAAIA,SAASA,GAA4BA,EAAEA,CAACA;gBAC5CA,IAAIA,aAAaA,GAAGA,KAAKA,CAACA;gBAC1BA,GAAGA,CAACA,CAAYA,UAAIA,EAAfA,gBAAOA,EAAPA,IAAeA,CAACA;oBAAhBA,IAAIA,GAAGA,GAAIA,IAAIA,IAARA;oBACRA,IAAIA,UAAUA,GAAGA,QAAQA,CAACA,WAAWA,CAACA,eAAeA,CAACA,GAAGA,EAAEA,8BAAsBA,CAACA,mBAAmBA,EAAEA,cAAcA,CAACA,CAACA;oBACvHA,aAAaA,GAAGA,aAAaA,IAAIA,QAAQA,CAACA,WAAWA,CAACA,WAAWA,CAACA,GAAGA,CAACA,IAAIA,CAACA,GAAGA,CAACA,CAACA,OAAOA,CAACA,GAAGA,CAACA,GAAGA,CAACA,CAACA,CAACA,CAAEA,4DAA4DA;oBAChKA,SAASA,CAACA,IAAIA,CAACA,EAAEA,KAAKA,EAAEA,GAAGA,EAAEA,YAAAA,UAAUA,EAAEA,CAACA,CAACA;iBAC9CA;gBAEDA,MAAMA,CAACA;oBACHA,SAASA,EAAEA,SAASA;oBACpBA,aAAaA,EAAEA,aAAaA;oBAC5BA,cAAcA,EAAEA,SAASA,IAAIA,SAASA,CAACA,WAAWA;iBACrDA,CAACA;YACNA,CAACA;YAEDP,4BAAgEA,QAA0BA,EAAEA,WAAmBA,EAAEA,SAAgCA;gBAC7IQ,IAAIA,aAAaA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,CAACA,GAAGA,CAACA,SAASA,CAACA,SAASA,EAAEA,UAACA,CAACA,IAAKA,OAAAA,CAACA,CAACA,UAAUA,EAAZA,CAAYA,CAACA,CAACA,CAACA;gBAE3EA,IAAIA,OAAOA,GAAGA,CAACA,CAACA,CAACA,0BAA0BA;gBAC3CA,IAAIA,OAAOA,GAAGA,CAACA,CAACA;gBAChBA,IAAIA,oBAAoBA,GAAGA,QAAQA,CAACA,SAASA,CAACA,MAAMA,GAAGA,CAACA,GAAGA,WAAWA,GAAGA,CAACA,QAAQA,CAACA,SAASA,CAACA,MAAMA,GAAGA,CAACA,CAACA,GAAGA,WAAWA,CAACA;gBACvHA,IAAIA,UAAUA,GAAGA,aAAaA,GAAGA,oBAAoBA,CAACA;gBAEtDA,EAAEA,CAACA,CAACA,UAAUA,GAAGA,IAAIA,CAACA,CAACA,CAACA;oBACpBA,OAAOA,GAAGA,IAAIA,CAACA,IAAIA,CAACA,UAAUA,CAACA,CAACA;oBAChCA,OAAOA,GAAGA,CAACA,CAACA;gBAChBA,CAACA;gBACDA,IAAIA,CAACA,EAAEA,CAACA,CAACA,UAAUA,GAAGA,GAAGA,IAAIA,SAASA,CAACA,aAAaA,CAACA,CAACA,CAACA;oBACnDA,yHAAyHA;oBACzHA,OAAOA,GAAGA,CAACA,CAACA;gBAChBA,CAACA;gBAEDA,IAAIA,eAAeA,GAAGA,UAACA,KAAUA,EAAEA,IAASA;oBACxCA,sFAAsFA;oBACtFA,EAAEA,CAACA,CAACA,KAAKA,GAAGA,OAAOA,KAAKA,CAACA,CAACA,CAACA,CAACA;wBACxBA,MAAMA,CAACA,OAAOA,CAACA;oBACnBA,CAACA;oBACDA,MAAMA,CAACA,CAACA,CAACA,CAACA,MAAMA;gBACpBA,CAACA,CAACA;gBAEFA,MAAMA,CAACA,eAAeA,CAACA;YAC3BA,CAACA;YA1BeR,4BAAkBA,qBA0BjCA,CAAAA;YAEDA,4BAAmCA,QAAkBA,EAAEA,QAAyBA;gBAAzBS,wBAAyBA,GAAzBA,iBAAyBA;gBAC5EA,KAAKA,CAACA,WAAWA,CAACA,QAAQA,EAAEA,UAAUA,CAACA,CAACA;gBAExCA,IAAIA,kBAAkBA,GAAGA,QAAQA,CAACA,WAAWA;uBACtCA,QAAQA,CAACA,WAAWA,CAACA,UAAUA;uBAC/BA,QAAQA,CAACA,WAAWA,CAACA,UAAUA,CAACA,CAACA,CAACA;uBAClCA,QAAQA,CAACA,WAAWA,CAACA,UAAUA,CAACA,CAACA,CAACA,CAACA,MAAMA;uBACzCA,QAAQA,CAACA,WAAWA,CAACA,UAAUA,CAACA,CAACA,CAACA,CAACA,MAAMA,CAACA,KAAKA;uBAC/CA,QAAQA,CAACA,WAAWA,CAACA,UAAUA,CAACA,CAACA,CAACA,CAACA,MAAMA,CAACA,KAAKA,CAACA,QAAQA,CAACA,CAACA;gBAEjEA,MAAMA,CAACA,CAACA,QAAQA,CAACA,MAAMA,IAAIA,CAACA,CAACA,QAAQA,CAACA,WAAWA,IAAIA,kBAAkBA,CAACA,CAACA,CAACA;YAC9EA,CAACA;YAXeT,4BAAkBA,qBAWjCA,CAAAA;YAEDA,mDAAmDA;YACnDA,0BAAiCA,aAAoCA,EAAEA,iBAAqCA,EAAEA,aAAsBA;gBAChIU,IAAIA,kBAAkBA,GAAGA,CAACA,CAACA,MAAMA,CAACA,aAAaA,EAAEA,UAACA,CAAsBA,IAAKA,OAAAA,CAACA,CAACA,QAAQA,EAAVA,CAAUA,CAACA,CAACA;gBACzFA,kBAAkBA,GAAGA,CAACA,CAACA,IAAIA,CAACA,kBAAkBA,EAAEA,UAACA,CAAsBA,IAAKA,OAAAA,CAACA,CAACA,QAAQA,CAACA,MAAMA,EAAEA,EAAnBA,CAAmBA,CAACA,CAACA;gBACjGA,iBAAiBA,CAACA,MAAMA,CAACA,kBAAkBA,EAAEA,aAAaA,CAACA,CAACA;YAChEA,CAACA;YAJeV,0BAAgBA,mBAI/BA,CAAAA;QACLA,CAACA,EApVar/E,SAASA,GAATA,iBAASA,KAATA,iBAASA,QAoVtBA;IACLA,CAACA,EApzBcrxC,OAAOA,GAAPA,eAAOA,KAAPA,eAAOA,QAozBrBA;AAADA,CAACA,EApzBM,OAAO,KAAP,OAAO,QAozBb;ACh1BD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,yCAAyC;AAEzC,IAAO,OAAO,CAsQb;AAtQD,WAAO,OAAO;IAACA,IAAAA,OAAOA,CAsQrBA;IAtQcA,WAAAA,OAAOA,EAACA,CAACA;QACpBqxC,IAAOA,cAAcA,GAAGA,QAAQA,CAACA,cAAcA,CAACA;QAShDA;YAmBIggF,gCAAYA,OAAkCA;gBANtCC,mBAAcA,GAAmBA;oBACrCA,YAAYA,EAAEA,kDAAkDA;oBAChEA,UAAUA,EAAEA,MAAMA;iBACrBA,CAACA;gBAIEA,EAAEA,CAACA,CAACA,OAAOA,CAACA,CAACA,CAACA;oBACVA,IAAIA,CAACA,QAAQA,GAAGA,OAAOA,CAACA,QAAQA,CAACA;gBACrCA,CAACA;gBACDA,IAAIA,CAACA,aAAaA,GAAGA,CAACA,CAACA,IAAIA,CAACA;gBAC5BA,IAAIA,CAACA,SAASA,GAAGA,OAAOA,CAACA,SAASA,CAACA;YACvCA,CAACA;YAEDD,4BAA4BA;YACrBA,gDAAeA,GAAtBA;gBACIE,EAAEA,CAACA,CAACA,IAAIA,CAACA,IAAIA,IAAIA,IAAIA,CAACA,IAAIA,CAACA,YAAYA,CAACA;oBACpCA,MAAMA,CAAsBA,IAAIA,CAACA,IAAIA,CAACA,YAAYA,CAACA,KAAKA,CAACA;YACjEA,CAACA;YAEMF,kDAAiBA,GAAxBA;gBACIG,MAAMA,CAACA,kBAAUA,CAACA,mBAAmBA,CAACA,iBAAiBA,CAACA,IAAIA,CAACA,QAAQA,CAACA,CAACA;YAC3EA,CAACA;YAEMH,qCAAIA,GAAXA,UAAYA,iBAAoCA;gBAAhDI,iBAwDCA;gBAvDGA,IAAIA,CAACA,OAAOA,GAAGA,iBAAiBA,CAACA,iBAAiBA,CAACA,OAAOA,CAACA;gBAC3DA,IAAIA,CAACA,eAAeA,GAAGA,iBAAiBA,CAACA,iBAAiBA,CAACA,QAAQA,CAACA;gBACpEA,IAAIA,YAAYA,GAAGA,IAAIA,CAACA,YAAYA,GAAGA,iBAAiBA,CAACA,iBAAiBA,CAACA,IAAIA,CAACA;gBAEhFA,IAAIA,QAAQA,GAAGA,IAAIA,CAACA,QAAQA,GAAGA,cAAMA,CAACA,sBAAsBA,EAAEA,CAACA;gBAC/DA,IAAIA,SAASA,GAAGA,IAAIA,CAACA,SAASA,CAACA;gBAC/BA,IAAIA,YAAYA,GAAGA,SAASA,CAACA,qBAAqBA,CAACA,IAAIA,CAACA,eAAeA,EAAEA,QAAQA,EAAEA,IAAIA,CAACA,cAAcA,CAACA,CAACA;gBACxGA,IAAIA,oBAA2CA,CAACA;gBAEhDA,EAAEA,CAACA,CAACA,IAAIA,CAACA,QAAQA,CAACA;oBACdA,oBAAoBA,GAAGA,kCAA0BA,CAACA,YAAYA,CAACA,CAACA;gBAEpEA,IAAIA,YAAYA,GAAGA,QAAQA,CAACA,aAAaA,CAACA,KAAKA,CAACA,CAACA;gBACjDA,YAAYA,CAACA,SAASA,GAAGA,SAASA,CAACA,SAASA,CAACA,KAAKA,CAACA;gBACnDA,IAAIA,SAASA,GAAGA,IAAIA,CAACA,SAASA,GAAGA,EAAEA,CAACA,MAAMA,CAACA,YAAYA,CAACA,CAACA;gBAEzDA,IAAIA,MAAMA,GAAGA,SAASA,CAACA,kBAAkBA,CAACA,YAAYA,CAACA,CAACA;gBACxDA,YAAYA,CAACA,WAAWA,CAACA,MAAMA,CAACA,CAACA;gBACjCA,IAAIA,CAACA,MAAMA,GAAGA,EAAEA,CAACA,MAAMA,CAACA,MAAMA,CAACA,CAACA;gBAEhCA,IAAIA,CAACA,IAAIA,GAAGA,SAASA,CAACA,MAAMA,CAACA,KAAKA,CAACA,CAACA,OAAOA,CAACA,kBAAUA,CAACA,SAASA,CAACA,IAAIA,CAACA,KAAKA,EAAEA,IAAIA,CAACA;qBAC7EA,KAAKA,CAACA;oBACHA,QAAQA,EAAEA,cAAcA,CAACA,QAAQA,CAACA,YAAYA,CAACA,MAAMA,CAACA;oBACtDA,OAAOA,EAAEA,cAAcA,CAACA,QAAQA,CAACA,YAAYA,CAACA,KAAKA,CAACA;iBACvDA,CAACA,CAACA;gBAEPA,IAAIA,QAAQA,GAAGA,UAACA,YAA0BA;oBACtCA,KAAIA,CAACA,gBAAgBA,CAACA,YAAYA,CAACA,CAACA;gBACxCA,CAACA,CAACA;gBAEFA,IAAIA,SAASA,GAAGA,UAACA,YAA0BA;oBACvCA,KAAIA,CAACA,iBAAiBA,CAACA,YAAYA,EAAEA,oBAAoBA,CAACA,CAACA;gBAC/DA,CAACA,CAACA;gBAEFA,IAAIA,OAAOA,GAAGA,UAACA,YAA0BA;oBACrCA,YAAYA,CAACA,MAAMA,EAAEA,CAACA;gBAC1BA,CAACA,CAACA;gBAEFA,IAAIA,eAAeA,GAAoBA;oBACnCA,SAASA,EAAEA,SAASA,CAACA,YAAYA,CAACA,QAAQA,EAAEA,IAAIA,CAACA,cAAcA,CAACA;oBAChEA,KAAKA,EAAEA,QAAQA;oBACfA,IAAIA,EAAEA,OAAOA;oBACbA,MAAMA,EAAEA,SAASA;oBACjBA,YAAYA,EAAEA,cAAMA,OAAAA,iBAAiBA,CAACA,YAAYA,EAAEA,EAAhCA,CAAgCA;oBACpDA,aAAaA,EAAEA,IAAIA;oBACnBA,QAAQA,EAAEA,SAASA,CAACA,qBAAqBA,CAACA,IAAIA,CAACA,eAAeA,EAAEA,QAAQA,EAAEA,IAAIA,CAACA,cAAcA,CAACA;oBAC9FA,aAAaA,EAAEA,IAAIA,CAACA,IAAIA;iBAC3BA,CAACA;gBAEFA,IAAIA,CAACA,QAAQA,GAAGA,uBAAeA,CAACA,cAAcA,CAACA,eAAeA,CAACA,CAACA;gBAEhEA,0BAA0BA;gBAC1BA,IAAIA,CAACA,OAAOA,CAACA,GAAGA,CAACA,CAACA,CAACA,CAACA,WAAWA,CAACA,YAAYA,CAACA,CAACA;gBAE9CA,MAAMA,CAACA,oBAAoBA,CAACA;YAChCA,CAACA;YAEMJ,uCAAMA,GAAbA,UAAcA,OAA4BA;gBACtCK,IAAIA,IAAIA,GAAGA,IAAIA,CAACA,IAAIA,GAAGA,OAAOA,CAACA,IAAIA,CAACA;gBACpCA,IAAIA,CAACA,eAAeA,GAAGA,OAAOA,CAACA,QAAQA,CAACA;gBACxCA,IAAIA,QAAQA,GAAGA,OAAOA,CAACA,QAAQA,CAACA;gBAEhCA,EAAEA,CAACA,CAACA,CAACA,QAAQA,IAAIA,CAACA,IAAIA,CAACA,CAACA,CAACA;oBACrBA,IAAIA,CAACA,QAAQA,CAACA,KAAKA,EAAEA,CAACA;oBACtBA,MAAMA,CAACA;gBACXA,CAACA;gBAEDA,IAAIA,CAACA,QAAQA,GAAGA,QAAQA,CAACA;gBACzBA,IAAIA,CAACA,aAAaA,GAAGA,OAAOA,CAACA,aAAaA,CAACA;gBAC3CA,IAAIA,QAAQA,GAAGA,IAAIA,CAACA,QAAQA,GAAGA,IAAIA,CAACA,cAAcA,CAACA;gBACnDA,IAAIA,SAASA,GAAGA,IAAIA,CAACA,SAASA,CAACA;gBAE/BA,SAASA,CAACA,0BAA0BA,CAACA,IAAIA,CAACA,eAAeA,EAAEA,IAAIA,CAACA,IAAIA,EAAEA,QAAQA,CAACA,CAACA;gBAChFA,IAAIA,CAACA,oBAAoBA,EAAEA,CAACA;gBAC5BA,IAAIA,CAACA,QAAQA;qBACRA,QAAQA,CAACA,SAASA,CAACA,qBAAqBA,CAACA,IAAIA,CAACA,eAAeA,EAAEA,QAAQA,EAAEA,IAAIA,CAACA,cAAcA,CAACA,CAACA;qBAC9FA,SAASA,CAACA,SAASA,CAACA,YAAYA,CAACA,QAAQA,EAAEA,IAAIA,CAACA,cAAcA,CAACA,CAACA;qBAChEA,IAAIA,CACDA,IAAIA,CAACA,gBAAgBA,EACrBA,UAACA,CAAkBA,IAAKA,OAAAA,CAACA,CAACA,OAAOA,CAACA,CAACA,EAAEA,IAAIA,CAACA,gBAAgBA,CAACA,EAAnCA,CAAmCA,EAC3DA,OAAOA,CAACA,sBAAsBA,CAC7BA,CAACA;YACdA,CAACA;YAEOL,qDAAoBA,GAA5BA;gBACIM,IAAIA,QAAQA,GAAGA,IAAIA,CAACA,QAAQA,CAACA;gBAC7BA,IAAIA,CAACA,SAASA,CAACA,OAAOA,CAACA,sBAAsBA,EAAEA,QAAQA,IAAIA,QAAQA,CAACA,SAASA,IAAIA,CAACA,QAAQA,CAACA,SAASA,CAACA,YAAYA,CAACA,CAACA;YACvHA,CAACA;YAEON,iDAAgBA,GAAxBA,UAAyBA,YAA0BA;gBAC/CO,IAAIA,QAAQA,GAAGA,IAAIA,CAACA,QAAQA,CAACA;gBAC7BA,IAAIA,eAAeA,GAAGA,YAAYA,CAACA,MAAMA,CAACA,IAAIA,CAACA;qBAC1CA,OAAOA,CAACA,SAASA,CAACA,aAAaA,CAACA,KAAKA,EAAEA,IAAIA,CAACA,CAACA;gBAElDA,IAAIA,YAAYA,GAAGA,eAAeA,CAACA,MAAMA,CAACA,KAAKA,CAACA;qBAC3CA,OAAOA,CAACA,SAASA,CAACA,KAAKA,CAACA,KAAKA,EAAEA,IAAIA,CAACA,CAACA;gBAE1CA,YAAYA,CAACA,MAAMA,CAACA,OAAOA,CAACA;qBACvBA,IAAIA,CAACA,MAAMA,EAAEA,UAAUA,CAACA,CAACA;gBAE9BA,YAAYA,CAACA,MAAMA,CAACA,MAAMA,CAACA;qBACtBA,OAAOA,CAACA,SAASA,CAACA,QAAQA,CAACA,KAAKA,EAAEA,IAAIA,CAACA;qBACvCA,KAAKA,CAACA,MAAMA,CAACA,kBAAkBA,CAACA,QAAQA,CAACA,CAACA,CAACA;gBAEhDA,eAAeA,CAACA,MAAMA,CAACA,MAAMA,CAACA;qBACzBA,OAAOA,CAACA,kBAAUA,CAACA,SAASA,CAACA,SAASA,CAACA,KAAKA,EAAEA,IAAIA,CAACA;qBACnDA,KAAKA,CAACA,WAAWA,EAAEA,cAAcA,CAACA,SAASA,CAACA,QAAQA,CAACA,UAAUA,CAACA,QAAQA,CAACA,CAACA,CAACA;gBAEhFA,eAAeA,CAACA,MAAMA,CAACA,MAAMA,CAACA;qBACzBA,OAAOA,CAACA,kBAAUA,CAACA,SAASA,CAACA,SAASA,CAACA,KAAKA,EAAEA,IAAIA,CAACA;qBACnDA,KAAKA,CAACA,WAAWA,EAAEA,cAAcA,CAACA,SAASA,CAACA,QAAQA,CAACA,UAAUA,CAACA,QAAQA,CAACA,CAACA,CAACA;YACpFA,CAACA;YAEOP,kDAAiBA,GAAzBA,UAA0BA,YAA0BA,EAAEA,oBAA2CA;gBAAjGQ,iBA4DCA;gBA3DGA,IAAIA,QAAQA,GAAGA,IAAIA,CAACA,QAAQA,CAACA;gBAC7BA,IAAIA,IAAIA,GAAGA,IAAIA,CAACA,IAAIA,CAACA;gBACrBA,EAAEA,CAACA,CAACA,IAAIA,IAAIA,QAAQA,CAACA,CAACA,CAACA;oBACnBA,sBAAsBA;oBACtBA,IAAIA,SAASA,GAAGA,IAAIA,CAACA,SAASA,CAACA;oBAC/BA,SAASA,CAACA,iBAAiBA,CAACA,IAAIA,CAACA,MAAMA,EAAEA,QAAQA,EAAEA,IAAIA,CAACA,kBAAkBA,CAACA,CAACA;oBAC5EA,IAAIA,CAACA,MAAMA,CAACA,IAAIA,CAACA,OAAOA,EAAEA,IAAIA,CAACA,kBAAkBA,CAACA,CAACA;oBAEnDA,IAAIA,SAASA,GAAGA,YAAYA,CAACA,SAASA,CAACA,kBAAUA,CAACA,SAASA,CAACA,SAASA,CAACA,QAAQA,CAACA,CAACA;oBAChFA,SAASA,CAACA,IAAIA,CAACA,UAACA,CAAkBA;wBAC9BA,EAAEA,CAACA,CAACA,CAACA,KAAIA,CAACA,aAAaA,CAACA,CAACA,CAACA,KAAKA,CAACA,CAACA;4BAC7BA,MAAMA,CAACA,CAACA,CAACA,KAAKA,CAACA;wBACnBA,IAAIA;4BACAA,MAAMA,CAACA,gBAAaA,CAACA,CAACA,KAAKA,UAAMA,CAACA;oBAC1CA,CAACA,CAACA,CAACA;oBACHA,SAASA,CAACA,IAAIA,CAACA,OAAOA,EAAEA,UAACA,CAAkBA,IAAKA,OAAAA,CAACA,CAACA,OAAOA,EAATA,CAASA,CAACA,CAACA;oBAC3DA,SAASA,CAACA,kBAAkBA,CAACA,SAASA,EAAEA,QAAQA,CAACA,CAACA;oBAElDA,IAAIA,SAASA,GAAGA,YAAYA,CAACA,SAASA,CAACA,kBAAUA,CAACA,SAASA,CAACA,SAASA,CAACA,QAAQA,CAACA,CAACA;oBAChFA,SAASA,CAACA,IAAIA,CAACA,UAACA,CAAkBA,IAAMA,OAAAA,CAACA,CAACA,KAAKA,EAAPA,CAAOA,CAACA,CAACA;oBACjDA,SAASA,CAACA,kBAAkBA,CAACA,SAASA,EAAEA,QAAQA,CAACA,CAACA;oBAElDA,IAAIA,cAAcA,GAAGA,YAAYA,CAACA,SAASA,CAACA,SAASA,CAACA,KAAKA,CAACA,QAAQA,CAACA,CAACA,SAASA,CAACA,MAAMA,CAACA,CAACA;oBACxFA,cAAcA,CAACA,KAAKA,CAACA,MAAMA,CAACA,kBAAkBA,CAACA,QAAQA,CAACA,CAACA,CAACA;oBAE1DA,EAAEA,CAACA,CAACA,oBAAoBA,IAAIA,IAAIA,CAACA,IAAIA,CAACA,CAACA,CAACA;wBACpCA,IAAIA,IAAIA,GAAGA,IAAIA,CAACA,IAAIA,CAACA,IAAIA,CAACA,OAAOA,EAAEA,IAAIA,CAACA,eAAeA,CAACA,KAAKA,CAACA,CAACA;wBAC/DA,IAAIA,oBAAoBA,GAAGA,IAAIA,CAACA,SAASA,CAACA,SAASA,CAACA,aAAaA,CAACA,QAAQA,CAACA,CAACA;wBAC5EA,IAAIA,gBAAgBA,GAAGA,IAAIA,CAACA,SAASA,CAACA,kBAAUA,CAACA,SAASA,CAACA,SAASA,CAACA,QAAQA,CAACA,CAACA;wBAC/EA,IAAIA,gBAAgBA,GAAGA,IAAIA,CAACA,SAASA,CAACA,SAASA,CAACA,KAAKA,CAACA,QAAQA,CAACA,CAACA;wBAChEA,IAAIA,WAAWA,GAAGA,IAAIA,CAACA,MAAMA,CAACA,MAAMA,CAACA,kBAAUA,CAACA,SAASA,CAACA,KAAKA,CAACA,QAAQA,CAACA,CAACA;wBAE1EA,IAAIA,eAAeA,GAAkCA;4BACjDA,UAAUA,EAAEA,IAAIA,CAACA,gBAAgBA;4BACjCA,eAAeA,EAAEA,IAAIA,CAACA,SAASA;4BAC/BA,cAAcA,EAAEA,oBAAoBA;4BACpCA,UAAUA,EAAEA,gBAAgBA;4BAC5BA,UAAUA,EAAEA,gBAAgBA;4BAC5BA,KAAKA,EAAEA,WAAWA;4BAClBA,oBAAoBA,EAAEA,oBAAoBA;4BAC1CA,QAAQA,EAAEA,IAAIA,CAACA,cAAcA;yBAChCA,CAACA;wBAEFA,IAAIA,0BAA0BA,GAAqCA;4BAC/DA,eAAeA,EAAEA,eAAeA;4BAChCA,WAAWA,EAAEA,gBAA0BA;yBAC1CA,CAACA;wBAEFA,oBAAoBA,CAACA,IAAIA,CACrBA,IAAIA,CAACA,gBAAgBA,EACrBA,IAAIA,CAACA,QAAQA,EACbA,0BAA0BA,EAC1BA,EAAEA,yBAAyBA,EAAEA,IAAIA,EAAEA,oBAAoBA,EAAEA,IAAIA,CAACA,oBAAoBA,EAAEA,yBAAyBA,EAAEA,IAAIA,EAAEA,CAACA,CAACA;wBAC3HA,yBAAiBA,CAACA,gBAAgBA,CAACA,YAAYA,CAACA,MAAMA,CAACA,SAASA,CAACA,KAAKA,CAACA,QAAQA,CAACA,EAAEA,IAAIA,CAACA,oBAAoBA,EAAEA,oBAAoBA,CAACA,uBAAuBA,EAAEA,CAACA,CAACA;oBACjKA,CAACA;oBACDA,IAAIA,CAACA,CAACA;wBACFA,yBAAiBA,CAACA,gBAAgBA,CAACA,YAAYA,CAACA,MAAMA,CAACA,SAASA,CAACA,KAAKA,CAACA,QAAQA,CAACA,EAAEA,KAAKA,EAAEA,KAAKA,CAACA,CAACA;oBACpGA,CAACA;gBACLA,CAACA;YACLA,CAACA;YACLR,6BAACA;QAADA,CApNAhgF,AAoNCggF,IAAAhgF;QApNYA,8BAAsBA,yBAoNlCA,CAAAA;QAEDA,IAAOA,SAASA,CAOfA;QAPDA,WAAOA,SAASA,EAACA,CAACA;YACdygF,IAAOA,sBAAsBA,GAAGA,QAAQA,CAACA,YAAYA,CAACA,sBAAsBA,CAACA;YAEhEA,mBAASA,GAAGA,sBAAsBA,CAACA,iBAAiBA,CAACA,CAACA;YACtDA,uBAAaA,GAAGA,sBAAsBA,CAACA,qBAAqBA,CAACA,CAACA;YAC9DA,eAAKA,GAAGA,sBAAsBA,CAACA,gBAAgBA,CAACA,CAACA;YACjDA,kBAAQA,GAAGA,sBAAsBA,CAACA,UAAUA,CAACA,CAACA;QAC/DA,CAACA,EAPMzgF,SAASA,KAATA,SAASA,QAOfA;QAEDA,IAAOA,cAAcA,CAIpBA;QAJDA,WAAOA,cAAcA,EAACA,CAACA;YACN0gF,0BAAWA,GAAGA,CAACA,CAACA;YAChBA,mBAAIA,GAAGA,EAAEA,CAACA;YACVA,wBAASA,GAAGA,mBAAIA,GAAGA,0BAAWA,CAACA;QAChDA,CAACA,EAJM1gF,cAAcA,KAAdA,cAAcA,QAIpBA;QAEDA,+CAA+CA;QAC/CA,IAAOA,MAAMA,CAqBZA;QArBDA,WAAOA,MAAMA,EAACA,CAACA;YACX2gF,4BAAmCA,QAAwBA;gBACvDC,IAAIA,aAAaA,GAAGA,gBAAgBA,CAACA,QAAQA,CAACA,CAACA;gBAC/CA,IAAIA,uBAAuBA,GAAGA,eAAOA,CAACA,eAAeA,CAACA,MAAMA,EAAEA,QAAQA,CAACA,CAACA;gBACxEA,MAAMA,CAACA;oBACHA,WAAWA,EAAEA,aAAaA;oBAC1BA,kBAAkBA,EAAEA,uBAAuBA;oBAC3CA,WAAWA,EAAEA,cAAcA,CAACA,SAASA,CAACA,QAAQA,CAACA,UAAUA,CAACA,QAAQA,CAACA;iBACtEA,CAACA;YACNA,CAACA;YAReD,yBAAkBA,qBAQjCA,CAAAA;YAEDA,0BAA0BA,QAAwBA;gBAC9CE,IAAIA,KAAKA,GAAGA,QAAQA,CAACA,gBAAgBA,CAACA,QAAQA,CAACA,QAAQA,CAACA,UAAUA,CAACA,QAAQA,CAACA,CAACA;gBAC7EA,IAAIA,IAAIA,GAAGA,CAACA,cAAcA,CAACA,WAAWA,GAAGA,CAACA,cAAcA,CAACA,SAASA,GAAGA,KAAKA,CAACA,CAACA,CAACA;gBAC7EA,IAAIA,YAAYA,GAAGA,IAAIA,GAAGA,cAAcA,CAACA,IAAIA,CAACA;gBAE9CA,IAAIA,OAAOA,GAAGA,OAAOA,CAACA,MAAMA,CAACA,WAAWA,CAACA,YAAYA,EAAEA,IAAIA,CAACA,CAACA;gBAE7DA,MAAMA,CAACA,eAAOA,CAACA,KAAKA,CAACA,OAAOA,CAACA,CAACA;YAClCA,CAACA;QAELF,CAACA,EArBM3gF,MAAMA,KAANA,MAAMA,QAqBZA;IACLA,CAACA,EAtQcrxC,OAAOA,GAAPA,eAAOA,KAAPA,eAAOA,QAsQrBA;AAADA,CAACA,EAtQM,OAAO,KAAP,OAAO,QAsQb;AClSD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,yCAAyC;AAEzC,IAAO,OAAO,CAobb;AApbD,WAAO,OAAO;IAACA,IAAAA,OAAOA,CAobrBA;IApbcA,WAAAA,OAAOA,EAACA,CAACA;QACpBqxC,IAAOA,cAAcA,GAAGA,QAAQA,CAACA,cAAcA,CAACA;QAGhDA,IAAMA,mBAAmBA,GAAGA,EAAEA,CAACA;QAC/BA,IAAMA,YAAYA,GAAGA,EAAEA,CAACA;QACxBA,IAAMA,qBAAqBA,GAAGA,GAAGA,CAACA,CAACA,8FAA8FA;QACjIA,IAAMA,sBAAsBA,GAAGA;YAC3BA,SAASA,EAAEA;gBACPA,WAAWA,EAAEA,CAACA;gBACdA,WAAWA,EAAEA,CAACA;gBACdA,YAAYA,EAAEA,CAACA;aAClBA;SACJA,CAACA;QAEFA;YA0BI8gF,kCAAYA,OAAkCA;gBATtCC,mBAAcA,GAAmBA;oBACrCA,UAAUA,EAAEA,oBAAoBA;oBAChCA,QAAQA,EAAEA,MAAMA;iBACnBA,CAACA;gBAOEA,EAAEA,CAACA,CAACA,OAAOA,CAACA,CAACA,CAACA;oBACVA,IAAIA,CAACA,QAAQA,GAAGA,OAAOA,CAACA,QAAQA,CAACA;gBACrCA,CAACA;gBACDA,IAAIA,CAACA,SAASA,GAAGA,OAAOA,CAACA,SAASA,CAACA;gBACnCA,IAAIA,CAACA,cAAcA,GAAGA,CAACA,CAACA;YAC5BA,CAACA;YAEDD,4BAA4BA;YACrBA,kDAAeA,GAAtBA;gBACIE,EAAEA,CAACA,CAACA,IAAIA,CAACA,IAAIA,IAAIA,IAAIA,CAACA,IAAIA,CAACA,YAAYA,CAACA;oBACpCA,MAAMA,CAAsBA,IAAIA,CAACA,IAAIA,CAACA,YAAYA,CAACA,KAAKA,CAACA;YACjEA,CAACA;YAEMF,oDAAiBA,GAAxBA;gBACIG,MAAMA,CAACA,kBAAUA,CAACA,mBAAmBA,CAACA,iBAAiBA,CAACA,IAAIA,CAACA,QAAQA,CAACA,CAACA;YAC3EA,CAACA;YAEMH,uCAAIA,GAAXA,UAAYA,iBAAoCA;gBAC5CI,IAAIA,CAACA,OAAOA,GAAGA,iBAAiBA,CAACA,iBAAiBA,CAACA,OAAOA,CAACA;gBAC3DA,IAAIA,CAACA,eAAeA,GAAGA,iBAAiBA,CAACA,iBAAiBA,CAACA,QAAQA,CAACA;gBACpEA,IAAIA,YAAYA,GAAGA,IAAIA,CAACA,YAAYA,GAAGA,iBAAiBA,CAACA,iBAAiBA,CAACA,IAAIA,CAACA;gBAEhFA,EAAEA,CAACA,CAACA,IAAIA,CAACA,QAAQA,CAACA,CAACA,CAACA;oBAChBA,IAAIA,CAACA,oBAAoBA,GAAGA,kCAA0BA,CAACA,YAAYA,CAACA,CAACA;gBACzEA,CAACA;gBACDA,IAAIA,CAACA,YAAYA,GAAGA,cAAMA,OAAAA,iBAAiBA,CAACA,YAAYA,EAAEA,EAAhCA,CAAgCA,CAACA;gBAE3DA,IAAIA,YAAYA,GAAGA,QAAQA,CAACA,aAAaA,CAACA,KAAKA,CAACA,CAACA;gBACjDA,YAAYA,CAACA,SAASA,GAAGA,SAASA,CAACA,SAASA,CAACA,KAAKA,CAACA;gBACnDA,IAAIA,SAASA,GAAiBA,IAAIA,CAACA,SAASA,GAAGA,EAAEA,CAACA,MAAMA,CAACA,YAAYA,CAACA,CAACA;gBAEvEA,IAAIA,MAAMA,GAAGA,IAAIA,CAACA,SAASA,CAACA,kBAAkBA,CAACA,IAAIA,CAACA,YAAYA,CAACA,CAACA;gBAClEA,YAAYA,CAACA,WAAWA,CAACA,MAAMA,CAACA,CAACA;gBACjCA,IAAIA,CAACA,MAAMA,GAAGA,EAAEA,CAACA,MAAMA,CAACA,MAAMA,CAACA,CAACA;gBAEhCA,IAAIA,IAAIA,GAAGA,IAAIA,CAACA,IAAIA,GAAGA,SAASA,CAACA,MAAMA,CAACA,KAAKA,CAACA,CAACA,OAAOA,CAACA,kBAAUA,CAACA,SAASA,CAACA,IAAIA,CAACA,KAAKA,GAAGA,GAAGA,GAAGA,SAASA,CAACA,WAAWA,CAACA,KAAKA,EAAEA,IAAIA,CAACA,CAACA;gBAElIA,IAAIA,CAACA,mBAAmBA,GAAGA,IAAIA,CAACA,MAAMA,CAACA,QAAQA,CAACA;qBAC3CA,OAAOA,CAACA,SAASA,CAACA,eAAeA,CAACA,KAAKA,GAAGA,GAAGA,GAAGA,SAASA,CAACA,mBAAmBA,CAACA,KAAKA,EAAEA,IAAIA,CAACA,CAACA;gBAEhGA,IAAIA,CAACA,cAAcA,GAAGA,IAAIA,CAACA,MAAMA,CAACA,KAAKA,CAACA;qBACnCA,OAAOA,CAACA,SAASA,CAACA,cAAcA,CAACA,KAAKA,GAAGA,GAAGA,GAAGA,SAASA,CAACA,WAAWA,CAACA,KAAKA,EAAEA,IAAIA,CAACA,CAACA;gBAEvFA,IAAIA,CAACA,oBAAoBA,GAAGA,IAAIA,CAACA,MAAMA,CAACA,QAAQA,CAACA;qBAC5CA,OAAOA,CAACA,SAASA,CAACA,eAAeA,CAACA,KAAKA,GAAGA,GAAGA,GAAGA,SAASA,CAACA,oBAAoBA,CAACA,KAAKA,EAAEA,IAAIA,CAACA,CAACA;gBAEjGA,0BAA0BA;gBAC1BA,IAAIA,CAACA,OAAOA,CAACA,GAAGA,CAACA,CAACA,CAACA,CAACA,WAAWA,CAACA,YAAYA,CAACA,CAACA;gBAE9CA,IAAIA,CAACA,oBAAoBA,EAAEA,CAACA;gBAE5BA,MAAMA,CAACA,IAAIA,CAACA,oBAAoBA,CAACA;YACrCA,CAACA;YAEMJ,yCAAMA,GAAbA,UAAcA,OAA4BA;gBACtCK,IAAIA,IAAIA,GAAGA,OAAOA,CAACA,IAAIA,CAACA;gBACxBA,IAAIA,QAAQA,GAAGA,OAAOA,CAACA,QAAQA,CAACA;gBAEhCA,EAAEA,CAACA,CAACA,CAACA,QAAQA,IAAIA,CAACA,IAAIA,CAACA,CAACA,CAACA;oBACrBA,IAAIA,CAACA,cAAcA,CAACA,SAASA,CAACA,GAAGA,CAACA,CAACA,MAAMA,EAAEA,CAACA;oBAC5CA,MAAMA,CAACA;gBACXA,CAACA;gBAEDA,IAAIA,CAACA,IAAIA,GAAGA,IAAIA,CAACA;gBACjBA,IAAIA,CAACA,QAAQA,GAAGA,QAAQA,CAACA;gBACzBA,IAAIA,OAAOA,GAAGA,IAAIA,CAACA,eAAeA,IAAIA,OAAOA,CAACA,QAAQA;uBAC/CA,CAACA,IAAIA,CAACA,eAAeA,CAACA,MAAMA,KAAKA,OAAOA,CAACA,QAAQA,CAACA,MAAMA,IAAIA,IAAIA,CAACA,eAAeA,CAACA,KAAKA,KAAKA,OAAOA,CAACA,QAAQA,CAACA,KAAKA,CAACA,CAACA;gBAC1HA,EAAEA,CAACA,CAACA,CAACA,CAACA,IAAIA,CAACA,oBAAoBA,EAAEA,IAAIA,OAAOA,CAACA,CAACA,CAACA,CAACA;oBAC5CA,oKAAoKA;oBACpKA,sCAAsCA;oBACtCA,IAAIA,CAACA,2BAA2BA,EAAEA,CAACA;oBACnCA,IAAIA,CAACA,6BAA6BA,EAAEA,CAACA;gBACzCA,CAACA;gBAEDA,IAAIA,CAACA,eAAeA,GAAGA,OAAOA,CAACA,QAAQA,CAACA;gBACxCA,IAAIA,CAACA,WAAWA,EAAEA,CAACA;gBACnBA,IAAIA,+BAA+BA,GAAGA,IAAIA,CAACA,OAAOA,CAACA,IAAIA,CAACA,SAASA,CAACA,cAAcA,CAACA,QAAQA,CAACA,CAACA,KAAKA,EAAEA,CAACA;gBACnGA,IAAIA,CAACA,cAAcA,GAAGA,IAAIA,CAACA,yBAAyBA,CAACA,+BAA+BA,CAACA,CAACA;gBACtFA,EAAEA,CAACA,CAACA,IAAIA,CAACA,cAAcA,KAAKA,CAACA,CAACA;oBAC1BA,MAAMA,CAACA;gBAEXA,IAAIA,CAACA,UAAUA,EAAEA,CAACA;YACtBA,CAACA;YAEOL,6CAAUA,GAAlBA;gBACIM,IAAIA,IAAIA,GAAGA,IAAIA,CAACA,IAAIA,CAACA;gBACrBA,EAAEA,CAACA,CAACA,CAACA,IAAIA,IAAIA,CAACA,IAAIA,CAACA,gBAAgBA,CAACA;oBAChCA,MAAMA,CAACA;gBAEXA,IAAIA,CAACA,iBAAiBA,CAACA,IAAIA,CAACA,gBAAgBA,CAACA,CAACA;gBAE9CA,IAAIA,cAAcA,GAAGA,IAAIA,CAACA,cAAcA,CAACA;gBACzCA,IAAIA,cAAcA,GAAGA,IAAIA,CAACA,cAAcA,CAACA;gBACzCA,2BAA2BA;gBAC3BA,IAAIA,CAACA,SAASA,CAACA,OAAOA,CAACA,SAASA,CAACA,cAAcA,CAACA,KAAKA,EAAEA,cAAcA,GAAGA,IAAIA,CAACA,cAAcA,IAAIA,IAAIA,CAACA,gBAAgBA,CAACA,MAAMA,GAAGA,CAACA,CAACA,CAACA;gBACjIA,IAAIA,CAACA,SAASA,CAACA,OAAOA,CAACA,SAASA,CAACA,aAAaA,CAACA,KAAKA,EAAEA,cAAcA,GAAGA,CAACA,CAACA,CAACA;gBAE1EA,iBAAiBA;gBACjBA,IAAIA,CAACA,WAAWA,CAACA,IAAIA,CAACA,cAAcA,CAACA,CAACA;gBAEtCA,6BAA6BA;gBAC7BA,IAAIA,CAACA,wBAAwBA,EAAEA,CAACA;gBAEhCA,iBAAiBA;gBACjBA,EAAEA,CAACA,CAACA,cAAcA,GAAGA,cAAcA,IAAIA,IAAIA,CAACA,gBAAgBA,CAACA,MAAMA,GAAGA,qBAAqBA,CAACA,CAACA,CAACA;oBAC1FA,IAAIA,CAACA,YAAYA,EAAEA,CAACA;gBACxBA,CAACA;YACLA,CAACA;YAEON,8CAAWA,GAAnBA;gBACIO,IAAIA,QAAQA,GAAGA,IAAIA,CAACA,eAAeA,CAACA;gBACpCA,IAAIA,IAAIA,GAAGA,IAAIA,CAACA,IAAIA,CAACA;gBACrBA,IAAIA,eAAeA,GAAmBA,IAAIA,CAACA,cAAcA,CAACA;gBAC1DA,IAAIA,SAASA,GAAGA,IAAIA,CAACA,SAASA,CAACA;gBAE/BA,IAAIA,CAACA,SAASA;qBACTA,OAAOA,CAACA,SAASA,CAACA,kBAAkBA,CAACA,KAAKA,EAAEA,CAACA,eAAeA,CAACA,SAASA,CAACA,YAAYA,CAACA;qBACpFA,KAAKA,CAACA;oBACHA,OAAOA,EAAEA,cAAcA,CAACA,QAAQA,CAACA,QAAQA,CAACA,KAAKA,CAACA;oBAChDA,QAAQA,EAAEA,cAAcA,CAACA,QAAQA,CAACA,QAAQA,CAACA,MAAMA,CAACA;iBACrDA,CAACA,CAACA;gBAEPA,sBAAsBA;gBACtBA,SAASA,CAACA,iBAAiBA,CAACA,IAAIA,CAACA,MAAMA,EAAEA,eAAeA,EAAEA,IAAIA,CAACA,kBAAkBA,CAACA,CAACA;gBACnFA,IAAIA,oBAAoBA,GAAGA,SAASA,CAACA,uBAAuBA,CAACA,eAAeA,CAACA,CAACA;gBAC9EA,IAAIA,CAACA,MAAMA,CAACA,IAAIA,CAACA,OAAOA,EAAEA,IAAIA,CAACA,kBAAkBA,CAACA,CAACA;gBAElDA,+BAA+BA;gBAChCA,IAAIA,YAAYA,GAAGA,IAAIA,CAACA,YAAYA,GAAGA,SAASA,CAACA,qBAAqBA,CAACA,QAAQA,EAAEA,eAAeA,EAAEA,oBAAoBA,CAACA,CAACA;gBACxHA,IAAIA,CAACA,IAAIA,CAACA,KAAKA,CAACA;oBACZA,QAAQA,EAAEA,cAAcA,CAACA,QAAQA,CAACA,YAAYA,CAACA,MAAMA,CAACA;oBACtDA,OAAOA,EAAEA,cAAcA,CAACA,QAAQA,CAACA,YAAYA,CAACA,KAAKA,CAACA;iBACvDA,CAACA,CAACA;YACPA,CAACA;YAEOP,8CAAWA,GAAnBA,UAAoBA,eAA+BA;gBAAnDQ,iBA0CCA;gBAzCGA,IAAIA,cAAcA,GAAGA,IAAIA,CAACA,cAAcA,CAACA;gBACzCA,KAAKA,CAACA,MAAMA,CAACA,cAAcA,GAAGA,CAACA,EAAEA,8CAA8CA,CAACA,CAACA;gBACjFA,IAAIA,cAAcA,GAAGA,IAAIA,CAACA,cAAcA,CAACA;gBACzCA,IAAIA,sBAAsBA,GAAGA,IAAIA,CAACA,IAAIA,CAACA,gBAAgBA,CAACA,KAAKA,CAACA,cAAcA,EAAEA,cAAcA,GAAGA,cAAcA,CAACA,CAACA;gBAC/GA,IAAIA,KAAKA,GAAGA,IAAIA,CAACA,cAAcA;qBAC1BA,SAASA,CAACA,kBAAUA,CAACA,SAASA,CAACA,SAASA,CAACA,QAAQA,CAACA;qBAClDA,IAAIA,CAACA,sBAAsBA,EAAEA,UAACA,CAAkBA,IAAKA,OAAAA,CAACA,CAACA,OAAOA,CAACA,KAAIA,CAACA,IAAIA,CAACA,gBAAgBA,EAAEA,CAACA,CAACA,EAAxCA,CAAwCA,CAACA,CAACA;gBAEpGA,KAAKA;qBACAA,KAAKA,EAAEA;qBACPA,MAAMA,CAACA,KAAKA,CAACA;qBACbA,OAAOA,CAACA,kBAAUA,CAACA,SAASA,CAACA,SAASA,CAACA,KAAKA,GAAGA,GAAGA,GAAGA,SAASA,CAACA,WAAWA,CAACA,KAAKA,EAAEA,IAAIA,CAACA,CAACA;gBAE7FA,KAAKA,CAACA,KAAKA,EAAEA,CAACA;gBAEdA,KAAKA;qBACAA,KAAKA,CAACA;oBACHA,aAAaA,EAAEA,IAAIA,CAACA,cAAcA,CAACA,UAAUA;oBAC7CA,cAAcA,EAAEA,cAAcA,CAACA,QAAQA,CAACA,sBAAsBA,CAACA,SAASA,CAACA,WAAWA,CAACA;oBACrFA,eAAeA,EAAEA,cAAcA,CAACA,QAAQA,CAACA,sBAAsBA,CAACA,SAASA,CAACA,YAAYA,CAACA;oBACvFA,cAAcA,EAAEA,UAACA,CAAkBA,EAAEA,CAACA,IAAKA,OAAAA,KAAIA,CAACA,aAAaA,CAACA,CAACA,EAAEA,cAAcA,CAACA,GAAGA,KAAKA,GAAGA,cAAcA,CAACA,QAAQA,CAACA,sBAAsBA,CAACA,SAASA,CAACA,WAAWA,CAACA,EAArHA,CAAqHA;iBACnKA,CAACA,CAACA;gBAEPA,uDAAuDA;gBACvDA,IAAIA,CAACA,SAASA,CAACA,kBAAkBA,CAACA,KAAKA,EAAEA,eAAeA,CAACA,CAACA;gBAE1DA,KAAKA,CAACA,IAAIA,EAAEA,CAACA,MAAMA,EAAEA,CAACA;gBAEtBA,MAAMA,CAACA,UAAUA,CAACA;oBACdA,KAAKA;yBACAA,IAAIA,CAACA,OAAOA,EAAEA,UAACA,CAAkBA,IAAKA,OAAAA,CAACA,CAACA,OAAOA,EAATA,CAASA,CAACA;yBAChDA,IAAIA,CAACA,UAACA,CAAkBA,IAAKA,OAAAA,CAACA,CAACA,KAAKA,EAAPA,CAAOA,CAACA,CAACA;oBAC3CA,iEAAiEA;oBACjEA,IAAIA,MAAMA,GAAGA,KAAIA,CAACA,OAAOA,CAACA,IAAIA,CAACA,kBAAUA,CAACA,SAASA,CAACA,SAASA,CAACA,QAAQA,CAACA,CAACA;oBACxEA,IAAIA,IAAIA,GAAGA,MAAMA,CAACA,KAAKA,EAAEA,CAACA;oBAC1BA,IAAIA,SAASA,GAAGA,IAAIA,CAACA,KAAKA,EAAEA,CAACA;oBAC7BA,IAAIA,UAAUA,GAAGA,IAAIA,CAACA,MAAMA,EAAEA,CAACA;oBAC/BA,MAAMA,CAACA,IAAIA,CAACA,UAACA,CAACA,EAAEA,OAAOA;wBACnBA,8BAAsBA,CAACA,wBAAwBA,CAACA,OAAOA,EAAEA,SAASA,EAAEA,UAAUA,CAACA,CAACA;oBACpFA,CAACA,CAACA,CAACA;gBACPA,CAACA,CAACA,CAACA;YACPA,CAACA;YAEOR,2DAAwBA,GAAhCA;gBACIS,EAAEA,CAACA,CAACA,IAAIA,CAACA,oBAAoBA,IAAIA,IAAIA,CAACA,IAAIA,CAACA,CAACA,CAACA;oBACzCA,IAAIA,IAAIA,GAAGA,IAAIA,CAACA,IAAIA,CAACA;oBACrBA,IAAIA,cAAcA,GAAGA,IAAIA,CAACA,SAASA,CAACA,SAASA,CAACA,cAAcA,CAACA,QAAQA,CAACA,CAACA;oBACvEA,IAAIA,UAAUA,GAAGA,IAAIA,CAACA,SAASA,CAACA,kBAAUA,CAACA,SAASA,CAACA,SAASA,CAACA,QAAQA,CAACA,CAACA;oBACzEA,IAAIA,KAAKA,GAAGA,IAAIA,CAACA,MAAMA,CAACA,MAAMA,CAACA,kBAAUA,CAACA,SAASA,CAACA,KAAKA,CAACA,QAAQA,CAACA,CAACA;oBACpEA,IAAIA,MAAIA,GAAGA,IAAIA,CAACA,IAAIA,CAACA;oBAErBA,IAAIA,eAAeA,GAAoCA;wBACnDA,UAAUA,EAAEA,MAAIA,CAACA,gBAAgBA;wBACjCA,eAAeA,EAAEA,IAAIA,CAACA,SAASA;wBAC/BA,cAAcA,EAAEA,cAAcA;wBAC9BA,UAAUA,EAAEA,UAAUA;wBACtBA,KAAKA,EAAEA,KAAKA;wBACZA,oBAAoBA,EAAEA,IAAIA,CAACA,oBAAoBA;wBAC/CA,QAAQA,EAAEA,MAAIA,CAACA,cAAcA;qBAChCA,CAACA;oBAEFA,IAAIA,0BAA0BA,GAAqCA;wBAC/DA,eAAeA,EAAEA,eAAeA;wBAChCA,WAAWA,EAAEA,kBAA4BA;qBAC5CA,CAACA;oBAEFA,IAAIA,CAACA,oBAAoBA,CAACA,IAAIA,CAACA,MAAIA,CAACA,gBAAgBA,EAAEA,IAAIA,CAACA,QAAQA,EAAEA,0BAA0BA,EAAEA,EAAEA,yBAAyBA,EAAEA,IAAIA,EAAEA,oBAAoBA,EAAEA,MAAIA,CAACA,oBAAoBA,EAAEA,CAACA,CAACA;oBACvLA,yBAAiBA,CAACA,gBAAgBA,CAACA,IAAIA,CAACA,cAAcA,CAACA,SAASA,CAACA,kBAAUA,CAACA,SAASA,CAACA,SAASA,CAACA,QAAQA,CAACA,EAAEA,IAAIA,CAACA,oBAAoBA,CAACA,YAAYA,EAAEA,EAAEA,IAAIA,CAACA,oBAAoBA,CAACA,uBAAuBA,EAAEA,CAACA,CAACA;gBAC9MA,CAACA;gBACDA,IAAIA,CAACA,CAACA;oBACFA,yBAAiBA,CAACA,gBAAgBA,CAACA,IAAIA,CAACA,cAAcA,CAACA,SAASA,CAACA,kBAAUA,CAACA,SAASA,CAACA,SAASA,CAACA,QAAQA,CAACA,EAAEA,KAAKA,EAAEA,KAAKA,CAACA,CAACA;gBAC7HA,CAACA;YACLA,CAACA;YAEOT,oDAAiBA,GAAzBA,UAA0BA,MAAyBA;gBAC/CU,IAAIA,cAAcA,GAAGA,IAAIA,CAACA,cAAcA,CAACA;gBACzCA,qCAAqCA;gBACrCA,cAAcA,GAAGA,IAAIA,CAACA,GAAGA,CAACA,cAAcA,EAAEA,MAAMA,CAACA,MAAMA,GAAGA,CAACA,CAACA,CAACA;gBAE7DA,yBAAyBA;gBACzBA,IAAIA,CAACA,cAAcA,GAAGA,IAAIA,CAACA,GAAGA,CAACA,cAAcA,EAAEA,CAACA,CAACA,CAACA;YACtDA,CAACA;YAEOV,uDAAoBA,GAA5BA;gBACIW,IAAIA,CAACA,8BAA8BA,EAAEA,CAACA;gBACtCA,IAAIA,CAACA,wBAAwBA,EAAEA,CAACA;YACpCA,CAACA;YAEOX,2DAAwBA,GAAhCA;gBAAAY,iBAaCA;gBAZGA,IAAIA,oBAAoBA,GAAGA,IAAIA,CAACA,SAASA,CAACA,SAASA,CAACA,SAASA,CAACA,oBAAoBA,CAACA,QAAQA,CAACA,CAACA;gBAC7FA,IAAIA,mBAAmBA,GAAGA,IAAIA,CAACA,SAASA,CAACA,SAASA,CAACA,SAASA,CAACA,mBAAmBA,CAACA,QAAQA,CAACA,CAACA;gBAE3FA,oBAAoBA;qBACfA,EAAEA,CAACA,OAAOA,EAAEA;oBACTA,KAAIA,CAACA,WAAWA,EAAEA,CAACA;gBACvBA,CAACA,CAACA,CAACA;gBAEPA,mBAAmBA;qBACdA,EAAEA,CAACA,OAAOA,EAAEA;oBACTA,KAAIA,CAACA,UAAUA,EAAEA,CAACA;gBACtBA,CAACA,CAACA,CAACA;YACXA,CAACA;YAEDZ,yCAAyCA;YACjCA,iEAA8BA,GAAtCA;gBAAAa,iBAUCA;gBATGA,IAAIA,iBAAiBA,GAAGA,IAAIA,CAACA,IAAIA,CAACA,IAAIA,EAAEA,CAACA;gBAEzCA,iBAAiBA,CAACA,gBAAgBA,CAACA,YAAYA,EAAEA,UAACA,CAACA;oBAC/CA,KAAIA,CAACA,YAAYA,CAAmBA,CAAEA,CAACA,UAAUA,CAACA,CAACA;gBACvDA,CAACA,CAACA,CAACA;gBAEHA,iBAAiBA,CAACA,gBAAgBA,CAACA,gBAAgBA,EAAEA,UAACA,CAACA;oBACnDA,KAAIA,CAACA,YAAYA,CAAmBA,CAAEA,CAACA,MAAMA,CAACA,CAACA;gBACnDA,CAACA,CAACA,CAACA;YACPA,CAACA;YAEOb,+CAAYA,GAApBA,UAAqBA,UAAkBA;gBACnCc,EAAEA,CAACA,CAACA,UAAUA,GAAGA,CAACA,CAACA,CAACA,CAACA;oBACjBA,IAAIA,CAACA,WAAWA,EAAEA,CAACA;gBACvBA,CAACA;gBACDA,IAAIA,CAACA,EAAEA,CAACA,CAACA,UAAUA,GAAGA,CAACA,CAACA,CAACA,CAACA;oBACtBA,IAAIA,CAACA,UAAUA,EAAEA,CAACA;gBACtBA,CAACA;YACLA,CAACA;YAEDd;;cAEEA;YACMA,8CAAWA,GAAnBA;gBACIe,IAAIA,cAAcA,GAAGA,IAAIA,CAACA,cAAcA,CAACA;gBACzCA,IAAIA,UAAUA,GAAGA,IAAIA,CAACA,cAAcA,CAACA;gBACrCA,IAAIA,gBAAgBA,GAAGA,IAAIA,CAACA,IAAIA,CAACA,gBAAgBA,CAACA,MAAMA,CAACA;gBACzDA,IAAIA,aAAaA,GAAGA,gBAAgBA,GAAGA,CAACA,CAACA;gBAEzCA,kEAAkEA;gBAClEA,EAAEA,CAACA,CAACA,cAAcA,GAAGA,UAAUA,GAAGA,aAAaA,CAACA,CAACA,CAACA;oBAC9CA,MAAMA,CAACA;gBACXA,CAACA;gBAEDA,EAAEA,CAACA,CAACA,cAAcA,KAAKA,CAACA,CAACA,CAACA,CAACA;oBACvBA,UAAUA,IAAIA,cAAcA,CAACA;gBACjCA,CAACA;gBACDA,IAAIA,CAACA,CAACA;oBACFA,UAAUA,IAAIA,cAAcA,GAAGA,CAACA,CAACA;gBACrCA,CAACA;gBAEDA,6GAA6GA;gBAC7GA,EAAEA,CAACA,CAACA,cAAcA,GAAGA,UAAUA,GAAGA,aAAaA,CAACA,CAACA,CAACA;oBAC9CA,UAAUA,GAAGA,aAAaA,GAAGA,cAAcA,GAAGA,CAACA,CAACA;gBACpDA,CAACA;gBAEDA,IAAIA,CAACA,cAAcA,GAAGA,UAAUA,CAACA;gBACjCA,IAAIA,CAACA,UAAUA,EAAEA,CAACA;YACtBA,CAACA;YAEDf;;cAEEA;YACMA,6CAAUA,GAAlBA;gBACIgB,IAAIA,cAAcA,GAAGA,IAAIA,CAACA,cAAcA,CAACA;gBACzCA,IAAIA,UAAUA,GAAGA,IAAIA,CAACA,cAAcA,CAACA;gBACrCA,IAAIA,cAAcA,GAAGA,CAACA,CAACA;gBACvBA,mEAAmEA;gBACnEA,EAAEA,CAACA,CAACA,UAAUA,KAAKA,CAACA,CAACA,CAACA,CAACA;oBACnBA,MAAMA,CAACA;gBACXA,CAACA;gBAEDA,oHAAoHA;gBACpHA,EAAEA,CAACA,CAACA,cAAcA,KAAKA,CAACA,CAACA,CAACA,CAACA;oBACvBA,UAAUA,IAAIA,cAAcA,CAACA;gBACjCA,CAACA;gBAEDA,EAAEA,CAACA,CAACA,UAAUA,GAAGA,cAAcA,GAAGA,cAAcA,CAACA,CAACA,CAACA;oBAC/CA,UAAUA,GAAGA,cAAcA,CAACA;gBAChCA,CAACA;gBACDA,IAAIA,CAACA,CAACA;oBACFA,UAAUA,GAAGA,UAAUA,GAAGA,cAAcA,GAAGA,CAACA,CAACA;gBACjDA,CAACA;gBACDA,IAAIA,CAACA,cAAcA,GAAGA,UAAUA,CAACA;gBACjCA,IAAIA,CAACA,UAAUA,EAAEA,CAACA;YACtBA,CAACA;YAEOhB,gDAAaA,GAArBA,UAAsBA,UAAkBA,EAAEA,gBAAwBA;gBAC9DiB,MAAMA,CAACA,UAAUA,KAAKA,gBAAgBA,GAAGA,CAACA,CAACA;YAC/CA,CAACA;YAEOjB,qDAAkBA,GAA1BA,UAA2BA,QAAgBA;gBACvCkB,MAAMA,CAACA,CAACA,QAAQA,GAAGA,QAAQA,CAACA,gBAAgBA,CAACA,WAAWA,CAACA,GAAGA,YAAYA,CAACA;YAC7EA,CAACA;YAEOlB,uDAAoBA,GAA5BA;gBACImB,MAAMA,CAACA,IAAIA,CAACA,YAAYA,KAAKA,SAASA,CAACA;YAC3CA,CAACA;YAEDnB,oEAAoEA;YAC5DA,8DAA2BA,GAAnCA;gBACIoB,IAAIA,gBAAgBA,GAAWA,IAAIA,CAACA,kBAAkBA,EAAEA,CAACA;gBACzDA,IAAIA,YAAYA,GAAGA,CAACA,CAACA;gBACrBA,EAAEA,CAACA,CAACA,gBAAgBA,KAAKA,CAACA,CAACA,CAACA,CAACA;oBACzBA,IAAIA,CAACA,YAAYA,GAAGA,YAAYA,CAACA;oBACjCA,MAAMA,CAACA;gBACXA,CAACA;gBACDA,IAAIA,IAAIA,GAAGA,IAAIA,CAACA,IAAIA,CAACA;gBACrBA,IAAIA,UAAUA,GAAGA,IAAIA,CAACA,gBAAgBA,CAACA;gBACvCA,IAAIA,UAAUA,GAAGA,IAAIA,CAACA,GAAGA,CAACA,gBAAgBA,EAAEA,mBAAmBA,CAACA,CAACA;gBACjEA,IAAIA,UAAUA,GAAGA,MAAMA,CAACA,MAAMA,CAACA,IAAIA,EAAEA,EAAEA,EAAEA,IAAIA,CAACA,cAAcA,CAACA,CAACA;gBAC9DA,IAAIA,QAAQA,GAAGA,IAAIA,CAACA,cAAcA,CAACA,UAAUA,CAACA,QAAQA,CAACA;gBACvDA,qDAAqDA;gBACrDA,UAAUA,CAACA,QAAQA,GAAGA,cAAcA,CAACA,SAASA,CAACA,QAAQA,CAACA,CAACA;gBACzDA,IAAIA,eAAeA,GAAGA,QAAQA,CAACA,WAAWA,CAACA,eAAeA,CAACA;gBAE3DA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,UAAUA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;oBAClCA,IAAIA,QAAQA,GAAGA,UAAUA,CAACA,CAACA,CAACA,CAACA,KAAKA,CAACA;oBACnCA,UAAUA,CAACA,IAAIA,GAAGA,QAAQA,CAACA;oBAC3BA,YAAYA,GAAGA,IAAIA,CAACA,GAAGA,CAACA,YAAYA,EAAEA,eAAeA,CAACA,QAAQA,EAAEA,8BAAsBA,CAACA,mBAAmBA,EAAEA,UAAUA,CAACA,CAACA,CAACA;gBAC7HA,CAACA;gBAEDA,IAAIA,CAACA,YAAYA,GAAGA,IAAIA,CAACA,GAAGA,CAACA,YAAYA,EAAEA,IAAIA,CAACA,kBAAkBA,CAACA,QAAQA,CAACA,CAACA,CAACA;YAClFA,CAACA;YAEOpB,gEAA6BA,GAArCA;gBACIqB,IAAIA,IAAIA,GAAGA,IAAIA,CAACA,IAAIA,CAACA;gBACrBA,IAAIA,WAAWA,GAAGA,sBAAsBA,CAACA,SAASA,CAACA,WAAWA,GAAGA,sBAAsBA,CAACA,SAASA,CAACA,YAAYA,GAAGA,sBAAsBA,CAACA,SAASA,CAACA,WAAWA,CAACA;gBAC9JA,IAAIA,WAAWA,GAAGA,IAAIA,CAACA,SAASA,CAACA,mBAAmBA,CAACA,IAAIA,CAACA,cAAcA,CAACA,UAAUA,CAACA,OAAOA,EAAEA,IAAIA,CAACA,cAAcA,CAACA,OAAOA,CAACA,aAAaA,CAACA,CAACA;gBACxIA,IAAIA,CAACA,cAAcA,GAAGA,IAAIA,CAACA,YAAYA,GAAGA,WAAWA,GAAGA,WAAWA,CAACA;YACxEA,CAACA;YAEOrB,4DAAyBA,GAAjCA,UAAkCA,cAAsBA;gBACpDsB,IAAIA,cAAcA,GAAGA,IAAIA,CAACA,cAAcA,CAACA;gBACzCA,EAAEA,CAACA,CAACA,cAAcA,KAAKA,CAACA,CAACA;oBACrBA,MAAMA,CAACA,CAACA,CAACA;gBAEbA,IAAIA,gBAAgBA,GAAGA,IAAIA,CAACA,kBAAkBA,EAAEA,CAACA;gBACjDA,IAAIA,aAAaA,GAAGA,IAAIA,CAACA,GAAGA,CAACA,gBAAgBA,EAAEA,IAAIA,CAACA,KAAKA,CAACA,cAAcA,GAAGA,cAAcA,CAACA,CAACA,CAACA;gBAE5FA,kCAAkCA;gBAClCA,MAAMA,CAACA,IAAIA,CAACA,GAAGA,CAACA,aAAaA,EAAEA,CAACA,CAACA,CAACA;YAEtCA,CAACA;YAEOtB,qDAAkBA,GAA1BA;gBACIuB,MAAMA,CAACA,CAACA,CAACA,IAAIA,CAACA,IAAIA,CAACA,IAAIA,CAACA,gBAAgBA,CAACA,CAACA;YAC9CA,CAACA;YACLvB,+BAACA;QAADA,CAtZA9gF,AAsZC8gF,IAAA9gF;QAtZYA,gCAAwBA,2BAsZpCA,CAAAA;QAEDA,IAAOA,SAASA,CAYfA;QAZDA,WAAOA,SAASA,EAACA,CAACA;YACdygF,IAAOA,sBAAsBA,GAAGA,QAAQA,CAACA,YAAYA,CAACA,sBAAsBA,CAACA;YAEhEA,mBAASA,GAAGA,sBAAsBA,CAACA,2BAA2BA,CAACA,CAACA;YAChEA,wBAAcA,GAAGA,sBAAsBA,CAACA,sBAAsBA,CAACA,CAACA;YAChEA,yBAAeA,GAAGA,sBAAsBA,CAACA,iBAAiBA,CAACA,CAACA;YAC5DA,6BAAmBA,GAAGA,sBAAsBA,CAACA,MAAMA,CAACA,CAACA;YACrDA,8BAAoBA,GAAGA,sBAAsBA,CAACA,OAAOA,CAACA,CAACA;YACvDA,4BAAkBA,GAAGA,sBAAsBA,CAACA,sBAAsBA,CAACA,CAACA;YACpEA,qBAAWA,GAAGA,sBAAsBA,CAACA,aAAaA,CAACA,CAACA;YACpDA,wBAAcA,GAAGA,sBAAsBA,CAACA,gBAAgBA,CAACA,CAACA;YAC1DA,uBAAaA,GAAGA,sBAAsBA,CAACA,eAAeA,CAACA,CAACA;QACzEA,CAACA,EAZMzgF,SAASA,KAATA,SAASA,QAYfA;IACLA,CAACA,EApbcrxC,OAAOA,GAAPA,eAAOA,KAAPA,eAAOA,QAobrBA;AAADA,CAACA,EApbM,OAAO,KAAP,OAAO,QAobb;AChdD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,yCAAyC;AAEzC,IAAO,OAAO,CAyVb;AAzVD,WAAO,OAAO;IAACA,IAAAA,OAAOA,CAyVrBA;IAzVcA,WAAAA,OAAOA,EAACA,CAACA;QACpBqxC,IAAOA,eAAeA,GAAGA,kBAAUA,CAACA,eAAeA,CAACA;QACpDA,IAAOA,SAASA,GAAGA,kBAAUA,CAACA,SAASA,CAACA;QACxCA,IAAOA,cAAcA,GAAGA,kBAAUA,CAACA,cAAcA,CAACA;QAwElDA;YAyCIsiF,gBAAYA,OAAkCA;gBAC1CC,EAAEA,CAACA,CAACA,OAAOA,CAACA,CAACA,CAACA;oBACVA,IAAIA,CAACA,QAAQA,GAAGA,OAAOA,CAACA,QAAQA,CAACA;gBACrCA,CAACA;gBACDA,IAAIA,CAACA,SAASA,GAAGA,IAAIA,SAASA,EAAEA,CAACA;YACrCA,CAACA;YA/BaD,6BAAsBA,GAApCA;gBACIE,MAAMA,CAACA;oBACHA,OAAOA,EAAEA;wBACLA,YAAYA,EAAEA,SAASA;wBACvBA,aAAaA,EAAEA,CAACA;wBAChBA,WAAWA,EAAEA,gBAA0BA;qBAC1CA;oBACDA,MAAMA,EAAEA;wBACJA,iBAAiBA,EAAEA,CAACA;wBACpBA,IAAIA,EAAEA,IAAIA;wBACVA,OAAOA,EAAEA,YAAYA;wBACrBA,SAASA,EAAEA,SAASA;wBACpBA,QAAQA,EAAEA,EAAEA;qBACfA;oBACDA,UAAUA,EAAEA;wBACRA,KAAKA,EAAEA,SAASA;wBAChBA,OAAOA,EAAEA,MAAMA;wBACfA,QAAQA,EAAEA,EAAEA;qBACfA;oBACDA,SAASA,EAAEA;wBACPA,wBAAwBA,EAAEA,KAAKA;wBAC/BA,YAAYA,EAAEA,IAAIA;qBACrBA;iBACJA,CAACA;YACNA,CAACA;YASMF,qBAAIA,GAAXA,UAAYA,OAA0BA;gBAClCG,IAAIA,CAACA,WAAWA,GAAGA,OAAOA,CAACA;gBAC3BA,IAAIA,CAACA,OAAOA,GAAGA,OAAOA,CAACA,OAAOA,CAACA;gBAC/BA,IAAIA,CAACA,eAAeA,GAAGA,OAAOA,CAACA,QAAQA,CAACA;gBACxCA,IAAIA,CAACA,YAAYA,GAAGA,OAAOA,CAACA,IAAIA,CAACA;gBACjCA,IAAIA,QAAQA,GAAGA,IAAIA,CAACA,QAAQA,GAAGA,MAAMA,CAACA,sBAAsBA,EAAEA,CAACA;gBAC/DA,IAAIA,CAACA,iBAAiBA,GAAGA,QAAQA,CAACA,OAAOA,CAACA,WAAWA,CAACA;gBACtDA,IAAIA,CAACA,cAAcA,GAAGA,KAAKA,CAACA;gBAE5BA,IAAIA,CAACA,wBAAwBA,CAACA,IAAIA,CAACA,iBAAiBA,CAACA,CAACA;YAC1DA,CAACA;YAEMH,8BAAaA,GAApBA,UAAqBA,OAAiCA;gBAClDI,KAAKA,CAACA,WAAWA,CAACA,OAAOA,EAAEA,SAASA,CAACA,CAACA;gBAEtCA,IAAIA,SAASA,GAAGA,OAAOA,CAACA,SAASA,CAACA;gBAClCA,KAAKA,CAACA,WAAWA,CAACA,SAASA,EAAEA,WAAWA,CAACA,CAACA;gBAE1CA,EAAEA,CAACA,CAACA,CAACA,CAACA,OAAOA,CAACA,SAASA,CAACA,CAACA,CAACA,CAACA;oBACvBA,MAAMA,CAACA;gBACXA,CAACA;gBAEDA,IAAIA,gBAAgBA,GAAGA,IAAIA,CAACA,QAAQA,CAACA;gBACrCA,IAAIA,CAACA,QAAQA,GAAGA,SAASA,CAACA,CAACA,CAACA,CAACA;gBAC7BA,mFAAmFA;gBACnFA,IAAIA,sBAAsBA,GAAGA,OAAOA,CAACA,aAAaA,KAAKA,qCAA6BA,CAACA,MAAMA;uBACpFA,CAACA,wBAAgBA,CAACA,uBAAuBA,CAACA,gBAAgBA,EAAEA,IAAIA,CAACA,QAAQA,CAACA,CAACA;gBAElFA,IAAIA,QAAQA,GAAGA,IAAIA,CAACA,QAAQA,CAACA,QAAQA,CAACA;gBACtCA,IAAIA,CAACA,aAAaA,GAAGA,QAAQA;oBACzBA,CAACA,CAACA,CAACA,OAAOA,CAACA,QAAQA,CAACA,OAAOA,CAACA;oBAC5BA,QAAQA,CAACA,OAAOA,CAACA,CAACA,CAACA,CAACA,IAAIA;oBACxBA,QAAQA,CAACA,OAAOA,CAACA,CAACA,CAACA,CAACA,IAAIA,CAACA,IAAIA;oBAC7BA,QAAQA,CAACA,OAAOA,CAACA,CAACA,CAACA,CAACA,IAAIA,CAACA,IAAIA,CAACA,QAAQA,GAAGA,QAAQA,CAACA,OAAOA,CAACA,UAAUA,GAAGA,CAACA,CAACA,IAAIA,CAACA;gBAElFA,IAAIA,CAACA,MAAMA,CAACA,sBAAsBA,EAAEA,IAAIA,CAACA,CAACA;YAC9CA,CAACA;YAEMJ,2BAAUA,GAAjBA,UAAkBA,aAAwBA;gBACtCK,IAAIA,CAACA,eAAeA,GAAGA,aAAaA,CAACA;gBACrCA,IAAIA,CAACA,MAAMA,CAACA,KAAKA,CAACA,4BAA4BA,CAACA,CAACA;YACpDA,CAACA;YAEML,yCAAwBA,GAA/BA,UAAgCA,OAA8CA;gBAC1EM,MAAMA,CAACA,gBAAgBA,CAACA,wBAAwBA,CAACA,OAAOA,EAAEA,IAAIA,CAACA,UAAUA,EAAEA,IAAIA,CAACA,QAAQA,CAACA,CAACA;YAC9FA,CAACA;YAEDN,yBAAyBA;YAClBA,6BAAYA,GAAnBA;gBACIO,IAAIA,QAAQA,GAAGA,IAAIA,CAACA,QAAQA,CAACA;gBAC7BA,EAAEA,CAACA,CAACA,CAACA,QAAQA,CAACA;oBACVA,MAAMA,CAACA;gBAEXA,IAAIA,gBAAgBA,GAAGA,QAAQA,CAACA,QAAQA,CAACA;gBACzCA,qHAAqHA;gBACrHA,EAAEA,CAACA,CAACA,CAACA,IAAIA,CAACA,cAAcA,IAAIA,gBAAgBA,IAAIA,gBAAgBA,CAACA,OAAOA,CAACA,CAACA,CAACA;oBACvEA,IAAIA,CAACA,YAAYA,CAACA,YAAYA,EAAEA,CAACA;oBACjCA,IAAIA,CAACA,cAAcA,GAAGA,IAAIA,CAACA;gBAC/BA,CAACA;YACLA,CAACA;YAEMP,iCAAgBA,GAAvBA;gBACIQ,EAAEA,CAACA,CAACA,IAAIA,CAACA,oBAAoBA,CAACA;oBAC1BA,IAAIA,CAACA,oBAAoBA,CAACA,cAAcA,EAAEA,CAACA;YACnDA,CAACA;YAEOR,uBAAMA,GAAdA,UAAeA,sBAA+BA,EAAEA,kBAA4BA;gBACxES,IAAIA,sBAAsBA,GAAGA,IAAIA,CAACA,YAAYA,CAACA,kBAAkBA,CAACA,eAAeA,CAACA,SAASA,CAACA,CAACA;gBAC7FA,IAAIA,CAACA,UAAUA,GAAGA,sBAAcA,CAACA,OAAOA,CAACA,IAAIA,CAACA,QAAQA,EAAEA,sBAAsBA,EAAEA,IAAIA,CAACA,oBAAoBA,EAAEA,IAAIA,CAACA,YAAYA,CAACA,CAACA;gBAC9HA,EAAEA,CAACA,CAACA,IAAIA,CAACA,UAAUA,CAACA,CAACA,CAACA;oBAClBA,IAAIA,CAACA,UAAUA,CAACA,cAAcA,CAACA,OAAOA,CAACA,aAAaA,GAAGA,IAAIA,CAACA,GAAGA,CAACA,IAAIA,CAACA,UAAUA,CAACA,cAAcA,CAACA,OAAOA,CAACA,aAAaA,EAAEA,CAACA,CAACA,CAACA;oBACzHA,IAAIA,CAACA,QAAQA,GAAGA,IAAIA,CAACA,UAAUA,CAACA,cAAcA,CAACA;oBAC/CA,8KAA8KA;oBAC9KA,IAAIA,mBAAiBA,GAAGA,cAAcA,CAACA,kBAAkBA,CAACA,IAAIA,CAACA,UAAUA,CAACA,IAAIA,IAAIA,CAACA,UAAUA,CAACA,cAAcA,CAACA,OAAOA,IAAIA,IAAIA,CAACA,UAAUA,CAACA,cAAcA,CAACA,OAAOA,CAACA,WAAWA;wBACtKA,IAAIA,CAACA,UAAUA,CAACA,cAAcA,CAACA,OAAOA,CAACA,WAAWA,GAAGA,MAAMA,CAACA,sBAAsBA,EAAEA,CAACA,OAAOA,CAACA,WAAWA,CAACA;oBAEzGA,IAAIA,qBAAqBA,GAAGA,IAAIA,CAACA,qBAAqBA,CAACA,mBAAiBA,CAACA,CAACA;oBAC1EA,EAAEA,CAACA,CAACA,qBAAqBA,CAACA,CAACA,CAACA;wBACxBA,IAAIA,CAACA,iBAAiBA,GAAGA,mBAAiBA,CAACA;wBAC3CA,oEAAoEA;wBACpEA,IAAIA,CAACA,OAAOA,CAACA,KAAKA,EAAEA,CAACA;wBACrBA,IAAIA,CAACA,wBAAwBA,CAACA,mBAAiBA,CAACA,CAACA;oBACrDA,CAACA;gBACTA,CAACA;gBACDA,IAAIA,CAACA,cAAcA,CAACA,MAAMA,CAACA,EAAEA,QAAQA,EAAEA,IAAIA,CAACA,QAAQA,EAAEA,IAAIA,EAAEA,IAAIA,CAACA,UAAUA,EAAEA,QAAQA,EAAEA,IAAIA,CAACA,eAAeA,EAAEA,aAAaA,EAAEA,IAAIA,CAACA,aAAaA,EAAEA,sBAAsBA,EAAEA,sBAAsBA,EAAEA,CAACA,CAACA;gBAE1LA,EAAEA,CAACA,CAACA,kBAAkBA,CAACA;oBACnBA,IAAIA,CAACA,cAAcA,GAAGA,KAAKA,CAACA;YAC5CA,CAACA;YAEOT,sCAAqBA,GAA7BA,UAA8BA,iBAAoCA;gBAC9DU,MAAMA,CAACA,IAAIA,CAACA,iBAAiBA,KAAKA,iBAAiBA,CAACA;YACxDA,CAACA;YAEOV,yCAAwBA,GAAhCA,UAAiCA,iBAAoCA;gBACjEW,MAAMA,CAACA,CAACA,iBAAiBA,CAACA,CAACA,CAACA;oBACxBA,KAAKA,kBAA4BA;wBAC7BA,IAAIA,CAACA,0BAA0BA,EAAEA,CAACA;wBAClCA,KAAKA,CAACA;oBAEVA,KAAKA,gBAA0BA;wBAC3BA,IAAIA,CAACA,wBAAwBA,EAAEA,CAACA;wBAChCA,KAAKA,CAACA;gBACdA,CAACA;YACLA,CAACA;YAEOX,yCAAwBA,GAAhCA;gBACIY,IAAIA,sBAAsBA,GAAGA,IAAIA,CAACA,cAAcA,GAAGA,IAAIA,8BAAsBA,CAACA,EAAEA,SAASA,EAAEA,IAAIA,CAACA,SAASA,EAAEA,QAAQA,EAAEA,IAAIA,CAACA,QAAQA,EAAEA,CAACA,CAACA;gBACtIA,IAAIA,OAAOA,GAAGA,IAAIA,CAACA,iBAAiBA,EAAEA,CAACA;gBACvCA,IAAIA,CAACA,oBAAoBA,GAAGA,sBAAsBA,CAACA,IAAIA,CAACA,OAAOA,CAACA,CAACA;YACrEA,CAACA;YAEOZ,2CAA0BA,GAAlCA;gBACIa,IAAIA,wBAAwBA,GAAGA,IAAIA,CAACA,cAAcA,GAAGA,IAAIA,gCAAwBA,CAACA,EAAEA,SAASA,EAAEA,IAAIA,CAACA,SAASA,EAAEA,QAAQA,EAAEA,IAAIA,CAACA,QAAQA,EAAEA,CAACA,CAACA;gBAC1IA,IAAIA,OAAOA,GAAGA,IAAIA,CAACA,iBAAiBA,EAAEA,CAACA;gBACvCA,IAAIA,CAACA,oBAAoBA,GAAGA,wBAAwBA,CAACA,IAAIA,CAACA,OAAOA,CAACA,CAACA;YACvEA,CAACA;YAEOb,kCAAiBA,GAAzBA;gBAAAc,iBAKCA;gBAJGA,MAAMA,CAACA;oBACHA,iBAAiBA,EAAEA,IAAIA,CAACA,WAAWA;oBACnCA,YAAYA,EAAEA,cAAMA,OAAAA,KAAIA,CAACA,YAAYA,EAAEA,EAAnBA,CAAmBA;iBAC1CA,CAACA;YACNA,CAACA;YACLd,aAACA;QAADA,CA5KAtiF,AA4KCsiF,IAAAtiF;QA5KYA,cAAMA,SA4KlBA,CAAAA;QAEDA,gEAAgEA;QAChEA,IAAOA,gBAAgBA,CA8FtBA;QA9FDA,WAAOA,gBAAgBA,EAACA,CAACA;YACrBqjF,kCAAyCA,OAA8CA,EAAEA,IAAgBA,EAAEA,QAAwBA;gBAC/HC,EAAEA,CAACA,CAACA,CAACA,IAAIA,CAACA;oBACNA,MAAMA,CAACA;gBAEXA,MAAMA,CAACA,CAACA,OAAOA,CAACA,UAAUA,CAACA,CAACA,CAACA;oBACzBA,KAAKA,OAAOA;wBACRA,MAAMA,CAACA,cAAcA,CAACA,IAAIA,EAAEA,QAAQA,CAACA,CAACA;oBAC1CA,KAAKA,QAAQA;wBACTA,MAAMA,CAACA,eAAeA,CAACA,IAAIA,EAAEA,QAAQA,CAACA,CAACA;oBAC3CA,KAAKA,SAASA;wBACVA,MAAMA,CAACA,gBAAgBA,CAACA,IAAIA,EAAEA,QAAQA,CAACA,CAACA;oBAC5CA,KAAKA,WAAWA;wBACZA,MAAMA,CAACA,kBAAkBA,CAACA,IAAIA,EAAEA,QAAQA,CAACA,CAACA;gBAClDA,CAACA;YACLA,CAACA;YAdeD,yCAAwBA,2BAcvCA,CAAAA;YAEDA,4BAA4BA,IAAgBA,EAAEA,QAAwBA;gBAClEE,IAAIA,cAAcA,GAAGA,QAAQA,CAACA;gBAC9BA,IAAIA,2BAA2BA,GAAGA,cAAcA,CAACA,kBAAkBA,CAACA,IAAIA,CAACA,IAAIA,IAAIA,CAACA,cAAcA,CAACA,SAASA,CAACA;gBAC3GA,IAAIA,wBAAwBA,GAAGA,2BAA2BA,IAAIA,IAAIA,CAACA,cAAcA,CAACA,SAASA,CAACA,wBAAwBA;oBAChHA,IAAIA,CAACA,cAAcA,CAACA,SAASA,CAACA,wBAAwBA,GAAGA,cAAcA,CAACA,SAASA,CAACA,wBAAwBA,CAACA;gBAC/GA,IAAIA,YAAYA,GAAGA,IAAIA,IAAIA,IAAIA,CAACA,cAAcA,IAAIA,IAAIA,CAACA,cAAcA,CAACA,SAASA,IAAIA,IAAIA,CAACA,cAAcA,CAACA,SAASA,CAACA,YAAYA,KAAKA,SAASA;oBACvIA,IAAIA,CAACA,cAAcA,CAACA,SAASA,CAACA,YAAYA,GAAGA,cAAcA,CAACA,SAASA,CAACA,YAAYA,CAACA;gBAEvFA,MAAMA,CAACA,CAACA;wBACJA,QAAQA,EAAEA,IAAIA;wBACdA,UAAUA,EAAEA,WAAWA;wBACvBA,UAAUA,EAAEA;4BACRA,wBAAwBA,EAAEA,wBAAwBA;4BAClDA,YAAYA,EAAEA,YAAYA;yBAC7BA;qBACJA,CAACA,CAACA;YACPA,CAACA;YAEDF,yBAAyBA,IAAgBA,EAAEA,QAAwBA;gBAC/DG,IAAIA,cAAcA,GAAGA,QAAQA,CAACA;gBAC9BA,IAAIA,wBAAwBA,GAAGA,cAAcA,CAACA,kBAAkBA,CAACA,IAAIA,CAACA,IAAIA,IAAIA,CAACA,cAAcA,CAACA,MAAMA,CAACA;gBACrGA,IAAIA,SAASA,GAAGA,wBAAwBA,IAAIA,IAAIA,CAACA,cAAcA,CAACA,MAAMA,CAACA,SAASA;oBAC5EA,IAAIA,CAACA,cAAcA,CAACA,MAAMA,CAACA,SAASA,GAAGA,cAAcA,CAACA,MAAMA,CAACA,SAASA,CAACA;gBAC3EA,IAAIA,UAAUA,GAAGA,wBAAwBA,IAAIA,IAAIA,CAACA,cAAcA,CAACA,MAAMA,CAACA,UAAUA;oBAC9EA,IAAIA,CAACA,cAAcA,CAACA,MAAMA,CAACA,UAAUA,GAAGA,cAAcA,CAACA,MAAMA,CAACA,UAAUA,CAACA;gBAC7EA,MAAMA,CAACA,CAACA;wBACJA,QAAQA,EAAEA,IAAIA;wBACdA,UAAUA,EAAEA,QAAQA;wBACpBA,UAAUA,EAAEA;4BACRA,IAAIA,EAAEA,cAAcA,CAACA,MAAMA,CAACA,IAAIA;4BAChCA,SAASA,EAAEA,SAASA;4BACpBA,UAAUA,EAAEA,UAAUA;4BACtBA,OAAOA,EAAEA,cAAcA,CAACA,MAAMA,CAACA,OAAOA;4BACtCA,QAAQA,EAAEA,cAAcA,CAACA,MAAMA,CAACA,QAAQA;yBAC3CA;qBACJA,CAACA,CAACA;YACPA,CAACA;YAEDH,wBAAwBA,IAAgBA,EAAEA,QAAwBA;gBAC9DI,IAAIA,cAAcA,GAAGA,QAAQA,CAACA;gBAC9BA,IAAIA,sBAAsBA,GAAGA,cAAcA,CAACA,kBAAkBA,CAACA,IAAIA,CAACA,IAAIA,IAAIA,CAACA,cAAcA,CAACA,UAAUA,CAACA;gBACvGA,IAAIA,SAASA,GAAGA,sBAAsBA,IAAIA,IAAIA,CAACA,cAAcA,CAACA,UAAUA,CAACA,KAAKA;oBAC1EA,IAAIA,CAACA,cAAcA,CAACA,UAAUA,CAACA,KAAKA,GAAGA,cAAcA,CAACA,UAAUA,CAACA,KAAKA,CAACA;gBAC3EA,IAAIA,UAAUA,GAAGA,sBAAsBA,IAAIA,IAAIA,CAACA,cAAcA,CAACA,UAAUA,CAACA,UAAUA;oBAChFA,IAAIA,CAACA,cAAcA,CAACA,UAAUA,CAACA,UAAUA,GAAGA,cAAcA,CAACA,UAAUA,CAACA,UAAUA,CAACA;gBACrFA,MAAMA,CAACA,CAACA;wBACJA,QAAQA,EAAEA,IAAIA;wBACdA,UAAUA,EAAEA,OAAOA;wBACnBA,UAAUA,EAAEA;4BACRA,SAASA,EAAEA,SAASA;4BACpBA,UAAUA,EAAEA,UAAUA;4BACtBA,OAAOA,EAAEA,cAAcA,CAACA,UAAUA,CAACA,OAAOA;4BAC1CA,QAAQA,EAAEA,cAAcA,CAACA,UAAUA,CAACA,QAAQA;yBAC/CA;qBACJA,CAACA,CAACA;YACPA,CAACA;YAEDJ,0BAA0BA,IAAgBA,EAAEA,QAAwBA;gBAChEK,IAAIA,cAAcA,GAAGA,QAAQA,CAACA;gBAC9BA,IAAIA,yBAAyBA,GAAGA,cAAcA,CAACA,kBAAkBA,CAACA,IAAIA,CAACA,IAAIA,IAAIA,CAACA,cAAcA,CAACA,OAAOA,IAAIA,IAAIA,CAACA;gBAC/GA,IAAIA,YAAYA,GAAGA,yBAAyBA,IAAIA,IAAIA,CAACA,cAAcA,CAACA,OAAOA,CAACA,YAAYA;oBACpFA,IAAIA,CAACA,cAAcA,CAACA,OAAOA,CAACA,YAAYA,GAAGA,cAAcA,CAACA,OAAOA,CAACA,YAAYA,CAACA;gBACnFA,IAAIA,aAAaA,GAAGA,yBAAyBA,IAAIA,IAAIA,CAACA,cAAcA,CAACA,OAAOA,CAACA,aAAaA;oBACtFA,IAAIA,CAACA,cAAcA,CAACA,OAAOA,CAACA,aAAaA,GAAGA,cAAcA,CAACA,OAAOA,CAACA,aAAaA,CAACA;gBACrFA,IAAIA,WAAWA,GAAGA,yBAAyBA,IAAIA,IAAIA,CAACA,cAAcA,CAACA,OAAOA,CAACA,WAAWA,IAAIA,IAAIA;oBAC1FA,IAAIA,CAACA,cAAcA,CAACA,OAAOA,CAACA,WAAWA,GAAGA,cAAcA,CAACA,OAAOA,CAACA,WAAWA,CAACA;gBAEjFA,MAAMA,CAACA,CAACA;wBACJA,QAAQA,EAAEA,IAAIA;wBACdA,UAAUA,EAAEA,SAASA;wBACrBA,UAAUA,EAAEA;4BACRA,YAAYA,EAAEA,YAAYA;4BAC1BA,aAAaA,EAAEA,aAAaA;4BAC5BA,WAAWA,EAAEA,WAAWA;yBAC3BA;qBACJA,CAACA,CAACA;YACPA,CAACA;QACLL,CAACA,EA9FMrjF,gBAAgBA,KAAhBA,gBAAgBA,QA8FtBA;IACLA,CAACA,EAzVcrxC,OAAOA,GAAPA,eAAOA,KAAPA,eAAOA,QAyVrBA;AAADA,CAACA,EAzVM,OAAO,KAAP,OAAO,QAyVb;ACrXD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,yCAAyC;AAEzC,IAAO,OAAO,CA+yBb;AA/yBD,WAAO,OAAO;IAACA,IAAAA,OAAOA,CA+yBrBA;IA/yBcA,WAAAA,OAAOA,EAACA,CAACA;QAEpBqxC,IAAOA,WAAWA,GAAGA,gBAAQA,CAACA,QAAQA,CAACA,WAAWA,CAACA;QA+BnDA;YAKI2jF,iCAAYA,aAAkCA,EAAEA,SAAsCA;gBAClFC,KAAKA,CAACA,WAAWA,CAACA,aAAaA,EAAEA,eAAeA,CAACA,CAACA;gBAClDA,KAAKA,CAACA,WAAWA,CAACA,SAASA,EAAEA,WAAWA,CAACA,CAACA;gBAE1CA,IAAIA,CAACA,aAAaA,GAAGA,aAAaA,CAACA;gBACnCA,IAAIA,CAACA,SAASA,GAAGA,SAASA,CAACA;YAC/BA,CAACA;YAEDD;;eAEGA;YACIA,0CAAQA,GAAfA,UAAgBA,SAAcA;gBAC1BE,MAAMA,CAACA,CAACA,CAACA;YACbA,CAACA;YAEDF;;eAEGA;YACIA,8CAAYA,GAAnBA,UAAoBA,SAAcA;gBAC9BG,MAAMA,CAACA,SAASA,CAACA,MAAMA,CAACA;YAC5BA,CAACA;YAEDH;;eAEGA;YACIA,2CAASA,GAAhBA,UAAiBA,SAAcA,EAAEA,KAAaA;gBAC1CI,MAAMA,CAACA,SAASA,CAACA,KAAKA,CAACA,CAACA;YAC5BA,CAACA;YAEDJ;;eAEGA;YACIA,2CAASA,GAAhBA,UAAiBA,IAASA;gBACtBK,MAAMA,CAACA,IAAIA,CAACA;YAChBA,CAACA;YAEDL;;eAEGA;YACIA,0CAAQA,GAAfA,UAAgBA,IAASA;gBACrBM,EAAEA,CAACA,CAACA,CAACA,IAAIA,CAACA;oBACNA,MAAMA,CAACA,CAACA,CAACA,CAACA;gBAEdA,EAAEA,CAACA,CAACA,IAAIA,CAACA,KAAKA,CAACA,IAAIA,CAACA,CAACA;oBACjBA,MAAMA,CAA0BA,IAAKA,CAACA,KAAKA,CAACA;gBAEhDA,MAAMA,CAACA,IAAIA,CAACA,cAAcA,CAACA,IAAIA,CAACA,CAACA;YACrCA,CAACA;YAEON,uCAAKA,GAAbA,UAAcA,IAASA;gBACnBO,EAAEA,CAACA,CAACA,CAACA,IAAIA,CAACA;oBACNA,MAAMA,CAACA,KAAKA,CAACA;gBAEjBA,IAAIA,GAAGA,GAA2BA,IAAIA,CAACA;gBACvCA,MAAMA,CAACA,GAAGA,CAACA,KAAKA,KAAKA,SAASA,IAAIA,GAAGA,CAACA,MAAMA,KAAKA,SAASA,CAACA;YAC/DA,CAACA;YAEOP,gDAAcA,GAAtBA,UAAuBA,IAASA;gBAC5BQ,MAAMA,CAACA,uBAAuBA,CAACA,QAAQA,CAACA,IAAIA,CAACA,aAAaA,CAACA,OAAOA,EAAEA,IAAIA,CAACA,CAACA;YAC9EA,CAACA;YAEDR;;eAEGA;YACIA,wCAAMA,GAAbA,UAAcA,IAASA;gBACnBS,MAAMA,CAACA,IAAIA,CAACA;YAChBA,CAACA;YAEMT,oDAAkBA,GAAzBA,UAA0BA,UAAeA;gBACrCU,MAAMA,CAACA,KAAKA,CAACA;YACjBA,CAACA;YAEMV,uDAAqBA,GAA5BA,UAA6BA,UAAeA;gBACxCW,MAAMA,CAACA,IAAIA,CAACA;YAChBA,CAACA;YAEDX;;eAEGA;YACIA,4CAAUA,GAAjBA,UAAkBA,IAASA,EAAEA,KAAUA;gBACnCY,MAAMA,CAACA,KAAKA,CAACA;YACjBA,CAACA;YAEDZ;;eAEGA;YACIA,6CAAWA,GAAlBA,UAAmBA,IAASA;gBACxBa,MAAMA,CAACA,IAAIA,CAACA;YAChBA,CAACA;YAEDb;;eAEGA;YACIA,0CAAQA,GAAfA,UAAgBA,KAAUA;gBACtBc,MAAMA,CAACA,KAAKA,CAACA,MAAMA,CAACA;YACxBA,CAACA;YAEDd;;eAEGA;YACIA,uCAAKA,GAAZA,UAAaA,KAAUA,EAAEA,KAAaA;gBAClCe,MAAMA,CAACA,KAAKA,CAACA,KAAKA,CAACA,CAACA;YACxBA,CAACA;YAEDf;;eAEGA;YACIA,0CAAQA,GAAfA,UAAgBA,IAASA;gBACrBgB,MAAMA,CAACA,CAACA,CAACA;YACbA,CAACA;YAEDhB;;eAEGA;YACIA,iDAAeA,GAAtBA,UAAuBA,OAAYA,EAAEA,UAAkCA;gBACnEiB,IAAIA,KAAUA,CAACA;gBACfA,IAAIA,OAAOA,GAAYA,KAAKA,CAACA;gBAC7BA,IAAIA,YAAYA,GAAYA,KAAKA,CAACA;gBAElCA,IAAIA,WAAWA,GAAGA,uBAAuBA,CAACA,QAAQA,CAACA,IAAIA,CAACA,aAAaA,CAACA,OAAOA,EAAEA,UAAUA,CAACA,CAACA;gBAC3FA,IAAIA,UAAUA,GAAGA,WAAWA,KAAKA,CAACA,GAAGA,IAAIA,GAAGA,KAAKA,CAACA;gBAElDA,IAAIA,QAAQA,GAAeA,OAAOA,CAACA;gBACnCA,EAAEA,CAACA,CAACA,QAAQA,CAACA,UAAUA,IAAIA,IAAIA,CAACA,CAACA,CAACA;oBAC9BA,OAAOA,GAAGA,IAAIA,CAACA;oBACfA,KAAKA,GAAGA,QAAQA,CAACA,UAAUA,CAACA,WAAWA,CAACA,CAACA;gBAC7CA,CAACA;gBACDA,IAAIA,CAACA,CAACA;oBACFA,IAAIA,SAASA,GAAGA,IAAIA,CAACA,aAAaA,CAACA,UAAUA,CAACA,IAAIA,CAACA,aAAaA,CAACA,UAAUA,CAACA,MAAMA,GAAGA,CAACA,CAACA,CAACA;oBACxFA,YAAYA,GAAGA,SAASA,KAAKA,OAAOA,CAACA;oBACrCA,KAAKA,GAA4BA,OAAQA,CAACA,MAAMA,CAACA,WAAWA,CAACA,CAACA;gBAClEA,CAACA;gBAEDA,IAAIA,cAAcA,GAAGA,IAAIA,CAACA,SAASA,CAACA,KAAKA,EAAEA,UAAUA,EAAEA,WAAWA,CAACA,sBAAsBA,CAACA,CAACA;gBAC3FA,IAAIA,UAAkBA,CAACA;gBACvBA,IAAIA,WAAmBA,CAACA;gBACxBA,EAAEA,CAACA,CAACA,WAAWA,CAACA,oBAAoBA,CAACA,UAAUA,CAACA,GAAGA,EAAEA,cAAcA,CAACA,CAACA;oBACjEA,UAAUA,GAAGA,WAAWA,CAACA,YAAYA,CAACA,UAAUA,CAACA,GAAGA,EAAEA,cAAcA,CAACA,CAACA;gBAC1EA,IAAIA;oBACAA,WAAWA,GAAGA,cAAcA,CAACA;gBAEjCA,MAAMA,CAACA;oBACHA,WAAWA,EAAEA,WAAWA;oBACxBA,UAAUA,EAAEA,UAAUA;oBACtBA,SAASA,EAAEA,UAAUA,CAACA,SAASA;oBAC/BA,OAAOA,EAAEA,OAAOA;oBAChBA,YAAYA,EAAEA,YAAYA;oBAC1BA,OAAOA,EAAEA,iBAASA,CAACA,UAAUA,CAACA,UAAUA,EAAEA,cAAcA,CAACA;oBACzDA,SAASA,EAAEA,iBAASA,CAACA,YAAYA,CAACA,UAAUA,EAAEA,cAAcA,CAACA;oBAC7DA,UAAUA,EAAEA,UAAUA;iBACzBA,CAACA;YACNA,CAACA;YAEDjB;;eAEGA;YACIA,2CAASA,GAAhBA,UAAiBA,QAAgBA,EAAEA,WAAmBA;gBAClDkB,MAAMA,CAACA,IAAIA,CAACA;YAChBA,CAACA;YAEMlB,kDAAgBA,GAAvBA,UAAwBA,KAAUA,EAAEA,KAAUA;gBAC1CmB,EAAEA,CAACA,CAACA,KAAKA,KAAKA,KAAKA,CAACA;oBAChBA,MAAMA,CAACA,IAAIA,CAACA;gBAEhBA,8FAA8FA;gBAC9FA,gGAAgGA;gBAChGA,gGAAgGA;gBAChGA,wCAAwCA;gBACxCA,EAAEA,CAACA,CAACA,KAAKA,CAACA,WAAWA,IAAIA,KAAKA,CAACA,WAAWA,CAACA,CAACA,CAACA;oBACzCA,IAAIA,OAAOA,GAAmCA,KAAKA,CAACA;oBACpDA,IAAIA,OAAOA,GAAmCA,KAAKA,CAACA;oBACpDA,MAAMA,CAACA,OAAOA,CAACA,gBAAgBA,CAACA,4BAA4BA,CAACA,OAAOA,EAAEA,OAAOA,CAACA,CAACA;gBACnFA,CAACA;gBAEDA,EAAEA,CAACA,CAACA,IAAIA,CAACA,KAAKA,CAACA,KAAKA,CAACA,IAAIA,IAAIA,CAACA,KAAKA,CAACA,KAAKA,CAACA,CAACA;oBACvCA,MAAMA,CAACA,KAAKA,CAACA,KAAKA,KAAKA,KAAKA,CAACA,KAAKA,CAACA;gBAEvCA,MAAMA,CAACA,KAAKA,CAACA;YACjBA,CAACA;YAEMnB,oDAAkBA,GAAzBA,UAA0BA,KAAUA,EAAEA,KAAUA;gBAC5CoB,MAAMA,CAACA,CAACA,KAAKA,KAAKA,KAAKA,CAACA,CAACA;YAC7BA,CAACA;YAEMpB,sDAAoBA,GAA3BA,UAA4BA,KAAUA,EAAEA,KAAUA;gBAC9CqB,qEAAqEA;gBACrEA,MAAMA,CAACA,IAAIA,CAACA;YAChBA,CAACA;YAEMrB,wCAAMA,GAAbA,UAAcA,KAA0BA;gBACpCsB,IAAIA,CAACA,aAAaA,GAAGA,KAAKA,CAACA;YAC/BA,CAACA;YAEatB,gCAAQA,GAAtBA,UAAuBA,KAAYA,EAAEA,IAASA;gBAC1CM,GAAGA,CAACA,CAACA,GAAGA,CAACA,KAAKA,GAAGA,CAACA,EAAEA,GAAGA,GAAGA,KAAKA,CAACA,MAAMA,EAAEA,KAAKA,GAAGA,GAAGA,EAAEA,KAAKA,EAAEA,EAAEA,CAACA;oBAE3DA,8EAA8EA;oBAC9EA,oDAAoDA;oBACpDA,IAAIA,SAASA,GAAGA,KAAKA,CAACA,KAAKA,CAACA,CAACA;oBAC7BA,EAAEA,CAACA,CAACA,SAASA,CAACA,KAAKA,IAAIA,IAAIA,IAAIA,IAAIA,CAACA,KAAKA,IAAIA,IAAIA,IAAIA,SAASA,CAACA,KAAKA,KAAKA,IAAIA,CAACA,KAAKA,CAACA,CAACA,CAACA;wBAClFA,MAAMA,CAACA,KAAKA,CAACA;oBACjBA,CAACA;oBACDA,IAAIA,CAACA,CAACA;wBACFA,EAAEA,CAACA,CAACA,IAAIA,KAAKA,KAAKA,CAACA,KAAKA,CAACA,CAACA;4BACtBA,MAAMA,CAACA,KAAKA,CAACA;oBACrBA,CAACA;gBACLA,CAACA;gBAEDA,MAAMA,CAACA,CAACA,CAACA,CAACA;YACdA,CAACA;YACLN,8BAACA;QAADA,CAvNA3jF,AAuNC2jF,IAAA3jF;QAvNYA,+BAAuBA,0BAuNnCA,CAAAA;QAQDA;;WAEGA;QACHA;YAaIklF,qBAAYA,OAA2BA;gBACnCC,IAAIA,CAACA,OAAOA,GAAGA,OAAOA,CAACA;YAC3BA,CAACA;YAEMD,uCAAiBA,GAAxBA,UAAyBA,QAA6BA;gBAClDE,IAAIA,CAACA,aAAaA,GAAGA,QAAQA,CAACA;gBAC9BA,IAAIA,CAACA,oBAAoBA,GAAGA,QAAQA,CAACA,oBAAoBA,CAACA;YAC9DA,CAACA;YAEMF,8CAAwBA,GAA/BA,UAAgCA,IAA0BA;gBACtDG,EAAEA,CAACA,CAACA,IAAIA,CAACA,oBAAoBA,CAACA,OAAOA,CAACA,cAAcA,CAACA;oBACjDA,IAAIA,CAACA,SAASA,CAACA,kBAAkBA,CAACA,IAAIA,CAACA,oBAAoBA,CAACA,OAAOA,CAACA,cAAcA,EAAEA,IAAIA,CAACA,oBAAoBA,CAACA,OAAOA,CAACA,eAAeA,CAACA,CAACA;YAC/IA,CAACA;YAEMH,0CAAoBA,GAA3BA,UAA4BA,IAA0BA,EAAEA,SAAiBA,EAAEA,eAAeA,EAAEA,OAAeA,EAAEA,aAAqBA,EAAEA,YAAoBA;gBACpJI,EAAEA,CAACA,CAACA,SAASA,KAAKA,EAAEA,CAACA;oBACjBA,IAAIA,CAACA,SAASA,CAACA,YAAYA,CAACA,SAASA,CAACA,CAACA;gBAC3CA,EAAEA,CAACA,CAACA,eAAeA,CAACA;oBAChBA,IAAIA,CAACA,SAASA,CAACA,kBAAkBA,CAACA,eAAeA,CAACA,CAACA;gBAEvDA,IAAIA,WAAWA,GAAGA,wBAAgBA,CAACA,wBAAwBA,CAACA,OAAOA,EAAEA,aAAaA,CAACA,CAACA;gBACpFA,IAAIA,YAAYA,GAAGA,wBAAgBA,CAACA,cAAcA,CAACA,OAAOA,EAAEA,aAAaA,CAACA,CAACA;gBAC3EA,IAAIA,CAACA,SAASA,CAACA,UAAUA,CAACA,WAAWA,EAAEA,YAAYA,EAAEA,YAAYA,CAACA,CAACA;YACvEA,CAACA;YAEMJ,6CAAuBA,GAA9BA;YACAK,CAACA;YAEML,2CAAqBA,GAA5BA;YACAM,CAACA;YAEDN;;eAEGA;YACIA,mCAAaA,GAApBA,UAAqBA,IAASA,EAAEA,IAA0BA;gBACtDO,IAAIA,CAACA,YAAYA,CAACA,IAAIA,EAAEA,IAAIA,CAACA,CAACA;gBAC9BA,EAAEA,CAACA,CAACA,IAAIA,CAACA,OAAOA,CAACA,eAAeA,CAACA;oBAC7BA,IAAIA,CAACA,OAAOA,CAACA,eAAeA,CAACA,IAAIA,CAACA,CAACA;YAC3CA,CAACA;YAEMP,qCAAeA,GAAtBA,UAAuBA,IAASA,EAAEA,IAA0BA;YAC5DQ,CAACA;YAEDR;;eAEGA;YAEIA,sCAAgBA,GAAvBA,UAAwBA,IAA4BA,EAAEA,IAA0BA;gBAAhFS,iBAwBCA;gBAvBGA,IAAIA,WAAWA,GAAGA,uBAAuBA,CAACA,QAAQA,CAACA,IAAIA,CAACA,aAAaA,CAACA,OAAOA,EAAEA,IAAIA,CAACA,CAACA;gBACrFA,IAAIA,CAACA,SAASA,CAACA,iBAAiBA,CAACA,WAAWA,CAACA,qBAAqBA,CAACA,CAACA;gBACpEA,IAAIA,CAACA,SAASA,CAACA,iBAAiBA,EAAEA,CAACA;gBACnCA,IAAIA,CAACA,SAASA,CAACA,iBAAiBA,CAACA,IAAIA,CAACA,WAAWA,CAACA,CAACA;gBAEnDA,EAAEA,CAACA,CAACA,IAAIA,CAACA,gBAAgBA,EAAEA,CAACA;oBACxBA,WAAWA,CAACA,6BAA6BA,CAACA,IAAIA,EAAEA,IAAIA,CAACA,CAACA;gBAE1DA,EAAEA,CAACA,CAACA,IAAIA,CAACA,OAAOA,CAACA,mBAAmBA,CAACA,CAACA,CAACA;oBACnCA,IAAIA,OAAOA,GAAGA,UAACA,CAAaA;wBACxBA,IAAIA,aAAaA,GAAkBA,WAAWA,CAACA,WAAWA,CAACA,IAAIA,CAACA,IAAIA,CAACA,CAACA;wBACtEA,KAAIA,CAACA,OAAOA,CAACA,mBAAmBA,CAACA,IAAIA,CAACA,SAASA,GAAGA,IAAIA,CAACA,SAASA,GAAGA,IAAIA,CAACA,WAAWA,EAAEA,aAAaA,CAACA,CAACA;oBACxGA,CAACA,CAACA;oBACFA,IAAIA,CAACA,SAASA,CAACA,oBAAoBA,CAACA,OAAOA,CAACA,CAACA;gBACjDA,CAACA;gBAEDA,EAAEA,CAACA,CAACA,IAAIA,CAACA,oBAAoBA,CAACA,CAACA,CAACA;oBAC5BA,IAAIA,CAACA,oBAAoBA,CAACA,IAAIA,EAAEA,IAAIA,CAACA,oBAAoBA,CAACA,MAAMA,CAACA,SAASA,EAAEA,IAAIA,CAACA,oBAAoBA,CAACA,MAAMA,CAACA,eAAeA,EAAEA,IAAIA,CAACA,oBAAoBA,CAACA,MAAMA,CAACA,OAAOA,EAAEA,IAAIA,CAACA,oBAAoBA,CAACA,OAAOA,CAACA,aAAaA,EAAEA,IAAIA,CAACA,oBAAoBA,CAACA,OAAOA,CAACA,YAAYA,CAACA,CAACA;oBAEzQA,gCAAgCA;oBAChCA,EAAEA,CAACA,CAACA,WAAWA,GAAGA,CAACA,CAACA;wBAChBA,IAAIA,CAACA,wBAAwBA,CAACA,IAAIA,CAACA,CAACA;gBAC5CA,CAACA;YACLA,CAACA;YAEMT,wCAAkBA,GAAzBA,UAA0BA,IAASA,EAAEA,IAA0BA;gBAC3DU,IAAIA,CAACA,SAASA,CAACA,mBAAmBA,EAAEA,CAACA;gBACrCA,IAAIA,CAACA,SAASA,CAACA,mBAAmBA,EAAEA,CAACA;gBAErCA,EAAEA,CAACA,CAACA,IAAIA,CAACA,gBAAgBA,EAAEA,CAACA;oBACxBA,WAAWA,CAACA,eAAeA,CAACA,IAAIA,CAACA,CAACA;gBAEtCA,EAAEA,CAACA,CAACA,IAAIA,CAACA,OAAOA,CAACA,mBAAmBA,CAACA,CAACA,CAACA;oBACnCA,IAAIA,CAACA,SAASA,CAACA,sBAAsBA,EAAEA,CAACA;gBAC5CA,CAACA;YACLA,CAACA;YAEDV;;eAEGA;YACIA,kCAAYA,GAAnBA,UAAoBA,IAAeA,EAAEA,IAA0BA;gBAC3DW,EAAEA,CAACA,CAACA,IAAIA,CAACA,OAAOA,CAACA;oBACbA,WAAWA,CAACA,oBAAoBA,CAACA,IAAIA,CAACA,WAAWA,EAAEA,IAAIA,CAACA,CAACA;gBAC7DA,IAAIA,CAACA,EAAEA,CAACA,CAACA,IAAIA,CAACA,SAASA,CAACA;oBACpBA,WAAWA,CAACA,sBAAsBA,CAACA,IAAIA,CAACA,WAAWA,EAAEA,IAAIA,CAACA,CAACA;gBAC/DA,IAAIA,CAACA,EAAEA,CAACA,CAACA,CAACA,CAACA,CAACA,OAAOA,CAACA,IAAIA,CAACA,UAAUA,CAACA,CAACA;oBACjCA,CAACA,CAACA,IAAIA,CAACA,SAASA,CAACA,WAAWA,CAACA,CAACA,MAAMA,CAACA,IAAIA,CAACA,UAAUA,CAACA,CAACA;gBAC1DA,IAAIA,CAACA,EAAEA,CAACA,CAACA,IAAIA,CAACA,WAAWA,CAACA,CAACA,CAACA;oBACxBA,IAAIA,CAACA,SAASA,CAACA,iBAAiBA,CAACA,IAAIA,CAACA,WAAWA,CAACA,CAACA;gBACvDA,CAACA;gBAEDA,IAAIA,UAAUA,GAAGA,IAAIA,CAACA,OAAOA;oBACzBA,WAAWA,CAACA,eAAeA;oBAC3BA,IAAIA,CAACA,YAAYA,GAAGA,WAAWA,CAACA,gBAAgBA,GAAGA,WAAWA,CAACA,YAAYA,CAACA;gBAEhFA,EAAEA,CAACA,CAACA,IAAIA,CAACA,SAASA,CAACA;oBACfA,UAAUA,IAAIA,GAAGA,GAAGA,WAAWA,CAACA,oBAAoBA,CAACA;gBAEzDA,IAAIA,CAACA,SAASA,CAACA,iBAAiBA,CAACA,UAAUA,CAACA,CAACA;gBAE7CA,EAAEA,CAACA,CAACA,IAAIA,CAACA,oBAAoBA,CAACA,CAACA,CAACA;oBAC5BA,IAAIA,SAASA,GAAGA,IAAIA,CAACA,OAAOA,GAAGA,IAAIA,CAACA,oBAAoBA,CAACA,MAAMA,CAACA,SAASA,GAAGA,IAAIA,CAACA,oBAAoBA,CAACA,IAAIA,CAACA,SAASA,CAACA;oBACrHA,IAAIA,eAAeA,GAAGA,IAAIA,CAACA,OAAOA,GAAGA,IAAIA,CAACA,oBAAoBA,CAACA,MAAMA,CAACA,eAAeA,GAAGA,IAAIA,CAACA,oBAAoBA,CAACA,IAAIA,CAACA,eAAeA,CAACA;oBACvIA,IAAIA,YAAYA,GAAGA,IAAIA,CAACA,OAAOA,GAAGA,IAAIA,CAACA,oBAAoBA,CAACA,MAAMA,CAACA,OAAOA,GAAGA,IAAIA,CAACA,oBAAoBA,CAACA,IAAIA,CAACA,OAAOA,CAACA;oBAEpHA,IAAIA,CAACA,oBAAoBA,CAACA,IAAIA,EAAEA,SAASA,EAAEA,eAAeA,EAAEA,YAAYA,EAAEA,IAAIA,CAACA,oBAAoBA,CAACA,OAAOA,CAACA,aAAaA,EAAEA,IAAIA,CAACA,oBAAoBA,CAACA,OAAOA,CAACA,YAAYA,CAACA,CAACA;oBAE3KA,EAAEA,CAACA,CAACA,IAAIA,CAACA,oBAAoBA,CAACA,IAAIA,CAACA,cAAcA,CAACA;wBAC9CA,IAAIA,CAACA,SAASA,CAACA,eAAeA,EAAEA,CAACA;oBAErCA,EAAEA,CAACA,CAACA,CAACA,IAAIA,CAACA,UAAUA,CAACA;wBACjBA,IAAIA,CAACA,wBAAwBA,CAACA,IAAIA,CAACA,CAACA;gBAC5CA,CAACA;YACLA,CAACA;YAEMX,oCAAcA,GAArBA,UAAsBA,IAAeA,EAAEA,IAA0BA;gBAC7DY,IAAIA,CAACA,SAASA,CAACA,mBAAmBA,EAAEA,CAACA;gBACrCA,IAAIA,CAACA,SAASA,CAACA,mBAAmBA,EAAEA,CAACA;YACzCA,CAACA;YAEDZ;;eAEGA;YACIA,oCAAcA,GAArBA,UAAsBA,IAASA,EAAEA,IAA0BA;YAC3Da,CAACA;YAEMb,sCAAgBA,GAAvBA,UAAwBA,IAASA,EAAEA,IAA0BA;YAC7Dc,CAACA;YAEMd,8CAAwBA,GAA/BA,UAAgCA,IAA0BA;gBACtDe,uBAAuBA;YAC3BA,CAACA;YAEMf,gDAA0BA,GAAjCA,UAAkCA,IAA0BA;gBACxDgB,uBAAuBA;YAC3BA,CAACA;YAEMhB,8CAAwBA,GAA/BA,UAAgCA,IAA0BA;gBACtDiB,uBAAuBA;YAC3BA,CAACA;YAEMjB,gDAA0BA,GAAjCA,UAAkCA,IAA0BA;gBACxDkB,uBAAuBA;YAC3BA,CAACA;YAEDlB;;eAEGA;YACIA,oCAAcA,GAArBA,UAAsBA,IAA4BA;gBAC9CmB,MAAMA,CAACA,IAAIA,CAACA,WAAWA,CAACA;YAC5BA,CAACA;YAEMnB,oCAAcA,GAArBA,UAAsBA,IAASA;gBAC3BoB,MAAMA,CAACA,IAAIA,CAACA;YAChBA,CAACA;YAEMpB,kCAAYA,GAAnBA;gBACIqB,MAAMA,CAACA,KAAKA,CAACA;YACjBA,CAACA;YAEOrB,kCAAYA,GAApBA,UAAqBA,IAASA,EAAEA,IAA0BA;gBACtDsB,EAAEA,CAACA,CAACA,CAACA,IAAIA,CAACA,MAAMA,CAACA;oBACbA,MAAMA,CAACA;gBAEXA,IAAIA,KAAKA,GAAGA,IAAIA,CAACA,MAAMA,CAACA,MAAMA,CAACA;gBAC/BA,EAAEA,CAACA,CAACA,KAAKA,KAAKA,CAACA,CAACA;oBACZA,MAAMA,CAACA;gBAEXA,IAAIA,cAAcA,GAAGA,IAAIA,CAACA;gBAC1BA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAWA,CAACA,EAAEA,CAACA,GAAGA,KAAKA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;oBACrCA,EAAEA,CAACA,CAACA,IAAIA,CAACA,MAAMA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA;wBACjBA,cAAcA,GAAGA,KAAKA,CAACA;wBACvBA,KAAKA,CAACA;oBACVA,CAACA;gBACLA,CAACA;gBAEDA,+EAA+EA;gBAC/EA,+EAA+EA;gBAC/EA,iGAAiGA;gBACjGA,EAAEA,CAACA,CAACA,cAAcA,CAACA;oBACfA,IAAIA,CAACA,SAASA,CAACA,WAAWA,CAACA,SAASA,GAAGA,WAAWA,CAACA,gBAAgBA,CAACA;YAC5EA,CAACA;YAEOtB,sCAAgBA,GAAxBA;gBACIuB,MAAMA,CAACA,IAAIA,CAACA,OAAOA,CAACA,UAAUA,KAAKA,cAAgCA,CAACA;YACxEA,CAACA;YA5MavB,sCAA0BA,GAAGA,wBAAwBA,CAACA;YACtDA,iCAAqBA,GAAGA,wBAAwBA,CAACA;YAChDA,wBAAYA,GAAGA,cAAcA,CAACA;YAC9BA,4BAAgBA,GAAGA,mBAAmBA,CAACA;YACvCA,2BAAeA,GAAGA,iBAAiBA,CAACA;YACpCA,gCAAoBA,GAAGA,uBAAuBA,CAACA;YAC/CA,4BAAgBA,GAAGA,QAAQA,CAACA;YAuM/CA,kBAACA;QAADA,CA/MAllF,AA+MCklF,IAAAllF;QA/MYA,mBAAWA,cA+MvBA,CAAAA;QAWDA;YAqBI0mF,eAAYA,OAAiCA;gBACzCC,EAAEA,CAACA,CAACA,OAAOA,CAACA,CAACA,CAACA;oBACVA,IAAIA,CAACA,6BAA6BA,GAAGA,OAAOA,CAACA,6BAA6BA,CAACA;oBAC3EA,IAAIA,CAACA,cAAcA,GAAGA,OAAOA,CAACA,cAAcA,CAACA;gBACjDA,CAACA;YACLA,CAACA;YAEaD,oBAAcA,GAA5BA,UAA6BA,OAA8BA;gBACvDE,IAAIA,eAAeA,GAAGA,OAAOA,CAACA,gBAAgBA,CAACA,CAACA,CAACA,CAACA;gBAClDA,EAAEA,CAACA,CAACA,CAACA,eAAeA,IAAIA,CAACA,eAAeA,CAACA,KAAKA,IAAIA,CAACA,eAAeA,CAACA,QAAQA,CAACA;oBACxEA,MAAMA,CAACA;gBAEXA,IAAIA,iBAAiBA,GAA6EA,eAAeA,CAACA,KAAKA,CAACA,IAAIA,CAACA;gBAC7HA,IAAIA,OAAOA,GAAGA,eAAeA,CAACA,QAAQA,CAACA,OAAOA,CAACA;gBAC/CA,iBAAiBA,CAACA,GAAGA,CAACA,EAAEA,CAACA,YAAYA,GAAGA,WAAWA,CAACA,qBAAqBA,CAACA,OAAOA,CAACA,GAAGA,cAAgCA,GAAGA,YAA8BA,CAACA;YAC3JA,CAACA;YAEaF,sBAAgBA,GAA9BA;gBACIG,MAAMA,CAACA,CAACA,QAAQA,CAACA,CAACA;YACtBA,CAACA;YAEMH,oBAAIA,GAAXA,UAAYA,OAA0BA;gBAClCI,IAAIA,CAACA,OAAOA,GAAGA,OAAOA,CAACA,OAAOA,CAACA;gBAC/BA,IAAIA,CAACA,KAAKA,GAAGA,OAAOA,CAACA,KAAKA,CAACA;gBAC3BA,IAAIA,CAACA,cAAcA,CAACA,OAAOA,CAACA,QAAQA,CAACA,CAACA;gBACtCA,IAAIA,CAACA,SAASA,GAAGA,sBAAcA,CAACA,iBAAiBA,CAACA;gBAClDA,IAAIA,CAACA,aAAaA,GAAGA,OAAOA,CAACA,aAAaA,IAAIA,OAAOA,CAACA,aAAaA,CAACA,SAASA,IAAIA,IAAIA,CAACA;gBACtFA,IAAIA,CAACA,kBAAkBA,GAAGA,OAAOA,CAACA,IAAIA,CAACA,kBAAkBA,CAACA;gBAC1DA,IAAIA,CAACA,YAAYA,GAAGA,OAAOA,CAACA,IAAIA,CAACA;gBAEjCA,IAAIA,CAACA,cAAcA,GAAGA,KAAKA,CAACA;gBAC5BA,IAAIA,CAACA,qBAAqBA,GAAGA,IAAIA,CAACA;gBAClCA,IAAIA,CAACA,cAAcA,GAAGA,KAAKA,CAACA;YAChCA,CAACA;YAEDJ;;eAEGA;YACWA,eAASA,GAAvBA,UAAwBA,QAAkBA,EAAEA,6BAAsCA;gBAC9EK,IAAIA,KAAKA,GAAGA,QAAQA,CAACA,KAAKA,CAACA;gBAC3BA,KAAKA,CAACA,WAAWA,CAACA,KAAKA,EAAEA,OAAOA,CAACA,CAACA;gBAClCA,KAAKA,CAACA,WAAWA,CAACA,KAAKA,CAACA,IAAIA,EAAEA,YAAYA,CAACA,CAACA;gBAE5CA,IAAIA,WAAWA,GAAGA,iBAASA,CAACA,OAAOA,CAAsBA,KAAKA,CAACA,CAACA;gBAChEA,WAAWA,CAACA,UAAUA,GAAGA,EAAEA,CAACA;gBAE5BA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAWA,CAACA,EAAEA,CAACA,GAAGA,KAAKA,CAACA,IAAIA,CAACA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;oBACjDA,IAAIA,SAASA,GAA2BA;wBACpCA,KAAKA,EAAEA,CAACA;wBACRA,MAAMA,EAAEA,KAAKA,CAACA,IAAIA,CAACA,CAACA,CAACA;qBACxBA,CAACA;oBACFA,WAAWA,CAACA,UAAUA,CAACA,IAAIA,CAACA,SAASA,CAACA,CAACA;gBAC3CA,CAACA;gBAEDA,EAAEA,CAACA,CAACA,6BAA6BA,CAACA,CAACA,CAACA;oBAChCA,WAAWA,CAACA,oBAAoBA,GAAGA,WAAWA,CAACA,4BAA4BA,CAACA,QAAQA,CAACA,CAACA;gBAC1FA,CAACA;gBAEDA,MAAMA,CAACA,WAAWA,CAACA;YACvBA,CAACA;YAEML,0BAAUA,GAAjBA,UAAkBA,aAAwBA;gBACtCM,IAAIA,CAACA,cAAcA,CAACA,aAAaA,CAACA,CAACA;YACvCA,CAACA;YAEDN,yBAAyBA;YAClBA,qCAAqBA,GAA5BA;gBACIO,MAAMA,CAACA,IAAIA,CAACA,kBAAkBA,CAACA;YACnCA,CAACA;YAEMP,6BAAaA,GAApBA,UAAqBA,OAAiCA;gBAClDQ,KAAKA,CAACA,WAAWA,CAACA,OAAOA,EAAEA,SAASA,CAACA,CAACA;gBACtCA,4GAA4GA;gBAC5GA,EAAEA,CAACA,CAACA,IAAIA,CAACA,kBAAkBA,IAAIA,IAAIA,CAACA,kBAAkBA,CAACA,iCAAiCA,CAACA,CAACA,CAACA;oBACvFA,yHAAyHA;oBACzHA,IAAIA,CAACA,kBAAkBA,CAACA,iCAAiCA,GAAGA,KAAKA,CAACA;oBAClEA,MAAMA,CAACA;gBACXA,CAACA;gBAEDA,IAAIA,gBAAgBA,GAAGA,IAAIA,CAACA,QAAQA,CAACA;gBACrCA,IAAIA,SAASA,GAAGA,OAAOA,CAACA,SAASA,CAACA;gBAElCA,EAAEA,CAACA,CAACA,SAASA,IAAIA,SAASA,CAACA,MAAMA,GAAGA,CAACA,CAACA,CAACA,CAACA;oBACpCA,IAAIA,CAACA,QAAQA,GAAGA,SAASA,CAACA,CAACA,CAACA,CAACA;oBAC7BA,IAAIA,WAAWA,GAAGA,KAAKA,CAACA,SAASA,CAACA,IAAIA,CAACA,QAAQA,EAAEA,IAAIA,CAACA,6BAA6BA,CAACA,CAACA;oBACrFA,IAAIA,QAAQA,GAAGA,WAAWA,CAACA,oBAAoBA,GAAGA,WAAWA,CAACA,oBAAoBA,CAACA,OAAOA,CAACA,QAAQA,GAAGA,WAAWA,CAACA,WAAWA,CAACA,IAAIA,CAACA,QAAQA,CAACA,QAAQA,CAACA,OAAOA,CAACA,CAACA;oBAE9JA,EAAEA,CAACA,CAACA,OAAOA,CAACA,aAAaA,KAAKA,qCAA6BA,CAACA,MAAMA,CAACA,CAACA,CAACA;wBACjEA,IAAIA,CAACA,kBAAkBA,CAACA,MAAMA,CAACA,WAAWA,CAACA,CAACA;wBAC5CA,IAAIA,CAACA,aAAaA,CAACA,YAAYA,CAACA,sBAAsBA,CAAAA,KAAKA,EAAEA,WAAWA,CAACA,UAAUA,CAACA,CAACA;wBACrFA,IAAIA,CAACA,cAAcA,CAACA,SAASA,CAAAA,KAAKA,CAACA,CAACA;oBACxCA,CAACA;oBAACA,IAAIA,CAACA,CAACA;wBACJA,IAAIA,CAACA,gCAAgCA,CAACA,WAAWA,CAACA,CAACA;wBACnDA,IAAIA,CAACA,wBAAwBA,EAAEA,CAACA;wBAChCA,IAAIA,CAACA,mBAAmBA,CAACA,QAAQA,CAACA,CAACA;wBACnCA,IAAIA,MAAMA,GAAgBA,IAAIA,CAACA,aAAaA,CAACA,SAASA,EAAEA,CAACA;wBACzDA,MAAMA,CAACA,iBAAiBA,CAACA,WAAWA,CAACA,CAACA;wBACtCA,IAAIA,CAACA,oBAAoBA,EAAEA,CAACA;wBAC5BA,IAAIA,CAACA,cAAcA,CAACA,IAAIA,CAACA,QAAQA,EAAEA,QAAQA,EAAEA,gBAAgBA,EAAEA,WAAWA,CAACA,CAACA;oBAChFA,CAACA;gBACLA,CAACA;gBAEDA,IAAIA,CAACA,cAAcA,GAAGA,KAAKA,CAACA;gBAC5BA,IAAIA,CAACA,cAAcA,GAAGA,KAAKA,CAACA;YAChCA,CAACA;YAEOR,oCAAoBA,GAA5BA;gBACIS,EAAEA,CAACA,CAACA,IAAIA,CAACA,kBAAkBA,CAACA,CAACA,CAACA;oBAC1BA,IAAIA,CAACA,kBAAkBA,CAACA,6BAA6BA,EAAEA,CAACA;oBACxDA,EAAEA,CAACA,CAACA,IAAIA,CAACA,kBAAkBA,CAACA,yBAAyBA,EAAEA,CAACA;wBACpDA,IAAIA,CAACA,mBAAmBA,CAACA,IAAIA,CAACA,kBAAkBA,CAACA,iCAAiCA,EAAEA,CAACA,CAACA;gBAC9FA,CAACA;YACLA,CAACA;YAEMT,kCAAkBA,GAAzBA,UAA0BA,KAAaA,EAAEA,KAAaA;gBAClDU,IAAIA,CAACA,kBAAkBA,CAACA,kBAAkBA,CAACA,KAAKA,EAAEA,KAAKA,CAACA,CAACA;gBACzDA,IAAIA,CAACA,mBAAmBA,CAACA,IAAIA,CAACA,kBAAkBA,CAACA,iCAAiCA,EAAEA,CAACA,CAACA;YAC1FA,CAACA;YAEOV,mCAAmBA,GAA3BA,UAA4BA,eAA+CA;gBACvEW,IAAIA,CAACA,YAAYA,CAACA,iBAAiBA,CAACA,eAAeA,CAACA,CAACA;YACzDA,CAACA;YAEOX,8BAAcA,GAAtBA,UAAuBA,WAAsBA;gBACzCY,IAAIA,CAACA,eAAeA,GAAGA,WAAWA,CAACA;gBAEnCA,EAAEA,CAACA,CAACA,IAAIA,CAACA,aAAaA,CAACA,CAACA,CAACA;oBACrBA,IAAIA,CAACA,aAAaA,CAACA,QAAQA,GAAGA,IAAIA,CAACA,eAAeA,CAACA;oBACnDA,IAAIA,CAACA,kBAAkBA,EAAEA,CAACA;oBAC1BA,IAAIA,CAACA,cAAcA,CAACA,KAAKA,CAACA,CAACA;gBAC/BA,CAACA;YACLA,CAACA;YAEOZ,8BAAcA,GAAtBA,UAAuBA,KAAcA;gBACjCa,EAAEA,CAACA,CAACA,wBAAgBA,CAACA,gBAAgBA,CAACA,IAAIA,CAACA,OAAOA,CAACA,IAAIA,IAAIA,CAACA,aAAaA,EAAEA,KAAKA,qBAAuCA,CAACA,CAACA,CAACA;oBACtHA,IAAIA,CAACA,aAAaA,CAACA,OAAOA,CAACA,KAAKA,CAACA,CAACA;gBACtCA,CAACA;YACLA,CAACA;YAEOb,6BAAaA,GAArBA;gBACIc,MAAMA,CAACA,IAAIA,CAACA,aAAaA,GAAGA,cAAgCA,GAAGA,qBAAuCA,CAACA;YAC3GA,CAACA;YAEOd,gDAAgCA,GAAxCA,UAAyCA,WAAgCA;gBACrEe,EAAEA,CAACA,CAACA,CAACA,IAAIA,CAACA,aAAaA,CAACA,CAACA,CAACA;oBACtBA,IAAIA,aAAaA,GAAGA,IAAIA,uBAAuBA,CAACA,WAAWA,EAAEA,IAAIA,CAACA,SAASA,CAACA,CAACA;oBAC7EA,IAAIA,CAACA,kBAAkBA,GAAGA,aAAaA,CAACA;gBAC5CA,CAACA;gBACDA,IAAIA,CAACA,CAACA;oBACFA,IAAIA,CAACA,kBAAkBA,CAACA,MAAMA,CAACA,WAAWA,CAACA,CAACA;gBAChDA,CAACA;YACLA,CAACA;YAEOf,mCAAmBA,GAA3BA,UAA4BA,QAAgBA;gBACxCgB,EAAEA,CAACA,CAACA,CAACA,IAAIA,CAACA,aAAaA,CAACA,CAACA,CAACA;oBACtBA,qBAAqBA;oBACrBA,IAAIA,CAACA,aAAaA,GAAGA,IAAIA,CAACA,aAAaA,CAACA,IAAIA,CAACA,kBAAkBA,EAAEA,QAAQA,CAACA,CAACA;gBAC/EA,CAACA;YACLA,CAACA;YAEOhB,wCAAwBA,GAAhCA;gBAAAiB,iBAQCA;gBAPGA,EAAEA,CAACA,CAACA,CAACA,IAAIA,CAACA,kBAAkBA,CAACA,CAACA,CAACA;oBAC3BA,IAAIA,CAACA,kBAAkBA,GAAGA,IAAIA,gBAAQA,CAACA,wBAAwBA,CAACA,IAAIA,CAACA,QAAQA,EAAEA,KAAKA,CAACA,cAAcA,CAACA,CAACA;oBACrGA,IAAIA,CAACA,kBAAkBA,CAACA,yBAAyBA,GAAGA,UAACA,CAACA,EAAEA,CAACA,IAAKA,OAAAA,KAAIA,CAACA,kBAAkBA,CAACA,CAACA,EAAEA,CAACA,CAACA,EAA7BA,CAA6BA,CAACA;gBAChGA,CAACA;gBACDA,IAAIA,CAACA,CAACA;oBACFA,IAAIA,CAACA,kBAAkBA,CAACA,cAAcA,CAACA,IAAIA,CAACA,QAAQA,CAACA,CAACA;gBAC1DA,CAACA;YACLA,CAACA;YAEOjB,6BAAaA,GAArBA,UAAsBA,aAAsCA,EAAEA,QAAgBA;gBAA9EkB,iBA0BCA;gBAzBGA,IAAIA,UAAUA,GAAGA,IAAIA,CAACA,aAAaA,EAAEA,CAACA;gBAEtCA,IAAIA,kBAAkBA,GAAuBA;oBACzCA,eAAeA,EAAEA,UAACA,IAASA,IAAKA,OAAAA,KAAIA,CAACA,eAAeA,CAACA,IAAIA,CAACA,EAA1BA,CAA0BA;oBAC1DA,mBAAmBA,EAAEA,UAACA,SAAiBA,EAAEA,aAA4BA,IAAKA,OAAAA,KAAIA,CAACA,mBAAmBA,CAACA,SAASA,EAAEA,aAAaA,CAACA,EAAlDA,CAAkDA;oBAC5HA,UAAUA,EAAEA,UAAUA;iBACzBA,CAACA;gBAEFA,IAAIA,WAAWA,GAAGA,IAAIA,WAAWA,CAACA,kBAAkBA,CAACA,CAACA;gBACtDA,IAAIA,aAAaA,GAA0CA,UAAUA,KAAKA,qBAAuCA;sBAC3GA,gBAAQA,CAACA,QAAQA,CAACA,4BAA4BA,CAACA,mBAAmBA,CAACA,WAAWA,CAACA;sBAC/EA,gBAAQA,CAACA,QAAQA,CAACA,yBAAyBA,CAACA,mBAAmBA,CAACA,WAAWA,EAAEA,IAAIA,CAACA,kBAAkBA,CAACA,CAACA;gBAE5GA,sBAAsBA;gBACtBA,IAAIA,eAAeA,GAAGA,QAAQA,CAACA,aAAaA,CAACA,KAAKA,CAACA,CAACA;gBACpDA,IAAIA,CAACA,OAAOA,CAACA,MAAMA,CAACA,eAAeA,CAACA,CAACA;gBAErCA,IAAIA,aAAaA,GAA2BA;oBACxCA,WAAWA,EAAEA,IAAIA,CAACA,aAAaA;oBAC/BA,kBAAkBA,EAAEA,IAAIA,CAACA,cAAcA;oBACvCA,UAAUA,EAAEA,UAAUA;oBACtBA,QAAQA,EAAEA,WAAWA,CAACA,eAAeA,CAACA,QAAQA,CAACA;iBAClDA,CAACA;gBAEFA,MAAMA,CAACA,IAAIA,gBAAQA,CAACA,aAAaA,CAACA,aAAaA,EAAEA,aAAaA,EAAEA,WAAWA,EAAEA,eAAeA,EAAEA,aAAaA,CAACA,CAACA;YACjHA,CAACA;YAEOlB,8BAAcA,GAAtBA,UAAuBA,QAAkBA,EAAEA,QAAgBA,EAAEA,gBAA0BA,EAAEA,WAAgCA;gBAAzHmB,iBA0BCA;gBAzBGA,EAAEA,CAACA,CAACA,IAAIA,CAACA,aAAaA,EAAEA,KAAKA,qBAAuCA,CAACA,CAACA,CAACA;oBACnEA,IAAIA,CAACA,aAAaA,CAACA,aAAaA,CAACA,iBAAiBA,CAACA,iBAASA,CAACA,cAAcA,CAACA,QAAQA,CAACA,CAACA,CAACA;gBAC3FA,CAACA;gBAEDA,IAAIA,CAACA,aAAaA,CAACA,QAAQA,GAAGA,WAAWA,CAACA,eAAeA,CAACA,QAAQA,CAACA,CAACA;gBACpEA,IAAIA,CAACA,kBAAkBA,EAAEA,CAACA;gBAE1BA,sFAAsFA;gBACtFA,IAAIA,CAACA,aAAaA,CAACA,YAAYA,CAACA,sBAAsBA,CAAAA,IAAIA,EAAEA,WAAWA,CAACA,UAAUA,EAAEA,WAAWA,CAACA,OAAOA,CAACA,CAACA;gBAEzGA,IAAIA,MAAMA,GAAGA,IAAIA,CAACA,eAAeA,CAACA,QAAQA,CAACA,CAACA;gBAC5CA,IAAIA,CAACA,aAAaA,CAACA,YAAYA,CAACA,SAASA,CAACA,MAAMA,CAACA,CAACA;gBAElDA,IAAIA,CAACA,aAAaA,CAACA,QAAQA,GAAGA,IAAIA,CAACA,eAAeA,CAACA;gBACnDA,IAAIA,kBAAkBA,GAAGA,IAAIA,CAACA,kBAAkBA,CAACA,gBAAgBA,EAAEA,QAAQA,CAACA,CAACA;gBAE7EA,SAASA;gBACTA,6FAA6FA;gBAC7FA,UAAUA,CAACA;oBACPA,SAASA;oBACTA,KAAIA,CAACA,cAAcA,CAACA,kBAAkBA,CAACA,CAACA;oBACxCA,KAAIA,CAACA,kBAAkBA,CAACA,sBAAsBA,CAACA,KAAIA,CAACA,aAAaA,CAACA,aAAaA,CAACA,qBAAqBA,CAACA,CAACA;oBACvGA,EAAEA,CAACA,CAACA,KAAIA,CAACA,kBAAkBA,CAACA,yBAAyBA,EAAEA,CAACA;wBACpDA,KAAIA,CAACA,mBAAmBA,CAACA,KAAIA,CAACA,kBAAkBA,CAACA,iCAAiCA,EAAEA,CAACA,CAACA;gBAC9FA,CAACA,EAAEA,CAACA,CAACA,CAACA;YACVA,CAACA;YAEOnB,kCAAkBA,GAA1BA,UAA2BA,gBAA0BA,EAAEA,WAAqBA;gBACxEoB,EAAEA,CAACA,CAACA,CAACA,IAAIA,CAACA,cAAcA,IAAIA,CAACA,gBAAgBA,IAAIA,CAACA,WAAWA,CAACA;oBAC1DA,MAAMA,CAACA,IAAIA,CAACA;gBAEhBA,MAAMA,CAACA,CAACA,wBAAgBA,CAACA,oBAAoBA,CAACA,gBAAgBA,CAACA,QAAQA,EAAEA,WAAWA,CAACA,QAAQA,CAACA,CAACA;YACnGA,CAACA;YAEOpB,+BAAeA,GAAvBA,UAAwBA,QAAkBA;gBACtCqB,EAAEA,CAACA,CAACA,CAACA,WAAWA,CAACA,qBAAqBA,CAACA,QAAQA,CAACA,QAAQA,CAACA,OAAOA,CAACA,CAACA;oBAC9DA,MAAMA,CAACA,IAAIA,CAACA;gBAEhBA,IAAIA,MAAMA,GAAGA,QAAQA,CAACA,KAAKA,CAACA,MAAMA,CAACA;gBACnCA,EAAEA,CAACA,CAACA,CAACA,MAAMA,IAAIA,MAAMA,CAACA,MAAMA,KAAKA,CAACA,CAACA;oBAC/BA,MAAMA,CAACA,IAAIA,CAACA;gBAEhBA,IAAIA,QAAQA,GAAUA,EAAEA,CAACA;gBACzBA,IAAIA,OAAOA,GAAGA,QAAQA,CAACA,KAAKA,CAACA,OAAOA,CAACA;gBAErCA,6FAA6FA;gBAC7FA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,GAAGA,GAAGA,OAAOA,CAACA,MAAMA,EAAEA,CAACA,GAAGA,GAAGA,EAAEA,EAAEA,CAACA,EAAEA,CAACA;oBACjDA,IAAIA,MAAMA,GAAGA,OAAOA,CAACA,CAACA,CAACA,CAACA;oBAExBA,IAAIA,UAAUA,GAAGA,MAAMA,CAACA,MAAMA,CAACA,KAAKA,CAACA,CAACA;oBACtCA,EAAEA,CAACA,CAACA,UAAUA,IAAIA,IAAIA,CAACA,CAACA,CAACA;wBACrBA,QAAQA,CAACA,IAAIA,CAACA,UAAUA,CAACA,CAACA;oBAC9BA,CAACA;oBACDA,IAAIA,CAACA,CAACA;wBACFA,yFAAyFA;wBACzFA,sFAAsFA;wBACtFA,iCAAiCA;wBACjCA,QAAQA,CAACA,IAAIA,CAACA,CAACA,CAACA,KAAKA,CAACA,CAACA,GAAGA,IAAIA,CAACA,kBAAkBA,CAACA,iBAAiBA,CAACA,GAAGA,EAAEA,CAACA,CAACA;oBAC/EA,CAACA;gBACLA,CAACA;gBAEDA,MAAMA,CAAaA,EAAEA,UAAUA,EAAEA,QAAQA,EAAEA,CAACA;YAChDA,CAACA;YAEOrB,+BAAeA,GAAvBA,UAAwBA,IAASA;gBAC7BsB,EAAEA,CAACA,CAACA,IAAIA,CAACA,aAAaA,CAACA,IAAIA,CAACA,CAACA,CAACA,CAACA;oBAC3BA,IAAIA,CAACA,YAAYA,CAACA,YAAYA,EAAEA,CAACA;oBACjCA,IAAIA,CAACA,cAAcA,GAAGA,IAAIA,CAACA;gBAC/BA,CAACA;YACLA,CAACA;YAEOtB,mCAAmBA,GAA3BA,UAA4BA,SAAiBA,EAAEA,aAA4BA;gBACvEuB,IAAIA,eAAeA,GAA8BA,CAACA;wBAC9CA,SAASA,EAAEA,SAASA;wBACpBA,aAAaA,EAAEA,aAAaA;qBAC/BA,CAACA,CAACA;gBACHA,IAAIA,IAAIA,GAAwBA;oBAC5BA,eAAeA,EAAEA,eAAeA;iBACnCA,CAACA;gBACFA,IAAIA,CAACA,cAAcA,GAAGA,IAAIA,CAACA;gBAC3BA,IAAIA,CAACA,YAAYA,CAACA,YAAYA,CAACA,IAAIA,CAACA,CAACA;YACzCA,CAACA;YAEDvB;;eAEGA;YACIA,6BAAaA,GAApBA,UAAqBA,IAASA;gBAC1BwB,EAAEA,CAACA,CAACA,IAAIA,CAACA,cAAcA,IAAIA,CAACA,IAAIA,CAACA,QAAQA,CAACA,QAAQA,IAAIA,CAACA,IAAIA,CAACA,QAAQA,CAACA,QAAQA,CAACA,OAAOA,CAACA;oBAClFA,MAAMA,CAACA,KAAKA,CAACA;gBAEjBA,IAAIA,SAASA,GAAGA,IAAIA,CAACA,aAAaA,CAACA,YAAYA,CAACA,aAAaA,EAAEA,CAACA;gBAChEA,IAAIA,iBAAiBA,GAAGA,SAASA,GAAGA,KAAKA,CAACA,0BAA0BA,CAACA;gBAErEA,MAAMA,CAACA,IAAIA,CAACA,kBAAkBA,CAACA,QAAQA,CAACA,IAAIA,CAACA,IAAIA,iBAAiBA,CAACA;YACvEA,CAACA;YAEMxB,wCAAwBA,GAA/BA,UAAgCA,OAA8CA;gBAC1EyB,IAAIA,WAAWA,GAAGA,IAAIA,gCAAwBA,EAAEA,CAACA;gBAEjDA,EAAEA,CAACA,CAACA,IAAIA,CAACA,QAAQA,CAACA,CAACA,CAACA;oBAChBA,WAAWA,CAACA,cAAcA,CAACA,OAAOA,EAAEA,WAAWA,EAAEA,IAAIA,CAACA,QAAQA,EAAEA,IAAIA,CAACA,6BAA6BA,EAAEA,gBAAQA,CAACA,UAAUA,CAACA,KAAKA,CAACA,CAACA;gBACnIA,CAACA;gBAEDA,MAAMA,CAACA,WAAWA,CAACA,QAAQA,EAAEA,CAACA;YAClCA,CAACA;YAEOzB,uCAAuBA,GAA/BA;gBACI0B,MAAMA,CAACA,IAAIA,CAACA,YAAYA,CAACA,WAAWA,EAAEA,KAAKA,YAAaA,CAACA;YAC7DA,CAACA;YAEO1B,kCAAkBA,GAA1BA;gBACI2B,IAAIA,wBAAwBA,GAAGA,IAAIA,CAACA,uBAAuBA,EAAEA,CAACA;gBAC9DA,EAAEA,CAACA,CAACA,wBAAwBA,KAAKA,IAAIA,CAACA,qBAAqBA,CAACA,CAACA,CAACA;oBAC1DA,IAAIA,CAACA,qBAAqBA,GAAGA,wBAAwBA,CAACA;oBACtDA,IAAIA,CAACA,aAAaA,CAACA,aAAaA,CAACA,oBAAoBA,CAACA,wBAAwBA,CAACA,CAACA;gBACpFA,CAACA;YACLA,CAACA;YA/Uc3B,gCAA0BA,GAAWA,GAAGA,CAACA;YAgV5DA,YAACA;QAADA,CAjVA1mF,AAiVC0mF,IAAA1mF;QAjVYA,aAAKA,QAiVjBA,CAAAA;IACLA,CAACA,EA/yBcrxC,OAAOA,GAAPA,eAAOA,KAAPA,eAAOA,QA+yBrBA;AAADA,CAACA,EA/yBM,OAAO,KAAP,OAAO,QA+yBb;AC30BD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,yCAAyC;AAEzC,IAAO,OAAO,CAuoCb;AAvoCD,WAAO,OAAO;IAACA,IAAAA,OAAOA,CAuoCrBA;IAvoCcA,WAAAA,OAAOA,EAACA,CAACA;QAGpBqxC,IAAOA,WAAWA,GAAGA,gBAAQA,CAACA,QAAQA,CAACA,WAAWA,CAACA;QA8EnDA;;WAEGA;QACHA,wCAA+CA,MAAsBA,EAAEA,SAAsCA;YACzGsoF,MAAMA,CAACA,IAAIA,wBAAwBA,CAACA,MAAMA,EAAEA,SAASA,CAACA,CAACA;QAC3DA,CAACA;QAFetoF,sCAA8BA,iCAE7CA,CAAAA;QAEDA;YAMIuoF,kCAAYA,MAAsBA,EAAEA,SAAsCA;gBACtEC,IAAIA,CAACA,MAAMA,GAAGA,MAAMA,CAACA;gBACrBA,IAAIA,CAACA,YAAYA,GAAGA,wBAAwBA,CAACA,mBAAmBA,CAACA,MAAMA,CAACA,IAAIA,CAACA,CAACA;gBAC9EA,IAAIA,CAACA,eAAeA,GAAGA,wBAAwBA,CAACA,mBAAmBA,CAACA,MAAMA,CAACA,OAAOA,CAACA,CAACA;gBACpFA,IAAIA,CAACA,SAASA,GAAGA,SAASA,CAACA;gBAE3BA,IAAIA,CAACA,MAAMA,EAAEA,CAACA;YAClBA,CAACA;YAEDD;;eAEGA;YACIA,oDAAiBA,GAAxBA;gBACIE,MAAMA,CAACA,IAAIA,CAACA,MAAMA,CAACA;YACvBA,CAACA;YAEDF;;eAEGA;YACIA,2CAAQA,GAAfA,UAAgBA,SAA6BA;gBACzCG,IAAIA,eAAeA,GAAGA,IAAIA,CAACA,kBAAkBA,CAACA,SAASA,CAACA,CAACA;gBAEzDA,EAAEA,CAACA,CAACA,eAAeA,CAACA;oBAChBA,MAAMA,CAACA,IAAIA,CAACA,GAAGA,CAACA,eAAeA,CAACA,MAAMA,CAACA,MAAMA,EAAEA,CAACA,CAACA,CAACA;gBAEtDA,KAAKA,CAACA,UAAUA,CAACA,2BAA2BA,CAACA,CAACA;gBAC9CA,MAAMA,CAACA,CAACA,CAACA;YACbA,CAACA;YAEDH;;eAEGA;YACIA,+CAAYA,GAAnBA,UAAoBA,SAA6BA;gBAC7CI,IAAIA,eAAeA,GAAGA,IAAIA,CAACA,kBAAkBA,CAACA,SAASA,CAACA,CAACA;gBACzDA,EAAEA,CAACA,CAACA,eAAeA,CAACA;oBAChBA,MAAMA,CAACA,eAAeA,CAACA,SAASA,CAACA,MAAMA,CAACA;gBAE5CA,KAAKA,CAACA,UAAUA,CAACA,2BAA2BA,CAACA,CAACA;gBAC9CA,MAAMA,CAACA,CAACA,CAACA;YACbA,CAACA;YAEDJ;;eAEGA;YACIA,4CAASA,GAAhBA,UAAiBA,SAA6BA,EAAEA,KAAaA;gBACzDK,IAAIA,eAAeA,GAAGA,IAAIA,CAACA,kBAAkBA,CAACA,SAASA,CAACA,CAACA;gBACzDA,EAAEA,CAACA,CAACA,eAAeA,CAACA;oBAChBA,MAAMA,CAACA,eAAeA,CAACA,SAASA,CAACA,KAAKA,CAACA,CAACA;gBAE5CA,MAAMA,CAACA,IAAIA,CAACA;YAChBA,CAACA;YAEDL;;eAEGA;YACIA,+CAAYA,GAAnBA,UAAoBA,IAAsBA;gBACtCM,KAAKA,CAACA,WAAWA,CAACA,IAAIA,EAAEA,MAAMA,CAACA,CAACA;gBAEhCA,MAAMA,CAACA,IAAIA,CAACA,SAASA,CAACA;YAC1BA,CAACA;YAEDN;;eAEGA;YACIA,4CAASA,GAAhBA,UAAiBA,IAAsBA;gBACnCO,KAAKA,CAACA,WAAWA,CAACA,IAAIA,EAAEA,MAAMA,CAACA,CAACA;gBAEhCA,kCAAkCA;gBAClCA,EAAEA,CAACA,CAACA,IAAIA,CAACA,KAAKA,KAAKA,CAACA,CAACA;oBACjBA,MAAMA,CAACA,IAAIA,CAACA;gBAEhBA,MAAMA,CAACA,IAAIA,CAACA,MAAMA,CAACA;YACvBA,CAACA;YAEDP;;eAEGA;YACIA,2CAAQA,GAAfA,UAAgBA,IAAsBA;gBAClCQ,KAAKA,CAACA,WAAWA,CAACA,IAAIA,EAAEA,MAAMA,CAACA,CAACA;gBAEhCA,MAAMA,CAACA,IAAIA,CAACA,KAAKA,CAACA;YACtBA,CAACA;YAEDR;;eAEGA;YACIA,yCAAMA,GAAbA,UAAcA,IAAsBA;gBAChCS,KAAKA,CAACA,WAAWA,CAACA,IAAIA,EAAEA,MAAMA,CAACA,CAACA;gBAEhCA,MAAMA,CAACA,CAACA,IAAIA,CAACA,QAAQA,IAAIA,IAAIA,CAACA,QAAQA,CAACA,MAAMA,KAAKA,CAACA,CAACA;YACxDA,CAACA;YAEMT,qDAAkBA,GAAzBA,UAA0BA,IAAsBA;gBAC5CU,MAAMA,CAACA,IAAIA,CAACA;YAChBA,CAACA;YAEMV,wDAAqBA,GAA5BA,UAA6BA,IAAsBA;gBAC/CW,MAAMA,CAACA,KAAKA,CAACA;YACjBA,CAACA;YAEDX;;eAEGA;YACIA,6CAAUA,GAAjBA,UAAkBA,IAAsBA,EAAEA,KAAyBA;gBAC/DY,KAAKA,CAACA,WAAWA,CAACA,IAAIA,EAAEA,MAAMA,CAACA,CAACA;gBAEhCA,MAAMA,CAACA,KAAKA,CAACA,KAAKA,CAACA,MAAMA,GAAGA,CAACA,CAACA,KAAKA,IAAIA,CAACA;YAC5CA,CAACA;YAEDZ;;eAEGA;YACIA,8CAAWA,GAAlBA,UAAmBA,IAAsBA;gBACrCa,KAAKA,CAACA,WAAWA,CAACA,IAAIA,EAAEA,MAAMA,CAACA,CAACA;gBAEhCA,MAAMA,CAACA,IAAIA,CAACA,QAAQA,CAACA;YACzBA,CAACA;YAEDb;;eAEGA;YACIA,2CAAQA,GAAfA,UAAgBA,KAAyBA;gBACrCc,KAAKA,CAACA,WAAWA,CAACA,KAAKA,EAAEA,OAAOA,CAACA,CAACA;gBAElCA,MAAMA,CAACA,KAAKA,CAACA,MAAMA,CAACA;YACxBA,CAACA;YAEDd;;eAEGA;YACIA,wCAAKA,GAAZA,UAAaA,KAAyBA,EAAEA,KAAaA;gBACjDe,KAAKA,CAACA,WAAWA,CAACA,KAAKA,EAAEA,OAAOA,CAACA,CAACA;gBAElCA,MAAMA,CAACA,KAAKA,CAACA,KAAKA,CAACA,CAACA;YACxBA,CAACA;YAEDf;;eAEGA;YACIA,2CAAQA,GAAfA,UAAgBA,IAAsBA;gBAClCgB,KAAKA,CAACA,WAAWA,CAACA,IAAIA,EAAEA,MAAMA,CAACA,CAACA;gBAEhCA,MAAMA,CAACA,IAAIA,CAACA,KAAKA,CAACA;YACtBA,CAACA;YAEDhB;;eAEGA;YACIA,kDAAeA,GAAtBA,UAAuBA,OAAyBA,EAAEA,UAA4BA;gBAC1EiB,KAAKA,CAACA,WAAWA,CAACA,OAAOA,EAAEA,SAASA,CAACA,CAACA;gBACtCA,KAAKA,CAACA,WAAWA,CAACA,UAAUA,EAAEA,YAAYA,CAACA,CAACA;gBAC5CA,IAAIA,cAAcA,GAAGA,OAAOA,CAACA,UAAUA,KAAKA,IAAIA,IAAIA,UAAUA,CAACA,UAAUA,KAAKA,IAAIA,CAACA;gBAEnFA,EAAEA,CAACA,CAACA,CAACA,OAAOA,CAACA,MAAMA,CAACA;oBAChBA,MAAMA,CAACA;wBACHA,WAAWA,EAAEA,EAAEA;wBACfA,UAAUA,EAAEA,cAAcA;wBAC1BA,UAAUA,EAAEA,UAAUA,CAACA,KAAKA,KAAKA,CAACA;qBACrCA,CAACA;gBAENA,IAAIA,YAAYA,GAA4BA,CAACA,OAAOA,CAACA,MAAMA,CAACA,UAAUA,CAACA,SAASA,CAACA,CAACA,CAACA;gBACnFA,EAAEA,CAACA,CAACA,CAACA,YAAYA,CAACA;oBACdA,MAAMA,CAACA;wBACHA,UAAUA,EAAEA,cAAcA;wBAC1BA,UAAUA,EAAEA,UAAUA,CAACA,KAAKA,KAAKA,CAACA;qBACrCA,CAACA;gBAENA,IAAIA,WAAWA,GAAGA,IAAIA,CAACA,MAAMA,CAACA,YAAYA,CAACA,YAAYA,CAACA,gBAAgBA,IAAIA,CAACA,CAACA,CAACA;gBAC/EA,IAAIA,cAAcA,GAAGA,IAAIA,CAACA,SAASA,CAACA,YAAYA,CAACA,KAAKA,EAAEA,WAAWA,EAAEA,WAAWA,CAACA,sBAAsBA,CAACA,CAACA;gBAEzGA,EAAEA,CAACA,CAACA,WAAWA,CAACA,oBAAoBA,CAACA,WAAWA,CAACA,GAAGA,EAAEA,cAAcA,CAACA,CAACA;oBAClEA,MAAMA,CAACA;wBACHA,UAAUA,EAAEA,WAAWA,CAACA,YAAYA,CAACA,WAAWA,CAACA,GAAGA,EAAEA,YAAYA,CAACA,KAAKA,CAACA;wBACzEA,UAAUA,EAAEA,cAAcA;wBAC1BA,UAAUA,EAAEA,UAAUA,CAACA,KAAKA,KAAKA,CAACA;qBACrCA,CAACA;gBAENA,MAAMA,CAACA;oBACHA,WAAWA,EAAEA,cAAcA;oBAC3BA,UAAUA,EAAEA,cAAcA;oBAC1BA,UAAUA,EAAEA,UAAUA,CAACA,KAAKA,KAAKA,CAACA;iBACrCA,CAACA;YACNA,CAACA;YAEDjB;;eAEGA;YACIA,4CAASA,GAAhBA,UAAiBA,QAAgBA,EAAEA,WAAmBA;gBAClDkB,KAAKA,CAACA,MAAMA,CAACA,QAAQA,IAAIA,CAACA,EAAEA,UAAUA,CAACA,CAACA;gBACxCA,KAAKA,CAACA,MAAMA,CAACA,WAAWA,IAAIA,CAACA,EAAEA,aAAaA,CAACA,CAACA;gBAE9CA,IAAIA,YAAYA,GAAGA,IAAIA,CAACA,eAAeA,CAACA,MAAMA,CAACA;gBAC/CA,IAAIA,SAASA,GAAGA,IAAIA,CAACA,YAAYA,CAACA,MAAMA,CAACA;gBAEzCA,EAAEA,CAACA,CAACA,WAAWA,KAAKA,YAAYA,CAACA,MAAMA,GAAGA,CAACA,IAAIA,YAAYA,CAACA,MAAMA,KAAKA,CAACA,CAACA,CAACA,CAACA;oBACvEA,IAAIA,WAAWA,GAAGA,SAASA,CAACA,QAAQA,CAACA,CAACA;oBACtCA,EAAEA,CAACA,CAACA,WAAWA,CAACA;wBACZA,MAAMA,CAACA;4BACHA,QAAQA,EAAEA,WAAWA,CAACA,OAAOA,CAACA,CAACA,CAACA;4BAChCA,kBAAkBA,EAAEA,IAAIA;4BACxBA,eAAeA,EAAEA,QAAQA,KAAKA,SAASA,CAACA,MAAMA,GAAGA,CAACA;yBACrDA,CAACA;gBACVA,CAACA;gBAEDA,EAAEA,CAACA,CAACA,QAAQA,KAAKA,SAASA,CAACA,MAAMA,GAAGA,CAACA,CAACA,CAACA,CAACA;oBACpCA,IAAIA,WAAWA,GAAGA,YAAYA,CAACA,WAAWA,CAACA,CAACA;oBAC5CA,EAAEA,CAACA,CAACA,WAAWA,CAACA;wBACZA,MAAMA,CAACA;4BACHA,QAAQA,EAAEA,WAAWA,CAACA,OAAOA,CAACA,CAACA,CAACA;4BAChCA,kBAAkBA,EAAEA,KAAKA;4BACzBA,eAAeA,EAAEA,IAAIA;yBACxBA,CAACA;gBACVA,CAACA;gBAEDA,MAAMA,CAACA;oBACHA,QAAQA,EAAEA,IAAIA;oBACdA,kBAAkBA,EAAEA,KAAKA;oBACzBA,eAAeA,EAAEA,KAAKA;iBACzBA,CAACA;YACNA,CAACA;YAEMlB,mDAAgBA,GAAvBA,UAAwBA,KAAuBA,EAAEA,KAAuBA;gBACpEmB,MAAMA,CAACA,CAACA,KAAKA,KAAKA,KAAKA,CAACA,CAACA;YAC7BA,CAACA;YAEMnB,qDAAkBA,GAAzBA,UAA0BA,KAA2BA,EAAEA,KAA2BA;gBAC9EoB,MAAMA,CAACA,CAACA,KAAKA,KAAKA,KAAKA,CAACA,CAACA;YAC7BA,CAACA;YAEMpB,uDAAoBA,GAA3BA,UAA4BA,KAAUA,EAAEA,KAAUA;gBAC9CqB,MAAMA,CAACA,CAACA,KAAKA,KAAKA,KAAKA,CAACA,CAACA;YAC7BA,CAACA;YAEMrB,2DAAwBA,GAA/BA;gBACIsB,MAAMA,CAACA,IAAIA,CAACA,eAAeA,CAACA;YAChCA,CAACA;YAEMtB,wDAAqBA,GAA5BA;gBACIuB,MAAMA,CAACA,IAAIA,CAACA,YAAYA,CAACA;YAC7BA,CAACA;YAEDvB;;eAEGA;YACIA,yCAAMA,GAAbA,UAAcA,cAA+BA,EAAEA,aAA6BA;gBAA7BwB,6BAA6BA,GAA7BA,oBAA6BA;gBACxEA,EAAEA,CAACA,CAACA,cAAcA,CAACA,CAACA,CAACA;oBACjBA,IAAIA,CAACA,MAAMA,GAAGA,cAAcA,CAACA;oBAC7BA,IAAIA,CAACA,YAAYA,GAAGA,wBAAwBA,CAACA,mBAAmBA,CAACA,cAAcA,CAACA,IAAIA,CAACA,CAACA;oBACtFA,EAAEA,CAACA,CAACA,aAAaA,CAACA;wBACdA,IAAIA,CAACA,eAAeA,GAAGA,wBAAwBA,CAACA,mBAAmBA,CAACA,cAAcA,CAACA,OAAOA,CAACA,CAACA;gBACpGA,CAACA;gBACDA,IAAIA,CAACA,eAAeA,CAACA,IAAIA,CAACA,YAAYA,CAACA,CAACA;gBACxCA,EAAEA,CAACA,CAACA,aAAaA,CAACA,CAACA,CAACA;oBAChBA,IAAIA,CAACA,eAAeA,CAACA,IAAIA,CAACA,eAAeA,CAACA,CAACA;oBAC3CA,wBAAwBA,CAACA,yBAAyBA,CAACA,IAAIA,CAACA,eAAeA,CAACA,CAACA;gBAC7EA,CAACA;YACLA,CAACA;YAEcxB,4CAAmBA,GAAlCA,UAAmCA,SAA4BA;gBAC3DyB,IAAIA,eAAeA,GAAGA,iBAASA,CAACA,OAAOA,CAAkBA,SAASA,CAACA,CAACA;gBACpEA,eAAeA,CAACA,SAASA,GAAGA,EAAEA,CAACA;gBAE/BA,MAAMA,CAACA,eAAeA,CAACA;YAC3BA,CAACA;YAEOzB,kDAAeA,GAAvBA,UAAwBA,SAA0BA;gBAC9C0B,EAAEA,CAACA,CAACA,SAASA,CAACA,SAASA,CAACA,MAAMA,GAAGA,CAACA,CAACA;oBAC/BA,SAASA,CAACA,SAASA,CAACA,MAAMA,GAAGA,CAACA,CAACA;gBAEnCA,EAAEA,CAACA,CAACA,SAASA,CAACA,IAAIA,CAACA,QAAQA,CAACA;oBACxBA,IAAIA,CAACA,eAAeA,CAACA,SAASA,EAAEA,SAASA,CAACA,IAAIA,CAACA,QAAQA,EAAEA,IAAIA,EAAEA,SAASA,CAACA,SAASA,CAACA,CAACA;YAC5FA,CAACA;YAEO1B,kDAAeA,GAAvBA,UAAwBA,SAA0BA,EAAEA,KAAyBA,EAAEA,MAAwBA,EAAEA,KAAyBA;gBAC9H2B,IAAIA,KAA6BA,CAACA;gBAClCA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,IAAIA,GAAGA,KAAKA,CAACA,MAAMA,EAAEA,CAACA,GAAGA,IAAIA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;oBACjDA,IAAIA,IAAIA,GAAGA,KAAKA,CAACA,CAACA,CAACA,CAACA;oBACpBA,EAAEA,CAACA,CAACA,MAAMA,CAACA;wBACPA,IAAIA,CAACA,MAAMA,GAAGA,MAAMA,CAACA;oBAEzBA,EAAEA,CAACA,CAACA,CAACA,KAAKA,CAACA;wBACPA,KAAKA,GAAGA,SAASA,CAACA,MAAMA,CAACA,IAAIA,CAACA,KAAKA,CAACA,CAACA;oBAEzCA,EAAEA,CAACA,CAACA,KAAKA,CAACA,CAACA,CAACA;wBACRA,IAAIA,MAAMA,GAAGA,KAAKA,CAACA,OAAOA,CAACA,IAAIA,CAACA,gBAAgBA,GAAGA,IAAIA,CAACA,gBAAgBA,GAAGA,CAACA,CAACA,CAACA;wBAC9EA,IAAIA,YAAYA,GAAGA,sBAAcA,CAACA,eAAeA,CAACA,MAAMA,EAAEA,WAAWA,CAACA,sBAAsBA,CAACA,CAACA;wBAC9FA,EAAEA,CAACA,CAACA,YAAYA,CAACA;4BACbA,IAAIA,CAACA,IAAIA,GAAGA,IAAIA,CAACA,SAASA,CAACA,IAAIA,CAACA,KAAKA,EAAEA,MAAMA,EAAEA,WAAWA,CAACA,sBAAsBA,CAACA,CAACA;wBACvFA,IAAIA,CAACA,SAASA,GAAGA,MAAMA,CAACA,SAASA,CAACA;oBACtCA,CAACA;oBAEDA,IAAIA,CAACA,KAAKA,GAAGA,CAACA,CAACA;oBACfA,EAAEA,CAACA,CAACA,IAAIA,CAACA,QAAQA,IAAIA,IAAIA,CAACA,QAAQA,CAACA,MAAMA,GAAGA,CAACA,CAACA,CAACA,CAACA;wBAC5CA,IAAIA,CAACA,eAAeA,CAACA,SAASA,EAAEA,IAAIA,CAACA,QAAQA,EAAEA,IAAIA,EAAEA,KAAKA,CAACA,CAACA;oBAChEA,CAACA;oBACDA,IAAIA,CAACA,CAACA;wBACFA,IAAIA,CAACA,SAASA,GAAGA,KAAKA,CAACA,MAAMA,CAACA;wBAC9BA,KAAKA,CAACA,IAAIA,CAACA,IAAIA,CAACA,CAACA;oBACrBA,CAACA;gBACLA,CAACA;YACLA,CAACA;YAEc3B,kDAAyBA,GAAxCA,UAAyCA,eAAgCA;gBACrE4B,IAAIA,eAAeA,GAAGA,eAAeA,CAACA,SAASA,CAACA;gBAChDA,EAAEA,CAACA,CAACA,eAAeA,IAAIA,eAAeA,CAACA,MAAMA,GAAGA,CAACA,CAACA,CAACA,CAACA;oBAChDA,IAAIA,iBAAiBA,GAAGA,eAAeA,CAACA,MAAMA,CAACA,eAAeA,CAACA,CAACA,CAACA,CAACA,KAAKA,CAACA,CAACA,OAAOA,CAACA;oBAEjFA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,IAAIA,GAAGA,eAAeA,CAACA,MAAMA,EAAEA,CAACA,GAAGA,IAAIA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;wBAC3DA,IAAIA,cAAcA,GAAGA,eAAeA,CAACA,CAACA,CAACA,CAACA;wBAExCA,yDAAyDA;wBACzDA,EAAEA,CAACA,CAACA,CAACA,cAAcA,CAACA,QAAQA,IAAIA,cAAcA,CAACA,KAAKA,KAAKA,SAASA,CAACA,CAACA,CAACA;4BACjEA,yIAAyIA;4BACzIA,IAAIA,MAAMA,GAAGA,iBAAiBA,CAACA,cAAcA,CAACA,gBAAgBA,GAAGA,cAAcA,CAACA,gBAAgBA,GAAGA,CAACA,CAACA,CAACA;4BACtGA,EAAEA,CAACA,CAACA,MAAMA,CAACA;gCACPA,cAAcA,CAACA,IAAIA,GAAGA,MAAMA,CAACA,WAAWA,CAACA;wBACjDA,CAACA;oBACLA,CAACA;gBACLA,CAACA;YACLA,CAACA;YAEO5B,qDAAkBA,GAA1BA,UAA2BA,SAA6BA;gBACpD6B,IAAIA,qBAAqBA,GAAGA,IAAIA,CAACA,YAAYA,CAACA,IAAIA,CAACA,QAAQA,CAACA;gBAC5DA,EAAEA,CAACA,CAACA,qBAAqBA,IAAIA,SAASA,KAAKA,qBAAqBA,CAACA;oBAC7DA,MAAMA,CAACA,IAAIA,CAACA,YAAYA,CAACA;gBAE7BA,IAAIA,wBAAwBA,GAAGA,IAAIA,CAACA,eAAeA,CAACA,IAAIA,CAACA,QAAQA,CAACA;gBAClEA,EAAEA,CAACA,CAACA,wBAAwBA,IAAIA,SAASA,KAAKA,wBAAwBA,CAACA;oBACnEA,MAAMA,CAACA,IAAIA,CAACA,eAAeA,CAACA;gBAEhCA,MAAMA,CAACA,IAAIA,CAACA;YAChBA,CAACA;YACL7B,+BAACA;QAADA,CAlVAvoF,AAkVCuoF,IAAAvoF;QAQDA;YAgBIqqF,sBAAYA,kBAA6CA,EAAEA,OAA4BA;gBAEnFC,6EAA6EA;gBAC7EA,mEAAmEA;gBACnEA,IAAIA,CAACA,kBAAkBA,GAAGA,kBAAkBA,CAACA;gBAC7CA,IAAIA,CAACA,OAAOA,GAAGA,OAAOA,CAACA;YAC3BA,CAACA;YAEMD,wCAAiBA,GAAxBA,UAAyBA,oBAAgDA;gBACrEE,IAAIA,CAACA,oBAAoBA,GAAGA,oBAAoBA,CAACA;YACrDA,CAACA;YAEMF,+CAAwBA,GAA/BA,UAAgCA,IAA0BA;gBACtDG,EAAEA,CAACA,CAACA,IAAIA,CAACA,oBAAoBA,CAACA,OAAOA,CAACA,cAAcA,CAACA;oBACjDA,IAAIA,CAACA,SAASA,CAACA,kBAAkBA,CAACA,IAAIA,CAACA,oBAAoBA,CAACA,OAAOA,CAACA,cAAcA,EAAEA,IAAIA,CAACA,oBAAoBA,CAACA,OAAOA,CAACA,eAAeA,CAACA,CAACA;YAC/IA,CAACA;YAEMH,2CAAoBA,GAA3BA,UAA4BA,IAA0BA,EAAEA,SAAiBA,EAAEA,eAAeA,EAAEA,OAAeA,EAAEA,aAAqBA,EAAEA,YAAoBA;gBACpJI,EAAEA,CAACA,CAACA,SAASA,KAAKA,EAAEA,CAACA;oBACjBA,IAAIA,CAACA,SAASA,CAACA,YAAYA,CAACA,SAASA,CAACA,CAACA;gBAC3CA,EAAEA,CAACA,CAACA,eAAeA,CAACA;oBAChBA,IAAIA,CAACA,SAASA,CAACA,kBAAkBA,CAACA,eAAeA,CAACA,CAACA;gBAEvDA,IAAIA,WAAWA,GAAGA,wBAAgBA,CAACA,wBAAwBA,CAACA,OAAOA,EAAEA,aAAaA,CAACA,CAACA;gBACpFA,IAAIA,YAAYA,GAAGA,wBAAgBA,CAACA,cAAcA,CAACA,OAAOA,EAAEA,aAAaA,CAACA,CAACA;gBAC3EA,IAAIA,CAACA,SAASA,CAACA,UAAUA,CAACA,WAAWA,EAAEA,YAAYA,EAAEA,YAAYA,CAACA,CAACA;YACvEA,CAACA;YAEMJ,8CAAuBA,GAA9BA;YACAK,CAACA;YAEML,4CAAqBA,GAA5BA;YACAM,CAACA;YAEDN;;eAEGA;YACIA,oCAAaA,GAApBA,UAAqBA,IAAsBA,EAAEA,IAA0BA;gBACnEO,IAAIA,YAAoBA,CAACA;gBAEzBA,IAAIA,MAAMA,GAAGA,IAAIA,CAACA,kBAAkBA,IAAIA,IAAIA,CAACA,kBAAkBA,CAACA,MAAMA,CAACA,IAAIA,CAACA,CAACA;gBAC7EA,EAAEA,CAACA,CAACA,MAAMA,CAACA,CAACA,CAACA;oBACTA,EAAEA,CAACA,CAACA,CAACA,IAAIA,CAACA,QAAQA,CAACA,CAACA,CAACA;wBACjBA,EAAEA,CAACA,CAACA,IAAIA,CAACA,KAAKA,KAAKA,CAACA,CAACA;4BACjBA,YAAYA,GAAGA,YAAYA,CAACA,oCAAoCA,CAACA;wBACrEA,IAAIA;4BACAA,YAAYA,GAAGA,YAAYA,CAACA,4BAA4BA,CAACA;oBACjEA,CAACA;oBACDA,IAAIA,CAACA,CAACA;wBACFA,YAAYA,GAAGA,YAAYA,CAACA,sBAAsBA,CAACA;oBACvDA,CAACA;gBACLA,CAACA;gBACDA,IAAIA;oBACAA,YAAYA,GAAGA,YAAYA,CAACA,eAAeA,CAACA;gBAEhDA,EAAEA,CAACA,CAACA,IAAIA,CAACA,UAAUA,CAACA;oBAChBA,YAAYA,IAAIA,GAAGA,GAAGA,YAAYA,CAACA,cAAcA,CAACA;gBAEtDA,IAAIA,CAACA,SAASA,CAACA,iBAAiBA,CAACA,YAAYA,CAACA,CAACA;gBAE/CA,IAAIA,CAACA,UAAUA,CAACA,IAAIA,EAAEA,IAAIA,EAAEA,IAAIA,CAACA,oBAAoBA,CAACA,IAAIA,CAACA,CAACA,CAACA;gBAE7DA,EAAEA,CAACA,CAACA,IAAIA,CAACA,OAAOA,CAACA,eAAeA,CAACA;oBAC7BA,IAAIA,CAACA,OAAOA,CAACA,eAAeA,CAACA,IAAIA,CAACA,CAACA;gBAEvCA,EAAEA,CAACA,CAACA,IAAIA,CAACA,oBAAoBA,CAACA,CAACA,CAACA;oBAC5BA,IAAIA,SAASA,GAAGA,IAAIA,CAACA,UAAUA,GAAGA,IAAIA,CAACA,oBAAoBA,CAACA,MAAMA,CAACA,SAASA,GAAGA,IAAIA,CAACA,oBAAoBA,CAACA,IAAIA,CAACA,SAASA,CAACA;oBACxHA,IAAIA,eAAeA,GAAGA,IAAIA,CAACA,UAAUA,GAAGA,IAAIA,CAACA,oBAAoBA,CAACA,MAAMA,CAACA,eAAeA,GAAGA,IAAIA,CAACA,oBAAoBA,CAACA,IAAIA,CAACA,eAAeA,CAACA;oBAC1IA,IAAIA,YAAYA,GAAGA,IAAIA,CAACA,UAAUA,GAAGA,IAAIA,CAACA,oBAAoBA,CAACA,MAAMA,CAACA,OAAOA,GAAGA,IAAIA,CAACA,oBAAoBA,CAACA,IAAIA,CAACA,OAAOA,CAACA;oBAEvHA,IAAIA,CAACA,oBAAoBA,CAACA,IAAIA,EAAEA,SAASA,EAAEA,eAAeA,EAAEA,YAAYA,EAAEA,IAAIA,CAACA,oBAAoBA,CAACA,OAAOA,CAACA,aAAaA,EAAEA,IAAIA,CAACA,oBAAoBA,CAACA,OAAOA,CAACA,YAAYA,CAACA,CAACA;oBAE3KA,EAAEA,CAACA,CAACA,IAAIA,CAACA,oBAAoBA,CAACA,IAAIA,CAACA,cAAcA,CAACA;wBAC9CA,IAAIA,CAACA,SAASA,CAACA,eAAeA,EAAEA,CAACA;oBAErCA,+BAA+BA;oBAC/BA,EAAEA,CAACA,CAACA,IAAIA,CAACA,UAAUA,CAACA;wBAChBA,IAAIA,CAACA,SAASA,CAACA,eAAeA,CAACA,IAAIA,CAACA,oBAAoBA,CAACA,MAAMA,CAACA,YAAYA,CAACA,CAACA;gBACtFA,CAACA;YACLA,CAACA;YAEMP,sCAAeA,GAAtBA,UAAuBA,IAASA,EAAEA,IAA0BA;gBACxDQ,IAAIA,CAACA,SAASA,CAACA,mBAAmBA,EAAEA,CAACA;gBACrCA,IAAIA,CAACA,SAASA,CAACA,mBAAmBA,EAAEA,CAACA;gBACrCA,gBAAQA,CAACA,gBAAgBA,CAACA,aAAaA,CAACA,IAAIA,CAACA,SAASA,CAACA,WAAWA,CAACA,CAACA;YACxEA,CAACA;YAEDR;;eAEGA;YACIA,uCAAgBA,GAAvBA,UAAwBA,IAAsBA,EAAEA,IAA0BA;gBACtES,IAAIA,YAAoBA,CAACA;gBACzBA,IAAIA,mBAAmBA,GAAGA,KAAKA,CAACA;gBAEhCA,IAAIA,MAAMA,GAAGA,IAAIA,CAACA,kBAAkBA,IAAIA,IAAIA,CAACA,kBAAkBA,CAACA,MAAMA,CAACA,IAAIA,CAACA,CAACA;gBAC7EA,EAAEA,CAACA,CAACA,MAAMA,CAACA,CAACA,CAACA;oBACTA,YAAYA,GAAGA,YAAYA,CAACA,yBAAyBA,CAACA;oBAEtDA,IAAIA,4BAA4BA,GAAGA,IAAIA,CAACA,+BAA+BA,CAACA,IAAIA,CAACA,CAACA;oBAC9EA,EAAEA,CAACA,CAACA,4BAA4BA,CAACA,CAACA,CAACA;wBAC/BA,IAAIA,CAACA,gCAAgCA,CAACA,4BAA4BA,EAAEA,IAAIA,CAACA,CAACA;oBAC9EA,CAACA;oBAEDA,6HAA6HA;oBAC7HA,EAAEA,CAACA,CAACA,IAAIA,CAACA,UAAUA,IAAIA,IAAIA,CAACA,MAAMA,IAAIA,IAAIA,CAACA,MAAMA,CAACA,QAAQA,CAACA,MAAMA,GAAGA,CAACA,IAAuBA,IAAIA,CAACA,MAAMA,CAACA,QAAQA,CAACA,CAACA,CAAEA,CAACA,UAAUA,CAACA;wBAC5HA,mBAAmBA,GAAGA,IAAIA,CAACA;gBACnCA,CAACA;gBACDA,IAAIA,CAACA,CAACA;oBACFA,YAAYA,GAAGA,YAAYA,CAACA,eAAeA,CAACA;gBAChDA,CAACA;gBAEDA,EAAEA,CAACA,CAACA,IAAIA,CAACA,UAAUA,CAACA;oBAChBA,YAAYA,IAAIA,GAAGA,GAAGA,YAAYA,CAACA,cAAcA,CAACA;gBAEtDA,YAAYA,IAAIA,GAAGA,GAAGA,YAAYA,CAACA,oBAAoBA,CAACA;gBACxDA,IAAIA,CAACA,SAASA,CAACA,iBAAiBA,CAACA,YAAYA,CAACA,CAACA;gBAE/CA,EAAEA,CAACA,CAACA,IAAIA,CAACA,oBAAoBA,CAACA,CAACA,CAACA;oBAC5BA,IAAIA,CAACA,oBAAoBA,CAACA,IAAIA,EAAEA,IAAIA,CAACA,oBAAoBA,CAACA,MAAMA,CAACA,SAASA,EAAEA,IAAIA,CAACA,oBAAoBA,CAACA,MAAMA,CAACA,eAAeA,EAAEA,IAAIA,CAACA,oBAAoBA,CAACA,MAAMA,CAACA,OAAOA,EAAEA,IAAIA,CAACA,oBAAoBA,CAACA,OAAOA,CAACA,aAAaA,EAAEA,IAAIA,CAACA,oBAAoBA,CAACA,OAAOA,CAACA,YAAYA,CAACA,CAACA;oBACzQA,IAAIA,CAACA,wBAAwBA,CAACA,IAAIA,CAACA,CAACA;gBACxCA,CAACA;gBAEDA,IAAIA,CAACA,SAASA,CAACA,iBAAiBA,EAAEA,CAACA;gBACnCA,IAAIA,CAACA,UAAUA,CAACA,IAAIA,EAAEA,IAAIA,EAAEA,IAAIA,CAACA,uBAAuBA,CAACA,IAAIA,CAACA,EAAEA,mBAAmBA,CAACA,CAACA;YACzFA,CAACA;YAEMT,yCAAkBA,GAAzBA,UAA0BA,IAAsBA,EAAEA,IAA0BA;gBACxEU,IAAIA,CAACA,SAASA,CAACA,mBAAmBA,EAAEA,CAACA;gBACrCA,IAAIA,CAACA,SAASA,CAACA,mBAAmBA,EAAEA,CAACA;gBAErCA,IAAIA,4BAA4BA,GAAGA,IAAIA,CAACA,+BAA+BA,CAACA,IAAIA,CAACA,CAACA;gBAC9EA,EAAEA,CAACA,CAACA,4BAA4BA,CAACA,CAACA,CAACA;oBAC/BA,IAAIA,CAACA,kCAAkCA,CAACA,IAAIA,CAACA,CAACA;gBAClDA,CAACA;YACLA,CAACA;YAEDV;;eAEGA;YACIA,mCAAYA,GAAnBA,UAAoBA,IAA0BA,EAAEA,IAA0BA;gBACtEW,IAAIA,YAAYA,GAAGA,YAAYA,CAACA,iBAAiBA,CAACA;gBAElDA,EAAEA,CAACA,CAACA,IAAIA,CAACA,UAAUA,CAACA;oBAChBA,YAAYA,IAAIA,GAAGA,GAAGA,YAAYA,CAACA,cAAcA,CAACA;gBAEtDA,IAAIA,CAACA,SAASA,CAACA,iBAAiBA,CAACA,YAAYA,CAACA,CAACA;gBAE/CA,EAAEA,CAACA,CAACA,IAAIA,CAACA,WAAWA,CAACA,CAACA,CAACA;oBACnBA,IAAIA,CAACA,SAASA,CAACA,iBAAiBA,CAACA,IAAIA,CAACA,WAAWA,CAACA,CAACA;gBACvDA,CAACA;gBACDA,IAAIA,CAACA,EAAEA,CAACA,CAACA,CAACA,CAACA,CAACA,OAAOA,CAACA,IAAIA,CAACA,UAAUA,CAACA,CAACA;oBACjCA,CAACA,CAACA,IAAIA,CAACA,SAASA,CAACA,WAAWA,CAACA,CAACA,MAAMA,CAACA,IAAIA,CAACA,UAAUA,CAACA,CAACA;gBAE1DA,EAAEA,CAACA,CAACA,IAAIA,CAACA,oBAAoBA,CAACA,CAACA,CAACA;oBAC5BA,IAAIA,YAAYA,GAAGA,IAAIA,CAACA,UAAUA,GAAGA,IAAIA,CAACA,oBAAoBA,CAACA,MAAMA,CAACA,OAAOA,GAAGA,IAAIA,CAACA,UAAUA,GAAGA,IAAIA,CAACA,oBAAoBA,CAACA,MAAMA,CAACA,OAAOA,GAAGA,MAAMA,CAACA;oBACpJA,IAAIA,SAASA,GAAGA,IAAIA,CAACA,UAAUA,GAAGA,IAAIA,CAACA,oBAAoBA,CAACA,MAAMA,CAACA,SAASA,GAAGA,IAAIA,CAACA,oBAAoBA,CAACA,MAAMA,CAACA,SAASA,CAACA;oBAC1HA,IAAIA,eAAeA,GAAGA,IAAIA,CAACA,UAAUA,GAAGA,IAAIA,CAACA,oBAAoBA,CAACA,MAAMA,CAACA,eAAeA,GAAGA,IAAIA,CAACA,oBAAoBA,CAACA,MAAMA,CAACA,eAAeA,CAACA;oBAE5IA,IAAIA,CAACA,oBAAoBA,CAACA,IAAIA,EAAEA,SAASA,EAAEA,eAAeA,EAAEA,YAAYA,EAAEA,IAAIA,CAACA,oBAAoBA,CAACA,OAAOA,CAACA,aAAaA,EAAEA,IAAIA,CAACA,oBAAoBA,CAACA,OAAOA,CAACA,YAAYA,CAACA,CAACA;oBAC3KA,+BAA+BA;oBAC/BA,EAAEA,CAACA,CAACA,IAAIA,CAACA,UAAUA,CAACA;wBAChBA,IAAIA,CAACA,SAASA,CAACA,eAAeA,CAACA,IAAIA,CAACA,oBAAoBA,CAACA,MAAMA,CAACA,YAAYA,CAACA,CAACA;oBAElFA,EAAEA,CAACA,CAACA,IAAIA,CAACA,oBAAoBA,CAACA,IAAIA,CAACA,cAAcA,CAACA;wBAC9CA,IAAIA,CAACA,SAASA,CAACA,eAAeA,EAAEA,CAACA;oBAErCA,IAAIA,CAACA,wBAAwBA,CAACA,IAAIA,CAACA,CAACA;gBACxCA,CAACA;YACLA,CAACA;YAEMX,qCAAcA,GAArBA,UAAsBA,IAA0BA,EAAEA,IAA0BA;gBACxEY,IAAIA,CAACA,SAASA,CAACA,mBAAmBA,EAAEA,CAACA;gBACrCA,IAAIA,CAACA,SAASA,CAACA,mBAAmBA,EAAEA,CAACA;YACzCA,CAACA;YAEOZ,uDAAgCA,GAAxCA,UAAyCA,cAAsCA,EAAEA,IAA0BA;gBAA3Ga,iBAOCA;gBANGA,EAAEA,CAACA,CAACA,IAAIA,CAACA,OAAOA,CAACA,mBAAmBA,CAACA,CAACA,CAACA;oBACnCA,IAAIA,OAAOA,GAAGA,UAACA,CAAaA;wBACxBA,KAAIA,CAACA,OAAOA,CAACA,mBAAmBA,CAACA,cAAcA,CAACA,SAASA,GAAGA,cAAcA,CAACA,SAASA,GAAGA,cAAcA,CAACA,WAAWA,CAACA,CAACA;oBACvHA,CAACA,CAACA;oBACFA,IAAIA,CAACA,SAASA,CAACA,oBAAoBA,CAACA,OAAOA,CAACA,CAACA;gBACjDA,CAACA;YACLA,CAACA;YAEOb,yDAAkCA,GAA1CA,UAA2CA,IAA0BA;gBACjEc,EAAEA,CAACA,CAACA,IAAIA,CAACA,OAAOA,CAACA,mBAAmBA,CAACA,CAACA,CAACA;oBACnCA,IAAIA,CAACA,SAASA,CAACA,sBAAsBA,EAAEA,CAACA;gBAC5CA,CAACA;YACLA,CAACA;YAEDd;;eAEGA;YACIA,qCAAcA,GAArBA,UAAsBA,IAAsBA,EAAEA,IAA0BA;gBACpEe,IAAIA,YAAoBA,CAACA;gBAEzBA,EAAEA,CAACA,CAACA,IAAIA,CAACA,kBAAkBA,CAACA,CAACA,CAACA;oBAC1BA,YAAYA,GAAGA,YAAYA,CAACA,yBAAyBA,CAACA;oBACtDA,IAAIA,oBAAoBA,GAAGA,IAAIA,CAACA,+BAA+BA,CAACA,IAAIA,CAACA,CAACA;oBACtEA,EAAEA,CAACA,CAACA,oBAAoBA,CAACA;wBACrBA,IAAIA,CAACA,gCAAgCA,CAACA,oBAAoBA,EAAEA,IAAIA,CAACA,CAACA;gBAC1EA,CAACA;gBAEDA,EAAEA,CAACA,CAACA,IAAIA,CAACA,eAAeA,CAACA,CAACA,CAACA;oBACvBA,EAAEA,CAACA,CAACA,YAAYA,CAACA;wBACbA,YAAYA,IAAIA,GAAGA,CAACA;oBACxBA,IAAIA;wBACAA,YAAYA,GAAGA,EAAEA,CAACA;oBAEtBA,YAAYA,IAAIA,YAAYA,CAACA,sBAAsBA,CAACA;gBACxDA,CAACA;gBAEDA,EAAEA,CAACA,CAACA,YAAYA,CAACA;oBACbA,IAAIA,CAACA,SAASA,CAACA,iBAAiBA,CAACA,YAAYA,CAACA,CAACA;gBACnDA,IAAIA;oBACAA,IAAIA,CAACA,SAASA,CAACA,iBAAiBA,CAACA,YAAYA,CAACA,eAAeA,CAACA,CAACA;gBAEnEA,IAAIA,CAACA,SAASA,CAACA,iBAAiBA,EAAEA,CAACA;gBAEnCA,IAAIA,QAAQA,GAAGA,IAAIA,CAACA,QAAQA,GAAGA,IAAIA,CAACA,QAAQA,CAACA,WAAWA,GAAGA,EAAEA,CAACA;gBAC9DA,IAAIA,CAACA,SAASA,CAACA,iBAAiBA,CAACA,QAAQA,CAACA,CAACA;gBAE3CA,EAAEA,CAACA,CAACA,IAAIA,CAACA,oBAAoBA,CAACA,CAACA,CAACA;oBAC5BA,IAAIA,CAACA,oBAAoBA,CAACA,IAAIA,EAAEA,IAAIA,CAACA,oBAAoBA,CAACA,MAAMA,CAACA,SAASA,EAAEA,IAAIA,CAACA,oBAAoBA,CAACA,MAAMA,CAACA,eAAeA,EAAEA,IAAIA,CAACA,oBAAoBA,CAACA,MAAMA,CAACA,OAAOA,EAAEA,IAAIA,CAACA,oBAAoBA,CAACA,OAAOA,CAACA,aAAaA,EAAEA,IAAIA,CAACA,oBAAoBA,CAACA,OAAOA,CAACA,YAAYA,CAACA,CAACA;gBAC7QA,CAACA;YACLA,CAACA;YAEMf,uCAAgBA,GAAvBA,UAAwBA,IAAsBA,EAAEA,IAA0BA;gBACtEgB,IAAIA,CAACA,SAASA,CAACA,mBAAmBA,EAAEA,CAACA;gBACrCA,IAAIA,CAACA,SAASA,CAACA,mBAAmBA,EAAEA,CAACA;gBAErCA,EAAEA,CAACA,CAACA,IAAIA,CAACA,kBAAkBA,CAACA,CAACA,CAACA;oBAC1BA,IAAIA,CAACA,kCAAkCA,CAACA,IAAIA,CAACA,CAACA;gBAClDA,CAACA;YACLA,CAACA;YAEMhB,+CAAwBA,GAA/BA,UAAgCA,IAA0BA;YAC1DiB,CAACA;YAEMjB,iDAA0BA,GAAjCA,UAAkCA,IAA0BA;YAC5DkB,CAACA;YAEMlB,+CAAwBA,GAA/BA,UAAgCA,IAA0BA;YAC1DmB,CAACA;YAEMnB,iDAA0BA,GAAjCA,UAAkCA,IAA0BA;YAC5DoB,CAACA;YAEDpB;;eAEGA;YACIA,qCAAcA,GAArBA,UAAsBA,IAAsBA;gBACxCqB,MAAMA,CAACA,YAAYA,CAACA,YAAYA,CAACA,IAAIA,CAACA,CAACA;YAC3CA,CAACA;YAEMrB,qCAAcA,GAArBA,UAAsBA,IAA0BA;gBAC5CsB,MAAMA,CAACA,IAAIA,CAACA,WAAWA,IAAIA,EAAEA,CAACA;YAClCA,CAACA;YAEMtB,mCAAYA,GAAnBA;gBACIuB,uEAAuEA;gBACvEA,IAAIA,QAAQA,GAAGA,IAAIA,CAACA,kBAAkBA,CAACA,iBAAiBA,EAAEA,CAACA;gBAE3DA,EAAEA,CAACA,CAACA,CAACA,QAAQA,IAAIA,CAACA,QAAQA,CAACA,IAAIA,IAAIA,CAACA,QAAQA,CAACA,IAAIA,CAACA,MAAMA,IAAIA,QAAQA,CAACA,IAAIA,CAACA,MAAMA,CAACA,MAAMA,KAAKA,CAACA,CAACA;oBAC1FA,MAAMA,CAACA,KAAKA,CAACA;gBAEjBA,MAAMA,CAACA,IAAIA,CAACA;YAChBA,CAACA;YAEcvB,yBAAYA,GAA3BA,UAA4BA,IAAsBA;gBAC9CwB,yBAAyBA;gBACzBA,EAAEA,CAACA,CAACA,IAAIA,CAACA,IAAIA,CAACA;oBACVA,MAAMA,CAACA,IAAIA,CAACA,IAAIA,CAACA;gBAErBA,2CAA2CA;gBAC3CA,EAAEA,CAACA,CAACA,IAAIA,CAACA,KAAKA,IAAIA,IAAIA,CAACA;oBACnBA,MAAMA,CAACA,IAAIA,CAACA,KAAKA,CAACA,QAAQA,EAAEA,CAACA;gBAEjCA,MAAMA,CAACA,EAAEA,CAACA;YACdA,CAACA;YAEOxB,iCAAUA,GAAlBA,UAAmBA,IAAsBA,EAAEA,IAA0BA,EAAEA,QAAgCA,EAAEA,sBAAgCA;gBACrIyB,EAAEA,CAACA,CAACA,IAAIA,CAACA,UAAUA,IAAIA,CAACA,sBAAsBA,CAACA,CAACA,CAACA;oBAC7CA,IAAIA,CAACA,SAASA,CAACA,iBAAiBA,CAACA,IAAIA,CAACA,OAAOA,CAACA,UAAUA,CAACA,CAACA;oBAC1DA,MAAMA,CAACA;gBACXA,CAACA;gBAEDA,IAAIA,KAAKA,GAAGA,YAAYA,CAACA,YAAYA,CAACA,IAAIA,CAACA,CAACA;gBAC5CA,EAAEA,CAACA,CAACA,CAACA,KAAKA,CAACA,CAACA,CAACA;oBACTA,8EAA8EA;oBAC9EA,IAAIA,CAACA,SAASA,CAACA,WAAWA,CAACA,SAASA,GAAGA,YAAYA,CAACA,gBAAgBA,CAACA;oBACrEA,MAAMA,CAACA;gBACXA,CAACA;gBAEDA,EAAEA,CAACA,CAACA,QAAQA,IAAIA,iBAASA,CAACA,UAAUA,CAACA,QAAQA,EAAEA,KAAKA,CAACA,CAACA,CAACA,CAACA;oBACpDA,WAAWA,CAACA,oBAAoBA,CAACA,IAAIA,CAACA,KAAKA,EAAEA,IAAIA,CAACA,CAACA;gBACvDA,CAACA;gBAACA,IAAIA,CAACA,EAAEA,CAACA,CAACA,QAAQA,IAAIA,iBAASA,CAACA,YAAYA,CAACA,QAAQA,EAAEA,KAAKA,CAACA,CAACA,CAACA,CAACA;oBAC7DA,WAAWA,CAACA,sBAAsBA,CAACA,IAAIA,CAACA,KAAKA,EAAEA,IAAIA,CAACA,CAACA;gBACzDA,CAACA;gBACDA,IAAIA,CAACA,CAACA;oBACFA,IAAIA,CAACA,SAASA,CAACA,iBAAiBA,CAACA,KAAKA,CAACA,CAACA;gBAC5CA,CAACA;YACLA,CAACA;YAEDzB;;;;eAIGA;YACKA,sDAA+BA,GAAvCA,UAAwCA,IAAsBA;gBAC1D0B,EAAEA,CAACA,CAACA,CAACA,IAAIA,CAACA,kBAAkBA,CAACA;oBACzBA,MAAMA,CAACA,IAAIA,CAACA;gBAEhBA,MAAMA,CAACA,IAAIA,CAACA,QAAQA,CAACA;YACzBA,CAACA;YAEO1B,2CAAoBA,GAA5BA,UAA6BA,IAAsBA;gBAC/C2B,EAAEA,CAACA,CAACA,CAACA,IAAIA,CAACA,kBAAkBA,IAAIA,CAACA,IAAIA,CAACA;oBAClCA,MAAMA,CAACA;gBAEXA,IAAIA,QAAQA,GAAGA,IAAIA,CAACA,kBAAkBA,CAACA,iBAAiBA,EAAEA,CAACA;gBAE3DA,EAAEA,CAACA,CAACA,CAACA,QAAQA,IAAIA,CAACA,QAAQA,CAACA,IAAIA,CAACA;oBAC5BA,MAAMA,CAACA;gBAEXA,MAAMA,CAACA,IAAIA,CAACA,oBAAoBA,CAACA,QAAQA,CAACA,IAAIA,EAAEA,IAAIA,CAACA,KAAKA,CAACA,CAACA;YAChEA,CAACA;YAEO3B,8CAAuBA,GAA/BA,UAAgCA,IAAsBA;gBAClD4B,EAAEA,CAACA,CAACA,CAACA,IAAIA,CAACA,kBAAkBA,IAAIA,CAACA,IAAIA,CAACA;oBAClCA,MAAMA,CAACA;gBAEXA,IAAIA,QAAQA,GAAGA,IAAIA,CAACA,kBAAkBA,CAACA,iBAAiBA,EAAEA,CAACA;gBAC3DA,EAAEA,CAACA,CAACA,CAACA,QAAQA,IAAIA,CAACA,QAAQA,CAACA,OAAOA,CAACA;oBAC/BA,MAAMA,CAACA;gBAEXA,MAAMA,CAACA,IAAIA,CAACA,oBAAoBA,CAACA,QAAQA,CAACA,OAAOA,EAAEA,IAAIA,CAACA,KAAKA,CAACA,CAACA;YACnEA,CAACA;YAEO5B,2CAAoBA,GAA5BA,UAA6BA,SAA4BA,EAAEA,KAAaA;gBACpE6B,EAAEA,CAACA,CAACA,CAACA,SAASA,IAAIA,CAACA,SAASA,CAACA,MAAMA,IAAIA,SAASA,CAACA,MAAMA,CAACA,MAAMA,GAAGA,KAAKA,CAACA;oBACnEA,MAAMA,CAACA;gBAEXA,IAAIA,SAASA,GAAGA,SAASA,CAACA,MAAMA,CAACA,KAAKA,CAACA,CAACA;gBACxCA,EAAEA,CAACA,CAACA,CAACA,SAASA,IAAIA,CAACA,SAASA,CAACA,OAAOA,IAAIA,SAASA,CAACA,OAAOA,CAACA,MAAMA,KAAKA,CAACA,CAACA;oBACnEA,MAAMA,CAACA;gBAEXA,iFAAiFA;gBACjFA,MAAMA,CAACA,SAASA,CAACA,OAAOA,CAACA,CAACA,CAACA,CAACA;YAChCA,CAACA;YAED7B;;;;eAIGA;YACKA,sDAA+BA,GAAvCA,UAAwCA,IAAsBA;gBAE1D8B,IAAIA,QAAQA,GAAGA,IAAIA,CAACA,kBAAkBA,CAACA,iBAAiBA,EAAEA,CAACA;gBAE3DA,oFAAoFA;gBACpFA,EAAEA,CAACA,CAACA,CAACA,QAAQA,CAACA,IAAIA,IAAIA,CAACA,QAAQA,CAACA,IAAIA,CAACA,MAAMA,IAAIA,QAAQA,CAACA,IAAIA,CAACA,MAAMA,CAACA,MAAMA,KAAKA,CAACA,CAACA;oBAC7EA,MAAMA,CAACA,IAAIA,CAACA;gBAEhBA,0EAA0EA;gBAC1EA,IAAIA,gBAAgBA,GAAGA,QAAQA,CAACA,OAAOA,GAAGA,QAAQA,CAACA,OAAOA,CAACA,MAAMA,CAACA,MAAMA,GAAGA,CAACA,GAAGA,CAACA,CAACA;gBAEjFA,IAAIA,UAAUA,GAAWA,CAACA,CAACA,CAACA;gBAC5BA,EAAEA,CAACA,CAACA,gBAAgBA,KAAKA,CAACA,CAACA,CAACA,CAACA;oBACzBA,mGAAmGA;oBACnGA,UAAUA,GAAGA,IAAIA,CAACA,gBAAgBA,CAACA;gBACvCA,CAACA;gBACDA,IAAIA,CAACA,EAAEA,CAACA,CAACA,IAAIA,CAACA,UAAUA,CAACA,CAACA,CAACA;oBACvBA,8EAA8EA;oBAC9EA,IAAIA,cAAcA,GAAYA,QAAQA,CAACA,YAAYA,IAAIA,QAAQA,CAACA,YAAYA,CAACA,MAAMA,GAAGA,CAACA,CAACA;oBAExFA,EAAEA,CAACA,CAACA,cAAcA,CAACA,CAACA,CAACA;wBACjBA,iFAAiFA;wBACjFA,qFAAqFA;wBACrFA,qFAAqFA;wBACrFA,iCAAiCA;wBACjCA,EAAEA,CAACA,CAACA,IAAIA,CAACA,MAAMA,IAAIA,IAAIA,CAACA,MAAMA,CAACA,KAAKA,KAAKA,CAACA,CAACA;4BACvCA,UAAUA,GAAGA,IAAIA,CAACA,gBAAgBA,CAACA;oBAC3CA,CAACA;oBACDA,IAAIA,CAACA,CAACA;wBACFA,gFAAgFA;wBAChFA,8CAA8CA;wBAC9CA,EAAEA,CAACA,CAACA,IAAIA,CAACA,KAAKA,KAAKA,CAACA,CAACA;4BACjBA,UAAUA,GAAGA,IAAIA,CAACA,gBAAgBA,CAACA;oBAC3CA,CAACA;gBACLA,CAACA;gBAEDA,EAAEA,CAACA,CAACA,UAAUA,KAAKA,CAACA,CAACA,CAACA,CAACA,CAACA;oBACpBA,sFAAsFA;oBACtFA,6BAA6BA;oBAC7BA,UAAUA,GAAGA,UAAUA,GAAGA,UAAUA,GAAGA,CAACA,CAACA;oBACzCA,MAAMA,CAACA,QAAQA,CAACA,YAAYA,CAACA,UAAUA,CAACA,CAACA;gBAC7CA,CAACA;gBAEDA,MAAMA,CAACA,IAAIA,CAACA;YAChBA,CAACA;YA9Zc9B,4BAAeA,GAAGA,kBAAkBA,CAACA;YACrCA,iCAAoBA,GAAGA,uBAAuBA,CAACA;YAC/CA,sCAAyBA,GAAGA,8BAA8BA,CAACA;YAC3DA,mCAAsBA,GAAGA,2BAA2BA,CAACA;YACrDA,yCAA4BA,GAAGA,kCAAkCA,CAACA;YAClEA,iDAAoCA,GAAGA,2CAA2CA,CAACA;YACnFA,8BAAiBA,GAAGA,qBAAqBA,CAACA;YAC1CA,2BAAcA,GAAGA,OAAOA,CAACA;YACzBA,6BAAgBA,GAAGA,QAAQA,CAACA;YAuZ/CA,mBAACA;QAADA,CAjaArqF,AAiaCqqF,IAAArqF;QAjaYA,oBAAYA,eAiaxBA,CAAAA;QAODA;YAwBIosF,gBAAYA,OAAkCA;gBAC1CC,EAAEA,CAACA,CAACA,OAAOA,CAACA,CAACA,CAACA;oBACVA,IAAIA,CAACA,6BAA6BA,GAAGA,OAAOA,CAACA,6BAA6BA,CAACA;oBAC3EA,IAAIA,CAACA,cAAcA,GAAGA,OAAOA,CAACA,cAAcA,CAACA;gBACjDA,CAACA;YACLA,CAACA;YAEaD,qBAAcA,GAA5BA,UAA6BA,OAA8BA;gBACvDE,IAAIA,eAAeA,GAAGA,OAAOA,CAACA,gBAAgBA,CAACA,CAACA,CAACA,CAACA;gBAClDA,EAAEA,CAACA,CAACA,CAACA,eAAeA,IAAIA,CAACA,eAAeA,CAACA,MAAMA,IAAIA,CAACA,eAAeA,CAACA,QAAQA,CAACA;oBACzEA,MAAMA,CAACA;gBAEXA,IAAIA,cAAcA,GAA2EA,eAAeA,CAACA,MAAMA,CAACA;gBAEpHA,0EAA0EA;gBAC1EA,EAAEA,CAACA,CAACA,CAACA,CAACA,CAACA,OAAOA,CAACA,cAAcA,CAACA,OAAOA,CAACA,GAAGA,CAACA,EAAEA,CAACA,KAAKA,CAACA,CAACA,CAACA,CAACA;oBAClDA,cAAcA,CAACA,IAAIA,CAACA,sBAAsBA,CAACA,MAAMA,CAACA,KAAKA,GAAGA,GAAGA,CAACA;gBAClEA,CAACA;gBACDA,IAAIA,OAAOA,GAAyFA,eAAeA,CAACA,QAAQA,CAACA,OAAOA,CAACA;gBAClFA,cAAcA,CAACA,IAAKA,CAACA,GAAGA,CAACA,EAAEA,CAACA,YAAYA,GAAGA,WAAWA,CAACA,sBAAsBA,CAACA,OAAOA,CAACA,GAAGA,aAA+BA,GAAGA,YAA8BA,CAACA;gBAC7MA,cAAcA,CAACA,OAAOA,CAACA,GAAGA,CAACA,EAAEA,CAACA,YAAYA,GAAGA,WAAWA,CAACA,yBAAyBA,CAACA,OAAOA,CAACA,GAAGA,aAA+BA,GAAGA,YAA8BA,CAACA;YACnKA,CAACA;YAEaF,uBAAgBA,GAA9BA;gBACIG,MAAMA,CAACA,CAACA,MAAMA,EAAEA,QAAQA,CAACA,CAACA;YAC9BA,CAACA;YAEMH,qBAAIA,GAAXA,UAAYA,OAA0BA;gBAClCI,IAAIA,CAACA,OAAOA,GAAGA,OAAOA,CAACA,OAAOA,CAACA;gBAC/BA,IAAIA,CAACA,KAAKA,GAAGA,OAAOA,CAACA,KAAKA,CAACA;gBAC3BA,IAAIA,CAACA,cAAcA,CAACA,OAAOA,CAACA,QAAQA,CAACA,CAACA;gBACtCA,IAAIA,CAACA,SAASA,GAAGA,sBAAcA,CAACA,iBAAiBA,CAACA;gBAClDA,IAAIA,CAACA,aAAaA,GAAGA,OAAOA,CAACA,aAAaA,IAAIA,OAAOA,CAACA,aAAaA,CAACA,SAASA,IAAIA,IAAIA,CAACA;gBACtFA,IAAIA,CAACA,YAAYA,GAAGA,OAAOA,CAACA,IAAIA,CAACA;gBAEjCA,IAAIA,CAACA,cAAcA,GAAGA,KAAKA,CAACA;gBAC5BA,IAAIA,CAACA,qBAAqBA,GAAGA,IAAIA,CAACA;gBAClCA,IAAIA,CAACA,cAAcA,GAAGA,KAAKA,CAACA;YAChCA,CAACA;YAEaJ,gBAASA,GAAvBA,UAAwBA,QAAkBA,EAAEA,6BAAsCA;gBAC9EK,KAAKA,CAACA,WAAWA,CAACA,QAAQA,EAAEA,UAAUA,CAACA,CAACA;gBACxCA,IAAIA,oBAAgDA,CAACA;gBAErDA,EAAEA,CAACA,CAACA,6BAA6BA,CAACA,CAACA,CAACA;oBAChCA,oBAAoBA,GAAGA,WAAWA,CAACA,6BAA6BA,CAACA,QAAQA,CAACA,CAACA;gBAC/EA,CAACA;gBAEDA,MAAMA,CAACA,oBAAoBA,CAACA;YAChCA,CAACA;YAEML,2BAAUA,GAAjBA,UAAkBA,aAAwBA;gBACtCM,IAAIA,CAACA,cAAcA,CAACA,aAAaA,CAACA,CAACA;YACvCA,CAACA;YAEDN;;cAEEA;YACKA,sCAAqBA,GAA5BA;gBACIO,MAAMA,CAACA,IAAIA,CAACA,kBAAkBA,CAACA;YACnCA,CAACA;YAEMP,8BAAaA,GAApBA,UAAqBA,OAAiCA;gBAClDQ,KAAKA,CAACA,WAAWA,CAACA,OAAOA,EAAEA,SAASA,CAACA,CAACA;gBAEtCA,4GAA4GA;gBAC5GA,EAAEA,CAACA,CAACA,IAAIA,CAACA,kBAAkBA,IAAIA,IAAIA,CAACA,kBAAkBA,CAACA,iCAAiCA,CAACA,CAACA,CAACA;oBACvFA,yHAAyHA;oBACzHA,IAAIA,CAACA,kBAAkBA,CAACA,iCAAiCA,GAAGA,KAAKA,CAACA;oBAClEA,MAAMA,CAACA;gBACXA,CAACA;gBACDA,IAAIA,gBAAgBA,GAAGA,IAAIA,CAACA,QAAQA,CAACA;gBAErCA,EAAEA,CAACA,CAACA,OAAOA,CAACA,SAASA,IAAIA,OAAOA,CAACA,SAASA,CAACA,MAAMA,GAAGA,CAACA,CAACA,CAACA,CAACA;oBACpDA,IAAIA,CAACA,QAAQA,GAAGA,OAAOA,CAACA,SAASA,CAACA,CAACA,CAACA,CAACA;oBACrCA,IAAIA,oBAAoBA,GAAGA,MAAMA,CAACA,SAASA,CAACA,IAAIA,CAACA,QAAQA,EAAEA,IAAIA,CAACA,6BAA6BA,CAACA,CAACA;oBAC/FA,IAAIA,QAAQA,GAAGA,oBAAoBA,GAAGA,oBAAoBA,CAACA,OAAOA,CAACA,QAAQA,GAAGA,WAAWA,CAACA,WAAWA,CAACA,IAAIA,CAACA,QAAQA,CAACA,QAAQA,CAACA,OAAOA,CAACA,CAACA;oBAEtIA,EAAEA,CAACA,CAACA,OAAOA,CAACA,aAAaA,KAAKA,qCAA6BA,CAACA,MAAMA,CAACA,CAACA,CAACA;wBACjEA,IAAIA,WAAWA,GAAGA,gBAAgBA,CAACA,MAAMA,CAACA,IAAIA,CAACA,IAAIA,KAAKA,IAAIA,CAACA,QAAQA,CAACA,MAAMA,CAACA,IAAIA,CAACA,IAAIA,CAACA;wBAEvFA,IAAIA,CAACA,kBAAkBA,CAACA,MAAMA,CAACA,IAAIA,CAACA,QAAQA,CAACA,MAAMA,EAAEA,WAAWA,CAACA,CAACA;wBAClEA,wGAAwGA;wBACxGA,EAAEA,CAACA,CAACA,WAAWA,CAACA;4BACZA,IAAIA,CAACA,aAAaA,CAACA,YAAYA,CAACA,sBAAsBA,CAAAA,KAAKA,EAAEA,IAAIA,CAACA,QAAQA,CAACA,MAAMA,CAACA,IAAIA,CAACA,IAAIA,CAACA,QAAQA,EAAEA,IAAIA,CAACA,QAAQA,CAACA,MAAMA,CAACA,OAAOA,CAACA,IAAIA,CAACA,QAAQA,CAACA,CAACA;wBAEtJA,IAAIA,CAACA,cAAcA,CAACA,SAASA,CAAAA,KAAKA,CAACA,CAACA;oBACxCA,CAACA;oBAACA,IAAIA,CAACA,CAACA;wBACJA,IAAIA,CAACA,gCAAgCA,EAAEA,CAACA;wBACxCA,IAAIA,CAACA,wBAAwBA,EAAEA,CAACA;wBAChCA,IAAIA,CAACA,mBAAmBA,CAACA,QAAQA,CAACA,CAACA;wBACnCA,IAAIA,MAAMA,GAAiBA,IAAIA,CAACA,aAAaA,CAACA,SAASA,EAAEA,CAACA;wBAC1DA,MAAMA,CAACA,iBAAiBA,CAACA,oBAAoBA,CAACA,CAACA;wBAC/CA,IAAIA,CAACA,oBAAoBA,EAAEA,CAACA;wBAC5BA,IAAIA,CAACA,cAAcA,CAACA,IAAIA,CAACA,QAAQA,EAAEA,QAAQA,EAAEA,gBAAgBA,CAACA,CAACA;oBACnEA,CAACA;gBACLA,CAACA;gBAEDA,IAAIA,CAACA,cAAcA,GAAGA,KAAKA,CAACA;gBAC5BA,IAAIA,CAACA,cAAcA,GAAGA,KAAKA,CAACA;YAChCA,CAACA;YAEOR,qCAAoBA,GAA5BA;gBACIS,EAAEA,CAACA,CAACA,IAAIA,CAACA,kBAAkBA,CAACA,CAACA,CAACA;oBAC1BA,IAAIA,CAACA,kBAAkBA,CAACA,6BAA6BA,EAAEA,CAACA;oBACxDA,EAAEA,CAACA,CAACA,IAAIA,CAACA,kBAAkBA,CAACA,yBAAyBA,EAAEA,CAACA;wBACpDA,IAAIA,CAACA,mBAAmBA,CAACA,IAAIA,CAACA,kBAAkBA,CAACA,iCAAiCA,EAAEA,CAACA,CAACA;gBAC9FA,CAACA;YACLA,CAACA;YAEMT,mCAAkBA,GAAzBA,UAA0BA,KAAaA,EAAEA,KAAaA;gBAClDU,IAAIA,CAACA,kBAAkBA,CAACA,kBAAkBA,CAACA,KAAKA,EAAEA,KAAKA,CAACA,CAACA;gBACzDA,IAAIA,CAACA,mBAAmBA,CAACA,IAAIA,CAACA,kBAAkBA,CAACA,iCAAiCA,EAAEA,CAACA,CAACA;YAC1FA,CAACA;YAEOV,oCAAmBA,GAA3BA,UAA4BA,eAA+CA;gBACvEW,IAAIA,CAACA,YAAYA,CAACA,iBAAiBA,CAACA,eAAeA,CAACA,CAACA;YACzDA,CAACA;YAEOX,+BAAcA,GAAtBA,UAAuBA,WAAsBA;gBACzCY,IAAIA,CAACA,eAAeA,GAAGA,WAAWA,CAACA;gBAEnCA,EAAEA,CAACA,CAACA,IAAIA,CAACA,aAAaA,CAACA,CAACA,CAACA;oBACrBA,IAAIA,CAACA,aAAaA,CAACA,QAAQA,GAAGA,IAAIA,CAACA,eAAeA,CAACA;oBACnDA,IAAIA,CAACA,kBAAkBA,EAAEA,CAACA;oBAE1BA,IAAIA,CAACA,cAAcA,CAACA,SAASA,CAAAA,KAAKA,CAACA,CAACA;gBACxCA,CAACA;YACLA,CAACA;YAEOZ,+BAAcA,GAAtBA,UAAuBA,KAAcA;gBACjCa,EAAEA,CAACA,CAACA,wBAAgBA,CAACA,gBAAgBA,CAACA,IAAIA,CAACA,OAAOA,CAACA,IAAIA,IAAIA,CAACA,aAAaA,EAAEA,KAAKA,qBAAuCA,CAACA,CAACA,CAACA;oBACtHA,IAAIA,CAACA,aAAaA,CAACA,OAAOA,CAACA,KAAKA,CAACA,CAACA;gBACtCA,CAACA;YACLA,CAACA;YAEOb,8BAAaA,GAArBA;gBACIc,MAAMA,CAACA,IAAIA,CAACA,aAAaA,GAAGA,cAAgCA,GAAGA,qBAAuCA,CAACA;YAC3GA,CAACA;YAEOd,iDAAgCA,GAAxCA;gBACIe,EAAEA,CAACA,CAACA,CAACA,IAAIA,CAACA,aAAaA,CAACA,CAACA,CAACA;oBACtBA,IAAIA,eAAeA,GAAGA,8BAA8BA,CAACA,IAAIA,CAACA,QAAQA,CAACA,MAAMA,EAAEA,IAAIA,CAACA,SAASA,CAACA,CAACA;oBAC3FA,IAAIA,CAACA,kBAAkBA,GAAGA,eAAeA,CAACA;gBAC9CA,CAACA;gBACDA,IAAIA,CAACA,CAACA;oBACFA,IAAIA,CAACA,kBAAkBA,CAACA,MAAMA,CAACA,IAAIA,CAACA,QAAQA,CAACA,MAAMA,CAACA,CAACA;gBACzDA,CAACA;YACLA,CAACA;YAEOf,oCAAmBA,GAA3BA,UAA4BA,QAAgBA;gBACxCgB,EAAEA,CAACA,CAACA,CAACA,IAAIA,CAACA,aAAaA,CAACA,CAACA,CAACA;oBACtBA,qBAAqBA;oBACrBA,IAAIA,CAACA,aAAaA,GAAGA,IAAIA,CAACA,aAAaA,CAACA,IAAIA,CAACA,kBAAkBA,EAAEA,QAAQA,CAACA,CAACA;gBAC/EA,CAACA;YACLA,CAACA;YAEOhB,yCAAwBA,GAAhCA;gBAAAiB,iBASCA;gBARGA,IAAIA,eAAeA,GAA+CA,IAAIA,CAACA,kBAAmBA,CAACA,wBAAwBA,EAAEA,CAACA;gBACtHA,EAAEA,CAACA,CAACA,CAACA,IAAIA,CAACA,kBAAkBA,CAACA,CAACA,CAACA;oBAC3BA,IAAIA,CAACA,kBAAkBA,GAAGA,IAAIA,gBAAQA,CAACA,wBAAwBA,CAACA,IAAIA,CAACA,QAAQA,EAAEA,IAAIA,CAACA,cAAcA,EAAEA,eAAeA,CAACA,SAASA,CAACA,CAACA;oBAC/HA,IAAIA,CAACA,kBAAkBA,CAACA,yBAAyBA,GAAGA,UAACA,CAACA,EAAEA,CAACA,IAAKA,OAAAA,KAAIA,CAACA,kBAAkBA,CAACA,CAACA,EAAEA,CAACA,CAACA,EAA7BA,CAA6BA,CAACA;gBAChGA,CAACA;gBACDA,IAAIA,CAACA,CAACA;oBACFA,IAAIA,CAACA,kBAAkBA,CAACA,cAAcA,CAACA,IAAIA,CAACA,QAAQA,EAAEA,eAAeA,CAACA,SAASA,CAACA,CAACA;gBACrFA,CAACA;YACLA,CAACA;YAEOjB,8BAAaA,GAArBA,UAAsBA,eAA0CA,EAAEA,QAAgBA;gBAAlFkB,iBAwBCA;gBAvBGA,IAAIA,UAAUA,GAAGA,IAAIA,CAACA,aAAaA,EAAEA,CAACA;gBAEtCA,IAAIA,mBAAmBA,GAAwBA;oBAC3CA,eAAeA,EAAEA,UAACA,IAAsBA,IAAOA,KAAIA,CAACA,eAAeA,CAACA,IAAIA,CAACA,CAACA,CAACA,CAACA;oBAC5EA,UAAUA,EAAEA,IAAIA,CAACA,YAAYA,CAACA,kBAAkBA,CAACA,MAAMA,CAACA,UAAUA,CAACA;oBACnEA,mBAAmBA,EAAEA,UAACA,SAAiBA,IAAKA,OAAAA,KAAIA,CAACA,mBAAmBA,CAACA,SAASA,CAACA,EAAnCA,CAAmCA;iBAClFA,CAACA;gBACFA,IAAIA,YAAYA,GAAGA,IAAIA,YAAYA,CAACA,IAAIA,CAACA,kBAAkBA,EAAEA,mBAAmBA,CAACA,CAACA;gBAElFA,IAAIA,aAAaA,GAA0CA,UAAUA,KAAKA,qBAAuCA;sBAC3GA,gBAAQA,CAACA,QAAQA,CAACA,4BAA4BA,CAACA,mBAAmBA,CAACA,YAAYA,CAACA;sBAChFA,gBAAQA,CAACA,QAAQA,CAACA,yBAAyBA,CAACA,mBAAmBA,CAACA,YAAYA,EAAEA,IAAIA,CAACA,kBAAkBA,CAACA,CAACA;gBAE7GA,IAAIA,eAAeA,GAAGA,QAAQA,CAACA,aAAaA,CAACA,KAAKA,CAACA,CAACA;gBACpDA,IAAIA,CAACA,OAAOA,CAACA,MAAMA,CAACA,eAAeA,CAACA,CAACA;gBAErCA,IAAIA,aAAaA,GAA2BA;oBACxCA,WAAWA,EAAEA,IAAIA,CAACA,aAAaA;oBAC/BA,kBAAkBA,EAAEA,IAAIA,CAACA,cAAcA;oBACvCA,QAAQA,EAAEA,WAAWA,CAACA,eAAeA,CAACA,QAAQA,CAACA;iBAClDA,CAACA;gBAEFA,MAAMA,CAACA,IAAIA,gBAAQA,CAACA,aAAaA,CAACA,eAAeA,EAAEA,aAAaA,EAAEA,YAAYA,EAAEA,eAAeA,EAAEA,aAAaA,CAACA,CAACA;YACpHA,CAACA;YAEOlB,+BAAcA,GAAtBA,UAAuBA,QAAkBA,EAAEA,QAAgBA,EAAEA,gBAA0BA;gBAAvFmB,iBAqBCA;gBApBGA,EAAEA,CAACA,CAACA,IAAIA,CAACA,aAAaA,EAAEA,KAAKA,qBAAuCA,CAACA,CAACA,CAACA;oBACnEA,IAAIA,CAACA,aAAaA,CAACA,aAAaA,CAACA,iBAAiBA,CAACA,iBAASA,CAACA,cAAcA,CAACA,QAAQA,CAACA,CAACA,CAACA;gBAC3FA,CAACA;gBAEDA,IAAIA,CAACA,aAAaA,CAACA,QAAQA,GAAGA,WAAWA,CAACA,eAAeA,CAACA,QAAQA,CAACA,CAACA;gBACpEA,IAAIA,CAACA,kBAAkBA,EAAEA,CAACA;gBAE1BA,sFAAsFA;gBACtFA,IAAIA,CAACA,aAAaA,CAACA,YAAYA,CAACA,sBAAsBA,CAAAA,IAAIA,EAAEA,QAAQA,CAACA,MAAMA,CAACA,IAAIA,CAACA,IAAIA,CAACA,QAAQA,EAAEA,QAAQA,CAACA,MAAMA,CAACA,OAAOA,CAACA,IAAIA,CAACA,QAAQA,CAACA,CAACA;gBACvIA,IAAIA,CAACA,aAAaA,CAACA,QAAQA,GAAGA,IAAIA,CAACA,eAAeA,CAACA;gBACnDA,IAAIA,kBAAkBA,GAAGA,IAAIA,CAACA,kBAAkBA,CAACA,gBAAgBA,EAAEA,QAAQA,CAACA,CAACA;gBAE7EA,6FAA6FA;gBAC7FA,UAAUA,CAACA;oBACPA,SAASA;oBACTA,KAAIA,CAACA,cAAcA,CAACA,kBAAkBA,CAACA,CAACA;oBACxCA,KAAIA,CAACA,kBAAkBA,CAACA,sBAAsBA,CAACA,KAAIA,CAACA,aAAaA,CAACA,aAAaA,CAACA,qBAAqBA,CAACA,CAACA;oBACvGA,EAAEA,CAACA,CAACA,KAAIA,CAACA,kBAAkBA,CAACA,yBAAyBA,EAAEA,CAACA;wBACpDA,KAAIA,CAACA,mBAAmBA,CAACA,KAAIA,CAACA,kBAAkBA,CAACA,iCAAiCA,EAAEA,CAACA,CAACA;gBAC9FA,CAACA,EAAEA,CAACA,CAACA,CAACA;YACVA,CAACA;YAEOnB,mCAAkBA,GAA1BA,UAA2BA,gBAA0BA,EAAEA,WAAqBA;gBACxEoB,EAAEA,CAACA,CAACA,CAACA,IAAIA,CAACA,cAAcA,IAAIA,CAACA,gBAAgBA,IAAIA,CAACA,WAAWA,CAACA;oBAC1DA,MAAMA,CAACA,IAAIA,CAACA;gBAEhBA,MAAMA,CAACA,CAACA,wBAAgBA,CAACA,oBAAoBA,CAACA,gBAAgBA,CAACA,QAAQA,EAAEA,WAAWA,CAACA,QAAQA,CAACA,CAACA;YACnGA,CAACA;YAEOpB,gCAAeA,GAAvBA,UAAwBA,IAAsBA;gBAC1CqB,EAAEA,CAACA,CAACA,IAAIA,CAACA,aAAaA,CAACA,IAAIA,CAACA,CAACA,CAACA,CAACA;oBAC3BA,IAAIA,CAACA,YAAYA,CAACA,YAAYA,EAAEA,CAACA;oBACjCA,IAAIA,CAACA,cAAcA,GAAGA,IAAIA,CAACA;gBAC/BA,CAACA;YACLA,CAACA;YAEOrB,oCAAmBA,GAA3BA,UAA4BA,SAAiBA;gBACzCsB,IAAIA,eAAeA,GAA8BA,CAACA;wBAC9CA,SAASA,EAAEA,SAASA;qBACvBA,CAACA,CAACA;gBACHA,IAAIA,IAAIA,GAAwBA;oBAC5BA,eAAeA,EAAEA,eAAeA;iBACnCA,CAACA;gBACFA,IAAIA,CAACA,cAAcA,GAAGA,IAAIA,CAACA;gBAC3BA,IAAIA,CAACA,YAAYA,CAACA,YAAYA,CAACA,IAAIA,CAACA,CAACA;YACzCA,CAACA;YAEDtB;;eAEGA;YACIA,8BAAaA,GAApBA,UAAqBA,IAAsBA;gBACvCuB,EAAEA,CAACA,CAACA,IAAIA,CAACA,cAAcA,IAAIA,CAACA,IAAIA,CAACA,kBAAkBA,CAACA,MAAMA,CAACA,IAAIA,CAACA,IAAIA,CAACA,IAAIA,CAACA,QAAQA,CAACA,QAAQA,IAAIA,CAACA,IAAIA,CAACA,QAAQA,CAACA,QAAQA,CAACA,OAAOA,CAACA;oBAC3HA,MAAMA,CAACA,KAAKA,CAACA;gBAEjBA,IAAIA,SAASA,GAAGA,IAAIA,CAACA,aAAaA,CAACA,YAAYA,CAACA,aAAaA,EAAEA,CAACA;gBAChEA,IAAIA,iBAAiBA,GAAGA,SAASA,GAAGA,MAAMA,CAACA,0BAA0BA,CAACA;gBAEtEA,MAAMA,CAACA,IAAIA,CAACA,kBAAkBA,CAACA,YAAYA,CAACA,IAAIA,CAACA,IAAIA,iBAAiBA,CAACA;YAC3EA,CAACA;YAEMvB,yCAAwBA,GAA/BA,UAAgCA,OAA8CA;gBAC1EwB,IAAIA,WAAWA,GAAGA,IAAIA,gCAAwBA,EAAEA,CAACA;gBAEjDA,EAAEA,CAACA,CAACA,IAAIA,CAACA,QAAQA,CAACA,CAACA,CAACA;oBAChBA,WAAWA,CAACA,cAAcA,CAACA,OAAOA,EAAEA,WAAWA,EAAEA,IAAIA,CAACA,QAAQA,EAAEA,IAAIA,CAACA,6BAA6BA,EAAEA,gBAAQA,CAACA,UAAUA,CAACA,MAAMA,CAACA,CAACA;gBACpIA,CAACA;gBAEDA,MAAMA,CAACA,WAAWA,CAACA,QAAQA,EAAEA,CAACA;YAClCA,CAACA;YAEOxB,wCAAuBA,GAA/BA;gBACIyB,MAAMA,CAACA,IAAIA,CAACA,YAAYA,CAACA,WAAWA,EAAEA,KAAKA,YAAaA,CAACA;YAC7DA,CAACA;YAEOzB,mCAAkBA,GAA1BA;gBACI0B,IAAIA,wBAAwBA,GAAGA,IAAIA,CAACA,uBAAuBA,EAAEA,CAACA;gBAC9DA,EAAEA,CAACA,CAACA,wBAAwBA,KAAKA,IAAIA,CAACA,qBAAqBA,CAACA,CAACA,CAACA;oBAC1DA,IAAIA,CAACA,qBAAqBA,GAAGA,wBAAwBA,CAACA;oBACtDA,IAAIA,CAACA,aAAaA,CAACA,aAAaA,CAACA,oBAAoBA,CAACA,wBAAwBA,CAACA,CAACA;gBACpFA,CAACA;YACLA,CAACA;YA1Sc1B,iCAA0BA,GAAWA,GAAGA,CAACA;YAExDA;;eAEGA;YACWA,iBAAUA,GAAGA,iBAAiBA,CAACA;YAsSjDA,aAACA;QAADA,CA5SApsF,AA4SCosF,IAAApsF;QA5SYA,cAAMA,SA4SlBA,CAAAA;IACLA,CAACA,EAvoCcrxC,OAAOA,GAAPA,eAAOA,KAAPA,eAAOA,QAuoCrBA;AAADA,CAACA,EAvoCM,OAAO,KAAP,OAAO,QAuoCb;ACnqCD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,yCAAyC;AAEzC,IAAO,OAAO,CAukCb;AAvkCD,WAAO,OAAO;IAACA,IAAAA,OAAOA,CAukCrBA;IAvkCcA,WAAAA,OAAOA,EAACA,CAACA;QACpBqxC,IAAOA,YAAYA,GAAGA,QAAQA,CAACA,YAAYA,CAACA;QA6E5CA;;WAEGA;QACHA;YAqFI+tF,iBAAYA,OAAmCA;gBAC3CC,IAAIA,CAACA,eAAeA,GAAGA,OAAOA,IAAIA,OAAOA,CAACA,eAAeA,CAACA;gBAC1DA,EAAEA,CAACA,CAACA,OAAOA,IAAIA,OAAOA,CAACA,QAAQA,CAACA,CAACA,CAACA;oBAC9BA,IAAIA,CAACA,QAAQA,GAAGA,OAAOA,CAACA,QAAQA,CAACA;oBACjCA,IAAIA,CAACA,YAAYA,GAAGA,OAAOA,CAACA,YAAYA,GAAGA,OAAOA,CAACA,YAAYA,GAAGA,KAAKA,CAACA;oBACxEA,IAAIA,CAACA,QAAQA,GAAGA,OAAOA,CAACA,QAAQA,CAACA;gBACrCA,CAACA;YACLA,CAACA;YApCaD,iBAASA,GAAvBA,UAAwBA,cAAwCA,EAAEA,gBAAwBA;gBACtFE,IAAIA,eAAeA,GAAGA,sBAAcA,CAACA,iCAAiCA,EAAEA,CAACA;gBACzEA,IAAIA,kBAAkBA,GAAGA,cAAcA,CAACA,YAAYA,CAACA;gBACrDA,IAAIA,kBAAkBA,GAAGA,cAAcA,CAACA,IAAIA,IAAIA,cAAcA,CAACA,YAAYA,CAACA;gBAE5EA,MAAMA,CAACA;oBACHA,UAAUA,EAAEA,UAACA,CAACA,IAAKA,OAAAA,OAAOA,CAACA,YAAYA,CAACA,CAACA,EAAEA,KAAKA,CAACA,EAA9BA,CAA8BA;oBACjDA,WAAWA,EAAEA,OAAOA,CAACA,wBAAwBA,CAACA,KAAKA,CAACA;oBACpDA,mBAAmBA,EAAEA,UAACA,CAACA,IAAKA,OAAAA,OAAOA,CAACA,YAAYA,CAACA,CAACA,EAAEA,IAAIA,CAACA,EAA7BA,CAA6BA;oBACzDA,oBAAoBA,EAAEA,OAAOA,CAACA,wBAAwBA,CAACA,IAAIA,CAACA;oBAC5DA,eAAeA,EAAEA,OAAOA,CAACA,4BAA4BA,EAAEA;oBACvDA,eAAeA,EAAEA,UAACA,CAACA,IAAKA,OAAAA,OAAOA,CAACA,mBAAmBA,EAA3BA,CAA2BA;oBACnDA,gBAAgBA,EAAEA;wBACdA,CAACA,EAAEA,UAACA,CAACA,IAAKA,OAAAA,CAACA,CAACA,CAACA,GAAGA,OAAOA,CAACA,UAAUA,EAAxBA,CAAwBA;wBAClCA,CAACA,EAAEA,UAACA,CAACA,IAAKA,OAAAA,CAACA,CAACA,CAACA,GAAGA,OAAOA,CAACA,UAAUA,GAAGA,OAAOA,CAACA,kBAAkBA,EAArDA,CAAqDA;qBAClEA;oBACDA,cAAcA,EAAEA,UAACA,CAACA,IAAKA,OAAAA,OAAOA,CAACA,oBAAoBA,CAACA,CAACA,EAAEA,cAAcA,EAAEA,gBAAgBA,EAAEA,eAAeA,CAACA,EAAlFA,CAAkFA;oBAEzGA,eAAeA,EAAEA,UAACA,CAACA,IAAKA,OAAAA,OAAOA,CAACA,mBAAmBA,EAA3BA,CAA2BA;oBACnDA,gBAAgBA,EAAEA;wBACdA,CAACA,EAAEA,UAACA,CAACA,IAAKA,OAAAA,CAACA,CAACA,CAACA,GAAGA,OAAOA,CAACA,UAAUA,EAAxBA,CAAwBA;wBAClCA,CAACA,EAAEA,UAACA,CAACA,IAAKA,OAAAA,CAACA,CAACA,CAACA,GAAGA,CAACA,CAACA,EAAEA,GAAGA,OAAOA,CAACA,UAAUA,EAA/BA,CAA+BA;qBAC5CA;oBACDA,cAAcA,EAAEA,UAACA,CAACA,IAAKA,OAAAA,OAAOA,CAACA,oBAAoBA,CAACA,CAACA,EAAEA,cAAcA,EAAEA,gBAAgBA,EAAEA,eAAeA,CAACA,EAAlFA,CAAkFA;oBACzGA,qBAAqBA,EAAEA,cAAMA,OAAAA,kBAAkBA,EAAlBA,CAAkBA;oBAC/CA,qBAAqBA,EAAEA,cAAMA,OAAAA,kBAAkBA,EAAlBA,CAAkBA;iBAClDA,CAACA;YACNA,CAACA;YAWMF,sBAAIA,GAAXA,UAAYA,OAA0BA;gBAClCG,IAAIA,CAACA,OAAOA,GAAGA,OAAOA,CAACA;gBACvBA,IAAIA,OAAOA,GAAGA,OAAOA,CAACA,OAAOA,CAACA;gBAE9BA,mCAAmCA;gBACnCA,OAAOA,CAACA,KAAKA,EAAEA,CAACA;gBAEhBA,IAAIA,CAACA,GAAGA,GAAGA,EAAEA,CAACA,MAAMA,CAACA,OAAOA,CAACA,GAAGA,CAACA,CAACA,CAACA,CAACA;qBAC/BA,MAAMA,CAACA,KAAKA,CAACA;qBACbA,KAAKA,CAACA,UAAUA,EAAEA,UAAUA,CAACA;qBAC7BA,OAAOA,CAACA,OAAOA,CAACA,SAASA,EAAEA,IAAIA,CAACA,CAACA;gBACtCA,IAAIA,CAACA,oBAAoBA,GAAGA,IAAIA,CAACA,GAAGA;qBAC/BA,MAAMA,CAACA,GAAGA,CAACA;qBACXA,OAAOA,CAACA,OAAOA,CAACA,eAAeA,EAAEA,IAAIA,CAACA,CAACA;gBAC5CA,IAAIA,CAACA,oBAAoBA,GAAGA,IAAIA,CAACA,GAAGA;qBAC/BA,MAAMA,CAACA,GAAGA,CAACA;qBACXA,OAAOA,CAACA,OAAOA,CAACA,oBAAoBA,EAAEA,IAAIA,CAACA,CAACA;gBAEjDA,IAAIA,CAACA,OAAOA,GAAGA,OAAOA,CAACA;gBAEvBA,kBAAkBA;gBAClBA,IAAIA,CAACA,eAAeA,GAAGA;oBACnBA,MAAMA,EAAEA,OAAOA,CAACA,QAAQA,CAACA,MAAMA;oBAC/BA,KAAKA,EAAEA,OAAOA,CAACA,QAAQA,CAACA,KAAKA;iBAChCA,CAACA;gBAEFA,IAAIA,CAACA,KAAKA,GAAGA,OAAOA,CAACA,KAAKA,CAACA;gBAE3BA,IAAIA,CAACA,OAAOA,GAAGA,EAAEA,CAACA,MAAMA,CAACA,OAAOA,EAAEA;qBAC7BA,MAAMA,CAACA,KAAKA,CAACA;qBACbA,IAAIA,CAACA,UAACA,CAACA,EAAEA,CAACA,IAAKA,OAAAA,CAACA,CAACA,IAAIA,GAAGA,CAACA,CAACA,IAAIA,EAAfA,CAAeA,CAACA;qBAC/BA,KAAKA,CAACA,UAACA,CAACA,IAAKA,OAAAA,CAACA,CAACA,IAAIA,EAANA,CAAMA,CAACA;qBACpBA,KAAKA,CAACA,KAAKA,CAACA,CAACA;gBAElBA,EAAEA,CAACA,CAACA,IAAIA,CAACA,QAAQA,CAACA,CAACA,CAACA;oBAChBA,IAAIA,CAACA,oBAAoBA,GAAGA,kCAA0BA,CAACA,OAAOA,CAACA,IAAIA,CAACA,CAACA;gBACzEA,CAACA;gBACDA,IAAIA,CAACA,MAAMA,GAAGA,oBAAYA,CAACA,OAAOA,EAAEA,OAAOA,CAACA,aAAaA,IAAIA,OAAOA,CAACA,aAAaA,CAACA,mBAAmBA,EAAEA,IAAIA,CAACA,oBAAoBA,EAAEA,IAAIA,CAACA,YAAYA,CAACA,CAACA;gBACtJA,IAAIA,CAACA,MAAMA,GAAGA,IAAIA,CAACA,KAAKA,CAACA,YAAYA,CAACA,UAAUA,CAACA;gBAEjDA,IAAIA,CAACA,WAAWA,GAAGA,OAAOA,CAACA,IAAIA,CAACA;YACpCA,CAACA;YAEDH;;eAEGA;YACWA,iBAASA,GAAvBA,UAAwBA,QAAkBA,EAAEA,MAAyBA,EAAEA,aAAuCA,EAAEA,oBAA2CA,EAAEA,QAAmBA,EAAEA,sBAAuCA;gBACrNI,IAAIA,QAAQA,GAAgBA;oBACxBA,GAAGA,EAAEA,MAAMA;oBACXA,IAAIA,EAAEA,MAAMA;oBACZA,QAAQA,EAAEA,EAAEA;oBACZA,QAAQA,EAAEA,KAAKA;oBACfA,mBAAmBA,EAAEA,CAACA;oBACtBA,QAAQA,EAAEA,mBAAWA,CAACA,UAAUA,EAAEA;oBAClCA,KAAKA,EAAEA,SAASA;iBACnBA,CAACA;gBACFA,IAAIA,QAAQA,GAAkBA,EAAEA,CAACA;gBACjCA,IAAIA,aAAsBA,CAACA;gBAC3BA,IAAIA,gBAAgBA,GAAsBA,EAAEA,CAACA;gBAC7CA,IAAIA,WAAWA,GAAGA,EAAEA,CAACA;gBACrBA,IAAIA,WAAWA,GAAGA,IAAIA,mBAAWA,CAACA,MAAMA,EAAEA,oBAAYA,CAACA,SAASA,CAACA,IAAIA,CAACA,CAACA;gBACvEA,IAAIA,aAAaA,GAAGA,SAASA,CAACA;gBAC9BA,EAAEA,CAACA,CAACA,QAAQA,IAAIA,QAAQA,CAACA,QAAQA,IAAIA,QAAQA,CAACA,QAAQA,CAACA,OAAOA,CAACA,CAACA,CAACA;oBAC7DA,IAAIA,OAAOA,GAAGA,QAAQA,CAACA,QAAQA,CAACA,OAAOA,CAACA;oBAExCA,aAAaA,CAACA,IAAIA,GAAGA,uBAAeA,CAACA,QAAQA,CAACA,OAAOA,EAAEA,oBAAYA,CAACA,MAAMA,CAACA,IAAIA,EAAEA,aAAaA,CAACA,IAAIA,CAACA,CAACA;oBACrGA,aAAaA,CAACA,UAAUA,GAAGA,uBAAeA,CAACA,YAAYA,CAACA,OAAOA,EAAEA,oBAAYA,CAACA,MAAMA,CAACA,KAAKA,EAAEA,aAAaA,CAACA,UAAUA,CAACA,CAACA;oBACtHA,aAAaA,CAACA,YAAYA,GAAGA,uBAAeA,CAACA,QAAQA,CAACA,OAAOA,EAAEA,oBAAYA,CAACA,MAAMA,CAACA,iBAAiBA,EAAEA,aAAaA,CAACA,YAAYA,CAACA,CAACA;oBAClIA,aAAaA,CAACA,SAASA,GAAGA,uBAAeA,CAACA,QAAQA,CAACA,OAAOA,EAAEA,oBAAYA,CAACA,MAAMA,CAACA,cAAcA,EAAEA,aAAaA,CAACA,SAASA,CAACA,CAACA;oBACzHA,aAAaA,CAACA,YAAYA,GAAGA,uBAAeA,CAACA,QAAQA,CAACA,OAAOA,EAAEA,oBAAYA,CAACA,cAAcA,CAACA,IAAIA,EAAEA,aAAaA,CAACA,YAAYA,CAACA,CAACA;gBACjIA,CAACA;gBAEDA,EAAEA,CAACA,CAACA,QAAQA,IAAIA,QAAQA,CAACA,WAAWA,IAAIA,QAAQA,CAACA,WAAWA,CAACA,MAAMA,CAACA,CAACA,CAACA;oBAClEA,IAAIA,MAAIA,GAAGA,QAAQA,CAACA,WAAWA,CAACA;oBAChCA,IAAIA,YAAYA,GAAGA,MAAIA,CAACA,MAAMA,CAACA;oBAC/BA,aAAaA,GAAGA,CAACA,CAACA,CAACA,YAAYA,CAACA,MAAMA,GAAGA,CAACA,IAAIA,YAAYA,CAACA,CAACA,CAACA,CAACA,UAAUA,CAACA,CAACA;oBAE1EA,IAAIA,gBAAgBA,GAAGA,oBAAYA,CAACA,OAAOA,CAACA,YAAYA,CAACA;oBACzDA,IAAIA,MAAMA,GAAGA,OAAOA,CAACA,gCAAgCA,CAACA,MAAIA,EAAEA,aAAaA,CAACA,CAACA;oBAC3EA,IAAIA,MAAMA,GAAGA,MAAMA,CAACA,MAAMA,CAACA;oBAC3BA,IAAIA,UAAUA,GAAGA,MAAMA,CAACA,UAAUA,CAACA;oBACnCA,IAAIA,UAAUA,GAAGA,MAAMA,CAACA,UAAUA,CAACA;oBACnCA,EAAEA,CAACA,CAACA,MAAMA,CAACA,kBAAkBA,CAACA,CAACA,CAACA;wBAC5BA,aAAaA,GAAGA,KAAKA,CAACA;wBACtBA,MAAMA,GAAGA,UAAUA,CAACA;oBACxBA,CAACA;oBAEDA,IAAIA,aAAaA,GAAGA,OAAOA,CAACA,gBAAgBA,CAACA,UAAUA,EAAEA,QAAQA,CAACA,CAACA;oBAEnEA,IAAIA,OAAOA,GAAGA,YAAYA,CAACA,OAAOA,EAAEA,CAACA;oBACrCA,IAAIA,aAAaA,GAAGA,OAAOA,IAAIA,OAAOA,CAACA,MAAMA,GAAGA,CAACA,IAAIA,OAAOA,CAACA,CAACA,CAACA,CAACA,MAAMA,IAAIA,OAAOA,CAACA,CAACA,CAACA,CAACA,MAAMA,CAACA,MAAMA,GAAGA,CAACA,CAACA;oBACvGA,IAAIA,gBAAgBA,GAAGA,CAACA,CAACA,YAAYA,CAACA,MAAMA,CAACA;oBAC7CA,aAAaA,GAAGA,KAAKA,CAACA;oBACtBA,IAAIA,eAAeA,GAAGA,SAASA,CAACA;oBAChCA,IAAIA,SAASA,GAAGA,SAASA,CAACA;oBAC1BA,EAAEA,CAACA,CAACA,CAACA,MAAIA,CAACA,UAAUA,IAAIA,IAAIA,CAACA,IAAIA,CAACA,CAACA,CAACA,OAAOA,CAACA,MAAMA,CAACA,CAACA,CAACA,CAACA;wBAClDA,+CAA+CA;wBAC/CA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,IAAIA,GAAGA,MAAMA,CAACA,CAACA,CAACA,CAACA,MAAMA,EAAEA,CAACA,GAAGA,IAAIA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;4BACrDA,IAAIA,KAAKA,GAAGA,MAAMA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA;4BACzBA,EAAEA,CAACA,CAACA,CAACA,OAAOA,CAACA,kBAAkBA,CAACA,KAAKA,CAACA,CAACA,CAACA,CAACA;gCACrCA,QAAQA,CAACA;4BACbA,CAACA;4BACDA,EAAEA,CAACA,CAACA,KAAKA,GAAGA,aAAaA,CAACA,CAACA,CAACA;gCACxBA,aAAaA,GAAGA,aAAaA,IAAIA,eAAeA,CAACA;gCACjDA,QAAQA,CAACA;4BACbA,CAACA;4BACDA,IAAIA,WAAWA,GAAGA,YAAYA,CAACA,CAACA,CAACA,CAACA;4BAClCA,IAAIA,QAAQA,GAAGA,uBAAeA,CAACA,uBAAuBA,CAACA,WAAWA,CAACA,MAAMA,EAAEA,YAAYA,EAAEA,gBAAgBA,CAACA,CAACA;4BAE3GA,IAAIA,QAAQA,GAAGA,gBAAgBA;kCACzBA,mBAAWA,CAACA,YAAYA,CAACA,YAAYA,CAACA,CAACA,CAACA,CAACA,QAAQA,CAACA;kCAClDA,mBAAWA,CAACA,iBAAiBA,CAACA,YAAYA,CAACA,CAACA,CAACA,CAACA,MAAMA,CAACA,SAASA,CAACA,CAACA;4BAEtEA,IAAIA,GAAGA,GAAGA,QAAQA,CAACA,MAAMA,EAAEA,CAACA;4BAE5BA,IAAIA,KAAKA,GAAGA,gBAAgBA;kCACtBA,WAAWA,CAACA,sBAAsBA,CAACA,OAAOA,CAACA,CAACA,CAACA,IAAIA,OAAOA,CAACA,CAACA,CAACA,CAACA,OAAOA,EAAEA,MAAIA,CAACA,MAAMA,CAACA,cAAcA,EAAEA,uBAAeA,CAACA,aAAaA,CAACA,WAAWA,CAACA,MAAMA,CAACA,CAACA;kCACnJA,WAAWA,CAACA,kBAAkBA,CAACA,WAAWA,CAACA,MAAMA,CAACA,OAAOA,EAAEA,WAAWA,CAACA,MAAMA,CAACA,SAASA,CAACA,CAACA;4BAE/FA,IAAIA,gBAAgBA,GAAGA,aAAaA,IAAIA,SAASA,KAAKA,CAACA,GAAGA,SAASA,GAAGA,SAASA,CAACA;4BAChFA,IAAIA,WAAWA,GAAGA,QAAQA,CAACA,WAAWA,CAACA;4BACvCA,IAAIA,UAAUA,GAAWA,CAACA,CAACA;4BAC3BA,IAAIA,WAAWA,GAAsBA,sBAAcA,CAACA,iBAAiBA,CAACA,gBAAgBA,EAAEA,WAAWA,EAAEA,QAAQA,EAAEA,KAAKA,EAAEA,IAAIA,EAAEA,IAAIA,EAAEA,UAAUA,EAAEA,CAACA,CAACA,CAACA;4BACjJA,IAAIA,sBAAsBA,SAAmBA,CAACA;4BAE9CA,EAAEA,CAACA,CAACA,gBAAgBA,KAAKA,SAASA,CAACA,CAACA,CAACA;gCACjCA,sBAAsBA,GAAGA,sBAAcA,CAACA,iBAAiBA,CAACA,gBAAgBA,EAAEA,WAAWA,EAAEA,QAAQA,EAAEA,KAAKA,EAAEA,IAAIA,EAAEA,IAAIA,EAAEA,UAAUA,EAAEA,CAACA,EAAEA,gBAAgBA,CAACA,CAACA;4BAC3JA,CAACA;4BAEDA,IAAIA,IAAIA,GAAgBA;gCACpBA,GAAGA,EAAEA,GAAGA;gCACRA,IAAIA,EAAEA,QAAQA;gCACdA,IAAIA,EAAEA,KAAKA;gCACXA,KAAKA,EAAEA,KAAKA;gCACZA,QAAQA,EAAEA,KAAKA;gCACfA,QAAQA,EAAEA,QAAQA;gCAClBA,WAAWA,EAAEA,WAAWA;gCACxBA,sBAAsBA,EAAEA,sBAAsBA;gCAC9CA,iBAAiBA,EAAEA,sBAAcA,CAACA,eAAeA,CAACA,WAAWA,CAACA,MAAMA,EAAEA,gBAAgBA,CAACA;6BAC1FA,CAACA;4BACFA,EAAEA,CAACA,CAACA,aAAaA,IAAIA,UAAUA,CAACA,CAACA,CAACA;gCAC9BA,IAAIA,CAACA,mBAAmBA,GAAGA,KAAKA,GAAGA,UAAUA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA,GAAGA,KAAKA,GAAGA,CAACA,CAACA;4BACpEA,CAACA;4BACDA,QAAQA,CAACA,QAAQA,CAACA,IAAIA,CAACA,IAAIA,CAACA,CAACA;4BAC7BA,QAAQA,CAACA,IAAIA,CAACA,IAAIA,CAACA,CAACA;4BACpBA,gBAAgBA,CAACA,IAAIA,CAACA;gCAClBA,KAAKA,EAAEA,QAAQA;gCACfA,KAAKA,EAAEA,KAAKA;gCACZA,IAAIA,EAAEA,kBAAUA,CAACA,GAAGA;gCACpBA,QAAQA,EAAEA,QAAQA;gCAClBA,QAAQA,EAAEA,KAAKA;6BAClBA,CAACA,CAACA;wBACPA,CAACA;oBACLA,CAACA;oBACDA,IAAIA,CAACA,EAAEA,CAACA,CAACA,MAAIA,CAACA,UAAUA,IAAIA,MAAIA,CAACA,UAAUA,CAACA,MAAMA,GAAGA,CAACA,CAACA,CAACA,CAACA;wBACrDA,yCAAyCA;wBACzCA,IAAIA,cAAcA,GAAGA,MAAIA,CAACA,UAAUA,CAACA,CAACA,CAACA,CAACA;wBACxCA,IAAIA,gBAAgBA,GAAGA,YAAYA,CAACA,MAAMA,CAACA;wBAC3CA,IAAIA,cAAcA,GAAGA,sBAAcA,CAACA,eAAeA,CAACA,cAAcA,CAACA,MAAMA,EAAEA,gBAAgBA,CAACA,CAACA;wBAE7FA,WAAWA,GAAGA,cAAcA,CAACA,MAAMA,GAAGA,cAAcA,CAACA,MAAMA,CAACA,WAAWA,GAAGA,EAAEA,CAACA;wBAC7EA,IAAIA,WAAWA,GAAGA,SAASA,CAACA;wBAC5BA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,IAAIA,GAAGA,MAAMA,CAACA,MAAMA,EAAEA,CAACA,GAAGA,IAAIA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;4BAClDA,IAAIA,QAAQA,GAAgBA,0BAAkBA,CAACA,OAAOA,EAAEA;iCACnDA,YAAYA,CAACA,cAAcA,EAAEA,CAACA,CAACA;iCAC/BA,iBAAiBA,EAAEA,CAACA;4BAEzBA,IAAIA,GAAGA,GAAGA,IAAIA,CAACA,SAASA,CAACA,EAAEA,OAAOA,EAAEA,QAAQA,CAACA,MAAMA,EAAEA,EAAEA,KAAKA,EAAEA,CAACA,EAAEA,CAACA,CAACA;4BAEnEA,IAAIA,OAAOA,GAAGA,cAAcA,CAACA,OAAOA,IAAIA,cAAcA,CAACA,OAAOA,CAACA,CAACA,CAACA,CAACA;4BAElEA,IAAIA,KAAKA,GAAGA,WAAWA,CAACA,sBAAsBA,CAACA,OAAOA,EAAEA,cAAcA,CAACA,cAAcA,EAAEA,cAAcA,CAACA,MAAMA,CAACA,CAACA,CAACA,CAACA,CAACA;4BAEjHA,IAAIA,aAAaA,GAAGA,sBAAcA,CAACA,MAAMA,CAACA,cAAcA,CAACA,MAAMA,CAACA,CAACA,CAACA,EAAEA,cAAcA,CAACA,CAACA;4BACpFA,IAAIA,KAAKA,GAAGA,MAAMA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA;4BACzBA,IAAIA,gBAAgBA,GAAGA,aAAaA,IAAIA,UAAUA,GAAGA,UAAUA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA,GAAGA,SAASA,CAACA;4BAClFA,WAAWA,GAAGA,QAAQA,CAACA,WAAWA,CAACA;4BACnCA,IAAIA,WAAWA,GAAsBA,sBAAcA,CAACA,iBAAiBA,CAACA,gBAAgBA,EAAEA,WAAWA,EAAEA,aAAaA,EAAEA,KAAKA,CAACA,CAACA;4BAC3HA,IAAIA,sBAAsBA,SAAmBA,CAACA;4BAE9CA,EAAEA,CAACA,CAACA,gBAAgBA,KAAKA,SAASA,CAACA,CAACA,CAACA;gCACjCA,sBAAsBA,GAAGA,sBAAcA,CAACA,iBAAiBA,CAACA,gBAAgBA,EAAEA,WAAWA,EAAEA,aAAaA,EAAEA,KAAKA,EAAEA,IAAIA,EAAEA,IAAIA,EAAEA,CAACA,EAAEA,CAACA,EAAEA,gBAAgBA,CAACA,CAACA;4BACvJA,CAACA;4BAEDA,IAAIA,IAAIA,GAAgBA;gCACpBA,GAAGA,EAAEA,GAAGA;gCACRA,IAAIA,EAAEA,aAAaA;gCACnBA,KAAKA,EAAEA,KAAKA;gCACZA,QAAQA,EAAEA,KAAKA;gCACfA,QAAQA,EAAEA,QAAQA;gCAClBA,WAAWA,EAAEA,WAAWA;gCACxBA,sBAAsBA,EAAEA,sBAAsBA;gCAC9CA,iBAAiBA,EAAEA,gBAAgBA,KAAKA,CAACA,GAAGA,sBAAcA,CAACA,eAAeA,CAACA,MAAIA,CAACA,MAAMA,CAACA,CAACA,CAACA,CAACA,MAAMA,EAAEA,gBAAgBA,CAACA,GAAGA,cAAcA;6BACvIA,CAACA;4BAEFA,gBAAgBA,CAACA,IAAIA,CAACA;gCAClBA,KAAKA,EAAEA,aAAaA;gCACpBA,KAAKA,EAAEA,KAAKA;gCACZA,IAAIA,EAAEA,kBAAUA,CAACA,GAAGA;gCACpBA,QAAQA,EAAEA,QAAQA;gCAClBA,QAAQA,EAAEA,KAAKA;6BAClBA,CAACA,CAACA;4BAEHA,IAAIA,KAAKA,GAAGA,CAACA,CAACA;4BACdA,IAAIA,cAAcA,GAAGA,CAACA,CAACA,CAACA,gCAAgCA;4BAExDA,mGAAmGA;4BACnGA,uDAAuDA;4BACvDA,IAAIA,eAAeA,GAAGA,gBAAgBA,KAAKA,CAACA,IAAIA,CAACA,YAAYA,CAACA,CAACA,CAACA,CAACA,MAAMA,CAACA,SAASA,IAAIA,IAAIA,CAACA,CAACA;4BAC3FA,IAAIA,aAAaA,GAAGA,MAAMA,CAACA,CAACA,CAACA,CAACA;4BAE9BA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,IAAIA,GAAGA,aAAaA,CAACA,MAAMA,EAAEA,CAACA,GAAGA,IAAIA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;gCACzDA,IAAIA,WAAWA,GAAGA,YAAYA,CAACA,CAACA,CAACA,CAACA;gCAClCA,IAAIA,OAAKA,GAAGA,aAAaA,CAACA,CAACA,CAACA,CAACA;gCAC7BA,IAAIA,WAASA,SAAQA,CAACA;gCAEtBA,eAAeA,GAAGA,OAAKA,GAAGA,aAAaA,CAACA;gCACxCA,EAAEA,CAACA,CAACA,CAACA,OAAOA,CAACA,kBAAkBA,CAACA,OAAKA,CAACA,IAAIA,eAAeA,CAACA,CAACA,CAACA;oCACxDA,aAAaA,GAAGA,aAAaA,IAAIA,eAAeA,CAACA;oCACjDA,QAAQA,CAACA;gCACbA,CAACA;gCAEDA,KAAKA,IAAIA,OAAKA,CAACA;gCAEfA,EAAEA,CAACA,CAACA,aAAaA,CAACA,CAACA,CAACA;oCAChBA,WAASA,GAAGA,UAAUA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA;oCAC7BA,cAAcA,IAAIA,WAASA,CAACA;gCAChCA,CAACA;gCAEDA,EAAEA,CAACA,CAACA,CAACA,eAAeA,CAACA,CAACA,CAACA;oCACnBA,IAAIA,SAASA,GAAWA,IAAIA,CAACA;oCAC7BA,EAAEA,CAACA,CAACA,aAAaA,CAACA,CAACA,CAACA;wCAChBA,8BAA8BA;wCAC9BA,SAASA,GAAGA,WAAWA,CAACA,MAAMA,CAACA,WAAWA,CAACA;oCAC/CA,CAACA;oCACDA,IAAIA,CAACA,CAACA;wCACFA,wBAAwBA;wCACxBA,SAASA,GAAGA,WAAWA,CAACA,MAAMA,CAACA,SAASA,CAACA;oCAC7CA,CAACA;oCAEDA,IAAIA,iBAAiBA,GAAGA,WAAWA,GAAGA,WAAWA,CAACA,MAAMA,GAAGA,IAAIA,CAACA;oCAChEA,IAAIA,SAASA,GAAGA,aAAaA,GAAGA,WAAWA,CAACA,MAAMA,CAACA,SAASA,GAAGA,SAASA,CAACA;oCACzEA,IAAIA,aAAaA,GAAGA,0BAAkBA,CAACA,OAAOA,EAAEA;yCAC3CA,YAAYA,CAACA,cAAcA,EAAEA,CAACA,CAACA;yCAC/BA,UAAUA,CAACA,iBAAiBA,EAAEA,WAAWA,CAACA;yCAC1CA,WAAWA,CAACA,SAASA,CAACA;yCACtBA,iBAAiBA,EAAEA,CAACA;oCACzBA,IAAIA,QAAQA,GAAGA,IAAIA,CAACA,SAASA,CAACA,EAAEA,OAAOA,EAAEA,aAAaA,CAACA,MAAMA,EAAEA,EAAEA,KAAKA,EAAEA,CAACA,EAAEA,CAACA,CAACA;oCAE7EA,IAAIA,kBAAgBA,GAAGA,aAAaA,IAAIA,WAASA,KAAKA,CAACA,GAAGA,WAASA,GAAGA,SAASA,CAACA;oCAChFA,WAAWA,GAAGA,QAAQA,CAACA,WAAWA,CAACA;oCACnCA,IAAIA,aAAWA,GAAsBA,sBAAcA,CAACA,iBAAiBA,CAACA,gBAAgBA,EAAEA,WAAWA,EAAEA,aAAaA,EAAEA,OAAKA,EAAEA,IAAIA,EAAEA,IAAIA,EAAEA,CAACA,EAAEA,CAACA,CAACA,CAACA;oCAC7IA,IAAIA,wBAAsBA,SAAmBA,CAACA;oCAE9CA,EAAEA,CAACA,CAACA,kBAAgBA,KAAKA,SAASA,CAACA,CAACA,CAACA;wCACjCA,wBAAsBA,GAAGA,sBAAcA,CAACA,iBAAiBA,CAACA,gBAAgBA,EAAEA,WAAWA,EAAEA,aAAaA,EAAEA,OAAKA,EAAEA,IAAIA,EAAEA,IAAIA,EAAEA,CAACA,EAAEA,CAACA,EAAEA,kBAAgBA,CAACA,CAACA;oCACvJA,CAACA;oCAEDA,IAAIA,SAASA,GAAgBA;wCACzBA,GAAGA,EAAEA,QAAQA;wCACbA,IAAIA,EAAEA,SAASA;wCACfA,IAAIA,EAAEA,OAAKA;wCACXA,KAAKA,EAAEA,KAAKA;wCACZA,QAAQA,EAAEA,KAAKA;wCACfA,QAAQA,EAAEA,aAAaA;wCACvBA,WAAWA,EAAEA,aAAWA;wCACxBA,sBAAsBA,EAAEA,wBAAsBA;wCAC9CA,iBAAiBA,EAAEA,sBAAcA,CAACA,eAAeA,CAACA,WAAWA,CAACA,MAAMA,EAAEA,gBAAgBA,CAACA;qCAC1FA,CAACA;oCACFA,EAAEA,CAACA,CAACA,aAAaA,CAACA;wCACdA,SAASA,CAACA,mBAAmBA,GAAGA,OAAKA,GAAGA,WAASA,GAAGA,OAAKA,GAAGA,CAACA,CAACA;oCAClEA,EAAEA,CAACA,CAACA,IAAIA,CAACA,QAAQA,IAAIA,IAAIA,CAACA;wCACtBA,IAAIA,CAACA,QAAQA,GAAGA,EAAEA,CAACA;oCAEvBA,IAAIA,CAACA,QAAQA,CAACA,IAAIA,CAACA,SAASA,CAACA,CAACA;oCAC9BA,QAAQA,CAACA,IAAIA,CAACA,SAASA,CAACA,CAACA;gCAC7BA,CAACA;4BACLA,CAACA;4BAEDA,EAAEA,CAACA,CAACA,OAAOA,CAACA,kBAAkBA,CAACA,KAAKA,CAACA,CAACA,CAACA,CAACA;gCACpCA,IAAIA,CAACA,IAAIA,GAAGA,KAAKA,CAACA;gCAClBA,QAAQA,CAACA,QAAQA,CAACA,IAAIA,CAACA,IAAIA,CAACA,CAACA;gCAC7BA,QAAQA,CAACA,IAAIA,CAACA,IAAIA,CAACA,CAACA;4BACxBA,CAACA;4BACDA,EAAEA,CAACA,CAACA,aAAaA,CAACA;gCACdA,IAAIA,CAACA,mBAAmBA,GAAGA,KAAKA,GAAGA,cAAcA,GAAGA,KAAKA,GAAGA,CAACA,CAACA;wBACtEA,CAACA;oBACLA,CAACA;gBACLA,CAACA;gBAEDA,EAAEA,CAACA,CAACA,oBAAoBA,CAACA,CAACA,CAACA;oBACvBA,oBAAoBA,CAACA,yBAAyBA,CAACA,QAAQA,CAACA,CAACA;oBACzDA,oBAAoBA,CAACA,yBAAyBA,CAACA,gBAAgBA,CAACA,CAACA;gBACrEA,CAACA;gBAEDA,MAAMA,CAACA;oBACHA,IAAIA,EAAEA,QAAQA;oBACdA,aAAaA,EAAEA,aAAaA;oBAC5BA,UAAUA,EAAEA,EAAEA,KAAKA,EAAEA,WAAWA,EAAEA,UAAUA,EAAEA,gBAAgBA,EAAEA,QAAQA,EAAEA,iBAASA,CAACA,mBAAmBA,EAAEA;oBACzGA,kBAAkBA,EAAEA,aAAaA;oBACjCA,sBAAsBA,EAAEA,sBAAsBA;oBAC9CA,aAAaA,EAAEA,aAAaA;iBAC/BA,CAACA;YACNA,CAACA;YAEcJ,wCAAgCA,GAA/CA,UAAgDA,IAAyBA,EAAEA,aAAsBA;gBAC7FK,IAAIA,YAAYA,GAAGA,IAAIA,CAACA,MAAMA,CAACA;gBAC/BA,IAAIA,kBAA0BA,CAACA;gBAC/BA,EAAEA,CAACA,CAACA,YAAYA,IAAIA,CAACA,IAAIA,CAACA,UAAUA,IAAIA,IAAIA,CAACA,CAACA,CAACA,CAACA;oBAC5CA,kBAAkBA,GAAGA,CAACA,CAACA,CAACA,qFAAqFA;gBACjHA,CAACA;gBACDA,IAAIA,CAACA,EAAEA,CAACA,CAACA,YAAYA,IAAIA,IAAIA,CAACA,UAAUA,IAAIA,IAAIA,CAACA,UAAUA,CAACA,MAAMA,GAAGA,CAACA,CAACA,CAACA,CAACA;oBACrEA,kBAAkBA,GAAGA,IAAIA,CAACA,UAAUA,CAACA,CAACA,CAACA,CAACA,MAAMA,CAACA,MAAMA,CAACA;gBAC1DA,CAACA;gBAEDA,IAAIA,MAAMA,GAAeA,EAAEA,CAACA;gBAC5BA,IAAIA,UAAUA,GAAeA,EAAEA,CAACA;gBAChCA,IAAIA,UAAUA,GAAGA,CAACA,CAACA;gBACnBA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,kBAAkBA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;oBAC1CA,MAAMA,CAACA,IAAIA,CAACA,EAAEA,CAACA,CAACA;oBAChBA,EAAEA,CAACA,CAACA,aAAaA,CAACA;wBACdA,UAAUA,CAACA,IAAIA,CAACA,EAAEA,CAACA,CAACA;gBAC5BA,CAACA;gBAEDA,IAAIA,kBAA2BA,CAACA;gBAChCA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,YAAYA,CAACA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;oBAC3CA,IAAIA,WAAWA,GAAGA,YAAYA,CAACA,CAACA,CAACA,CAACA;oBAClCA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,kBAAkBA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;wBAC1CA,IAAIA,KAAKA,GAAGA,WAAWA,CAACA,MAAMA,CAACA,CAACA,CAACA,CAACA;wBAClCA,MAAMA,CAACA,CAACA,CAACA,CAACA,IAAIA,CAACA,KAAKA,CAACA,CAACA;wBACtBA,UAAUA,IAAIA,KAAKA,CAACA,KAAKA,CAACA,GAAGA,CAACA,GAAGA,KAAKA,CAACA;wBACvCA,EAAEA,CAACA,CAACA,aAAaA,CAACA,CAACA,CAACA;4BAChBA,IAAIA,SAASA,GAAGA,WAAWA,CAACA,UAAUA,CAACA,CAACA,CAACA,CAACA;4BAC1CA,EAAEA,CAACA,CAACA,CAACA,SAASA,CAACA;gCACXA,SAASA,GAAGA,CAACA,CAACA;4BAClBA,UAAUA,CAACA,CAACA,CAACA,CAACA,IAAIA,CAACA,SAASA,CAACA,CAACA;4BAC9BA,EAAEA,CAACA,CAACA,SAASA,GAAGA,KAAKA,CAACA;gCAClBA,kBAAkBA,GAAGA,IAAIA,CAACA;wBAClCA,CAACA;oBACLA,CAACA;gBACLA,CAACA;gBAEDA,MAAMA,CAACA;oBACHA,MAAMA,EAAEA,MAAMA;oBACdA,UAAUA,EAAEA,aAAaA,GAAGA,UAAUA,GAAGA,SAASA;oBAClDA,kBAAkBA,EAAEA,aAAaA,GAAGA,kBAAkBA,GAAGA,SAASA;oBAClEA,UAAUA,EAAEA,UAAUA;iBACzBA,CAACA;YACNA,CAACA;YAEcL,wBAAgBA,GAA/BA,UAAgCA,UAAkBA,EAAEA,QAAmBA;gBACnEM,IAAIA,SAASA,GAAGA,QAAQA,CAACA,KAAKA,GAAGA,QAAQA,CAACA,MAAMA,CAACA;gBACjDA,IAAIA,aAAaA,GAAGA,OAAOA,CAACA,YAAYA,GAAGA,SAASA,CAACA;gBACrDA,MAAMA,CAACA,aAAaA,GAAGA,UAAUA,CAACA;YACtCA,CAACA;YAEMN,wBAAMA,GAAbA,UAAcA,OAA4BA;gBACtCO,KAAKA,CAACA,WAAWA,CAACA,OAAOA,EAAEA,SAASA,CAACA,CAACA;gBAEtCA,IAAIA,SAASA,GAAGA,IAAIA,CAACA,SAASA,GAAGA,OAAOA,CAACA,SAASA,CAACA;gBACnDA,IAAIA,CAACA,eAAeA,GAAGA,OAAOA,CAACA,QAAQA,CAACA;gBACxCA,IAAIA,mBAAmBA,GAAGA,SAASA,IAAIA,SAASA,CAACA,MAAMA,GAAGA,CAACA,IAAIA,SAASA,CAACA,CAACA,CAACA,CAACA,WAAWA,GAAGA,SAASA,CAACA,CAACA,CAACA,CAACA,WAAWA,GAAGA,SAASA,CAACA;gBAC/HA,IAAIA,aAAaA,GAAGA,sBAAcA,CAACA,8BAA8BA,EAAEA,CAACA;gBACpEA,IAAIA,sBAAsBA,GAAGA,IAAIA,CAACA;gBAElCA,EAAEA,CAACA,CAACA,mBAAmBA,CAACA,CAACA,CAACA;oBACtBA,IAAIA,QAAQA,GAAGA,SAASA,CAACA,CAACA,CAACA,CAACA;oBAC5BA,IAAIA,gBAAgBA,GAAGA,QAAQA,CAACA,QAAQA,CAACA;oBACzCA,IAAIA,OAAwBA,CAACA;oBAC7BA,EAAEA,CAACA,CAACA,gBAAgBA,CAACA;wBACjBA,OAAOA,GAAGA,gBAAgBA,CAACA,OAAOA,CAACA;oBAEvCA,EAAEA,CAACA,CAACA,OAAOA,CAACA,CAACA,CAACA;wBACVA,sBAAsBA,GAAGA,OAAOA,CAACA,QAAQA,CAACA,CAACA;oBAC/CA,CAACA;oBAEDA,IAAIA,CAACA,IAAIA,GAAGA,OAAOA,CAACA,SAASA,CAACA,QAAQA,EAAEA,IAAIA,CAACA,MAAMA,EAAEA,aAAaA,EAAEA,IAAIA,CAACA,oBAAoBA,EAAEA,IAAIA,CAACA,eAAeA,EAAEA,sBAAsBA,CAACA,CAACA;gBACjJA,CAACA;gBACDA,IAAIA,CAACA,CAACA;oBACFA,IAAIA,QAAQA,GAAgBA;wBACxBA,GAAGA,EAAEA,MAAMA;wBACXA,IAAIA,EAAEA,MAAMA;wBACZA,QAAQA,EAAEA,EAAEA;wBACZA,QAAQA,EAAEA,KAAKA;wBACfA,mBAAmBA,EAAEA,CAACA;wBACtBA,QAAQA,EAAEA,mBAAWA,CAACA,UAAUA,EAAEA;wBAClCA,KAAKA,EAAEA,SAASA;qBACnBA,CAACA;oBACFA,IAAIA,UAAUA,GAAeA,EAAEA,KAAKA,EAAEA,EAAEA,EAAEA,UAAUA,EAAEA,EAAEA,EAAEA,CAACA;oBAC3DA,IAAIA,WAAWA,GAAgBA;wBAC3BA,IAAIA,EAAEA,QAAQA;wBACdA,aAAaA,EAAEA,KAAKA;wBACpBA,UAAUA,EAAEA,UAAUA;wBACtBA,kBAAkBA,EAAEA,aAAaA;wBACjCA,aAAaA,EAAEA,KAAKA;qBACvBA,CAACA;oBACFA,IAAIA,CAACA,IAAIA,GAAGA,WAAWA,CAACA;gBAC5BA,CAACA;gBAEDA,IAAIA,CAACA,cAAcA,CAACA,OAAOA,CAACA,kBAAkBA,CAACA,CAACA;gBAEhDA,EAAEA,CAACA,CAACA,SAASA,CAACA,CAACA,CAACA;oBACZA,IAAIA,QAAQA,GAAGA,+BAAuBA,CAClCA,SAASA,EACTA,KAAKA,CAACA,eAAeA,EACrBA,KAAKA,CAACA,4BAA4BA,EAClCA,KAAKA,CAACA,4BAA4BA,CAACA,CAACA;oBAExCA,EAAEA,CAACA,CAACA,IAAIA,CAACA,IAAIA,CAACA,aAAaA,CAACA,CAACA,CAACA;wBAC1BA,QAAQA,CAACA,OAAOA,CAACA,IAAIA,6BAAqBA,EAAEA,CAACA,CAACA;oBAClDA,CAACA;oBAEDA,IAAIA,CAACA,WAAWA,CAACA,WAAWA,CAACA,QAAQA,CAACA,CAACA;gBAC3CA,CAACA;YACLA,CAACA;YAEDP,8DAA8DA;YACvDA,+BAAaA,GAApBA,UAAqBA,OAAiCA;gBAClDQ,IAAIA,CAACA,MAAMA,CAACA;oBACRA,kBAAkBA,EAAEA,OAAOA,CAACA,kBAAkBA;oBAC9CA,SAASA,EAAEA,OAAOA,CAACA,SAASA;oBAC5BA,QAAQA,EAAEA,IAAIA,CAACA,eAAeA;iBACjCA,CAACA,CAACA;YACPA,CAACA;YAEDR,8DAA8DA;YACvDA,4BAAUA,GAAjBA,UAAkBA,QAAmBA;gBACjCS,IAAIA,CAACA,MAAMA,CAACA;oBACRA,kBAAkBA,EAAEA,IAAIA;oBACxBA,SAASA,EAAEA,IAAIA,CAACA,SAASA;oBACzBA,QAAQA,EAAEA,QAAQA;iBACrBA,CAACA,CAACA;YACPA,CAACA;YAEMT,kCAAgBA,GAAvBA;gBACIU,EAAEA,CAACA,CAACA,IAAIA,CAACA,oBAAoBA,CAACA;oBAC1BA,IAAIA,CAACA,oBAAoBA,CAACA,cAAcA,EAAEA,CAACA;YACnDA,CAACA;YAEMV,0CAAwBA,GAA/BA,UAAgCA,OAA8CA;gBAC1EW,IAAIA,IAAIA,GAAGA,IAAIA,CAACA,IAAIA,CAACA;gBACrBA,EAAEA,CAACA,CAACA,CAACA,IAAIA,CAACA;oBACNA,MAAMA,CAACA;gBAEXA,IAAIA,UAAUA,GAAGA,OAAOA,CAACA,UAAUA,EAC/BA,WAAWA,GAAGA,IAAIA,gCAAwBA,EAAEA,CAACA;gBAEjDA,IAAIA,kBAAkBA,GAAGA,IAAIA,CAACA,IAAIA,CAACA,kBAAkBA;sBAC/CA,IAAIA,CAACA,IAAIA,CAACA,kBAAkBA;sBAC5BA,sBAAcA,CAACA,8BAA8BA,EAAEA,CAACA;gBAEtDA,MAAMA,CAACA,CAACA,UAAUA,CAACA,CAACA,CAACA;oBACjBA,KAAKA,WAAWA;wBACZA,IAAIA,WAAWA,GAAwBA,IAAIA,CAACA,SAASA,IAAIA,IAAIA,CAACA,SAASA,CAACA,MAAMA,GAAGA,CAACA,IAAIA,IAAIA,CAACA,SAASA,CAACA,CAACA,CAACA,IAAIA,IAAIA,CAACA,SAASA,CAACA,CAACA,CAACA,CAACA,WAAWA,CAACA;wBACzIA,IAAIA,eAAeA,GAAGA,qBAAaA,CAACA,eAAeA,CAACA,WAAWA,CAACA,CAACA;wBACjEA,EAAEA,CAACA,CAACA,CAACA,eAAeA,CAACA;4BACjBA,IAAIA,CAACA,mBAAmBA,CAACA,WAAWA,EAAEA,IAAIA,CAACA,CAACA;wBAChDA,KAAKA,CAACA;oBACVA,KAAKA,QAAQA;wBACTA,MAAMA,CAACA,IAAIA,CAACA,eAAeA,CAACA,IAAIA,CAACA,CAACA;oBACtCA,KAAKA,QAAQA;wBACTA,IAAIA,mBAAmBA,GAAoCA;4BACvDA,WAAWA,EAAEA,WAAWA;4BACxBA,kBAAkBA,EAAEA,kBAAkBA;4BACtCA,IAAIA,EAAEA,IAAIA;4BACVA,YAAYA,EAAEA,IAAIA;4BAClBA,SAASA,EAAEA,IAAIA;yBAClBA,CAACA;wBACFA,sBAAcA,CAACA,mBAAmBA,CAACA,mBAAmBA,CAACA,CAACA;wBACxDA,KAAKA,CAACA;oBACVA,KAAKA,gBAAgBA;wBACjBA,sBAAcA,CAACA,uBAAuBA,CAACA,WAAWA,EAAEA,kBAAkBA,EAAEA,KAAKA,CAACA,cAAcA,EAAEA,IAAIA,CAACA,oBAAoBA,CAACA,CAACA;wBACzHA,KAAKA,CAACA;gBACdA,CAACA;gBAEDA,MAAMA,CAACA,WAAWA,CAACA,QAAQA,EAAEA,CAACA;YAClCA,CAACA;YAEOX,qCAAmBA,GAA3BA,UAA4BA,WAAqCA,EAAEA,IAAiBA;gBAChFY,IAAIA,YAAYA,GAAGA,IAAIA,CAACA,IAAIA,CAACA,QAAQA,CAACA;gBACtCA,EAAEA,CAACA,CAACA,CAACA,CAACA,OAAOA,CAACA,YAAYA,CAACA,CAACA;oBACxBA,MAAMA,CAACA;gBAEXA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,YAAYA,CAACA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;oBAC3CA,IAAIA,WAAWA,GAAgBA,YAAYA,CAACA,CAACA,CAACA,CAACA;oBAC/CA,WAAWA,CAACA,YAAYA,CAACA;wBACrBA,WAAWA,EAAEA,WAAWA,CAACA,IAAIA;wBAC7BA,QAAQA,EAAEA,WAAWA,CAACA,QAAQA,CAACA,WAAWA,EAAEA;wBAC5CA,UAAUA,EAAEA;4BACRA,IAAIA,EAAEA,EAAEA,KAAKA,EAAEA,EAAEA,KAAKA,EAAEA,WAAWA,CAACA,KAAKA,EAAEA,EAAEA;yBAChDA;wBACDA,UAAUA,EAAEA,WAAWA;qBAC1BA,CAACA,CAACA;gBACPA,CAACA;YACLA,CAACA;YAEOZ,iCAAeA,GAAvBA,UAAwBA,IAAiBA;gBACrCa,IAAIA,sBAAsBA,GAAoBA,EAAEA,MAAMA,EAAEA,IAAIA,CAACA,sBAAsBA,EAAEA,CAACA;gBAEtFA,IAAIA,IAAIA,GAAGA,uBAAeA,CAACA,QAAQA,CAACA,sBAAsBA,EAAEA,oBAAYA,CAACA,MAAMA,CAACA,IAAIA,EAAEA,IAAIA,CAACA,MAAMA,CAACA,SAASA,EAAEA,CAACA,CAACA;gBAC/GA,IAAIA,SAASA,GAAGA,uBAAeA,CAACA,QAAQA,CAACA,sBAAsBA,EAAEA,oBAAYA,CAACA,MAAMA,CAACA,SAASA,EAAEA,IAAIA,CAACA,CAACA;gBACtGA,IAAIA,SAASA,GAAGA,uBAAeA,CAACA,QAAQA,CAACA,sBAAsBA,EAAEA,oBAAYA,CAACA,MAAMA,CAACA,SAASA,EAAEA,IAAIA,CAACA,IAAIA,CAACA,UAAUA,CAACA,KAAKA,CAACA,CAACA;gBAC5HA,IAAIA,UAAUA,GAAGA,sBAAcA,CAACA,QAAQA,CAACA,sBAAsBA,EAAEA,mBAAWA,CAACA,UAAUA,EAAEA,IAAIA,CAACA,IAAIA,CAACA,UAAUA,GAAGA,IAAIA,CAACA,IAAIA,CAACA,UAAUA,CAACA,UAAUA,GAAGA,kBAAUA,CAACA,2BAA2BA,CAACA,CAACA;gBAC1LA,IAAIA,aAAaA,GAAGA,sBAAcA,CAACA,QAAQA,CAACA,sBAAsBA,EAAEA,mBAAWA,CAACA,QAAQA,EAAEA,IAAIA,CAACA,IAAIA,CAACA,UAAUA,IAAIA,IAAIA,CAACA,IAAIA,CAACA,UAAUA,CAACA,QAAQA,GAAGA,IAAIA,CAACA,IAAIA,CAACA,UAAUA,CAACA,QAAQA,GAAGA,iBAASA,CAACA,mBAAmBA,CAACA,CAACA;gBAEjNA,MAAMA,CAACA,CAACA;wBACJA,QAAQA,EAAEA,IAAIA;wBACdA,UAAUA,EAAEA,QAAQA;wBACpBA,UAAUA,EAAEA;4BACRA,IAAIA,EAAEA,IAAIA;4BACVA,QAAQA,EAAEA,sBAAcA,CAACA,IAAIA,CAACA,MAAMA,CAACA,cAAcA,EAAEA,CAACA;4BACtDA,SAASA,EAAEA,SAASA;4BACpBA,SAASA,EAAEA,SAASA;4BACpBA,UAAUA,EAAEA,UAAUA;4BACtBA,QAAQA,EAAEA,aAAaA;yBAC1BA;qBACJA,CAACA,CAACA;YACPA,CAACA;YAEcb,0BAAkBA,GAAjCA,UAAkCA,KAAUA;gBACxCc,EAAEA,CAACA,CAACA,CAACA,KAAKA,CAACA;oBACPA,MAAMA,CAACA,KAAKA,CAACA;gBAEjBA,MAAMA,CAACA,KAAKA,GAAGA,CAACA,CAACA;YACrBA,CAACA;YAEOd,sCAAoBA,GAA5BA;gBACIe,IAAIA,aAAaA,GAAGA,IAAIA,CAACA,MAAMA,CAACA,UAAUA,EAAEA,CAACA;gBAC7CA,MAAMA,CAACA;oBACHA,MAAMA,EAAEA,IAAIA,CAACA,eAAeA,CAACA,MAAMA,GAAGA,aAAaA,CAACA,MAAMA;oBAC1DA,KAAKA,EAAEA,IAAIA,CAACA,eAAeA,CAACA,KAAKA,GAAGA,aAAaA,CAACA,KAAKA;iBAC1DA,CAACA;YACNA,CAACA;YAEOf,iDAA+BA,GAAvCA,UAAwCA,QAAoBA;gBAApBgB,wBAAoBA,GAApBA,YAAoBA;gBAExDA,IAAIA,QAAQA,GAAGA,IAAIA,CAACA,oBAAoBA,EAAEA,CAACA;gBAE3CA,IAAIA,CAACA,GAAGA,CAACA,IAAIA,CAACA;oBACVA,KAAKA,EAAEA,QAAQA,CAACA,KAAKA;oBACrBA,MAAMA,EAAEA,QAAQA,CAACA,MAAMA;iBAC1BA,CAACA,CAACA;gBACHA,cAAMA,CAACA,iBAAiBA,CAACA,IAAIA,CAACA,GAAGA,EAAEA,IAAIA,CAACA,MAAMA,CAACA,CAACA;gBAEhDA,eAAOA,CAACA,6BAA6BA,CAACA,IAAIA,CAACA,OAAOA,CAACA,CAACA;YACxDA,CAACA;YAEchB,+BAAuBA,GAAtCA,UAAuCA,IAAyBA;gBAC5DiB,IAAIA,QAAQA,GAAGA,IAAIA,CAACA,QAAQA,CAACA;gBAC7BA,EAAEA,CAACA,CAACA,CAACA,QAAQA,CAACA;oBACVA,MAAMA,CAACA,KAAKA,CAACA;gBAEjBA,IAAIA,KAAKA,GAAGA,QAAQA,CAACA,MAAMA,CAACA;gBAC5BA,EAAEA,CAACA,CAACA,KAAKA,KAAKA,CAACA,CAACA;oBACZA,MAAMA,CAACA,KAAKA,CAACA;gBAEjBA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,KAAKA,GAAGA,CAACA,EAAEA,CAACA,IAAIA,CAACA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;oBAClCA,EAAEA,CAACA,CAAeA,QAAQA,CAACA,CAACA,CAAEA,CAACA,QAAQA,CAACA,WAAWA,EAAEA,CAACA;wBAClDA,MAAMA,CAACA,IAAIA,CAACA;gBACpBA,CAACA;gBAEDA,MAAMA,CAACA,KAAKA,CAACA;YACjBA,CAACA;YAEcjB,4BAAoBA,GAAnCA,UAAoCA,IAAiBA;gBACjDkB,wCAAwCA;gBACxCA,EAAEA,CAACA,CAACA,IAAIA,CAACA,KAAKA,KAAKA,CAACA,CAACA;oBACjBA,MAAMA,CAACA,KAAKA,CAACA;gBAEjBA,EAAEA,CAACA,CAACA,CAACA,CAACA,OAAOA,CAACA,IAAIA,CAACA,IAAIA,CAACA,CAACA;oBACrBA,MAAMA,CAACA,KAAKA,CAACA;gBAEjBA,+DAA+DA;gBAC/DA,IAAIA,cAAcA,GAAGA,IAAIA,CAACA,EAAEA,GAAGA,OAAOA,CAACA,UAAUA,GAAGA,CAACA,CAACA;gBACtDA,EAAEA,CAACA,CAACA,cAAcA,GAAGA,OAAOA,CAACA,yBAAyBA,CAACA;oBACnDA,MAAMA,CAACA,KAAKA,CAACA;gBAEjBA,8CAA8CA;gBAC9CA,IAAIA,oBAAoBA,GAAGA,OAAOA,CAACA,kBAAkBA,GAAGA,OAAOA,CAACA,UAAUA,GAAGA,CAACA,CAACA;gBAC/EA,EAAEA,CAACA,CAACA,IAAIA,CAACA,EAAEA,GAAGA,oBAAoBA,CAACA;oBAC/BA,MAAMA,CAACA,KAAKA,CAACA;gBAEjBA,MAAMA,CAACA,IAAIA,CAACA;YAChBA,CAACA;YAEclB,4BAAoBA,GAAnCA,UAAoCA,IAAiBA,EAAEA,aAAuCA;gBAC1FmB,8CAA8CA;gBAC9CA,EAAEA,CAACA,CAACA,IAAIA,CAACA,KAAKA,GAAGA,CAACA,IAAIA,IAAIA,CAACA,KAAKA,GAAGA,CAACA,CAACA;oBACjCA,MAAMA,CAACA,KAAKA,CAACA;gBAEjBA,yFAAyFA;gBACzFA,EAAEA,CAACA,CAACA,IAAIA,CAACA,KAAKA,KAAKA,CAACA,IAAIA,CAACA,IAAIA,CAACA,QAAQA,IAAIA,CAACA,aAAaA,CAACA,IAAIA,CAACA,CAACA,CAACA,CAACA;oBAC7DA,MAAMA,CAACA,KAAKA,CAACA;gBACjBA,CAACA;gBAEDA,EAAEA,CAACA,CAACA,CAACA,CAACA,OAAOA,CAACA,IAAIA,CAACA,IAAIA,CAACA,CAACA;oBACrBA,MAAMA,CAACA,KAAKA,CAACA;gBAEjBA,+DAA+DA;gBAC/DA,IAAIA,cAAcA,GAAGA,IAAIA,CAACA,EAAEA,GAAGA,OAAOA,CAACA,UAAUA,GAAGA,CAACA,CAACA;gBACtDA,EAAEA,CAACA,CAACA,cAAcA,GAAGA,OAAOA,CAACA,yBAAyBA,CAACA;oBACnDA,MAAMA,CAACA,KAAKA,CAACA;gBAEjBA,8CAA8CA;gBAC9CA,IAAIA,oBAAoBA,GAAGA,OAAOA,CAACA,kBAAkBA,GAAGA,OAAOA,CAACA,UAAUA,GAAGA,CAACA,CAACA;gBAC/EA,EAAEA,CAACA,CAACA,IAAIA,CAACA,EAAEA,GAAGA,oBAAoBA,CAACA;oBAC/BA,MAAMA,CAACA,KAAKA,CAACA;gBAEjBA,EAAEA,CAACA,CAACA,IAAIA,CAACA,KAAKA,KAAKA,CAACA,CAACA,CAACA,CAACA;oBACnBA,IAAIA,QAAMA,GAAGA,IAAIA,CAACA,MAAMA,CAACA;oBACzBA,IAAIA,OAAOA,GAAGA,IAAIA,CAACA,GAAGA,CAACA,QAAMA,CAACA,CAACA,GAAGA,OAAOA,CAACA,kBAAkBA,GAAGA,OAAOA,CAACA,UAAUA,GAAGA,CAACA,EAAEA,IAAIA,CAACA,CAACA,CAACA,CAACA;oBAE/FA,gCAAgCA;oBAChCA,EAAEA,CAACA,CAACA,IAAIA,CAACA,CAACA,GAAGA,IAAIA,CAACA,EAAEA,GAAGA,OAAOA,GAAGA,oBAAoBA,CAACA;wBAClDA,MAAMA,CAACA,KAAKA,CAACA;gBACrBA,CAACA;gBAEDA,MAAMA,CAACA,IAAIA,CAACA;YAChBA,CAACA;YAEcnB,4BAAoBA,GAAnCA,UAAoCA,IAAiBA,EAAEA,cAAwCA,EAAEA,gBAAwBA,EAAEA,eAA6CA;gBACpKoB,IAAIA,uBAAuBA,GAAGA,IAAIA,CAACA,EAAEA,GAAGA,OAAOA,CAACA,UAAUA,GAAGA,CAACA,CAACA;gBAC/DA,IAAIA,kBAAkBA,GAAGA,OAAOA,CAACA,wBAAwBA,CAACA;gBAC1DA,IAAIA,cAAcA,GAA2BA;oBACzCA,IAAIA,EAAEA,IAAIA,CAACA,IAAIA;oBACfA,UAAUA,EAAEA,kBAAkBA,CAACA,UAAUA;oBACzCA,QAAQA,EAAEA,kBAAkBA,CAACA,QAAQA;iBACxCA,CAACA;gBAEFA,MAAMA,CAACA,8BAAsBA,CAACA,wBAAwBA,CAACA,cAAcA,EAAEA,uBAAuBA,CAACA,CAACA;YACpGA,CAACA;YAEcpB,4BAAoBA,GAAnCA,UAAoCA,IAAiBA,EAAEA,cAAwCA,EAAEA,gBAAwBA,EAAEA,eAA6CA;gBACpKqB,IAAIA,uBAAuBA,GAAGA,IAAIA,CAACA,EAAEA,GAAGA,OAAOA,CAACA,UAAUA,GAAGA,CAACA,CAACA;gBAC/DA,IAAIA,KAAKA,GAAGA,IAAIA,CAACA,IAAIA,CAACA;gBACtBA,EAAEA,CAACA,CAACA,cAAcA,CAACA,IAAIA,CAACA,CAACA,CAACA;oBACtBA,IAAIA,gBAAgBA,GAAGA,eAAeA,CAACA,WAAWA,CAACA,IAAIA,CAACA,iBAAiBA,EAAEA,cAAcA,EAAEA,gBAAgBA,CAACA,CAACA;oBAC7GA,uBAAuBA;oBACvBA,KAAKA,GAAGA,sBAAcA,CAACA,qBAAqBA,CAACA;wBACzCA,KAAKA,EAAEA,IAAIA,CAACA,KAAKA,EAAEA,QAAQA,EAC3BA,uBAAuBA,EAAEA,SAASA,EAAEA,gBAAgBA;qBACvDA,CAACA,CAACA;oBACHA,0EAA0EA;oBAC1EA,EAAEA,CAACA,CAACA,cAAcA,CAACA,YAAYA,IAAIA,IAAIA,CAACA,KAAKA,KAAKA,CAACA,CAACA;wBAChDA,KAAKA,GAAGA,sBAAcA,CAACA,qBAAqBA,CAACA;4BACzCA,KAAKA,EAAEA,IAAIA,CAACA,IAAIA;4BAChBA,QAAQA,EAAEA,uBAAuBA;yBACpCA,CAACA,GAAGA,GAAGA,GAAGA,KAAKA,CAACA;gBACzBA,CAACA;gBAEDA,MAAMA,CAACA,sBAAcA,CAACA,qBAAqBA,CAACA;oBACxCA,KAAKA,EAAEA,KAAKA;oBACZA,QAAQA,EAAEA,uBAAuBA;oBACjCA,QAAQA,EAAEA,cAAcA,CAACA,QAAQA;iBACpCA,CAACA,CAACA;YACPA,CAACA;YAEarB,eAAOA,GAArBA,UAAsBA,CAAcA,EAAEA,eAAwBA;gBAC1DsB,2GAA2GA;gBAE3GA,8FAA8FA;gBAC9FA,EAAEA,CAACA,CAACA,CAACA,CAACA,KAAKA,GAAGA,CAACA,IAAIA,CAACA,CAACA,CAACA,QAAQA,CAACA,WAAWA,EAAEA,IAAIA,CAACA,eAAeA,CAACA;oBAC7DA,MAAMA,CAACA,YAAYA,CAACA,SAASA,CAACA;gBAElCA,mFAAmFA;gBACnFA,EAAEA,CAACA,CAACA,OAAOA,CAACA,uBAAuBA,CAACA,CAACA,CAACA,CAACA;oBACnCA,MAAMA,CAACA,YAAYA,CAACA,SAASA,CAACA;gBAElCA,MAAMA,CAACA,CAACA,CAACA,KAAKA,CAACA;YACnBA,CAACA;YAEatB,sBAAcA,GAA5BA,UAA6BA,CAAcA,EAAEA,YAAqBA,EAAEA,aAAsBA,EAAEA,eAAwBA;gBAChHuB,EAAEA,CAACA,CAACA,aAAaA,CAACA,CAACA,CAACA;oBAChBA,EAAEA,CAACA,CAACA,eAAeA,CAACA;wBAChBA,MAAMA,CAACA,IAAIA,CAACA;oBAChBA,MAAMA,CAACA,OAAOA,CAACA,kBAAkBA,CAACA,QAAQA,EAAEA,CAACA;gBACjDA,CAACA;gBAEDA,EAAEA,CAACA,CAACA,CAACA,YAAYA,IAAIA,CAACA,CAACA,QAAQA,CAACA;oBAC5BA,MAAMA,CAACA,IAAIA,CAACA;gBAEhBA,wHAAwHA;gBACxHA,EAAEA,CAACA,CAACA,CAACA,CAACA,KAAKA,GAAGA,CAACA,IAAkBA,CAACA,CAACA,MAAOA,CAACA,QAAQA,CAACA;oBAChDA,MAAMA,CAACA,IAAIA,CAACA;gBAEhBA,6EAA6EA;gBAC7EA,EAAEA,CAACA,CAACA,OAAOA,CAACA,uBAAuBA,CAACA,CAACA,CAACA,CAACA;oBACnCA,MAAMA,CAACA,IAAIA,CAACA;gBAEhBA,MAAMA,CAACA,OAAOA,CAACA,kBAAkBA,CAACA,QAAQA,EAAEA,CAACA;YACjDA,CAACA;YAEOvB,gCAAcA,GAAtBA,UAAuBA,kBAA2BA;gBAC9CwB,IAAIA,IAAIA,GAAGA,IAAIA,CAACA,IAAIA,CAACA;gBACrBA,IAAIA,aAAaA,GAAGA,IAAIA,IAAIA,IAAIA,CAACA,aAAaA,CAACA;gBAC/CA,IAAIA,aAAaA,GAAGA,IAAIA,GAAGA,IAAIA,CAACA,kBAAkBA,GAAGA,IAAIA,CAACA;gBAC1DA,IAAIA,QAAQA,GAAGA,sBAAcA,CAACA,oBAAoBA,CAACA,IAAIA,CAACA,QAAQA,EAAEA,kBAAkBA,CAACA,CAACA;gBAEtFA,EAAEA,CAACA,CAACA,CAACA,CAACA,IAAIA,CAACA,OAAOA,CAACA,aAAaA,IAAIA,IAAIA,CAACA,OAAOA,CAACA,aAAaA,CAACA,mBAAmBA,CAACA,IAAIA,IAAIA,CAACA,IAAIA,CAACA,CAACA,CAACA;oBAC/FA,IAAIA,CAACA,YAAYA,EAAEA,CAACA;gBACxBA,CAACA;gBAEDA,IAAIA,CAACA,+BAA+BA,CAACA,QAAQA,CAACA,CAACA;gBAC/CA,IAAIA,QAAQA,GAAGA,IAAIA,CAACA,oBAAoBA,EAAEA,CAACA;gBAE3CA,IAAIA,CAACA,OAAOA,CAACA,IAAIA,CAACA,CAACA,QAAQA,CAACA,KAAKA,EAAEA,QAAQA,CAACA,MAAMA,CAACA,CAACA,CAACA;gBAErDA,iCAAiCA;gBACjCA,IAAIA,KAAKA,GAAGA,CAACA,IAAIA,IAAIA,IAAIA,CAACA,IAAIA,CAACA,GAAGA,IAAIA,CAACA,OAAOA,CAACA,KAAKA,CAACA,IAAIA,CAACA,IAAIA,CAACA,GAAGA,EAAEA,CAACA;gBACrEA,6GAA6GA;gBAC7GA,IAAIA,cAAcA,GAAGA,KAAKA,CAACA,MAAMA,CAACA,UAACA,KAAkBA,IAAKA,OAAAA,KAAKA,CAACA,mBAAmBA,IAAIA,IAAIA,IAAIA,CAACA,CAACA,KAAKA,CAACA,QAAQA,IAAIA,KAAKA,CAACA,QAAQA,CAACA,MAAMA,KAAKA,CAACA,CAACA,EAArFA,CAAqFA,CAACA,CAACA;gBACjJA,IAAIA,iBAAiBA,GAAGA,EAAEA,CAACA;gBAC3BA,IAAIA,iBAAiBA,GAAGA,EAAEA,CAACA;gBAC3BA,IAAIA,gBAAgBA,GAAWA,IAAIA,CAACA;gBAEpCA,8DAA8DA;gBAC9DA,EAAEA,CAACA,CAACA,aAAaA,CAACA,YAAYA,CAACA,CAACA,CAACA;oBAC7BA,iBAAiBA,GAAGA,KAAKA,CAACA,MAAMA,CAACA,UAACA,CAAcA,IAAKA,OAAAA,OAAOA,CAACA,oBAAoBA,CAACA,CAACA,CAACA,EAA/BA,CAA+BA,CAACA,CAACA;gBAC1FA,CAACA;gBAEDA,sEAAsEA;gBACtEA,EAAEA,CAACA,CAACA,aAAaA,CAACA,IAAIA,IAAIA,aAAaA,CAACA,YAAYA,CAACA,CAACA,CAACA;oBACnDA,iBAAiBA,GAAGA,KAAKA,CAACA,MAAMA,CAACA,UAACA,CAAcA,IAAKA,OAAAA,OAAOA,CAACA,oBAAoBA,CAACA,CAACA,EAAEA,aAAaA,CAACA,EAA9CA,CAA8CA,CAACA,CAACA;oBAErGA,2FAA2FA;oBAC3FA,EAAEA,CAACA,CAACA,aAAaA,CAACA,YAAYA,KAAKA,CAACA,CAACA;wBACjCA,gBAAgBA,GAAWA,EAAEA,CAACA,GAAGA,CAACA,iBAAiBA,EAAEA,UAACA,CAAcA,IAAKA,OAAAA,IAAIA,CAACA,GAAGA,CAACA,CAACA,CAACA,KAAKA,CAACA,EAAjBA,CAAiBA,CAACA,CAACA;gBACpGA,CAACA;gBAEDA,IAAIA,aAAaA,GAAGA,OAAOA,CAACA,SAASA,CAACA,aAAaA,EAAEA,gBAAgBA,CAACA,CAACA;gBACvEA,IAAIA,MAA0BA,CAACA;gBAC/BA,IAAIA,eAAmCA,CAACA;gBACxCA,IAAIA,WAA+BA,CAACA;gBACpCA,IAAIA,WAA+BA,CAACA;gBACpCA,IAAIA,MAA8BA,CAACA;gBACnCA,EAAEA,CAACA,CAACA,IAAIA,CAACA,QAAQA,IAAIA,CAACA,kBAAkBA,CAACA,CAACA,CAACA;oBACvCA,IAAIA,OAAOA,GAA4BA;wBACnCA,SAASA,EAAEA,IAAIA;wBACfA,KAAKA,EAAEA,KAAKA;wBACZA,cAAcA,EAAEA,cAAcA;wBAC9BA,iBAAiBA,EAAEA,iBAAiBA;wBACpCA,iBAAiBA,EAAEA,iBAAiBA;wBACpCA,oBAAoBA,EAAEA,IAAIA,CAACA,oBAAoBA;wBAC/CA,oBAAoBA,EAAEA,IAAIA,CAACA,oBAAoBA;wBAC/CA,oBAAoBA,EAAEA,IAAIA,CAACA,oBAAoBA;wBAC/CA,MAAMA,EAAEA,aAAaA;wBACrBA,aAAaA,EAAEA,aAAaA;qBAC/BA,CAACA;oBACFA,MAAMA,GAAGA,IAAIA,CAACA,QAAQA,CAACA,OAAOA,CAACA,OAAOA,CAACA,CAACA;oBACxCA,MAAMA,GAAGA,MAAMA,CAACA,MAAMA,CAACA;oBACvBA,eAAeA,GAAGA,MAAMA,CAACA,eAAeA,CAACA;oBACzCA,WAAWA,GAAGA,MAAMA,CAACA,WAAWA,CAACA;oBACjCA,WAAWA,GAAGA,MAAMA,CAACA,WAAWA,CAACA;gBACrCA,CAACA;gBACDA,EAAEA,CAACA,CAACA,CAACA,IAAIA,CAACA,QAAQA,IAAIA,kBAAkBA,IAAIA,MAAMA,CAACA,MAAMA,CAACA,CAACA,CAACA;oBACxDA,IAAIA,YAAYA,GAAGA,IAAIA,CAACA,oBAAoBA,IAAIA,IAAIA,CAACA,oBAAoBA,CAACA,YAAYA,EAAEA,CAACA;oBACzFA,IAAIA,oBAAoBA,GAAGA,IAAIA,CAACA,oBAAoBA,CAACA;oBACrDA,MAAMA,GAAGA,OAAOA,CAACA,iBAAiBA,CAACA,oBAAoBA,EAAEA,KAAKA,EAAEA,YAAYA,EAAEA,aAAaA,EAAEA,aAAaA,CAACA,CAACA;oBAC5GA,eAAeA,GAAGA,OAAOA,CAACA,0BAA0BA,CAACA,oBAAoBA,EAAEA,cAAcA,EAAEA,YAAYA,EAAEA,aAAaA,EAAEA,aAAaA,CAACA,CAACA;oBACvIA,IAAIA,oBAAoBA,GAAGA,IAAIA,CAACA,oBAAoBA,CAACA;oBACrDA,WAAWA,GAAGA,OAAOA,CAACA,sBAAsBA,CAACA,oBAAoBA,EAAEA,iBAAiBA,EAAEA,aAAaA,EAAEA,aAAaA,CAACA,CAACA;oBACpHA,WAAWA,GAAGA,OAAOA,CAACA,sBAAsBA,CAACA,oBAAoBA,EAAEA,iBAAiBA,EAAEA,aAAaA,EAAEA,aAAaA,CAACA,CAACA;gBACxHA,CAACA;gBAEDA,EAAEA,CAACA,CAACA,IAAIA,CAACA,oBAAoBA,CAACA,CAACA,CAACA;oBAC5BA,IAAIA,eAAeA,GAA2BA;wBAC1CA,MAAMA,EAAEA,MAAMA;wBACdA,eAAeA,EAAEA,eAAeA;wBAChCA,WAAWA,EAAEA,WAAWA;wBACxBA,WAAWA,EAAEA,WAAWA;wBACxBA,KAAKA,EAAiBA,KAAKA;wBAC3BA,aAAaA,EAAEA,IAAIA,CAACA,aAAaA;qBACpCA,CAACA;oBAEFA,IAAIA,CAACA,oBAAoBA,CAACA,IAAIA,CAAgBA,KAAKA,EAAEA,IAAIA,CAACA,QAAQA,EAAEA,eAAeA,CAACA,CAACA;gBACzFA,CAACA;gBAEDA,EAAEA,CAACA,CAACA,IAAIA,CAACA,eAAeA,CAACA,CAACA,CAACA;oBACvBA,sBAAcA,CAACA,UAAUA,CAACA,MAAMA,EAAEA,UAACA,YAA0BA,IAAKA,OAAAA,YAAYA,CAACA,IAAIA,CAACA,WAAWA,EAA7BA,CAA6BA,CAACA,CAACA;oBACjGA,sBAAcA,CAACA,UAAUA,CAACA,eAAeA,EAAEA,UAACA,YAA0BA,IAAKA,OAAAA,YAAYA,CAACA,IAAIA,CAACA,sBAAsBA,EAAxCA,CAAwCA,CAACA,CAACA;gBACzHA,CAACA;gBAEDA,eAAOA,CAACA,6BAA6BA,CAACA,IAAIA,CAACA,OAAOA,CAACA,CAACA;YACxDA,CAACA;YAEOxB,8BAAYA,GAApBA;gBACIyB,IAAIA,sBAAsBA,GAAGA,IAAIA,CAACA,IAAIA,CAACA,sBAAsBA,CAACA;gBAC9DA,EAAEA,CAACA,CAACA,sBAAsBA,CAACA,CAACA,CAACA;oBACzBA,IAAIA,UAAUA,GAAGA,IAAIA,CAACA,IAAIA,CAACA,UAAUA,CAACA;oBACtCA,kBAAUA,CAACA,MAAMA,CAACA,UAAUA,EAAEA,sBAAsBA,CAACA,CAACA;oBACtDA,IAAIA,QAAQA,GAAWA,sBAAsBA,CAACA,mBAAWA,CAACA,QAAQA,CAACA,CAACA;oBACpEA,EAAEA,CAACA,CAACA,QAAQA,CAACA;wBACTA,IAAIA,CAACA,MAAMA,CAACA,iBAAiBA,CAACA,sBAAcA,CAACA,QAAQA,CAACA,CAACA,CAACA;oBAE5DA,IAAIA,CAACA,MAAMA,CAACA,UAAUA,CAACA,UAAUA,EAAEA,IAAIA,CAACA,eAAeA,CAACA,CAACA;gBAC7DA,CAACA;gBAACA,IAAIA,CAACA,CAACA;oBACJA,iGAAiGA;oBACjGA,iEAAiEA;oBACjEA,IAAIA,CAACA,MAAMA,CAACA,iBAAiBA,CAACA,sBAAcA,CAACA,GAAGA,CAACA,CAACA;oBAClDA,IAAIA,CAACA,MAAMA,CAACA,UAAUA,CAACA,EAAEA,UAAUA,EAAEA,EAAEA,EAAEA,EAAEA,IAAIA,CAACA,eAAeA,CAACA,CAACA;gBACrEA,CAACA;YACLA,CAACA;YAEczB,oBAAYA,GAA3BA,UAA4BA,CAAcA,EAAEA,SAAmBA;gBAC3D0B,IAAIA,SAAiBA,CAACA;gBACtBA,MAAMA,CAACA,CAACA,CAACA,CAACA,KAAKA,CAACA,CAACA,CAACA;oBACdA,KAAKA,CAACA;wBACFA,SAASA,GAAGA,OAAOA,CAACA,oBAAoBA,CAACA;wBACzCA,KAAKA,CAACA;oBACVA,KAAKA,CAACA;wBACFA,SAASA,GAAGA,OAAOA,CAACA,kBAAkBA,CAACA;wBACvCA,KAAKA,CAACA;oBACVA,KAAKA,CAACA;wBACFA,SAASA,GAAGA,OAAOA,CAACA,iBAAiBA,CAACA;wBACtCA,KAAKA,CAACA;oBACVA;wBACIA,KAAKA,CAACA,UAAUA,CAACA,yCAAyCA,CAACA,CAACA;gBACpEA,CAACA;gBACDA,SAASA,IAAIA,GAAGA,GAAGA,CAACA,SAASA,GAAGA,OAAOA,CAACA,sBAAsBA,GAAGA,OAAOA,CAACA,oBAAoBA,CAACA,CAACA;gBAC/FA,MAAMA,CAACA,SAASA,CAACA;YACrBA,CAACA;YAEc1B,gCAAwBA,GAAvCA,UAAwCA,eAAuBA;gBAAvB2B,+BAAuBA,GAAvBA,uBAAuBA;gBAC3DA,MAAMA,CAACA;oBACHA,CAACA,EAAEA,UAACA,CAAcA,IAAKA,OAAAA,CAACA,CAACA,CAACA,EAAHA,CAAGA;oBAC1BA,CAACA,EAAEA,UAACA,CAAcA,IAAKA,OAAAA,CAACA,CAACA,CAACA,GAAGA,CAACA,eAAeA,GAAGA,CAACA,CAACA,EAAEA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,mBAAmBA,CAACA,GAAGA,CAACA,CAACA,EAAhEA,CAAgEA;oBACvFA,KAAKA,EAAEA,UAACA,CAAcA,IAAKA,OAAAA,IAAIA,CAACA,GAAGA,CAACA,CAACA,EAAEA,CAACA,CAACA,EAAEA,CAACA,EAAjBA,CAAiBA;oBAC5CA,MAAMA,EAAEA,UAACA,CAAcA,IAAKA,OAAAA,IAAIA,CAACA,GAAGA,CAACA,CAACA,EAAEA,CAACA,CAACA,EAAEA,GAAGA,CAACA,eAAeA,GAAGA,CAACA,CAACA,mBAAmBA,GAAGA,CAACA,CAACA,CAACA,EAAjEA,CAAiEA;iBAChGA,CAACA;YACNA,CAACA;YAEc3B,oCAA4BA,GAA3CA;gBACI4B,MAAMA,CAACA;oBACHA,CAACA,EAAEA,UAACA,CAAcA,IAAKA,OAAAA,CAACA,CAACA,CAACA,EAAHA,CAAGA;oBAC1BA,CAACA,EAAEA,UAACA,CAAcA,IAAKA,OAAAA,CAACA,CAACA,CAACA,GAAGA,CAACA,CAACA,EAAEA,EAAVA,CAAUA;oBACjCA,KAAKA,EAAEA,UAACA,CAAcA,IAAKA,OAAAA,IAAIA,CAACA,GAAGA,CAACA,CAACA,EAAEA,CAACA,CAACA,EAAEA,CAACA,EAAjBA,CAAiBA;oBAC5CA,MAAMA,EAAEA,UAACA,CAAcA,IAAKA,OAAAA,CAACA,EAADA,CAACA;iBAChCA,CAACA;YACNA,CAACA;YAEa5B,yBAAiBA,GAA/BA,UAAgCA,OAAqBA,EAAEA,KAA4BA,EAAEA,YAAqBA,EAAEA,aAAsBA,EAAEA,MAAsBA;gBACtJ6B,IAAIA,gBAAgBA,GAAGA,KAAKA,CAACA;gBAC7BA,IAAIA,MAAMA,GAAGA,OAAOA,CAACA,SAASA,CAACA,GAAGA,GAAGA,OAAOA,CAACA,oBAAoBA,CAACA;qBAC7DA,IAAIA,CAACA,KAAKA,EAAEA,UAACA,CAAcA,IAAKA,OAAAA,CAACA,CAACA,GAAGA,EAALA,CAAKA,CAACA,CAACA;gBAE5CA,MAAMA,CAACA,KAAKA,EAAEA,CAACA,MAAMA,CAACA,MAAMA,CAACA;qBACxBA,IAAIA,CAACA,OAAOA,EAAEA,MAAMA,CAACA,UAAUA,CAACA,CAACA;gBAEtCA,MAAMA;qBACDA,KAAKA,CAACA,MAAMA,EAAEA,UAACA,CAAcA,IAAKA,OAAAA,OAAOA,CAACA,OAAOA,CAACA,CAACA,EAAEA,gBAAgBA,CAACA,EAApCA,CAAoCA,CAACA;qBACvEA,KAAKA,CAACA,cAAcA,EAAEA,UAACA,CAAcA,IAAKA,OAAAA,OAAOA,CAACA,cAAcA,CAACA,CAACA,EAAEA,YAAYA,EAAEA,aAAaA,EAAEA,gBAAgBA,CAACA,EAAxEA,CAAwEA,CAACA;qBACnHA,IAAIA,CAACA,MAAMA,CAACA,WAAWA,CAACA,CAACA;gBAE9BA,MAAMA,CAACA,IAAIA,EAAEA,CAACA,MAAMA,EAAEA,CAACA;gBAEvBA,MAAMA,CAACA,MAAMA,CAACA;YAClBA,CAACA;YAEa7B,kCAA0BA,GAAxCA,UAAyCA,OAAqBA,EAAEA,KAA4BA,EAAEA,YAAqBA,EAAEA,aAAsBA,EAAEA,MAAsBA;gBAC/J8B,IAAIA,gBAAgBA,GAAGA,IAAIA,CAACA;gBAC5BA,IAAIA,eAAeA,GAAGA,OAAOA,CAACA,SAASA,CAACA,GAAGA,GAAGA,OAAOA,CAACA,sBAAsBA,CAACA;qBACxEA,IAAIA,CAACA,KAAKA,EAAEA,UAACA,CAACA,IAAKA,OAAAA,CAACA,CAACA,GAAGA,GAAGA,WAAWA,EAAnBA,CAAmBA,CAACA,CAACA;gBAE7CA,eAAeA,CAACA,KAAKA,EAAEA,CAACA,MAAMA,CAACA,MAAMA,CAACA;qBACjCA,IAAIA,CAACA,OAAOA,EAAEA,MAAMA,CAACA,mBAAmBA,CAACA,CAACA;gBAE/CA,eAAeA;qBACVA,KAAKA,CAACA,MAAMA,EAAEA,UAACA,CAAcA,IAAKA,OAAAA,OAAOA,CAACA,OAAOA,CAACA,CAACA,EAAEA,gBAAgBA,CAACA,EAApCA,CAAoCA,CAACA;qBACvEA,KAAKA,CAACA,cAAcA,EAAEA,UAACA,CAAcA,IAAKA,OAAAA,OAAOA,CAACA,cAAcA,CAACA,CAACA,EAAEA,YAAYA,EAAEA,aAAaA,EAAEA,gBAAgBA,CAACA,EAAxEA,CAAwEA,CAACA;qBACnHA,IAAIA,CAACA,MAAMA,CAACA,oBAAoBA,CAACA,CAACA;gBAEvCA,eAAeA,CAACA,IAAIA,EAAEA,CAACA,MAAMA,EAAEA,CAACA;gBAChCA,MAAMA,CAACA,eAAeA,CAACA;YAC3BA,CAACA;YAEa9B,8BAAsBA,GAApCA,UAAqCA,OAAqBA,EAAEA,KAA4BA,EAAEA,aAAuCA,EAAEA,MAAsBA;gBACrJ+B,IAAIA,MAAMA,GAAGA,OAAOA;qBACfA,SAASA,CAACA,GAAGA,GAAGA,OAAOA,CAACA,mBAAmBA,CAACA;qBAC5CA,IAAIA,CAACA,KAAKA,EAAEA,UAACA,CAAcA,IAAKA,OAAAA,CAACA,CAACA,GAAGA,EAALA,CAAKA,CAACA,CAACA;gBAE5CA,MAAMA,CAACA,KAAKA,EAAEA,CAACA,MAAMA,CAACA,MAAMA,CAACA;qBACxBA,IAAIA,CAACA,OAAOA,EAAEA,MAAMA,CAACA,eAAeA,CAACA,CAACA;gBAE3CA,MAAMA;qBACDA,IAAIA,CAACA,MAAMA,CAACA,gBAAgBA,CAACA;qBAC7BA,IAAIA,CAACA,MAAMA,CAACA,cAAcA,CAACA;qBAC3BA,KAAKA,CAACA,MAAMA,EAAEA,cAAMA,OAAAA,aAAaA,CAACA,UAAUA,EAAxBA,CAAwBA,CAACA,CAACA;gBAEnDA,MAAMA,CAACA,IAAIA,EAAEA,CAACA,MAAMA,EAAEA,CAACA;gBAEvBA,MAAMA,CAACA,MAAMA,CAACA;YAClBA,CAACA;YAEa/B,8BAAsBA,GAApCA,UAAqCA,OAAqBA,EAAEA,KAA4BA,EAAEA,aAAuCA,EAAEA,MAAsBA;gBACrJgC,IAAIA,MAAMA,GAAGA,OAAOA;qBACfA,SAASA,CAACA,GAAGA,GAAGA,OAAOA,CAACA,mBAAmBA,CAACA;qBAC5CA,IAAIA,CAACA,KAAKA,EAAEA,UAACA,CAAcA,IAAKA,OAAAA,CAACA,CAACA,GAAGA,EAALA,CAAKA,CAACA,CAACA;gBAE5CA,MAAMA,CAACA,KAAKA,EAAEA,CAACA,MAAMA,CAACA,MAAMA,CAACA;qBACxBA,IAAIA,CAACA,OAAOA,EAAEA,MAAMA,CAACA,eAAeA,CAACA,CAACA;gBAE3CA,MAAMA;qBACDA,IAAIA,CAACA,MAAMA,CAACA,gBAAgBA,CAACA;qBAC7BA,IAAIA,CAACA,MAAMA,CAACA,cAAcA,CAACA;qBAC3BA,KAAKA,CAACA,MAAMA,EAAEA,cAAMA,OAAAA,aAAaA,CAACA,UAAUA,EAAxBA,CAAwBA,CAACA,CAACA;gBAEnDA,MAAMA,CAACA,IAAIA,EAAEA,CAACA,MAAMA,EAAEA,CAACA;gBAEvBA,MAAMA,CAACA,MAAMA,CAACA;YAClBA,CAACA;YAEahC,wBAAgBA,GAA9BA,UAA+BA,OAAqBA;gBAChDiC,IAAIA,KAAKA,GAAGA,EAAEA,CAACA;gBACfA,IAAIA,MAAMA,GAAGA,OAAOA;qBACfA,SAASA,CAACA,GAAGA,GAAGA,OAAOA,CAACA,oBAAoBA,CAACA;qBAC7CA,SAASA,CAACA,GAAGA,GAAGA,OAAOA,CAACA,mBAAmBA,CAACA;qBAC5CA,IAAIA,CAACA,KAAKA,CAACA,CAACA;gBACjBA,MAAMA,CAACA,IAAIA,EAAEA,CAACA,MAAMA,EAAEA,CAACA;YAC3BA,CAACA;YAn/BajC,0BAAkBA,GAAGA,GAAGA,CAACA;YAExBA,iBAASA,GAAGA,SAASA,CAACA;YACvBA,4BAAoBA,GAAGA,QAAQA,CAACA;YAChCA,2BAAmBA,GAAGA,YAAYA,CAACA;YACnCA,2BAAmBA,GAAGA,YAAYA,CAACA;YACnCA,uBAAeA,GAAGA,QAAQA,CAACA;YAC3BA,4BAAoBA,GAAGA,aAAaA,CAACA;YACrCA,yBAAiBA,GAAGA,UAAUA,CAACA;YAC/BA,4BAAoBA,GAAGA,aAAaA,CAACA;YACrCA,0BAAkBA,GAAGA,WAAWA,CAACA;YACjCA,8BAAsBA,GAAGA,sBAAsBA,CAACA;YAC/CA,kBAAUA,GAAGA,CAACA,CAACA;YACfA,0BAAkBA,GAAGA,EAAEA,CAACA;YACxBA,iCAAyBA,GAAGA,EAAEA,CAACA;YAC/BA,0BAAkBA,GAAGA,EAAEA,CAACA;YACxBA,iCAAyBA,GAAGA,EAAEA,CAACA;YAC/BA,gCAAwBA,GAAmBA;gBACtDA,UAAUA,EAAEA,oBAAoBA;gBAChCA,QAAQA,EAAEA,OAAOA,CAACA,kBAAkBA,GAAGA,IAAIA;aAC9CA,CAACA;YAEFA;;;eAGGA;YACYA,oBAAYA,GAAGA,CAACA,CAACA;YA09BpCA,cAACA;QAADA,CAr/BA/tF,AAq/BC+tF,IAAA/tF;QAr/BYA,eAAOA,UAq/BnBA,CAAAA;IACLA,CAACA,EAvkCcrxC,OAAOA,GAAPA,eAAOA,KAAPA,eAAOA,QAukCrBA;AAADA,CAACA,EAvkCM,OAAO,KAAP,OAAO,QAukCb;ACnmCD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,yCAAyC;AAEzC,IAAO,OAAO,CA+Yb;AA/YD,WAAO,OAAO;IAACA,IAAAA,OAAOA,CA+YrBA;IA/YcA,WAAAA,OAAOA,EAACA,CAACA;QAGpBqxC,IAAOA,mBAAmBA,GAAGA,OAAOA,CAACA,OAAOA,CAACA,OAAOA,CAACA,mBAAmBA,CAACA;QAEzEA,IAAOA,sBAAsBA,GAAGA,QAAQA,CAACA,YAAYA,CAACA,sBAAsBA,CAACA;QA+B7EA;YAA0BiwF,wBAAYA;YAmClCA,cAAmBA,OAAgCA;gBAC/CC,kBAAMA,IAAIA,CAACA,aAAaA,CAACA,CAACA;gBAC1BA,IAAIA,CAACA,YAAYA,GAAGA,KAAKA,CAACA;gBAC1BA,IAAIA,CAACA,qBAAqBA,GAAGA,6BAAqBA,CAACA,UAAUA,CAACA;gBAE9DA,EAAEA,CAACA,CAACA,OAAOA,CAACA,CAACA,CAACA;oBACVA,IAAIA,CAACA,YAAYA,GAAGA,CAACA,CAACA,OAAOA,CAACA,YAAYA,CAACA;oBAC3CA,EAAEA,CAACA,CAACA,OAAOA,CAACA,QAAQA,CAACA;wBACjBA,IAAIA,CAACA,QAAQA,GAAGA,OAAOA,CAACA,QAAQA,CAACA;oBACrCA,EAAEA,CAACA,CAACA,OAAOA,CAACA,qBAAqBA,IAAIA,IAAIA,CAACA;wBACtCA,IAAIA,CAACA,qBAAqBA,GAAGA,OAAOA,CAACA,qBAAqBA,CAACA;gBACnEA,CAACA;YACLA,CAACA;YAEMD,mBAAIA,GAAXA,UAAYA,OAA0BA;gBAClCE,KAAKA,CAACA,WAAWA,CAACA,OAAOA,EAAEA,SAASA,CAACA,CAACA;gBACtCA,IAAIA,CAACA,gBAAgBA,GAAGA,OAAOA,CAACA,SAASA,CAACA;gBAC1CA,IAAIA,OAAOA,GAAGA,OAAOA,CAACA,OAAOA,CAACA;gBAE9BA,IAAIA,CAACA,QAAQA,GAAGA,EAAEA,CAACA,MAAMA,CAACA,OAAOA,CAACA,GAAGA,CAACA,CAACA,CAACA,CAACA,CAACA,MAAMA,CAACA,KAAKA,CAACA;qBAClDA,OAAOA,CAACA,IAAIA,CAACA,QAAQA,CAACA,KAAKA,EAAEA,IAAIA,CAACA,CAACA;gBACxCA,IAAIA,GAAGA,GAAGA,IAAIA,CAACA,GAAGA,GAAGA,EAAEA,CAACA,MAAMA,CAACA,OAAOA,CAACA,GAAGA,CAACA,CAACA,CAACA,CAACA,CAACA,MAAMA,CAACA,KAAKA,CAACA,CAACA;gBAC7DA,IAAIA,CAACA,eAAeA,GAAGA,GAAGA,CAACA,MAAMA,CAACA,GAAGA,CAACA,CAACA;gBACvCA,IAAIA,CAACA,eAAeA,GAAGA,OAAOA,CAACA,QAAQA,CAACA;gBACxCA,IAAIA,CAACA,YAAYA,GAAGA,OAAOA,CAACA,IAAIA,CAACA;gBACjCA,IAAIA,CAACA,KAAKA,GAAGA,OAAOA,CAACA,KAAKA,CAACA;gBAE3BA,IAAIA,CAACA,wBAAwBA,EAAEA,CAACA;gBAEhCA,EAAEA,CAACA,CAACA,IAAIA,CAACA,YAAYA,CAACA,CAACA,CAACA;oBACpBA,GAAGA,CAACA,IAAIA,CAACA,OAAOA,EAAEA,IAAIA,CAACA,aAAaA,CAACA,CAACA;oBACtCA,IAAIA,CAACA,YAAYA,GAAGA,GAAGA,CAACA,MAAMA,CAACA,GAAGA,CAACA,CAACA;gBACxCA,CAACA;YACLA,CAACA;YAEMF,4BAAaA,GAApBA,UAAqBA,OAAiCA;gBAClDG,KAAKA,CAACA,WAAWA,CAACA,OAAOA,EAAEA,SAASA,CAACA,CAACA;gBAEtCA,IAAIA,QAAQA,GAAGA,OAAOA,CAACA,SAASA,CAACA,CAACA,CAACA,CAACA;gBACpCA,IAAIA,KAAUA,CAACA;gBACfA,EAAEA,CAACA,CAACA,QAAQA,CAACA,CAACA,CAACA;oBACXA,IAAIA,CAACA,iBAAiBA,CAACA,QAAQA,CAACA,CAACA;oBACjCA,EAAEA,CAACA,CAACA,QAAQA,CAACA,MAAMA,CAACA,CAACA,CAACA;wBAClBA,KAAKA,GAAGA,QAAQA,CAACA,MAAMA,CAACA,KAAKA,CAACA;oBAClCA,CAACA;oBAEDA,+CAA+CA;oBAC/CA,IAAIA,CAACA,iBAAiBA,GAAGA,IAAIA,CAACA,wBAAwBA,EAAEA,CAACA;oBAEzDA,IAAIA,gBAAgBA,GAAGA,QAAQA,CAACA,QAAQA,CAACA;oBACzCA,EAAEA,CAACA,CAACA,gBAAgBA,CAACA,CAACA,CAACA;wBACnBA,IAAIA,OAAOA,GAAoBA,gBAAgBA,CAACA,OAAOA,CAACA;wBACxDA,EAAEA,CAACA,CAACA,OAAOA,CAACA,CAACA,CAACA;4BACVA,IAAIA,aAAaA,GAAGA,IAAIA,CAACA,iBAAiBA,CAACA,aAAaA,CAACA;4BAEzDA,aAAaA,CAACA,UAAUA,GAAGA,uBAAeA,CAACA,YAAYA,CAACA,OAAOA,EAAEA,iBAASA,CAACA,MAAMA,CAACA,KAAKA,EAAEA,aAAaA,CAACA,UAAUA,CAACA,CAACA;4BACnHA,aAAaA,CAACA,SAASA,GAAGA,uBAAeA,CAACA,QAAQA,CAACA,OAAOA,EAAEA,iBAASA,CAACA,MAAMA,CAACA,cAAcA,EAAEA,aAAaA,CAACA,SAASA,CAACA,CAACA;4BACtHA,aAAaA,CAACA,QAAQA,GAAGA,uBAAeA,CAACA,QAAQA,CAACA,OAAOA,EAAEA,iBAASA,CAACA,MAAMA,CAACA,QAAQA,EAAEA,aAAaA,CAACA,QAAQA,CAACA,CAACA;4BAE9GA,iCAAiCA;4BACjCA,EAAEA,CAACA,CAACA,aAAaA,CAACA,SAASA,KAAKA,sBAAcA,CAACA,qBAAqBA,IAAIA,aAAaA,CAACA,SAASA,GAAGA,CAACA,CAACA,CAACA,CAACA;gCAClGA,aAAaA,CAACA,SAASA,GAAGA,CAACA,CAACA;4BAChCA,CAACA;4BAEDA,aAAaA,CAACA,YAAYA,GAAGA,uBAAeA,CAACA,QAAQA,CAACA,OAAOA,EAAEA,iBAASA,CAACA,MAAMA,CAACA,iBAAiBA,EAAEA,aAAaA,CAACA,YAAYA,CAACA,CAACA;4BAE/HA,iBAAiBA;4BACjBA,aAAaA,CAACA,YAAYA,GAAGA,uBAAeA,CAACA,QAAQA,CAACA,OAAOA,EAAEA,iBAASA,CAACA,cAAcA,CAACA,IAAIA,EAAEA,aAAaA,CAACA,YAAYA,CAACA,CAACA;4BAC1HA,aAAaA,CAACA,kBAAkBA,GAAGA,uBAAeA,CAACA,YAAYA,CAACA,OAAOA,EAAEA,iBAASA,CAACA,cAAcA,CAACA,KAAKA,EAAEA,aAAaA,CAACA,kBAAkBA,CAACA,CAACA;4BAE3IA,IAAIA,CAACA,iBAAiBA,CAACA,QAAQA,GAAGA,uBAAeA,CAACA,QAAQA,CAACA,OAAOA,EAAEA,iBAASA,CAACA,QAAQA,CAACA,IAAIA,EAAEA,IAAIA,CAACA,iBAAiBA,CAACA,QAAQA,CAACA,CAACA;4BAC9HA,IAAIA,CAACA,iBAAiBA,CAACA,QAAQA,GAAGA,uBAAeA,CAACA,QAAQA,CAACA,OAAOA,EAAEA,iBAASA,CAACA,cAAcA,CAACA,QAAQA,EAAEA,IAAIA,CAACA,iBAAiBA,CAACA,QAAQA,CAACA,CAACA;wBAC5IA,CAACA;oBACLA,CAACA;gBACLA,CAACA;gBAEDA,IAAIA,CAACA,cAAcA,CAACA,KAAKA,EAAEA,IAAIA,CAACA,wBAAwBA,EAAEA,IAAIA,CAACA,iBAAiBA,CAACA,CAACA;YACtFA,CAACA;YAEMH,yBAAUA,GAAjBA,UAAkBA,QAAmBA;gBACjCI,IAAIA,CAACA,eAAeA,GAAGA,QAAQA,CAACA;gBAChCA,IAAIA,CAACA,wBAAwBA,EAAEA,CAACA;gBAChCA,IAAIA,CAACA,cAAcA,CAACA,IAAIA,CAACA,KAAKA,EAAEA,IAAIA,CAACA,wBAAwBA,EAAEA,IAAIA,CAACA,iBAAiBA,CAACA,CAACA;YAC3FA,CAACA;YAEOJ,uCAAwBA,GAAhCA;gBACIK,IAAIA,QAAQA,GAAGA,IAAIA,CAACA,eAAeA,CAACA;gBACpCA,IAAIA,CAACA,GAAGA,CAACA,IAAIA,CAACA,OAAOA,EAAEA,QAAQA,CAACA,KAAKA,CAACA;qBACjCA,IAAIA,CAACA,QAAQA,EAAEA,QAAQA,CAACA,MAAMA,CAACA,CAACA;YACzCA,CAACA;YAEOL,gCAAiBA,GAAzBA,UAA0BA,IAAYA,EAAEA,QAAgBA;gBACpDM,IAAIA,CAACA,kBAAkBA,CAACA,QAAQA,GAAGA,QAAQA,CAACA,cAAcA,CAACA,SAASA,CAACA,QAAQA,CAACA,CAACA;gBAC/EA,IAAIA,CAACA,kBAAkBA,CAACA,IAAIA,GAAGA,IAAIA,CAACA;YACxCA,CAACA;YAEON,oCAAqBA,GAA7BA;gBACIO,MAAMA,CAACA,IAAIA,CAACA,iBAAiBA,CAACA,QAAQA,CAACA;YAC3CA,CAACA;YAEMP,oCAAqBA,GAA5BA,UAA6BA,cAAsBA,EAAEA,aAAqBA,EAAEA,cAAsBA;gBAC9FQ,IAAIA,kBAAkBA,GAAGA,gBAAKA,CAACA,qBAAqBA,YAACA,cAAcA,EAAEA,aAAaA,EAAEA,cAAcA,CAACA,CAACA;gBAEpGA,MAAMA,CAACA,IAAIA,CAACA,GAAGA,CAACA,kBAAkBA,EAAEA,IAAIA,CAACA,YAAYA,CAACA,IAAIA,CAACA,WAAWA,CAACA,CAACA;YAC5EA,CAACA;YAEMR,oBAAKA,GAAZA,UAAaA,SAA0BA;gBAA1BS,yBAA0BA,GAA1BA,iBAA0BA;gBACnCA,IAAIA,CAACA,GAAGA,CAACA,MAAMA,CAACA,IAAIA,CAACA,KAAKA,CAACA,QAAQA,CAACA,CAACA,IAAIA,CAACA,EAAEA,CAACA,CAACA;gBAE9CA,EAAEA,CAACA,CAACA,CAACA,SAASA,CAACA;oBACXA,IAAIA,CAACA,GAAGA,CAACA,MAAMA,CAACA,IAAIA,CAACA,KAAKA,CAACA,QAAQA,CAACA,CAACA,IAAIA,CAACA,EAAEA,CAACA,CAACA;gBAElDA,gBAAKA,CAACA,KAAKA,WAAEA,CAACA;YAClBA,CAACA;YAEOT,6BAAcA,GAAtBA,UAAuBA,MAAWA,EAAEA,kBAA2BA,EAAEA,WAA4BA;gBAA5BU,2BAA4BA,GAA5BA,mBAA4BA;gBACzFA,IAAIA,KAAKA,GAAGA,IAAIA,CAACA,KAAKA,CAACA;gBACvBA,IAAIA,QAAQA,GAAGA,sBAAcA,CAACA,oBAAoBA,CAACA,IAAIA,CAACA,QAAQA,EAAEA,kBAAkBA,CAACA,CAACA;gBAEtFA,EAAEA,CAACA,CAACA,MAAMA,KAAKA,SAASA,CAACA,CAACA,CAACA;oBACvBA,EAAEA,CAACA,CAACA,KAAKA,KAAKA,SAASA,CAACA;wBACpBA,IAAIA,CAACA,KAAKA,EAAEA,CAACA;oBACjBA,MAAMA,CAACA;gBACXA,CAACA;gBAEDA,IAAIA,cAAcA,GAAGA,IAAIA,CAACA,cAAcA,CAACA;gBACzCA,IAAIA,aAAaA,GAAGA,IAAIA,CAACA,iBAAiBA,CAACA,aAAaA,CAACA;gBACzDA,IAAIA,oBAAoBA,GAAGA,aAAaA,CAACA,YAAYA,KAAKA,CAACA,CAACA;gBAC5DA,IAAIA,MAAMA,GAAGA,IAAIA,CAACA,eAAeA,CAACA,cAAcA,CAACA,CAACA;gBAClDA,IAAIA,SAASA,GAAGA,sBAAcA,CAACA,MAAMA,CAACA;oBAClCA,MAAMA,EAAEA,MAAMA;oBACdA,KAAKA,EAAEA,oBAAoBA,GAAGA,MAAMA,GAAGA,aAAaA,CAACA,YAAYA;oBACjEA,SAASA,EAAEA,sBAAcA,CAACA,iBAAiBA,CAACA,aAAaA,CAACA,SAASA,EAAEA,MAAMA,CAACA;oBAC5EA,qBAAqBA,EAAEA,oBAAoBA,IAAIA,aAAaA,CAACA,SAASA,KAAKA,sBAAcA,CAACA,qBAAqBA,GAAGA,IAAIA,CAACA,qBAAqBA,GAAGA,6BAAqBA,CAACA,UAAUA;oBAC/KA,kBAAkBA,EAAEA,oBAAoBA,GAAGA,IAAIA,GAAGA,KAAKA;oBACvDA,yBAAyBA,EAAEA,IAAIA;oBAC/BA,UAAUA,EAAEA,cAAcA,GAAGA,cAAcA,CAACA,IAAIA,GAAGA,SAASA;iBAC/DA,CAACA,CAACA;gBAEHA,IAAIA,cAAcA,GAAGA,IAAIA,CAACA,iBAAiBA,CAACA;gBAC5CA,IAAIA,iBAAiBA,GAAGA,QAAQA,CAACA,cAAcA,CAACA,gBAAgBA,CAACA,aAAaA,CAACA,QAAQA,CAACA,CAACA;gBACzFA,IAAIA,WAAWA,GAAGA,IAAIA,CAACA,YAAYA,CAACA,KAAKA,CAACA;gBAC1CA,IAAIA,CAACA,iBAAiBA,CAACA,MAAMA,EAAEA,IAAIA,CAACA,qBAAqBA,EAAEA,CAACA,CAACA;gBAC7DA,IAAIA,gBAAgBA,GAAGA,8BAAsBA,CAACA,qBAAqBA,CAACA,IAAIA,CAACA,kBAAkBA,CAACA,CAACA;gBAE7FA,IAAIA,KAAKA,GAAGA,IAAIA,CAACA,eAAeA,CAACA,KAAKA,CAACA;gBACvCA,IAAIA,MAAMA,GAAGA,IAAIA,CAACA,eAAeA,CAACA,MAAMA,CAACA;gBACzCA,IAAIA,UAAUA,GAAGA,IAAIA,CAACA,aAAaA,CAACA,KAAKA,CAACA,CAACA;gBAC3CA,IAAIA,UAAUA,GAAGA,CAACA,MAAMA,GAAGA,gBAAgBA,GAAGA,iBAAiBA,CAACA,GAAGA,CAACA,CAACA;gBACrEA,IAAIA,iBAAiBA,GAAqBA,mBAAmBA,CAACA,cAAcA,EAAEA,MAAMA,EAAEA,WAAgBA,CAACA,CAACA;gBAExGA,EAAEA,CAACA,CAACA,IAAIA,CAACA,YAAYA,CAACA,CAACA,CAACA;oBACpBA,EAAEA,CAACA,CAACA,CAACA,WAAWA,IAAIA,KAAKA,KAAKA,MAAMA,CAACA;wBACjCA,MAAMA,CAACA;oBAEXA,EAAEA,CAACA,CAACA,KAAKA,KAAKA,MAAMA,CAACA;wBACjBA,MAAMA,GAAGA,SAASA,CAACA,MAAMA,CAACA,MAAMA,CAACA,CAACA;oBAEtCA,IAAIA,KAAKA,GAAWA,cAAcA,GAAGA,cAAcA,CAACA,WAAWA,GAAGA,SAASA,CAACA;oBAC5EA,IAAIA,SAASA,GAAGA,aAAaA,CAACA,YAAYA;0BACpCA,CAACA,KAAKA,CAACA;0BACPA,EAAEA,CAACA;oBAETA,IAAIA,gBAAgBA,GAAGA,IAAIA,CAACA,aAAaA,CAACA,iBAAiBA,GAAGA,gBAAgBA,GAAGA,UAAUA,CAACA,CAACA;oBAC7FA,IAAIA,YAAYA,GAAGA,IAAIA,CAACA,YAAYA;yBAC/BA,IAAIA,CAACA,WAAWA,EAAEA,eAAOA,CAACA,SAASA,CAACA,UAAUA,EAAEA,gBAAgBA,CAACA,CAACA;yBAClEA,SAASA,CAACA,MAAMA,CAACA;yBACjBA,IAAIA,CAACA,SAASA,CAACA,CAACA;oBAErBA,YAAYA;yBACPA,KAAKA,EAAEA;yBACPA,MAAMA,CAACA,MAAMA,CAACA;yBACdA,IAAIA,CAACA,OAAOA,EAAEA,IAAIA,CAACA,KAAKA,CAACA,KAAKA,CAACA,CAACA;oBAErCA,YAAYA;yBACPA,IAAIA,CAACA,UAACA,CAACA,IAAKA,OAAAA,CAACA,EAADA,CAACA,CAACA;yBACdA,KAAKA,CAACA;wBACHA,WAAWA,EAAEA,QAAQA,CAACA,cAAcA,CAACA,SAASA,CAACA,IAAIA,CAACA,qBAAqBA,EAAEA,CAACA;wBAC5EA,MAAMA,EAAEA,aAAaA,CAACA,kBAAkBA;wBACxCA,aAAaA,EAAEA,IAAIA,CAACA,aAAaA,EAAEA;qBACtCA,CAACA,CAACA;oBAEPA,IAAIA,gBAAgBA,GAAmBA,YAAYA,CAACA,IAAIA,EAAEA,CAACA;oBAC3DA,EAAEA,CAACA,CAACA,gBAAgBA,CAACA,CAACA,CAACA;wBACnBA,EAAEA,CAACA,CAACA,cAAcA,CAACA,QAAQA,CAACA;4BACxBA,8BAAsBA,CAACA,SAASA,CAACA,gBAAgBA,EAAEA,KAAKA,GAAGA,CAACA,EAAEA,MAAMA,GAAGA,gBAAgBA,CAACA,CAACA;wBAC7FA,IAAIA;4BACAA,YAAYA,CAACA,IAAIA,CAACA,kBAAUA,CAACA,mBAAmBA,CAACA,IAAIA,EACjDA,KAAKA,EACLA,8BAAsBA,CAACA,WAAWA,CAACA,CAACA;oBAChDA,CAACA;oBAEDA,YAAYA;yBACPA,MAAMA,CAACA,OAAOA,CAACA;yBACfA,IAAIA,CAACA,UAACA,CAACA,IAAKA,OAAAA,CAACA,EAADA,CAACA,CAACA,CAACA;oBAEpBA,+BAA+BA;oBAE/BA,EAAEA,CAACA,CAACA,iBAAiBA,CAACA,CAACA,CAACA;wBACpBA,wBAAwBA;wBACxBA,IAAIA,CAACA,eAAeA,CAACA,SAASA,CAACA,MAAMA,CAACA,CAACA,MAAMA,EAAEA,CAACA;wBAChDA,IAAIA,CAACA,oBAAoBA,CAACA,iBAAiBA,EAAEA,UAAUA,EAAEA,UAAUA,EAAEA,WAAWA,CAACA,CAACA;oBACtFA,CAACA;oBACDA,IAAIA,CAACA,CAACA;wBACFA,0BAA0BA;wBAC1BA,IAAIA,CAACA,QAAQA,CAACA,SAASA,CAACA,KAAKA,CAACA,CAACA,MAAMA,EAAEA,CAACA;wBACxCA,IAAIA,YAAYA,GAAGA,IAAIA,CAACA,eAAeA;6BAClCA,IAAIA,CAACA,WAAWA,EAAEA,eAAOA,CAACA,SAASA,CAACA,UAAUA,EAAEA,IAAIA,CAACA,aAAaA,CAACA,iBAAiBA,GAAGA,UAAUA,CAACA,CAACA,CAACA;6BACpGA,SAASA,CAACA,MAAMA,CAACA;6BACjBA,IAAIA,CAACA,CAACA,MAAMA,CAACA,CAACA,CAACA;wBAEpBA,YAAYA;6BACPA,KAAKA,EAAEA;6BACPA,MAAMA,CAACA,MAAMA,CAACA;6BACdA,IAAIA,CAACA,OAAOA,EAAEA,IAAIA,CAACA,KAAKA,CAACA,KAAKA,CAACA,CAACA;wBAErCA,YAAYA;6BACPA,IAAIA,CAACA,UAACA,CAAMA,IAAKA,OAAAA,CAACA,EAADA,CAACA,CAACA;6BACnBA,KAAKA,CAACA;4BACHA,WAAWA,EAAEA,QAAQA,CAACA,cAAcA,CAACA,SAASA,CAACA,aAAaA,CAACA,QAAQA,CAACA;4BACtEA,MAAMA,EAAEA,aAAaA,CAACA,UAAUA;4BAChCA,aAAaA,EAAEA,WAAWA,CAACA,UAAUA;4BACrCA,aAAaA,EAAEA,IAAIA,CAACA,aAAaA,EAAEA;yBACtCA,CAACA,CAACA;wBAEPA,YAAYA,CAACA,IAAIA,CAACA,kBAAUA,CAACA,mBAAmBA,CAACA,IAAIA,EACjDA,KAAKA,EACLA,8BAAsBA,CAACA,WAAWA,CAACA,CAACA;wBAExCA,YAAYA;6BACPA,MAAMA,CAACA,OAAOA,CAACA;6BACfA,IAAIA,CAACA,UAACA,CAACA,IAAKA,OAAAA,CAACA,EAADA,CAACA,CAACA,CAACA;wBAEpBA,YAAYA,CAACA,IAAIA,EAAEA,CAACA,MAAMA,EAAEA,CAACA;oBACjCA,CAACA;gBACLA,CAACA;gBACDA,IAAIA,CAACA,CAACA;oBACFA,EAAEA,CAACA,CAACA,iBAAiBA,CAACA,CAACA,CAACA;wBACpBA,wBAAwBA;wBACxBA,IAAIA,CAACA,eAAeA,CAACA,SAASA,CAACA,MAAMA,CAACA,CAACA,MAAMA,EAAEA,CAACA;wBAChDA,IAAIA,CAACA,oBAAoBA,CAACA,iBAAiBA,EAAEA,UAAUA,EAAEA,UAAUA,EAAEA,WAAWA,CAACA,CAACA;oBACtFA,CAACA;oBACDA,IAAIA,CAACA,CAACA;wBACFA,IAAIA,CAACA,QAAQA,CAACA,SAASA,CAACA,KAAKA,CAACA,CAACA,MAAMA,EAAEA,CAACA;wBACxCA,IAAIA,CAACA,iBAAiBA,CAClBA,KAAKA,EACLA,MAAMA,EACNA,IAAIA,CAACA,qBAAqBA,EAC1BA,IAAIA,CAACA,gBAAgBA,EACrBA,QAAQA,EACRA,WAAWA,EACXA,SAASA,CACZA,CAACA;wBAEFA,wFAAwFA;wBACxFA,IAAIA,CAACA,eAAeA,CAACA,IAAIA,CAACA,oBAAYA,CAACA,aAAaA,EAAEA,CAACA,MAAMA,CAACA,CAACA,CAACA;oBACpEA,CAACA;gBACLA,CAACA;gBAEDA,IAAIA,CAACA,KAAKA,GAAGA,MAAMA,CAACA;YACxBA,CAACA;YAEOV,mCAAoBA,GAA5BA,UAA6BA,iBAAmCA,EAAEA,UAAkBA,EAAEA,UAAkBA,EAAEA,WAA2BA;gBACjIW,uBAAuBA;gBACvBA,IAAIA,CAACA,eAAeA,CAACA,SAASA,CAACA,MAAMA,CAACA,CAACA,MAAMA,EAAEA,CAACA;gBAEhDA,sCAAsCA;gBACtCA,IAAIA,WAAWA,GAAGA,IAAIA,CAACA,QAAQA,CAACA,MAAMA,CAACA,KAAKA,CAACA,CAACA;gBAC9CA,EAAEA,CAACA,CAACA,CAACA,WAAWA,IAAIA,WAAWA,CAACA,KAAKA,EAAEA,CAACA;oBACpCA,WAAWA,GAAGA,IAAIA,CAACA,QAAQA,CAACA,MAAMA,CAACA,KAAKA,CAACA,CAACA;gBAE9CA,uBAAuBA;gBACvBA,WAAWA;qBACNA,IAAIA,CAACA,OAAOA,EAAEA,iBAAiBA,CAACA,KAAKA,CAACA;qBACtCA,KAAKA,CAACA,UAAUA,EAAEA,UAAUA,CAACA,CAACA;gBAEnCA,iGAAiGA;gBACjGA,IAAIA,UAAUA,GAAiBA,WAAWA,CAACA,IAAIA,EAAGA,CAACA,WAAWA,CAACA;gBAC/DA,IAAIA,WAAWA,GAAiBA,WAAWA,CAACA,IAAIA,EAAGA,CAACA,YAAYA,CAACA;gBAEjEA,iCAAiCA;gBACjCA,WAAWA,CAACA,KAAKA,CAACA,WAAWA,EAAEA,eAAOA,CAACA,mBAAmBA,CAACA,CAACA,UAAUA,GAAGA,CAACA,UAAUA,GAAGA,CAACA,CAACA,CAACA,EAAEA,IAAIA,CAACA,aAAaA,CAACA,WAAWA,CAACA,QAAQA,GAAGA,UAAUA,CAACA,GAAGA,WAAWA,CAACA,CAACA,CAACA;YACtKA,CAACA;YAEOX,uCAAwBA,GAAhCA;gBACIY,MAAMA,CAACA;oBACHA,aAAaA,EAAEA,sBAAcA,CAACA,2BAA2BA,CAACA,IAAIA,CAACA,YAAYA,CAACA,KAAKA,CAACA,KAAKA,EAAEA,IAAIA,CAACA,YAAYA,CAACA,KAAKA,CAACA,KAAKA,EAAEA,IAAIA,CAACA,YAAYA,CAACA,KAAKA,CAACA,QAAQA,CAACA;oBACzJA,QAAQA,EAAEA,KAAKA;oBACfA,QAAQA,EAAEA,IAAIA,CAACA,YAAYA,CAACA,KAAKA,CAACA,QAAQA;iBAC7CA,CAACA;YACNA,CAACA;YAEMZ,uCAAwBA,GAA/BA,UAAgCA,OAA8CA;gBAC1Ea,EAAEA,CAACA,CAACA,CAACA,IAAIA,CAACA,iBAAiBA,CAACA;oBACxBA,IAAIA,CAACA,iBAAiBA,GAAGA,IAAIA,CAACA,wBAAwBA,EAAEA,CAACA;gBAE7DA,IAAIA,cAAcA,GAAGA,IAAIA,CAACA,iBAAiBA,CAACA;gBAC5CA,IAAIA,WAAWA,GAAGA,IAAIA,gCAAwBA,EAAEA,CAACA;gBAEjDA,MAAMA,CAACA,CAACA,OAAOA,CAACA,UAAUA,CAACA,CAACA,CAACA;oBACzBA,KAAKA,gBAAgBA;wBACjBA,sBAAcA,CAACA,uBAAuBA,CAACA,WAAWA,EAAEA,cAAcA,CAACA,aAAaA,EAAEA,IAAIA,CAACA,cAAcA,EAAEA,IAAIA,CAACA,oBAAoBA,EAAEA,cAAcA,CAACA,QAAQA,CAACA,CAACA;wBAC3JA,KAAKA,CAACA;oBACVA,KAAKA,QAAQA;wBACTA,IAAIA,mBAAmBA,GAAoCA;4BACvDA,WAAWA,EAAEA,WAAWA;4BACxBA,kBAAkBA,EAAEA,cAAcA,CAACA,aAAaA;4BAChDA,IAAIA,EAAEA,IAAIA;4BACVA,YAAYA,EAAEA,IAAIA;4BAClBA,SAASA,EAAEA,IAAIA;4BACfA,QAAQA,EAAEA,IAAIA;yBACjBA,CAACA;wBACFA,sBAAcA,CAACA,mBAAmBA,CAACA,mBAAmBA,CAACA,CAACA;wBACxDA,KAAKA,CAACA;oBACVA,KAAKA,UAAUA;wBACXA,WAAWA,CAACA,YAAYA,CAACA;4BACrBA,UAAUA,EAAEA,UAAUA;4BACtBA,QAAQA,EAAEA,IAAIA;4BACdA,UAAUA,EAAEA;gCACRA,IAAIA,EAAEA,cAAcA,CAACA,QAAQA;6BAChCA;yBACJA,CAACA,CAACA;wBACHA,KAAKA,CAACA;gBACdA,CAACA;gBAEDA,MAAMA,CAACA,WAAWA,CAACA,QAAQA,EAAEA,CAACA;YAClCA,CAACA;YAxWcb,kBAAaA,GAAWA,MAAMA,CAACA;YAC/BA,UAAKA,GAAqBA,sBAAsBA,CAACA,OAAOA,CAACA,CAACA;YAC1DA,UAAKA,GAAqBA,sBAAsBA,CAACA,OAAOA,CAACA,CAACA;YAC1DA,aAAQA,GAAqBA,sBAAsBA,CAACA,SAASA,CAACA,CAACA;YAE/DA,uBAAkBA,GAAmBA;gBAChDA,QAAQA,EAAEA,IAAIA;gBACdA,IAAIA,EAAEA,IAAIA;gBACVA,UAAUA,EAAEA,sBAAcA,CAACA,mBAAmBA,CAACA,UAAUA;aAC5DA,CAACA;YAEYA,iBAAYA,GAAcA;gBACpCA,IAAIA,EAAEA;oBACFA,WAAWA,EAAEA,GAAGA;iBACnBA;gBACDA,KAAKA,EAAEA;oBACHA,QAAQA,EAAEA,EAAEA;oBACZA,KAAKA,EAAEA,SAASA;iBACnBA;gBACDA,KAAKA,EAAEA;oBACHA,QAAQA,EAAEA,EAAEA;oBACZA,KAAKA,EAAEA,SAASA;oBAChBA,UAAUA,EAAEA,sBAAsBA;iBACrCA;aACJA,CAACA;YAiVNA,WAACA;QAADA,CA1WAjwF,AA0WCiwF,EA1WyBjwF,oBAAYA,EA0WrCA;QA1WYA,YAAIA,OA0WhBA,CAAAA;IACLA,CAACA,EA/YcrxC,OAAOA,GAAPA,eAAOA,KAAPA,eAAOA,QA+YrBA;AAADA,CAACA,EA/YM,OAAO,KAAP,OAAO,QA+Yb;AC3aD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,yCAAyC;AAEzC,IAAO,OAAO,CA4Kb;AA5KD,WAAO,OAAO;IAACA,IAAAA,OAAOA,CA4KrBA;IA5KcA,WAAAA,OAAOA,EAACA,CAACA;QACpBqxC,IAAKA,YAIJA;QAJDA,WAAKA,YAAYA;YACb+wF,6CAAOA,CAAAA;YACPA,6CAAOA,CAAAA;YACPA,iDAASA,CAAAA;QACbA,CAACA,EAJI/wF,YAAYA,KAAZA,YAAYA,QAIhBA;QAEDA;YAAAgxF;YAoKAC,CAACA;YAnIiBD,kBAASA,GAAvBA,UAAwBA,QAAkBA;gBACtCE,MAAMA,CAACA,EAAEA,CAACA;YACdA,CAACA;YAEcF,qBAAYA,GAA3BA,UAA4BA,QAAkBA;gBAC1CG,IAAIA,QAAQA,GAAoBA;oBAC5BA,GAAGA,EAAEA,GAAGA;oBACRA,GAAGA,EAAEA,CAACA;oBACNA,MAAMA,EAAEA,SAASA;oBACjBA,KAAKA,EAAEA,CAACA;oBACRA,YAAYA,EAAEA,EAAEA;iBACnBA,CAACA;gBAEFA,EAAEA,CAACA,CAACA,QAAQA,IAAIA,QAAQA,CAACA,WAAWA,IAAIA,QAAQA,CAACA,WAAWA,CAACA,MAAMA,IAAIA,QAAQA,CAACA,QAAQA,IAAIA,QAAQA,CAACA,QAAQA,CAACA,OAAOA,CAACA,CAACA,CAACA;oBACpHA,IAAIA,MAAMA,GAAGA,QAAQA,CAACA,WAAWA,CAACA,MAAMA,CAACA;oBACzCA,IAAIA,eAAeA,GAAGA,QAAQA,CAACA,QAAQA,CAACA,OAAOA,CAACA;oBAEhDA,KAAKA,CAACA,MAAMA,CAACA,eAAeA,CAACA,MAAMA,IAAIA,MAAMA,CAACA,MAAMA,EAAEA,QAAQA,CAACA,CAACA;oBAEhEA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,MAAMA,CAACA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;wBACrCA,IAAIA,GAAGA,GAAGA,eAAeA,CAACA,CAACA,CAACA,EACxBA,KAAKA,GAAGA,MAAMA,CAACA,CAACA,CAACA,CAACA,MAAMA,CAACA,CAACA,CAACA,IAAIA,CAACA,CAACA;wBACrCA,EAAEA,CAACA,CAACA,GAAGA,IAAIA,GAAGA,CAACA,KAAKA,CAACA,CAACA,CAACA;4BACnBA,EAAEA,CAACA,CAACA,GAAGA,CAACA,KAAKA,CAACA,sBAAcA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA;gCAC9BA,QAAQA,CAACA,KAAKA,GAAGA,KAAKA,CAACA;gCACvBA,EAAEA,CAACA,CAACA,KAAKA,CAACA;oCACNA,QAAQA,CAACA,YAAYA,CAACA,IAAIA,CAACA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,QAAQA,EAAEA,MAAMA,CAACA,CAACA,CAACA,EAAEA,CAACA,CAACA;4BAC1EA,CAACA;4BAACA,IAAIA,CAACA,EAAEA,CAACA,CAACA,GAAGA,CAACA,KAAKA,CAACA,sBAAcA,CAACA,QAAQA,CAACA,CAACA,CAACA,CAACA;gCAC5CA,QAAQA,CAACA,GAAGA,GAAGA,KAAKA,CAACA;4BACzBA,CAACA;4BAACA,IAAIA,CAACA,EAAEA,CAACA,CAACA,GAAGA,CAACA,KAAKA,CAACA,sBAAcA,CAACA,QAAQA,CAACA,CAACA,CAACA,CAACA;gCAC5CA,QAAQA,CAACA,GAAGA,GAAGA,KAAKA,CAACA;4BACzBA,CAACA;4BAACA,IAAIA,CAACA,EAAEA,CAACA,CAACA,GAAGA,CAACA,KAAKA,CAACA,sBAAcA,CAACA,WAAWA,CAACA,CAACA,CAACA,CAACA;gCAC/CA,QAAQA,CAACA,MAAMA,GAAGA,KAAKA,CAACA;gCACxBA,EAAEA,CAACA,CAACA,KAAKA,CAACA;oCACNA,QAAQA,CAACA,YAAYA,CAACA,IAAIA,CAACA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,QAAQA,EAAEA,MAAMA,CAACA,CAACA,CAACA,EAAEA,CAACA,CAACA;4BAC1EA,CAACA;wBACLA,CAACA;oBACLA,CAACA;gBACLA,CAACA;gBAEDA,MAAMA,CAACA,QAAQA,CAACA;YACpBA,CAACA;YAOMH,uBAAIA,GAAXA,UAAYA,OAA0BA;gBAAtCI,iBAkBCA;gBAjBGA,IAAIA,CAACA,QAAQA,GAAGA,OAAOA,CAACA,OAAOA,CAACA;gBAChCA,IAAIA,CAACA,QAAQA,CAACA,QAAQA,CAACA,gBAAgBA,CAACA,CAACA;gBAEzCA,IAAIA,CAACA,WAAWA,GAAGA,CAACA,CAACA,QAAQA,CAACA,UAAUA,CAACA,CAACA;gBAC1CA,IAAIA,CAACA,SAASA,GAAGA,CAACA,CAACA,QAAQA,CAACA,WAAWA,CAACA,CAACA;gBACzCA,IAAIA,CAACA,WAAWA,GAAGA,CAACA,CAACA,QAAQA,CAACA,UAAUA,CAACA,CAACA;gBAE1CA,IAAIA,CAACA,QAAQA,CAACA,MAAMA,CAACA,IAAIA,CAACA,SAASA,CAACA,CAACA,MAAMA,CAACA,IAAIA,CAACA,WAAWA,CAACA,CAACA,MAAMA,CAACA,IAAIA,CAACA,WAAWA,CAACA,CAACA;gBAEvFA,EAAEA,CAACA,CAACA,QAAQA,CAACA,WAAWA,CAACA,CAACA,CAACA;oBACvBA,MAAMA,CAACA,WAAWA,CAACA;wBACfA,IAAIA,gBAAgBA,GAAGA,IAAIA,CAACA,MAAMA,EAAEA,GAAGA,GAAGA,GAAGA,CAACA,CAACA;wBAC/CA,KAAIA,CAACA,WAAWA,CAACA,gBAAgBA,CAACA,CAACA;oBACvCA,CAACA,EAAEA,IAAIA,CAACA,CAACA;gBACbA,CAACA;gBAEDA,IAAIA,CAACA,kBAAkBA,CAACA,OAAOA,CAACA,QAAQA,CAACA,KAAKA,EAAEA,OAAOA,CAACA,QAAQA,CAACA,MAAMA,CAACA,CAACA;YAC7EA,CAACA;YAEMJ,yBAAMA,GAAbA,UAAcA,OAA4BA;gBACtCK,IAAIA,CAACA,kBAAkBA,CAACA,OAAOA,CAACA,QAAQA,CAACA,KAAKA,EAAEA,OAAOA,CAACA,QAAQA,CAACA,MAAMA,CAACA,CAACA;gBAEzEA,IAAIA,QAAQA,GAAGA,OAAOA,CAACA,SAASA,CAACA,MAAMA,GAAGA,CAACA,GAAGA,OAAOA,CAACA,SAASA,CAACA,CAACA,CAACA,GAAGA,IAAIA,CAACA;gBAE1EA,EAAEA,CAACA,CAACA,QAAQA,CAACA,CAACA,CAACA;oBACXA,IAAIA,SAASA,GAAGA,QAAQA,CAACA,YAAYA,CAACA,OAAOA,CAACA,SAASA,CAACA,CAACA,CAACA,CAACA,CAACA;oBAE5DA,IAAIA,UAAUA,GAAGA,CAACA,SAASA,CAACA,KAAKA,GAAGA,SAASA,CAACA,GAAGA,CAACA,GAAGA,CAACA,SAASA,CAACA,GAAGA,GAAGA,SAASA,CAACA,GAAGA,CAACA,CAACA;oBACrFA,IAAIA,CAACA,WAAWA,CAACA,UAAUA,GAAGA,GAAGA,GAAGA,CAACA,CAACA,CAACA;gBAC3CA,CAACA;gBACDA,IAAIA;oBAACA,IAAIA,CAACA,WAAWA,CAACA,CAACA,CAACA,CAACA;YAC7BA,CAACA;YAEOL,8BAAWA,GAAnBA,UAAoBA,UAAkBA;gBAClCM,EAAEA,CAACA,CAACA,UAAUA,IAAIA,CAACA,IAAIA,UAAUA,IAAIA,GAAGA,CAACA,CAACA,CAACA;oBACvCA,IAAIA,WAAWA,GAAGA,CAACA,GAAGA,GAAGA,CAACA,GAAGA,GAAGA,UAAUA,GAACA,GAAGA,CAACA,CAACA;oBAChDA,IAAIA,CAACA,SAASA,CAACA,GAAGA,CAACA,EAAEA,SAASA,EAAEA,SAASA,GAAGA,WAAWA,GAAGA,MAAMA,EAAEA,CAACA,CAACA;oBAEpEA,EAAEA,CAACA,CAACA,UAAUA,IAAIA,EAAEA,CAACA,CAACA,CAACA;wBACnBA,IAAIA,CAACA,cAAcA,GAAGA,YAAYA,CAACA,KAAKA,CAACA;oBAC7CA,CAACA;oBACDA,IAAIA,CAACA,EAAEA,CAACA,CAACA,UAAUA,IAAIA,EAAEA,CAACA,CAACA,CAACA;wBACxBA,IAAIA,CAACA,cAAcA,GAAGA,YAAYA,CAACA,GAAGA,CAACA;oBAC3CA,CAACA;oBACDA,IAAIA,CAACA,CAACA;wBACFA,IAAIA,CAACA,cAAcA,GAAGA,YAAYA,CAACA,GAAGA,CAACA;oBAC3CA,CAACA;gBACLA,CAACA;YACLA,CAACA;YAEDN,sBAAYA,oCAAcA;qBAA1BA,UAA2BA,KAAmBA;oBAC1CO,IAAIA,CAACA,QAAQA,CAACA,WAAWA,CAACA,KAAKA,CAACA,CAACA,WAAWA,CAACA,KAAKA,CAACA,CAACA,WAAWA,CAACA,OAAOA,CAACA,CAACA;oBAEzEA,MAAMA,CAACA,CAACA,KAAKA,CAACA,CAACA,CAACA;wBACZA,KAAKA,YAAYA,CAACA,GAAGA;4BACjBA,IAAIA,CAACA,QAAQA,CAACA,QAAQA,CAACA,KAAKA,CAACA,CAACA;4BAC9BA,KAAKA,CAACA;wBACVA,KAAKA,YAAYA,CAACA,GAAGA;4BACjBA,IAAIA,CAACA,QAAQA,CAACA,QAAQA,CAACA,KAAKA,CAACA,CAACA;4BAC9BA,KAAKA,CAACA;wBACVA,KAAKA,YAAYA,CAACA,KAAKA;4BACnBA,IAAIA,CAACA,QAAQA,CAACA,QAAQA,CAACA,OAAOA,CAACA,CAACA;4BAChCA,KAAKA,CAACA;wBACVA;4BACIA,OAAOA,CAACA,GAAGA,CAACA,8BAA8BA,CAACA,CAACA;oBACpDA,CAACA;gBACLA,CAACA;;;eAAAP;YAEOA,qCAAkBA,GAA1BA,UAA2BA,KAAaA,EAAEA,MAAcA;gBAAxDQ,iBAaCA;gBAZGA,IAAIA,WAAWA,GAAGA,MAAMA,CAACA,YAAYA,IAAIA,MAAMA,CAACA,qBAAqBA,CAACA;gBAEtEA,WAAWA,CAACA;oBACRA,KAAIA,CAACA,QAAQA,CAACA,GAAGA,CAACA;wBACdA,MAAMA,EAAEA,MAAMA;wBACdA,KAAKA,EAAEA,KAAKA;qBACfA,CAACA,CAACA;oBAEHA,KAAIA,CAACA,WAAWA,CAACA,MAAMA,CAACA,KAAIA,CAACA,WAAWA,CAACA,KAAKA,EAAEA,GAAGA,QAAQA,CAACA,uBAAuBA,CAACA,CAACA;oBACrFA,KAAIA,CAACA,SAASA,CAACA,MAAMA,CAACA,KAAIA,CAACA,SAASA,CAACA,KAAKA,EAAEA,GAAGA,QAAQA,CAACA,wBAAwBA,CAACA,CAACA;oBAClFA,KAAIA,CAACA,WAAWA,CAACA,MAAMA,CAACA,KAAIA,CAACA,WAAWA,CAACA,KAAKA,EAAEA,GAAGA,QAAQA,CAACA,uBAAuBA,CAACA,CAACA;gBACzFA,CAACA,CAACA,CAACA;YACPA,CAACA;YAlKcR,mBAAUA,GAAGA,o1FAAo1FA,CAACA;YACl2FA,mBAAUA,GAAGA,wyDAAwyDA,CAACA;YACtzDA,oBAAWA,GAAGA,krDAAkrDA,CAACA;YAEjsDA,gCAAuBA,GAAGA,KAAKA,GAAGA,KAAKA,CAACA;YACxCA,gCAAuBA,GAAGA,KAAKA,GAAGA,KAAKA,CAACA;YACxCA,iCAAwBA,GAAGA,KAAKA,GAAGA,KAAKA,CAACA;YAEzCA,oBAAWA,GAAGA,KAAKA,CAACA;YAErBA,qBAAYA,GAAuBA;gBAC7CA,SAASA,EAAEA;oBACPA;wBACIA,IAAIA,EAAEA,UAAUA;wBAChBA,IAAIA,EAAEA,OAAOA,CAACA,kBAAkBA,CAACA,QAAQA;qBAC5CA;oBACDA;wBACIA,IAAIA,EAAEA,GAAGA;wBACTA,IAAIA,EAAEA,OAAOA,CAACA,kBAAkBA,CAACA,OAAOA;qBAC3CA;iBACJA;gBACDA,gBAAgBA,EAAEA,CAACA;wBACfA,UAAUA,EAAEA;4BACRA,GAAGA,EAAEA,EAAEA,EAAEA,EAAEA,UAAUA,EAAEA;4BACvBA,sBAAsBA,EAAEA,EAAEA,GAAGA,EAAEA,EAAEA,EAAEA;yBACtCA;wBACDA,MAAMA,EAAEA;4BACJA,MAAMA,EAAEA,CAACA,EAAEA,IAAIA,EAAEA,EAAEA,EAAEA,EAAEA,GAAGA,EAAEA,EAAEA,CAACA;yBAClCA;qBACJA,CAACA;aACLA,CAACA;YAqINA,eAACA;QAADA,CApKAhxF,AAoKCgxF,IAAAhxF;QApKYA,gBAAQA,WAoKpBA,CAAAA;IACLA,CAACA,EA5KcrxC,OAAOA,GAAPA,eAAOA,KAAPA,eAAOA,QA4KrBA;AAADA,CAACA,EA5KM,OAAO,KAAP,OAAO,QA4Kb;ACxMD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,yCAAyC;AAEzC,IAAO,OAAO,CAgNb;AAhND,WAAO,OAAO;IAACA,IAAAA,OAAOA,CAgNrBA;IAhNcA,WAAAA,OAAOA,EAACA,CAACA;QAGpBqxC;YAAAyxF;YAkBAC,CAACA;YAjBGD,sBAAWA,sCAAIA;qBAAfA;oBACIE,MAAMA,CAACA,eAAeA,CAACA;gBAC3BA,CAACA;;;eAAAF;YAEMA,0CAAWA,GAAlBA,UAAmBA,gBAAyCA;gBACxDG,IAAIA,UAAUA,GAAWA,sBAAsBA,CAACA;gBAChDA,IAAIA,QAAQA,GAAWA,kBAAkBA,CAACA;gBAC1CA,IAAIA,SAASA,GAAWA,oBAAoBA,CAACA;gBAE7CA,IAAIA,aAAaA,GAAwBA;oBACrCA,OAAOA,EAAEA,gBAAgBA,CAACA,GAAGA,CAACA,UAAUA,CAACA;oBACzCA,KAAKA,EAAEA,gBAAgBA,CAACA,GAAGA,CAACA,QAAQA,CAACA;oBACrCA,MAAMA,EAAEA,gBAAgBA,CAACA,GAAGA,CAACA,SAASA,CAACA;iBAC1CA,CAACA;gBAEFA,MAAMA,CAACA,aAAaA,CAACA;YACzBA,CAACA;YACLH,2BAACA;QAADA,CAlBAzxF,AAkBCyxF,IAAAzxF;QAlBYA,4BAAoBA,uBAkBhCA,CAAAA;QAEDA;YAAA6xF;YAkBAC,CAACA;YAjBGD,sBAAWA,4DAAIA;qBAAfA;oBACIE,MAAMA,CAACA,0BAA0BA,CAACA;gBACtCA,CAACA;;;eAAAF;YAEMA,gEAAWA,GAAlBA,UAAmBA,gBAAyCA;gBACxDG,IAAIA,UAAUA,GAAWA,iCAAiCA,CAACA;gBAC3DA,IAAIA,QAAQA,GAAWA,6BAA6BA,CAACA;gBACrDA,IAAIA,SAASA,GAAWA,+BAA+BA,CAACA;gBAExDA,IAAIA,aAAaA,GAAwBA;oBACrCA,OAAOA,EAAEA,gBAAgBA,CAACA,GAAGA,CAACA,UAAUA,CAACA;oBACzCA,KAAKA,EAAEA,gBAAgBA,CAACA,GAAGA,CAACA,QAAQA,CAACA;oBACrCA,MAAMA,EAAEA,gBAAgBA,CAACA,GAAGA,CAACA,SAASA,CAACA;iBAC1CA,CAACA;gBAEFA,MAAMA,CAACA,aAAaA,CAACA;YACzBA,CAACA;YACLH,iDAACA;QAADA,CAlBA7xF,AAkBC6xF,IAAA7xF;QAlBYA,kDAA0CA,6CAkBtDA,CAAAA;QAEDA;YAAAiyF;YAkBAC,CAACA;YAjBGD,sBAAWA,uCAAIA;qBAAfA;oBACIE,MAAMA,CAACA,uBAAuBA,CAACA;gBACnCA,CAACA;;;eAAAF;YAEMA,2CAAWA,GAAlBA,UAAmBA,gBAAyCA;gBACxDG,IAAIA,UAAUA,GAAWA,8BAA8BA,CAACA;gBACxDA,IAAIA,QAAQA,GAAWA,0BAA0BA,CAACA;gBAClDA,IAAIA,SAASA,GAAWA,0BAA0BA,CAACA;gBAEnDA,IAAIA,aAAaA,GAAwBA;oBACrCA,OAAOA,EAAEA,gBAAgBA,CAACA,GAAGA,CAACA,UAAUA,CAACA;oBACzCA,KAAKA,EAAEA,gBAAgBA,CAACA,GAAGA,CAACA,QAAQA,CAACA;oBACrCA,MAAMA,EAAEA,gBAAgBA,CAACA,GAAGA,CAACA,SAASA,CAACA;iBAC1CA,CAACA;gBAEFA,MAAMA,CAACA,aAAaA,CAACA;YACzBA,CAACA;YACLH,4BAACA;QAADA,CAlBAjyF,AAkBCiyF,IAAAjyF;QAlBYA,6BAAqBA,wBAkBjCA,CAAAA;QAEDA;YAAAqyF;YAgBAC,CAACA;YAfGD,sBAAWA,mDAAIA;qBAAfA;oBACIE,MAAMA,CAACA,4BAA4BA,CAACA;gBACxCA,CAACA;;;eAAAF;YAEMA,uDAAWA,GAAlBA,UAAmBA,gBAAyCA;gBACxDG,IAAMA,UAAUA,GAAWA,8BAA8BA,CAACA;gBAE1DA,IAAMA,aAAaA,GAAwBA;oBACvCA,OAAOA,EAAEA,gBAAgBA,CAACA,GAAGA,CAACA,UAAUA,CAACA;oBACzCA,KAAKA,EAAEA,EAAEA;oBACTA,MAAMA,EAAEA,EAAEA;iBACbA,CAACA;gBAEFA,MAAMA,CAACA,aAAaA,CAACA;YACzBA,CAACA;YACLH,wCAACA;QAADA,CAhBAryF,AAgBCqyF,IAAAryF;QAhBYA,yCAAiCA,oCAgB7CA,CAAAA;QAEDA;YAAAyyF;YAgBAC,CAACA;YAfGD,sBAAWA,0CAAIA;qBAAfA;oBACIE,MAAMA,CAACA,+BAA+BA,CAACA;gBAC3CA,CAACA;;;eAAAF;YAEMA,8CAAWA,GAAlBA,UAAmBA,gBAAyCA;gBACxDG,IAAIA,UAAUA,GAAWA,iCAAiCA,CAACA;gBAE3DA,IAAIA,aAAaA,GAAwBA;oBACrCA,OAAOA,EAAEA,gBAAgBA,CAACA,GAAGA,CAACA,UAAUA,CAACA;oBACzCA,KAAKA,EAAEA,EAAEA;oBACTA,MAAMA,EAAEA,EAAEA;iBACbA,CAACA;gBAEFA,MAAMA,CAACA,aAAaA,CAACA;YACzBA,CAACA;YACLH,+BAACA;QAADA,CAhBAzyF,AAgBCyyF,IAAAzyF;QAhBYA,gCAAwBA,2BAgBpCA,CAAAA;QAEDA;YAAA6yF;YAgBAC,CAACA;YAfGD,sBAAWA,wCAAIA;qBAAfA;oBACIE,MAAMA,CAACA,iBAAiBA,CAACA;gBAC7BA,CAACA;;;eAAAF;YAEMA,4CAAWA,GAAlBA,UAAmBA,gBAAyCA;gBACxDG,IAAIA,UAAUA,GAAWA,yBAAyBA,CAACA;gBAEnDA,IAAIA,aAAaA,GAAwBA;oBACrCA,OAAOA,EAAEA,gBAAgBA,CAACA,GAAGA,CAACA,UAAUA,CAACA;oBACzCA,KAAKA,EAAEA,EAAEA;oBACTA,MAAMA,EAAEA,EAAEA;iBACbA,CAACA;gBAEFA,MAAMA,CAACA,aAAaA,CAACA;YACzBA,CAACA;YACLH,6BAACA;QAADA,CAhBA7yF,AAgBC6yF,IAAA7yF;QAhBYA,8BAAsBA,yBAgBlCA,CAAAA;QAEDA;YAAAizF;YAgBAC,CAACA;YAfGD,sBAAWA,mDAAIA;qBAAfA;oBACIE,MAAMA,CAACA,4BAA4BA,CAACA;gBACxCA,CAACA;;;eAAAF;YAEMA,uDAAWA,GAAlBA,UAAmBA,gBAAyCA;gBACxDG,IAAIA,UAAUA,GAAWA,8BAA8BA,CAACA;gBAExDA,IAAIA,aAAaA,GAAwBA;oBACrCA,OAAOA,EAAEA,gBAAgBA,CAACA,GAAGA,CAACA,UAAUA,CAACA;oBACzCA,KAAKA,EAAEA,EAAEA;oBACTA,MAAMA,EAAEA,EAAEA;iBACbA,CAACA;gBAEFA,MAAMA,CAACA,aAAaA,CAACA;YACzBA,CAACA;YACLH,wCAACA;QAADA,CAhBAjzF,AAgBCizF,IAAAjzF;QAhBYA,yCAAiCA,oCAgB7CA,CAAAA;QAEDA;YAAAqzF;YAgBAC,CAACA;YAfGD,sBAAWA,yCAAIA;qBAAfA;oBACIE,MAAMA,CAACA,kBAAkBA,CAACA;gBAC9BA,CAACA;;;eAAAF;YAEMA,6CAAWA,GAAlBA,UAAmBA,gBAAyCA;gBACxDG,IAAIA,UAAUA,GAAWA,uCAAuCA,CAACA;gBAEjEA,IAAIA,aAAaA,GAAwBA;oBACrCA,OAAOA,EAAEA,gBAAgBA,CAACA,GAAGA,CAACA,UAAUA,CAACA;oBACzCA,KAAKA,EAAEA,EAAEA;oBACTA,MAAMA,EAAEA,EAAEA;iBACbA,CAACA;gBAEFA,MAAMA,CAACA,aAAaA,CAACA;YACzBA,CAACA;YACLH,8BAACA;QAADA,CAhBArzF,AAgBCqzF,IAAArzF;QAhBYA,+BAAuBA,0BAgBnCA,CAAAA;QAEDA;YAAAyzF;YAgBAC,CAACA;YAfGD,sBAAWA,kCAAIA;qBAAfA;oBACIE,MAAMA,CAACA,wBAAwBA,CAACA;gBACpCA,CAACA;;;eAAAF;YAEMA,sCAAWA,GAAlBA,UAAmBA,gBAAyCA;gBACxDG,IAAIA,UAAUA,GAAWA,0BAA0BA,CAACA;gBAEpDA,IAAIA,aAAaA,GAAwBA;oBACrCA,OAAOA,EAAEA,gBAAgBA,CAACA,GAAGA,CAACA,UAAUA,CAACA;oBACzCA,KAAKA,EAAEA,EAAEA;oBACTA,MAAMA,EAAEA,EAAEA;iBACbA,CAACA;gBAEFA,MAAMA,CAACA,aAAaA,CAACA;YACzBA,CAACA;YACLH,uBAACA;QAADA,CAhBAzzF,AAgBCyzF,IAAAzzF;QAhBYA,wBAAgBA,mBAgB5BA,CAAAA;QAEDA;YAAA6zF;YAgBAC,CAACA;YAfGD,sBAAWA,6CAAIA;qBAAfA;oBACIE,MAAMA,CAACA,sBAAsBA,CAACA;gBAClCA,CAACA;;;eAAAF;YAEMA,iDAAWA,GAAlBA,UAAmBA,gBAAyCA;gBACxDG,IAAIA,UAAUA,GAAWA,wBAAwBA,CAACA;gBAElDA,IAAIA,aAAaA,GAAwBA;oBACrCA,OAAOA,EAAEA,gBAAgBA,CAACA,GAAGA,CAACA,UAAUA,CAACA;oBACzCA,KAAKA,EAAEA,EAAEA;oBACTA,MAAMA,EAAEA,EAAEA;iBACbA,CAACA;gBAEFA,MAAMA,CAACA,aAAaA,CAACA;YACzBA,CAACA;YACLH,kCAACA;QAADA,CAhBA7zF,AAgBC6zF,IAAA7zF;QAhBYA,mCAA2BA,8BAgBvCA,CAAAA;QAEGA;YAAAi0F;YAiBJC,CAACA;YAhBGD,sBAAWA,4CAAIA;qBAAfA;oBACIE,MAAMA,CAACA,0BAA0BA,CAACA;gBACtCA,CAACA;;;eAAAF;YAEMA,gDAAWA,GAAlBA,UAAmBA,gBAAyCA;gBACxDG,IAAIA,UAAUA,GAAWA,mCAAmCA,CAACA;gBAC7DA,IAAIA,SAASA,GAAWA,iCAAiCA,CAACA;gBAE1DA,IAAIA,aAAaA,GAAwBA;oBACrCA,OAAOA,EAAEA,gBAAgBA,CAACA,GAAGA,CAACA,UAAUA,CAACA;oBACzCA,KAAKA,EAAEA,gBAAgBA,CAACA,GAAGA,CAACA,UAAUA,CAACA;oBACvCA,MAAMA,EAAEA,gBAAgBA,CAACA,GAAGA,CAACA,SAASA,CAACA;iBAC1CA,CAACA;gBAEFA,MAAMA,CAACA,aAAaA,CAACA;YACzBA,CAACA;YACLH,iCAACA;QAADA,CAjBIj0F,AAiBHi0F,IAAAj0F;QAjBgBA,kCAA0BA,6BAiB1CA,CAAAA;IAELA,CAACA,EAhNcrxC,OAAOA,GAAPA,eAAOA,KAAPA,eAAOA,QAgNrBA;AAADA,CAACA,EAhNM,OAAO,KAAP,OAAO,QAgNb;AC5OD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,yCAAyC;AAEzC,IAAO,OAAO,CA6rBb;AA7rBD,WAAO,OAAO;IAACA,IAAAA,OAAOA,CA6rBrBA;IA7rBcA,WAAAA,OAAOA,EAACA,CAACA;QAEpBqxC,IAAOA,cAAcA,GAAGA,QAAQA,CAACA,cAAcA,CAACA;QAChDA,IAAOA,sBAAsBA,GAAGA,QAAQA,CAACA,YAAYA,CAACA,sBAAsBA,CAACA;QAyC7EA;YAyCIq0F,wBAAYA,OAAyCA;gBACjDC,IAAIA,CAACA,YAAYA,GAAGA,OAAOA,CAACA,YAAYA,CAACA;gBACzCA,IAAIA,CAACA,eAAeA,GAAGA,OAAOA,CAACA,eAAeA,CAACA;gBAC/CA,IAAIA,CAACA,oBAAoBA,GAAGA,OAAOA,CAACA,oBAAoBA,CAACA;YAC7DA,CAACA;YAEMD,6BAAIA,GAAXA,UAAYA,OAAmCA;gBAC3CE,KAAKA,CAACA,WAAWA,CAACA,OAAOA,EAAEA,SAASA,CAACA,CAACA;gBAEtCA,IAAIA,CAACA,GAAGA,GAAGA,OAAOA,CAACA,GAAGA,CAACA;gBACvBA,IAAIA,CAACA,KAAKA,GAAGA,OAAOA,CAACA,KAAKA,CAACA;gBAC3BA,IAAIA,CAACA,eAAeA,GAAGA,OAAOA,CAACA,QAAQA,CAACA;gBACxCA,IAAIA,CAACA,YAAYA,GAAGA,OAAOA,CAACA,IAAIA,CAACA;gBACjCA,IAAIA,CAACA,aAAaA,GAAGA,OAAOA,CAACA,aAAaA,CAACA;gBAC3CA,IAAIA,CAACA,mBAAmBA,GAAGA,OAAOA,CAACA,aAAaA,CAACA;gBACjDA,IAAIA,CAACA,OAAOA,GAAGA,OAAOA,CAACA;gBACvBA,IAAIA,CAACA,OAAOA,GAAGA,OAAOA,CAACA,OAAOA,CAACA;gBAC/BA,IAAIA,CAACA,MAAMA,GAAGA,IAAIA,CAACA,KAAKA,CAACA,YAAYA,CAACA,UAAUA,CAACA;gBACjDA,IAAIA,CAACA,OAAOA,CAACA,QAAQA,CAACA,cAAcA,CAACA,kBAAkBA,CAACA,CAACA;gBACzDA,IAAIA,CAACA,eAAeA,GAAGA,IAAIA,CAACA,GAAGA,CAACA,MAAMA,CAACA,KAAKA,CAACA,CAACA;gBAC9CA,IAAIA,CAACA,mBAAmBA,GAAGA,IAAIA,CAACA,eAAeA,CAACA,MAAMA,CAACA,GAAGA,CAACA;qBACtDA,OAAOA,CAACA,cAAcA,CAACA,4BAA4BA,EAAEA,IAAIA,CAACA,CAACA;gBAChEA,IAAIA,CAACA,oBAAoBA,GAAGA,IAAIA,CAACA,eAAeA,CAACA,MAAMA,CAACA,GAAGA,CAACA;qBACvDA,OAAOA,CAACA,yBAAiBA,CAACA,yBAAyBA,CAACA,KAAKA,EAAEA,IAAIA,CAACA,CAACA;YAC1EA,CAACA;YAEaF,wBAASA,GAAvBA,UACIA,QAAkBA,EAClBA,OAA0BA,EAC1BA,YAAiCA,EACjCA,iBAA2CA,EAC3CA,eAA8CA,EAC9CA,oBAA2CA;gBAC3CG,KAAKA,CAACA,WAAWA,CAACA,OAAOA,EAAEA,SAASA,CAACA,CAACA;gBAEtCA,IAAIA,gBAAgBA,GAAGA,cAAcA,CAACA,gBAAgBA,CAACA;gBACvDA,IAAIA,UAAUA,GAAGA,QAAQA,CAACA,WAAWA,CAACA,UAAUA,IAAIA,EAAEA,CAACA;gBAEvDA,IAAIA,aAAaA,GAAGA,eAAeA,CAACA,YAAYA,CAACA,KAAKA,CAACA,KAAKA,CAACA;gBAC7DA,IAAIA,aAAaA,GAAGA,eAAeA,CAACA,YAAYA,CAACA,KAAKA,CAACA,KAAKA,CAACA;gBAC7DA,IAAIA,UAAUA,GAAGA,eAAeA,CAACA,SAASA,CAACA,KAAKA,CAACA,KAAKA,CAACA;gBAEvDA,IAAIA,UAAUA,GAAGA,YAAYA,CAACA,kBAAkBA,CAACA,cAAcA,CAACA,UAAUA,CAACA,CAACA;gBAC5EA,IAAIA,aAAaA,GAAGA,YAAYA,CAACA,kBAAkBA,CAACA,cAAcA,CAACA,aAAaA,CAACA,CAACA;gBAClFA,IAAIA,aAAaA,GAAGA,YAAYA,CAACA,kBAAkBA,CAACA,cAAcA,CAACA,aAAaA,CAACA,CAACA;gBAElFA,IAAIA,MAAMA,GAAsBA;oBAC5BA;wBACIA,KAAKA,EAAEA,aAAaA;wBACpBA,KAAKA,EAAEA,aAAaA;wBACpBA,IAAIA,EAAEA,kBAAUA,CAACA,GAAGA;wBACpBA,QAAQA,EAAEA,0BAAkBA,CAACA,OAAOA,EAAEA,CAACA,WAAWA,CAACA,UAAUA,CAACA,CAACA,iBAAiBA,EAAEA;wBAClFA,QAAQA,EAAEA,KAAKA;qBAClBA,EAAEA;wBACCA,KAAKA,EAAEA,aAAaA;wBACpBA,KAAKA,EAAEA,aAAaA;wBACpBA,IAAIA,EAAEA,kBAAUA,CAACA,GAAGA;wBACpBA,QAAQA,EAAEA,0BAAkBA,CAACA,OAAOA,EAAEA,CAACA,WAAWA,CAACA,UAAUA,CAACA,CAACA,iBAAiBA,EAAEA;wBAClFA,QAAQA,EAAEA,KAAKA;qBAClBA,EAAEA;wBACCA,KAAKA,EAAEA,UAAUA;wBACjBA,KAAKA,EAAEA,UAAUA;wBACjBA,IAAIA,EAAEA,kBAAUA,CAACA,GAAGA;wBACpBA,QAAQA,EAAEA,0BAAkBA,CAACA,OAAOA,EAAEA,CAACA,WAAWA,CAACA,OAAOA,CAACA,CAACA,iBAAiBA,EAAEA;wBAC/EA,QAAQA,EAAEA,KAAKA;qBAClBA,CAACA,CAACA;gBAEPA;;;;mBAIGA;gBACHA,IAAIA,GAAGA,GAAGA,CAACA,EAAEA,MAAMA,GAAGA,CAACA,EAAEA,MAAMA,GAAGA,CAACA,CAACA;gBACpCA,IAAIA,UAAUA,GAA8BA,EAAEA,CAACA;gBAC/CA,IAAIA,cAAcA,GAAUA,EAAEA,CAACA;gBAC/BA,IAAIA,gBAAwCA,CAACA;gBAC7CA,IAAIA,MAAMA,GAAGA,QAAQA,CAACA,WAAWA,CAACA,MAAMA,CAACA;gBACzCA,IAAIA,cAAcA,GAAGA,SAASA,CAACA;gBAC/BA,EAAEA,CAACA,CAACA,CAACA,CAACA,CAACA,OAAOA,CAACA,MAAMA,CAACA,CAACA,CAACA,CAACA;oBACrBA,IAAIA,MAAMA,GAAGA,MAAMA,CAACA,CAACA,CAACA,CAACA;oBACvBA,cAAcA,GAAGA,MAAMA,CAACA,MAAMA,CAACA;oBAC/BA,IAAIA,iBAAiBA,GAAGA,cAAcA,CAACA,MAAMA,CAACA;oBAC9CA,EAAEA,CAACA,CAACA,CAACA,CAACA,OAAOA,CAACA,UAAUA,CAACA,CAACA,CAACA,CAACA;wBACxBA,2DAA2DA;wBAC3DA,GAAGA,GAAGA,MAAMA,GAAGA,MAAMA,CAACA,MAAMA,CAACA,CAACA,CAACA,CAACA;wBAChCA,MAAMA,GAAGA,CAACA,CAACA;oBACfA,CAACA;oBACDA,IAAIA,CAACA,CAACA;wBACFA,IAAIA,cAAcA,GAAGA,UAAUA,CAACA,CAACA,CAACA,CAACA;wBACnCA,gBAAgBA,GAAGA,cAAcA,CAACA,MAAMA,CAACA;wBACzCA,cAAcA,GAAGA,cAAcA,CAACA,MAAMA,CAACA,KAAKA,EAAEA,CAACA;wBAC/CA,cAAcA,CAACA,IAAIA,CAACA,UAAUA,CAACA,CAACA;wBAEhCA,GAAGA,CAACA,CAACA,GAAGA,CAACA,aAAaA,GAAGA,CAACA,EAAEA,MAAMA,GAAGA,MAAMA,CAACA,MAAMA,CAACA,MAAMA,EAAEA,aAAaA,GAAGA,MAAMA,EAAEA,aAAaA,EAAEA,EAAEA,CAACA;4BACjGA,IAAIA,QAAQA,GAAGA,cAAcA,CAACA,aAAaA,CAACA,CAACA;4BAC7CA,IAAIA,KAAKA,GAAGA,MAAMA,CAACA,MAAMA,CAACA,aAAaA,CAACA,IAAIA,CAACA,CAACA;4BAC9CA,IAAIA,QAAQA,GAAGA,0BAAkBA,CAACA,OAAOA,EAAEA;iCACtCA,YAAYA,CAACA,cAAcA,EAAEA,aAAaA,CAACA;iCAC3CA,iBAAiBA,EAAEA,CAACA;4BAEzBA,IAAIA,WAAWA,GAAsBA,sBAAcA,CAACA,iBAAiBA,CAACA,gBAAgBA,EAAEA,QAAQA,CAACA,WAAWA,EAAEA,QAAQA,EAAEA,KAAKA,CAACA,CAACA;4BAC/HA,IAAIA,KAAKA,GAAGA,KAAKA,GAAGA,CAACA,GAAGA,aAAaA,GAAGA,aAAaA,CAACA;4BAEtDA,UAAUA,CAACA,IAAIA,CAACA;gCACZA,KAAKA,EAAEA,KAAKA;gCACZA,QAAQA,EAAEA,GAAGA;gCACbA,KAAKA,EAAEA,KAAKA;gCACZA,aAAaA,EAAEA,QAAQA;gCACvBA,aAAaA,EAAEA,aAAaA;gCAC5BA,WAAWA,EAAEA,CAACA;gCACdA,QAAQA,EAAEA,KAAKA;gCACfA,QAAQA,EAAEA,QAAQA;gCAClBA,SAASA,EAAEA,KAAKA;gCAChBA,GAAGA,EAAEA,QAAQA,CAACA,MAAMA,EAAEA;gCACtBA,WAAWA,EAAEA,WAAWA;gCACxBA,SAASA,EAAEA,iBAAiBA,CAACA,UAAUA;gCACvCA,iBAAiBA,EAAEA,iBAAiBA;6BACvCA,CAACA,CAACA;4BAEHA,GAAGA,IAAIA,KAAKA,CAACA;4BACbA,EAAEA,CAACA,CAACA,GAAGA,GAAGA,MAAMA,CAACA;gCACbA,MAAMA,GAAGA,GAAGA,CAACA;4BACjBA,EAAEA,CAACA,CAACA,GAAGA,GAAGA,MAAMA,CAACA;gCACbA,MAAMA,GAAGA,GAAGA,CAACA;wBACrBA,CAACA;oBACLA,CAACA;oBAEDA,IAAIA,aAAaA,GAAGA,mBAAWA,CAACA,UAAUA,EAAEA,CAACA;oBAC7CA,UAAUA,CAACA,IAAIA,CAACA;wBACZA,KAAKA,EAAEA,GAAGA;wBACVA,QAAQA,EAAEA,CAACA;wBACXA,KAAKA,EAAEA,UAAUA;wBACjBA,aAAaA,EAAEA,UAAUA;wBACzBA,aAAaA,EAAEA,aAAaA;wBAC5BA,QAAQA,EAAEA,aAAaA;wBACvBA,WAAWA,EAAEA,CAACA;wBACdA,QAAQA,EAAEA,KAAKA;wBACfA,SAASA,EAAEA,KAAKA;wBAChBA,GAAGA,EAAEA,aAAaA,CAACA,MAAMA,EAAEA;wBAC3BA,WAAWA,EAAEA,sBAAcA,CAACA,iBAAiBA,CAACA,gBAAgBA,EAAEA,QAAQA,CAACA,WAAWA,EAAEA,UAAUA,EAAEA,GAAGA,CAACA;wBACtGA,SAASA,EAAEA,iBAAiBA,CAACA,UAAUA;wBACvCA,iBAAiBA,EAAEA,iBAAiBA;wBACpCA,OAAOA,EAAEA,IAAIA;qBAChBA,CAACA,CAACA;gBACPA,CAACA;gBAEDA,EAAEA,CAACA,CAACA,oBAAoBA,CAACA,CAACA,CAACA;oBACvBA,oBAAoBA,CAACA,yBAAyBA,CAACA,UAAUA,CAACA,CAACA;gBAC/DA,CAACA;gBAEDA,IAAIA,eAAeA,GAAGA,uBAAeA,CAACA,yBAAyBA,CAACA,QAAQA,CAACA,QAAQA,CAACA,CAACA;gBACnFA,IAAIA,eAAeA,GAAGA,uBAAeA,CAACA,sBAAsBA,CAACA,QAAQA,CAACA,QAAQA,CAACA,CAACA;gBAChFA,IAAIA,UAAUA,GAAGA,uBAAeA,CAACA,gBAAgBA,CAACA,eAAeA,EAAEA,eAAeA,EAAEA,gBAAgBA,EAAEA,CAACA,cAAcA,CAACA,CAACA,CAACA;gBAExHA,MAAMA,CAACA;oBACHA,MAAMA,EAAEA,CAACA,EAAEA,IAAIA,EAAEA,UAAUA,EAAEA,CAACA;oBAC9BA,UAAUA,EAAEA,cAAcA;oBAC1BA,gBAAgBA,EAAEA,gBAAgBA;oBAClCA,cAAcA,EAAEA,cAAcA;oBAC9BA,MAAMA,EAAEA,EAAEA,UAAUA,EAAEA,MAAMA,EAAEA;oBAC9BA,aAAaA,EAAEA,KAAKA;oBACpBA,WAAWA,EAAEA,MAAMA;oBACnBA,WAAWA,EAAEA,MAAMA;oBACnBA,kBAAkBA,EAAEA,iBAAiBA;oBACrCA,eAAeA,EAAEA,eAAeA;oBAChCA,UAAUA,EAAEA,EAAEA,CAACA,EAAEA,UAAUA,CAACA,UAAUA,EAAEA,CAACA,EAAEA,UAAUA,CAACA,UAAUA,EAAEA;iBACrEA,CAACA;YACNA,CAACA;YAEMH,gCAAOA,GAAdA,UAAeA,SAAqBA;gBAChCI,KAAKA,CAACA,WAAWA,CAACA,SAASA,EAAEA,WAAWA,CAACA,CAACA;gBAE1CA,IAAIA,eAAeA,GAAGA,IAAIA,CAACA,6BAA6BA,CAACA,IAAIA,CAACA,CAACA;gBAC/DA,IAAIA,QAAQA,GAAGA,SAASA,CAACA,MAAMA,GAAGA,CAACA,GAAGA,SAASA,CAACA,CAACA,CAACA,GAAGA,SAASA,CAACA;gBAE/DA,IAAIA,CAACA,IAAIA,GAAwBA;oBAC7BA,MAAMA,EAAEA,CAACA,EAAEA,IAAIA,EAAEA,EAAEA,EAAEA,CAACA;oBACtBA,UAAUA,EAAEA,EAAEA;oBACdA,cAAcA,EAAEA,IAAIA;oBACpBA,MAAMA,EAAEA,EAAEA,UAAUA,EAAEA,EAAEA,GAAGA;oBAC3BA,aAAaA,EAAEA,KAAKA;oBACpBA,gBAAgBA,EAAEA,IAAIA;oBACtBA,kBAAkBA,EAAEA,KAAKA;oBACzBA,WAAWA,EAAEA,CAACA;oBACdA,WAAWA,EAAEA,CAACA;oBACdA,kBAAkBA,EAAEA,sBAAcA,CAACA,uBAAuBA,CAACA,UAAUA,CAACA,KAAKA,EAAEA,gBAAgBA,CAACA,SAASA,CAACA;oBACxGA,eAAeA,EAAEA,eAAeA;oBAChCA,UAAUA,EAAEA,EAAEA,CAACA,EAAEA,IAAIA,EAAEA,CAACA,EAAEA,IAAIA,EAAEA;iBACnCA,CAACA;gBAEEA,EAAEA,CAACA,CAACA,QAAQA,CAACA,CAACA,CAACA;oBACXA,EAAEA,CAACA,CAACA,QAAQA,CAACA,QAAQA,IAAIA,QAAQA,CAACA,QAAQA,CAACA,OAAOA,CAACA,CAACA,CAACA;wBACjDA,IAAIA,OAAOA,GAAGA,QAAQA,CAACA,QAAQA,CAACA,OAAOA,CAACA;wBAExCA,IAAIA,SAASA,GAAoBA,OAAOA,CAACA,QAAQA,CAACA,CAACA;wBACnDA,EAAEA,CAACA,CAACA,SAASA,CAACA,CAACA,CAACA;4BACZA,sBAAcA,CAACA,mCAAmCA,CAACA,SAASA,EAAEA,IAAIA,CAACA,IAAIA,CAACA,kBAAkBA,CAACA,CAACA;wBAChGA,CAACA;wBACDA,eAAeA,GAAGA,IAAIA,CAACA,6BAA6BA,CAACA,OAAOA,CAACA,CAACA;oBAClEA,CAACA;oBAEDA,EAAEA,CAACA,CAACA,QAAQA,CAACA,WAAWA,CAACA,CAACA,CAACA;wBACvBA,IAAIA,CAACA,IAAIA,GAAGA,cAAcA,CAACA,SAASA,CAACA,QAAQA,EAAEA,IAAIA,CAACA,MAAMA,EAAEA,IAAIA,CAACA,YAAYA,EAAEA,IAAIA,CAACA,IAAIA,CAACA,kBAAkBA,EAAEA,eAAeA,EAAEA,IAAIA,CAACA,oBAAoBA,CAACA,CAACA;oBAC7JA,CAACA;gBACLA,CAACA;YACLA,CAACA;YAEEJ,iDAAwBA,GAA/BA,UAAgCA,WAAqCA,EAAEA,OAA8CA;gBACjHK,MAAMA,CAACA,CAACA,OAAOA,CAACA,UAAUA,CAACA,CAACA,CAACA;oBACzBA,KAAKA,iBAAiBA;wBAClBA,IAAIA,CAACA,wBAAwBA,CAACA,WAAWA,CAACA,CAACA;wBAC3CA,KAAKA,CAACA;oBACVA,KAAKA,QAAQA;wBACTA,IAAIA,mBAAmBA,GAAoCA;4BACvDA,WAAWA,EAAEA,WAAWA;4BACxBA,kBAAkBA,EAAEA,IAAIA,CAACA,IAAIA,CAACA,kBAAkBA;4BAChDA,IAAIA,EAAEA,IAAIA;4BACVA,YAAYA,EAAEA,IAAIA;4BAClBA,SAASA,EAAEA,IAAIA;4BACfA,QAAQA,EAAEA,IAAIA;yBACjBA,CAACA;wBACFA,sBAAcA,CAACA,mBAAmBA,CAACA,mBAAmBA,CAACA,CAACA;wBACxDA,KAAKA,CAACA;gBACdA,CAACA;YACLA,CAACA;YAEOL,iDAAwBA,GAAhCA,UAAiCA,WAAqCA;gBAClEM,IAAIA,eAAeA,GAAGA,IAAIA,CAACA,IAAIA,CAACA,eAAeA,CAACA;gBAEhDA,WAAWA,CAACA,YAAYA,CAACA;oBACrBA,QAAQA,EAAEA,IAAIA;oBACdA,UAAUA,EAAEA;wBACRA,YAAYA,EAAEA,eAAeA,CAACA,YAAYA;wBAC1CA,YAAYA,EAAEA,eAAeA,CAACA,YAAYA;wBAC1CA,SAASA,EAAEA,eAAeA,CAACA,SAASA;qBACvCA;oBACDA,UAAUA,EAAEA,iBAAiBA;iBAChCA,CAACA,CAACA;YACPA,CAACA;YAEMN,wCAAeA,GAAtBA;gBACIO,mCAAmCA;gBACnCA,MAAMA,CAACA,IAAIA,CAACA,IAAIA,CAACA,MAAMA,CAACA;YAC5BA,CAACA;YAEMP,kCAASA,GAAhBA;gBACIQ,iEAAiEA;gBACjEA,MAAMA,CAACA,IAAIA,CAACA;YAChBA,CAACA;YAEcR,4CAA6BA,GAA5CA,UAA6CA,IAAwBA,EAAEA,mBAA2BA;gBAC9FS,IAAIA,OAAOA,GAAuBA,IAAIA,CAACA;gBACvCA,IAAIA,UAAUA,GAA8BA,IAAIA,CAACA,MAAMA,CAACA,CAACA,CAACA,CAACA,IAAIA,CAACA;gBAEhEA,EAAEA,CAACA,CAACA,IAAIA,IAAIA,mBAAmBA,GAAGA,UAAUA,CAACA,MAAMA,CAACA,CAACA,CAACA;oBAClDA,OAAOA,GAAGA,iBAASA,CAACA,OAAOA,CAACA,IAAIA,CAACA,CAACA;oBAClCA,OAAOA,CAACA,MAAMA,GAAGA,CAACA,EAAEA,IAAIA,EAAEA,UAAUA,CAACA,KAAKA,CAACA,CAACA,EAAEA,mBAAmBA,CAACA,EAAEA,CAACA,CAACA;oBACtEA,OAAOA,CAACA,UAAUA,GAAGA,IAAIA,CAACA,UAAUA,CAACA,KAAKA,CAACA,CAACA,EAAEA,mBAAmBA,CAACA,CAACA;gBACvEA,CAACA;gBAEDA,MAAMA,CAACA,OAAOA,CAACA;YACnBA,CAACA;YAEMT,gDAAuBA,GAA9BA,UAA+BA,OAAuCA;gBAAtEU,iBAwECA;gBAvEGA,KAAKA,CAACA,WAAWA,CAACA,OAAOA,EAAEA,SAASA,CAACA,CAACA;gBAEtCA,IAAIA,CAACA,eAAeA,GAAGA,OAAOA,CAACA,QAAQA,CAACA;gBACxCA,IAAIA,MAAMA,GAAGA,IAAIA,CAACA,MAAMA,GAAGA,OAAOA,CAACA,MAAMA,CAACA;gBAC1CA,IAAIA,IAAIA,GAAGA,IAAIA,CAACA,WAAWA,GAAGA,IAAIA,CAACA,IAAIA,CAACA;gBACxCA,IAAIA,aAAaA,GAAGA,IAAIA,CAACA,UAAUA,CAACA,MAAMA,CAACA;gBAE3CA;8IAC8HA;gBAC9HA,IAAIA,iBAAiBA,GAAGA,IAAIA,CAACA,oBAAoBA,CAACA,KAAKA,EAAEA,aAAaA,EAAEA,sBAAcA,CAACA,uBAAuBA,CAACA,CAACA;gBAChHA,EAAEA,CAACA,CAACA,iBAAiBA,CAACA,KAAKA,KAAKA,IAAIA,CAACA,eAAeA,CAACA,KAAKA,CAACA,CAACA,CAACA;oBACzDA,iBAAiBA,CAACA,KAAKA,IAAIA,CAACA,MAAMA,CAACA,IAAIA,GAAGA,MAAMA,CAACA,KAAKA,CAACA,CAACA;gBAC5DA,CAACA;gBACDA,iBAAiBA,CAACA,MAAMA,IAAIA,CAACA,MAAMA,CAACA,GAAGA,GAAGA,MAAMA,CAACA,MAAMA,CAACA,CAACA;gBAEzDA,IAAIA,eAAeA,GAAGA,sBAAcA,CAACA,SAASA,CAC1CA,IAAIA,EACJA;oBACIA,cAAcA,EAAEA,iBAAiBA,CAACA,KAAKA;oBACvCA,aAAaA,EAAEA,aAAaA;oBAC5BA,MAAMA,EAAEA,IAAIA;oBACZA,QAAQA,EAAEA,KAAKA;oBACfA,YAAYA,EAAEA,IAAIA,CAACA,YAAYA;oBAC/BA,yBAAyBA,EAAEA,OAAOA,CAACA,yBAAyBA;iBAC/DA,CAACA,CAACA;gBAEPA,4IAA4IA;gBAC5IA,EAAEA,CAACA,CAACA,CAACA,IAAIA,CAACA,YAAYA,CAACA,CAACA,CAACA;oBACrBA,IAAIA,GAAGA,IAAIA,CAACA,WAAWA,GAAGA,cAAcA,CAACA,6BAA6BA,CAACA,IAAIA,EAAEA,eAAeA,CAACA,aAAaA,CAACA,CAACA;gBAChHA,CAACA;gBAEDA,IAAIA,oBAAoBA,GAAGA,cAAcA,CAACA,uBAAuBA,CAACA,IAAIA,EAAEA,iBAAiBA,CAACA,KAAKA,EAAEA,eAAeA,EAAEA,OAAOA,CAACA,CAACA;gBAC3HA,IAAIA,oBAAoBA,GAAGA,cAAcA,CAACA,uBAAuBA,CAACA,IAAIA,EAAEA,iBAAiBA,CAACA,MAAMA,EAAEA,OAAOA,CAACA,CAACA;gBAE3GA,IAAIA,eAAeA,GAAGA,IAAIA,CAACA,eAAeA,GAAGA,kBAAUA,CAACA,UAAUA,CAACA,oBAAoBA,CAACA,CAACA;gBACzFA,IAAIA,eAAeA,GAAGA,IAAIA,CAACA,eAAeA,GAAGA,kBAAUA,CAACA,UAAUA,CAACA,oBAAoBA,CAACA,CAACA;gBAEzFA,IAAIA,aAAaA,GAAGA,IAAIA,CAACA,eAAeA,CAACA,iBAAiBA,GAAGA,CAACA,CAACA,GAAGA,sBAAcA,CAACA,iBAAiBA,CAACA,CAACA;gBAEpGA,IAAIA,eAAeA,GAAGA,sBAAcA,CAACA,iCAAiCA,EAAEA,CAACA;gBACzEA,IAAIA,aAAaA,GAAGA,IAAIA,CAACA,kBAAkBA,CAACA;gBAC5CA,IAAIA,MAAMA,GAAWA,cAAcA,CAACA,oCAAoCA,CAACA,eAAeA,EAAEA,aAAaA,CAACA,CAACA;gBAEzGA,IAAIA,CAACA,MAAMA,GAAGA;oBACVA,aAAaA,EAAEA,eAAeA,CAACA,aAAaA;oBAC5CA,iBAAiBA,EAAEA,eAAeA,CAACA,iBAAiBA;oBACpDA,QAAQA,EAAEA,eAAeA,CAACA,QAAQA;oBAClCA,iBAAiBA,EAAEA,eAAeA,CAACA,iBAAiBA;oBACpDA,aAAaA,EAAEA,aAAaA;oBAC5BA,SAASA,EAAEA,UAACA,CAA0BA;wBAClCA,6BAA6BA;wBAC7BA,IAAIA,SAASA,GAAGA,eAAeA,CAACA,WAAWA,CAACA,CAACA,CAACA,iBAAiBA,EAAEA,aAAaA,EAAEA,MAAMA,CAACA,CAACA;wBACxFA,MAAMA,CAACA,sBAAcA,CAACA,qBAAqBA,CAACA,EAAEA,KAAKA,EAAEA,SAASA,CAACA,MAAMA,CAACA,CAACA,CAACA,KAAKA,CAACA,EAAEA,CAACA,CAACA;oBACtFA,CAACA;oBACDA,WAAWA,EAAEA,sBAAcA,CAACA,4BAA4BA,CAACA,eAAeA,EAAEA,aAAaA,EAAEA,eAAeA,EAAEA,oBAAoBA,CAACA,UAAUA,CAACA;oBAC1IA,MAAMA,EAAEA,UAACA,CAA0BA;wBAC/BA,MAAMA,CAACA,sBAAcA,CAACA,uBAAuBA,CAACA,CAACA,EAAEA,eAAeA,EAAEA,KAAIA,CAACA,MAAMA,CAACA,CAACA;oBACnFA,CAACA;oBACDA,KAAKA,EAAEA;wBACHA,MAAMA,EAAEA,UAACA,CAA0BA;4BAC/BA,EAAEA,CAACA,CAACA,CAACA,CAACA,aAAaA,CAACA;gCAChBA,MAAMA,CAACA,sBAAcA,CAACA,uBAAuBA,CAACA;4BAClDA,MAAMA,CAACA,CAACA,CAACA,SAASA,CAACA;wBACvBA,CAACA;qBACJA;iBACJA,CAACA;gBAEFA,IAAIA,CAACA,eAAeA,CAACA,SAASA,GAAGA,OAAOA,CAACA,qBAAqBA,GAAGA,IAAIA,CAACA,UAAUA,CAACA,CAACA,GAAGA,IAAIA,CAACA;gBAC1FA,IAAIA,CAACA,eAAeA,CAACA,SAASA,GAAGA,OAAOA,CAACA,kBAAkBA,GAAGA,IAAIA,CAACA,UAAUA,CAACA,CAACA,GAAGA,IAAIA,CAACA;gBAEvFA,MAAMA,CAACA,CAACA,eAAeA,EAAEA,eAAeA,CAACA,CAACA;YAC9CA,CAACA;YAEcV,mDAAoCA,GAAnDA,UAAoDA,eAAgCA,EAAEA,aAAuCA;gBACzHW,MAAMA,CAACA,CAACA,eAAeA,CAACA,SAASA,IAAIA,eAAeA,CAACA,SAASA,CAACA,WAAWA,IAAIA,aAAaA,CAACA,YAAYA,KAAKA,CAACA,CAACA,GAAGA,eAAeA,CAACA,SAASA,CAACA,WAAWA,CAACA,KAAKA,GAAGA,IAAIA,CAACA;YACzKA,CAACA;YAEcX,2BAAYA,GAA3BA,UAA4BA,IAAwBA,EAAEA,KAAaA,EAAEA,IAAeA;gBAChFY,IAAIA,UAAUA,GAA8BA,IAAIA,CAACA,MAAMA,CAACA,CAACA,CAACA,CAACA,IAAIA,CAACA;gBAEhEA,EAAEA,CAACA,CAACA,KAAKA,KAAKA,UAAUA,CAACA,MAAMA,GAAGA,CAACA,CAACA;oBAChCA,QAAQA;oBACRA,MAAMA,CAACA,UAAUA,CAACA,KAAKA,CAACA,CAACA,aAAaA,CAACA;gBAC3CA,IAAIA;oBACAA,MAAMA,CAACA,uBAAeA,CAACA,YAAYA,CAACA,IAAIA,EAAEA,KAAKA,EAAEA,IAAIA,EAAEA,KAAKA,CAACA,CAACA;YACtEA,CAACA;YAEaZ,sCAAuBA,GAArCA,UAAsCA,IAAwBA,EAAEA,KAAaA,EAAEA,MAAsBA,EAAEA,OAAuCA;gBAC1Ia,KAAKA,CAACA,WAAWA,CAACA,IAAIA,EAAEA,MAAMA,CAACA,CAACA;gBAChCA,KAAKA,CAACA,WAAWA,CAACA,OAAOA,EAAEA,SAASA,CAACA,CAACA;gBAEtCA,IAAIA,gBAAgBA,GAAcA,kBAAUA,CAACA,oBAAoBA,CAACA,IAAIA,CAACA,gBAAgBA,CAACA,CAACA;gBAEzFA,IAAIA,MAAMA,GAAGA,kBAAUA,CAACA,YAAYA,CAACA,IAAIA,CAACA,MAAMA,EAAEA,gBAAgBA,EAAEA,cAAcA,CAACA,KAAKA,EAAEA,OAAOA,CAACA,aAAaA,CAACA,CAACA;gBAEjHA,IAAIA,iBAAiBA,GAAGA,MAAMA,CAACA,iBAAiBA,CAACA;gBACjDA,IAAIA,YAAYA,GAAGA,iBAAiBA,GAAGA,MAAMA,CAACA,iBAAiBA,CAACA;gBAEhEA,MAAMA,CAAqBA;oBACvBA,SAASA,EAAEA,KAAKA;oBAChBA,UAAUA,EAAEA,MAAMA;oBAClBA,cAAcA,EAAEA,IAAIA,CAACA,gBAAgBA;oBACrCA,YAAYA,EAAEA,sBAAcA,CAACA,eAAeA,CAACA,IAAIA,CAACA,gBAAgBA,EAAEA,cAAcA,CAACA,gBAAgBA,CAACA;oBACpGA,QAAQA,EAAEA,KAAKA;oBACfA,YAAYA,EAAEA,YAAYA;oBAC1BA,iBAAiBA,EAAEA,iBAAiBA;oBACpCA,UAAUA,EAAEA,UAACA,KAAKA,EAAEA,IAAIA,IAAKA,OAAAA,cAAcA,CAACA,YAAYA,CAACA,IAAIA,EAAEA,KAAKA,EAAEA,IAAIA,CAACA,EAA9CA,CAA8CA;oBAC3EA,eAAeA,EAAEA,OAAOA,CAACA,eAAeA;oBACxCA,cAAcA,EAAEA,IAAIA;oBACpBA,gBAAgBA,EAAEA,OAAOA,CAACA,wBAAwBA;oBAClDA,aAAaA,EAAEA,OAAOA,CAACA,qBAAqBA;iBAC/CA,CAACA;YACNA,CAACA;YAEab,sCAAuBA,GAArCA,UAAsCA,IAAwBA,EAAEA,MAAcA,EAAEA,OAAuCA;gBACnHc,KAAKA,CAACA,WAAWA,CAACA,IAAIA,EAAEA,MAAMA,CAACA,CAACA;gBAChCA,KAAKA,CAACA,WAAWA,CAACA,OAAOA,EAAEA,SAASA,CAACA,CAACA;gBAEtCA,IAAIA,cAAcA,GAAGA,kBAAUA,CAACA,aAAaA,CAACA,OAAOA,CAACA,aAAaA,EAAEA,CAACA,IAAIA,CAACA,WAAWA,EAAEA,IAAIA,CAACA,WAAWA,CAACA,CAACA,CAACA;gBAE3GA,MAAMA,CAAqBA;oBACvBA,SAASA,EAAEA,MAAMA;oBACjBA,UAAUA,EAAEA,cAAcA;oBAC1BA,QAAQA,EAAEA,IAAIA;oBACdA,UAAUA,EAAEA,IAAIA;oBAChBA,cAAcA,EAAEA,IAAIA,CAACA,cAAcA;oBACnCA,YAAYA,EAAEA,sBAAcA,CAACA,eAAeA,CAACA,IAAIA,CAACA,cAAcA,EAAEA,cAAcA,CAACA,gBAAgBA,CAACA;oBAClGA,YAAYA,EAAEA,CAACA;oBACfA,eAAeA,EAAEA,OAAOA,CAACA,eAAeA;oBACxCA,8BAA8BA,EAAEA,IAAIA;oBACpCA,cAAcA,EAAEA,KAAKA;oBACrBA,gBAAgBA,EAAEA,OAAOA,CAACA,qBAAqBA;oBAC/CA,aAAaA,EAAEA,OAAOA,CAACA,kBAAkBA;iBAC5CA,CAACA;YACNA,CAACA;YAEMd,6CAAoBA,GAA3BA,UAA4BA,QAAiBA,EAAEA,aAAqBA,EAAEA,iBAAyBA;gBAC3Fe,MAAMA,CAACA,sBAAcA,CAACA,oBAAoBA,CACtCA,aAAaA,EACbA,iBAAiBA,EACjBA,IAAIA,CAACA,eAAeA,EACpBA,IAAIA,CAACA,YAAYA,EACjBA,QAAQA,CAACA,CAACA;YAClBA,CAACA;YAEMf,sDAA6BA,GAApCA;gBACIgB,MAAMA,CAACA,KAAKA,CAACA;YACjBA,CAACA;YAEMhB,uCAAcA,GAArBA,UAAsBA,WAA4BA;gBAC9CiB,IAAIA,CAACA,eAAeA,GAAGA,WAAWA,CAACA;YACvCA,CAACA;YAEMjB,wCAAeA,GAAtBA,UAAuBA,UAAkBA,EAAEA,QAAgBA;gBACvDkB,IAAIA,IAAIA,GAAGA,IAAIA,CAACA,WAAWA,GAAGA,iBAASA,CAACA,OAAOA,CAACA,IAAIA,CAACA,IAAIA,CAACA,CAACA;gBAE3DA,IAAIA,CAACA,MAAMA,GAAGA,CAACA,EAAEA,IAAIA,EAAEA,IAAIA,CAACA,MAAMA,CAACA,CAACA,CAACA,CAACA,IAAIA,CAACA,KAAKA,CAACA,UAAUA,EAAEA,QAAQA,CAACA,EAAEA,CAACA,CAACA;gBAC1EA,IAAIA,CAACA,UAAUA,GAAGA,IAAIA,CAACA,UAAUA,CAACA,KAAKA,CAACA,UAAUA,EAAEA,QAAQA,CAACA,CAACA;gBAE9DA,MAAMA,CAACA,IAAIA,CAACA;YAChBA,CAACA;YAEOlB,oCAAWA,GAAnBA,UAAoBA,IAA+BA;gBAC/CmB,IAAIA,mBAAmBA,GAAGA,IAAIA,CAACA,mBAAmBA,CAACA;gBACnDA,IAAIA,aAAaA,GAAGA,mBAAmBA,CAACA,SAASA,CAACA,cAAcA,CAACA,oBAAoBA,CAACA,QAAQA,CAACA,CAACA;gBAChGA,IAAIA,IAAIA,GAAGA,aAAaA,CAACA,IAAIA,CAACA,IAAIA,EAAEA,UAACA,CAA0BA,IAAKA,OAAAA,CAACA,CAACA,GAAGA,EAALA,CAAKA,CAACA,CAACA;gBAE3EA,IAAIA;qBACCA,KAAKA,EAAEA;qBACPA,MAAMA,CAACA,MAAMA,CAACA;qBACdA,IAAIA,CAACA,OAAOA,EAAEA,UAACA,CAA0BA,IAAKA,OAAAA,cAAcA,CAACA,oBAAoBA,CAACA,KAAKA,CAACA,MAAMA,CAACA,CAACA,CAACA,SAASA,GAAGA,WAAWA,GAAGA,EAAEA,CAACA,EAAhFA,CAAgFA,CAACA,CAACA;gBAErIA,IAAIA,CAACA,IAAIA,EAAEA,CAACA,MAAMA,EAAEA,CAACA;gBAErBA,MAAMA,CAACA,IAAIA,CAACA;YAChBA,CAACA;YAEOnB,yCAAgBA,GAAxBA,UAAyBA,IAA+BA;gBACpDoB,IAAIA,mBAAmBA,GAAGA,IAAIA,CAACA,mBAAmBA,CAACA;gBACnDA,IAAIA,kBAAkBA,GAAGA,mBAAmBA,CAACA,SAASA,CAACA,cAAcA,CAACA,yBAAyBA,CAACA,QAAQA,CAACA,CAACA;gBAE1GA,IAAIA,UAAUA,GAAGA,kBAAkBA,CAACA,IAAIA,CAACA,IAAIA,CAACA,KAAKA,CAACA,CAACA,EAAEA,IAAIA,CAACA,MAAMA,GAAGA,CAACA,CAACA,EAAEA,UAACA,CAA0BA,IAAKA,OAAAA,CAACA,CAACA,GAAGA,EAALA,CAAKA,CAACA,CAACA;gBAEhHA,UAAUA;qBACLA,KAAKA,EAAEA;qBACPA,MAAMA,CAACA,MAAMA,CAACA;qBACdA,OAAOA,CAACA,cAAcA,CAACA,yBAAyBA,CAACA,KAAKA,EAAEA,IAAIA,CAACA,CAACA;gBAEnEA,UAAUA,CAACA,IAAIA,EAAEA,CAACA,MAAMA,EAAEA,CAACA;gBAE3BA,MAAMA,CAACA,UAAUA,CAACA;YACtBA,CAACA;YAEMpB,+BAAMA,GAAbA,UAAcA,kBAA2BA;gBAAzCqB,iBAyDCA;gBAxDGA,IAAIA,UAAUA,GAAGA,IAAIA,CAACA,WAAWA,CAACA,MAAMA,CAACA,CAACA,CAACA,CAACA,IAAIA,CAACA;gBACjDA,IAAIA,IAAIA,GAAGA,IAAIA,CAACA,WAAWA,CAACA,UAAUA,CAACA,CAACA;gBACxCA,IAAIA,UAAUA,GAAGA,IAAIA,CAACA,gBAAgBA,CAACA,UAAUA,CAACA,CAACA;gBAEnDA,EAAEA,CAACA,CAACA,IAAIA,CAACA,eAAeA,CAACA;oBACrBA,sBAAcA,CAACA,UAAUA,CAACA,IAAIA,EAAEA,UAACA,YAA0BA,IAAKA,OAAAA,YAAYA,CAACA,IAAIA,CAACA,WAAWA,EAA7BA,CAA6BA,CAACA,CAACA;gBAEnGA,IAAIA,YAAYA,GAAGA,IAAIA,CAACA,oBAAoBA,IAAIA,IAAIA,CAACA,oBAAoBA,CAACA,YAAYA,EAAEA,CAACA;gBAEzFA,IAAIA,MAAMA,GAAGA,IAAIA,CAACA,eAAeA,CAACA,KAAKA,CAACA;gBACxCA,IAAIA,MAAMA,GAAGA,IAAIA,CAACA,eAAeA,CAACA,KAAKA,CAACA;gBACxCA,IAAIA,EAAEA,GAAGA,MAAMA,CAACA,CAACA,CAACA,CAACA;gBAEnBA,IAAIA,CAACA,eAAeA,CAACA,IAAIA,CAACA,QAAQA,EAAEA,IAAIA,CAACA,kBAAkBA,EAAEA,CAACA;qBACzDA,IAAIA,CAACA,OAAOA,EAAEA,IAAIA,CAACA,iBAAiBA,EAAEA,CAACA,CAACA;gBAE7CA;;;;;mBAKGA;gBACHA,IAAIA;qBACCA,KAAKA,CAACA,MAAMA,EAAEA,UAACA,CAA0BA,IAAKA,OAAAA,CAACA,CAACA,KAAKA,EAAPA,CAAOA,CAACA;qBACtDA,KAAKA,CAACA,cAAcA,EAAEA,UAACA,CAA0BA,IAAKA,OAAAA,CAACA,CAACA,OAAOA,GAAGA,kBAAUA,CAACA,cAAcA,GAAGA,kBAAUA,CAACA,cAAcA,CAACA,CAACA,CAACA,QAAQA,EAAEA,CAACA,CAACA,SAASA,EAAEA,YAAYA,EAAEA,KAAIA,CAACA,IAAIA,CAACA,aAAaA,CAACA,EAAjIA,CAAiIA,CAACA;qBACxLA,IAAIA,CAACA,OAAOA,EAAEA,IAAIA,CAACA,MAAMA,CAACA,aAAaA,CAACA;qBACxCA,IAAIA,CAACA,GAAGA,EAAEA,UAACA,CAA0BA,IAAKA,OAAAA,MAAMA,CAACA,CAACA,CAACA,aAAaA,CAACA,EAAvBA,CAAuBA,CAACA;qBAClEA,IAAIA,CAACA,GAAGA,EAAEA,UAACA,CAA0BA,IAAKA,OAAAA,cAAcA,CAACA,UAAUA,CAACA,MAAMA,EAAEA,CAACA,CAACA,QAAQA,EAAEA,CAACA,CAACA,KAAKA,CAACA,EAAtDA,CAAsDA,CAACA;qBACjGA,IAAIA,CAACA,QAAQA,EAAEA,UAACA,CAA0BA,IAAKA,OAAAA,EAAEA,GAAGA,MAAMA,CAACA,IAAIA,CAACA,GAAGA,CAACA,CAACA,CAACA,KAAKA,CAACA,CAACA,EAA9BA,CAA8BA,CAACA,CAACA;gBAEpFA,UAAUA;qBACLA,IAAIA,CAACA;oBACFA,IAAIA,EAAEA,UAACA,CAA0BA,IAAKA,OAAAA,MAAMA,CAACA,CAACA,CAACA,aAAaA,CAACA,EAAvBA,CAAuBA;oBAC7DA,IAAIA,EAAEA,UAACA,CAA0BA,IAAKA,OAAAA,MAAMA,CAACA,CAACA,CAACA,QAAQA,GAAGA,CAACA,CAACA,KAAKA,CAACA,EAA5BA,CAA4BA;oBAClEA,IAAIA,EAAEA,UAACA,CAA0BA,IAAKA,OAAAA,MAAMA,CAACA,CAACA,CAACA,aAAaA,GAAGA,CAACA,CAACA,GAAGA,KAAIA,CAACA,MAAMA,CAACA,aAAaA,EAAvDA,CAAuDA;oBAC7FA,IAAIA,EAAEA,UAACA,CAA0BA,IAAKA,OAAAA,MAAMA,CAACA,CAACA,CAACA,QAAQA,GAAGA,CAACA,CAACA,KAAKA,CAACA,EAA5BA,CAA4BA;iBACrEA,CAACA,CAACA;gBAEPA,IAAIA,aAAaA,GAAGA,IAAIA,CAACA,IAAIA,CAACA,kBAAkBA,CAACA;gBACjDA,IAAIA,eAAeA,GAAqBA,EAAEA,CAACA;gBAC3CA,EAAEA,CAACA,CAACA,aAAaA,IAAIA,aAAaA,CAACA,IAAIA,IAAIA,aAAaA,CAACA,YAAYA,CAACA,CAACA,CAACA;oBACpEA,eAAeA,GAAGA,IAAIA,CAACA,qBAAqBA,EAAEA,CAACA;gBACnDA,CAACA;gBAEDA,IAAIA,eAAeA,GAAkCA,SAASA,CAACA;gBAC/DA,EAAEA,CAACA,CAACA,IAAIA,CAACA,oBAAoBA,CAACA,CAACA,CAACA;oBAC5BA,eAAeA,GAAGA;wBACdA,IAAIA,EAAEA,IAAIA;wBACVA,UAAUA,EAAEA,UAAUA;qBACzBA,CAACA;gBACNA,CAACA;gBAEDA,0DAA0DA;gBAC1DA,eAAOA,CAACA,6BAA6BA,CAACA,IAAIA,CAACA,OAAOA,CAACA,CAACA;gBAEpDA,MAAMA,CAACA,EAAEA,UAAUA,EAAEA,UAAUA,EAAEA,eAAeA,EAAEA,eAAeA,EAAEA,eAAeA,EAAEA,eAAeA,EAAEA,gBAAgBA,EAAEA,IAAIA,EAAEA,CAACA;YAClIA,CAACA;YAEMrB,yCAAgBA,GAAvBA;gBACIsB,EAAEA,CAACA,CAACA,IAAIA,CAACA,oBAAoBA,CAACA;oBAC1BA,IAAIA,CAACA,oBAAoBA,CAACA,cAAcA,EAAEA,CAACA;YACnDA,CAACA;YAEMtB,qDAA4BA,GAAnCA;gBACIuB,MAAMA,CAACA,gBAAQA,CAACA,WAAWA,CAACA;YAChCA,CAACA;YAEavB,yBAAUA,GAAxBA,UAAyBA,KAAiCA,EAAEA,GAAWA,EAAEA,KAAaA;gBAClFwB,EAAEA,CAACA,CAACA,KAAKA,GAAGA,CAACA,CAACA;oBACVA,MAAMA,CAACA,KAAKA,CAACA,GAAGA,CAACA,CAACA;gBACtBA,IAAIA;oBACAA,MAAMA,CAACA,KAAKA,CAACA,GAAGA,CAACA,GAAGA,CAACA,KAAKA,CAACA,CAACA,CAACA,GAAGA,KAAKA,CAACA,KAAKA,CAACA,CAACA,CAACA;YACtDA,CAACA;YAEOxB,0CAAiBA,GAAzBA;gBACIyB,MAAMA,CAACA,IAAIA,CAACA,eAAeA,CAACA,KAAKA,GAAGA,CAACA,IAAIA,CAACA,MAAMA,CAACA,IAAIA,GAAGA,IAAIA,CAACA,MAAMA,CAACA,KAAKA,CAACA,CAACA;YAC/EA,CAACA;YAEOzB,2CAAkBA,GAA1BA;gBACI0B,MAAMA,CAACA,IAAIA,CAACA,eAAeA,CAACA,MAAMA,GAAGA,CAACA,IAAIA,CAACA,MAAMA,CAACA,GAAGA,GAAGA,IAAIA,CAACA,MAAMA,CAACA,MAAMA,CAACA,CAACA;YAChFA,CAACA;YAEO1B,sDAA6BA,GAArCA,UAAsCA,OAAwBA;gBAC1D2B,IAAIA,sBAAsBA,GAAGA,IAAIA,CAACA,MAAMA,CAACA,kBAAkBA,EAAEA,CAACA;gBAC9DA,IAAIA,aAAaA,GAAGA,uBAAeA,CAACA,YAAYA,CAACA,OAAOA,EAAEA,2BAAmBA,CAACA,eAAeA,CAACA,YAAYA,EAAEA,sBAAsBA,CAACA,CAACA,CAACA,CAACA,KAAKA,CAACA,CAACA;gBAC7IA,IAAIA,aAAaA,GAAGA,uBAAeA,CAACA,YAAYA,CAACA,OAAOA,EAAEA,2BAAmBA,CAACA,eAAeA,CAACA,YAAYA,EAAEA,sBAAsBA,CAACA,CAACA,CAACA,CAACA,KAAKA,CAACA,CAACA;gBAC7IA,IAAIA,UAAUA,GAAGA,uBAAeA,CAACA,YAAYA,CAACA,OAAOA,EAAEA,2BAAmBA,CAACA,eAAeA,CAACA,SAASA,EAAEA,cAAcA,CAACA,iBAAiBA,CAACA,CAACA;gBAExIA,MAAMA,CAAiCA;oBACnCA,YAAYA,EAAEA,EAAEA,KAAKA,EAAEA,EAAEA,KAAKA,EAAEA,aAAaA,EAAEA,EAAEA;oBACjDA,YAAYA,EAAEA,EAAEA,KAAKA,EAAEA,EAAEA,KAAKA,EAAEA,aAAaA,EAAEA,EAAEA;oBACjDA,SAASA,EAAEA,EAAEA,KAAKA,EAAEA,EAAEA,KAAKA,EAAEA,UAAUA,EAAEA,EAAEA;iBAC9CA,CAACA;YACNA,CAACA;YAED3B,qBAAqBA;YACdA,8CAAqBA,GAA5BA;gBACI4B,IAAIA,eAAeA,GAAqBA,EAAEA,CAACA;gBAE3CA,IAAIA,IAAIA,GAAGA,IAAIA,CAACA,IAAIA,CAACA;gBACrBA,IAAIA,MAAMA,GAAGA,IAAIA,CAACA,eAAeA,CAACA,KAAKA,CAACA;gBACxCA,IAAIA,MAAMA,GAAGA,IAAIA,CAACA,eAAeA,CAACA,KAAKA,CAACA;gBACxCA,IAAIA,EAAEA,GAAGA,MAAMA,CAACA,CAACA,CAACA,CAACA;gBACnBA,IAAIA,MAAMA,GAAGA,IAAIA,CAACA,MAAMA,CAACA;gBACzBA,IAAIA,eAAeA,GAAGA,yBAAiBA,CAACA,iCAAiCA,EAAEA,CAACA;gBAC5EA,IAAIA,aAAaA,GAAWA,yBAAiBA,CAACA,oCAAoCA,CAACA,IAAIA,CAACA,eAAeA,CAACA,SAASA,EAAEA,IAAIA,CAACA,kBAAkBA,CAACA,CAACA;gBAC5IA,IAAIA,aAAaA,GAAGA,IAAIA,CAACA,IAAIA,CAACA,kBAAkBA,CAACA;gBAEjDA,GAAGA,CAACA,CAAsBA,UAAMA,EAA3BA,kBAAiBA,EAAjBA,IAA2BA,CAACA;oBAA5BA,IAAIA,aAAaA,GAAIA,MAAMA,IAAVA;oBAClBA,GAAGA,CAACA,CAAkBA,UAAkBA,EAAlBA,KAAAA,aAAaA,CAACA,IAAIA,EAAnCA,cAAaA,EAAbA,IAAmCA,CAACA;wBAApCA,IAAIA,SAASA,SAAAA;wBACdA,6BAA6BA;wBAC7BA,IAAIA,UAAUA,GAAUA;4BACpBA,IAAIA,EAAEA,MAAMA,CAACA,SAASA,CAACA,aAAaA,CAACA;4BACrCA,GAAGA,EAAEA,cAAcA,CAACA,UAAUA,CAACA,MAAMA,EAAEA,SAASA,CAACA,QAAQA,EAAEA,SAASA,CAACA,KAAKA,CAACA;4BAC3EA,KAAKA,EAAEA,IAAIA,CAACA,MAAMA,CAACA,aAAaA;4BAChCA,MAAMA,EAAEA,EAAEA,GAAGA,MAAMA,CAACA,IAAIA,CAACA,GAAGA,CAACA,SAASA,CAACA,KAAKA,CAACA,CAACA;yBACjDA,CAACA;wBAEFA,uBAAuBA;wBACvBA,IAAIA,YAAYA,GAAGA,SAASA,CAACA,iBAAiBA,CAACA;wBAC/CA,IAAIA,SAASA,GAAGA,eAAeA,CAACA,WAAWA,CAACA,YAAYA,EAAEA,IAAIA,CAACA,IAAIA,CAACA,kBAAkBA,EAAEA,aAAaA,CAACA,CAACA;wBACvGA,IAAIA,IAAIA,GAAGA,yBAAiBA,CAACA,qBAAqBA,CAACA,SAASA,CAACA,MAAMA,CAACA,SAASA,CAACA,KAAKA,CAACA,CAACA,CAACA;wBAEtFA,sBAAsBA;wBACtBA,IAAIA,UAAUA,GAAmBA;4BAC7BA,IAAIA,EAAEA,IAAIA;4BACVA,UAAUA,EAAEA,yBAAiBA,CAACA,mBAAmBA,CAACA,UAAUA;4BAC5DA,QAAQA,EAAEA,cAAcA,CAACA,SAASA,CAACA,aAAaA,CAACA,QAAQA,IAAIA,yBAAiBA,CAACA,wBAAwBA,CAACA;4BACxGA,UAAUA,EAAEA,yBAAiBA,CAACA,mBAAmBA,CAACA,UAAUA;yBAC/DA,CAACA;wBAEFA,IAAIA,SAASA,GAAGA,8BAAsBA,CAACA,mBAAmBA,CAACA,UAAUA,CAACA,CAACA;wBACvEA,IAAIA,UAAUA,GAAGA,8BAAsBA,CAACA,qBAAqBA,CAACA,UAAUA,EAAEA,IAAIA,CAACA,wBAAwBA,CAACA,CAACA;wBAEzGA,eAAeA,CAACA,IAAIA,CAACA;4BACjBA,WAAWA,EAAEA,IAAIA;4BACjBA,IAAIA,EAAEA,IAAIA;4BACVA,QAAQA,EAAEA;gCACNA,KAAKA,EAAEA,SAASA;gCAChBA,MAAMA,EAAEA,UAAUA;6BACrBA;4BACDA,WAAWA,EAAEA,aAAaA,CAACA,UAAUA,GAAGA,aAAaA,CAACA,UAAUA,GAAGA,yBAAiBA,CAACA,iBAAiBA;4BACtGA,UAAUA,EAAEA,yBAAiBA,CAACA,uBAAuBA;4BACrDA,UAAUA,EAAEA,iBAAkCA;4BAC9CA,WAAWA,EAAEA;gCACTA,IAAIA,EAAEA,UAAUA;gCAChBA,WAAWA,EAAEA,SAASA,CAACA,KAAKA,IAAIA,CAACA,GAAGA,2BAAsCA,GAAGA,wBAAmCA;gCAChHA,cAAcA,EAAEA,SAASA,CAACA,KAAKA,KAAKA,CAACA,GAAGA,cAAcA,CAACA,sBAAsBA,GAAGA,cAAcA,CAACA,mBAAmBA;6BACrHA;4BACDA,QAAQA,EAAEA,aAAaA,CAACA,QAAQA;4BAChCA,QAAQA,EAAEA,SAASA;yBACtBA,CAACA,CAACA;qBACNA;iBACJA;gBAEDA,MAAMA,CAACA,eAAeA,CAACA;YAC3BA,CAACA;YA9oBa5B,+BAAgBA,GAAqCA,EAAEA,UAAUA,EAAEA,SAASA,EAAEA,YAAYA,EAAEA,cAAcA,EAAEA,CAACA;YAC5GA,iCAAkBA,GAAGA,gBAAgBA,CAACA;YACtCA,2CAA4BA,GAAGA,qBAAqBA,CAACA;YACrDA,4BAAaA,GAAGA,yBAAyBA,CAACA;YAC1CA,4BAAaA,GAAGA,yBAAyBA,CAACA;YAC1CA,yBAAUA,GAAGA,sBAAsBA,CAACA;YACpCA,mCAAoBA,GAAqBA,sBAAsBA,CAACA,QAAQA,CAACA,CAACA;YAC1EA,wCAAyBA,GAAqBA,sBAAsBA,CAACA,qBAAqBA,CAACA,CAACA;YAE5FA,gCAAiBA,GAAGA,SAASA,CAACA;YAC9BA,kCAAmBA,GAAGA,CAACA,mBAA4BA,EAAEA,iBAA2BA,CAACA,CAACA;YAClFA,qCAAsBA,GAAGA,CAACA,mBAA4BA,EAAEA,mBAA6BA,CAACA,CAACA;YAooB1GA,qBAACA;QAADA,CAhpBAr0F,AAgpBCq0F,IAAAr0F;QAhpBYA,sBAAcA,iBAgpB1BA,CAAAA;IACLA,CAACA,EA7rBcrxC,OAAOA,GAAPA,eAAOA,KAAPA,eAAOA,QA6rBrBA;AAADA,CAACA,EA7rBM,OAAO,KAAP,OAAO,QA6rBb;ACztBD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,sCAAsC;AAEtC,IAAO,OAAO,CAuoBb;AAvoBD,WAAO,OAAO;IAACA,IAAAA,OAAOA,CAuoBrBA;IAvoBcA,WAAAA,OAAOA,EAACA,CAACA;QAEpBqxC,IAAOA,UAAUA,GAAGA,OAAOA,CAACA,OAAOA,CAACA,QAAQA,CAACA,UAAUA,CAACA;QAExDA,IAAOA,sBAAsBA,GAAGA,QAAQA,CAACA,YAAYA,CAACA,sBAAsBA,CAACA;QAiD5EA,CAACA;QAEFA,IAAMA,kBAAkBA,GAAqBA,sBAAsBA,CAACA,mBAAmBA,CAACA,CAACA;QACzFA,IAAMA,yBAAyBA,GAAqBA,sBAAsBA,CAACA,2BAA2BA,CAACA,CAACA;QACxGA,IAAMA,cAAcA,GAAqBA,sBAAsBA,CAACA,OAAOA,CAACA,CAACA;QACzEA,IAAMA,sBAAsBA,GAAqBA,sBAAsBA,CAACA,gBAAgBA,CAACA,CAACA;QAC1FA,IAAMA,mBAAmBA,GAAqBA,sBAAsBA,CAACA,aAAaA,CAACA,CAACA;QACpFA,IAAMA,yBAAyBA,GAAqBA,sBAAsBA,CAACA,oBAAoBA,CAACA,CAACA;QACjGA,IAAMA,yBAAyBA,GAAqBA,sBAAsBA,CAACA,oBAAoBA,CAACA,CAACA;QACjGA,IAAMA,yBAAyBA,GAAqBA,sBAAsBA,CAACA,oBAAoBA,CAACA,CAACA;QAEjGA;YAoBIk2F,0BAAmBA,cAA+BA;gBAA/BC,mBAAcA,GAAdA,cAAcA,CAAiBA;gBAV1CA,qBAAgBA,GAAYA,KAAKA,CAACA;gBAWtCA,EAAEA,CAACA,CAACA,CAACA,cAAcA,CAACA,CAACA,CAACA;oBAClBA,IAAIA,CAACA,cAAcA,GAAGA,gBAAgBA,CAACA,qBAAqBA,CAACA;gBACjEA,CAACA;YACLA,CAACA;YAEMD,oDAAyBA,GAAhCA;gBACIE,MAAMA,CAACA,IAAIA,CAACA,gBAAgBA,CAACA;YACjCA,CAACA;YAEDF,2BAA2BA;YACpBA,4CAAiBA,GAAxBA,UAAyBA,KAAaA,EAAEA,MAAcA;gBAClDG,IAAIA,CAACA,iBAAiBA,GAAGA,KAAKA,CAACA;gBAC/BA,IAAIA,CAACA,kBAAkBA,GAAGA,MAAMA,CAACA;YACrCA,CAACA;YAEMH,+BAAIA,GAAXA,UAAYA,WAA8BA,EAAEA,WAAiCA;gBACzEI,IAAIA,CAACA,gBAAgBA,GAAGA,IAAIA,CAACA;gBAE7BA,EAAEA,CAACA,CAACA,CAACA,IAAIA,CAACA,gBAAgBA,CAACA,CAACA,CAACA;oBACzBA,IAAIA,CAACA,gBAAgBA,GAAGA,IAAIA,CAACA,sBAAsBA,EAAEA,CAACA;gBAC1DA,CAACA;gBAEDA,IAAIA,CAACA,iBAAiBA,CAACA,WAAWA,CAACA,CAACA;gBAEpCA,IAAIA,CAACA,gBAAgBA;qBAChBA,KAAKA,CAACA,YAAYA,EAAEA,SAASA,CAACA;qBAC9BA,UAAUA,EAAEA;qBACZA,QAAQA,CAACA,CAACA,CAACA,CAACA,8BAA8BA;qBAC1CA,KAAKA,CAACA,SAASA,EAAEA,IAAIA,CAACA,cAAcA,CAACA,OAAOA,CAACA,CAACA;gBAEnDA,IAAIA,CAACA,WAAWA,CAACA,WAAWA,CAACA,CAACA;YAClCA,CAACA;YAEMJ,+BAAIA,GAAXA,UAAYA,WAA8BA,EAAEA,WAAiCA;gBACzEK,EAAEA,CAACA,CAACA,IAAIA,CAACA,gBAAgBA,CAACA,CAACA,CAACA;oBACxBA,EAAEA,CAACA,CAACA,WAAWA,CAACA,CAACA,CAACA;wBACdA,IAAIA,CAACA,iBAAiBA,CAACA,WAAWA,CAACA,CAACA;oBACxCA,CAACA;oBAEDA,IAAIA,CAACA,WAAWA,CAACA,WAAWA,CAACA,CAACA;gBAClCA,CAACA;YACLA,CAACA;YAEML,+BAAIA,GAAXA;gBACIM,EAAEA,CAACA,CAACA,IAAIA,CAACA,gBAAgBA,CAACA,CAACA,CAACA;oBACxBA,IAAIA,CAACA,gBAAgBA,GAAGA,KAAKA,CAACA;oBAC9BA,IAAIA,CAACA,gBAAgBA;yBAChBA,UAAUA,EAAEA;yBACZA,QAAQA,CAACA,IAAIA,CAACA,cAAcA,CAACA,iBAAiBA,CAACA;yBAC/CA,KAAKA,CAACA,SAASA,EAAEA,CAACA,CAACA;yBACnBA,IAAIA,CAACA,KAAKA,EAAEA,cAAc,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,CAACA,CAACA;gBACxEA,CAACA;YACLA,CAACA;YAEON,iDAAsBA,GAA9BA;gBACIO,IAAIA,SAASA,GAAiBA,EAAEA,CAACA,MAAMA,CAACA,gBAAgBA,CAACA,uBAAuBA,CAACA;qBAC5EA,MAAMA,CAACA,KAAKA,CAACA;qBACbA,IAAIA,CAACA,OAAOA,EAAEA,kBAAkBA,CAACA,KAAKA,CAACA,CAACA;gBAE7CA,SAASA,CAACA,MAAMA,CAACA,KAAKA,CAACA,CAACA,IAAIA,CAACA,OAAOA,EAAEA,cAAcA,CAACA,KAAKA,CAACA,CAACA;gBAC5DA,SAASA,CAACA,MAAMA,CAACA,KAAKA,CAACA,CAACA,IAAIA,CAACA,OAAOA,EAAEA,yBAAyBA,CAACA,KAAKA,CAACA,CAACA;gBAEvEA,MAAMA,CAACA,SAASA,CAACA;YACrBA,CAACA;YAEOP,4CAAiBA,GAAzBA,UAA0BA,WAA8BA;gBACpDQ,EAAEA,CAACA,CAACA,CAACA,CAACA,OAAOA,CAACA,WAAWA,EAAEA,IAAIA,CAACA,kBAAkBA,CAACA,CAACA;oBAChDA,MAAMA,CAACA;gBACXA,IAAIA,CAACA,kBAAkBA,GAAGA,WAAWA,CAACA;gBAEtCA,IAAIA,YAAYA,GAAWA,mBAAmBA,CAACA,QAAQA,CAACA;gBACxDA,IAAIA,gBAAgBA,GAAGA,IAAIA,CAACA,gBAAgBA,CAACA,MAAMA,CAACA,yBAAyBA,CAACA,QAAQA,CAACA,CAACA;gBAExFA,yBAAyBA;gBACzBA,gBAAgBA,CAACA,SAASA,CAACA,sBAAsBA,CAACA,QAAQA,CAACA,CAACA,MAAMA,EAAEA,CAACA;gBACrEA,gBAAgBA,CAACA,SAASA,CAACA,mBAAmBA,CAACA,QAAQA,CAACA,CAACA,MAAMA,EAAEA,CAACA;gBAElEA,EAAEA,CAACA,CAACA,WAAWA,CAACA,MAAMA,KAAKA,CAACA,CAACA;oBAACA,MAAMA,CAACA;gBAErCA,EAAEA,CAACA,CAACA,WAAWA,CAACA,CAACA,CAACA,CAACA,MAAMA,CAACA,CAACA,CAACA;oBACxBA,gBAAgBA,CAACA,MAAMA,CAACA,KAAKA,CAACA,CAACA,IAAIA,CAACA,OAAOA,EAAEA,sBAAsBA,CAACA,KAAKA,CAACA,CAACA,IAAIA,CAACA,WAAWA,CAACA,CAACA,CAACA,CAACA,MAAMA,CAACA,CAACA;gBAC3GA,CAACA;gBACDA,IAAIA,UAAUA,GAAuBA,gBAAgBA,CAACA,SAASA,CAACA,YAAYA,CAACA,CAACA,IAAIA,CAACA,WAAWA,CAACA,CAACA;gBAChGA,IAAIA,MAAMA,GAAiBA,UAAUA,CAACA,KAAKA,EAAEA,CAACA,MAAMA,CAACA,KAAKA,CAACA,CAACA,IAAIA,CAACA,OAAOA,EAAEA,mBAAmBA,CAACA,KAAKA,CAACA,CAACA;gBACrGA,EAAEA,CAACA,CAACA,WAAWA,CAACA,CAACA,CAACA,CAACA,KAAKA,CAACA,CAACA,CAACA;oBACvBA,IAAIA,YAAYA,GAAiBA,MAAMA,CAACA,MAAMA,CAACA,KAAKA,CAACA,CAACA,IAAIA,CAACA,OAAOA,EAAEA,yBAAyBA,CAACA,KAAKA,CAACA,CAACA;oBAErGA,YAAYA;yBACPA,MAAMA,CAACA,KAAKA,CAACA;yBACbA,IAAIA,CAACA;wBACFA,OAAOA,EAAEA,MAAMA;wBACfA,QAAQA,EAAEA,MAAMA;qBACnBA,CAACA;yBACDA,MAAMA,CAACA,QAAQA,CAACA;yBAChBA,IAAIA,CAACA;wBACFA,IAAIA,EAAEA,GAAGA;wBACTA,IAAIA,EAAEA,GAAGA;wBACTA,GAAGA,EAAEA,GAAGA;qBACXA,CAACA;yBACDA,KAAKA,CAACA;wBACHA,MAAMA,EAAEA,UAACA,CAAkBA,IAAKA,OAAAA,CAACA,CAACA,KAAKA,EAAPA,CAAOA;qBAC1CA,CAACA,CAACA;gBACXA,CAACA;gBACDA,IAAIA,YAAYA,GAAiBA,MAAMA,CAACA,MAAMA,CAACA,KAAKA,CAACA,CAACA,IAAIA,CAACA,OAAOA,EAAEA,yBAAyBA,CAACA,KAAKA,CAACA,CAACA;gBACrGA,IAAIA,YAAYA,GAAiBA,MAAMA,CAACA,MAAMA,CAACA,KAAKA,CAACA,CAACA,IAAIA,CAACA,OAAOA,EAAEA,yBAAyBA,CAACA,KAAKA,CAACA,CAACA;gBAErGA,YAAYA,CAACA,IAAIA,CAACA,UAAUA,CAAkBA,IAAI,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAACA,CAACA;gBAC3EA,YAAYA,CAACA,IAAIA,CAACA,UAAUA,CAAkBA,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAACA,CAACA;YACzEA,CAACA;YAEOR,6CAAkBA,GAA1BA,UAA2BA,WAAiCA,EAAEA,iBAA6BA;gBACvFS,IAAIA,sBAAsBA,GAAeA,IAAIA,CAACA,gBAAgBA,CAACA,IAAIA,EAAEA,CAACA,qBAAqBA,EAAEA,CAACA;gBAC9FA,IAAIA,iBAAiBA,GAAWA,IAAIA,CAACA,KAAKA,CAACA,WAAWA,CAACA,KAAKA,GAAGA,CAACA,CAACA,CAACA;gBAClEA,IAAIA,OAAOA,GAAWA,CAACA,CAACA;gBACxBA,IAAIA,OAAOA,GAAWA,CAACA,CAACA;gBACxBA,IAAIA,WAAWA,GAAqBA,IAAIA,UAAUA,CAACA,KAAKA,CAACA,WAAWA,CAACA,CAACA,GAAGA,iBAAiBA,EAAEA,WAAWA,CAACA,CAACA,GAAGA,iBAAiBA,CAACA,CAACA;gBAC/HA,IAAIA,WAAWA,GAAWA,CAACA,CAACA;gBAE5BA,EAAEA,CAACA,CAACA,iBAAiBA,KAAKA,eAAkBA,CAACA,CAACA,CAACA;oBAC3CA,OAAOA,IAAIA,CAACA,GAAGA,WAAWA,GAAGA,iBAAiBA,CAACA;oBAC/CA,OAAOA,IAAIA,CAACA,GAAGA,WAAWA,GAAGA,iBAAiBA,CAACA;gBACnDA,CAACA;gBACDA,IAAIA,CAACA,EAAEA,CAACA,CAACA,iBAAiBA,KAAKA,gBAAmBA,CAACA,CAACA,CAACA;oBACjDA,OAAOA,IAAIA,CAACA,CAACA,GAAGA,WAAWA,GAAGA,sBAAsBA,CAACA,KAAKA,GAAGA,iBAAiBA,CAACA,CAACA;oBAChFA,OAAOA,IAAIA,CAACA,GAAGA,WAAWA,GAAGA,iBAAiBA,CAACA;gBACnDA,CAACA;gBACDA,IAAIA,CAACA,EAAEA,CAACA,CAACA,iBAAiBA,KAAKA,kBAAqBA,CAACA,CAACA,CAACA;oBACnDA,OAAOA,IAAIA,CAACA,GAAGA,WAAWA,GAAGA,iBAAiBA,CAACA;oBAC/CA,OAAOA,IAAIA,CAACA,sBAAsBA,CAACA,MAAMA,GAAGA,CAACA,GAAGA,WAAWA,GAAGA,iBAAiBA,CAACA,CAACA;gBACrFA,CAACA;gBACDA,IAAIA,CAACA,EAAEA,CAACA,CAACA,iBAAiBA,KAAKA,mBAAsBA,CAACA,CAACA,CAACA;oBACpDA,OAAOA,IAAIA,CAACA,CAACA,GAAGA,WAAWA,GAAGA,sBAAsBA,CAACA,KAAKA,GAAGA,iBAAiBA,CAACA,CAACA;oBAChFA,OAAOA,IAAIA,CAACA,sBAAsBA,CAACA,MAAMA,GAAGA,CAACA,GAAGA,WAAWA,GAAGA,iBAAiBA,CAACA,CAACA;gBACrFA,CAACA;gBAEDA,WAAWA,CAACA,MAAMA,CAACA,OAAOA,EAAEA,OAAOA,CAACA,CAACA;gBAErCA,MAAMA,CAACA,WAAWA,CAACA;YACvBA,CAACA;YAEOT,sCAAWA,GAAnBA,UAAoBA,WAAiCA;gBACjDU,IAAIA,iBAAiBA,GAAeA,IAAIA,CAACA,oBAAoBA,CAACA,WAAWA,CAACA,CAACA;gBAC3EA,IAAIA,eAAeA,GAAqBA,IAAIA,CAACA,kBAAkBA,CAACA,WAAWA,EAAEA,iBAAiBA,CAACA,CAACA;gBAEhGA,IAAIA,CAACA,gBAAgBA,CAACA,KAAKA,CAACA,EAAEA,MAAMA,EAAEA,eAAeA,CAACA,CAACA,GAAGA,IAAIA,EAAEA,KAAKA,EAAEA,eAAeA,CAACA,CAACA,GAAGA,IAAIA,EAAEA,CAACA,CAACA;gBACnGA,IAAIA,CAACA,gBAAgBA,CAACA,WAAWA,EAAEA,iBAAiBA,CAACA,CAACA;YAC1DA,CAACA;YAEOV,2CAAgBA,GAAxBA,UAAyBA,WAAiCA,EAAEA,iBAA6BA;gBACrFW,IAAIA,KAAKA,GAAiBA,IAAIA,CAACA,eAAeA,EAAEA,CAACA;gBACjDA,IAAIA,cAAsBA,CAACA;gBAE3BA,EAAEA,CAACA,CAACA,iBAAiBA,KAAKA,eAAkBA,CAACA,CAACA,CAACA;oBAC3CA,cAAcA,GAAGA,UAAUA,CAACA;gBAChCA,CAACA;gBACDA,IAAIA,CAACA,EAAEA,CAACA,CAACA,iBAAiBA,KAAKA,gBAAmBA,CAACA,CAACA,CAACA;oBACjDA,cAAcA,GAAGA,WAAWA,CAACA;gBACjCA,CAACA;gBACDA,IAAIA,CAACA,EAAEA,CAACA,CAACA,iBAAiBA,KAAKA,kBAAqBA,CAACA,CAACA,CAACA;oBACnDA,cAAcA,GAAGA,aAAaA,CAACA;gBACnCA,CAACA;gBACDA,IAAIA,CAACA,EAAEA,CAACA,CAACA,iBAAiBA,KAAKA,mBAAsBA,CAACA,CAACA,CAACA;oBACpDA,cAAcA,GAAGA,cAAcA,CAACA;gBACpCA,CAACA;gBAEDA,KAAKA;qBACAA,IAAIA,CAACA,OAAOA,EAAEA,OAAOA,CAACA,CAACA,oBAAoBA;qBAC3CA,OAAOA,CAACA,cAAcA,EAAEA,IAAIA,CAACA,CAACA;YACvCA,CAACA;YAEOX,0CAAeA,GAAvBA;gBACIY,MAAMA,CAACA,IAAIA,CAACA,gBAAgBA,CAACA,MAAMA,CAACA,cAAcA,CAACA,QAAQA,CAACA,CAACA;YACjEA,CAACA;YAEOZ,+CAAoBA,GAA5BA,UAA6BA,WAAiCA;gBAC1Da,IAAIA,WAAWA,GAAWA,IAAIA,CAACA,iBAAiBA,IAAIA,MAAMA,CAACA,UAAUA,CAACA;gBACtEA,IAAIA,YAAYA,GAAWA,IAAIA,CAACA,kBAAkBA,IAAIA,MAAMA,CAACA,WAAWA,CAACA;gBACzEA,IAAIA,iBAAiBA,GAAWA,WAAWA,CAACA,KAAKA,GAAGA,CAACA,CAACA;gBACtDA,IAAIA,WAAWA,GAAqBA,IAAIA,UAAUA,CAACA,KAAKA,CAACA,WAAWA,CAACA,CAACA,GAAGA,iBAAiBA,EAAEA,WAAWA,CAACA,CAACA,GAAGA,iBAAiBA,CAACA,CAACA;gBAC/HA,IAAIA,SAASA,GAAWA,WAAWA,GAAGA,CAACA,CAACA;gBACxCA,IAAIA,UAAUA,GAAWA,YAAYA,GAAGA,CAACA,CAACA;gBAE1CA,EAAEA,CAACA,CAACA,WAAWA,CAACA,CAACA,GAAGA,SAASA,IAAIA,WAAWA,CAACA,CAACA,GAAGA,UAAUA,CAACA,CAACA,CAACA;oBAC1DA,MAAMA,CAACA,eAAkBA,CAACA;gBAC9BA,CAACA;gBACDA,IAAIA,CAACA,EAAEA,CAACA,CAACA,WAAWA,CAACA,CAACA,IAAIA,SAASA,IAAIA,WAAWA,CAACA,CAACA,GAAGA,UAAUA,CAACA,CAACA,CAACA;oBAChEA,MAAMA,CAACA,gBAAmBA,CAACA;gBAC/BA,CAACA;gBACDA,IAAIA,CAACA,EAAEA,CAACA,CAACA,WAAWA,CAACA,CAACA,GAAGA,SAASA,IAAIA,WAAWA,CAACA,CAACA,IAAIA,UAAUA,CAACA,CAACA,CAACA;oBAChEA,MAAMA,CAACA,kBAAqBA,CAACA;gBACjCA,CAACA;gBACDA,IAAIA,CAACA,EAAEA,CAACA,CAACA,WAAWA,CAACA,CAACA,IAAIA,SAASA,IAAIA,WAAWA,CAACA,CAACA,IAAIA,UAAUA,CAACA,CAACA,CAACA;oBACjEA,MAAMA,CAACA,mBAAsBA,CAACA;gBAClCA,CAACA;YACLA,CAACA;YArNcb,sCAAqBA,GAAmBA;gBACnDA,OAAOA,EAAEA,CAACA;gBACVA,iBAAiBA,EAAEA,GAAGA;gBACtBA,OAAOA,EAAEA,EAAEA;gBACXA,OAAOA,EAAEA,EAAEA;aACdA,CAACA;YASYA,wCAAuBA,GAAWA,MAAMA,CAACA;YACzCA,sDAAqCA,GAAWA,qCAAqCA,CAACA;YAuMxGA,uBAACA;QAADA,CAxNAl2F,AAwNCk2F,IAAAl2F;QAxNYA,wBAAgBA,mBAwN5BA,CAAAA;QAEDA,IAAcA,cAAcA,CA6O3BA;QA7ODA,WAAcA,cAAcA,EAACA,CAACA;YAEfg3F,2BAAYA,GAAYA,IAAIA,CAACA;YAC7BA,8BAAeA,GAAqBA,IAAIA,gBAAgBA,EAAEA,CAACA;YACtEA,IAAIA,2BAA2BA,GAAYA,KAAKA,CAACA;YACjDA,IAAMA,qBAAqBA,GAAWA,GAAGA,CAACA;YAC1CA,IAAMA,oBAAoBA,GAAWA,GAAGA,CAACA;YACzCA,IAAMA,iBAAiBA,GAAWA,GAAGA,CAACA;YACtCA,IAAIA,gBAAwBA,CAACA;YAC7BA,IAAMA,gBAAgBA,GAAWA,IAAIA,CAACA;YACtCA,IAAIA,oBAAoBA,GAAWA,CAACA,CAACA;YACrCA,IAAIA,gBAA0BA,CAACA;YAC/BA,IAAIA,WAA8BA,CAACA;YAEnCA,oBAA2BA,WAAyBA,EAChDA,sBAAyEA,EACzEA,4BAAsCA,EACtCA,kBAA+BA;gBAE/BC,EAAEA,CAACA,CAACA,CAACA,2BAAYA,CAACA,CAACA,CAACA;oBAChBA,MAAMA,CAACA;gBACXA,CAACA;gBAEDA,KAAKA,CAACA,WAAWA,CAACA,WAAWA,EAAEA,aAAaA,CAACA,CAACA;gBAE9CA,IAAIA,QAAQA,GAAGA,EAAEA,CAACA,MAAMA,CAACA,gBAAgBA,CAACA,uBAAuBA,CAACA,CAACA,IAAIA,EAAEA,CAACA;gBAC1EA,IAAIA,mBAAmBA,GAAWA,sBAAsBA,EAAEA,CAACA;gBAC3DA,IAAIA,iBAAiBA,GAAWA,oBAAoBA,EAAEA,CAACA;gBACvDA,IAAIA,cAAcA,GAAYA,mBAAmBA,KAAKA,aAAaA,IAAIA,mBAAmBA,KAAKA,eAAeA,CAACA;gBAE/GA,eAAeA;gBACfA,WAAWA,CAACA,EAAEA,CAACA,WAAWA,EAAEA,UAAUA,CAACA,EAAEA,CAACA;oBACtC,wEAAwE;oBACxE,EAAE,CAAC,CAAC,CAAC,oBAAoB,IAAI,iBAAiB,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;wBACvD,gBAAgB,GAAG,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;wBAClD,IAAI,kBAAkB,GAAa,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;wBAC9D,IAAI,YAAY,GAAiB;4BAC7B,IAAI,EAAE,CAAC;4BACP,KAAK,EAAE,CAAC;4BACR,WAAW,EAAE,gBAAgB;4BAC7B,kBAAkB,EAAE,kBAAkB;4BACtC,OAAO,EAAE,IAAI;4BACb,YAAY,EAAE,KAAK;yBACtB,CAAC;wBACF,mBAAmB,EAAE,CAAC;wBACtB,uHAAuH;wBACvH,IAAI,KAAK,GAAG,8BAAe,CAAC,yBAAyB,EAAE,GAAG,EAAE,GAAG,qBAAqB,CAAC;wBACrF,gBAAgB,GAAG,kBAAkB,CAAC,YAAY,EAAE,sBAAsB,EAAE,KAAK,CAAC,CAAC;oBACvF,CAAC;gBACL,CAAC,CAACA,CAACA;gBAEHA,WAAWA,CAACA,EAAEA,CAACA,UAAUA,EAAEA,UAAUA,CAACA,EAAEA,CAACA;oBACrC,EAAE,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC;wBACxB,mBAAmB,EAAE,CAAC;wBACtB,gBAAgB,GAAG,kBAAkB,CAAC,oBAAoB,CAAC,CAAC;oBAChE,CAAC;oBAED,EAAE,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC;wBACrB,kBAAkB,EAAE,CAAC;oBACzB,CAAC;gBACL,CAAC,CAACA,CAACA;gBAEHA,WAAWA,CAACA,EAAEA,CAACA,WAAWA,EAAEA,UAAUA,CAACA,EAAEA,CAACA;oBACtC,EAAE,CAAC,CAAC,CAAC,oBAAoB,IAAI,iBAAiB,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;wBACvD,gBAAgB,GAAG,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;wBAClD,IAAI,kBAAkB,GAAa,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;wBAC9D,IAAI,YAAY,GAAiB;4BAC7B,IAAI,EAAE,CAAC;4BACP,KAAK,EAAE,CAAC;4BACR,WAAW,EAAE,gBAAgB;4BAC7B,kBAAkB,EAAE,kBAAkB;4BACtC,OAAO,EAAE,IAAI;4BACb,YAAY,EAAE,KAAK;yBACtB,CAAC;wBACF,uBAAuB,CAAC,YAAY,EAAE,sBAAsB,EAAE,4BAA4B,CAAC,CAAC;oBAChG,CAAC;gBACL,CAAC,CAACA,CAACA;gBAEHA,eAAeA;gBACfA,EAAEA,CAACA,CAACA,CAACA,2BAA2BA,CAACA,CAACA,CAACA;oBAC/BA,wCAAwCA;oBACxCA,kBAAkBA,CAACA,mBAAmBA,CAACA,CAACA;oBACxCA,2BAA2BA,GAAGA,IAAIA,CAACA;gBACvCA,CAACA;gBAEDA,WAAWA,CAACA,EAAEA,CAACA,mBAAmBA,EAAEA,UAAUA,CAACA,EAAEA,CAACA;oBAC9C,uBAAuB,EAAE,CAAC;oBAC1B,IAAI,WAAW,GAAa,cAAc,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;oBACrE,IAAI,kBAAkB,GAAa,cAAc,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;oBACxE,IAAI,YAAY,GAAiB;wBAC7B,IAAI,EAAE,CAAC;wBACP,KAAK,EAAE,CAAC;wBACR,WAAW,EAAE,WAAW;wBACxB,kBAAkB,EAAE,kBAAkB;wBACtC,OAAO,EAAE,IAAI;wBACb,YAAY,EAAE,IAAI;qBACrB,CAAC;oBACF,mBAAmB,EAAE,CAAC;oBACtB,gBAAgB,GAAG,kBAAkB,CAAC,YAAY,EAAE,sBAAsB,EAAE,iBAAiB,CAAC,CAAC;gBACnG,CAAC,CAACA,CAACA;gBAEHA,WAAWA,CAACA,EAAEA,CAACA,iBAAiBA,EAAEA,UAAUA,CAACA,EAAEA,CAACA;oBAC5C,mBAAmB,EAAE,CAAC;oBACtB,EAAE,CAAC,CAAC,oBAAoB,CAAC;wBACrB,YAAY,CAAC,oBAAoB,CAAC,CAAC;oBAEvC,yHAAyH;oBACzH,oBAAoB,GAAG,UAAU,CAAC;wBAC9B,oBAAoB,GAAG,CAAC,CAAC;oBAC7B,CAAC,EAAE,gBAAgB,CAAC,CAAC;gBACzB,CAAC,CAACA,CAACA;YACPA,CAACA;YAjGeD,yBAAUA,aAiGzBA,CAAAA;YAEDA,4BAAmCA,YAA0BA,EAAEA,sBAAyEA,EAAEA,SAAiBA;gBACvJE,MAAMA,CAACA,UAAUA,CAACA,cAAMA,OAAAA,uBAAuBA,CAACA,YAAYA,EAAEA,sBAAsBA,CAACA,EAA7DA,CAA6DA,EAAEA,SAASA,CAACA,CAACA;YACtGA,CAACA;YAFeF,iCAAkBA,qBAEjCA,CAAAA;YAEDA,4BAAmCA,SAAiBA;gBAChDG,MAAMA,CAACA,UAAUA,CAACA,cAAMA,OAAAA,uBAAuBA,EAAEA,EAAzBA,CAAyBA,EAAEA,SAASA,CAACA,CAACA;YAClEA,CAACA;YAFeH,iCAAkBA,qBAEjCA,CAAAA;YAEDA,6BAAoCA,mBAA+CA;gBAC/EI,gBAAgBA,CAACA,mBAAmBA,GAAGA,mBAAmBA,CAACA;YAC/DA,CAACA;YAFeJ,kCAAmBA,sBAElCA,CAAAA;YAEDA,iCAAiCA,YAA0BA,EAAEA,sBAAyEA;gBAClIK,IAAIA,WAAWA,GAAsBA,WAAWA,IAAIA,sBAAsBA,CAACA,YAAYA,CAACA,CAACA;gBACzFA,EAAEA,CAACA,CAACA,CAACA,CAACA,CAACA,OAAOA,CAACA,WAAWA,CAACA,CAACA,CAACA,CAACA;oBAC1BA,IAAIA,WAAWA,GAAaA,gBAAgBA,IAAIA,YAAYA,CAACA,WAAWA,CAACA;oBACzEA,IAAIA,WAAWA,GAAyBA,cAAcA,CAACA,WAAWA,CAACA,CAACA,CAACA,EAAEA,WAAWA,CAACA,CAACA,CAACA,EAAEA,YAAYA,CAACA,YAAYA,CAACA,CAACA;oBAClHA,8BAAeA,CAACA,IAAIA,CAACA,WAAWA,EAAEA,WAAWA,CAACA,CAACA;gBACnDA,CAACA;YACLA,CAACA;YAEDL,iCAAiCA,YAA0BA,EAAEA,sBAAyEA,EAAEA,4BAAqCA;gBACzKM,WAAWA,GAAGA,SAASA,CAACA;gBACxBA,EAAEA,CAACA,CAACA,4BAA4BA,CAACA,CAACA,CAACA;oBAC/BA,WAAWA,GAAGA,sBAAsBA,CAACA,YAAYA,CAACA,CAACA;gBACvDA,CAACA;gBACDA,IAAIA,WAAWA,GAAyBA,cAAcA,CAACA,YAAYA,CAACA,WAAWA,CAACA,CAACA,CAACA,EAAEA,YAAYA,CAACA,WAAWA,CAACA,CAACA,CAACA,EAAEA,YAAYA,CAACA,YAAYA,CAACA,CAACA;gBAC5IA,8BAAeA,CAACA,IAAIA,CAACA,WAAWA,EAAEA,WAAWA,CAACA,CAACA;YACnDA,CAACA;YAAAN,CAACA;YAEFA;gBACIO,8BAAeA,CAACA,IAAIA,EAAEA,CAACA;YAC3BA,CAACA;YAAAP,CAACA;YAEFA;gBACIQ,EAAEA,CAACA,CAACA,gBAAgBA,CAACA,CAACA,CAACA;oBACnBA,YAAYA,CAACA,gBAAgBA,CAACA,CAACA;gBACnCA,CAACA;YACLA,CAACA;YAEDR,2BAA2BA,OAAYA;gBACnCS,IAAIA,UAAUA,GAAYA,IAAIA,CAACA;gBAC/BA,IAAIA,UAAUA,GAA2BA,OAAOA,CAACA;gBACjDA,EAAEA,CAACA,CAACA,UAAUA,CAACA,OAAOA,KAAKA,SAASA,CAACA,CAACA,CAACA;oBACnCA,4BAA4BA;oBAC5BA,IAAIA,qBAAqBA,GAAGA,UAAUA,CAACA,OAAOA,KAAKA,CAACA,CAACA;oBACrDA,UAAUA,GAAGA,CAACA,qBAAqBA,CAACA;gBACxCA,CAACA;gBACDA,MAAMA,CAACA,UAAUA,CAACA;YACtBA,CAACA;YAEDT;gBACIU,IAAIA,SAASA,GAAWA,YAAYA,CAACA;gBAErCA,EAAEA,CAACA,CAACA,MAAMA,CAACA,cAAcA,CAACA,CAACA,CAACA,CAACA;oBACzBA,OAAOA;oBACPA,SAASA,GAAGA,aAAaA,CAACA;gBAC9BA,CAACA;gBAACA,IAAIA,CAACA,EAAEA,CAACA,CAACA,MAAMA,CAACA,gBAAgBA,CAACA,CAACA,CAACA,CAACA;oBAClCA,OAAOA;oBACPA,SAASA,GAAGA,eAAeA,CAACA;gBAChCA,CAACA;gBAEDA,MAAMA,CAACA,SAASA,CAACA;YACrBA,CAACA;YAEDV;gBACIW,IAAIA,SAASA,GAAWA,UAAUA,CAACA;gBAEnCA,EAAEA,CAACA,CAACA,MAAMA,CAACA,cAAcA,CAACA,CAACA,CAACA,CAACA;oBACzBA,OAAOA;oBACPA,SAASA,GAAGA,WAAWA,CAACA;gBAC5BA,CAACA;gBAACA,IAAIA,CAACA,EAAEA,CAACA,CAACA,MAAMA,CAACA,gBAAgBA,CAACA,CAACA,CAACA,CAACA;oBAClCA,OAAOA;oBACPA,SAASA,GAAGA,aAAaA,CAACA;gBAC9BA,CAACA;gBAEDA,MAAMA,CAACA,SAASA,CAACA;YACrBA,CAACA;YAEDX,wBAAwBA,QAAiBA,EAAEA,cAAuBA;gBAC9DY,IAAIA,WAAqBA,CAACA;gBAE1BA,EAAEA,CAACA,CAACA,cAAcA,CAACA,CAACA,CAACA;oBACjBA,sGAAsGA;oBACtGA,wHAAwHA;oBACxHA,uHAAuHA;oBACvHA,mCAAmCA;oBAEnCA,oDAAoDA;oBACpDA,IAAIA,CAACA,GAAGA,EAAEA,CAACA,KAAKA,EAAEA,CAACA,CAACA;oBACpBA,OAAOA,CAACA,GAAGA,CAACA,CAACA,WAAWA;wBAAEA,CAACA,GAAGA,CAACA,CAACA;oBAChCA,IAAIA,IAAIA,GAAGA,QAAQA,CAACA,qBAAqBA,EAAEA,CAACA;oBAC5CA,WAAWA,GAAGA,CAACA,CAACA,CAACA,OAAOA,GAAGA,IAAIA,CAACA,IAAIA,GAAGA,QAAQA,CAACA,UAAUA,EAAEA,CAACA,CAACA,OAAOA,GAAGA,IAAIA,CAACA,GAAGA,GAAGA,QAAQA,CAACA,SAASA,CAACA,CAACA;gBAC3GA,CAACA;gBACDA,IAAIA,CAACA,CAACA;oBACFA,IAAIA,gBAAgBA,GAAGA,EAAEA,CAACA,OAAOA,CAACA,QAAQA,CAACA,CAACA;oBAC5CA,EAAEA,CAACA,CAACA,gBAAgBA,IAAIA,gBAAgBA,CAACA,MAAMA,GAAGA,CAACA,CAACA,CAACA,CAACA;wBAClDA,WAAWA,GAAGA,gBAAgBA,CAACA,CAACA,CAACA,CAACA;oBACtCA,CAACA;gBACLA,CAACA;gBAEDA,MAAMA,CAACA,WAAWA,CAACA;YACvBA,CAACA;YAEDZ,4BAA4BA,mBAA2BA;gBACnDa,EAAEA,CAACA,MAAMA,CAACA,gBAAgBA,CAACA,uBAAuBA,CAACA,CAACA,EAAEA,CAACA,mBAAmBA,EAAEA,UAAUA,CAACA,EAAEA,CAACA;oBACtF,8BAAe,CAAC,IAAI,EAAE,CAAC;gBAC3B,CAAC,CAACA,CAACA;YACPA,CAACA;YAEDb,wBAAwBA,CAASA,EAAEA,CAASA,EAAEA,YAAqBA;gBAC/Dc,IAAIA,KAAKA,GAAWA,CAACA,CAACA;gBACtBA,IAAIA,MAAMA,GAAWA,CAACA,CAACA;gBACvBA,IAAIA,MAAMA,GAAWA,CAACA,CAACA;gBAEvBA,EAAEA,CAACA,CAACA,YAAYA,CAACA,CAACA,CAACA;oBACfA,KAAKA,GAAGA,EAAEA,CAACA;oBACXA,IAAIA,MAAMA,GAAWA,KAAKA,GAAGA,CAACA,CAACA;oBAC/BA,MAAMA,GAAGA,IAAIA,CAACA,GAAGA,CAACA,CAACA,GAAGA,MAAMA,EAAEA,CAACA,CAACA,CAACA;oBACjCA,MAAMA,GAAGA,IAAIA,CAACA,GAAGA,CAACA,CAACA,GAAGA,MAAMA,EAAEA,CAACA,CAACA,CAACA;gBACrCA,CAACA;gBAEDA,MAAMA,CAACA,IAAIA,UAAUA,CAACA,SAASA,CAACA,MAAMA,EAAEA,MAAMA,EAAEA,KAAKA,EAAEA,KAAKA,CAACA,CAACA;YAClEA,CAACA;QACLd,CAACA,EA7Oah3F,cAAcA,GAAdA,sBAAcA,KAAdA,sBAAcA,QA6O3BA;QAEDA,IAAcA,cAAcA,CA6H3BA;QA7HDA,WAAcA,cAAcA,EAACA,CAACA;YAE1B+3F,iDAAiDA;YACjDA,2BACIA,gBAAkDA,EAClDA,WAAgCA,EAChCA,aAAkBA,EAClBA,KAAWA,EACXA,UAAqCA,EACrCA,UAAoCA,EACpCA,WAAoBA,EACpBA,aAAsBA,EACtBA,gBAAsBA;gBACtBC,IAAIA,cAAuCA,CAACA;gBAC5CA,IAAIA,YAAYA,GAA4BA,EAAEA,CAACA;gBAC/CA,IAAIA,YAAYA,GAA2BA,SAASA,CAACA;gBACrDA,WAAWA,GAAGA,WAAWA,GAAGA,CAACA,CAACA;gBAE9BA,IAAIA,cAAcA,GAAGA,WAAWA,GAAGA,WAAWA,CAACA,UAAUA,GAAGA,UAAUA,CAACA;gBACvEA,EAAEA,CAACA,CAACA,cAAcA,IAAIA,cAAcA,CAACA,MAAMA,GAAGA,CAACA,CAACA,CAACA,CAACA;oBAC9CA,cAAcA,GAAGA,EAAEA,KAAKA,EAAEA,aAAaA,EAAEA,QAAQA,EAAEA,cAAcA,CAACA,CAACA,CAACA,CAACA,MAAMA,EAAEA,CAACA;gBAClFA,CAACA;gBACDA,EAAEA,CAACA,CAACA,WAAWA,IAAIA,WAAWA,CAACA,MAAMA,CAACA,CAACA,CAACA;oBACpCA,EAAEA,CAACA,CAACA,cAAcA,IAAIA,cAAcA,CAACA,QAAQA,KAAKA,WAAWA,CAACA,MAAMA,CAACA,MAAMA,CAACA,CAACA,CAACA;oBAE9EA,CAACA;oBACDA,IAAIA,CAACA,CAACA;wBACFA,YAAYA,GAAGA,WAAWA,CAACA,MAAMA,CAACA,MAAMA,CAACA;oBAC7CA,CAACA;oBACDA,EAAEA,CAACA,CAACA,WAAWA,CAACA,MAAMA,CAACA,MAAMA,GAAGA,CAACA,CAACA,CAACA,CAACA;wBAChCA,IAAIA,WAAWA,GAAwBA,WAAWA,CAACA,MAAMA,CAACA,WAAWA,CAACA,CAACA;wBACvEA,IAAIA,qBAAqBA,GAAYA,CAACA,CAACA,CAACA,WAAWA,IAAIA,WAAWA,CAACA,MAAMA,IAA0CA,WAAWA,CAACA,MAAOA,CAACA,qBAAqBA,CAACA,CAACA;wBAE9JA,EAAEA,CAACA,CAACA,CAACA,qBAAqBA,CAACA,CAACA,CAACA;4BACzBA,YAAYA,CAACA,IAAIA,CAACA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,gBAAgBA,EAAEA,gBAAgBA,EAAEA,QAAQA,EAAEA,WAAWA,EAAEA,CAACA,CAACA;wBACnGA,CAACA;oBACLA,CAACA;oBAEDA,oCAAoCA;oBACpCA,IAAIA,oBAAoBA,GAAWA,qBAAaA,CAACA,uBAAuBA,CAACA,WAAWA,CAACA,CAACA;oBACtFA,IAAIA,mBAAmBA,GAAwBA,oBAAoBA,KAAKA,CAAEA,CAACA,GAAGA,IAAIA,GAAGA,WAAWA,CAACA,MAAMA,CAACA,oBAAoBA,CAACA,CAACA;oBAC9HA,gGAAgGA;oBAChGA,EAAEA,CAACA,CAACA,mBAAmBA,IAAIA,WAAWA,KAAKA,oBAAoBA,CAACA,CAACA,CAACA;wBAC9DA,mBAAmBA;wBACnBA,YAAYA,CAACA,IAAIA,CAACA,EAAEA,KAAKA,EAAEA,mBAAmBA,CAACA,MAAMA,CAACA,aAAaA,CAACA,EAAEA,QAAQA,EAAEA,EAAEA,MAAMA,EAAEA,mBAAmBA,CAACA,MAAMA,EAAEA,MAAMA,EAAEA,EAAEA,EAAEA,EAAEA,CAACA,CAACA;oBAC1IA,CAACA;gBACLA,CAACA;gBACDA,EAAEA,CAACA,CAACA,UAAUA,CAACA,CAACA,CAACA;oBACbA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAWA,CAACA,EAAEA,GAAGA,GAAWA,UAAUA,CAACA,MAAMA,EAAEA,CAACA,GAAGA,GAAGA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;wBACpEA,IAAIA,gBAAgBA,GAA0BA,UAAUA,CAACA,CAACA,CAACA,CAACA;wBAC5DA,EAAEA,CAACA,CAACA,cAAcA,IAAIA,cAAcA,CAACA,QAAQA,KAAKA,gBAAgBA,CAACA,QAAQA,CAACA,MAAMA,CAACA;4BAC/EA,QAAQA,CAACA;wBAEbA,YAAYA,CAACA,IAAIA,CAACA,EAAEA,KAAKA,EAAEA,gBAAgBA,CAACA,KAAKA,EAAEA,QAAQA,EAAEA,gBAAgBA,CAACA,QAAQA,EAAEA,CAACA,CAACA;oBAC9FA,CAACA;gBACLA,CAACA;gBAEDA,IAAIA,WAAWA,GAAsBA,iBAAiBA,CAACA,gBAAgBA,EAAEA,cAAcA,EAAEA,YAAYA,EAAEA,YAAYA,CAACA,CAACA;gBAErHA,MAAMA,CAACA,WAAWA,CAACA;YACvBA,CAACA;YAzDeD,gCAAiBA,oBAyDhCA,CAAAA;YAEDA,2BACIA,gBAAkDA,EAClDA,aAAsCA,EACtCA,YAAoCA,EACpCA,YAAqCA;gBAErCE,KAAKA,CAACA,WAAWA,CAACA,YAAYA,EAAEA,cAAcA,CAACA,CAACA;gBAChDA,KAAKA,CAACA,WAAWA,CAACA,gBAAgBA,CAACA,mBAAmBA,EAAEA,sCAAsCA,CAACA,CAACA;gBAChGA,KAAKA,CAACA,cAAcA,CAACA,gBAAgBA,EAAEA,kBAAkBA,CAACA,CAACA;gBAE3DA,IAAIA,KAAKA,GAAsBA,EAAEA,CAACA;gBAElCA,EAAEA,CAACA,CAACA,aAAaA,CAACA,CAACA,CAACA;oBAChBA,IAAIA,sBAAsBA,GAAWA,iBAAiBA,CAACA,aAAaA,CAACA,QAAQA,EAAEA,gBAAgBA,EAAEA,aAAaA,CAACA,KAAKA,CAACA,CAACA;oBACtHA,KAAKA,CAACA,IAAIA,CAACA,EAAEA,WAAWA,EAAEA,aAAaA,CAACA,QAAQA,CAACA,WAAWA,EAAEA,KAAKA,EAAEA,sBAAsBA,EAAEA,CAACA,CAACA;gBACnGA,CAACA;gBAEDA,EAAEA,CAACA,CAACA,YAAYA,CAACA,CAACA,CAACA;oBACfA,uBAAuBA;oBACvBA,IAAIA,YAAoBA,CAACA;oBACzBA,EAAEA,CAACA,CAACA,YAAYA,CAACA,MAAMA,GAAGA,CAACA,CAACA,CAACA,CAACA;wBAC1BA,IAAIA,oBAAoBA,GAA2BA,YAAYA,CAACA,CAACA,CAACA,CAACA,QAAQA,CAACA,MAAMA,CAACA;wBACnFA,YAAYA,GAAGA,iBAAiBA,CAACA,YAAYA,EAAEA,gBAAgBA,EAAEA,oBAAoBA,CAACA,SAASA,CAACA,CAACA;oBACrGA,CAACA;oBACDA,KAAKA,CAACA,IAAIA,CAACA,EAAEA,WAAWA,EAAEA,YAAYA,CAACA,WAAWA,EAAEA,KAAKA,EAAEA,YAAYA,EAAEA,CAACA,CAACA;gBAC/EA,CAACA;gBAEDA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,YAAYA,CAACA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;oBAC3CA,IAAIA,UAAUA,GAAGA,YAAYA,CAACA,CAACA,CAACA,CAACA;oBAEjCA,EAAEA,CAACA,CAACA,UAAUA,IAAIA,UAAUA,CAACA,QAAQA,CAACA,CAACA,CAACA;wBACpCA,IAAIA,oBAAoBA,GAAGA,UAAUA,CAACA,QAAQA,CAACA,MAAMA,CAACA;wBACtDA,IAAIA,KAAKA,GAAGA,UAAUA,CAACA,KAAKA,CAACA;wBAC7BA,IAAIA,gBAAgBA,GAAGA,UAAUA,CAACA,gBAAgBA,CAACA;wBAEnDA,EAAEA,CAACA,CAACA,KAAKA,IAAIA,KAAKA,KAAKA,CAACA,CAACA,CAACA,CAACA;4BACvBA,IAAIA,cAAcA,GAAWA,iBAAiBA,CAACA,oBAAoBA,EAAEA,gBAAgBA,EAAEA,KAAKA,CAACA,CAACA;4BAC9FA,KAAKA,CAACA,IAAIA,CAACA,EAAEA,WAAWA,EAAEA,oBAAoBA,CAACA,WAAWA,EAAEA,KAAKA,EAAEA,cAAcA,EAAEA,CAACA,CAACA;wBACzFA,CAACA;wBAEDA,EAAEA,CAACA,CAACA,gBAAgBA,IAAIA,gBAAgBA,KAAKA,CAACA,CAACA,CAACA,CAACA;4BAC7CA,IAAIA,yBAAyBA,GAAWA,iBAAiBA,CAACA,oBAAoBA,EAAEA,gBAAgBA,EAAEA,gBAAgBA,CAACA,CAACA;4BACpHA,IAAIA,WAAWA,GAAGA,gBAAgBA,CAACA,mBAAmBA,CAACA,2BAA2BA,CAACA;4BACnFA,KAAKA,CAACA,IAAIA,CAACA,EAAEA,WAAWA,EAAEA,WAAWA,EAAEA,KAAKA,EAAEA,yBAAyBA,EAAEA,CAACA,CAACA;wBAC/EA,CAACA;oBACLA,CAACA;gBACLA,CAACA;gBAEDA,MAAMA,CAACA,KAAKA,CAACA;YACjBA,CAACA;YAEDF,2BAA2BA,MAA8BA,EAAEA,gBAAkDA,EAAEA,KAAUA;gBACrHG,IAAIA,YAAYA,GAAWA,yBAAyBA,CAACA,MAAMA,EAAEA,gBAAgBA,CAACA,CAACA;gBAC/EA,MAAMA,CAACA,sBAAcA,CAACA,MAAMA,CAACA,KAAKA,EAAEA,YAAYA,CAACA,CAACA;YACtDA,CAACA;YAEDH,mCAAmCA,MAA8BA,EAAEA,gBAAkDA;gBACjHI,EAAEA,CAACA,CAACA,MAAMA,CAACA,CAACA,CAACA;oBACTA,IAAIA,YAAYA,GAAWA,sBAAcA,CAACA,eAAeA,CAACA,MAAMA,EAAEA,gBAAgBA,EAAEA,IAAIA,CAACA,CAACA;oBAC1FA,MAAMA,CAACA,YAAYA,IAAIA,MAAMA,CAACA,MAAMA,CAACA;gBACzCA,CAACA;gBACDA,MAAMA,CAACA,IAAIA,CAACA;YAChBA,CAACA;QACLJ,CAACA,EA7Ha/3F,cAAcA,GAAdA,sBAAcA,KAAdA,sBAAcA,QA6H3BA;IACLA,CAACA,EAvoBcrxC,OAAOA,GAAPA,eAAOA,KAAPA,eAAOA,QAuoBrBA;AAADA,CAACA,EAvoBM,OAAO,KAAP,OAAO,QAuoBb;ACnqBD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,yCAAyC;AAEzC,IAAO,OAAO,CA0Bb;AA1BD,WAAO,OAAO;IAACA,IAAAA,OAAOA,CA0BrBA;IA1BcA,WAAAA,OAAOA,EAACA,CAACA;QACpBqxC,IAAcA,YAAYA,CAwBzBA;QAxBDA,WAAcA,YAAYA,EAACA,CAACA;YACxBo4F,gBAAuBA,UAA8BA;gBACjDC,EAAEA,CAACA,CAACA,UAAUA,KAAKA,SAASA,CAACA;oBACzBA,UAAUA,GAAGA,IAAIA,OAAOA,CAACA,gBAAgBA,EAAEA,CAACA;gBAEhDA,MAAMA,CAACA;oBACHA,SAASA,EAAEA;wBACPA,KAAKA,EAAEA,EAAEA,KAAKA,EAAEA,kBAAkBA,EAAEA;qBACvCA;oBACDA,YAAYA,EAAEA;wBACVA,KAAKA,EAAEA,EAAEA,KAAKA,EAAEA,qBAAqBA,EAAEA;qBAC1CA;oBACDA,YAAYA,EAAEA;wBACVA,UAAUA,EAAEA,UAAUA;qBACzBA;oBACDA,SAASA,EAAEA;wBACPA,KAAKA,EAAEA;4BACHA,KAAKA,EAAEA,kBAAkBA;yBAC5BA;wBACDA,QAAQA,EAAEA,MAAMA;qBACnBA;oBACDA,cAAcA,EAAEA,KAAKA;iBACxBA,CAACA;YACNA,CAACA;YAtBeD,mBAAMA,SAsBrBA,CAAAA;QACLA,CAACA,EAxBap4F,YAAYA,GAAZA,oBAAYA,KAAZA,oBAAYA,QAwBzBA;IACLA,CAACA,EA1BcrxC,OAAOA,GAAPA,eAAOA,KAAPA,eAAOA,QA0BrBA;AAADA,CAACA,EA1BM,OAAO,KAAP,OAAO,QA0Bb;ACtDD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,yCAAyC;AAEzC,IAAO,OAAO,CAq/Db;AAr/DD,WAAO,OAAO;IAACA,IAAAA,OAAOA,CAq/DrBA;IAr/DcA,WAAAA,OAAOA,EAACA,CAACA;QAEpBqxC,IAAOA,sBAAsBA,GAAGA,QAAQA,CAACA,YAAYA,CAACA,sBAAsBA,CAACA;QAC7EA,IAAOA,cAAcA,GAAGA,QAAQA,CAACA,cAAcA,CAACA;QAgGhDA;;WAEGA;QACHA;YA8DIs4F,oBAAYA,OAAiCA;gBACzCC,EAAEA,CAACA,CAACA,OAAOA,CAACA,CAACA,CAACA;oBACVA,IAAIA,CAACA,eAAeA,GAAGA,OAAOA,CAACA,eAAeA,CAACA;oBAC/CA,IAAIA,CAACA,QAAQA,GAAGA,OAAOA,CAACA,QAAQA,CAACA;oBACjCA,IAAIA,CAACA,YAAYA,GAAGA,OAAOA,CAACA,YAAYA,GAAGA,OAAOA,CAACA,YAAYA,GAAGA,KAAKA,CAACA;oBACxEA,IAAIA,CAACA,uBAAuBA,GAAGA,OAAOA,CAACA,uBAAuBA,GAAGA,OAAOA,CAACA,uBAAuBA,GAAGA,KAAKA,CAACA;oBACzGA,IAAIA,CAACA,QAAQA,GAAGA,OAAOA,CAACA,QAAQA,CAACA;oBACjCA,IAAIA,CAACA,eAAeA,GAAGA,OAAOA,CAACA,eAAeA,CAACA;oBAC/CA,EAAEA,CAACA,CAACA,OAAOA,CAACA,uBAAuBA,CAACA,CAACA,CAACA;wBAClCA,IAAIA,CAACA,2BAA2BA,GAAGA,OAAOA,CAACA,uBAAuBA,CAACA,2BAA2BA,CAACA;oBACnGA,CAACA;gBACLA,CAACA;gBACDA,EAAEA,CAACA,CAACA,IAAIA,CAACA,eAAeA,IAAIA,IAAIA,CAACA,CAACA,CAACA;oBAC/BA,IAAIA,CAACA,eAAeA,GAAGA,UAAUA,CAACA,sBAAsBA,CAACA;gBAC7DA,CAACA;YACLA,CAACA;YAEaD,oBAASA,GAAvBA,UAAwBA,QAAkBA,EAAEA,MAAyBA,EAAEA,qBAA8BA,EAAEA,QAAoBA,EAAEA,uBAAiCA,EAAEA,oBAA4CA;gBACxME,IAAIA,SAASA,GAAGA,IAAIA,oBAAoBA,CAACA,mBAAmBA,CAACA,QAAQA,EAAEA,MAAMA,EAAEA,qBAAqBA,CAACA,CAACA;gBACtGA,SAASA,CAACA,OAAOA,EAAEA,CAACA;gBACpBA,IAAIA,WAAWA,GAAGA,EAAEA,CAACA,MAAMA,CAACA,GAAGA,EAAEA;qBAC5BA,IAAIA,CAACA,IAAIA,CAACA;qBACVA,KAAKA,CAACA,UAACA,CAAiBA;oBACrBA,MAAMA,CAACA,CAACA,CAACA,UAAUA,CAACA;gBACxBA,CAACA,CAACA,CAACA;gBAEPA,EAAEA,CAACA,CAACA,oBAAoBA,CAACA,CAACA,CAACA;oBACvBA,oBAAoBA,CAACA,yBAAyBA,CAACA,SAASA,CAACA,UAAUA,CAACA,CAACA;oBACrEA,oBAAoBA,CAACA,yBAAyBA,CAACA,SAASA,CAACA,UAAUA,CAACA,UAAUA,CAACA,CAACA;gBACpFA,CAACA;gBAEDA,IAAIA,gBAAgBA,GAAGA,CAACA,CAACA,uBAAuBA,IAAIA,QAAQA,CAACA,GAAGA,UAAUA,CAACA,kBAAkBA,CAACA,SAASA,CAACA,UAAUA,EAAEA,SAASA,CAACA,QAAQA,EAAEA,QAAQA,CAACA,GAAGA,SAASA,CAACA,UAAUA,CAACA;gBACzKA,MAAMA,CAACA;oBACHA,qBAAqBA,EAAEA,gBAAgBA;oBACvCA,UAAUA,EAAEA,WAAWA,CAACA,gBAAgBA,CAACA;oBACzCA,kBAAkBA,EAAEA,SAASA,CAACA,UAAUA;oBACxCA,qBAAqBA,EAAEA,SAASA,CAACA,UAAUA,CAACA,UAAUA;oBACtDA,UAAUA,EAAEA,SAASA,CAACA,UAAUA;oBAChCA,aAAaA,EAAEA,SAASA,CAACA,aAAaA;oBACtCA,kBAAkBA,EAAEA,SAASA,CAACA,kBAAkBA;oBAChDA,sBAAsBA,EAAEA,SAASA,CAACA,sBAAsBA;oBACxDA,QAAQA,EAAEA,SAASA,CAACA,QAAQA;oBAC5BA,qBAAqBA,EAAEA,SAASA,CAACA,UAAUA,CAACA,MAAMA,KAAKA,gBAAgBA,CAACA,MAAMA;iBACjFA,CAACA;YACNA,CAACA;YAEMF,yBAAIA,GAAXA,UAAYA,OAA0BA;gBAClCG,IAAIA,CAACA,OAAOA,GAAGA,OAAOA,CAACA;gBACvBA,IAAIA,OAAOA,GAAGA,OAAOA,CAACA,OAAOA,CAACA;gBAC9BA,mCAAmCA;gBACnCA,OAAOA,CAACA,KAAKA,EAAEA,CAACA;gBAChBA,IAAIA,CAACA,cAAcA,GAAGA,OAAOA,CAACA,QAAQA,CAACA;gBACvCA,kBAAkBA;gBAClBA,IAAIA,CAACA,eAAeA,GAAGA;oBACnBA,MAAMA,EAAEA,OAAOA,CAACA,QAAQA,CAACA,MAAMA;oBAC/BA,KAAKA,EAAEA,OAAOA,CAACA,QAAQA,CAACA,KAAKA;iBAChCA,CAACA;gBAEFA,IAAIA,CAACA,SAASA,GAAGA,sBAAcA,CAACA,MAAMA,CAACA;gBACvCA,IAAIA,CAACA,IAAIA,GAAGA;oBACRA,qBAAqBA,EAAEA,EAAEA;oBACzBA,qBAAqBA,EAAEA,EAAEA;oBACzBA,UAAUA,EAAEA,EAAEA;oBACdA,kBAAkBA,EAAEA,EAAEA;oBACtBA,UAAUA,EAAEA,EAAEA,KAAKA,EAAEA,EAAEA,EAAEA,UAAUA,EAAEA,EAAEA,EAAEA,QAAQA,EAAEA,iBAASA,CAACA,mBAAmBA,EAAEA;oBAClFA,aAAaA,EAAEA,KAAKA;oBACpBA,kBAAkBA,EAAEA,sBAAcA,CAACA,4BAA4BA,EAAEA;iBACpEA,CAACA;gBACFA,IAAIA,CAACA,OAAOA,GAAGA,KAAKA,CAACA;gBACrBA,4EAA4EA;gBAC5EA,IAAIA,CAACA,cAAcA,GAAGA,KAAKA,CAACA;gBAC5BA,IAAIA,CAACA,KAAKA,GAAGA,OAAOA,CAACA,KAAKA,CAACA;gBAC3BA,IAAIA,CAACA,MAAMA,GAAGA,IAAIA,CAACA,KAAKA,CAACA,YAAYA,CAACA,UAAUA,CAACA;gBACjDA,IAAIA,CAACA,MAAMA,GAAGA,CAACA,CAACA;gBAChBA,IAAIA,CAACA,aAAaA,GAAGA,OAAOA,CAACA,aAAaA,IAAIA,OAAOA,CAACA,aAAaA,CAACA,mBAAmBA,CAACA;gBACxFA,IAAIA,kBAAkBA,GAAGA,IAAIA,CAACA,QAAQA,CAACA;gBAEvCA,EAAEA,CAACA,CAACA,IAAIA,CAACA,QAAQA,CAACA,CAACA,CAACA;oBAChBA,IAAIA,CAACA,oBAAoBA,GAAGA,kCAA0BA,CAACA,OAAOA,CAACA,IAAIA,CAACA,CAACA;gBACzEA,CAACA;gBACDA,IAAIA,CAACA,MAAMA,GAAGA,oBAAYA,CAACA,OAAOA,EAAEA,OAAOA,CAACA,aAAaA,IAAIA,OAAOA,CAACA,aAAaA,CAACA,mBAAmBA,EAAEA,IAAIA,CAACA,oBAAoBA,EAAEA,IAAIA,CAACA,YAAYA,CAACA,CAACA;gBAEtJA,IAAIA,CAACA,WAAWA,GAAGA,OAAOA,CAACA,IAAIA,CAACA;gBAEhCA,EAAEA,CAACA,CAACA,IAAIA,CAACA,aAAaA,CAACA,CAACA,CAACA;oBACrBA,IAAIA,CAACA,8BAA8BA,GAAGA,CAACA,kBAAkBA,IAAIA,kBAAkBA,CAACA,8BAA8BA,CAACA,GAAGA,kBAAkBA,CAACA,8BAA8BA,GAAGA,CAACA,CAACA;oBAExKA,4BAA4BA;oBAC5BA,IAAIA,eAAeA,GAAGA,IAAIA,CAACA,eAAeA,GAAGA,EAAEA,CAACA,MAAMA,CAACA,OAAOA,CAACA,GAAGA,CAACA,CAACA,CAACA,CAACA;yBACjEA,MAAMA,CAACA,KAAKA,CAACA;yBACbA,OAAOA,CAACA,UAAUA,CAACA,0BAA0BA,EAAEA,IAAIA,CAACA,CAACA;oBAC1DA,IAAIA,CAACA,kBAAkBA,GAAGA;wBACtBA,iBAAiBA,EAAEA,IAAIA,2BAA2BA,CAACA,IAAIA,EAAEA,eAAeA,EAAEA,IAAIA,CAACA,MAAMA,EAAEA,OAAOA,EAAEA,IAAIA,CAACA,QAAQA,CAACA;wBAC9GA,kBAAkBA,EAAEA,CAACA;wBACrBA,WAAWA,EAAEA,EAAEA;wBACfA,aAAaA,EAAEA,CAACA;wBAChBA,qCAAqCA,EAAEA,KAAKA;wBAC5CA,+BAA+BA,EAAEA,CAACA;wBAClCA,wBAAwBA,EAAEA,CAACA;wBAC3BA,gBAAgBA,EAAEA,CAACA;wBACnBA,iBAAiBA,EAAEA,CAACA;wBACpBA,iBAAiBA,EAAEA,CAACA;wBACpBA,WAAWA,EAAEA,EAAEA,CAACA,EAAEA,CAACA,EAAEA,CAACA,EAAEA,CAACA,EAAEA;qBAC9BA,CAACA;gBACNA,CAACA;gBAEDA,IAAIA,CAACA,GAAGA,GAAGA,EAAEA,CAACA,MAAMA,CAACA,OAAOA,CAACA,GAAGA,CAACA,CAACA,CAACA,CAACA;qBAC/BA,MAAMA,CAACA,KAAKA,CAACA;qBACbA,KAAKA,CAACA,UAAUA,EAAEA,UAAUA,CAACA;qBAC7BA,OAAOA,CAACA,UAAUA,CAACA,SAASA,EAAEA,IAAIA,CAACA,CAACA;gBAEzCA,EAAEA,CAACA,CAACA,IAAIA,CAACA,QAAQA,CAACA;oBACdA,IAAIA,CAACA,YAAYA,GAAGA,0BAAkBA,CAACA,IAAIA,CAACA,GAAGA,CAACA,CAACA;gBAErDA,IAAIA,CAACA,mBAAmBA,GAAGA,IAAIA,CAACA,GAAGA,CAACA,MAAMA,CAACA,GAAGA,CAACA,CAACA;gBAChDA,IAAIA,CAACA,mBAAmBA,CAACA,MAAMA,CAACA,GAAGA,CAACA;qBAC/BA,OAAOA,CAACA,QAAQA,EAAEA,IAAIA,CAACA,CAACA;gBAE7BA,IAAIA,CAACA,oBAAoBA,GAAGA,IAAIA,CAACA,GAAGA;qBAC/BA,MAAMA,CAACA,GAAGA,CAACA;qBACXA,OAAOA,CAACA,yBAAiBA,CAACA,yBAAyBA,CAACA,KAAKA,EAAEA,IAAIA,CAACA,CAACA;gBAEtEA,IAAIA,CAACA,GAAGA,GAAGA,EAAEA,CAACA,MAAMA,CAACA,GAAGA,EAAEA;qBACrBA,IAAIA,CAACA,IAAIA,CAACA;qBACVA,KAAKA,CAACA,UAACA,CAAiBA;oBACrBA,MAAMA,CAACA,CAACA,CAACA,UAAUA,CAACA;gBACxBA,CAACA,CAACA,CAACA;YACXA,CAACA;YAEMH,2BAAMA,GAAbA,UAAcA,OAA4BA;gBACtCI,KAAKA,CAACA,WAAWA,CAACA,OAAOA,EAAEA,SAASA,CAACA,CAACA;gBAEtCA,oBAAoBA;gBACpBA,IAAIA,QAAQA,GAAGA,OAAOA,CAACA,QAAQA,CAACA;gBAChCA,IAAIA,CAACA,cAAcA,GAAGA,QAAQA,CAACA;gBAE/BA,IAAIA,SAASA,GAAGA,IAAIA,CAACA,SAASA,GAAGA,OAAOA,CAACA,SAASA,CAACA;gBACnDA,EAAEA,CAACA,CAACA,SAASA,IAAIA,SAASA,CAACA,MAAMA,GAAGA,CAACA,IAAIA,SAASA,CAACA,CAACA,CAACA,CAACA,WAAWA,CAACA,CAACA,CAACA;oBAChEA,IAAIA,gBAAgBA,GAAGA,SAASA,CAACA,CAACA,CAACA,CAACA,QAAQA,CAACA;oBAC7CA,IAAIA,iBAAiBA,GAAGA,SAASA,CAACA;oBAClCA,IAAIA,qBAAqBA,GAAGA,SAASA,CAACA;oBACtCA,EAAEA,CAACA,CAACA,gBAAgBA,CAACA,CAACA,CAACA;wBACnBA,IAAIA,OAAOA,GAAoBA,gBAAgBA,CAACA,OAAOA,CAACA;wBAExDA,EAAEA,CAACA,CAACA,OAAOA,CAACA,CAACA,CAACA;4BACVA,iBAAiBA,GAAGA,uBAAeA,CAACA,QAAQA,CAAUA,OAAOA,EAAEA,uBAAeA,CAACA,SAASA,CAACA,iBAAiBA,CAACA,CAACA;4BAC5GA,qBAAqBA,GAAGA,uBAAeA,CAACA,YAAYA,CAACA,OAAOA,EAAEA,uBAAeA,CAACA,SAASA,CAACA,YAAYA,CAACA,CAACA;wBAC1GA,CAACA;oBACLA,CAACA;oBAEDA,IAAIA,CAACA,IAAIA,GAAGA,UAAUA,CAACA,SAASA,CAACA,SAASA,CAACA,CAACA,CAACA,EAAEA,IAAIA,CAACA,MAAMA,EAAEA,qBAAqBA,EAAEA,IAAIA,CAACA,eAAeA,EAAEA,IAAIA,CAACA,uBAAuBA,EAAEA,IAAIA,CAACA,oBAAoBA,CAACA,CAACA;oBAClKA,IAAIA,CAACA,IAAIA,CAACA,iBAAiBA,GAAGA,iBAAiBA,CAACA;oBAChDA,IAAIA,CAACA,IAAIA,CAACA,qBAAqBA,GAAGA,qBAAqBA,CAACA;oBACxDA,EAAEA,CAACA,CAACA,CAACA,CAACA,IAAIA,CAACA,OAAOA,CAACA,aAAaA,IAAIA,IAAIA,CAACA,OAAOA,CAACA,aAAaA,CAACA,mBAAmBA,CAACA,CAACA;wBAChFA,IAAIA,CAACA,YAAYA,EAAEA,CAACA;gBAC5BA,CAACA;gBAEDA,IAAIA,CAACA,CAACA;oBACFA,IAAIA,CAACA,IAAIA,GAAGA;wBACRA,qBAAqBA,EAAEA,EAAEA;wBACzBA,qBAAqBA,EAAEA,EAAEA;wBACzBA,UAAUA,EAAEA,EAAEA;wBACdA,kBAAkBA,EAAEA,EAAEA;wBACtBA,UAAUA,EAAEA,EAAEA,KAAKA,EAAEA,EAAEA,EAAEA,UAAUA,EAAEA,EAAEA,EAAEA;wBACzCA,aAAaA,EAAEA,KAAKA;wBACpBA,kBAAkBA,EAAEA,sBAAcA,CAACA,4BAA4BA,EAAEA;qBACpEA,CAACA;gBACNA,CAACA;gBAEDA,IAAIA,CAACA,+BAA+BA,EAAEA,CAACA;gBACvCA,IAAIA,CAACA,mBAAmBA,EAAEA,CAACA;gBAC3BA,IAAIA,CAACA,cAAcA,CAACA,IAAIA,CAACA,IAAIA,EAAEA,OAAOA,CAACA,kBAAkBA,CAACA,CAACA;gBAC3DA,IAAIA,CAACA,UAAUA,GAAGA,IAAIA,CAACA;gBAEvBA,EAAEA,CAACA,CAACA,SAASA,CAACA,CAACA,CAACA;oBACZA,IAAIA,QAAQA,GAAGA,+BAAuBA,CAClCA,SAASA,EACTA,KAAKA,CAACA,eAAeA,EACrBA,KAAKA,CAACA,4BAA4BA,EAClCA,KAAKA,CAACA,4BAA4BA,CAACA,CAACA;oBAExCA,EAAEA,CAACA,CAACA,IAAIA,CAACA,IAAIA,CAACA,qBAAqBA,CAACA,CAACA,CAACA;wBAClCA,QAAQA,CAACA,OAAOA,CAACA,IAAIA,6BAAqBA,EAAEA,CAACA,CAACA;oBAClDA,CAACA;oBAEDA,IAAIA,CAACA,WAAWA,CAACA,WAAWA,CAACA,QAAQA,CAACA,CAACA;gBAC3CA,CAACA;YACLA,CAACA;YAEMJ,kCAAaA,GAApBA,UAAqBA,OAAiCA;gBAClDK,KAAKA,CAACA,WAAWA,CAACA,OAAOA,EAAEA,SAASA,CAACA,CAACA;gBAEtCA,IAAIA,CAACA,MAAMA,CAACA;oBACRA,SAASA,EAAEA,OAAOA,CAACA,SAASA;oBAC5BA,kBAAkBA,EAAEA,OAAOA,CAACA,kBAAkBA;oBAC9CA,QAAQA,EAAEA,IAAIA,CAACA,eAAeA;iBACjCA,CAACA,CAACA;YACPA,CAACA;YAEML,+BAAUA,GAAjBA,UAAkBA,QAAmBA;gBACjCM,IAAIA,CAACA,MAAMA,CAACA;oBACRA,SAASA,EAAEA,IAAIA,CAACA,SAASA;oBACzBA,kBAAkBA,EAAEA,IAAIA;oBACxBA,QAAQA,EAAEA,QAAQA;iBACrBA,CAACA,CAACA;YACPA,CAACA;YAEMN,6CAAwBA,GAA/BA,UAAgCA,OAA8CA;gBAC1EO,IAAIA,WAAWA,GAAGA,IAAIA,gCAAwBA,EAAEA,CAACA;gBAEjDA,IAAIA,kBAAkBA,GAAGA,IAAIA,CAACA,IAAIA,IAAIA,IAAIA,CAACA,IAAIA,CAACA,kBAAkBA;sBAC5DA,IAAIA,CAACA,IAAIA,CAACA,kBAAkBA;sBAC5BA,sBAAcA,CAACA,4BAA4BA,EAAEA,CAACA;gBAEpDA,MAAMA,CAACA,CAACA,OAAOA,CAACA,UAAUA,CAACA,CAACA,CAACA;oBACzBA,KAAKA,QAAQA;wBACTA,IAAIA,CAACA,eAAeA,CAACA,WAAWA,CAACA,CAACA;wBAClCA,KAAKA,CAACA;oBACVA,KAAKA,WAAWA;wBACZA,IAAIA,CAACA,mBAAmBA,CAACA,WAAWA,CAACA,CAACA;wBACtCA,KAAKA,CAACA;oBACVA,KAAKA,QAAQA;wBACTA,IAAIA,mBAAmBA,GAAoCA;4BACvDA,WAAWA,EAAEA,WAAWA;4BACxBA,kBAAkBA,EAAEA,kBAAkBA;4BACtCA,IAAIA,EAAEA,IAAIA;4BACVA,YAAYA,EAAEA,IAAIA;4BAClBA,SAASA,EAAEA,IAAIA;4BACfA,QAAQA,EAAEA,IAAIA;4BACdA,UAAUA,EAAEA,IAAIA;yBACnBA,CAACA;wBACFA,sBAAcA,CAACA,mBAAmBA,CAACA,mBAAmBA,CAACA,CAACA;wBACxDA,KAAKA,CAACA;gBACdA,CAACA;gBACDA,MAAMA,CAACA,WAAWA,CAACA,QAAQA,EAAEA,CAACA;YAClCA,CAACA;YAEOP,wCAAmBA,GAA3BA,UAA4BA,WAAqCA;gBAC7DQ,IAAIA,IAAIA,GAAGA,IAAIA,CAACA,IAAIA,CAACA;gBACrBA,EAAEA,CAACA,CAACA,CAACA,IAAIA,CAACA;oBACNA,MAAMA,CAACA;gBAEXA,WAAWA,CAACA,YAAYA,CAACA;oBACrBA,UAAUA,EAAEA,WAAWA;oBACvBA,QAAQA,EAAEA,IAAIA;oBACdA,UAAUA,EAAEA;wBACRA,YAAYA,EAAEA,EAAEA,KAAKA,EAAEA,EAAEA,KAAKA,EAAEA,IAAIA,CAACA,qBAAqBA,IAAIA,IAAIA,CAACA,MAAMA,CAACA,eAAeA,CAACA,CAACA,CAACA,CAACA,KAAKA,EAAEA,EAAEA;qBACzGA;iBACJA,CAACA,CAACA,YAAYA,CAACA;oBACZA,UAAUA,EAAEA,WAAWA;oBACvBA,QAAQA,EAAEA,IAAIA;oBACdA,UAAUA,EAAEA;wBACRA,iBAAiBA,EAAEA,CAACA,CAACA,IAAIA,CAACA,iBAAiBA;qBAC9CA;iBACJA,CAACA,CAACA;gBAEHA,IAAIA,UAAUA,GAAGA,IAAIA,CAACA,qBAAqBA,CAACA;gBAC5CA,IAAIA,gBAAgBA,GAAGA,UAAUA,CAACA,MAAMA,CAACA;gBAEzCA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,gBAAgBA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;oBACxCA,IAAIA,SAASA,GAAGA,UAAUA,CAACA,CAACA,CAACA,CAACA;oBAC9BA,WAAWA,CAACA,YAAYA,CAACA;wBACrBA,UAAUA,EAAEA,WAAWA;wBACvBA,WAAWA,EAAEA,SAASA,CAACA,KAAKA;wBAC5BA,QAAQA,EAAEA,mBAAWA,CAACA,iBAAiBA,CAACA,SAASA,CAACA,QAAQA,CAACA,WAAWA,EAAEA,CAACA;wBACzEA,UAAUA,EAAEA;4BACRA,IAAIA,EAAEA,EAAEA,KAAKA,EAAEA,EAAEA,KAAKA,EAAEA,SAASA,CAACA,KAAKA,EAAEA,EAAEA;yBAC9CA;qBACJA,CAACA,CAACA;gBACPA,CAACA;YACLA,CAACA;YAEOR,oCAAeA,GAAvBA,UAAwBA,WAAqCA;gBACzDS,IAAIA,IAAIA,GAAGA,IAAIA,CAACA,IAAIA,CAACA;gBACrBA,EAAEA,CAACA,CAACA,CAACA,IAAIA,CAACA;oBACNA,MAAMA,CAACA;gBAEXA,IAAIA,sBAAsBA,GAAoBA,EAAEA,MAAMA,EAAEA,IAAIA,CAACA,sBAAsBA,EAAEA,CAACA;gBAEtFA,IAAIA,IAAIA,GAAGA,uBAAeA,CAACA,QAAQA,CAACA,sBAAsBA,EAAEA,uBAAeA,CAACA,MAAMA,CAACA,IAAIA,EAAEA,IAAIA,CAACA,MAAMA,CAACA,SAASA,EAAEA,CAACA,CAACA;gBAClHA,IAAIA,SAASA,GAAGA,uBAAeA,CAACA,QAAQA,CAACA,sBAAsBA,EAAEA,uBAAeA,CAACA,MAAMA,CAACA,SAASA,EAAEA,IAAIA,CAACA,CAACA;gBACzGA,IAAIA,SAASA,GAAGA,uBAAeA,CAACA,QAAQA,CAACA,sBAAsBA,EAAEA,uBAAeA,CAACA,MAAMA,CAACA,SAASA,EAAEA,IAAIA,CAACA,IAAIA,CAACA,UAAUA,CAACA,KAAKA,CAACA,CAACA;gBAC/HA,IAAIA,UAAUA,GAAGA,sBAAcA,CAACA,QAAQA,CAACA,sBAAsBA,EAAEA,mBAAWA,CAACA,UAAUA,EAAEA,IAAIA,CAACA,IAAIA,CAACA,UAAUA,CAACA,UAAUA,CAACA,CAACA;gBAC1HA,IAAIA,aAAaA,GAAGA,sBAAcA,CAACA,QAAQA,CAACA,sBAAsBA,EAAEA,mBAAWA,CAACA,QAAQA,EAAEA,IAAIA,CAACA,IAAIA,CAACA,UAAUA,CAACA,QAAQA,CAACA,CAACA;gBAEzHA,WAAWA,CAACA,YAAYA,CAACA;oBACrBA,QAAQA,EAAEA,IAAIA;oBACdA,UAAUA,EAAEA,QAAQA;oBACpBA,UAAUA,EAAEA;wBACRA,IAAIA,EAAEA,IAAIA;wBACVA,QAAQA,EAAEA,sBAAcA,CAACA,IAAIA,CAACA,MAAMA,CAACA,cAAcA,EAAEA,CAACA;wBACtDA,SAASA,EAAEA,SAASA;wBACpBA,SAASA,EAAEA,SAASA;wBACpBA,UAAUA,EAAEA,UAAUA;wBACtBA,QAAQA,EAAEA,aAAaA;qBAC1BA;iBACJA,CAACA,CAACA;YACPA,CAACA;YAEMT,8CAAyBA,GAAhCA,UAAiCA,UAAkBA;gBAAnDU,iBAwBCA;gBAvBGA,EAAEA,CAACA,CAACA,IAAIA,CAACA,kBAAkBA,CAACA,WAAWA,CAACA,MAAMA,KAAKA,CAACA,CAACA;oBAACA,MAAMA,CAACA;gBAE7DA,IAAIA,CAACA,kBAAkBA,CAACA,+BAA+BA,GAAGA,UAAUA,CAACA;gBACrEA,IAAIA,CAACA,kBAAkBA,CAACA,qCAAqCA,GAAGA,KAAKA,CAACA;gBACtEA,IAAIA,QAAQA,GAAGA,IAAIA,CAACA,eAAeA,CAACA;gBACpCA,IAAIA,YAAYA,GAAGA,UAAUA,GAAGA,IAAIA,CAACA,IAAIA,CAACA,UAAUA,CAACA,MAAMA,CAACA;gBAC5DA,IAAIA,KAAKA,GAAGA,IAAIA,CAACA,kBAAkBA,CAACA,WAAWA,CAACA,YAAYA,CAACA,CAACA;gBAE9DA,IAAIA,CAACA,GAAGA,CAACA,MAAMA,CAACA,GAAGA,CAACA;qBACfA,UAAUA,EAAEA;qBACZA,QAAQA,CAACA,IAAIA,CAACA,8BAA8BA,CAACA;qBAC7CA,IAAIA,CAACA,SAASA,CAACA;qBACfA,IAAIA,CAACA,WAAWA,EAAEA,eAAOA,CAACA,kBAAkBA,CAACA,QAAQA,CAACA,KAAKA,GAAGA,CAACA,EAAEA,QAAQA,CAACA,MAAMA,GAAGA,CAACA,EAAEA,CAACA,EAAEA,CAACA,EAAEA,KAAKA,CAACA,CAACA;qBACnGA,IAAIA,CAACA,KAAKA,EAAEA,cAAQA,KAAIA,CAACA,kBAAkBA,CAACA,qCAAqCA,GAAGA,IAAIA,CAACA,CAACA,CAACA,CAACA,CAACA;gBAElGA,IAAIA,CAACA,kBAAkBA,CAACA,aAAaA,GAAGA,KAAKA,CAACA;gBAC9CA,IAAIA,CAACA,kBAAkBA,CAACA,iBAAiBA,CAACA,YAAYA,CAACA,YAAYA,CAACA,CAACA;gBACrEA,6EAA6EA;gBAC7EA,IAAIA,CAACA,GAAGA,CAACA,SAASA,CAACA,QAAQA,CAACA,CAACA,IAAIA,CAACA,SAASA,EAAEA,UAACA,CAACA,EAAEA,KAAKA;oBAClDA,MAAMA,CAACA,KAAKA,KAAKA,YAAYA,GAAGA,CAACA,GAAGA,GAAGA,CAACA;gBAC5CA,CAACA,CAACA,CAACA;gBAEHA,eAAOA,CAACA,6BAA6BA,CAACA,IAAIA,CAACA,OAAOA,CAACA,CAACA;YACxDA,CAACA;YAEOV,oCAAeA,GAAvBA;gBACIW,IAAIA,QAAQA,GAAGA,IAAIA,CAACA,eAAeA,CAACA;gBACpCA,EAAEA,CAACA,CAACA,CAACA,IAAIA,CAACA,aAAaA,IAAIA,IAAIA,CAACA,IAAIA,IAAIA,IAAIA,CAACA,IAAIA,CAACA,kBAAkBA,CAACA,IAAIA,CAACA,CAACA,CAACA;oBACxEA,kGAAkGA;oBAClGA,kHAAkHA;oBAClHA,IAAIA,EAAEA,GAAGA,QAAQA,CAACA,MAAMA,GAAGA,QAAQA,CAACA,KAAKA,CAACA;oBAC1CA,IAAIA,KAAKA,GAAGA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,IAAIA,CAACA,GAAGA,CAACA,CAACA,CAACA,GAAGA,CAACA,EAAEA,GAAGA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA;oBACpDA,MAAMA,CAACA,IAAIA,CAACA,GAAGA,CAACA,QAAQA,CAACA,MAAMA,EAAEA,QAAQA,CAACA,KAAKA,CAACA,GAAGA,KAAKA,CAACA;gBAC7DA,CAACA;gBAEDA,+FAA+FA;gBAC/FA,MAAMA,CAACA,IAAIA,CAACA,GAAGA,CAACA,QAAQA,CAACA,MAAMA,EAAEA,QAAQA,CAACA,KAAKA,CAACA,GAAGA,CAACA,CAACA;YACzDA,CAACA;YAEOX,2CAAsBA,GAA9BA;gBACIY,IAAIA,KAAKA,GAAGA,GAAGA,CAACA;gBAChBA,EAAEA,CAACA,CAACA,IAAIA,CAACA,2BAA2BA,IAAIA,IAAIA,CAACA,eAAeA,CAACA,MAAMA,GAAGA,IAAIA,CAACA,2BAA2BA,CAACA,CAACA,CAACA;oBACrGA,KAAKA,GAAGA,IAAIA,CAACA,eAAeA,CAACA,MAAMA,GAAGA,IAAIA,CAACA,2BAA2BA,CAACA;gBAC3EA,CAACA;gBACDA,MAAMA,CAACA,KAAKA,CAACA;YACjBA,CAACA;YAEOZ,oDAA+BA,GAAvCA,UAAwCA,QAAoBA;gBAApBa,wBAAoBA,GAApBA,YAAoBA;gBACxDA,IAAIA,CAACA,eAAeA,CAACA,MAAMA,GAAGA,IAAIA,CAACA,cAAcA,CAACA,MAAMA,CAACA;gBACzDA,IAAIA,CAACA,eAAeA,CAACA,KAAKA,GAAGA,IAAIA,CAACA,cAAcA,CAACA,KAAKA,CAACA;gBACvDA,IAAIA,QAAQA,GAAGA,IAAIA,CAACA,eAAeA,CAACA;gBAEpCA,EAAEA,CAACA,CAACA,IAAIA,CAACA,aAAaA,CAACA,CAACA,CAACA;oBACrBA,QAAQA,CAACA,MAAMA,IAAIA,UAAUA,CAACA,gCAAgCA,CAACA,CAACA,6BAA6BA;gBACjGA,CAACA;gBACDA,IAAIA,CAACA,CAACA;oBACFA,IAAIA,aAAaA,GAAGA,IAAIA,CAACA,MAAMA,CAACA,UAAUA,EAAEA,CAACA;oBAC7CA,QAAQA,CAACA,MAAMA,IAAIA,aAAaA,CAACA,MAAMA,CAACA;oBACxCA,QAAQA,CAACA,KAAKA,IAAIA,aAAaA,CAACA,KAAKA,CAACA;gBAC1CA,CAACA;gBAEDA,IAAIA,CAACA,GAAGA,CAACA,IAAIA,CAACA;oBACVA,OAAOA,EAAEA,QAAQA,CAACA,KAAKA;oBACvBA,QAAQA,EAAEA,QAAQA,CAACA,MAAMA;iBAC5BA,CAACA,CAACA;gBAEHA,EAAEA,CAACA,CAACA,IAAIA,CAACA,aAAaA,CAACA,CAACA,CAACA;oBACrBA,IAAIA,CAACA,eAAeA;yBACfA,KAAKA,CAACA;wBACHA,OAAOA,EAAEA,MAAMA;wBACfA,QAAQA,EAAEA,UAAUA,CAACA,gCAAgCA,GAAGA,IAAIA;wBAC5DA,UAAUA,EAAEA,QAAQA;wBACpBA,KAAKA,EAAEA,CAACA;qBACXA,CAACA,CAACA;oBACPA,IAAIA,CAACA,GAAGA;yBACHA,KAAKA,CAACA,KAAKA,EAAEA,UAAUA,CAACA,gCAAgCA,CAACA,CAACA;gBACnEA,CAACA;gBAACA,IAAIA,CAACA,CAACA;oBACJA,cAAMA,CAACA,iBAAiBA,CAACA,IAAIA,CAACA,GAAGA,EAAEA,IAAIA,CAACA,MAAMA,CAACA,CAACA;gBACpDA,CAACA;gBAEDA,IAAIA,CAACA,cAAcA,GAAGA,IAAIA,CAACA,MAAMA,CAACA;gBAClCA,IAAIA,MAAMA,GAAGA,IAAIA,CAACA,MAAMA,GAAGA,IAAIA,CAACA,eAAeA,EAAEA,CAACA;gBAClDA,IAAIA,iBAAiBA,GAAGA,QAAQA,CAACA,KAAKA,GAAGA,CAACA,CAACA;gBAC3CA,IAAIA,kBAAkBA,GAAGA,QAAQA,CAACA,MAAMA,GAAGA,CAACA,CAACA;gBAE7CA,IAAIA,CAACA,GAAGA,GAAGA,EAAEA,CAACA,GAAGA,CAACA,GAAGA,EAAEA,CAACA;gBAExBA,IAAIA,CAACA,QAAQA,GAAGA,EAAEA,CAACA,GAAGA,CAACA,GAAGA,EAAEA;qBACvBA,WAAWA,CAACA,MAAMA,GAAGA,UAAUA,CAACA,mBAAmBA,CAACA;qBACpDA,WAAWA,CAACA,MAAMA,GAAGA,UAAUA,CAACA,mBAAmBA,CAACA,CAACA;gBAE1DA,EAAEA,CAACA,CAACA,IAAIA,CAACA,aAAaA,CAACA,CAACA,CAACA;oBACrBA,IAAIA,CAACA,mBAAmBA,CAACA,IAAIA,CAACA,WAAWA,EAAEA,eAAOA,CAACA,SAASA,CAACA,iBAAiBA,EAAEA,kBAAkBA,CAACA,CAACA,CAACA;oBACrGA,IAAIA,CAACA,oBAAoBA,CAACA,IAAIA,CAACA,WAAWA,EAAEA,eAAOA,CAACA,SAASA,CAACA,iBAAiBA,EAAEA,kBAAkBA,CAACA,CAACA,CAACA;gBAC1GA,CAACA;gBAACA,IAAIA,CAACA,CAACA;oBACJA,IAAIA,CAACA,mBAAmBA,CAACA,UAAUA,EAAEA,CAACA,QAAQA,CAACA,QAAQA,CAACA,CAACA,IAAIA,CAACA,WAAWA,EAAEA,eAAOA,CAACA,SAASA,CAACA,iBAAiBA,EAAEA,kBAAkBA,CAACA,CAACA,CAACA;oBACrIA,IAAIA,CAACA,oBAAoBA,CAACA,UAAUA,EAAEA,CAACA,QAAQA,CAACA,QAAQA,CAACA,CAACA,IAAIA,CAACA,WAAWA,EAAEA,eAAOA,CAACA,SAASA,CAACA,iBAAiBA,EAAEA,kBAAkBA,CAACA,CAACA,CAACA;gBAC1IA,CAACA;gBAEDA,eAAOA,CAACA,6BAA6BA,CAACA,IAAIA,CAACA,OAAOA,CAACA,CAACA;YACxDA,CAACA;YAEOb,wCAAmBA,GAA3BA;gBACIc,IAAIA,CAACA,eAAeA,GAAGA;oBACnBA,QAAQA,EAAEA,IAAIA,CAACA,eAAeA;oBAC9BA,MAAMA,EAAEA,IAAIA,CAACA,MAAMA;oBACnBA,GAAGA,EAAEA,IAAIA,CAACA,GAAGA,CAACA,WAAWA,CAACA,CAACA,CAACA,CAACA,WAAWA,CAACA,IAAIA,CAACA,MAAMA,GAAGA,UAAUA,CAACA,mBAAmBA,CAACA;oBACtFA,QAAQA,EAAEA,IAAIA,CAACA,QAAQA;oBACvBA,mBAAmBA,EAAEA,UAAUA,CAACA,mBAAmBA;oBACnDA,mBAAmBA,EAAEA,UAAUA,CAACA,mBAAmBA;oBACnDA,kBAAkBA,EAAEA,IAAIA,CAACA,IAAIA,CAACA,kBAAkBA;iBACnDA,CAACA;YACNA,CAACA;YAEOd,kCAAaA,GAArBA,UAAsBA,KAAYA,EAAEA,MAAaA;gBAC7Ce,IAAIA,SAASA,GAAGA,EAAEA,CAACA,GAAGA,EAAEA,CAACA;gBACzBA,MAAMA,CAACA,OAAOA,CAACA,UAACA,CAACA;oBACbA,SAASA,CAACA,GAAGA,CAACA,CAACA,CAACA,QAAQA,GAAGA,CAACA,CAACA,QAAQA,CAACA,MAAMA,EAAEA,GAAGA,CAACA,CAACA,IAAIA,CAACA,QAAQA,CAACA,MAAMA,EAAEA,CAACA,CAACA;gBAC/EA,CAACA,CAACA,CAACA;gBAEHA,IAAIA,SAASA,GAAGA,KAAKA,CAACA,MAAMA,CAACA,UAACA,CAACA;oBAC3BA,MAAMA,CAACA,CAACA,SAASA,CAACA,GAAGA,CAACA,CAACA,CAACA,QAAQA,GAAGA,CAACA,CAACA,QAAQA,CAACA,MAAMA,EAAEA,GAAGA,CAACA,CAACA,IAAIA,CAACA,QAAQA,CAACA,MAAMA,EAAEA,CAACA,CAACA;gBACvFA,CAACA,CAACA,CAACA,GAAGA,CAACA,UAACA,CAACA;oBACLA,IAAIA,OAAOA,GAAGA,iBAASA,CAACA,OAAOA,CAACA,CAACA,CAACA,CAACA;oBACnCA,OAAOA,CAACA,UAAUA,KAAKA,SAASA,GAAGA,OAAOA,CAACA,IAAIA,CAACA,UAAUA,GAAGA,CAACA,GAAGA,OAAOA,CAACA,UAAUA,GAAGA,CAACA,CAACA;oBACxFA,MAAMA,CAACA,OAAOA,CAACA;gBACnBA,CAACA,CAACA,CAACA;gBAEHA,MAAMA,CAACA,EAAEA,CAACA,KAAKA,CAACA,CAACA,MAAMA,EAAEA,SAASA,CAACA,CAACA,CAACA;YACzCA,CAACA;YAEOf,mCAAcA,GAAtBA,UAAuBA,IAAeA,EAAEA,kBAA2BA,EAAEA,QAAoBA;gBAApBgB,wBAAoBA,GAApBA,YAAoBA;gBACrFA,IAAIA,QAAQA,GAAGA,IAAIA,CAACA,eAAeA,CAACA;gBACpCA,QAAQA,GAAGA,QAAQA,IAAIA,sBAAcA,CAACA,oBAAoBA,CAACA,IAAIA,CAACA,QAAQA,EAAEA,kBAAkBA,CAACA,CAACA;gBAC9FA,EAAEA,CAACA,CAACA,IAAIA,CAACA,QAAQA,CAACA,CAACA,CAACA;oBAChBA,IAAIA,MAAMA,GAAGA,UAAUA,CAACA,SAASA,CAACA,IAAIA,CAACA,MAAMA,EAAEA,IAAIA,CAACA,eAAeA,EAAEA,QAAQA,EAAEA,IAAIA,CAACA,kBAAkBA,CAACA,CAACA;oBACxGA,IAAIA,MAAiCA,CAACA;oBACtCA,IAAIA,QAA0BA,CAACA;oBAC/BA,IAAIA,eAAmCA,CAACA;oBACxCA,IAAIA,aAAaA,GAAGA,IAAIA,CAACA,kBAAkBA,CAACA;oBAC5CA,IAAIA,MAAMA,GAAYA,EAAEA,CAACA;oBACzBA,EAAEA,CAACA,CAACA,aAAaA,IAAIA,aAAaA,CAACA,IAAIA,CAACA,CAACA,CAACA;wBACtCA,MAAMA,GAAGA,IAAIA,CAACA,YAAYA,EAAEA,CAACA;oBACjCA,CAACA;oBACDA,EAAEA,CAACA,CAACA,CAACA,kBAAkBA,CAACA,CAACA,CAACA;wBACtBA,IAAIA,gBAAgBA,GAA+BA;4BAC/CA,SAASA,EAAEA,IAAIA;4BACfA,MAAMA,EAAEA,IAAIA,CAACA,MAAMA;4BACnBA,eAAeA,EAAEA,IAAIA,CAACA,mBAAmBA;4BACzCA,oBAAoBA,EAAEA,IAAIA,CAACA,oBAAoBA;4BAC/CA,oBAAoBA,EAAEA,IAAIA,CAACA,oBAAoBA;4BAC/CA,MAAMA,EAAEA,MAAMA;4BACdA,MAAMA,EAAEA,IAAIA,CAACA,MAAMA;4BACnBA,eAAeA,EAAEA,IAAIA,CAACA,eAAeA;4BACrCA,QAAQA,EAAEA,QAAQA;4BAClBA,MAAMA,EAAEA,MAAMA;4BACdA,mBAAmBA,EAAEA,UAAUA,CAACA,mBAAmBA;yBACtDA,CAACA;wBACFA,MAAMA,GAAGA,IAAIA,CAACA,QAAQA,CAACA,OAAOA,CAACA,gBAAgBA,CAACA,CAACA;wBACjDA,QAAMA,GAAGA,MAAMA,CAACA,MAAMA,CAACA;wBACvBA,eAAeA,GAAGA,MAAMA,CAACA,eAAeA,CAACA;oBAC7CA,CAACA;oBACDA,EAAEA,CAACA,CAACA,kBAAkBA,IAAIA,MAAMA,CAACA,MAAMA,CAACA,CAACA,CAACA;wBACtCA,QAAMA,GAAGA,UAAUA,CAACA,iBAAiBA,CAACA,IAAIA,CAACA,GAAGA,EAAEA,IAAIA,EAAEA,MAAMA,EAAEA,IAAIA,CAACA,MAAMA,EAAEA,IAAIA,CAACA,MAAMA,EAAEA,IAAIA,CAACA,oBAAoBA,IAAIA,IAAIA,CAACA,oBAAoBA,CAACA,YAAYA,EAAEA,EAAEA,IAAIA,CAACA,eAAeA,EAAEA,IAAIA,CAACA,IAAIA,CAACA,qBAAqBA,CAACA,CAACA;wBACtNA,eAAeA,GAAGA,UAAUA,CAACA,0BAA0BA,CAACA,IAAIA,CAACA,GAAGA,EAAEA,IAAIA,EAAEA,MAAMA,EAAEA,IAAIA,CAACA,MAAMA,EAAEA,IAAIA,CAACA,MAAMA,EAAEA,IAAIA,CAACA,eAAeA,CAACA,CAACA;wBAChIA,yBAAiBA,CAACA,iBAAiBA,CAACA,IAAIA,CAACA,oBAAoBA,EAAEA,MAAMA,EAAEA,KAAKA,EAAEA,IAAIA,CAACA,CAACA;wBACpFA,yBAAiBA,CAACA,oBAAoBA,CAACA,IAAIA,CAACA,oBAAoBA,EAAEA,MAAMA,CAACA,CAACA;oBAC9EA,CAACA;oBAEDA,IAAIA,CAACA,kBAAkBA,CAACA,QAAMA,EAAEA,eAAeA,EAAEA,IAAIA,CAACA,CAACA;oBAEvDA,EAAEA,CAACA,CAACA,IAAIA,CAACA,eAAeA,CAACA,CAACA,CAACA;wBACvBA,sBAAcA,CAACA,UAAUA,CAACA,QAAMA,EAAEA,UAACA,YAA0BA,IAAKA,OAAAA,YAAYA,CAACA,IAAIA,CAACA,IAAIA,CAACA,WAAWA,EAAlCA,CAAkCA,CAACA,CAACA;wBACtGA,sBAAcA,CAACA,UAAUA,CAACA,eAAeA,EAAEA,UAACA,YAA0BA,IAAKA,OAAAA,YAAYA,CAACA,IAAIA,CAACA,IAAIA,CAACA,WAAWA,EAAlCA,CAAkCA,CAACA,CAACA;oBACnHA,CAACA;gBACLA,CAACA;gBACDA,IAAIA,CAACA,CAACA;oBACFA,IAAIA,CAACA,oBAAoBA,CAACA,IAAIA,EAAEA,QAAQA,CAACA,CAACA;gBAC9CA,CAACA;gBAEDA,eAAOA,CAACA,6BAA6BA,CAACA,IAAIA,CAACA,OAAOA,CAACA,CAACA;YACxDA,CAACA;YAEOhB,iCAAYA,GAApBA;gBACIiB,IAAIA,WAAWA,GAAGA,IAAIA,wBAAgBA,CAACA;oBACnCA,aAAaA,EAAEA,yBAAiBA,CAACA,cAAcA;oBAC/CA,cAAcA,EAAEA,yBAAiBA,CAACA,mBAAmBA;iBACxDA,EAAEA,IAAIA,CAACA,eAAeA,CAACA,CAACA;gBAEzBA,IAAIA,eAAeA,GAA0BA,IAAIA,CAACA,qBAAqBA,EAAEA,CAACA;gBAE1EA,MAAMA,CAACA,WAAWA,CAACA,MAAMA,CAACA,eAAeA,CAACA,CAACA;YAC/CA,CAACA;YAEOjB,0CAAqBA,GAA7BA;gBACIkB,IAAIA,IAAIA,GAAGA,IAAIA,CAACA,IAAIA,CAACA;gBACrBA,IAAIA,eAAeA,GAA0BA,EAAEA,CAACA;gBAChDA,IAAIA,qBAAqBA,GAAGA,sBAAcA,CAACA,iCAAiCA,EAAEA,CAACA;gBAC/EA,IAAIA,gBAAgBA,GAAWA,IAAIA,CAACA;gBACpCA,EAAEA,CAACA,CAACA,IAAIA,CAACA,kBAAkBA,CAACA,YAAYA,KAAKA,CAACA,CAACA;oBAC3CA,gBAAgBA,GAAWA,EAAEA,CAACA,GAAGA,CAACA,IAAIA,CAACA,UAAUA,EAAEA,UAAAA,CAACA,IAAIA,OAAAA,IAAIA,CAACA,GAAGA,CAACA,CAACA,CAACA,IAAIA,CAACA,OAAOA,CAACA,EAAxBA,CAAwBA,CAACA,CAACA;gBAEtFA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,IAAIA,CAACA,IAAIA,CAACA,UAAUA,CAACA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;oBACnDA,IAAIA,KAAKA,GAAGA,IAAIA,CAACA,oBAAoBA,CAACA,IAAIA,CAACA,UAAUA,CAACA,CAACA,CAACA,EAAEA,gBAAgBA,EAAEA,qBAAqBA,CAACA,CAACA;oBACnGA,eAAeA,CAACA,IAAIA,CAACA,KAAKA,CAACA,CAACA;gBAChCA,CAACA;gBACDA,MAAMA,CAACA,eAAeA,CAACA;YAC3BA,CAACA;YAEOlB,gCAAWA,GAAnBA,UAAoBA,IAAYA,EAAEA,QAAgBA;gBAC9CmB,IAAIA,UAAUA,GAAGA;oBACbA,IAAIA,EAAEA,IAAIA;oBACVA,UAAUA,EAAEA,yBAAiBA,CAACA,mBAAmBA,CAACA,UAAUA;oBAC5DA,QAAQA,EAAEA,cAAcA,CAACA,SAASA,CAACA,QAAQA,CAACA;oBAC5CA,UAAUA,EAAEA,yBAAiBA,CAACA,mBAAmBA,CAACA,UAAUA;iBAC/DA,CAACA;gBACFA,MAAMA,CAACA;oBACHA,KAAKA,EAAEA,8BAAsBA,CAACA,mBAAmBA,CAACA,UAAUA,CAACA;oBAC7DA,MAAMA,EAAEA,8BAAsBA,CAACA,qBAAqBA,CAACA,UAAUA,CAACA;iBACnEA,CAACA;YACNA,CAACA;YAEOnB,yCAAoBA,GAA5BA,UAA6BA,CAAqBA,EAAEA,gBAAwBA,EAAEA,qBAAmDA;gBAC7HoB,IAAIA,UAAUA,GAAGA,IAAIA,CAACA,QAAQA,CAACA,QAAQA,CAACA,CAACA,CAACA,CAACA;gBAC3CA,IAAIA,MAAMA,GAAGA,uBAAeA,CAACA,yBAAyBA,CAACA,UAAUA,CAACA,CAACA,CAACA,CAACA,CAACA;gBACtEA,IAAIA,MAAMA,GAAGA,UAAUA,CAACA,CAACA,CAACA,CAACA;gBAC3BA,IAAIA,aAAaA,GAAGA,IAAIA,CAACA,IAAIA,CAACA,kBAAkBA,CAACA;gBACjDA,IAAIA,gBAAgBA,GAAGA,qBAAqBA,CAACA,WAAWA,CAACA,CAACA,CAACA,IAAIA,CAACA,iBAAiBA,EAAEA,aAAaA,EAAEA,gBAAgBA,CAACA,CAACA;gBAEpHA,IAAIA,QAAQA,GAAGA,MAAMA,GAAGA,CAACA,GAAGA,YAA0BA,GAAGA,aAA2BA,CAACA;gBACrFA,IAAIA,aAAaA,GAAqBA;oBAClCA,KAAKA,EAAEA;wBACHA,CAACA,EAAEA,MAAMA;wBACTA,CAACA,EAAEA,MAAMA;qBACZA;oBACDA,cAAcA,EAAEA,CAACA,QAAQA,CAACA;oBAC1BA,MAAMA,EAAEA,CAACA;iBACZA,CAACA;gBAEFA,IAAIA,WAAWA,GAAGA,aAAaA,CAACA,UAAUA,GAAGA,aAAaA,CAACA,UAAUA,GAAGA,yBAAiBA,CAACA,iBAAiBA,CAACA;gBAE5GA,IAAIA,SAAiBA,CAACA;gBACtBA,IAAIA,aAAoBA,CAACA;gBACzBA,IAAIA,aAAqBA,CAACA;gBAC1BA,IAAIA,iBAAwBA,CAACA;gBAC7BA,IAAIA,QAAeA,CAACA;gBACpBA,IAAIA,kBAAkBA,GAAGA,aAAaA,CAACA,UAAUA,CAACA;gBAClDA,IAAIA,QAAQA,GAAGA,aAAaA,CAACA,QAAQA,CAACA;gBAEtCA,EAAEA,CAACA,CAACA,kBAAkBA,KAAKA,kBAAUA,CAACA,IAAIA,IAAIA,kBAAkBA,KAAKA,kBAAUA,CAACA,IAAIA,CAACA,CAACA,CAACA;oBACnFA,SAASA,GAAGA,gBAAgBA,CAACA,MAAMA,CAACA,CAACA,CAACA,IAAIA,CAACA,OAAOA,CAACA,CAACA;oBACpDA,aAAaA,GAAGA,IAAIA,CAACA,WAAWA,CAACA,SAASA,EAAEA,QAAQA,CAACA,CAACA;gBAC1DA,CAACA;gBAEDA,EAAEA,CAACA,CAACA,kBAAkBA,KAAKA,kBAAUA,CAACA,IAAIA,IAAIA,kBAAkBA,KAAKA,kBAAUA,CAACA,QAAQA,CAACA,CAACA,CAACA;oBACvFA,aAAaA,GAAGA,CAACA,CAACA,IAAIA,CAACA,KAAKA,CAACA;oBAC7BA,iBAAiBA,GAAGA,IAAIA,CAACA,WAAWA,CAACA,aAAaA,EAAEA,QAAQA,CAACA,CAACA;gBAClEA,CAACA;gBAEDA,MAAMA,CAACA,CAACA,kBAAkBA,CAACA,CAACA,CAACA;oBACzBA,KAAKA,kBAAUA,CAACA,IAAIA;wBAChBA,IAAIA,IAAIA,GAAGA,aAAaA,GAAGA,IAAIA,GAAGA,SAASA,GAAGA,GAAGA,CAACA;wBAClDA,QAAQA,GAAGA,IAAIA,CAACA,WAAWA,CAACA,IAAIA,EAAEA,QAAQA,CAACA,CAACA;wBAC5CA,KAAKA,CAACA;oBACVA,KAAKA,kBAAUA,CAACA,QAAQA;wBACpBA,QAAQA,GAAGA,CAACA,CAACA,KAAKA,CAACA,iBAAiBA,CAACA,CAACA;wBACtCA,KAAKA,CAACA;oBACVA,KAAKA,kBAAUA,CAACA,IAAIA;wBAChBA,QAAQA,GAAGA,CAACA,CAACA,KAAKA,CAACA,aAAaA,CAACA,CAACA;wBAClCA,KAAKA,CAACA;gBACdA,CAACA;gBAEDA,IAAIA,gBAAgBA,GAAGA,uBAAeA,CAACA,+BAA+BA,CAACA,CAACA,EAAEA,IAAIA,CAACA,eAAeA,EAAEA,aAAaA,CAACA,KAAKA,CAACA,CAACA;gBACrHA,IAAIA,eAAeA,GAAYA,uBAAeA,CAACA,oCAAoCA,CAACA,gBAAgBA,CAACA,CAACA;gBAEtGA,MAAMA,CAACA;oBACHA,WAAWA,EAAEA,IAAIA;oBACjBA,IAAIA,EAAEA,EAAEA;oBACRA,QAAQA,EAAEA,QAAQA;oBAClBA,WAAWA,EAAEA,WAAWA;oBACxBA,QAAQA,EAAEA,QAAQA;oBAClBA,QAAQA,EAAEA,CAACA,CAACA,IAAIA,CAACA,QAAQA;oBACzBA,WAAWA,EAAEA,aAAaA;oBAC1BA,UAAUA,EAAEA,yBAAiBA,CAACA,uBAAuBA;oBACrDA,UAAUA,EAAEA,aAA8BA;oBAC1CA,gBAAgBA,EAAEA,gBAAgBA;oBAClCA,kBAAkBA,EAAEA,CAACA;oBACrBA,KAAKA,EAAEA,CAACA,CAACA,CAACA,UAAUA,GAAGA,CAACA,CAACA,QAAQA,CAACA,GAAGA,CAACA,GAAGA,CAACA,IAAIA,CAACA,EAAEA,GAAGA,CAACA,CAACA;oBACtDA,SAASA,EAAEA,SAASA;oBACpBA,aAAaA,EAAEA,aAAaA;oBAC5BA,aAAaA,EAAEA,aAAaA;oBAC5BA,iBAAiBA,EAAEA,iBAAiBA;oBACpCA,gBAAgBA,EAAEA,gBAAgBA;oBAClCA,SAASA,EAAEA,eAAeA;iBAC7BA,CAACA;YACNA,CAACA;YAEOpB,iCAAYA,GAApBA;gBACIqB,EAAEA,CAACA,CAACA,CAACA,IAAIA,CAACA,aAAaA,CAACA,CAACA,CAACA;oBACtBA,IAAIA,sBAAsBA,GAAGA,IAAIA,CAACA,IAAIA,CAACA,sBAAsBA,CAACA;oBAC9DA,EAAEA,CAACA,CAACA,sBAAsBA,CAACA,CAACA,CAACA;wBACzBA,IAAIA,UAAUA,GAAGA,IAAIA,CAACA,IAAIA,CAACA,UAAUA,CAACA;wBACtCA,kBAAUA,CAACA,MAAMA,CAACA,UAAUA,EAAEA,sBAAsBA,CAACA,CAACA;wBACtDA,IAAIA,QAAQA,GAAWA,sBAAsBA,CAACA,mBAAWA,CAACA,QAAQA,CAACA,CAACA;wBACpEA,EAAEA,CAACA,CAACA,QAAQA,CAACA;4BACTA,IAAIA,CAACA,MAAMA,CAACA,iBAAiBA,CAACA,sBAAcA,CAACA,QAAQA,CAACA,CAACA,CAACA;wBAE5DA,IAAIA,CAACA,MAAMA,CAACA,UAAUA,CAACA,UAAUA,EAAEA,IAAIA,CAACA,cAAcA,CAACA,CAACA;oBAC5DA,CAACA;oBAACA,IAAIA,CAACA,CAACA;wBACJA,IAAIA,CAACA,MAAMA,CAACA,iBAAiBA,CAACA,sBAAcA,CAACA,GAAGA,CAACA,CAACA;wBAClDA,IAAIA,CAACA,MAAMA,CAACA,UAAUA,CAACA,EAAEA,UAAUA,EAAEA,EAAEA,EAAEA,EAAEA,IAAIA,CAACA,cAAcA,CAACA,CAACA;oBACpEA,CAACA;gBACLA,CAACA;YACLA,CAACA;YAEOrB,8CAAyBA,GAAjCA;gBACIsB,IAAMA,iBAAiBA,GAAGA,EAAEA,CAACA;gBAC7BA,IAAMA,gBAAgBA,GAAGA,EAAEA,GAAGA,CAACA,CAACA;gBAChCA,EAAEA,CAACA,CAACA,CAACA,IAAIA,CAACA,sBAAsBA,CAACA,CAACA,CAACA;oBAC/BA,IAAIA,sBAAsBA,GAAGA,IAAIA,CAACA,GAAGA,CAACA,MAAMA,CAACA,GAAGA,CAACA,CAACA;oBAClDA,sBAAsBA,CAACA,MAAMA,CAACA,MAAMA,CAACA;yBAChCA,OAAOA,CAACA,UAAUA,CAACA,+BAA+BA,EAAEA,IAAIA,CAACA;yBACzDA,IAAIA,CAACA,GAAGA,EAAEA,2GAA2GA,CAACA,CAACA;oBAC5HA,IAAIA,CAACA,sBAAsBA,GAAGA,sBAAsBA,CAACA;gBACzDA,CAACA;gBACDA,IAAIA,QAAQA,GAAGA,IAAIA,CAACA,eAAeA,CAACA;gBACpCA,gEAAgEA;gBAChEA,IAAIA,UAAUA,GAAGA,IAAIA,CAACA,sBAAsBA,EAAEA,CAACA;gBAE/CA,IAAIA,6BAA6BA,GAAGA,CAACA,QAAQA,CAACA,MAAMA,GAAGA,CAACA,GAAGA,IAAIA,CAACA,MAAMA,CAACA,GAAGA,CAACA,GAAGA,CAACA,iBAAiBA,GAAGA,UAAUA,CAACA,CAACA;gBAC/GA,IAAIA,aAAaA,GAAGA,QAAQA,CAACA,KAAKA,GAAGA,CAACA,GAAGA,CAACA,gBAAgBA,GAAGA,UAAUA,CAACA,CAACA;gBAEzEA,IAAIA,CAACA,sBAAsBA,CAACA,IAAIA,CAACA,WAAWA,EAAEA,eAAOA,CAACA,iBAAiBA,CAACA,aAAaA,EAAEA,6BAA6BA,EAAEA,UAAUA,CAACA,CAACA,CAACA;YACvIA,CAACA;YAEOtB,yCAAoBA,GAA5BA;gBACIuB,IAAIA,MAAMA,GAAaA,EAAEA,CAACA;gBAC1BA,IAAIA,IAAIA,GAAGA,IAAIA,CAACA,IAAIA,CAACA,UAAUA,CAACA;gBAEhCA,EAAEA,CAACA,CAACA,IAAIA,CAACA,MAAMA,KAAKA,CAACA,CAACA,CAACA,CAACA;oBACpBA,IAAIA,CAACA,kBAAkBA,CAACA,kBAAkBA,GAAGA,CAACA,CAACA;oBAC/CA,IAAIA,CAACA,kBAAkBA,CAACA,WAAWA,GAAGA,EAAEA,CAACA;oBACzCA,MAAMA,CAACA;gBACXA,CAACA;gBAEDA,IAAIA,GAAGA,GAAGA,CAACA,CAACA;gBACZA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,IAAIA,GAAGA,IAAIA,CAACA,MAAMA,EAAEA,CAACA,GAAGA,IAAIA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;oBAChDA,GAAGA,IAAIA,IAAIA,CAACA,CAACA,CAACA,CAACA,IAAIA,CAACA,UAAUA,CAACA,CAACA,8BAA8BA;gBAClEA,CAACA;gBACDA,KAAKA,CAACA,MAAMA,CAACA,GAAGA,KAAKA,CAACA,EAAEA,qCAAqCA,CAACA,CAACA;gBAC/DA,IAAIA,CAACA,kBAAkBA,CAACA,kBAAkBA,GAAGA,GAAGA,GAAGA,GAAGA,CAACA,CAACA,8EAA8EA;gBAEtIA,IAAIA,YAAYA,GAAGA,CAACA,CAACA;gBACrBA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,IAAIA,GAAGA,IAAIA,CAACA,MAAMA,EAAEA,CAACA,GAAGA,IAAIA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;oBAChDA,IAAIA,aAAaA,GAAGA,IAAIA,CAACA,CAACA,CAACA,CAACA,IAAIA,CAACA,UAAUA,GAAGA,IAAIA,CAACA,kBAAkBA,CAACA,kBAAkBA,CAACA;oBACzFA,YAAYA,IAAIA,aAAaA,CAACA;oBAC9BA,MAAMA,CAACA,IAAIA,CAACA,CAACA,aAAaA,GAAGA,CAACA,CAACA,GAAGA,YAAYA,CAACA,CAACA;gBACpDA,CAACA;gBAEDA,IAAIA,CAACA,kBAAkBA,CAACA,WAAWA,GAAGA,MAAMA,CAACA;YACjDA,CAACA;YAEOvB,uCAAkBA,GAA1BA,UAA2BA,MAAoBA,EAAEA,eAA6BA,EAAEA,IAAeA;gBAC3FwB,4DAA4DA;gBAC5DA,EAAEA,CAACA,CAACA,IAAIA,CAACA,aAAaA,CAACA,CAACA,CAACA;oBACrBA,IAAIA,CAACA,kCAAkCA,CAACA,MAAMA,CAACA,CAACA;gBACpDA,CAACA;gBACDA,IAAIA,CAACA,EAAEA,CAACA,CAACA,IAAIA,CAACA,oBAAoBA,CAACA,CAACA,CAACA;oBACjCA,IAAIA,UAAUA,GAAGA,IAAIA,CAACA,UAAUA,CAACA,GAAGA,CAACA,UAACA,KAAyBA,IAAKA,OAAAA,KAAKA,CAACA,IAAIA,EAAVA,CAAUA,CAACA,CAACA;oBAChFA,IAAIA,eAAeA,GAAyBA;wBACxCA,YAAYA,EAAEA,IAAIA,CAACA,YAAYA;wBAC/BA,MAAMA,EAAEA,MAAMA;wBACdA,eAAeA,EAAEA,eAAeA;wBAChCA,cAAcA,EAAEA,IAAIA,CAACA,cAAcA;wBACnCA,MAAMA,EAAEA,IAAIA;wBACZA,aAAaA,EAAEA,IAAIA,CAACA,aAAaA;wBACjCA,GAAGA,EAAEA,IAAIA,CAACA,GAAGA;qBAChBA,CAACA;oBAEFA,IAAIA,CAACA,oBAAoBA,CAACA,IAAIA,CAACA,UAAUA,EAAEA,IAAIA,CAACA,QAAQA,EAAEA,eAAeA,CAACA,CAACA;gBAC/EA,CAACA;YACLA,CAACA;YAEMxB,iCAAYA,GAAnBA,UAAoBA,SAA0BA;gBAC1CyB,EAAEA,CAACA,CAACA,SAASA,CAACA,CAACA,CAACA;oBACZA,IAAIA,WAAWA,GAAGA,EAAEA,CAACA,MAAMA,CAACA,GAAGA,EAAEA;yBAC5BA,IAAIA,CAACA,IAAIA,CAACA;yBACVA,KAAKA,CAACA,UAACA,CAAiBA;wBACrBA,MAAMA,CAACA,CAACA,CAACA,UAAUA,CAACA;oBACxBA,CAACA,CAACA,CAACA;oBACPA,oCAAoCA;oBACpCA,IAAIA,gBAAgBA,GAAsBA,CAACA,EAAEA,KAAKA,EAAEA,SAASA,CAACA,KAAKA,EAAEA,KAAKA,EAAEA,SAASA,CAACA,KAAKA,EAAEA,IAAIA,EAAEA,kBAAUA,CAACA,GAAGA,EAAEA,QAAQA,EAAEA,SAASA,CAACA,QAAQA,EAAEA,QAAQA,EAAEA,SAASA,CAACA,QAAQA,EAAEA,CAACA,CAACA;oBACjLA,IAAIA,UAAUA,GAAeA,EAAEA,KAAKA,EAAEA,EAAEA,EAAEA,UAAUA,EAAEA,gBAAgBA,EAAEA,CAACA;oBACzEA,IAAIA,iBAAiBA,GAAGA,WAAWA,CAACA,SAASA,CAACA,kBAAkBA,CAACA,CAACA;oBAClEA,IAAIA,CAACA,cAAcA,CAACA;wBAChBA,qBAAqBA,EAAEA,SAASA,CAACA,kBAAkBA;wBACnDA,UAAUA,EAAEA,iBAAiBA;wBAC7BA,kBAAkBA,EAAEA,iBAAiBA,CAACA,GAAGA,CAACA,UAACA,KAAKA,IAAKA,OAAAA,KAAKA,CAACA,IAAIA,EAAVA,CAAUA,CAACA;wBAChEA,UAAUA,EAAEA,UAAUA;wBACtBA,aAAaA,EAAEA,KAAKA;wBACpBA,kBAAkBA,EAAEA,IAAIA,CAACA,IAAIA,CAACA,kBAAkBA;qBACnDA,EAAEA,KAAKA,CAACA,wBAAwBA,EAAEA,UAAUA,CAACA,0BAA0BA,CAACA,CAACA;gBAC9EA,CAACA;gBAACA,IAAIA,CAACA,CAACA;oBACJA,kDAAkDA;oBAClDA,IAAIA,CAACA,cAAcA,CAACA,IAAIA,CAACA,IAAIA,EAAEA,KAAKA,CAACA,wBAAwBA,EAAEA,UAAUA,CAACA,0BAA0BA,CAACA,CAACA;gBAC1GA,CAACA;YACLA,CAACA;YAEOzB,uDAAkCA,GAA1CA,UAA2CA,KAAmBA;gBAA9D0B,iBA0BCA;gBAzBGA,IAAIA,GAAGA,GAAGA,IAAIA,CAACA,GAAGA,CAACA;gBAEnBA,IAAIA,CAACA,kBAAkBA,CAACA,qCAAqCA,GAAGA,IAAIA,CAACA;gBACrEA,IAAIA,OAAOA,GAAGA,GAAGA,CAACA,IAAIA,EAAEA,CAACA,qBAAqBA,EAAEA,CAACA;gBACjDA,IAAIA,CAACA,kBAAkBA,CAACA,WAAWA,GAAGA,EAAEA,CAACA,EAAEA,OAAOA,CAACA,IAAIA,GAAGA,OAAOA,CAACA,KAAKA,GAAGA,CAACA,EAAEA,CAACA,EAAEA,OAAOA,CAACA,GAAGA,GAAGA,OAAOA,CAACA,MAAMA,GAAGA,CAACA,EAAEA,CAACA,CAACA,4BAA4BA;gBAChJA,IAAIA,CAACA,kBAAkBA,CAACA,wBAAwBA,GAAGA,CAACA,CAACA;gBACrDA,IAAIA,CAACA,kBAAkBA,CAACA,aAAaA,GAAGA,CAACA,CAACA;gBAE1CA,IAAIA,CAACA,oBAAoBA,EAAEA,CAACA;gBAE5BA,4IAA4IA;gBAC5IA,KAAKA,CAACA,EAAEA,CAACA,OAAOA,EAAEA,UAACA,CAAqBA,EAAEA,YAAoBA;oBAC1DA,EAAEA,CAACA,CAACA,EAAEA,CAACA,KAAKA,CAACA,gBAAgBA,CAACA;wBAACA,MAAMA,CAACA,CAACA,oDAAoDA;oBAC3FA,KAAIA,CAACA,yBAAyBA,CAACA,YAAYA,CAACA,CAACA;gBACjDA,CAACA,CAACA,CAACA;gBAEHA,sBAAsBA;gBACtBA,IAAIA,IAAIA,GAAGA,EAAEA,CAACA,QAAQA,CAACA,IAAIA,EAAEA;qBACxBA,MAAMA,CAACA,MAAMA,CAACA;qBACdA,EAAEA,CAACA,WAAWA,EAAEA,cAAMA,OAAAA,KAAIA,CAACA,oBAAoBA,EAAEA,EAA3BA,CAA2BA,CAACA;qBAClDA,EAAEA,CAACA,MAAMA,EAAEA,cAAMA,OAAAA,KAAIA,CAACA,mBAAmBA,EAAEA,EAA1BA,CAA0BA,CAACA;qBAC5CA,EAAEA,CAACA,SAASA,EAAEA,cAAMA,OAAAA,KAAIA,CAACA,kBAAkBA,EAAEA,EAAzBA,CAAyBA,CAACA,CAACA;gBACpDA,GAAGA;qBACEA,KAAKA,CAACA,cAAcA,EAAEA,MAAMA,CAACA;qBAC7BA,IAAIA,CAACA,IAAIA,CAACA,CAACA;YACpBA,CAACA;YAED1B;;;;eAIGA;YACKA,0CAAqBA,GAA7BA;gBACI2B,IAAIA,kBAAkBA,GAAGA,IAAIA,CAACA,kBAAkBA,CAACA;gBAEjDA,8EAA8EA;gBAC9EA,IAAIA,KAAKA,EAAEA,KAAKA,CAACA;gBACjBA,IAAIA,WAAWA,GAAQA,EAAEA,CAACA,KAAKA,CAACA,WAAWA,CAACA;gBAC5CA,uCAAuCA;gBACvCA,EAAEA,CAACA,CAACA,WAAWA,CAACA,IAAIA,CAACA,WAAWA,EAAEA,CAACA,OAAOA,CAACA,OAAOA,CAACA,KAAKA,CAACA,CAACA,CAACA,CAACA,CAACA;oBACzDA,EAAEA,CAACA,CAACA,WAAWA,CAACA,OAAOA,CAACA,MAAMA,KAAKA,CAACA,CAACA;wBAACA,MAAMA,CAACA,IAAIA,CAACA,CAACA,mEAAmEA;oBACtHA,yCAAyCA;oBACzCA,IAAIA,KAAKA,GAAGA,WAAWA,CAACA,OAAOA,CAACA,CAACA,CAACA,CAACA;oBACnCA,KAAKA,GAAGA,KAAKA,CAACA,KAAKA,CAACA;oBACpBA,KAAKA,GAAGA,KAAKA,CAACA,KAAKA,CAACA;gBACxBA,CAACA;gBAACA,IAAIA,CAACA,CAACA;oBACJA,KAAKA,GAAGA,WAAWA,CAACA,KAAKA,CAACA;oBAC1BA,KAAKA,GAAGA,WAAWA,CAACA,KAAKA,CAACA;gBAC9BA,CAACA;gBAEDA,4EAA4EA;gBAC5EA,IAAIA,mBAAmBA,GAAGA,EAAEA,CAACA,EAAEA,KAAKA,GAAGA,kBAAkBA,CAACA,WAAWA,CAACA,CAACA,EAAEA,CAACA,EAAEA,CAACA,KAAKA,GAAGA,kBAAkBA,CAACA,WAAWA,CAACA,CAACA,EAAEA,CAACA;gBACxHA,2EAA2EA;gBAC3EA,IAAIA,eAAeA,GAAGA,IAAIA,CAACA,KAAKA,CAACA,mBAAmBA,CAACA,CAACA,EAAEA,mBAAmBA,CAACA,CAACA,CAACA,GAAGA,GAAGA,GAAGA,IAAIA,CAACA,EAAEA,CAACA;gBAC/FA,MAAMA,CAACA,eAAeA,CAACA;YAC3BA,CAACA;YAEO3B,yCAAoBA,GAA5BA;gBACI4B,IAAIA,CAACA,kBAAkBA,CAACA,wBAAwBA,GAAGA,CAACA,CAACA;gBACrDA,IAAIA,CAACA,kBAAkBA,CAACA,iBAAiBA,GAAGA,IAAIA,CAACA,qBAAqBA,EAAEA,CAACA;YAC7EA,CAACA;YAEO5B,wCAAmBA,GAA3BA;gBACI6B,IAAIA,IAAIA,GAAGA,IAAIA,CAACA,IAAIA,CAACA,UAAUA,CAACA;gBAChCA,IAAIA,QAAQA,GAAGA,IAAIA,CAACA,eAAeA,CAACA;gBAEpCA,IAAIA,kBAAkBA,GAAGA,IAAIA,CAACA,kBAAkBA,CAACA;gBAEjDA,EAAEA,CAACA,CAACA,kBAAkBA,CAACA,qCAAqCA,KAAKA,IAAIA,CAACA,CAACA,CAACA;oBACpEA,wCAAwCA;oBACxCA,IAAIA,gBAAgBA,GAAGA,IAAIA,CAACA,qBAAqBA,EAAEA,CAACA;oBACpDA,EAAEA,CAACA,CAACA,CAACA,gBAAgBA,CAACA;wBAACA,MAAMA,CAACA,CAACA,uCAAuCA;oBACtEA,8CAA8CA;oBAC9CA,IAAIA,aAAaA,GAAGA,kBAAkBA,CAACA,iBAAiBA,GAAGA,gBAAgBA,CAACA;oBAE5EA,kBAAkBA,CAACA,wBAAwBA,IAAIA,aAAaA,CAACA;oBAC7DA,kBAAkBA,CAACA,iBAAiBA,GAAGA,gBAAgBA,CAACA;oBAExDA,+CAA+CA;oBAC/CA,kBAAkBA,CAACA,aAAaA,IAAIA,aAAaA,CAACA;oBAElDA,+CAA+CA;oBAC/CA,IAAIA,CAACA,GAAGA,CAACA,MAAMA,CAACA,GAAGA,CAACA;yBACfA,IAAIA,CAACA,WAAWA,EAAEA,eAAOA,CAACA,kBAAkBA,CAACA,QAAQA,CAACA,KAAKA,GAAGA,CAACA,EAAEA,QAAQA,CAACA,MAAMA,GAAGA,CAACA,EAAEA,CAACA,EAAEA,CAACA,EAAEA,IAAIA,CAACA,kBAAkBA,CAACA,aAAaA,CAACA,CAACA,CAACA;oBAEzIA,IAAIA,kBAAkBA,GAAGA,IAAIA,CAACA,CAACA,CAACA,CAACA,IAAIA,CAACA,UAAUA,GAAGA,kBAAkBA,CAACA,kBAAkBA,CAACA;oBACzFA,IAAIA,YAAYA,GAAGA,kBAAkBA,CAACA,aAAaA,IAAIA,CAACA,GAAGA,CAACA,kBAAkBA,CAACA,aAAaA,GAAGA,CAACA,CAACA,CAACA,GAAGA,GAAGA,GAAGA,CAACA,GAAGA,GAAGA,CAACA,kBAAkBA,CAACA,aAAaA,GAAGA,GAAGA,CAACA,CAACA,CAACA;oBAE5JA,kBAAkBA,CAACA,gBAAgBA,GAAGA,CAACA,CAACA;oBACxCA,0LAA0LA;oBAC1LA,kDAAkDA;oBAClDA,IAAIA,UAAUA,GAAGA,IAAIA,CAACA,MAAMA,CAACA;oBAC7BA,OAAOA,CAACA,kBAAkBA,CAACA,gBAAgBA,GAAGA,UAAUA,CAACA,IAAIA,CAACA,YAAYA,GAAGA,kBAAkBA,CAACA,EAAEA,CAACA;wBAC/FA,EAAEA,CAACA,CAACA,kBAAkBA,CAACA,gBAAgBA,GAAGA,CAACA,UAAUA,GAAGA,CAACA,CAACA,CAACA,CAACA,CAACA;4BACzDA,kBAAkBA,IAAIA,CAACA,IAAIA,CAACA,kBAAkBA,CAACA,gBAAgBA,GAAGA,CAACA,CAACA,CAACA,IAAIA,CAACA,UAAUA,GAAGA,kBAAkBA,CAACA,kBAAkBA,CAACA,CAACA;wBAClIA,CAACA;wBACDA,kBAAkBA,CAACA,gBAAgBA,EAAEA,CAACA;oBAC1CA,CAACA;oBAEDA,qDAAqDA;oBACrDA,EAAEA,CAACA,CAACA,kBAAkBA,CAACA,gBAAgBA,KAAKA,kBAAkBA,CAACA,iBAAiBA,CAACA,CAACA,CAACA;wBAC/EA,kBAAkBA,CAACA,iBAAiBA,CAACA,YAAYA,CAACA,kBAAkBA,CAACA,gBAAgBA,CAACA,CAACA;wBACvFA,iFAAiFA;wBACjFA,IAAIA,CAACA,GAAGA,CAACA,SAASA,CAACA,QAAQA,CAACA,CAACA,IAAIA,CAACA,SAASA,EAAEA,UAACA,CAACA,EAAEA,KAAKA;4BAClDA,MAAMA,CAACA,KAAKA,KAAKA,kBAAkBA,CAACA,gBAAgBA,GAAGA,UAAUA,CAACA,aAAaA,GAAGA,UAAUA,CAACA,sBAAsBA,CAACA;wBACxHA,CAACA,CAACA,CAACA;wBACHA,kBAAkBA,CAACA,iBAAiBA,GAAGA,kBAAkBA,CAACA,gBAAgBA,CAACA;oBAC/EA,CAACA;gBACLA,CAACA;YACLA,CAACA;YAEO7B,uCAAkBA,GAA1BA;gBACI8B,6FAA6FA;gBAC7FA,EAAEA,CAACA,CAACA,IAAIA,CAACA,kBAAkBA,CAACA,wBAAwBA,KAAKA,CAACA,CAACA,CAACA,CAACA;oBACzDA,IAAIA,CAACA,yBAAyBA,CAACA,IAAIA,CAACA,kBAAkBA,CAACA,gBAAgBA,CAACA,CAACA;oBACzEA,sCAAsCA;oBACtCA,EAAEA,CAACA,KAAKA,CAACA,WAAWA,CAACA,eAAeA,EAAEA,CAACA;gBAC3CA,CAACA;YACLA,CAACA;YAEO9B,yCAAoBA,GAA5BA,UAA6BA,IAAeA,EAAEA,QAAoBA;gBAApB+B,wBAAoBA,GAApBA,YAAoBA;gBAC9DA,wBAAwBA;gBACxBA,IAAIA,GAAGA,GAAGA,IAAIA,CAACA,GAAGA,CAACA;gBACnBA,IAAIA,GAAGA,GAAGA,IAAIA,CAACA,GAAGA,CAACA;gBACnBA,IAAIA,GAAGA,GAAGA,IAAIA,CAACA,GAAGA,CAACA;gBACnBA,IAAIA,GAAGA,GAAGA,IAAIA,CAACA,GAAGA,CAACA;gBACnBA,IAAIA,MAAMA,GAAGA,IAAIA,CAACA,MAAMA,CAACA;gBACzBA,IAAIA,cAAcA,GAAGA,IAAIA,CAACA,cAAcA,CAACA;gBACzCA,IAAIA,eAAeA,GAAGA,IAAIA,CAACA,eAAeA,CAACA;gBAE3CA,IAAIA,YAAYA,GAAGA,IAAIA,CAACA,GAAGA,CAACA,MAAMA,CAACA,SAASA,CAACA;qBACxCA,SAASA,CAACA,MAAMA,GAAGA,UAAUA,CAACA,UAAUA,CAACA,QAAQA,CAACA;qBAClDA,IAAIA,EAAEA,CAACA,GAAGA,CAACA,UAACA,CAAqBA,IAAKA,OAAAA,CAACA,CAACA,IAAIA,EAANA,CAAMA,CAACA,CAACA;gBAEnDA,EAAEA,CAACA,CAACA,YAAYA,CAACA,MAAMA,KAAKA,CAACA,CAACA,CAACA,CAACA;oBAC5BA,YAAYA,GAAGA,IAAIA,CAACA,qBAAqBA,CAACA;gBAC9CA,CAACA;gBAEDA,IAAIA,EAAEA,GAAGA,IAAIA,CAACA,aAAaA,CAACA,YAAYA,EAAEA,IAAIA,CAACA,qBAAqBA,CAACA,CAACA;gBAEtEA,IAAIA,KAAKA,GAAGA,GAAGA,CAACA,MAAMA,CAACA,SAASA,CAACA;qBAC5BA,SAASA,CAACA,MAAMA,GAAGA,UAAUA,CAACA,UAAUA,CAACA,QAAQA,CAACA;qBAClDA,IAAIA,CAACA,GAAGA,CAACA,IAAIA,CAACA,qBAAqBA,CAACA,EAAEA,GAAGA,CAACA,CAACA;gBAEhDA,KAAKA,CAACA,KAAKA,EAAEA;qBACRA,MAAMA,CAACA,MAAMA,CAACA;qBACdA,OAAOA,CAACA,UAAUA,CAACA,UAAUA,CAACA,KAAKA,EAAEA,IAAIA,CAACA;qBAC1CA,IAAIA,CAACA,UAAUA,CAACA,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAACA,CAACA;gBAE/CA,KAAKA,GAAGA,GAAGA,CAACA,MAAMA,CAACA,SAASA,CAACA;qBACxBA,SAASA,CAACA,MAAMA,GAAGA,UAAUA,CAACA,UAAUA,CAACA,QAAQA,CAACA;qBAClDA,IAAIA,CAACA,GAAGA,CAACA,EAAEA,CAACA,EAAEA,GAAGA,CAACA,CAACA;gBAExBA,IAAIA,WAAWA,GAAGA,MAAMA,GAAGA,eAAeA,CAACA;gBAC3CA,UAAUA,CAACA,aAAaA,CAACA,IAAIA,CAACA,UAAUA,CAACA,CAACA;gBAE1CA,KAAKA;qBACAA,KAAKA,CAACA,MAAMA,EAAEA,UAACA,CAAqBA,IAAKA,OAAAA,CAACA,CAACA,IAAIA,CAACA,KAAKA,EAAZA,CAAYA,CAACA;qBACtDA,KAAKA,CAACA,cAAcA,EAAEA,UAACA,CAAqBA,IAAKA,OAAAA,kBAAUA,CAACA,cAAcA,CAACA,CAACA,CAACA,IAAIA,CAACA,QAAQA,EAAEA,KAAKA,EAAEA,KAAKA,EAAEA,IAAIA,CAACA,aAAaA,CAACA,EAA5EA,CAA4EA,CAACA;qBAC9HA,KAAKA,CAACA,QAAQA,EAAEA,OAAOA,CAACA;qBACxBA,KAAKA,CAACA,kBAAkBA,EAAEA,UAACA,CAAqBA,IAAKA,OAAAA,UAAUA,CAACA,uBAAuBA,CAACA,MAAMA,EAAEA,UAAUA,CAACA,mBAAmBA,EAAEA,CAACA,EAAEA,eAAeA,CAACA,EAA9FA,CAA8FA,CAACA;qBACpJA,KAAKA,CAACA,cAAcA,EAAEA,UAACA,CAAqBA,IAAKA,OAAAA,CAACA,CAACA,IAAIA,CAACA,WAAWA,EAAlBA,CAAkBA,CAACA;qBACpEA,UAAUA,EAAEA,CAACA,QAAQA,CAACA,QAAQA,CAACA;qBAC/BA,SAASA,CAACA,GAAGA,EAAEA,UAAUA,CAACA;oBACvB,IAAI,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,EACpC,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,cAAc,GAAG,UAAU,CAAC,mBAAmB,EAC5D,MAAM,GAAG,UAAU,CAAC,mBAAmB,CAAC,CAAC;oBAEnD,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;oBAErB,MAAM,CAAC,UAAU,CAAC;wBACd,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAChE,CAAC,CAAC;gBACN,CAAC,CAACA,CAACA;gBAEPA,KAAKA,GAAGA,GAAGA,CAACA,MAAMA,CAACA,SAASA,CAACA;qBACxBA,SAASA,CAACA,MAAMA,GAAGA,UAAUA,CAACA,UAAUA,CAACA,QAAQA,CAACA;qBAClDA,IAAIA,CAACA,GAAGA,CAACA,IAAIA,CAACA,qBAAqBA,CAACA,EAAEA,GAAGA,CAACA,CAACA;gBAEhDA,KAAKA,CAACA,IAAIA,EAAEA;qBACPA,UAAUA,EAAEA;qBACZA,KAAKA,CAACA,QAAQA,CAACA;qBACfA,QAAQA,CAACA,CAACA,CAACA;qBACXA,MAAMA,EAAEA,CAACA;gBAEdA,mFAAmFA;gBACnFA,EAAEA,CAACA,CAACA,CAACA,IAAIA,CAACA,aAAaA,CAACA,CAACA,CAACA;oBACtBA,IAAIA,aAAaA,GAAGA,IAAIA,CAACA,kBAAkBA,CAACA;oBAC5CA,IAAIA,MAAMA,GAAYA,EAAEA,CAACA;oBACzBA,EAAEA,CAACA,CAACA,aAAaA,IAAIA,aAAaA,CAACA,IAAIA,CAACA,CAACA,CAACA;wBACtCA,MAAMA,GAAGA,IAAIA,CAACA,YAAYA,EAAEA,CAACA;oBACjCA,CAACA;oBACDA,yBAAiBA,CAACA,iBAAiBA,CAACA,IAAIA,CAACA,oBAAoBA,EAAEA,MAAMA,EAAEA,KAAKA,EAAEA,IAAIA,CAACA,CAACA;oBACpFA,yBAAiBA,CAACA,oBAAoBA,CAACA,IAAIA,CAACA,oBAAoBA,EAAEA,MAAMA,CAACA,CAACA;gBAC9EA,CAACA;gBACDA,IAAIA,eAAeA,GAAGA,SAASA,CAACA;gBAChCA,EAAEA,CAACA,CAACA,IAAIA,CAACA,aAAaA,CAACA,CAACA,CAACA;oBACrBA,iCAAiCA;oBACjCA,eAAeA,GAAGA,GAAGA;yBAChBA,MAAMA,CAACA,SAASA,CAACA;yBACjBA,SAASA,CAACA,MAAMA,GAAGA,UAAUA,CAACA,mBAAmBA,CAACA,QAAQA,CAACA;yBAC3DA,IAAIA,CAACA,GAAGA,CAACA,IAAIA,CAACA,qBAAqBA,CAACA,EAAEA,GAAGA,CAACA,CAACA;oBAEhDA,eAAeA;yBACVA,KAAKA,EAAEA;yBACPA,MAAMA,CAACA,MAAMA,CAACA;yBACdA,OAAOA,CAACA,UAAUA,CAACA,mBAAmBA,CAACA,KAAKA,EAAEA,IAAIA,CAACA;yBACnDA,IAAIA,CAACA,UAAUA,CAACA,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAACA,CAACA;oBAE/CA,UAAUA,CAACA,aAAaA,CAACA,IAAIA,CAACA,UAAUA,CAACA,CAACA;oBAE1CA,eAAeA;yBACVA,KAAKA,CAACA,MAAMA,EAAEA,UAACA,CAAqBA,IAAKA,OAAAA,CAACA,CAACA,IAAIA,CAACA,KAAKA,EAAZA,CAAYA,CAACA;yBACtDA,KAAKA,CAACA,cAAcA,EAAEA,GAAGA,CAACA;yBAC1BA,KAAKA,CAACA,QAAQA,EAAEA,OAAOA,CAACA;yBACxBA,KAAKA,CAACA,kBAAkBA,EAAEA,UAACA,CAAqBA,IAAKA,OAAAA,UAAUA,CAACA,uBAAuBA,CAACA,MAAMA,EAAEA,UAAUA,CAACA,mBAAmBA,EAAEA,CAACA,EAAEA,eAAeA,EAAEA,CAACA,CAACA,IAAIA,CAACA,cAAcA,CAACA,EAArHA,CAAqHA,CAACA;yBAC3KA,KAAKA,CAACA,cAAcA,EAAEA,UAACA,CAAqBA,IAAKA,OAAAA,CAACA,CAACA,IAAIA,CAACA,cAAcA,KAAKA,CAACA,GAAGA,CAACA,GAAGA,CAACA,CAACA,IAAIA,CAACA,WAAWA,EAApDA,CAAoDA,CAACA;yBACtGA,UAAUA,EAAEA,CAACA,QAAQA,CAACA,QAAQA,CAACA;yBAC/BA,SAASA,CAACA,GAAGA,EAAEA,UAAUA,CAAqBA;wBAC3C,IAAI,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,EACpC,CAAC,GAAG,EAAE,CAAC,WAAW,CACd,cAAc,GAAG,UAAU,CAAC,mBAAmB,EAC/C,UAAU,CAAC,kBAAkB,CAAC,MAAM,EAAE,eAAe,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;wBAEvF,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;wBAErB,MAAM,CAAC,UAAU,CAAC;4BACd,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;wBAChE,CAAC,CAAC;oBACN,CAAC,CAACA,CAACA;oBAEPA,eAAeA;yBACVA,IAAIA,EAAEA;yBACNA,UAAUA,EAAEA;yBACZA,KAAKA,CAACA,QAAQA,CAACA;yBACfA,QAAQA,CAACA,CAACA,CAACA;yBACXA,MAAMA,EAAEA,CAACA;gBAClBA,CAACA;gBACDA,IAAIA,CAACA,CAACA;oBACFA,GAAGA;yBACEA,SAASA,CAACA,MAAMA,GAAGA,UAAUA,CAACA,mBAAmBA,CAACA,QAAQA,CAACA;yBAC3DA,UAAUA,EAAEA;yBACZA,KAAKA,CAACA,QAAQA,CAACA;yBACfA,QAAQA,CAACA,CAACA,CAACA;yBACXA,MAAMA,EAAEA,CAACA;gBAClBA,CAACA;gBAEDA,IAAIA,CAACA,kBAAkBA,CAACA,KAAKA,EAAEA,eAAeA,EAAEA,IAAIA,CAACA,CAACA;gBAEtDA,EAAEA,CAACA,CAACA,IAAIA,CAACA,eAAeA,CAACA,CAACA,CAACA;oBACvBA,sBAAcA,CAACA,UAAUA,CAACA,KAAKA,EAAEA,UAACA,YAA0BA,IAAKA,OAAAA,YAAYA,CAACA,IAAIA,CAACA,IAAIA,CAACA,WAAWA,EAAlCA,CAAkCA,CAACA,CAACA;oBACrGA,EAAEA,CAACA,CAACA,IAAIA,CAACA,aAAaA,CAACA,CAACA,CAACA;wBACrBA,sBAAcA,CAACA,UAAUA,CAACA,eAAeA,EAAEA,UAACA,YAA0BA,IAAKA,OAAAA,YAAYA,CAACA,IAAIA,CAACA,IAAIA,CAACA,WAAWA,EAAlCA,CAAkCA,CAACA,CAACA;oBACnHA,CAACA;gBACLA,CAACA;gBAEDA,eAAOA,CAACA,6BAA6BA,CAACA,IAAIA,CAACA,OAAOA,CAACA,CAACA;gBAEpDA,EAAEA,CAACA,CAACA,IAAIA,CAACA,aAAaA,CAACA,CAACA,CAACA;oBACrBA,IAAIA,CAACA,yBAAyBA,EAAEA,CAACA;oBACjCA,IAAIA,CAACA,kBAAkBA,CAACA,iBAAiBA,CAACA,UAAUA,CAACA,IAAIA,CAACA,IAAIA,CAACA,qBAAqBA,CAACA,CAACA;oBACtFA,IAAIA,CAACA,yBAAyBA,CAACA,IAAIA,CAACA,kBAAkBA,CAACA,+BAA+BA,GAAGA,IAAIA,CAACA,kBAAkBA,CAACA,+BAA+BA,GAAGA,CAACA,CAACA,CAACA;gBAC1JA,CAACA;YACLA,CAACA;YAEa/B,4BAAiBA,GAA/BA,UAAgCA,eAA6BA,EAAEA,SAAoBA,EAAEA,MAAmBA,EAAEA,MAAyBA,EAAEA,MAAcA,EAAEA,YAAqBA,EAAEA,eAAuBA,EAAEA,YAAqBA;gBACtNgC,IAAIA,MAAMA,GAAGA,eAAeA,CAACA,MAAMA,CAACA,SAASA,CAACA;qBACzCA,SAASA,CAACA,MAAMA,GAAGA,UAAUA,CAACA,UAAUA,CAACA,QAAQA,CAACA;qBAClDA,IAAIA,CAACA,SAASA,CAACA,UAAUA,EAAEA,UAACA,CAAqBA,IAAKA,OAAAA,CAACA,CAACA,IAAIA,CAACA,QAAQA,CAACA,MAAMA,EAAEA,EAAxBA,CAAwBA,CAACA,CAACA;gBAErFA,MAAMA,CAACA,KAAKA,EAAEA;qBACTA,MAAMA,CAACA,MAAMA,CAACA;qBACdA,OAAOA,CAACA,UAAUA,CAACA,UAAUA,CAACA,KAAKA,EAAEA,IAAIA,CAACA,CAACA;gBAEhDA,UAAUA,CAACA,aAAaA,CAACA,SAASA,CAACA,UAAUA,CAACA,CAACA;gBAE/CA,MAAMA;qBACDA,KAAKA,CAACA,MAAMA,EAAEA,UAACA,CAAqBA,IAAKA,OAAAA,CAACA,CAACA,IAAIA,CAACA,KAAKA,EAAZA,CAAYA,CAACA;qBACtDA,KAAKA,CAACA,cAAcA,EAAEA,UAACA,CAAqBA,IAAKA,OAAAA,kBAAUA,CAACA,cAAcA,CAACA,CAACA,CAACA,IAAIA,CAACA,QAAQA,EAAEA,KAAKA,EAAEA,YAAYA,EAAEA,SAASA,CAACA,aAAaA,CAACA,EAAxFA,CAAwFA,CAACA;qBAC1IA,KAAKA,CAACA,kBAAkBA,EAAEA,UAACA,CAAqBA,IAAKA,OAAAA,UAAUA,CAACA,uBAAuBA,CAACA,MAAMA,EAAEA,UAAUA,CAACA,mBAAmBA,EAAEA,CAACA,EAAEA,eAAeA,CAACA,EAA9FA,CAA8FA,CAACA;qBACpJA,KAAKA,CAACA,cAAcA,EAAEA,UAACA,CAAqBA,IAAKA,OAAAA,CAACA,CAACA,IAAIA,CAACA,WAAWA,EAAlBA,CAAkBA,CAACA;qBACpEA,IAAIA,CAACA,MAAMA,CAACA,WAAWA,CAACA,CAACA;gBAE9BA,MAAMA,CAACA,IAAIA,EAAEA;qBACRA,MAAMA,EAAEA,CAACA;gBAEdA,MAAMA,CAACA,MAAMA,CAACA;YAClBA,CAACA;YAEahC,qCAA0BA,GAAxCA,UAAyCA,eAA6BA,EAAEA,SAAoBA,EAAEA,MAAmBA,EAAEA,MAAyBA,EAAEA,MAAcA,EAAEA,eAAuBA;gBACjLiC,IAAIA,MAAMA,GAAGA,eAAeA,CAACA,MAAMA,CAACA,SAASA,CAACA;qBACzCA,SAASA,CAACA,MAAMA,GAAGA,UAAUA,CAACA,mBAAmBA,CAACA,QAAQA,CAACA;qBAC3DA,IAAIA,CAACA,SAASA,CAACA,UAAUA,CAACA,MAAMA,CAACA,UAACA,KAAyBA,IAAKA,OAAAA,KAAKA,CAACA,IAAIA,CAACA,cAAcA,IAAIA,IAAIA,EAAjCA,CAAiCA,CAACA,EAAEA,UAACA,CAAqBA,IAAKA,OAAAA,CAACA,CAACA,IAAIA,CAACA,QAAQA,CAACA,MAAMA,EAAEA,EAAxBA,CAAwBA,CAACA,CAACA;gBAE9JA,MAAMA,CAACA,KAAKA,EAAEA;qBACTA,MAAMA,CAACA,MAAMA,CAACA;qBACdA,OAAOA,CAACA,UAAUA,CAACA,mBAAmBA,CAACA,KAAKA,EAAEA,IAAIA,CAACA;qBACnDA,IAAIA,CAACA,UAAUA,CAACA,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAACA,CAACA;gBAE/CA,UAAUA,CAACA,aAAaA,CAACA,SAASA,CAACA,UAAUA,CAACA,CAACA;gBAE/CA,MAAMA;qBACDA,KAAKA,CAACA,MAAMA,EAAEA,UAACA,CAAqBA,IAAKA,OAAAA,CAACA,CAACA,IAAIA,CAACA,KAAKA,EAAZA,CAAYA,CAACA;qBACtDA,KAAKA,CAACA,cAAcA,EAAEA,UAACA,CAAqBA,IAAKA,OAAAA,kBAAUA,CAACA,cAAcA,CAACA,CAACA,CAACA,IAAIA,CAACA,QAAQA,EAAEA,IAAIA,EAAEA,KAAKA,EAAEA,SAASA,CAACA,aAAaA,CAACA,EAAhFA,CAAgFA,CAACA;qBAClIA,KAAKA,CAACA,QAAQA,EAAEA,OAAOA,CAACA;qBACxBA,KAAKA,CAACA,kBAAkBA,EAAEA,UAACA,CAAqBA,IAAKA,OAAAA,UAAUA,CAACA,uBAAuBA,CAACA,MAAMA,EAAEA,UAAUA,CAACA,mBAAmBA,EAAEA,CAACA,EAAEA,eAAeA,EAAEA,CAACA,CAACA,IAAIA,CAACA,cAAcA,CAACA,EAArHA,CAAqHA,CAACA;qBAC3KA,KAAKA,CAACA,cAAcA,EAAEA,UAACA,CAAqBA,IAAKA,OAAAA,CAACA,CAACA,IAAIA,CAACA,cAAcA,KAAKA,CAACA,GAAGA,CAACA,GAAGA,CAACA,CAACA,IAAIA,CAACA,WAAWA,EAApDA,CAAoDA,CAACA;qBACtGA,IAAIA,CAACA,MAAMA,CAACA,oBAAoBA,CAACA,CAACA;gBAEvCA,MAAMA,CAACA,IAAIA,EAAEA;qBACRA,MAAMA,EAAEA,CAACA;gBAEdA,MAAMA,CAACA,MAAMA,CAACA;YAClBA,CAACA;YAEDjC;;cAEEA;YACYA,wBAAaA,GAA3BA,UAA4BA,UAAgCA;gBACxDkC,EAAEA,CAACA,CAACA,UAAUA,CAACA,MAAMA,GAAGA,CAACA,CAACA,CAACA,CAACA;oBACxBA,IAAIA,SAASA,GAAGA,UAAUA,CAACA,MAAMA,GAAGA,CAACA,CAACA;oBACtCA,UAAUA,CAACA,SAASA,CAACA,CAACA,IAAIA,CAACA,aAAaA,GAAGA,UAAUA,CAACA,SAASA,CAACA,CAACA,IAAIA,CAACA,KAAKA,KAAKA,UAAUA,CAACA,CAACA,CAACA,CAACA,IAAIA,CAACA,KAAKA,CAACA;gBAC7GA,CAACA;YACLA,CAACA;YAEalC,kCAAuBA,GAArCA,UAAsCA,MAAcA,EAAEA,mBAA2BA,EAAEA,CAAqBA,EAAEA,eAAuBA,EAAEA,cAA0BA;gBAA1BmC,8BAA0BA,GAA1BA,kBAA0BA;gBACzJA,IAAIA,WAAWA,GAAGA,MAAMA,GAAGA,mBAAmBA,GAAGA,cAAcA,CAACA;gBAChEA,IAAIA,QAAQA,GAAGA,CAACA,CAACA,CAACA,QAAQA,GAAGA,CAACA,CAACA,UAAUA,CAACA,GAAGA,WAAWA,CAACA;gBACzDA,IAAIA,oBAA4BA,CAACA;gBACjCA,IAAIA,iBAAyBA,CAACA;gBAE9BA,eAAeA;gBACfA,EAAEA,CAACA,CAACA,eAAeA,CAACA,CAACA,CAACA;oBAClBA,IAAIA,WAAWA,GAAGA,MAAMA,GAAGA,eAAeA,CAACA;oBAC3CA,IAAIA,WAAWA,GAAGA,cAAcA,GAAGA,MAAMA,GAAGA,CAACA,UAAUA,CAACA,mBAAmBA,GAAGA,eAAeA,CAACA,CAACA;oBAC/FA,IAAIA,aAAaA,GAAGA,CAACA,CAACA,CAACA,QAAQA,GAAGA,CAACA,CAACA,UAAUA,CAACA,GAAGA,WAAWA,CAACA;oBAC9DA,EAAEA,CAACA,CAACA,CAACA,CAACA,IAAIA,CAACA,cAAcA,CAACA;wBACtBA,QAAQA,GAAGA,CAACA,CAACA,CAACA,QAAQA,GAAGA,CAACA,CAACA,UAAUA,CAACA,GAAGA,CAACA,WAAWA,GAAGA,WAAWA,CAACA,CAACA;oBAEzEA,EAAEA,CAACA,CAACA,CAACA,CAACA,IAAIA,CAACA,aAAaA,CAACA,CAACA,CAACA;wBACvBA,oGAAoGA;wBACpGA,MAAMA,CAACA,CAACA,GAAGA,GAAGA,GAAGA,QAAQA,GAAGA,GAAGA,GAAGA,WAAWA,GAAGA,GAAGA,GAAGA,aAAaA,GAAGA,GAAGA,GAAGA,WAAWA,CAACA;oBAC5FA,CAACA;oBACDA,oBAAoBA,GAAGA,QAAQA,GAAGA,WAAWA,GAAGA,aAAaA,CAACA;oBAC9DA,iBAAiBA,GAAGA,WAAWA,CAACA;gBACpCA,CAACA;gBAGDA,IAAIA,CAACA,CAACA;oBACFA,EAAEA,CAACA,CAACA,CAACA,CAACA,IAAIA,CAACA,aAAaA,CAACA,CAACA,CAACA;wBACvBA,oGAAoGA;wBACpGA,oBAAoBA,GAAGA,QAAQA,CAACA;wBAChCA,iBAAiBA,GAAGA,WAAWA,GAAGA,CAACA,CAACA;oBACxCA,CAACA;oBACDA,IAAIA,CAACA,CAACA;wBACFA,oBAAoBA,GAAGA,QAAQA,GAAGA,WAAWA,CAACA;wBAC9CA,iBAAiBA,GAAGA,WAAWA,CAACA;oBACpCA,CAACA;gBACLA,CAACA;gBAEDA,MAAMA,CAACA,CAACA,GAAGA,GAAGA,GAAGA,oBAAoBA,GAAGA,GAAGA,GAAGA,iBAAiBA,CAACA;YACpEA,CAACA;YAEMnC,qCAAgBA,GAAvBA;gBACIoC,EAAEA,CAACA,CAACA,IAAIA,CAACA,oBAAoBA,CAACA;oBAC1BA,IAAIA,CAACA,oBAAoBA,CAACA,cAAcA,EAAEA,CAACA;YACnDA,CAACA;YAEapC,oBAASA,GAAvBA,UAAwBA,MAAcA,EAAEA,eAAuBA,EAAEA,QAAmBA,EAAEA,aAAuCA;gBACzHqC,IAAIA,WAAWA,GAAGA,MAAMA,GAAGA,eAAeA,CAACA;gBAC3CA,IAAIA,GAAGA,GAAGA,EAAEA,CAACA,GAAGA,CAACA,GAAGA,EAAEA,CAACA,WAAWA,CAACA,WAAWA,CAACA,CAACA;gBAChDA,IAAIA,aAAaA,GAAGA,GAAGA,CAACA,WAAWA,CAACA,MAAMA,GAAGA,UAAUA,CAACA,mBAAmBA,CAACA,CAACA;gBAC7EA,IAAIA,QAAQA,GAAGA,cAAcA,CAACA,SAASA,CAACA,aAAaA,CAACA,QAAQA,CAACA,CAACA;gBAChEA,MAAMA,CAACA;oBACHA,QAAQA,EAAEA,QAAQA;oBAClBA,WAAWA,EAAEA;wBACTA,CAACA,EAAEA,UAACA,CAAqBA;4BACrBA,MAAMA,CAACA,aAAaA,CAACA,CAACA,CAACA,CAACA;wBAC5BA,CAACA;qBACJA;oBACDA,oBAAoBA,EAAEA;wBAClBA,CAACA,EAAEA,UAACA,CAAqBA;4BACrBA,IAAIA,YAAYA,GAAGA,GAAGA,CAACA,WAAWA,CAACA,UAAUA,CAACA,kBAAkBA,CAACA,MAAMA,EAAEA,eAAeA,EAAEA,CAACA,CAACA,IAAIA,CAACA,cAAcA,CAACA,CAACA,CAACA;4BAClHA,MAAMA,CAACA,YAAYA,CAACA,CAACA,CAACA,CAACA;wBAC3BA,CAACA;qBACJA;oBACDA,eAAeA,EAAEA;wBACbA,CAACA,EAAEA,UAACA,CAAqBA;4BACrBA,IAAIA,kBAAkBA,GAAGA,GAAGA,CAACA,WAAWA,CAACA,WAAWA,IAAIA,UAAUA,CAACA,kBAAkBA,CAACA,CAACA;4BACvFA,MAAMA,CAACA,kBAAkBA,CAACA,CAACA,CAACA,CAACA;wBACjCA,CAACA;qBACJA;iBACJA,CAACA;YACNA,CAACA;YAEcrC,6BAAkBA,GAAjCA,UAAkCA,MAAcA,EAAEA,eAAuBA,EAAEA,cAAsBA;gBAC7FsC,IAAIA,WAAWA,GAAGA,MAAMA,GAAGA,eAAeA,CAACA;gBAC3CA,MAAMA,CAACA,WAAWA,GAAGA,cAAcA,GAAGA,MAAMA,GAAGA,CAACA,UAAUA,CAACA,mBAAmBA,GAAGA,eAAeA,CAACA,CAACA;YACtGA,CAACA;YAEatC,6BAAkBA,GAAhCA,UAAiCA,UAA4BA,EAAEA,QAAgBA,EAAEA,QAAmBA;gBAChGuC,IAAIA,eAAeA,GAAGA,IAAIA,CAACA,GAAGA,CAACA,QAAQA,CAACA,KAAKA,EAAEA,QAAQA,CAACA,MAAMA,CAACA,GAAGA,CAACA,CAACA;gBACpEA,mFAAmFA;gBACnFA,IAAIA,SAASA,GAAGA,IAAIA,CAACA,0BAA0BA,GAAGA,CAACA,eAAeA,GAAGA,UAAUA,CAACA,KAAKA,CAACA,CAACA;gBACvFA,IAAIA,aAAaA,GAAGA,SAASA,GAAGA,QAAQA,CAACA;gBACzCA,IAAIA,gBAAgBA,GAAqBA,EAAEA,CAACA;gBAC5CA,IAAIA,cAAsBA,CAACA;gBAC3BA,GAAGA,CAACA,CAAkBA,UAAUA,EAA3BA,sBAAaA,EAAbA,IAA2BA,CAACA;oBAA5BA,IAAIA,SAASA,GAAIA,UAAUA,IAAdA;oBACdA,EAAEA,CAACA,CAACA,SAASA,CAACA,OAAOA,IAAIA,aAAaA,CAACA,CAACA,CAACA;wBACrCA,0BAA0BA;wBAC1BA,SAASA,CAACA,WAAWA,GAAGA,cAAcA,KAAKA,SAASA,CAACA,KAAKA,GAAGA,CAACA,GAAGA,CAACA,CAACA;wBACnEA,cAAcA,GAAGA,SAASA,CAACA,KAAKA,CAACA;wBACjCA,gBAAgBA,CAACA,IAAIA,CAACA,SAASA,CAACA,CAACA;oBACrCA,CAACA;iBACJA;gBAEDA,MAAMA,CAACA,gBAAgBA,CAACA;YAC5BA,CAACA;YAnqCcvC,oBAASA,GAAGA,YAAYA,CAACA;YACzBA,qCAA0BA,GAAGA,aAAaA,CAACA;YAC3CA,0CAA+BA,GAAGA,kBAAkBA,CAACA;YACrDA,qCAA0BA,GAAGA,IAAIA,CAACA;YAClCA,8BAAmBA,GAAGA,GAAGA,CAACA;YAC1BA,8BAAmBA,GAAGA,GAAGA,CAACA;YAC1BA,wBAAaA,GAAGA,GAAGA,CAACA;YACpBA,iCAAsBA,GAAGA,GAAGA,CAACA;YAC7BA,iCAAsBA,GAAWA,IAAIA,CAACA;YACtCA,qCAA0BA,GAAWA,CAACA,CAACA;YACvCA,qBAAUA,GAAqBA,sBAAsBA,CAACA,OAAOA,CAACA,CAACA;YAC/DA,8BAAmBA,GAAqBA,sBAAsBA,CAACA,iBAAiBA,CAACA,CAACA;YAClFA,gBAAKA,GAAGA,CAACA,GAAGA,IAAIA,CAACA,EAAEA,CAACA;YAErBA,2CAAgCA,GAAGA,EAAEA,CAACA;YACtCA,6BAAkBA,GAAGA,WAAWA,CAACA,CAACA,uFAAuFA;YACzHA,0BAAeA,GAAGA,GAAGA,CAACA;YAopCxCA,iBAACA;QAADA,CArqCAt4F,AAqqCCs4F,IAAAt4F;QArqCYA,kBAAUA,aAqqCtBA,CAAAA;QAEDA;;;;;UAKEA;QACFA;YA+BI86F,qCAAYA,UAAsBA,EAAEA,eAA6BA,EAAEA,MAAyBA,EAAEA,iBAAoCA,EAAEA,QAA6BA;gBAC7JC,IAAIA,CAACA,qBAAqBA,GAAGA,eAAeA,CAACA;gBAC7CA,IAAIA,CAACA,MAAMA,GAAGA,MAAMA,CAACA;gBACrBA,IAAIA,CAACA,UAAUA,GAAGA,UAAUA,CAACA;gBAC7BA,IAAIA,CAACA,iBAAiBA,GAAGA,iBAAiBA,CAACA;gBAC3CA,IAAIA,CAACA,oBAAoBA,GAAGA,EAAEA,CAACA;gBAE/BA,IAAIA,CAACA,iCAAiCA,GAAGA,QAAQA,IAAIA,QAAQA,CAACA,iCAAiCA,GAAGA,QAAQA,CAACA,iCAAiCA,GAAGA,CAACA,CAACA;YACrJA,CAACA;YAEMD,gDAAUA,GAAjBA,UAAkBA,IAAsBA;gBAAxCE,iBAmFCA;gBAlFGA,IAAIA,CAACA,IAAIA,GAAGA,IAAIA,CAACA;gBAEjBA,IAAIA,CAACA,0BAA0BA,GAAGA,IAAIA,CAACA,MAAMA,CAACA;gBAC9CA,IAAIA,CAACA,YAAYA,GAAGA,CAACA,CAACA;gBACtBA,IAAIA,CAACA,aAAaA,GAAGA,CAACA,CAACA;gBACvBA,IAAIA,CAACA,cAAcA,GAAGA,IAAIA,CAACA,MAAMA,GAAGA,CAACA,CAACA;gBAEtCA,EAAEA,CAACA,CAACA,IAAIA,CAACA,qBAAqBA,CAACA,MAAMA,CAACA,2BAA2BA,CAACA,uBAAuBA,CAACA,CAACA,KAAKA,EAAEA,CAACA,CAACA,CAACA;oBACjGA,IAAIA,CAACA,eAAeA,GAAGA,IAAIA,CAACA,qBAAqBA,CAACA,MAAMA,CAACA,KAAKA,CAACA,CAACA,OAAOA,CAACA,2BAA2BA,CAACA,wBAAwBA,EAAEA,IAAIA,CAACA,CAACA;gBACxIA,CAACA;gBAEDA,IAAIA,WAAWA,GAAGA,IAAIA,CAACA,eAAeA,CAACA,SAASA,CAACA,2BAA2BA,CAACA,kBAAkBA,CAACA,CAACA,IAAIA,CAACA,IAAIA,CAACA,CAACA;gBAC5GA,IAAIA,oBAAoBA,GAAGA,IAAIA,CAACA,oBAAoBA,GAAGA,IAAIA,CAACA,eAAeA,CAACA,IAAIA,EAAEA,CAACA,qBAAqBA,EAAEA,CAACA,KAAKA,CAACA;gBACjHA,IAAIA,cAAcA,GAAGA,oBAAoBA,GAAGA,CAACA,GAAGA,CAACA,oBAAoBA,GAAGA,GAAGA,GAAGA,CAACA,CAACA,GAAGA,2BAA2BA,CAACA,UAAUA,CAACA;gBAC1HA,IAAIA,KAAKA,GAAGA,cAAcA,CAACA;gBAC3BA,IAAIA,CAACA,cAAcA,GAAGA,cAAcA,CAACA;gBAErCA,qGAAqGA;gBACrGA,IAAIA,gBAAgBA,GAAGA,UAACA,OAAeA,EAAEA,KAAqBA;oBAC1DA,2BAA2BA;oBAC3BA,OAAOA;yBACFA,IAAIA,CAACA,mBAAmBA,EAAEA,KAAKA,CAACA,KAAKA,CAACA,CAACA,6BAA6BA;yBACpEA,GAAGA,CAACA;wBACDA,UAAUA,EAAEA,UAAUA;wBACtBA,MAAMA,EAAEA,KAAKA;qBAEhBA,CAACA,CAACA;oBAEPA,yCAAyCA;oBACzCA,IAAIA,YAAYA,GAAGA,sBAAcA,CAACA,MAAMA,CAACA,KAAKA,CAACA,KAAKA,CAACA,CAACA;oBACtDA,IAAIA,SAASA,GAAGA,sBAAcA,CAACA,MAAMA,CAACA,KAAKA,CAACA,OAAOA,EAAEA,KAAKA,CAACA,aAAaA,CAACA,CAACA;oBAC1EA,IAAIA,cAAcA,GAAGA,sBAAcA,CAACA,MAAMA,CAACA,KAAKA,CAACA,UAAUA,EAAEA,uBAAuBA,CAACA,CAACA;oBACtFA,IAAIA,SAASA,GAAGA,KAAKA,CAACA,KAAKA,CAACA;oBAE5BA,4CAA4CA;oBAC5CA,IAAIA,aAAaA,GAAGA,2BAA2BA,CAACA,yBAAyBA,CAACA,2BAA2BA,CAACA,wBAAwBA,EAAEA,SAASA,EAAEA,EAAEA,CAACA,CAACA;oBAC/IA,IAAIA,gBAAgBA,GAAGA,2BAA2BA,CAACA,yBAAyBA,CAACA,2BAA2BA,CAACA,2BAA2BA,EAAEA,YAAYA,EAAEA,EAAEA,CAACA,CAACA;oBACxJA,IAAIA,kBAAkBA,GAAGA,2BAA2BA,CAACA,yBAAyBA,CAACA,2BAA2BA,CAACA,6BAA6BA,EAAEA,cAAcA,EAAEA,EAAEA,CAACA,CAACA;oBAE9JA,8EAA8EA;oBAC9EA,IAAIA,cAAcA,GAAGA,2BAA2BA,CAACA,SAASA,CAACA,aAAaA,CAACA,CAACA;oBAC1EA,IAAIA,iBAAiBA,GAAGA,2BAA2BA,CAACA,SAASA,CAACA,gBAAgBA,CAACA,CAACA;oBAChFA,IAAIA,mBAAmBA,GAAGA,2BAA2BA,CAACA,SAASA,CAACA,kBAAkBA,CAACA,CAACA;oBACpFA,IAAIA,qBAAqBA,GAAGA,2BAA2BA,CAACA,aAAaA,CAACA,cAAcA,EAAEA,iBAAiBA,EAAEA,mBAAmBA,CAACA,CAACA;oBAC9HA,OAAOA,CAACA,GAAGA,CAACA,OAAOA,EAAEA,qBAAqBA,CAACA,CAACA;oBAE5CA,uEAAuEA;oBACvEA,IAAIA,YAAYA,GAAGA,UAACA,SAAiBA;wBACjCA,MAAMA,CAACA,qBAAqBA,GAAGA,SAASA,GAAGA,CAACA,GAAGA,CAACA,qBAAqBA,GAAGA,SAASA,CAACA,GAAGA,CAACA,GAAGA,CAACA,CAACA;oBAC/FA,CAACA,CAACA;oBACFA,IAAIA,eAAeA,GAAGA,YAAYA,CAACA,cAAcA,CAACA,CAACA;oBACnDA,IAAIA,kBAAkBA,GAAGA,YAAYA,CAACA,iBAAiBA,CAACA,CAACA;oBACzDA,IAAIA,oBAAoBA,GAAGA,YAAYA,CAACA,mBAAmBA,CAACA,CAACA;oBAE7DA,uGAAuGA;oBACvGA,2BAA2BA,CAACA,oBAAoBA,CAACA,gBAAgBA,EAAEA,kBAAkBA,CAACA,CAACA;oBACvFA,2BAA2BA,CAACA,oBAAoBA,CAACA,aAAaA,EAAEA,eAAeA,CAACA,CAACA;oBACjFA,2BAA2BA,CAACA,oBAAoBA,CAACA,kBAAkBA,EAAEA,oBAAoBA,CAACA,CAACA,GAAGA,CAACA,OAAOA,EAAEA,SAASA,CAACA,CAACA;oBAEnHA,OAAOA,CAACA,MAAMA,CAACA,gBAAgBA,CAACA,CAACA;oBACjCA,OAAOA,CAACA,MAAMA,CAACA,kBAAkBA,CAACA,CAACA;oBACnCA,OAAOA,CAACA,MAAMA,CAACA,aAAaA,CAACA,CAACA;oBAE9BA,KAAIA,CAACA,oBAAoBA,CAACA,IAAIA,CAACA;wBAC3BA,MAAMA,EAAEA,KAAKA;wBACbA,QAAQA,EAAEA,qBAAqBA;qBAClCA,CAACA,CAACA;oBACHA,KAAKA,IAAIA,qBAAqBA,GAAGA,2BAA2BA,CAACA,UAAUA,CAACA;gBAC5EA,CAACA,CAACA;gBAEFA,0BAA0BA;gBAC1BA,WAAWA,CAACA,KAAKA,EAAEA;qBACdA,MAAMA,CAACA,KAAKA,CAACA;qBACbA,OAAOA,CAACA,2BAA2BA,CAACA,mBAAmBA,EAAEA,IAAIA,CAACA;qBAC9DA,IAAIA,CAACA,UAAUA,CAAiBA;oBAC7B,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;gBACjC,CAAC,CAACA,CAACA;gBAEPA,WAAWA,CAACA,IAAIA,EAAEA,CAACA,MAAMA,EAAEA,CAACA;gBAE5BA,oCAAoCA;gBACpCA,IAAIA,CAACA,kBAAkBA,EAAEA,CAACA;YAC9BA,CAACA;YAEMF,kDAAYA,GAAnBA,UAAoBA,UAAUA;gBAA9BG,iBA4BCA;gBA3BGA,EAAEA,CAACA,CAACA,IAAIA,CAACA,0BAA0BA,IAAIA,CAACA,CAACA;oBAACA,MAAMA,CAACA,CAACA,uDAAuDA;gBACzGA,IAAIA,oBAAoBA,GAAGA,IAAIA,CAACA,oBAAoBA,CAACA;gBAErDA,IAAIA,CAACA,YAAYA,GAAGA,UAAUA,CAACA;gBAC/BA,mFAAmFA;gBACnFA,IAAIA,CAACA,iBAAiBA,CAACA,UAAUA,CAACA,CAACA;gBACnCA,IAAIA,iCAAiCA,GAAGA,IAAIA,CAACA,iCAAiCA,CAACA;gBAC/EA,yEAAyEA;gBACzEA,IAAIA,WAAWA,GAAGA,CAACA,IAAIA,CAACA,oBAAoBA,CAACA,UAAUA,CAACA,CAACA,MAAMA,GAAGA,CAACA,IAAIA,CAACA,oBAAoBA,CAACA,UAAUA,CAACA,CAACA,QAAQA,GAAGA,CAACA,CAACA,GAAGA,CAACA,oBAAoBA,GAAGA,CAACA,CAACA,CAACA,GAAGA,CAACA,CAACA,CAACA,CAACA,CAACA;gBAC5JA,IAAIA,CAACA,eAAeA;qBACfA,UAAUA,EAAEA;qBACZA,UAAUA,CAACA,mBAAmBA,EAAEA,UAACA,CAAMA,EAAEA,CAASA,EAAEA,CAAMA;oBACvDA,MAAMA,CAACA,EAAEA,CAACA,WAAWA,CACjBA,eAAOA,CAACA,mBAAmBA,CAACA,KAAIA,CAACA,cAAcA,EAAEA,CAACA,CAACA,EACnDA,eAAOA,CAACA,mBAAmBA,CAACA,WAAWA,EAAEA,CAACA,CAACA,CAACA,CAACA;gBACrDA,CAACA,CAACA;qBACDA,UAAUA,CAACA,WAAWA,EAAEA,UAACA,CAAMA,EAAEA,CAASA,EAAEA,CAAMA;oBAC/CA,MAAMA,CAACA,EAAEA,CAACA,WAAWA,CACjBA,eAAOA,CAACA,mBAAmBA,CAACA,KAAIA,CAACA,cAAcA,EAAEA,CAACA,CAACA,EACnDA,eAAOA,CAACA,mBAAmBA,CAACA,WAAWA,EAAEA,CAACA,CAACA,CAACA,CAACA;gBACrDA,CAACA,CAACA;qBACDA,QAAQA,CAACA,iCAAiCA,CAACA;qBAC3CA,IAAIA,CAACA,QAAQA,CAACA;qBACdA,IAAIA,CAACA,KAAKA,EAAEA;oBACTA,KAAIA,CAACA,cAAcA,GAAGA,WAAWA,CAACA;gBACtCA,CAACA,CAACA,CAACA;gBACPA,eAAOA,CAACA,6BAA6BA,CAACA,IAAIA,CAACA,iBAAiBA,CAACA,CAACA;YAClEA,CAACA;YAEOH,wDAAkBA,GAA1BA;gBAAAI,iBA8BCA;gBA7BGA,IAAIA,SAASA,GAAGA,CAACA,CAACA,CAACA,kCAAkCA;gBACrDA,IAAIA,UAAUA,GAAGA,KAAKA,CAACA,CAACA,qGAAqGA;gBAE7HA,IAAIA,SAASA,GAAGA;oBACZA,SAASA,GAAGA,CAACA,CAACA,CAACA,wBAAwBA;oBACvCA,UAAUA,GAAGA,KAAKA,CAACA;gBACvBA,CAACA,CAACA;gBAEFA,IAAIA,QAAQA,GAAGA;oBACXA,SAASA,IAAIA,EAAEA,CAACA,KAAKA,CAACA,EAAEA,CAACA;oBACzBA,wEAAwEA;oBACxEA,EAAEA,CAACA,CAACA,UAAUA,IAAIA,IAAIA,CAACA,GAAGA,CAACA,SAASA,CAACA,GAAGA,2BAA2BA,CAACA,cAAcA,CAACA;wBAACA,MAAMA,CAACA;oBAE3FA,IAAIA,iBAAiBA,GAAGA,CAACA,SAASA,GAAGA,CAACA,CAACA,CAACA;oBACxCA,KAAIA,CAACA,UAAUA,CAACA,iBAAiBA,CAACA,CAACA;oBACnCA,UAAUA,GAAGA,IAAIA,CAACA;gBACtBA,CAACA,CAACA;gBAEFA,IAAIA,IAAIA,GAAGA,EAAEA,CAACA,QAAQA,CAACA,IAAIA,EAAEA;qBACxBA,MAAMA,CAACA,MAAMA,CAACA;qBACdA,EAAEA,CAACA,MAAMA,EAAEA,QAAQA,CAACA;qBACpBA,EAAEA,CAACA,WAAWA,EAAEA,SAASA,CAACA,CAACA;gBAEhCA,IAAIA,CAACA,eAAeA;qBACfA,KAAKA,CAACA;oBACHA,cAAcA,EAAEA,MAAMA;oBACtBA,QAAQA,EAAEA,SAASA;iBACtBA,CAACA;qBACDA,IAAIA,CAACA,IAAIA,CAACA,CAACA;YACpBA,CAACA;YAEOJ,gDAAUA,GAAlBA,UAAmBA,iBAA0BA;gBAEzCK,EAAEA,CAACA,CAACA,IAAIA,CAACA,0BAA0BA,GAAGA,CAACA,2BAA2BA,CAACA,6BAA6BA,GAAGA,CAACA,CAACA,CAACA,CAACA,CAACA;oBACpGA,IAAIA,CAACA,YAAYA,GAAGA,IAAIA,CAACA,sBAAsBA,CAACA,iBAAiBA,CAACA,CAACA;gBACvEA,CAACA;gBAACA,IAAIA,CAACA,CAACA;oBACJA,EAAEA,CAACA,CAACA,IAAIA,CAACA,6BAA6BA,CAACA,iBAAiBA,CAACA,CAACA,CAACA,CAACA;wBACxDA,EAAEA,CAACA,CAACA,iBAAiBA,CAACA,CAACA,CAACA;4BACpBA,IAAIA,CAACA,YAAYA,EAAEA,CAACA;wBACxBA,CAACA;wBAACA,IAAIA,CAACA,CAACA;4BACJA,IAAIA,CAACA,YAAYA,EAAEA,CAACA;wBACxBA,CAACA;oBACLA,CAACA;gBACLA,CAACA;gBACDA,IAAIA,CAACA,UAAUA,CAACA,yBAAyBA,CAACA,IAAIA,CAACA,YAAYA,CAACA,CAACA;YACjEA,CAACA;YAEOL,mEAA6BA,GAArCA,UAAsCA,iBAA0BA;gBAC5DM,EAAEA,CAACA,CAACA,CAACA,IAAIA,CAACA,YAAYA,KAAKA,CAACA,IAAIA,CAACA,iBAAiBA,CAACA,IAAIA,CAACA,IAAIA,CAACA,YAAYA,KAAKA,CAACA,IAAIA,CAACA,0BAA0BA,GAAGA,CAACA,CAACA,IAAIA,iBAAiBA,CAACA,CAACA,CAACA,CAACA;oBACxIA,MAAMA,CAACA,KAAKA,CAACA;gBACjBA,CAACA;gBACDA,MAAMA,CAACA,IAAIA,CAACA;YAChBA,CAACA;YAEON,4DAAsBA,GAA9BA,UAA+BA,iBAA0BA;gBACrDO,IAAIA,OAAOA,GAAGA,IAAIA,CAACA,IAAIA,CAACA,MAAMA,CAACA;gBAC/BA,IAAIA,KAAKA,GAAGA,iBAAiBA,GAAGA,CAACA,GAAGA,CAACA,CAACA,CAACA;gBACvCA,IAAIA,QAAQA,GAAGA,CAACA,IAAIA,CAACA,YAAYA,GAAGA,KAAKA,CAACA,GAAGA,CAACA,OAAOA,IAAIA,CAACA,CAACA,CAACA,CAACA,yDAAyDA;gBACtHA,MAAMA,CAACA,CAACA,QAAQA,GAAGA,CAACA,CAACA,GAAGA,QAAQA,GAAGA,OAAOA,GAAGA,QAAQA,CAACA;YAC1DA,CAACA;YAEOP,6DAAuBA,GAA/BA,UAAgCA,eAAwBA,EAAEA,gCAAwCA;gBAC9FQ,IAAIA,gBAAgBA,GAAGA,CAACA,CAACA,IAAIA,CAACA,eAAeA,CAACA,CAACA,CAACA,CAACA,CAACA;gBAElDA,EAAEA,CAACA,CAACA,eAAeA,CAACA,CAACA,CAACA;oBAClBA,IAAIA,YAAYA,GAAGA,gBAAgBA,CAACA,IAAIA,CAACA,qBAAqBA,GAAGA,IAAIA,CAACA,aAAaA,GAAGA,GAAGA,CAACA,CAACA;oBAC3FA,YAAYA,CAACA,MAAMA,EAAEA,CAACA,WAAWA,CAACA,gBAAgBA,CAACA,IAAIA,CAACA,qBAAqBA,GAAGA,IAAIA,CAACA,cAAcA,GAAGA,GAAGA,CAACA,CAACA,CAACA;oBAC5GA,IAAIA,IAAIA,GAAGA,IAAIA,CAACA,oBAAoBA,CAACA,IAAIA,CAACA,cAAcA,CAACA,CAACA,MAAMA,GAAGA,IAAIA,CAACA,oBAAoBA,CAACA,IAAIA,CAACA,cAAcA,CAACA,CAACA,QAAQA,GAAGA,2BAA2BA,CAACA,UAAUA,CAACA;oBACpKA,IAAIA,CAACA,oBAAoBA,CAACA,IAAIA,CAACA,aAAaA,CAACA,CAACA,MAAMA,GAAGA,IAAIA,CAACA;oBAC5DA,YAAYA,CAACA,GAAGA,CAACA,MAAMA,EAAEA,IAAIA,CAACA,CAACA;oBAE/BA,IAAIA,CAACA,cAAcA,GAAGA,IAAIA,CAACA,aAAaA,CAACA;oBACzCA,IAAIA,CAACA,aAAaA,GAAGA,CAACA,IAAIA,CAACA,aAAaA,GAAGA,CAACA,CAACA,GAAGA,IAAIA,CAACA,IAAIA,CAACA,MAAMA,CAACA;gBACrEA,CAACA;gBAACA,IAAIA,CAACA,CAACA;oBACJA,IAAIA,WAAWA,GAAGA,gBAAgBA,CAACA,IAAIA,CAACA,qBAAqBA,GAAGA,IAAIA,CAACA,cAAcA,GAAGA,GAAGA,CAACA,CAACA;oBAC3FA,WAAWA,CAACA,MAAMA,EAAEA,CAACA,YAAYA,CAACA,gBAAgBA,CAACA,IAAIA,CAACA,qBAAqBA,GAAGA,IAAIA,CAACA,aAAaA,GAAGA,GAAGA,CAACA,CAACA,CAACA;oBAC3GA,IAAIA,IAAIA,GAAGA,IAAIA,CAACA,oBAAoBA,CAACA,IAAIA,CAACA,aAAaA,CAACA,CAACA,MAAMA,GAAGA,IAAIA,CAACA,oBAAoBA,CAACA,IAAIA,CAACA,cAAcA,CAACA,CAACA,QAAQA,GAAGA,2BAA2BA,CAACA,UAAUA,CAACA;oBACnKA,IAAIA,CAACA,oBAAoBA,CAACA,IAAIA,CAACA,cAAcA,CAACA,CAACA,MAAMA,GAAGA,IAAIA,CAACA;oBAC7DA,WAAWA,CAACA,GAAGA,CAACA,MAAMA,EAAEA,IAAIA,CAACA,CAACA;oBAE9BA,IAAIA,CAACA,aAAaA,GAAGA,IAAIA,CAACA,cAAcA,CAACA;oBACzCA,IAAIA,CAACA,cAAcA,GAAGA,CAACA,IAAIA,CAACA,cAAcA,GAAGA,CAACA,CAACA,KAAKA,CAACA,CAACA,GAAGA,CAACA,IAAIA,CAACA,oBAAoBA,CAACA,MAAMA,GAAGA,CAACA,CAACA,GAAGA,CAACA,IAAIA,CAACA,cAAcA,GAAGA,CAACA,CAACA,CAACA;gBAChIA,CAACA;gBAEDA,EAAEA,CAACA,CAACA,CAACA,gCAAgCA,GAAGA,CAACA,CAACA,KAAKA,CAACA,CAACA,CAACA,CAACA;oBAC/CA,IAAIA,CAACA,uBAAuBA,CAACA,eAAeA,EAAEA,CAACA,gCAAgCA,GAAGA,CAACA,CAACA,CAACA,CAACA;gBAC1FA,CAACA;YACLA,CAACA;YAEDR,6DAA6DA;YACrDA,uDAAiBA,GAAzBA,UAA0BA,KAAaA;gBAEnCS,EAAEA,CAACA,CAACA,IAAIA,CAACA,0BAA0BA,GAAGA,2BAA2BA,CAACA,6BAA6BA,CAACA,CAACA,CAACA;oBAC9FA,+GAA+GA;oBAE/GA,yFAAyFA;oBACzFA,EAAEA,CAACA,CAACA,IAAIA,CAACA,cAAcA,KAAKA,KAAKA,CAACA;wBAACA,IAAIA,CAACA,uBAAuBA,CAACA,IAAIA,EAAEA,CAACA,CAACA,CAACA;oBAEzEA,sFAAsFA;oBACtFA,EAAEA,CAACA,CAACA,IAAIA,CAACA,aAAaA,KAAKA,KAAKA,CAACA;wBAACA,IAAIA,CAACA,uBAAuBA,CAACA,KAAKA,EAAEA,CAACA,CAACA,CAACA;oBAEzEA,gGAAgGA;oBAChGA,EAAEA,CAACA,CAACA,IAAIA,CAACA,cAAcA,KAAKA,CAACA,KAAKA,GAAGA,CAACA,CAACA,IAAIA,CAACA,CAACA,IAAIA,CAACA,cAAcA,KAAKA,CAACA,CAACA,IAAIA,CAACA,KAAKA,KAAKA,CAACA,IAAIA,CAACA,0BAA0BA,GAAGA,CAACA,CAACA,CAACA,CAACA,CAACA;wBAACA,IAAIA,CAACA,uBAAuBA,CAACA,IAAIA,EAAEA,CAACA,CAACA,CAACA;oBAErKA,6FAA6FA;oBAC7FA,EAAEA,CAACA,CAACA,IAAIA,CAACA,aAAaA,KAAKA,CAACA,KAAKA,GAAGA,CAACA,CAACA,IAAIA,CAACA,CAACA,IAAIA,CAACA,aAAaA,KAAKA,CAACA,IAAIA,CAACA,0BAA0BA,GAAGA,CAACA,CAACA,IAAIA,CAACA,KAAKA,KAAKA,CAACA,CAACA,CAACA,CAACA,CAACA;wBAACA,IAAIA,CAACA,uBAAuBA,CAACA,KAAKA,EAAEA,CAACA,CAACA,CAACA;gBAExKA,CAACA;gBAACA,IAAIA,CAACA,CAACA;oBAEJA,EAAEA,CAACA,CAACA,IAAIA,CAACA,0BAA0BA,KAAKA,2BAA2BA,CAACA,6BAA6BA,CAACA,CAACA,CAACA;wBAChGA,wFAAwFA;wBACxFA,EAAEA,CAACA,CAACA,IAAIA,CAACA,cAAcA,KAAKA,KAAKA,CAACA;4BAACA,IAAIA,CAACA,uBAAuBA,CAACA,IAAIA,EAAEA,CAACA,CAACA,CAACA;wBAEzEA,qFAAqFA;wBACrFA,EAAEA,CAACA,CAACA,IAAIA,CAACA,aAAaA,KAAKA,KAAKA,CAACA;4BAACA,IAAIA,CAACA,uBAAuBA,CAACA,KAAKA,EAAEA,CAACA,CAACA,CAACA;oBAC7EA,CAACA;gBACLA,CAACA;YACLA,CAACA;YAEcT,qDAAyBA,GAAxCA,UAAyCA,SAAiBA,EAAEA,IAAYA,EAAEA,QAAgBA;gBACtFU,MAAMA,CAACA,CAACA,CAACA,SAASA,CAACA;qBACdA,QAAQA,CAACA,SAASA,CAACA;qBACnBA,GAAGA,CAACA;oBACDA,aAAaA,EAAEA,QAAQA;oBACvBA,WAAWA,EAAEA,QAAQA,GAAGA,IAAIA;iBAC/BA,CAACA;qBACDA,IAAIA,CAACA,IAAIA,CAACA,CAACA;YACpBA,CAACA;YAEDV,wFAAwFA;YACzEA,gDAAoBA,GAAnCA,UAAoCA,YAAoBA,EAAEA,UAAkBA;gBACxEW,YAAYA;qBACPA,GAAGA,CAACA;oBACDA,UAAUA,EAAEA,QAAQA;oBACpBA,eAAeA,EAAEA,UAAUA;oBAC3BA,SAASA,EAAEA,cAAcA;oBACzBA,OAAOA,EAAEA,MAAMA;oBACfA,aAAaA,EAAEA,UAAUA;iBAC5BA,CAACA,CAACA;gBACPA,MAAMA,CAACA,YAAYA,CAACA;YACxBA,CAACA;YAEDX,sEAAsEA;YACvDA,yCAAaA,GAA5BA,UAA6BA,cAAsBA,EAAEA,iBAAyBA,EAAEA,mBAA2BA;gBACvGY,IAAIA,OAAOA,GAAGA,cAAcA,GAAGA,iBAAiBA,GAAGA,cAAcA,GAAGA,iBAAiBA,CAACA;gBACtFA,OAAOA,GAAGA,OAAOA,GAAGA,mBAAmBA,GAAGA,OAAOA,GAAGA,mBAAmBA,CAACA;gBACxEA,OAAOA,GAAGA,OAAOA,GAAGA,2BAA2BA,CAACA,oBAAoBA,GAAGA,2BAA2BA,CAACA,oBAAoBA,GAAGA,CAACA,OAAOA,GAAGA,CAACA,CAACA,CAACA;gBACxIA,MAAMA,CAACA,OAAOA,CAACA;YACnBA,CAACA;YAGcZ,qCAASA,GAAxBA,UAAyBA,IAAYA;gBACjCa,EAAEA,CAACA,CAACA,CAACA,IAAIA,CAACA,eAAeA,CAACA,CAACA,CAACA;oBACxBA,IAAIA,CAACA,eAAeA,GAAGA,CAACA,CAACA,QAAQA,CAACA,CAACA,IAAIA,EAAEA,CAACA,QAAQA,CAACA,QAAQA,CAACA,IAAIA,CAACA,CAACA;gBACtEA,CAACA;gBACDA,IAAIA,CAACA,eAAeA,CAACA,KAAKA,EAAEA,CAACA;gBAC7BA,IAAIA,CAACA,eAAeA,CAACA,MAAMA,CAACA,IAAIA,CAACA,CAACA;gBAClCA,MAAMA,CAACA,IAAIA,CAACA,eAAeA,CAACA,KAAKA,EAAEA,CAACA;YACxCA,CAACA;YAzTcb,oDAAwBA,GAAGA,kBAAkBA,CAACA;YAC9CA,mDAAuBA,GAAGA,mBAAmBA,CAACA;YAC9CA,+CAAmBA,GAAGA,aAAaA,CAACA;YACpCA,8CAAkBA,GAAGA,cAAcA,CAACA;YACpCA,uDAA2BA,GAAGA,UAAUA,CAACA;YACzCA,yDAA6BA,GAAGA,YAAYA,CAACA;YAC7CA,oDAAwBA,GAAGA,OAAOA,CAACA;YAEnCA,gDAAoBA,GAAGA,GAAGA,CAACA;YAC3BA,sCAAUA,GAAGA,EAAEA,CAACA,CAACA,uBAAuBA;YACxCA,0CAAcA,GAAGA,EAAEA,CAACA,CAACA,yDAAyDA;YAC9EA,yDAA6BA,GAAGA,CAACA,CAACA,CAACA,iDAAiDA;YA+SvGA,kCAACA;QAADA,CA5TA96F,AA4TC86F,IAAA96F;QAEDA,IAAOA,oBAAoBA,CAma1BA;QAnaDA,WAAOA,oBAAoBA,EAACA,CAACA;YAYxB47F,CAACA;YAOFA;gBA0BIC,6BAAmBA,QAAkBA,EAAEA,MAAyBA,EAAEA,qBAA8BA;oBAC5FC,IAAIA,mBAAmBA,GAAGA,QAAQA,CAACA,WAAWA,CAACA;oBAC/CA,IAAIA,CAACA,mBAAmBA,GAAGA,mBAAmBA,CAACA;oBAC/CA,IAAIA,CAACA,gBAAgBA,GAAGA,QAAQA,CAACA,QAAQA,CAACA;oBAE1CA,IAAIA,CAACA,WAAWA,GAAGA,mBAAmBA,CAACA,MAAMA,GAAGA,mBAAmBA,CAACA,MAAMA,CAACA,MAAMA,GAAGA,CAACA,CAACA;oBACtFA,IAAIA,CAACA,WAAWA,GAAGA,IAAIA,mBAAWA,CAACA,MAAMA,EAAEA,uBAAeA,CAACA,SAASA,CAACA,IAAIA,EAAEA,qBAAqBA,CAACA,CAACA;oBAClGA,IAAIA,CAACA,QAAQA,GAAGA,CAACA,CAACA;oBAElBA,EAAEA,CAACA,CAACA,mBAAmBA,CAACA,UAAUA,IAAIA,mBAAmBA,CAACA,UAAUA,CAACA,MAAMA,GAAGA,CAACA,CAACA,CAACA,CAACA;wBAC9EA,IAAIA,QAAQA,GAAGA,mBAAmBA,CAACA,UAAUA,CAACA,CAACA,CAACA,CAACA;wBACjDA,IAAIA,CAACA,kBAAkBA,GAAGA,QAAQA,CAACA,QAAQA,CAACA;wBAC5CA,IAAIA,CAACA,cAAcA,GAAGA,QAAQA,CAACA,MAAMA,CAACA;wBACtCA,IAAIA,CAACA,kBAAkBA,GAAGA,QAAQA,CAACA,OAAOA,CAACA;wBAC3CA,IAAIA,CAACA,iBAAiBA,GAAkBA,QAAQA,CAACA,cAAcA,CAACA;wBAChEA,IAAIA,CAACA,oBAAoBA,GAAGA,sBAAcA,CAACA,eAAeA,CAACA,QAAQA,CAACA,MAAMA,EAAEA,uBAAeA,CAACA,OAAOA,CAACA,YAAYA,CAACA,CAACA;oBACtHA,CAACA;oBAEDA,IAAIA,OAAOA,GAAGA,IAAIA,CAACA,OAAOA,GAAGA,mBAAmBA,IAAIA,mBAAmBA,CAACA,MAAMA,GAAGA,mBAAmBA,CAACA,MAAMA,CAACA,OAAOA,EAAEA,GAAGA,SAASA,CAACA;oBAClIA,IAAIA,CAACA,cAAcA,GAAGA,OAAOA,IAAIA,OAAOA,CAACA,MAAMA,GAAGA,CAACA,IAAIA,OAAOA,CAACA,CAACA,CAACA,CAACA,MAAMA,IAAIA,OAAOA,CAACA,CAACA,CAACA,CAACA,MAAMA,CAACA,MAAMA,GAAGA,CAACA,CAACA;oBACzGA,IAAIA,CAACA,eAAeA,GAAGA,OAAOA,IAAIA,OAAOA,CAACA,MAAMA,KAAKA,CAACA,IAAIA,OAAOA,CAACA,CAACA,CAACA,CAACA,MAAMA,IAAIA,OAAOA,CAACA,CAACA,CAACA,CAACA,MAAMA,CAACA,MAAMA,KAAKA,CAACA,CAACA;oBAC9GA,IAAIA,CAACA,eAAeA,GAAGA,CAACA,CAACA,CAACA,mBAAmBA,CAACA,MAAMA,IAAIA,mBAAmBA,CAACA,MAAMA,CAACA,MAAMA,CAACA,CAACA;oBAE3FA,IAAIA,CAACA,aAAaA,GAAGA,IAAIA,CAACA,WAAWA,GAAGA,CAACA,IAAIA,CAACA,CAACA,CAACA,OAAOA,CAACA,mBAAmBA,CAACA,MAAMA,CAACA,IAAIA,CAACA,CAACA,mBAAmBA,CAACA,MAAMA,CAACA,CAACA,CAACA,CAACA,UAAUA,CAACA;oBAClIA,IAAIA,CAACA,kBAAkBA,GAAGA,KAAKA,CAACA;oBAChCA,IAAIA,CAACA,KAAKA,GAAGA,CAACA,CAACA;oBACfA,IAAIA,CAACA,cAAcA,GAAGA,CAACA,CAACA;oBACxBA,IAAIA,CAACA,UAAUA,GAAGA,EAAEA,CAACA;oBACrBA,IAAIA,CAACA,gBAAgBA,GAAGA,EAAEA,CAACA;oBAC3BA,IAAIA,CAACA,kBAAkBA,GAAGA,IAAIA,CAACA;oBAE/BA,GAAGA,CAACA,CAACA,GAAGA,CAACA,WAAWA,GAAGA,CAACA,EAAEA,WAAWA,GAAGA,IAAIA,CAACA,WAAWA,EAAEA,WAAWA,EAAEA,EAAEA,CAACA;wBACtEA,IAAIA,UAAUA,GAAGA,mBAAmBA,CAACA,MAAMA,CAACA,WAAWA,CAACA,CAACA;wBACzDA,GAAGA,CAACA,CAACA,GAAGA,CAACA,YAAYA,GAAGA,CAACA,EAAEA,YAAYA,GAAGA,UAAUA,CAACA,MAAMA,CAACA,MAAMA,EAAEA,YAAYA,EAAEA,EAAEA,CAACA;4BACjFA,IAAIA,CAACA,KAAKA,IAAIA,IAAIA,CAACA,GAAGA,CAACA,UAAUA,CAACA,MAAMA,CAACA,YAAYA,CAACA,CAACA,CAACA;4BACxDA,IAAIA,CAACA,cAAcA,IAAIA,IAAIA,CAACA,aAAaA,GAAGA,IAAIA,CAACA,GAAGA,CAACA,UAAUA,CAACA,UAAUA,CAACA,YAAYA,CAACA,CAACA,GAAGA,CAACA,CAACA;wBAClGA,CAACA;oBACLA,CAACA;oBAEDA,IAAIA,CAACA,KAAKA,GAAGA,kBAAUA,CAACA,wBAAwBA,CAACA,IAAIA,CAACA,KAAKA,CAACA,CAACA;oBAC7DA,IAAIA,CAACA,cAAcA,GAAGA,kBAAUA,CAACA,wBAAwBA,CAACA,IAAIA,CAACA,cAAcA,CAACA,CAACA;gBACnFA,CAACA;gBAEcD,6CAAyBA,GAAxCA,UAAyCA,eAAgCA;oBACrEE,IAAIA,UAAUA,GAAoBA,CAACA,CAACA,MAAMA,CAACA,IAAIA,EAAEA,EAAEA,EAAEA,eAAeA,CAACA,CAACA;oBACtEA,UAAUA,CAACA,OAAOA,GAAGA,kBAAUA,CAACA,wBAAwBA,CAACA,UAAUA,CAACA,OAAOA,CAACA,CAACA;oBAC7EA,UAAUA,CAACA,KAAKA,GAAGA,kBAAUA,CAACA,wBAAwBA,CAACA,UAAUA,CAACA,KAAKA,CAACA,CAACA;oBAEzEA,MAAMA,CAACA,UAAUA,CAACA;gBACtBA,CAACA;gBAEMF,qCAAOA,GAAdA;oBACIG,IAAIA,aAAmCA,CAACA;oBACxCA,EAAEA,CAACA,CAACA,IAAIA,CAACA,KAAKA,KAAKA,CAACA,CAACA,CAACA,CAACA;wBACnBA,iFAAiFA;wBACjFA,EAAEA,CAACA,CAACA,IAAIA,CAACA,cAAcA,CAACA,CAACA,CAACA;4BACtBA,aAAaA,GAAGA,IAAIA,CAACA,6BAA6BA,EAAEA,CAACA;wBACzDA,CAACA;wBACDA,IAAIA,CAACA,EAAEA,CAACA,CAACA,IAAIA,CAACA,eAAeA,CAACA,CAACA,CAACA;4BAC5BA,0BAA0BA;4BAC1BA,aAAaA,GAAGA,IAAIA,CAACA,aAAaA,EAAEA,CAACA;wBACzCA,CAACA;wBACDA,IAAIA,CAACA,CAACA;4BACFA,wCAAwCA;4BACxCA,aAAaA,GAAGA,IAAIA,CAACA,eAAeA,EAAEA,CAACA;wBAC3CA,CAACA;oBACLA,CAACA;oBACDA,IAAIA,CAACA,CAACA;wBACFA,aAAaA,GAAGA,EAAEA,CAACA;oBACvBA,CAACA;oBAEDA,kEAAkEA;oBAClEA,IAAIA,kBAAkBA,GAAGA,KAAKA,CAACA;oBAC/BA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,cAAcA,GAAGA,aAAaA,CAACA,MAAMA,EAAEA,CAACA,GAAGA,cAAcA,IAAIA,CAACA,kBAAkBA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;wBACpGA,IAAIA,KAAKA,GAAGA,aAAaA,CAACA,CAACA,CAACA,CAACA;wBAC7BA,EAAEA,CAACA,CAACA,IAAIA,CAACA,GAAGA,CAACA,KAAKA,CAACA,qBAAqBA,CAACA,OAAOA,CAACA,GAAGA,IAAIA,CAACA,GAAGA,CAACA,KAAKA,CAACA,YAAYA,CAACA,OAAOA,CAACA,CAACA,CAACA,CAACA;4BACvFA,kBAAkBA,GAAGA,IAAIA,CAACA;wBAC9BA,CAACA;oBACLA,CAACA;oBAEDA,8BAA8BA;oBAC9BA,IAAIA,CAACA,kBAAkBA,GAAGA,IAAIA,CAACA,wBAAwBA,EAAEA,CAACA;oBAE1DA,IAAIA,gBAAgBA,GAAGA,IAAIA,CAACA,gBAAgBA,CAACA;oBAC7CA,EAAEA,CAACA,CAACA,gBAAgBA,CAACA,CAACA,CAACA;wBACnBA,IAAIA,OAAOA,GAAoBA,gBAAgBA,CAACA,OAAOA,CAACA;wBACxDA,EAAEA,CAACA,CAACA,OAAOA,CAACA,CAACA,CAACA;4BACVA,IAAIA,CAACA,sBAAsBA,GAAmBA,OAAOA,CAACA,QAAQA,CAACA,CAACA;wBACpEA,CAACA;oBACLA,CAACA;oBAEDA,IAAIA,CAACA,UAAUA,GAAGA,EAAEA,CAACA;oBACrBA,IAAIA,gBAAgBA,GAAGA,uBAAeA,CAACA,OAAOA,CAACA,YAAYA,CAACA;oBAC5DA,IAAIA,cAAsBA,CAACA;oBAE3BA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,cAAcA,GAAGA,aAAaA,CAACA,MAAMA,EAAEA,CAACA,GAAGA,cAAcA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;wBAC7EA,IAAIA,KAAKA,GAAGA,aAAaA,CAACA,CAACA,CAACA,CAACA;wBAE7BA,sEAAsEA;wBACtEA,IAAIA,mBAAmBA,GAAGA,mBAAmBA,CAACA,yBAAyBA,CAACA,KAAKA,CAACA,qBAAqBA,CAACA,CAACA;wBACrGA,IAAIA,sBAAsBA,GAAGA,mBAAmBA,CAACA,yBAAyBA,CAACA,KAAKA,CAACA,YAAYA,CAACA,CAACA;wBAE/FA,IAAIA,OAAOA,GAAGA,sBAAsBA,CAACA,OAAOA,CAACA;wBAC7CA,IAAIA,UAAUA,GAAGA,CAACA,IAAIA,CAACA,KAAKA,GAAGA,CAACA,CAACA,GAAGA,sBAAsBA,CAACA,KAAKA,GAAGA,IAAIA,CAACA,KAAKA,GAAGA,GAAGA,CAACA;wBACpFA,IAAIA,cAAcA,GAAGA,CAACA,CAACA;wBACvBA,EAAEA,CAACA,CAACA,sBAAsBA,CAACA,KAAKA,GAAGA,IAAIA,CAACA,QAAQA,CAACA;4BAC7CA,IAAIA,CAACA,QAAQA,GAAGA,sBAAsBA,CAACA,KAAKA,CAACA;wBACjDA,EAAEA,CAACA,CAACA,mBAAmBA,CAACA,KAAKA,GAAGA,IAAIA,CAACA,QAAQA,CAACA;4BAC1CA,IAAIA,CAACA,QAAQA,GAAGA,mBAAmBA,CAACA,KAAKA,CAACA;wBAE9CA,EAAEA,CAACA,CAACA,IAAIA,CAACA,aAAaA,CAACA,CAACA,CAACA;4BACrBA,iFAAiFA;4BACjFA,mFAAmFA;4BACnFA,EAAEA,CAACA,CAACA,kBAAkBA,CAACA,CAACA,CAACA;gCACrBA,OAAOA,GAAGA,mBAAmBA,CAACA,OAAOA,CAACA;gCAEtCA,UAAUA,GAAGA,CAACA,IAAIA,CAACA,cAAcA,GAAGA,CAACA,CAACA,GAAGA,mBAAmBA,CAACA,KAAKA,GAAGA,IAAIA,CAACA,cAAcA,GAAGA,GAAGA,CAACA;gCAC/FA,cAAcA,GAAGA,CAACA,CAACA;4BACvBA,CAACA;4BACDA,IAAIA,CAACA,CAACA;gCACFA,cAAcA,GAAGA,mBAAmBA,CAACA,KAAKA,GAAGA,sBAAsBA,CAACA,KAAKA,CAACA;4BAC9EA,CAACA;4BAEDA,EAAEA,CAACA,CAACA,CAACA,cAAcA,CAACA,CAACA,CAACA;gCAClBA,cAAcA,GAAGA,UAAUA,CAACA,kBAAkBA,CAACA;4BACnDA,CAACA;wBACLA,CAACA;wBAEDA,IAAIA,aAAaA,GAAGA,KAAKA,CAACA,aAAaA,CAACA;wBACxCA,IAAIA,WAAWA,GAAGA,IAAIA,CAACA,mBAAmBA,CAACA;wBAC3CA,IAAIA,UAAUA,GAAWA,WAAWA,CAACA,UAAUA,GAAGA,IAAIA,GAAGA,CAACA,CAACA;wBAC3DA,UAAUA,GAAGA,KAAKA,CAACA,WAAWA,KAAKA,SAASA,GAAGA,KAAKA,CAACA,WAAWA,GAAGA,UAAUA,CAACA;wBAC9EA,IAAIA,cAAcA,GAAGA,WAAWA,CAACA,MAAMA,CAACA,UAAUA,CAACA,CAACA,MAAMA,CAACA;wBAC3DA,IAAIA,KAAKA,GAAWA,KAAKA,CAACA,YAAYA,CAACA,OAAOA,CAACA;wBAC/CA,IAAIA,gBAAgBA,GAAWA,IAAIA,CAACA,aAAaA,IAAIA,KAAKA,CAACA,qBAAqBA,CAACA,KAAKA,KAAKA,CAACA,GAAGA,KAAKA,CAACA,qBAAqBA,CAACA,OAAOA,GAAGA,SAASA,CAACA;wBAC/IA,IAAIA,WAAWA,GAAsBA,sBAAcA,CAACA,iBAAiBA,CAACA,gBAAgBA,EAAEA,WAAWA,EAAEA,aAAaA,EAAEA,KAAKA,EAAEA,IAAIA,EAAEA,IAAIA,EAAEA,UAAUA,EAAEA,CAACA,EAAEA,gBAAgBA,CAACA,CAACA;wBACxKA,IAAIA,WAAWA,GAAGA,cAAcA,KAAKA,KAAKA,CAACA,KAAKA,IAAIA,KAAKA,IAAIA,KAAKA,GAAGA,CAACA,GAAGA,CAACA,GAAGA,CAACA,CAACA;wBAC/EA,cAAcA,GAAGA,KAAKA,IAAIA,KAAKA,GAAGA,CAACA,GAAGA,KAAKA,CAACA,KAAKA,GAAGA,cAAcA,CAACA;wBACnEA,IAAIA,CAACA,UAAUA,CAACA,IAAIA,CAACA;4BACjBA,QAAQA,EAAEA,KAAKA,CAACA,QAAQA;4BACxBA,OAAOA,EAAEA,OAAOA;4BAChBA,aAAaA,EAAEA,KAAKA,CAACA,aAAaA;4BAClCA,UAAUA,EAAEA,UAAUA;4BACtBA,KAAKA,EAAEA,KAAKA,CAACA,KAAKA;4BAClBA,KAAKA,EAAEA,KAAKA,CAACA,KAAKA;4BAClBA,cAAcA,EAAEA,cAAcA;4BAC9BA,QAAQA,EAAEA,KAAKA;4BACfA,WAAWA,EAAEA,WAAWA;4BACxBA,KAAKA,EAAEA,KAAKA,CAACA,KAAKA;4BAClBA,WAAWA,EAAEA,WAAWA;4BACxBA,iBAAiBA,EAAEA,cAAcA,CAACA,MAAMA;yBAC3CA,CAACA,CAACA;oBACPA,CAACA;oBAEDA,IAAIA,CAACA,UAAUA,GAAGA,IAAIA,CAACA,iBAAiBA,EAAEA,CAACA;gBAC/CA,CAACA;gBAEOH,4CAAcA,GAAtBA;oBACII,EAAEA,CAACA,CAACA,IAAIA,CAACA,KAAKA,KAAKA,CAACA,CAACA,CAACA,CAACA;wBACnBA,qFAAqFA;wBACrFA,iBAAiBA;wBACjBA,IAAIA,kBAAkBA,GAAGA,IAAIA,CAACA,mBAAmBA,CAACA,MAAMA,IAAIA,IAAIA,CAACA,mBAAmBA,CAACA,MAAMA,CAACA,MAAMA;8BAC5FA,IAAIA,CAACA,mBAAmBA,CAACA,MAAMA,CAACA,MAAMA,CAACA,WAAWA,GAAGA,EAAEA,CAACA;wBAC9DA,IAAIA,oBAAoBA,GAAGA,IAAIA,CAACA,mBAAmBA,CAACA,UAAUA,IAAIA,IAAIA,CAACA,mBAAmBA,CAACA,UAAUA,CAACA,MAAMA,GAAGA,CAACA,IAAIA,IAAIA,CAACA,mBAAmBA,CAACA,UAAUA,CAACA,CAACA,CAACA,CAACA,MAAMA;8BAC3JA,IAAIA,CAACA,mBAAmBA,CAACA,UAAUA,CAACA,CAACA,CAACA,CAACA,MAAMA,CAACA,WAAWA,GAAGA,EAAEA,CAACA;wBACrEA,EAAEA,CAACA,CAACA,IAAIA,CAACA,cAAcA,CAACA,CAACA,CAACA;4BACtBA,MAAMA,CAACA,oBAAoBA,CAACA;wBAChCA,CAACA;wBACDA,IAAIA,CAACA,CAACA;4BACFA,MAAMA,CAACA,kBAAkBA,CAACA;wBAC9BA,CAACA;oBACLA,CAACA;oBACDA,IAAIA,CAACA,CAACA;wBACFA,MAAMA,CAACA,EAAEA,CAACA;oBACdA,CAACA;gBACLA,CAACA;gBAEOJ,2DAA6BA,GAArCA;oBACIK,IAAIA,mBAAmBA,GAAGA,IAAIA,CAACA,mBAAmBA,CAACA;oBACnDA,IAAIA,gBAAgBA,GAAGA,uBAAeA,CAACA,OAAOA,CAACA,YAAYA,CAACA;oBAC5DA,IAAIA,UAAUA,GAAyBA,EAAEA,CAACA;oBAE1CA,GAAGA,CAACA,CAACA,GAAGA,CAACA,aAAaA,GAAGA,CAACA,EAAEA,aAAaA,GAAGA,IAAIA,CAACA,cAAcA,CAACA,MAAMA,EAAEA,aAAaA,GAAGA,aAAaA,EAAEA,aAAaA,EAAEA,EAAEA,CAACA;wBACrHA,IAAIA,aAAaA,GAAGA,IAAIA,CAACA,cAAcA,CAACA,aAAaA,CAACA,CAACA;wBACvDA,IAAIA,mBAAmBA,GAAGA,IAAIA,CAACA,kBAAkBA,GAAGA,IAAIA,CAACA,kBAAkBA,CAACA,aAAaA,CAACA,GAAGA,SAASA,CAACA;wBAEvGA,IAAIA,cAAcA,GAAGA,mBAAWA,CAACA,YAAYA,CAACA,IAAIA,CAACA,kBAAkBA,CAACA,aAAaA,CAACA,CAACA,CAACA;wBACtFA,IAAIA,KAAKA,GAAGA,IAAIA,CAACA,WAAWA,CAACA,sBAAsBA,CAACA,mBAAmBA,EAAEA,IAAIA,CAACA,iBAAiBA,EAAEA,aAAaA,CAACA,CAACA;wBAChHA,IAAIA,aAAaA,GAAGA,sBAAcA,CAACA,MAAMA,CAACA,aAAaA,EAAEA,IAAIA,CAACA,oBAAoBA,CAACA,CAACA;wBAEpFA,uFAAuFA;wBACvFA,GAAGA,CAACA,CAACA,GAAGA,CAACA,WAAWA,GAAGA,CAACA,EAAEA,WAAWA,GAAGA,IAAIA,CAACA,WAAWA,EAAEA,WAAWA,EAAEA,EAAEA,CAACA;4BACtEA,IAAIA,UAAUA,GAAGA,mBAAmBA,CAACA,MAAMA,CAACA,WAAWA,CAACA,CAACA;4BAEzDA,IAAIA,KAAKA,GAAGA,IAAIA,CAACA,eAAeA;kCAC1BA,aAAaA;kCACbA,uBAAeA,CAACA,uBAAuBA,CAACA,UAAUA,CAACA,MAAMA,EAAEA,mBAAmBA,CAACA,MAAMA,EAAEA,gBAAgBA,CAACA,CAACA;4BAE/GA,IAAIA,YAAYA,GAAGA,UAAUA,CAACA,MAAMA,CAACA,aAAaA,CAACA,IAAIA,CAACA,CAACA;4BACzDA,IAAIA,SAASA,GAAGA,IAAIA,CAACA,aAAaA,GAAGA,UAAUA,CAACA,UAAUA,CAACA,aAAaA,CAACA,IAAIA,CAACA,GAAGA,CAACA,CAACA;4BAEnFA,IAAIA,OAAOA,SAAQA,CAACA;4BACpBA,IAAIA,WAAWA,SAAKA,CAACA;4BAErBA,EAAEA,CAACA,CAACA,IAAIA,CAACA,cAAcA,CAACA,CAACA,CAACA;gCACtBA,OAAOA,GAAGA,UAAUA,CAACA,MAAMA,CAACA,SAASA,CAACA;4BAC1CA,CAACA;4BACDA,IAAIA,CAACA,EAAEA,CAACA,CAACA,UAAUA,CAACA,QAAQA,CAACA;gCACzBA,WAAWA,GAAGA,UAAUA,CAACA;4BAE7BA,IAAIA,QAAQA,GAAgBA,0BAAkBA,CAACA,OAAOA,EAAEA;iCACnDA,YAAYA,CAACA,mBAAmBA,CAACA,UAAUA,CAACA,CAACA,CAACA,EAAEA,aAAaA,CAACA;iCAC9DA,UAAUA,CAACA,WAAWA,EAAEA,WAAWA,CAACA;iCACpCA,WAAWA,CAACA,OAAOA,CAACA;iCACpBA,iBAAiBA,EAAEA,CAACA;4BAEzBA,IAAIA,SAASA,GAAuBA;gCAChCA,QAAQA,EAAEA,QAAQA;gCAClBA,aAAaA,EAAEA,sBAAcA,CAACA,eAAeA,CAACA,UAAUA,CAACA,MAAMA,EAAEA,gBAAgBA,EAAEA,IAAIA,CAACA;gCACxFA,YAAYA,EAAoBA;oCAC5BA,OAAOA,EAAEA,YAAYA;oCACrBA,KAAKA,EAAEA,IAAIA,CAACA,GAAGA,CAACA,YAAYA,CAACA;iCAChCA;gCACDA,qBAAqBA,EAAoBA;oCACrCA,OAAOA,EAAEA,SAASA;oCAClBA,KAAKA,EAAEA,IAAIA,CAACA,GAAGA,CAACA,SAASA,CAACA;iCAC7BA;gCACDA,KAAKA,EAAEA,aAAaA,GAAGA,IAAIA,CAACA,WAAWA,GAAGA,WAAWA;gCACrDA,KAAKA,EAAEA,KAAKA;gCACZA,aAAaA,EAAEA,aAAaA;gCAC5BA,KAAKA,EAAEA,KAAKA;gCACZA,WAAWA,EAAEA,WAAWA;6BAC3BA,CAACA;4BACFA,UAAUA,CAACA,IAAIA,CAACA,SAASA,CAACA,CAACA;wBAC/BA,CAACA;wBAEDA,IAAIA,CAACA,gBAAgBA,CAACA,IAAIA,CAACA;4BACvBA,KAAKA,EAAEA,aAAaA;4BACpBA,KAAKA,EAAEA,KAAKA;4BACZA,IAAIA,EAAEA,kBAAUA,CAACA,GAAGA;4BACpBA,QAAQA,EAAEA,cAAcA;4BACxBA,QAAQA,EAAEA,KAAKA;yBAClBA,CAACA,CAACA;oBACPA,CAACA;oBAEDA,MAAMA,CAACA,UAAUA,CAACA;gBACtBA,CAACA;gBAEOL,6CAAeA,GAAvBA;oBACIM,IAAIA,mBAAmBA,GAAGA,IAAIA,CAACA,mBAAmBA,CAACA;oBACnDA,IAAIA,UAAUA,GAAyBA,EAAEA,CAACA;oBAC1CA,IAAIA,gBAAgBA,GAAGA,uBAAeA,CAACA,OAAOA,CAACA,YAAYA,CAACA;oBAE5DA,GAAGA,CAACA,CAACA,GAAGA,CAACA,YAAYA,GAAGA,CAACA,EAAEA,YAAYA,GAAGA,IAAIA,CAACA,WAAWA,EAAEA,YAAYA,EAAEA,EAAEA,CAACA;wBACzEA,IAAIA,WAAWA,GAAGA,mBAAmBA,CAACA,MAAMA,CAACA,YAAYA,CAACA,CAACA;wBAC3DA,IAAIA,aAAaA,GAAGA,sBAAcA,CAACA,eAAeA,CAACA,WAAWA,CAACA,MAAMA,EAAEA,gBAAgBA,EAAEA,IAAIA,CAACA,CAACA;wBAC/FA,IAAIA,YAAYA,GAAGA,WAAWA,CAACA,MAAMA,CAACA,WAAWA,CAACA;wBAClDA,IAAIA,QAAQA,GAAGA,mBAAWA,CAACA,iBAAiBA,CAACA,WAAWA,CAACA,MAAMA,CAACA,SAASA,CAACA,CAACA;wBAE3EA,KAAKA,CAACA,MAAMA,CAACA,WAAWA,CAACA,MAAMA,CAACA,MAAMA,GAAGA,CAACA,EAAEA,iCAAiCA,CAACA,CAACA;wBAC/EA,KAAKA,CAACA,MAAMA,CAACA,CAACA,IAAIA,CAACA,aAAaA,IAAIA,WAAWA,CAACA,UAAUA,CAACA,MAAMA,GAAGA,CAACA,EAAEA,2DAA2DA,CAACA,CAACA;wBACpIA,IAAIA,YAAYA,GAAGA,WAAWA,CAACA,MAAMA,CAACA,CAACA,CAACA,IAAIA,CAACA,CAACA;wBAC9CA,IAAIA,SAASA,GAAGA,IAAIA,CAACA,aAAaA,GAAGA,WAAWA,CAACA,UAAUA,CAACA,CAACA,CAACA,IAAIA,CAACA,GAAGA,CAACA,CAACA;wBAExEA,IAAIA,KAAKA,GAAGA,IAAIA,CAACA,WAAWA,CAACA,kBAAkBA,CAACA,WAAWA,CAACA,MAAMA,CAACA,OAAOA,EAAEA,WAAWA,CAACA,MAAMA,CAACA,SAASA,CAACA,CAACA;wBAE1GA,IAAIA,SAASA,GAAuBA;4BAChCA,QAAQA,EAAEA,QAAQA;4BAClBA,aAAaA,EAAEA,aAAaA;4BAC5BA,YAAYA,EAAoBA;gCAC5BA,OAAOA,EAAEA,YAAYA;gCACrBA,KAAKA,EAAEA,IAAIA,CAACA,GAAGA,CAACA,YAAYA,CAACA;6BAChCA;4BACDA,qBAAqBA,EAAoBA;gCACrCA,OAAOA,EAAEA,SAASA;gCAClBA,KAAKA,EAAEA,IAAIA,CAACA,GAAGA,CAACA,SAASA,CAACA;6BAC7BA;4BACDA,KAAKA,EAAEA,YAAYA;4BACnBA,KAAKA,EAAEA,YAAYA;4BACnBA,aAAaA,EAAEA,YAAYA;4BAC3BA,KAAKA,EAAEA,KAAKA;yBACfA,CAACA;wBACFA,UAAUA,CAACA,IAAIA,CAACA,SAASA,CAACA,CAACA;wBAE3BA,IAAIA,CAACA,gBAAgBA,CAACA,IAAIA,CAACA;4BACvBA,KAAKA,EAAEA,SAASA,CAACA,KAAKA;4BACtBA,KAAKA,EAAEA,SAASA,CAACA,KAAKA;4BACtBA,IAAIA,EAAEA,kBAAUA,CAACA,GAAGA;4BACpBA,QAAQA,EAAEA,SAASA,CAACA,QAAQA;4BAC5BA,QAAQA,EAAEA,KAAKA;yBAClBA,CAACA,CAACA;oBACPA,CAACA;oBAEDA,MAAMA,CAACA,UAAUA,CAACA;gBACtBA,CAACA;gBAEON,2CAAaA,GAArBA;oBACIO,IAAIA,mBAAmBA,GAAGA,IAAIA,CAACA,mBAAmBA,CAACA;oBACnDA,IAAIA,UAAUA,GAAyBA,EAAEA,CAACA;oBAC1CA,IAAIA,gBAAgBA,GAAGA,uBAAeA,CAACA,OAAOA,CAACA,YAAYA,CAACA;oBAE5DA,GAAGA,CAACA,CAACA,GAAGA,CAACA,WAAWA,GAAGA,CAACA,EAAEA,WAAWA,GAAGA,IAAIA,CAACA,WAAWA,EAAEA,WAAWA,EAAEA,EAAEA,CAACA;wBACtEA,IAAIA,UAAUA,GAAGA,mBAAmBA,CAACA,MAAMA,CAACA,WAAWA,CAACA,CAACA;wBACzDA,IAAIA,YAAYA,GAAGA,sBAAcA,CAACA,eAAeA,CAACA,UAAUA,CAACA,MAAMA,EAAEA,gBAAgBA,EAAEA,IAAIA,CAACA,CAACA;wBAC7FA,IAAIA,KAAKA,GAAGA,uBAAeA,CAACA,uBAAuBA,CAACA,UAAUA,CAACA,MAAMA,EAAEA,mBAAmBA,CAACA,MAAMA,EAAEA,gBAAgBA,CAACA,CAACA;wBACrHA,IAAIA,QAAQA,GAAGA,mBAAWA,CAACA,YAAYA,CAACA,UAAUA,CAACA,QAAQA,CAACA,CAACA;wBAC7DA,IAAIA,UAAUA,GAAGA,uBAAeA,CAACA,aAAaA,CAACA,UAAUA,CAACA,MAAMA,CAACA,CAACA;wBAClEA,IAAIA,OAAOA,GAAGA,IAAIA,CAACA,OAAOA,IAAIA,IAAIA,CAACA,OAAOA,CAACA,WAAWA,CAACA,IAAIA,IAAIA,CAACA,OAAOA,CAACA,WAAWA,CAACA,CAACA,OAAOA,CAACA;wBAE7FA,KAAKA,CAACA,MAAMA,CAACA,UAAUA,CAACA,MAAMA,CAACA,MAAMA,GAAGA,CAACA,EAAEA,iCAAiCA,CAACA,CAACA;wBAC9EA,KAAKA,CAACA,MAAMA,CAACA,CAACA,IAAIA,CAACA,aAAaA,IAAIA,UAAUA,CAACA,UAAUA,CAACA,MAAMA,GAAGA,CAACA,EAAEA,2DAA2DA,CAACA,CAACA;wBACnIA,IAAIA,YAAYA,GAAGA,UAAUA,CAACA,MAAMA,CAACA,CAACA,CAACA,IAAIA,CAACA,CAACA;wBAC7CA,IAAIA,SAASA,GAAGA,IAAIA,CAACA,aAAaA,GAAGA,UAAUA,CAACA,UAAUA,CAACA,CAACA,CAACA,IAAIA,CAACA,GAAGA,CAACA,CAACA;wBAEvEA,IAAIA,KAAKA,GAAGA,IAAIA,CAACA,WAAWA,CAACA,sBAAsBA,CAACA,OAAOA,EAAEA,mBAAmBA,CAACA,MAAMA,CAACA,cAAcA,EAAEA,UAAUA,CAACA,CAACA;wBAEpHA,IAAIA,SAASA,GAAuBA;4BAChCA,QAAQA,EAAEA,QAAQA;4BAClBA,aAAaA,EAAEA,YAAYA;4BAC3BA,YAAYA,EAAoBA;gCAC5BA,OAAOA,EAAEA,YAAYA;gCACrBA,KAAKA,EAAEA,IAAIA,CAACA,GAAGA,CAACA,YAAYA,CAACA;6BAChCA;4BACDA,qBAAqBA,EAAoBA;gCACrCA,OAAOA,EAAEA,SAASA;gCAClBA,KAAKA,EAAEA,IAAIA,CAACA,GAAGA,CAACA,SAASA,CAACA;6BAC7BA;4BACDA,KAAKA,EAAEA,WAAWA;4BAClBA,KAAKA,EAAEA,KAAKA;4BACZA,aAAaA,EAAEA,KAAKA;4BACpBA,KAAKA,EAAEA,KAAKA;4BACZA,WAAWA,EAAEA,WAAWA;yBAC3BA,CAACA;wBACFA,UAAUA,CAACA,IAAIA,CAACA,SAASA,CAACA,CAACA;wBAE3BA,IAAIA,CAACA,gBAAgBA,CAACA,IAAIA,CAACA;4BACvBA,KAAKA,EAAEA,SAASA,CAACA,KAAKA;4BACtBA,KAAKA,EAAEA,SAASA,CAACA,KAAKA;4BACtBA,IAAIA,EAAEA,kBAAUA,CAACA,GAAGA;4BACpBA,QAAQA,EAAEA,SAASA,CAACA,QAAQA;4BAC5BA,QAAQA,EAAEA,KAAKA;yBAClBA,CAACA,CAACA;oBACPA,CAACA;oBAEDA,MAAMA,CAACA,UAAUA,CAACA;gBACtBA,CAACA;gBAEOP,sDAAwBA,GAAhCA;oBACIQ,IAAIA,gBAAgBA,GAAGA,IAAIA,CAACA,gBAAgBA,CAACA;oBAC7CA,IAAIA,kBAAkBA,GAAGA,sBAAcA,CAACA,4BAA4BA,EAAEA,CAACA;oBAEvEA,EAAEA,CAACA,CAACA,gBAAgBA,CAACA,CAACA,CAACA;wBACnBA,IAAIA,OAAOA,GAAoBA,gBAAgBA,CAACA,OAAOA,CAACA;wBACxDA,EAAEA,CAACA,CAACA,OAAOA,CAACA,CAACA,CAACA;4BACVA,yBAAyBA;4BACzBA,IAAIA,SAASA,GAAoBA,OAAOA,CAACA,QAAQA,CAACA,CAACA;4BACnDA,EAAEA,CAACA,CAACA,SAASA,CAACA,CAACA,CAACA;gCACZA,sBAAcA,CAACA,mCAAmCA,CAACA,SAASA,EAAEA,kBAAkBA,CAACA,CAACA;4BACtFA,CAACA;wBACLA,CAACA;oBACLA,CAACA;oBAEDA,MAAMA,CAACA,kBAAkBA,CAACA;gBAC9BA,CAACA;gBAEOR,+CAAiBA,GAAzBA;oBACIS,MAAMA,CAACA;wBACHA,UAAUA,EAAEA,IAAIA,CAACA,gBAAgBA;wBACjCA,UAAUA,EAAEA,kBAAUA,CAACA,2BAA2BA;wBAClDA,KAAKA,EAAEA,IAAIA,CAACA,cAAcA,EAAEA;wBAC5BA,QAAQA,EAAEA,iBAASA,CAACA,mBAAmBA;qBAC1CA,CAACA;gBACNA,CAACA;gBACLT,0BAACA;YAADA,CA/YAD,AA+YCC,IAAAD;YA/YYA,wCAAmBA,sBA+Y/BA,CAAAA;QACLA,CAACA,EAnaM57F,oBAAoBA,KAApBA,oBAAoBA,QAma1BA;IACLA,CAACA,EAr/DcrxC,OAAOA,GAAPA,eAAOA,KAAPA,eAAOA,QAq/DrBA;AAADA,CAACA,EAr/DM,OAAO,KAAP,OAAO,QAq/Db;ACjhED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,yCAAyC;AAEzC,IAAO,OAAO,CA2Hb;AA3HD,WAAO,OAAO;IAACA,IAAAA,OAAOA,CA2HrBA;IA3HcA,WAAAA,OAAOA,EAACA,CAACA;QACpBqxC,IAAOA,OAAOA,GAAGA,QAAQA,CAACA,OAAOA,CAACA;QAsBlCA;YAMIu8F,sBAAmBA,OAA4BA;gBAC3CC,IAAIA,CAACA,UAAUA,GAAGA,OAAOA,CAACA,UAAUA,CAACA;YACzCA,CAACA;YAEMD,2BAAIA,GAAXA,UAAYA,OAA0BA;gBAClCE,IAAIA,CAACA,OAAOA,GAAGA,OAAOA,CAACA,OAAOA,CAACA;gBAC/BA,IAAIA,CAACA,YAAYA,GAAGA,OAAOA,CAACA,IAAIA,CAACA;gBAEjCA,EAAEA,CAACA,CAACA,CAACA,IAAIA,CAACA,UAAUA,CAACA,CAACA,CAACA;oBACnBA,IAAIA,CAACA,YAAYA,CAACA,WAAWA,CAACA,CAACA,IAAIA,kCAA0BA,EAAEA,CAACA,CAACA,CAACA;gBACtEA,CAACA;YACLA,CAACA;YAEMF,6BAAMA,GAAbA,UAAcA,OAA4BA;gBACtCG,KAAKA,CAACA,WAAWA,CAACA,OAAOA,EAAEA,SAASA,CAACA,CAACA;gBAEtCA,IAAIA,SAASA,GAAGA,OAAOA,CAACA,SAASA,CAACA;gBAClCA,EAAEA,CAACA,CAACA,CAACA,SAASA,IAAIA,SAASA,CAACA,MAAMA,KAAKA,CAACA,CAACA;oBACrCA,MAAMA,CAACA;gBAEXA,IAAIA,QAAQA,GAAGA,SAASA,CAACA,CAACA,CAACA,CAACA;gBAC5BA,EAAEA,CAACA,CAACA,CAACA,QAAQA,IAAIA,CAACA,QAAQA,CAACA,QAAQA,CAACA;oBAChCA,MAAMA,CAACA;gBAEXA,IAAIA,QAAQA,CAACA;gBACbA,IAAIA,gBAAgBA,GAAGA,IAAIA,CAACA;gBAC5BA,EAAEA,CAACA,CAACA,CAACA,QAAQA,CAACA,YAAYA,IAAIA,CAACA,QAAQA,CAACA,YAAYA,CAACA,WAAWA,CAACA,CAACA,CAACA;oBAC/DA,QAAQA,GAAGA,IAAIA,CAACA,iBAAiBA,CAACA,QAAQA,CAACA,CAACA;oBAC5CA,gBAAgBA,GAAGA,KAAKA,CAACA;gBAC7BA,CAACA;gBACDA,IAAIA,CAACA,CAACA;oBACFA,QAAQA,GAAGA,wBAAwBA,GAAGA,QAAQA,CAACA,YAAYA,CAACA,WAAWA,CAACA;gBAC5EA,CAACA;gBAEDA,IAAIA,GAAGA,GAAWA,IAAIA,CAACA,sBAAsBA,CAACA;gBAC9CA,EAAEA,CAACA,CAACA,CAACA,GAAGA,CAACA,CAACA,CAACA;oBACPA,GAAGA,GAAGA,CAACA,CAACA,iCAAiCA,CAACA,CAACA;oBAC3CA,IAAIA,CAACA,sBAAsBA,GAAGA,GAAGA,CAACA;oBAClCA,IAAIA,CAACA,sBAAsBA,CAACA,QAAQA,CAACA,IAAIA,CAACA,OAAOA,CAACA,CAACA;gBACvDA,CAACA;gBAEDA,EAAEA,CAACA,CAACA,QAAQA,IAAIA,OAAOA,CAACA,mBAAmBA,CAACA,QAAQA,CAACA,CAACA,CAACA,CAACA;oBACpDA,IAAIA,QAAQA,GAAGA,OAAOA,CAACA,QAAQA,CAACA;oBAChCA,GAAGA,CAACA,GAAGA,CAACA,EAAEA,MAAMA,EAAEA,QAAQA,CAACA,MAAMA,EAAEA,KAAKA,EAAEA,QAAQA,CAACA,KAAKA,EAAEA,kBAAkBA,EAAEA,MAAMA,GAAGA,QAAQA,GAAGA,GAAGA,EAAEA,CAACA,CAACA;oBAEzGA,EAAEA,CAACA,CAACA,gBAAgBA,CAACA;wBACjBA,IAAIA,CAACA,oBAAoBA,CAACA,QAAQA,EAAEA,QAAQA,EAAEA,OAAOA,CAACA,QAAQA,CAACA,CAACA;gBACxEA,CAACA;gBACDA,IAAIA,CAACA,CAACA;oBACFA,GAAGA,CAACA,GAAGA,CAACA,EAAEA,kBAAkBA,EAAEA,MAAMA,EAAEA,CAACA,CAACA;gBAC5CA,CAACA;YACLA,CAACA;YAEOH,wCAAiBA,GAAzBA,UAA0BA,QAAkBA;gBACxCI,KAAKA,CAACA,WAAWA,CAACA,QAAQA,EAAEA,UAAUA,CAACA,CAACA;gBAExCA,IAAIA,eAAeA,GAAGA,IAAIA,CAACA;gBAC3BA,EAAEA,CAACA,CAACA,CAACA,QAAQA,IAAIA,CAACA,QAAQA,CAACA,QAAQA,CAACA;oBAChCA,MAAMA,CAACA,eAAeA,CAACA;gBAE3BA,IAAIA,OAAOA,GAAgCA,QAAQA,CAACA,QAAQA,CAACA,OAAOA,CAACA;gBACrEA,EAAEA,CAACA,CAACA,CAACA,OAAOA,IAAIA,CAACA,OAAOA,CAACA,cAAcA,CAACA;oBACpCA,MAAMA,CAACA,eAAeA,CAACA;gBAE3BA,IAAIA,QAAQA,GAAGA,OAAOA,CAACA,cAAcA,CAACA,QAAQA,CAACA;gBAC/CA,EAAEA,CAACA,CAACA,CAACA,OAAOA,CAACA,mBAAmBA,CAACA,QAAQA,CAACA,CAACA;oBACvCA,MAAMA,CAACA,eAAeA,CAACA;gBAE3BA,MAAMA,CAACA,QAAQA,CAACA;YACpBA,CAACA;YAEOJ,2CAAoBA,GAA5BA,UAA6BA,QAAkBA,EAAEA,QAAgBA,EAAEA,QAAmBA;gBAClFK,KAAKA,CAACA,WAAWA,CAACA,QAAQA,EAAEA,UAAUA,CAACA,CAACA;gBACxCA,KAAKA,CAACA,WAAWA,CAACA,QAAQA,EAAEA,UAAUA,CAACA,CAACA;gBAExCA,EAAEA,CAACA,CAACA,CAACA,OAAOA,CAACA,mBAAmBA,CAACA,QAAQA,CAACA,CAACA;oBACvCA,MAAMA,CAACA;gBAEXA,EAAEA,CAACA,CAACA,CAACA,QAAQA,IAAIA,CAACA,QAAQA,CAACA,QAAQA,CAACA;oBAChCA,MAAMA,CAACA;gBAEXA,IAAIA,OAAOA,GAA2BA,CAACA;wBACnCA,UAAUA,EAAEA,gBAAgBA;wBAC5BA,UAAUA,EAAEA;4BACRA,QAAQA,EAAEA,QAAQA;4BAClBA,cAAcA,EAAEA,QAAQA,CAACA,MAAMA;4BAC/BA,aAAaA,EAAEA,QAAQA,CAACA,KAAKA;yBAChCA;wBACDA,QAAQA,EAAEA,IAAIA;qBACjBA,CAACA,CAACA;gBAEHA,IAAIA,CAACA,YAAYA,CAACA,iBAAiBA,CAACA,OAAOA,CAACA,CAACA;YACjDA,CAACA;YACLL,mBAACA;QAADA,CAnGAv8F,AAmGCu8F,IAAAv8F;QAnGYA,oBAAYA,eAmGxBA,CAAAA;IACLA,CAACA,EA3HcrxC,OAAOA,GAAPA,eAAOA,KAAPA,eAAOA,QA2HrBA;AAADA,CAACA,EA3HM,OAAO,KAAP,OAAO,QA2Hb;ACvJD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,sCAAsC;AAEtC,IAAO,OAAO,CA4Rb;AA5RD,WAAO,OAAO;IAACA,IAAAA,OAAOA,CA4RrBA;IA5RcA,WAAAA,OAAOA;QAACqxC,IAAAA,OAAOA,CA4R7BA;QA5RsBA,WAAAA,OAAOA,EAACA,CAACA;YAC5B68F,kDAAkDA;YAErCA,sBAAcA,GAAkBA;gBACzCA,IAAIA,EAAEA,gBAAgBA;gBACtBA,YAAYA,EAAEA,oBAAYA,CAACA,cAAcA;gBACzCA,MAAMA,EAAEA,cAAMA,OAAAA,IAAIA,sBAAcA,EAAEA,EAApBA,CAAoBA;aACrCA,CAACA;YAESA,iBAASA,GAAkBA;gBAClCA,IAAIA,EAAEA,WAAWA;gBACjBA,YAAYA,EAAEA,MAAMA;gBACpBA,YAAYA,EAAEA,oBAAYA,CAACA,SAASA;gBACpCA,MAAMA,EAAEA,cAAMA,OAAAA,IAAIA,sBAAcA,CAACA,EAAEA,SAASA,EAAEA,YAAuBA,EAAEA,CAACA,EAA1DA,CAA0DA;gBACxEA,cAAcA,EAAEA,iBAASA,CAACA,cAAcA;gBACxCA,gBAAgBA,EAAEA,UAACA,qBAA6CA,IAAKA,OAAAA,mBAAWA,CAACA,gBAAgBA,CAACA,qBAAqBA,CAACA,EAAnDA,CAAmDA;aAC3HA,CAACA;YAESA,gBAAQA,GAAkBA;gBACjCA,IAAIA,EAAEA,UAAUA;gBAChBA,YAAYA,EAAEA,KAAKA;gBACnBA,YAAYA,EAAEA,oBAAYA,CAACA,QAAQA;gBACnCA,MAAMA,EAAEA,cAAMA,OAAAA,IAAIA,sBAAcA,CAACA,EAAEA,SAASA,EAAEA,kBAA6BA,EAAEA,CAACA,EAAhEA,CAAgEA;gBAC9EA,cAAcA,EAAEA,mBAAWA,CAACA,cAAcA;gBAC1CA,gBAAgBA,EAAEA,UAACA,qBAA6CA,IAAKA,OAAAA,mBAAWA,CAACA,gBAAgBA,CAACA,qBAAqBA,CAACA,EAAnDA,CAAmDA;aAC3HA,CAACA;YAESA,kBAAUA,GAAkBA;gBACnCA,IAAIA,EAAEA,YAAYA;gBAClBA,YAAYA,EAAEA,8BAAsBA;gBACpCA,MAAMA,EAAEA,cAAMA,OAAAA,IAAIA,wBAAgBA,EAAEA,EAAtBA,CAAsBA;aACvCA,CAACA;YAESA,YAAIA,GAAkBA;gBAC7BA,IAAIA,EAAEA,MAAMA;gBACZA,YAAYA,EAAEA,MAAMA;gBACpBA,YAAYA,EAAEA,oBAAYA,CAACA,IAAIA;gBAC/BA,MAAMA,EAAEA,cAAMA,OAAAA,IAAIA,YAAIA,EAAEA,EAAVA,CAAUA;aAC3BA,CAACA;YAESA,oBAAYA,GAAkBA;gBACrCA,IAAIA,EAAEA,cAAcA;gBACpBA,YAAYA,EAAEA,cAAcA;gBAC5BA,YAAYA,EAAEA,oBAAYA,CAACA,YAAYA;gBACvCA,MAAMA,EAAEA,cAAMA,OAAAA,IAAIA,oBAAYA,EAAEA,EAAlBA,CAAkBA;aACnCA,CAACA;YAESA,yBAAiBA,GAAkBA;gBAC1CA,IAAIA,EAAEA,mBAAmBA;gBACzBA,YAAYA,EAAEA,cAAcA;gBAC5BA,YAAYA,EAAEA,oBAAYA,CAACA,iBAAiBA;gBAC5CA,MAAMA,EAAEA,cAAMA,OAAAA,IAAIA,sBAAcA,CAACA,EAAEA,SAASA,EAAEA,oBAA+BA,EAAEA,CAACA,EAAlEA,CAAkEA;gBAChFA,cAAcA,EAAEA,mBAAWA,CAACA,cAAcA;gBAC1CA,gBAAgBA,EAAEA,UAACA,qBAA6CA,IAAKA,OAAAA,mBAAWA,CAACA,gBAAgBA,CAACA,qBAAqBA,CAACA,EAAnDA,CAAmDA;aAC3HA,CAACA;YAESA,4BAAoBA,GAAkBA;gBAC7CA,IAAIA,EAAEA,sBAAsBA;gBAC5BA,YAAYA,EAAEA,iBAAiBA;gBAC/BA,YAAYA,EAAEA,oBAAYA,CAACA,oBAAoBA;gBAC/CA,MAAMA,EAAEA,cAAMA,OAAAA,IAAIA,sBAAcA,CAACA,EAAEA,SAASA,EAAEA,uBAAkCA,EAAEA,CAACA,EAArEA,CAAqEA;gBACnFA,cAAcA,EAAEA,mBAAWA,CAACA,cAAcA;gBAC1CA,gBAAgBA,EAAEA,UAACA,qBAA6CA,IAAKA,OAAAA,mBAAWA,CAACA,gBAAgBA,CAACA,qBAAqBA,CAACA,EAAnDA,CAAmDA;aAC3HA,CAACA;YAESA,mBAAWA,GAAkBA;gBACpCA,IAAIA,EAAEA,aAAaA;gBACnBA,YAAYA,EAAEA,QAAQA;gBACtBA,YAAYA,EAAEA,oBAAYA,CAACA,WAAWA;gBACtCA,MAAMA,EAAEA,cAAMA,OAAAA,IAAIA,sBAAcA,CAACA,EAAEA,SAASA,EAAEA,qBAAgCA,EAAEA,CAACA,EAAnEA,CAAmEA;gBACjFA,cAAcA,EAAEA,mBAAWA,CAACA,cAAcA;gBAC1CA,gBAAgBA,EAAEA,UAACA,qBAA6CA,IAAKA,OAAAA,mBAAWA,CAACA,gBAAgBA,CAACA,qBAAqBA,CAACA,EAAnDA,CAAmDA;aAC3HA,CAACA;YAESA,kBAAUA,GAAkBA;gBACnCA,IAAIA,EAAEA,YAAYA;gBAClBA,YAAYA,EAAEA,OAAOA;gBACrBA,YAAYA,EAAEA,oBAAYA,CAACA,UAAUA;gBACrCA,cAAcA,EAAEA,kBAAUA,CAACA,cAAcA;gBACzCA,MAAMA,EAAEA,cAAMA,OAAAA,IAAIA,sBAAcA,CAACA,EAAEA,SAASA,EAAEA,mBAA6BA,EAAEA,CAACA,EAAhEA,CAAgEA;aACjFA,CAACA;YAESA,oBAAYA,GAAkBA;gBACrCA,IAAIA,EAAEA,cAAcA;gBACpBA,YAAYA,EAAEA,oBAAYA,CAACA,YAAYA;gBACvCA,MAAMA,EAAEA,cAAMA,OAAAA,IAAIA,sBAAcA,CAACA,EAAEA,SAASA,EAAEA,gBAA0BA,EAAEA,CAACA,EAA7DA,CAA6DA;aAC9EA,CAACA;YAESA,wCAAgCA,GAAkBA;gBACzDA,IAAIA,EAAEA,kCAAkCA;gBACxCA,YAAYA,EAAEA,OAAOA;gBACrBA,YAAYA,EAAEA,oBAAYA,CAACA,gCAAgCA;gBAC3DA,cAAcA,EAAEA,kBAAUA,CAACA,cAAcA;gBACzCA,MAAMA,EAAEA,cAAMA,OAAAA,IAAIA,sBAAcA,CAACA,EAAEA,SAASA,EAAEA,oCAA8CA,EAAEA,CAACA,EAAjFA,CAAiFA;aAClGA,CAACA;YAESA,sCAA8BA,GAAkBA;gBACvDA,IAAIA,EAAEA,gCAAgCA;gBACtCA,YAAYA,EAAEA,OAAOA;gBACrBA,YAAYA,EAAEA,oBAAYA,CAACA,8BAA8BA;gBACzDA,cAAcA,EAAEA,kBAAUA,CAACA,cAAcA;gBACzCA,MAAMA,EAAEA,cAAMA,OAAAA,IAAIA,sBAAcA,CAACA,EAAEA,SAASA,EAAEA,kCAA4CA,EAAEA,CAACA,EAA/EA,CAA+EA;aAChGA,CAACA;YAESA,kBAAUA,GAAkBA;gBACnCA,IAAIA,EAAEA,YAAYA;gBAClBA,YAAYA,EAAEA,OAAOA;gBACrBA,YAAYA,EAAEA,oBAAYA,CAACA,UAAUA;gBACrCA,MAAMA,EAAEA,cAAMA,OAAAA,IAAIA,kBAAUA,EAAEA,EAAhBA,CAAgBA;aACjCA,CAACA;YAESA,cAAMA,GAAkBA;gBAC/BA,IAAIA,EAAEA,QAAQA;gBACdA,YAAYA,EAAEA,QAAQA;gBACtBA,YAAYA,EAAEA,oBAAYA,CAACA,MAAMA;gBACjCA,MAAMA,EAAEA,cAAMA,OAAAA,IAAIA,mBAAWA,EAAEA,EAAjBA,CAAiBA;aAClCA,CAACA;YAESA,aAAKA,GAAkBA;gBAC9BA,IAAIA,EAAEA,OAAOA;gBACbA,YAAYA,EAAEA,OAAOA;gBACrBA,YAAYA,EAAEA,oBAAYA,CAACA,KAAKA;gBAChCA,MAAMA,EAAEA,cAAMA,OAAAA,IAAIA,aAAKA,EAAEA,EAAXA,CAAWA;aAC5BA,CAACA;YAESA,qCAA6BA,GAAkBA;gBACtDA,IAAIA,EAAEA,+BAA+BA;gBACrCA,YAAYA,EAAEA,eAAeA;gBAC7BA,YAAYA,EAAEA,oBAAYA,CAACA,6BAA6BA;gBACxDA,MAAMA,EAAEA,cAAMA,OAAAA,IAAIA,sBAAcA,CAACA,EAAEA,SAASA,EAAEA,gCAA2CA,EAAEA,CAACA,EAA9EA,CAA8EA;gBAC5FA,cAAcA,EAAEA,mBAAWA,CAACA,cAAcA;gBAC1CA,gBAAgBA,EAAEA,UAACA,qBAA6CA,IAAKA,OAAAA,mBAAWA,CAACA,gBAAgBA,CAACA,qBAAqBA,CAACA,EAAnDA,CAAmDA;aAC3HA,CAACA;YAESA,wCAAgCA,GAAkBA;gBACzDA,IAAIA,EAAEA,kCAAkCA;gBACxCA,YAAYA,EAAEA,kBAAkBA;gBAChCA,YAAYA,EAAEA,oBAAYA,CAACA,gCAAgCA;gBAC3DA,MAAMA,EAAEA,cAAMA,OAAAA,IAAIA,sBAAcA,CAACA,EAAEA,SAASA,EAAEA,mCAA8CA,EAAEA,CAACA,EAAjFA,CAAiFA;gBAC/FA,cAAcA,EAAEA,mBAAWA,CAACA,cAAcA;gBAC1CA,gBAAgBA,EAAEA,UAACA,qBAA6CA,IAAKA,OAAAA,mBAAWA,CAACA,gBAAgBA,CAACA,qBAAqBA,CAACA,EAAnDA,CAAmDA;aAC3HA,CAACA;YAESA,aAAKA,GAAkBA;gBAC9BA,IAAIA,EAAEA,OAAOA;gBACbA,YAAYA,EAAEA,oBAAYA,CAACA,KAAKA;gBAChCA,MAAMA,EAAEA,cAAMA,OAAAA,IAAIA,mBAAWA,EAAEA,EAAjBA,CAAiBA;aAClCA,CAACA;YAESA,iBAASA,GAAkBA;gBAClCA,IAAIA,EAAEA,WAAWA;gBACjBA,YAAYA,EAAEA,MAAMA;gBACpBA,YAAYA,EAAEA,oBAAYA,CAACA,SAASA;gBACpCA,MAAMA,EAAEA,cAAMA,OAAAA,IAAIA,sBAAcA,CAACA,EAAEA,SAASA,EAAEA,YAAuBA,EAAEA,CAACA,EAA1DA,CAA0DA;gBACxEA,cAAcA,EAAEA,iBAASA,CAACA,cAAcA;gBACxCA,gBAAgBA,EAAEA,UAACA,qBAA6CA,IAAKA,OAAAA,iBAASA,CAACA,gBAAgBA,CAACA,qBAAqBA,CAACA,EAAjDA,CAAiDA;aACzHA,CAACA;YAESA,mCAA2BA,GAAkBA;gBACpDA,IAAIA,EAAEA,6BAA6BA;gBACnCA,YAAYA,EAAEA,OAAOA;gBACrBA,YAAYA,EAAEA,oBAAYA,CAACA,2BAA2BA;gBACtDA,cAAcA,EAAEA,kBAAUA,CAACA,cAAcA;gBACzCA,MAAMA,EAAEA,cAAMA,OAAAA,IAAIA,sBAAcA,CAACA,EAAEA,SAASA,EAAEA,+BAAyCA,EAAEA,CAACA,EAA5EA,CAA4EA;gBAC1FA,gBAAgBA,EAAEA,UAACA,qBAA6CA,IAAKA,OAAAA,mBAAWA,CAACA,gBAAgBA,CAACA,qBAAqBA,CAACA,EAAnDA,CAAmDA;aAC3HA,CAACA;YAESA,qCAA6BA,GAAkBA;gBACtDA,IAAIA,EAAEA,+BAA+BA;gBACrCA,YAAYA,EAAEA,OAAOA;gBACrBA,YAAYA,EAAEA,oBAAYA,CAACA,6BAA6BA;gBACxDA,cAAcA,EAAEA,kBAAUA,CAACA,cAAcA;gBACzCA,MAAMA,EAAEA,cAAMA,OAAAA,IAAIA,sBAAcA,CAACA,EAAEA,SAASA,EAAEA,iCAA2CA,EAAEA,CAACA,EAA9EA,CAA8EA;gBAC5FA,gBAAgBA,EAAEA,UAACA,qBAA6CA,IAAKA,OAAAA,mBAAWA,CAACA,gBAAgBA,CAACA,qBAAqBA,CAACA,EAAnDA,CAAmDA;aAC3HA,CAACA;YAESA,WAAGA,GAAkBA;gBAC5BA,IAAIA,EAAEA,KAAKA;gBACXA,YAAYA,EAAEA,KAAKA;gBACnBA,YAAYA,EAAEA,oBAAYA,CAACA,GAAGA;gBAC9BA,MAAMA,EAAEA,cAAMA,OAAAA,IAAIA,WAAGA,CAACA,EAAEA,SAASA,EAAEA,KAAKA,EAAEA,CAACA,EAA7BA,CAA6BA;aAC9CA,CAACA;YAESA,iBAASA,GAAkBA;gBAClCA,IAAIA,EAAEA,WAAWA;gBACjBA,YAAYA,EAAEA,WAAWA;gBACzBA,YAAYA,EAAEA,oBAAYA,CAACA,SAASA;gBACpCA,MAAMA,EAAEA,cAAMA,OAAAA,IAAIA,WAAGA,CAACA,EAAEA,SAASA,EAAEA,IAAIA,EAAEA,CAACA,EAA5BA,CAA4BA;aAC7CA,CAACA;YAESA,eAAOA,GAAkBA;gBAChCA,IAAIA,EAAEA,SAASA;gBACfA,YAAYA,EAAEA,MAAMA;gBACpBA,YAAYA,EAAEA,oBAAYA,CAACA,OAAOA;gBAClCA,MAAMA,EAAEA,cAAMA,OAAAA,IAAIA,eAAOA,EAAEA,EAAbA,CAAaA;aAC9BA,CAACA;YAESA,gBAAQA,GAAkBA;gBACjCA,IAAIA,EAAEA,UAAUA;gBAChBA,YAAYA,EAAEA,KAAKA;gBACnBA,YAAYA,EAAEA,oBAAYA,CAACA,UAAUA;gBACrCA,MAAMA,EAAEA,cAAMA,OAAAA,IAAIA,kBAAUA,CAACA,EAAEA,eAAeA,EAAEA,CAACA,EAAEA,CAACA,EAAtCA,CAAsCA;aACvDA,CAACA;YAESA,oBAAYA,GAAkBA;gBACrCA,IAAIA,EAAEA,cAAcA;gBACpBA,YAAYA,EAAEA,aAAaA;gBAC3BA,YAAYA,EAAEA,oBAAYA,CAACA,YAAYA;gBACvCA,MAAMA,EAAEA,cAAMA,OAAAA,IAAIA,sBAAcA,CAACA,EAAEA,SAASA,EAAEA,eAA0BA,EAAEA,CAACA,EAA7DA,CAA6DA;aAC9EA,CAACA;YAESA,wBAAgBA,GAAkBA;gBACzCA,IAAIA,EAAEA,kBAAkBA;gBACxBA,YAAYA,EAAEA,aAAaA;gBAC3BA,YAAYA,EAAEA,oBAAYA,CAACA,SAASA;gBACpCA,MAAMA,EAAEA,cAAMA,OAAAA,IAAIA,sBAAcA,CAACA,EAAEA,SAASA,EAAEA,mBAA8BA,EAAEA,CAACA,EAAjEA,CAAiEA;gBAC/EA,cAAcA,EAAEA,iBAASA,CAACA,cAAcA;gBACxCA,gBAAgBA,EAAEA,UAACA,qBAA6CA,IAAKA,OAAAA,mBAAWA,CAACA,gBAAgBA,CAACA,qBAAqBA,CAACA,EAAnDA,CAAmDA;aAC3HA,CAACA;YAESA,aAAKA,GAAkBA;gBAC9BA,IAAIA,EAAEA,OAAOA;gBACbA,YAAYA,EAAEA,OAAOA;gBACrBA,YAAYA,EAAEA,oBAAYA,CAACA,KAAKA;gBAChCA,MAAMA,EAAEA,cAAMA,OAAAA,IAAIA,aAAKA,EAAEA,EAAXA,CAAWA;gBACzBA,cAAcA,EAAEA,aAAKA,CAACA,cAAcA;gBACpCA,gBAAgBA,EAAEA,UAACA,qBAA6CA,IAAKA,OAAAA,aAAKA,CAACA,gBAAgBA,EAAEA,EAAxBA,CAAwBA;aAChGA,CAACA;YAESA,cAAMA,GAAkBA;gBAC/BA,IAAIA,EAAEA,QAAQA;gBACdA,YAAYA,EAAEA,QAAQA;gBACtBA,YAAYA,EAAEA,oBAAYA,CAACA,MAAMA;gBACjCA,MAAMA,EAAEA,cAAMA,OAAAA,IAAIA,cAAMA,EAAEA,EAAZA,CAAYA;gBAC1BA,cAAcA,EAAEA,cAAMA,CAACA,cAAcA;gBACrCA,gBAAgBA,EAAEA,UAACA,qBAA6CA,IAAKA,OAAAA,cAAMA,CAACA,gBAAgBA,EAAEA,EAAzBA,CAAyBA;aACjGA,CAACA;YAESA,cAAMA,GAAkBA;gBAC/BA,IAAIA,EAAEA,QAAQA;gBACdA,YAAYA,EAAEA,QAAQA;gBACtBA,YAAYA,EAAEA,oBAAYA,CAACA,MAAMA;gBACjCA,MAAMA,EAAEA,cAAMA,OAAAA,IAAIA,cAAMA,EAAEA,EAAZA,CAAYA;aAC7BA,CAACA;YAESA,eAAOA,GAAkBA;gBAChCA,IAAIA,EAAEA,SAASA;gBACfA,YAAYA,EAAEA,oBAAYA,CAACA,OAAOA;gBAClCA,MAAMA,EAAEA,cAAMA,OAAAA,IAAIA,eAAOA,EAAEA,EAAbA,CAAaA;aAC9BA,CAACA;YAESA,sBAAcA,GAAkBA;gBACvCA,IAAIA,EAAEA,gBAAgBA;gBACtBA,YAAYA,EAAEA,WAAWA;gBACzBA,YAAYA,EAAEA,oBAAYA,CAACA,cAAcA;gBACzCA,MAAMA,EAAEA,cAAMA,OAAAA,IAAIA,sBAAcA,CAACA,EAAEA,SAASA,EAAEA,kBAA4BA,EAAEA,CAACA,EAA/DA,CAA+DA;aAChFA,CAACA;YAESA,kBAAUA,GAAkBA;gBACnCA,IAAIA,EAAEA,YAAYA;gBAClBA,YAAYA,EAAEA,kBAAUA,CAACA,YAAYA;gBACrCA,MAAMA,EAAEA,cAAMA,OAAAA,IAAIA,kBAAUA,EAAEA,EAAhBA,CAAgBA;aACjCA,CAACA;YAESA,gBAAQA,GAAkBA;gBACjCA,IAAIA,EAAEA,UAAUA;gBAChBA,YAAYA,EAAEA,OAAOA;gBACrBA,YAAYA,EAAEA,gBAAQA,CAACA,YAAYA;gBACnCA,MAAMA,EAAEA,cAAMA,OAAAA,IAAIA,gBAAQA,EAAEA,EAAdA,CAAcA;aAC/BA,CAACA;YAESA,oBAAYA,GAAkBA;gBACrCA,IAAIA,EAAEA,cAAcA;gBACpBA,YAAYA,EAAEA,cAAcA;gBAC5BA,YAAYA,EAAEA,oBAAYA,CAACA,YAAYA;gBACvCA,MAAMA,EAAEA,cAAMA,OAAAA,IAAIA,oBAAYA,CAACA,EAAEA,UAAUA,EAAEA,KAAKA,EAAEA,CAACA,EAAvCA,CAAuCA;aACxDA,CAACA;YAESA,WAAGA,GAAkBA;gBAC5BA,IAAIA,EAAEA,KAAKA;gBACXA,YAAYA,EAAEA,KAAKA;gBACnBA,YAAYA,EAAEA,oBAAYA,CAACA,GAAGA;gBAC9BA,MAAMA,EAAEA,cAAMA,OAAAA,IAAIA,4BAAoBA,EAAEA,EAA1BA,CAA0BA;aAC3CA,CAACA;QACNA,CAACA,EA5RsB78F,OAAOA,GAAPA,eAAOA,KAAPA,eAAOA,QA4R7BA;IAADA,CAACA,EA5RcrxC,OAAOA,GAAPA,eAAOA,KAAPA,eAAOA,QA4RrBA;AAADA,CAACA,EA5RM,OAAO,KAAP,OAAO,QA4Rb;ACxTD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,4CAA4C;AAC5C,gDAAgD;AAEhD,uCAAuC;AACvC,sCAAsC;AACtC,iCAAiC;AAEjC,0CAA0C;AAC1C,0CAA0C;AAC1C,yCAAyC;AACzC,+CAA+C;AAC/C,iDAAiD;AACjD,8CAA8C;AAC9C,2CAA2C;AAC3C,+CAA+C;AAC/C,mDAAmD;AACnD,0CAA0C;AAC1C,wCAAwC;AACxC,sDAAsD;AACtD,kDAAkD;AAClD,8CAA8C;AAE9C,mDAAmD;AACnD,wDAAwD;AACxD,uDAAuD;AACvD,wDAAwD;AACxD,oDAAoD;AAEpD,mEAAmE;AACnE,+DAA+D;AAC/D,gEAAgE;AAChE,+DAA+D;AAC/D,+DAA+D;AAC/D,iEAAiE;AACjE,8DAA8D;AAC9D,gEAAgE;AAChE,0DAA0D;AAC1D,gEAAgE;AAChE,iEAAiE;AAEjE,8DAA8D;AAC9D,wDAAwD;AACxD,iEAAiE;AACjE,4DAA4D;AAC5D,iEAAiE;AACjE,iEAAiE;AACjE,2DAA2D;AAC3D,0DAA0D;AAC1D,2DAA2D;AAC3D,4DAA4D;AAC5D,yDAAyD;AACzD,mEAAmE;AACnE,6DAA6D;AAC7D,yEAAyE;AACzE,8CAA8C;AAE9C,0DAA0D;AAC1D,0DAA0D;AAC1D,yDAAyD;AACzD,qDAAqD;AACrD,wDAAwD;AACxD,kDAAkD;AAClD,2DAA2D;AAC3D,+DAA+D;AAC/D,6DAA6D;AAC7D,qDAAqD;AACrD,qDAAqD;AACrD,sDAAsD;AACtD,4DAA4D;AAC5D,oDAAoD;AACpD,6DAA6D;AAE7D,8CAA8C;AAE9C,4CAA4C;AAC5C,iDAAiD;AACjD,iDAAiD;AACjD,6CAA6C;AAC7C,iDAAiD;AACjD,iDAAiD;AACjD,gDAAgD;AAChD,iDAAiD;AACjD,mDAAmD;AACnD,gDAAgD;AAChD,yCAAyC;AACzC,qDAAqD;AAErD,0DAA0D;AAC1D,0CAA0C;AAC1C,yCAAyC;AACzC,6CAA6C;AAC7C,kDAAkD;AAClD,wCAAwC;AACxC,4CAA4C;AAC5C,8CAA8C;AAC9C,yCAAyC;AACzC,0CAA0C;AAC1C,2CAA2C;AAC3C,gDAAgD;AAChD,wDAAwD;AACxD,0DAA0D;AAC1D,kDAAkD;AAClD,2CAA2C;AAC3C,gDAAgD;AAEhD,qDAAqD;AAErD,sDAAsD;AACtD,iDAAiD;AACjD,sDAAsD;AACtD,uDAAuD;AACvD,qDAAqD;AACrD,0DAA0D;AAC1D,oDAAoD;AACpD,sDAAsD;AACtD,0DAA0D;AAE1D,yDAAyD;AACzD,4DAA4D;AAC5D,wDAAwD;AACxD,4CAA4C;AAC5C,kDAAkD;AAClD,uDAAuD;AAEvD,uDAAuD;AACvD,uEAAuE;AACvE,4EAA4E;AAC5E,8DAA8D;AAC9D,uEAAuE;AACvE,+DAA+D;AAC/D,oEAAoE;AACpE,wDAAwD;AACxD,+DAA+D;AAC/D,wDAAwD;AACxD,0DAA0D;AAC1D,8DAA8D;AAC9D,iEAAiE;AACjE,4DAA4D;AAC5D,mEAAmE;AAEnE,+CAA+C;AAC/C,iDAAiD;AAEjD,6CAA6C;AAE7C,mDAAmD;AAEnD,gDAAgD;AAChD,yDAAyD;AACzD,uDAAuD;AAEvD,+CAA+C;AAE/C,2CAA2C;AAE3C,iDAAiD;AACjD,8CAA8C;AAC9C,wCAAwC;AACxC,8CAA8C;AAC9C,uDAAuD;AAEvD,8CAA8C;AAE9C,sCAAsC;AACtC,+CAA+C;AAC/C,0CAA0C;AAC1C,+CAA+C;AAC/C,iDAAiD;AACjD,8CAA8C;AAE9C,iDAAiD;AACjD,mDAAmD;AACnD,yCAAyC;AACzC,wCAAwC;AACxC,yCAAyC;AACzC,0CAA0C;AAC1C,uCAAuC;AACvC,2CAA2C;AAC3C,kDAAkD;AAClD,mDAAmD;AAEnD,kCAAkC;AAElC,8CAA8C;AAE9C,6CAA6C;AAC7C,+CAA+C;AAE/C,kCAAkC;ACtNlC;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,AAEA,yCAFyC;AC1BzC;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,yCAAyC;AAEzC,IAAO,OAAO,CAab;AAbD,WAAO,OAAO;IAACA,IAAAA,OAAOA,CAarBA;IAbcA,WAAAA,OAAOA,EAACA,CAACA;QAEpBqxC,IAAcA,sBAAsBA,CAUnCA;QAVDA,WAAcA,sBAAsBA,EAACA,CAACA;YAClC88F;gBACIC,MAAMA,CAACA,SAASA,CAACA;YACrBA,CAACA;YAFeD,sCAAeA,kBAE9BA,CAAAA;YAEDA;gBACIE,MAAMA,CAACA;oBACHA,KAAKA,EAAEA,eAAeA,EAAEA;iBAC3BA,CAACA;YACNA,CAACA;YAJeF,uCAAgBA,mBAI/BA,CAAAA;QACLA,CAACA,EAVa98F,sBAAsBA,GAAtBA,8BAAsBA,KAAtBA,8BAAsBA,QAUnCA;IACLA,CAACA,EAbcrxC,OAAOA,GAAPA,eAAOA,KAAPA,eAAOA,QAarBA;AAADA,CAACA,EAbM,OAAO,KAAP,OAAO,QAab","file":"powerbi-visuals.all.js","sourcesContent":["/*! jQuery v2.1.3 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */\r\n!function(a,b){\"object\"==typeof module&&\"object\"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error(\"jQuery requires a window with a document\");return b(a)}:b(a)}(\"undefined\"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l=a.document,m=\"2.1.3\",n=function(a,b){return new n.fn.init(a,b)},o=/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g,p=/^-ms-/,q=/-([\\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:\"\",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return n.each(this,a,b)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for(\"boolean\"==typeof g&&(j=g,g=arguments[h]||{},h++),\"object\"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(n.isPlainObject(d)||(e=n.isArray(d)))?(e?(e=!1,f=c&&n.isArray(c)?c:[]):f=c&&n.isPlainObject(c)?c:{},g[b]=n.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},n.extend({expando:\"jQuery\"+(m+Math.random()).replace(/\\D/g,\"\"),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return\"function\"===n.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){return!n.isArray(a)&&a-parseFloat(a)+1>=0},isPlainObject:function(a){return\"object\"!==n.type(a)||a.nodeType||n.isWindow(a)?!1:a.constructor&&!j.call(a.constructor.prototype,\"isPrototypeOf\")?!1:!0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+\"\":\"object\"==typeof a||\"function\"==typeof a?h[i.call(a)]||\"object\":typeof a},globalEval:function(a){var b,c=eval;a=n.trim(a),a&&(1===a.indexOf(\"use strict\")?(b=l.createElement(\"script\"),b.text=a,l.head.appendChild(b).parentNode.removeChild(b)):c(a))},camelCase:function(a){return a.replace(p,\"ms-\").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=s(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?\"\":(a+\"\").replace(o,\"\")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,\"string\"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:g.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;c>d;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=s(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return\"string\"==typeof b&&(c=a[b],b=a,a=c),n.isFunction(a)?(e=d.call(arguments,2),f=function(){return a.apply(b||this,e.concat(d.call(arguments)))},f.guid=a.guid=a.guid||n.guid++,f):void 0},now:Date.now,support:k}),n.each(\"Boolean Number String Function Array Date RegExp Object Error\".split(\" \"),function(a,b){h[\"[object \"+b+\"]\"]=b.toLowerCase()});function s(a){var b=a.length,c=n.type(a);return\"function\"===c||n.isWindow(a)?!1:1===a.nodeType&&b?!0:\"array\"===c||0===b||\"number\"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u=\"sizzle\"+1*new Date,v=a.document,w=0,x=0,y=hb(),z=hb(),A=hb(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K=\"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped\",L=\"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",M=\"(?:\\\\\\\\.|[\\\\w-]|[^\\\\x00-\\\\xa0])+\",N=M.replace(\"w\",\"w#\"),O=\"\\\\[\"+L+\"*(\"+M+\")(?:\"+L+\"*([*^$|!~]?=)\"+L+\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\"+N+\"))|)\"+L+\"*\\\\]\",P=\":(\"+M+\")(?:\\\\((('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\"+O+\")*)|.*)\\\\)|)\",Q=new RegExp(L+\"+\",\"g\"),R=new RegExp(\"^\"+L+\"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\"+L+\"+$\",\"g\"),S=new RegExp(\"^\"+L+\"*,\"+L+\"*\"),T=new RegExp(\"^\"+L+\"*([>+~]|\"+L+\")\"+L+\"*\"),U=new RegExp(\"=\"+L+\"*([^\\\\]'\\\"]*?)\"+L+\"*\\\\]\",\"g\"),V=new RegExp(P),W=new RegExp(\"^\"+N+\"$\"),X={ID:new RegExp(\"^#(\"+M+\")\"),CLASS:new RegExp(\"^\\\\.(\"+M+\")\"),TAG:new RegExp(\"^(\"+M.replace(\"w\",\"w*\")+\")\"),ATTR:new RegExp(\"^\"+O),PSEUDO:new RegExp(\"^\"+P),CHILD:new RegExp(\"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\"+L+\"*(even|odd|(([+-]|)(\\\\d*)n|)\"+L+\"*(?:([+-]|)\"+L+\"*(\\\\d+)|))\"+L+\"*\\\\)|)\",\"i\"),bool:new RegExp(\"^(?:\"+K+\")$\",\"i\"),needsContext:new RegExp(\"^\"+L+\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\"+L+\"*((?:-\\\\d)?\\\\d*)\"+L+\"*\\\\)|)(?=[^-]|$)\",\"i\")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\\d$/i,$=/^[^{]+\\{\\s*\\[native \\w/,_=/^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,ab=/[+~]/,bb=/'|\\\\/g,cb=new RegExp(\"\\\\\\\\([\\\\da-f]{1,6}\"+L+\"?|(\"+L+\")|.)\",\"ig\"),db=function(a,b,c){var d=\"0x\"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},eb=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(fb){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function gb(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],k=b.nodeType,\"string\"!=typeof a||!a||1!==k&&9!==k&&11!==k)return d;if(!e&&p){if(11!==k&&(f=_.exec(a)))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return H.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName)return H.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=1!==k&&a,1===k&&\"object\"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute(\"id\"))?s=r.replace(bb,\"\\\\$&\"):b.setAttribute(\"id\",s),s=\"[id='\"+s+\"'] \",l=o.length;while(l--)o[l]=s+rb(o[l]);w=ab.test(a)&&pb(b.parentNode)||b,x=o.join(\",\")}if(x)try{return H.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute(\"id\")}}}return i(a.replace(R,\"$1\"),b,d,e)}function hb(){var a=[];function b(c,e){return a.push(c+\" \")>d.cacheLength&&delete b[a.shift()],b[c+\" \"]=e}return b}function ib(a){return a[u]=!0,a}function jb(a){var b=n.createElement(\"div\");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function kb(a,b){var c=a.split(\"|\"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function lb(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function mb(a){return function(b){var c=b.nodeName.toLowerCase();return\"input\"===c&&b.type===a}}function nb(a){return function(b){var c=b.nodeName.toLowerCase();return(\"input\"===c||\"button\"===c)&&b.type===a}}function ob(a){return ib(function(b){return b=+b,ib(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function pb(a){return a&&\"undefined\"!=typeof a.getElementsByTagName&&a}c=gb.support={},f=gb.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?\"HTML\"!==b.nodeName:!1},m=gb.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=g.documentElement,e=g.defaultView,e&&e!==e.top&&(e.addEventListener?e.addEventListener(\"unload\",eb,!1):e.attachEvent&&e.attachEvent(\"onunload\",eb)),p=!f(g),c.attributes=jb(function(a){return a.className=\"i\",!a.getAttribute(\"className\")}),c.getElementsByTagName=jb(function(a){return a.appendChild(g.createComment(\"\")),!a.getElementsByTagName(\"*\").length}),c.getElementsByClassName=$.test(g.getElementsByClassName),c.getById=jb(function(a){return o.appendChild(a).id=u,!g.getElementsByName||!g.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if(\"undefined\"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){return a.getAttribute(\"id\")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){var c=\"undefined\"!=typeof a.getAttributeNode&&a.getAttributeNode(\"id\");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return\"undefined\"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if(\"*\"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(g.querySelectorAll))&&(jb(function(a){o.appendChild(a).innerHTML=\"<a id='\"+u+\"'></a><select id='\"+u+\"-\\f]' msallowcapture=''><option selected=''></option></select>\",a.querySelectorAll(\"[msallowcapture^='']\").length&&q.push(\"[*^$]=\"+L+\"*(?:''|\\\"\\\")\"),a.querySelectorAll(\"[selected]\").length||q.push(\"\\\\[\"+L+\"*(?:value|\"+K+\")\"),a.querySelectorAll(\"[id~=\"+u+\"-]\").length||q.push(\"~=\"),a.querySelectorAll(\":checked\").length||q.push(\":checked\"),a.querySelectorAll(\"a#\"+u+\"+*\").length||q.push(\".#.+[+~]\")}),jb(function(a){var b=g.createElement(\"input\");b.setAttribute(\"type\",\"hidden\"),a.appendChild(b).setAttribute(\"name\",\"D\"),a.querySelectorAll(\"[name=d]\").length&&q.push(\"name\"+L+\"*[*^$|!~]?=\"),a.querySelectorAll(\":enabled\").length||q.push(\":enabled\",\":disabled\"),a.querySelectorAll(\"*,:x\"),q.push(\",.*:\")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&jb(function(a){c.disconnectedMatch=s.call(a,\"div\"),s.call(a,\"[s!='']:x\"),r.push(\"!=\",P)}),q=q.length&&new RegExp(q.join(\"|\")),r=r.length&&new RegExp(r.join(\"|\")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===g||a.ownerDocument===v&&t(v,a)?-1:b===g||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,h=[a],i=[b];if(!e||!f)return a===g?-1:b===g?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return lb(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?lb(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},g):n},gb.matches=function(a,b){return gb(a,null,null,b)},gb.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,\"='$1']\"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return gb(b,n,null,[a]).length>0},gb.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},gb.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},gb.error=function(a){throw new Error(\"Syntax error, unrecognized expression: \"+a)},gb.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=gb.getText=function(a){var b,c=\"\",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if(\"string\"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=gb.selectors={cacheLength:50,createPseudo:ib,match:X,attrHandle:{},find:{},relative:{\">\":{dir:\"parentNode\",first:!0},\" \":{dir:\"parentNode\"},\"+\":{dir:\"previousSibling\",first:!0},\"~\":{dir:\"previousSibling\"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(cb,db),a[3]=(a[3]||a[4]||a[5]||\"\").replace(cb,db),\"~=\"===a[2]&&(a[3]=\" \"+a[3]+\" \"),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),\"nth\"===a[1].slice(0,3)?(a[3]||gb.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*(\"even\"===a[3]||\"odd\"===a[3])),a[5]=+(a[7]+a[8]||\"odd\"===a[3])):a[3]&&gb.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||\"\":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(\")\",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(cb,db).toLowerCase();return\"*\"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+\" \"];return b||(b=new RegExp(\"(^|\"+L+\")\"+a+\"(\"+L+\"|$)\"))&&y(a,function(a){return b.test(\"string\"==typeof a.className&&a.className||\"undefined\"!=typeof a.getAttribute&&a.getAttribute(\"class\")||\"\")})},ATTR:function(a,b,c){return function(d){var e=gb.attr(d,a);return null==e?\"!=\"===b:b?(e+=\"\",\"=\"===b?e===c:\"!=\"===b?e!==c:\"^=\"===b?c&&0===e.indexOf(c):\"*=\"===b?c&&e.indexOf(c)>-1:\"$=\"===b?c&&e.slice(-c.length)===c:\"~=\"===b?(\" \"+e.replace(Q,\" \")+\" \").indexOf(c)>-1:\"|=\"===b?e===c||e.slice(0,c.length+1)===c+\"-\":!1):!0}},CHILD:function(a,b,c,d,e){var f=\"nth\"!==a.slice(0,3),g=\"last\"!==a.slice(-4),h=\"of-type\"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?\"nextSibling\":\"previousSibling\",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p=\"only\"===a&&!o&&\"nextSibling\"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||gb.error(\"unsupported pseudo: \"+a);return e[u]?e(b):e.length>1?(c=[a,a,\"\",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ib(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ib(function(a){var b=[],c=[],d=h(a.replace(R,\"$1\"));return d[u]?ib(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ib(function(a){return function(b){return gb(a,b).length>0}}),contains:ib(function(a){return a=a.replace(cb,db),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ib(function(a){return W.test(a||\"\")||gb.error(\"unsupported lang: \"+a),a=a.replace(cb,db).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute(\"xml:lang\")||b.getAttribute(\"lang\"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+\"-\");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return\"input\"===b&&!!a.checked||\"option\"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return\"input\"===b&&\"button\"===a.type||\"button\"===b},text:function(a){var b;return\"input\"===a.nodeName.toLowerCase()&&\"text\"===a.type&&(null==(b=a.getAttribute(\"type\"))||\"text\"===b.toLowerCase())},first:ob(function(){return[0]}),last:ob(function(a,b){return[b-1]}),eq:ob(function(a,b,c){return[0>c?c+b:c]}),even:ob(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:ob(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:ob(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:ob(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=mb(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=nb(b);function qb(){}qb.prototype=d.filters=d.pseudos,d.setFilters=new qb,g=gb.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+\" \"];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){(!c||(e=S.exec(h)))&&(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=T.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(R,\" \")}),h=h.slice(c.length));for(g in d.filter)!(e=X[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?gb.error(a):z(a,i).slice(0)};function rb(a){for(var b=0,c=a.length,d=\"\";c>b;b++)d+=a[b].value;return d}function sb(a,b,c){var d=b.dir,e=c&&\"parentNode\"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function tb(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ub(a,b,c){for(var d=0,e=b.length;e>d;d++)gb(a,b[d],c);return c}function vb(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function wb(a,b,c,d,e,f){return d&&!d[u]&&(d=wb(d)),e&&!e[u]&&(e=wb(e,f)),ib(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ub(b||\"*\",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:vb(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=vb(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=vb(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function xb(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[\" \"],i=g?1:0,k=sb(function(a){return a===b},h,!0),l=sb(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[sb(tb(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return wb(i>1&&tb(m),i>1&&rb(a.slice(0,i-1).concat({value:\" \"===a[i-2].type?\"*\":\"\"})).replace(R,\"$1\"),c,e>i&&xb(a.slice(i,e)),f>e&&xb(a=a.slice(e)),f>e&&rb(a))}m.push(c)}return tb(m)}function yb(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q=\"0\",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG(\"*\",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=F.call(i));s=vb(s)}H.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&gb.uniqueSort(i)}return k&&(w=v,j=t),r};return c?ib(f):f}return h=gb.compile=function(a,b){var c,d=[],e=[],f=A[a+\" \"];if(!f){b||(b=g(a)),c=b.length;while(c--)f=xb(b[c]),f[u]?d.push(f):e.push(f);f=A(a,yb(e,d)),f.selector=a}return f},i=gb.select=function(a,b,e,f){var i,j,k,l,m,n=\"function\"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&\"ID\"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(cb,db),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(cb,db),ab.test(j[0].type)&&pb(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&rb(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,ab.test(a)&&pb(b.parentNode)||b),e},c.sortStable=u.split(\"\").sort(B).join(\"\")===u,c.detectDuplicates=!!l,m(),c.sortDetached=jb(function(a){return 1&a.compareDocumentPosition(n.createElement(\"div\"))}),jb(function(a){return a.innerHTML=\"<a href='#'></a>\",\"#\"===a.firstChild.getAttribute(\"href\")})||kb(\"type|href|height|width\",function(a,b,c){return c?void 0:a.getAttribute(b,\"type\"===b.toLowerCase()?1:2)}),c.attributes&&jb(function(a){return a.innerHTML=\"<input/>\",a.firstChild.setAttribute(\"value\",\"\"),\"\"===a.firstChild.getAttribute(\"value\")})||kb(\"value\",function(a,b,c){return c||\"input\"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),jb(function(a){return null==a.getAttribute(\"disabled\")})||kb(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),gb}(a);n.find=t,n.expr=t.selectors,n.expr[\":\"]=n.expr.pseudos,n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=n.expr.match.needsContext,v=/^<(\\w+)\\s*\\/?>(?:<\\/\\1>|)$/,w=/^.[^:#\\[\\.,]*$/;function x(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if(\"string\"==typeof b){if(w.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return g.call(b,a)>=0!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=\":not(\"+a+\")\"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=this.length,d=[],e=this;if(\"string\"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;c>b;b++)if(n.contains(e[b],this))return!0}));for(b=0;c>b;b++)n.find(a,e[b],d);return d=this.pushStack(c>1?n.unique(d):d),d.selector=this.selector?this.selector+\" \"+a:a,d},filter:function(a){return this.pushStack(x(this,a||[],!1))},not:function(a){return this.pushStack(x(this,a||[],!0))},is:function(a){return!!x(this,\"string\"==typeof a&&u.test(a)?n(a):a||[],!1).length}});var y,z=/^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]*))$/,A=n.fn.init=function(a,b){var c,d;if(!a)return this;if(\"string\"==typeof a){if(c=\"<\"===a[0]&&\">\"===a[a.length-1]&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||y).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:l,!0)),v.test(c[1])&&n.isPlainObject(b))for(c in b)n.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}return d=l.getElementById(c[2]),d&&d.parentNode&&(this.length=1,this[0]=d),this.context=l,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?\"undefined\"!=typeof y.ready?y.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};A.prototype=n.fn,y=n(l);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};n.extend({dir:function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),n.fn.extend({has:function(a){var b=n(a,this),c=b.length;return this.filter(function(){for(var a=0;c>a;a++)if(n.contains(this,b[a]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=u.test(a)||\"string\"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.unique(f):f)},index:function(a){return a?\"string\"==typeof a?g.call(n(a),this[0]):g.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.unique(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){while((a=a[b])&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return n.dir(a,\"parentNode\")},parentsUntil:function(a,b,c){return n.dir(a,\"parentNode\",c)},next:function(a){return D(a,\"nextSibling\")},prev:function(a){return D(a,\"previousSibling\")},nextAll:function(a){return n.dir(a,\"nextSibling\")},prevAll:function(a){return n.dir(a,\"previousSibling\")},nextUntil:function(a,b,c){return n.dir(a,\"nextSibling\",c)},prevUntil:function(a,b,c){return n.dir(a,\"previousSibling\",c)},siblings:function(a){return n.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return n.sibling(a.firstChild)},contents:function(a){return a.contentDocument||n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return\"Until\"!==a.slice(-5)&&(d=c),d&&\"string\"==typeof d&&(e=n.filter(d,e)),this.length>1&&(C[a]||n.unique(e),B.test(a)&&e.reverse()),this.pushStack(e)}});var E=/\\S+/g,F={};function G(a){var b=F[a]={};return n.each(a.match(E)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a=\"string\"==typeof a?F[a]||G(a):n.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(b=a.memory&&l,c=!0,g=e||0,e=0,f=h.length,d=!0;h&&f>g;g++)if(h[g].apply(l[0],l[1])===!1&&a.stopOnFalse){b=!1;break}d=!1,h&&(i?i.length&&j(i.shift()):b?h=[]:k.disable())},k={add:function(){if(h){var c=h.length;!function g(b){n.each(b,function(b,c){var d=n.type(c);\"function\"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&\"string\"!==d&&g(c)})}(arguments),d?f=h.length:b&&(e=c,j(b))}return this},remove:function(){return h&&n.each(arguments,function(a,b){var c;while((c=n.inArray(b,h,c))>-1)h.splice(c,1),d&&(f>=c&&f--,g>=c&&g--)}),this},has:function(a){return a?n.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],f=0,this},disable:function(){return h=i=b=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,b||k.disable(),this},locked:function(){return!i},fireWith:function(a,b){return!h||c&&!i||(b=b||[],b=[a,b.slice?b.slice():b],d?i.push(b):j(b)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!c}};return k},n.extend({Deferred:function(a){var b=[[\"resolve\",\"done\",n.Callbacks(\"once memory\"),\"resolved\"],[\"reject\",\"fail\",n.Callbacks(\"once memory\"),\"rejected\"],[\"notify\",\"progress\",n.Callbacks(\"memory\")]],c=\"pending\",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+\"With\"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+\"With\"](this===e?d:this,arguments),this},e[f[0]+\"With\"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&n.isFunction(a.promise)?e:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(H.resolveWith(l,[n]),n.fn.triggerHandler&&(n(l).triggerHandler(\"ready\"),n(l).off(\"ready\"))))}});function I(){l.removeEventListener(\"DOMContentLoaded\",I,!1),a.removeEventListener(\"load\",I,!1),n.ready()}n.ready.promise=function(b){return H||(H=n.Deferred(),\"complete\"===l.readyState?setTimeout(n.ready):(l.addEventListener(\"DOMContentLoaded\",I,!1),a.addEventListener(\"load\",I,!1))),H.promise(b)},n.ready.promise();var J=n.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if(\"object\"===n.type(c)){e=!0;for(h in c)n.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f};n.acceptData=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function K(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=n.expando+K.uid++}K.uid=1,K.accepts=n.acceptData,K.prototype={key:function(a){if(!K.accepts(a))return 0;var b={},c=a[this.expando];if(!c){c=K.uid++;try{b[this.expando]={value:c},Object.defineProperties(a,b)}catch(d){b[this.expando]=c,n.extend(a,b)}}return this.cache[c]||(this.cache[c]={}),c},set:function(a,b,c){var d,e=this.key(a),f=this.cache[e];if(\"string\"==typeof b)f[b]=c;else if(n.isEmptyObject(f))n.extend(this.cache[e],b);else for(d in b)f[d]=b[d];return f},get:function(a,b){var c=this.cache[this.key(a)];return void 0===b?c:c[b]},access:function(a,b,c){var d;return void 0===b||b&&\"string\"==typeof b&&void 0===c?(d=this.get(a,b),void 0!==d?d:this.get(a,n.camelCase(b))):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d,e,f=this.key(a),g=this.cache[f];if(void 0===b)this.cache[f]={};else{n.isArray(b)?d=b.concat(b.map(n.camelCase)):(e=n.camelCase(b),b in g?d=[b,e]:(d=e,d=d in g?[d]:d.match(E)||[])),c=d.length;while(c--)delete g[d[c]]}},hasData:function(a){return!n.isEmptyObject(this.cache[a[this.expando]]||{})},discard:function(a){a[this.expando]&&delete this.cache[a[this.expando]]}};var L=new K,M=new K,N=/^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,O=/([A-Z])/g;function P(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d=\"data-\"+b.replace(O,\"-$1\").toLowerCase(),c=a.getAttribute(d),\"string\"==typeof c){try{c=\"true\"===c?!0:\"false\"===c?!1:\"null\"===c?null:+c+\"\"===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}M.set(a,b,c)}else c=void 0;return c}n.extend({hasData:function(a){return M.hasData(a)||L.hasData(a)},data:function(a,b,c){return M.access(a,b,c)\r\n},removeData:function(a,b){M.remove(a,b)},_data:function(a,b,c){return L.access(a,b,c)},_removeData:function(a,b){L.remove(a,b)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=M.get(f),1===f.nodeType&&!L.get(f,\"hasDataAttrs\"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf(\"data-\")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d])));L.set(f,\"hasDataAttrs\",!0)}return e}return\"object\"==typeof a?this.each(function(){M.set(this,a)}):J(this,function(b){var c,d=n.camelCase(a);if(f&&void 0===b){if(c=M.get(f,a),void 0!==c)return c;if(c=M.get(f,d),void 0!==c)return c;if(c=P(f,d,void 0),void 0!==c)return c}else this.each(function(){var c=M.get(this,d);M.set(this,d,b),-1!==a.indexOf(\"-\")&&void 0!==c&&M.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){M.remove(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||\"fx\")+\"queue\",d=L.get(a,b),c&&(!d||n.isArray(c)?d=L.access(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||\"fx\";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};\"inprogress\"===e&&(e=c.shift(),d--),e&&(\"fx\"===b&&c.unshift(\"inprogress\"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+\"queueHooks\";return L.get(a,c)||L.access(a,c,{empty:n.Callbacks(\"once memory\").add(function(){L.remove(a,[b+\"queue\",c])})})}}),n.fn.extend({queue:function(a,b){var c=2;return\"string\"!=typeof a&&(b=a,a=\"fx\",c--),arguments.length<c?n.queue(this[0],a):void 0===b?this:this.each(function(){var c=n.queue(this,a,b);n._queueHooks(this,a),\"fx\"===a&&\"inprogress\"!==c[0]&&n.dequeue(this,a)})},dequeue:function(a){return this.each(function(){n.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||\"fx\",[])},promise:function(a,b){var c,d=1,e=n.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};\"string\"!=typeof a&&(b=a,a=void 0),a=a||\"fx\";while(g--)c=L.get(f[g],a+\"queueHooks\"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var Q=/[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/.source,R=[\"Top\",\"Right\",\"Bottom\",\"Left\"],S=function(a,b){return a=b||a,\"none\"===n.css(a,\"display\")||!n.contains(a.ownerDocument,a)},T=/^(?:checkbox|radio)$/i;!function(){var a=l.createDocumentFragment(),b=a.appendChild(l.createElement(\"div\")),c=l.createElement(\"input\");c.setAttribute(\"type\",\"radio\"),c.setAttribute(\"checked\",\"checked\"),c.setAttribute(\"name\",\"t\"),b.appendChild(c),k.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML=\"<textarea>x</textarea>\",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var U=\"undefined\";k.focusinBubbles=\"onfocusin\"in a;var V=/^key/,W=/^(?:mouse|pointer|contextmenu)|click/,X=/^(?:focusinfocus|focusoutblur)$/,Y=/^([^.]*)(?:\\.(.+)|)$/;function Z(){return!0}function $(){return!1}function _(){try{return l.activeElement}catch(a){}}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.get(a);if(r){c.handler&&(f=c,c=f.handler,e=f.selector),c.guid||(c.guid=n.guid++),(i=r.events)||(i=r.events={}),(g=r.handle)||(g=r.handle=function(b){return typeof n!==U&&n.event.triggered!==b.type?n.event.dispatch.apply(a,arguments):void 0}),b=(b||\"\").match(E)||[\"\"],j=b.length;while(j--)h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||\"\").split(\".\").sort(),o&&(l=n.event.special[o]||{},o=(e?l.delegateType:l.bindType)||o,l=n.event.special[o]||{},k=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(\".\")},f),(m=i[o])||(m=i[o]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,p,g)!==!1||a.addEventListener&&a.addEventListener(o,g,!1)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),n.event.global[o]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.hasData(a)&&L.get(a);if(r&&(i=r.events)){b=(b||\"\").match(E)||[\"\"],j=b.length;while(j--)if(h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||\"\").split(\".\").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=i[o]||[],h=h[2]&&new RegExp(\"(^|\\\\.)\"+p.join(\"\\\\.(?:.*\\\\.|)\")+\"(\\\\.|$)\"),g=f=m.length;while(f--)k=m[f],!e&&q!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&(\"**\"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete i[o])}else for(o in i)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(i)&&(delete r.handle,L.remove(a,\"events\"))}},trigger:function(b,c,d,e){var f,g,h,i,k,m,o,p=[d||l],q=j.call(b,\"type\")?b.type:b,r=j.call(b,\"namespace\")?b.namespace.split(\".\"):[];if(g=h=d=d||l,3!==d.nodeType&&8!==d.nodeType&&!X.test(q+n.event.triggered)&&(q.indexOf(\".\")>=0&&(r=q.split(\".\"),q=r.shift(),r.sort()),k=q.indexOf(\":\")<0&&\"on\"+q,b=b[n.expando]?b:new n.Event(q,\"object\"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=r.join(\".\"),b.namespace_re=b.namespace?new RegExp(\"(^|\\\\.)\"+r.join(\"\\\\.(?:.*\\\\.|)\")+\"(\\\\.|$)\"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:n.makeArray(c,[b]),o=n.event.special[q]||{},e||!o.trigger||o.trigger.apply(d,c)!==!1)){if(!e&&!o.noBubble&&!n.isWindow(d)){for(i=o.delegateType||q,X.test(i+q)||(g=g.parentNode);g;g=g.parentNode)p.push(g),h=g;h===(d.ownerDocument||l)&&p.push(h.defaultView||h.parentWindow||a)}f=0;while((g=p[f++])&&!b.isPropagationStopped())b.type=f>1?i:o.bindType||q,m=(L.get(g,\"events\")||{})[b.type]&&L.get(g,\"handle\"),m&&m.apply(g,c),m=k&&g[k],m&&m.apply&&n.acceptData(g)&&(b.result=m.apply(g,c),b.result===!1&&b.preventDefault());return b.type=q,e||b.isDefaultPrevented()||o._default&&o._default.apply(p.pop(),c)!==!1||!n.acceptData(d)||k&&n.isFunction(d[q])&&!n.isWindow(d)&&(h=d[k],h&&(d[k]=null),n.event.triggered=q,d[q](),n.event.triggered=void 0,h&&(d[k]=h)),b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(L.get(this,\"events\")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(g.namespace))&&(a.handleObj=g,a.data=g.data,e=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==e&&(a.result=e)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||\"click\"!==a.type))for(;i!==this;i=i.parentNode||this)if(i.disabled!==!0||\"click\"!==a.type){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+\" \",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>=0:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},props:\"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which\".split(\" \"),fixHooks:{},keyHooks:{props:\"char charCode key keyCode\".split(\" \"),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:\"button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement\".split(\" \"),filter:function(a,b){var c,d,e,f=b.button;return null==a.pageX&&null!=b.clientX&&(c=a.target.ownerDocument||l,d=c.documentElement,e=c.body,a.pageX=b.clientX+(d&&d.scrollLeft||e&&e.scrollLeft||0)-(d&&d.clientLeft||e&&e.clientLeft||0),a.pageY=b.clientY+(d&&d.scrollTop||e&&e.scrollTop||0)-(d&&d.clientTop||e&&e.clientTop||0)),a.which||void 0===f||(a.which=1&f?1:2&f?3:4&f?2:0),a}},fix:function(a){if(a[n.expando])return a;var b,c,d,e=a.type,f=a,g=this.fixHooks[e];g||(this.fixHooks[e]=g=W.test(e)?this.mouseHooks:V.test(e)?this.keyHooks:{}),d=g.props?this.props.concat(g.props):this.props,a=new n.Event(f),b=d.length;while(b--)c=d[b],a[c]=f[c];return a.target||(a.target=l),3===a.target.nodeType&&(a.target=a.target.parentNode),g.filter?g.filter(a,f):a},special:{load:{noBubble:!0},focus:{trigger:function(){return this!==_()&&this.focus?(this.focus(),!1):void 0},delegateType:\"focusin\"},blur:{trigger:function(){return this===_()&&this.blur?(this.blur(),!1):void 0},delegateType:\"focusout\"},click:{trigger:function(){return\"checkbox\"===this.type&&this.click&&n.nodeName(this,\"input\")?(this.click(),!1):void 0},_default:function(a){return n.nodeName(a.target,\"a\")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c,d){var e=n.extend(new n.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?n.event.trigger(e,null,b):n.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},n.removeEvent=function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)},n.Event=function(a,b){return this instanceof n.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?Z:$):this.type=a,b&&n.extend(this,b),this.timeStamp=a&&a.timeStamp||n.now(),void(this[n.expando]=!0)):new n.Event(a,b)},n.Event.prototype={isDefaultPrevented:$,isPropagationStopped:$,isImmediatePropagationStopped:$,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=Z,a&&a.preventDefault&&a.preventDefault()},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=Z,a&&a.stopPropagation&&a.stopPropagation()},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=Z,a&&a.stopImmediatePropagation&&a.stopImmediatePropagation(),this.stopPropagation()}},n.each({mouseenter:\"mouseover\",mouseleave:\"mouseout\",pointerenter:\"pointerover\",pointerleave:\"pointerout\"},function(a,b){n.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return(!e||e!==d&&!n.contains(d,e))&&(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),k.focusinBubbles||n.each({focus:\"focusin\",blur:\"focusout\"},function(a,b){var c=function(a){n.event.simulate(b,a.target,n.event.fix(a),!0)};n.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=L.access(d,b);e||d.addEventListener(a,c,!0),L.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=L.access(d,b)-1;e?L.access(d,b,e):(d.removeEventListener(a,c,!0),L.remove(d,b))}}}),n.fn.extend({on:function(a,b,c,d,e){var f,g;if(\"object\"==typeof a){\"string\"!=typeof b&&(c=c||b,b=void 0);for(g in a)this.on(g,b,c,a[g],e);return this}if(null==c&&null==d?(d=b,c=b=void 0):null==d&&(\"string\"==typeof b?(d=c,c=void 0):(d=c,c=b,b=void 0)),d===!1)d=$;else if(!d)return this;return 1===e&&(f=d,d=function(a){return n().off(a),f.apply(this,arguments)},d.guid=f.guid||(f.guid=n.guid++)),this.each(function(){n.event.add(this,a,d,c,b)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,n(a.delegateTarget).off(d.namespace?d.origType+\".\"+d.namespace:d.origType,d.selector,d.handler),this;if(\"object\"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return(b===!1||\"function\"==typeof b)&&(c=b,b=void 0),c===!1&&(c=$),this.each(function(){n.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){n.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?n.event.trigger(a,b,c,!0):void 0}});var ab=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/gi,bb=/<([\\w:]+)/,cb=/<|&#?\\w+;/,db=/<(?:script|style|link)/i,eb=/checked\\s*(?:[^=]|=\\s*.checked.)/i,fb=/^$|\\/(?:java|ecma)script/i,gb=/^true\\/(.*)/,hb=/^\\s*<!(?:\\[CDATA\\[|--)|(?:\\]\\]|--)>\\s*$/g,ib={option:[1,\"<select multiple='multiple'>\",\"</select>\"],thead:[1,\"<table>\",\"</table>\"],col:[2,\"<table><colgroup>\",\"</colgroup></table>\"],tr:[2,\"<table><tbody>\",\"</tbody></table>\"],td:[3,\"<table><tbody><tr>\",\"</tr></tbody></table>\"],_default:[0,\"\",\"\"]};ib.optgroup=ib.option,ib.tbody=ib.tfoot=ib.colgroup=ib.caption=ib.thead,ib.th=ib.td;function jb(a,b){return n.nodeName(a,\"table\")&&n.nodeName(11!==b.nodeType?b:b.firstChild,\"tr\")?a.getElementsByTagName(\"tbody\")[0]||a.appendChild(a.ownerDocument.createElement(\"tbody\")):a}function kb(a){return a.type=(null!==a.getAttribute(\"type\"))+\"/\"+a.type,a}function lb(a){var b=gb.exec(a.type);return b?a.type=b[1]:a.removeAttribute(\"type\"),a}function mb(a,b){for(var c=0,d=a.length;d>c;c++)L.set(a[c],\"globalEval\",!b||L.get(b[c],\"globalEval\"))}function nb(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(L.hasData(a)&&(f=L.access(a),g=L.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;d>c;c++)n.event.add(b,e,j[e][c])}M.hasData(a)&&(h=M.access(a),i=n.extend({},h),M.set(b,i))}}function ob(a,b){var c=a.getElementsByTagName?a.getElementsByTagName(b||\"*\"):a.querySelectorAll?a.querySelectorAll(b||\"*\"):[];return void 0===b||b&&n.nodeName(a,b)?n.merge([a],c):c}function pb(a,b){var c=b.nodeName.toLowerCase();\"input\"===c&&T.test(a.type)?b.checked=a.checked:(\"input\"===c||\"textarea\"===c)&&(b.defaultValue=a.defaultValue)}n.extend({clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=n.contains(a.ownerDocument,a);if(!(k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(g=ob(h),f=ob(a),d=0,e=f.length;e>d;d++)pb(f[d],g[d]);if(b)if(c)for(f=f||ob(a),g=g||ob(h),d=0,e=f.length;e>d;d++)nb(f[d],g[d]);else nb(a,h);return g=ob(h,\"script\"),g.length>0&&mb(g,!i&&ob(a,\"script\")),h},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k=b.createDocumentFragment(),l=[],m=0,o=a.length;o>m;m++)if(e=a[m],e||0===e)if(\"object\"===n.type(e))n.merge(l,e.nodeType?[e]:e);else if(cb.test(e)){f=f||k.appendChild(b.createElement(\"div\")),g=(bb.exec(e)||[\"\",\"\"])[1].toLowerCase(),h=ib[g]||ib._default,f.innerHTML=h[1]+e.replace(ab,\"<$1></$2>\")+h[2],j=h[0];while(j--)f=f.lastChild;n.merge(l,f.childNodes),f=k.firstChild,f.textContent=\"\"}else l.push(b.createTextNode(e));k.textContent=\"\",m=0;while(e=l[m++])if((!d||-1===n.inArray(e,d))&&(i=n.contains(e.ownerDocument,e),f=ob(k.appendChild(e),\"script\"),i&&mb(f),c)){j=0;while(e=f[j++])fb.test(e.type||\"\")&&c.push(e)}return k},cleanData:function(a){for(var b,c,d,e,f=n.event.special,g=0;void 0!==(c=a[g]);g++){if(n.acceptData(c)&&(e=c[L.expando],e&&(b=L.cache[e]))){if(b.events)for(d in b.events)f[d]?n.event.remove(c,d):n.removeEvent(c,d,b.handle);L.cache[e]&&delete L.cache[e]}delete M.cache[c[M.expando]]}}}),n.fn.extend({text:function(a){return J(this,function(a){return void 0===a?n.text(this):this.empty().each(function(){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&(this.textContent=a)})},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=jb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=jb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?n.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||n.cleanData(ob(c)),c.parentNode&&(b&&n.contains(c.ownerDocument,c)&&mb(ob(c,\"script\")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(n.cleanData(ob(a,!1)),a.textContent=\"\");return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return J(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if(\"string\"==typeof a&&!db.test(a)&&!ib[(bb.exec(a)||[\"\",\"\"])[1].toLowerCase()]){a=a.replace(ab,\"<$1></$2>\");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(ob(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,n.cleanData(ob(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,m=this,o=l-1,p=a[0],q=n.isFunction(p);if(q||l>1&&\"string\"==typeof p&&!k.checkClone&&eb.test(p))return this.each(function(c){var d=m.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(c=n.buildFragment(a,this[0].ownerDocument,!1,this),d=c.firstChild,1===c.childNodes.length&&(c=d),d)){for(f=n.map(ob(c,\"script\"),kb),g=f.length;l>j;j++)h=c,j!==o&&(h=n.clone(h,!0,!0),g&&n.merge(f,ob(h,\"script\"))),b.call(this[j],h,j);if(g)for(i=f[f.length-1].ownerDocument,n.map(f,lb),j=0;g>j;j++)h=f[j],fb.test(h.type||\"\")&&!L.access(h,\"globalEval\")&&n.contains(i,h)&&(h.src?n._evalUrl&&n._evalUrl(h.src):n.globalEval(h.textContent.replace(hb,\"\")))}return this}}),n.each({appendTo:\"append\",prependTo:\"prepend\",insertBefore:\"before\",insertAfter:\"after\",replaceAll:\"replaceWith\"},function(a,b){n.fn[a]=function(a){for(var c,d=[],e=n(a),g=e.length-1,h=0;g>=h;h++)c=h===g?this:this.clone(!0),n(e[h])[b](c),f.apply(d,c.get());return this.pushStack(d)}});var qb,rb={};function sb(b,c){var d,e=n(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:n.css(e[0],\"display\");return e.detach(),f}function tb(a){var b=l,c=rb[a];return c||(c=sb(a,b),\"none\"!==c&&c||(qb=(qb||n(\"<iframe frameborder='0' width='0' height='0'/>\")).appendTo(b.documentElement),b=qb[0].contentDocument,b.write(),b.close(),c=sb(a,b),qb.detach()),rb[a]=c),c}var ub=/^margin/,vb=new RegExp(\"^(\"+Q+\")(?!px)[a-z%]+$\",\"i\"),wb=function(b){return b.ownerDocument.defaultView.opener?b.ownerDocument.defaultView.getComputedStyle(b,null):a.getComputedStyle(b,null)};function xb(a,b,c){var d,e,f,g,h=a.style;return c=c||wb(a),c&&(g=c.getPropertyValue(b)||c[b]),c&&(\"\"!==g||n.contains(a.ownerDocument,a)||(g=n.style(a,b)),vb.test(g)&&ub.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0!==g?g+\"\":g}function yb(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}!function(){var b,c,d=l.documentElement,e=l.createElement(\"div\"),f=l.createElement(\"div\");if(f.style){f.style.backgroundClip=\"content-box\",f.cloneNode(!0).style.backgroundClip=\"\",k.clearCloneStyle=\"content-box\"===f.style.backgroundClip,e.style.cssText=\"border:0;width:0;height:0;top:0;left:-9999px;margin-top:1px;position:absolute\",e.appendChild(f);function g(){f.style.cssText=\"-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute\",f.innerHTML=\"\",d.appendChild(e);var g=a.getComputedStyle(f,null);b=\"1%\"!==g.top,c=\"4px\"===g.width,d.removeChild(e)}a.getComputedStyle&&n.extend(k,{pixelPosition:function(){return g(),b},boxSizingReliable:function(){return null==c&&g(),c},reliableMarginRight:function(){var b,c=f.appendChild(l.createElement(\"div\"));return c.style.cssText=f.style.cssText=\"-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0\",c.style.marginRight=c.style.width=\"0\",f.style.width=\"1px\",d.appendChild(e),b=!parseFloat(a.getComputedStyle(c,null).marginRight),d.removeChild(e),f.removeChild(c),b}})}}(),n.swap=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};var zb=/^(none|table(?!-c[ea]).+)/,Ab=new RegExp(\"^(\"+Q+\")(.*)$\",\"i\"),Bb=new RegExp(\"^([+-])=(\"+Q+\")\",\"i\"),Cb={position:\"absolute\",visibility:\"hidden\",display:\"block\"},Db={letterSpacing:\"0\",fontWeight:\"400\"},Eb=[\"Webkit\",\"O\",\"Moz\",\"ms\"];function Fb(a,b){if(b in a)return b;var c=b[0].toUpperCase()+b.slice(1),d=b,e=Eb.length;while(e--)if(b=Eb[e]+c,b in a)return b;return d}function Gb(a,b,c){var d=Ab.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||\"px\"):b}function Hb(a,b,c,d,e){for(var f=c===(d?\"border\":\"content\")?4:\"width\"===b?1:0,g=0;4>f;f+=2)\"margin\"===c&&(g+=n.css(a,c+R[f],!0,e)),d?(\"content\"===c&&(g-=n.css(a,\"padding\"+R[f],!0,e)),\"margin\"!==c&&(g-=n.css(a,\"border\"+R[f]+\"Width\",!0,e))):(g+=n.css(a,\"padding\"+R[f],!0,e),\"padding\"!==c&&(g+=n.css(a,\"border\"+R[f]+\"Width\",!0,e)));return g}function Ib(a,b,c){var d=!0,e=\"width\"===b?a.offsetWidth:a.offsetHeight,f=wb(a),g=\"border-box\"===n.css(a,\"boxSizing\",!1,f);if(0>=e||null==e){if(e=xb(a,b,f),(0>e||null==e)&&(e=a.style[b]),vb.test(e))return e;d=g&&(k.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Hb(a,b,c||(g?\"border\":\"content\"),d,f)+\"px\"}function Jb(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=L.get(d,\"olddisplay\"),c=d.style.display,b?(f[g]||\"none\"!==c||(d.style.display=\"\"),\"\"===d.style.display&&S(d)&&(f[g]=L.access(d,\"olddisplay\",tb(d.nodeName)))):(e=S(d),\"none\"===c&&e||L.set(d,\"olddisplay\",e?c:n.css(d,\"display\"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&\"none\"!==d.style.display&&\"\"!==d.style.display||(d.style.display=b?f[g]||\"\":\"none\"));return a}n.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=xb(a,\"opacity\");return\"\"===c?\"1\":c}}}},cssNumber:{columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{\"float\":\"cssFloat\"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=n.camelCase(b),i=a.style;return b=n.cssProps[h]||(n.cssProps[h]=Fb(i,h)),g=n.cssHooks[b]||n.cssHooks[h],void 0===c?g&&\"get\"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b]:(f=typeof c,\"string\"===f&&(e=Bb.exec(c))&&(c=(e[1]+1)*e[2]+parseFloat(n.css(a,b)),f=\"number\"),null!=c&&c===c&&(\"number\"!==f||n.cssNumber[h]||(c+=\"px\"),k.clearCloneStyle||\"\"!==c||0!==b.indexOf(\"background\")||(i[b]=\"inherit\"),g&&\"set\"in g&&void 0===(c=g.set(a,c,d))||(i[b]=c)),void 0)}},css:function(a,b,c,d){var e,f,g,h=n.camelCase(b);return b=n.cssProps[h]||(n.cssProps[h]=Fb(a.style,h)),g=n.cssHooks[b]||n.cssHooks[h],g&&\"get\"in g&&(e=g.get(a,!0,c)),void 0===e&&(e=xb(a,b,d)),\"normal\"===e&&b in Db&&(e=Db[b]),\"\"===c||c?(f=parseFloat(e),c===!0||n.isNumeric(f)?f||0:e):e}}),n.each([\"height\",\"width\"],function(a,b){n.cssHooks[b]={get:function(a,c,d){return c?zb.test(n.css(a,\"display\"))&&0===a.offsetWidth?n.swap(a,Cb,function(){return Ib(a,b,d)}):Ib(a,b,d):void 0},set:function(a,c,d){var e=d&&wb(a);return Gb(a,c,d?Hb(a,b,d,\"border-box\"===n.css(a,\"boxSizing\",!1,e),e):0)}}}),n.cssHooks.marginRight=yb(k.reliableMarginRight,function(a,b){return b?n.swap(a,{display:\"inline-block\"},xb,[a,\"marginRight\"]):void 0}),n.each({margin:\"\",padding:\"\",border:\"Width\"},function(a,b){n.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f=\"string\"==typeof c?c.split(\" \"):[c];4>d;d++)e[a+R[d]+b]=f[d]||f[d-2]||f[0];return e}},ub.test(a)||(n.cssHooks[a+b].set=Gb)}),n.fn.extend({css:function(a,b){return J(this,function(a,b,c){var d,e,f={},g=0;if(n.isArray(b)){for(d=wb(a),e=b.length;e>g;g++)f[b[g]]=n.css(a,b[g],!1,d);return f}return void 0!==c?n.style(a,b,c):n.css(a,b)},a,b,arguments.length>1)},show:function(){return Jb(this,!0)},hide:function(){return Jb(this)},toggle:function(a){return\"boolean\"==typeof a?a?this.show():this.hide():this.each(function(){S(this)?n(this).show():n(this).hide()})}});function Kb(a,b,c,d,e){return new Kb.prototype.init(a,b,c,d,e)}n.Tween=Kb,Kb.prototype={constructor:Kb,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||\"swing\",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(n.cssNumber[c]?\"\":\"px\")},cur:function(){var a=Kb.propHooks[this.prop];return a&&a.get?a.get(this):Kb.propHooks._default.get(this)},run:function(a){var b,c=Kb.propHooks[this.prop];return this.pos=b=this.options.duration?n.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Kb.propHooks._default.set(this),this}},Kb.prototype.init.prototype=Kb.prototype,Kb.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=n.css(a.elem,a.prop,\"\"),b&&\"auto\"!==b?b:0):a.elem[a.prop]},set:function(a){n.fx.step[a.prop]?n.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[n.cssProps[a.prop]]||n.cssHooks[a.prop])?n.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},Kb.propHooks.scrollTop=Kb.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},n.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},n.fx=Kb.prototype.init,n.fx.step={};var Lb,Mb,Nb=/^(?:toggle|show|hide)$/,Ob=new RegExp(\"^(?:([+-])=|)(\"+Q+\")([a-z%]*)$\",\"i\"),Pb=/queueHooks$/,Qb=[Vb],Rb={\"*\":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=Ob.exec(b),f=e&&e[3]||(n.cssNumber[a]?\"\":\"px\"),g=(n.cssNumber[a]||\"px\"!==f&&+d)&&Ob.exec(n.css(c.elem,a)),h=1,i=20;if(g&&g[3]!==f){f=f||g[3],e=e||[],g=+d||1;do h=h||\".5\",g/=h,n.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&--i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]),c}]};function Sb(){return setTimeout(function(){Lb=void 0}),Lb=n.now()}function Tb(a,b){var c,d=0,e={height:a};for(b=b?1:0;4>d;d+=2-b)c=R[d],e[\"margin\"+c]=e[\"padding\"+c]=a;return b&&(e.opacity=e.width=a),e}function Ub(a,b,c){for(var d,e=(Rb[b]||[]).concat(Rb[\"*\"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function Vb(a,b,c){var d,e,f,g,h,i,j,k,l=this,m={},o=a.style,p=a.nodeType&&S(a),q=L.get(a,\"fxshow\");c.queue||(h=n._queueHooks(a,\"fx\"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,l.always(function(){l.always(function(){h.unqueued--,n.queue(a,\"fx\").length||h.empty.fire()})})),1===a.nodeType&&(\"height\"in b||\"width\"in b)&&(c.overflow=[o.overflow,o.overflowX,o.overflowY],j=n.css(a,\"display\"),k=\"none\"===j?L.get(a,\"olddisplay\")||tb(a.nodeName):j,\"inline\"===k&&\"none\"===n.css(a,\"float\")&&(o.display=\"inline-block\")),c.overflow&&(o.overflow=\"hidden\",l.always(function(){o.overflow=c.overflow[0],o.overflowX=c.overflow[1],o.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],Nb.exec(e)){if(delete b[d],f=f||\"toggle\"===e,e===(p?\"hide\":\"show\")){if(\"show\"!==e||!q||void 0===q[d])continue;p=!0}m[d]=q&&q[d]||n.style(a,d)}else j=void 0;if(n.isEmptyObject(m))\"inline\"===(\"none\"===j?tb(a.nodeName):j)&&(o.display=j);else{q?\"hidden\"in q&&(p=q.hidden):q=L.access(a,\"fxshow\",{}),f&&(q.hidden=!p),p?n(a).show():l.done(function(){n(a).hide()}),l.done(function(){var b;L.remove(a,\"fxshow\");for(b in m)n.style(a,b,m[b])});for(d in m)g=Ub(p?q[d]:0,d,l),d in q||(q[d]=g.start,p&&(g.end=g.start,g.start=\"width\"===d||\"height\"===d?1:0))}}function Wb(a,b){var c,d,e,f,g;for(c in a)if(d=n.camelCase(c),e=b[d],f=a[c],n.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=n.cssHooks[d],g&&\"expand\"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function Xb(a,b,c){var d,e,f=0,g=Qb.length,h=n.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=Lb||Sb(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:n.extend({},b),opts:n.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:Lb||Sb(),duration:c.duration,tweens:[],createTween:function(b,c){var d=n.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(Wb(k,j.opts.specialEasing);g>f;f++)if(d=Qb[f].call(j,a,k,j.opts))return d;return n.map(k,Ub,j),n.isFunction(j.opts.start)&&j.opts.start.call(a,j),n.fx.timer(n.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}n.Animation=n.extend(Xb,{tweener:function(a,b){n.isFunction(a)?(b=a,a=[\"*\"]):a=a.split(\" \");for(var c,d=0,e=a.length;e>d;d++)c=a[d],Rb[c]=Rb[c]||[],Rb[c].unshift(b)},prefilter:function(a,b){b?Qb.unshift(a):Qb.push(a)}}),n.speed=function(a,b,c){var d=a&&\"object\"==typeof a?n.extend({},a):{complete:c||!c&&b||n.isFunction(a)&&a,duration:a,easing:c&&b||b&&!n.isFunction(b)&&b};return d.duration=n.fx.off?0:\"number\"==typeof d.duration?d.duration:d.duration in n.fx.speeds?n.fx.speeds[d.duration]:n.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue=\"fx\"),d.old=d.complete,d.complete=function(){n.isFunction(d.old)&&d.old.call(this),d.queue&&n.dequeue(this,d.queue)},d},n.fn.extend({fadeTo:function(a,b,c,d){return this.filter(S).css(\"opacity\",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=n.isEmptyObject(a),f=n.speed(b,c,d),g=function(){var b=Xb(this,n.extend({},a),f);(e||L.get(this,\"finish\"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return\"string\"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||\"fx\",[]),this.each(function(){var b=!0,e=null!=a&&a+\"queueHooks\",f=n.timers,g=L.get(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&Pb.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));(b||!c)&&n.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||\"fx\"),this.each(function(){var b,c=L.get(this),d=c[a+\"queue\"],e=c[a+\"queueHooks\"],f=n.timers,g=d?d.length:0;for(c.finish=!0,n.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),n.each([\"toggle\",\"show\",\"hide\"],function(a,b){var c=n.fn[b];n.fn[b]=function(a,d,e){return null==a||\"boolean\"==typeof a?c.apply(this,arguments):this.animate(Tb(b,!0),a,d,e)}}),n.each({slideDown:Tb(\"show\"),slideUp:Tb(\"hide\"),slideToggle:Tb(\"toggle\"),fadeIn:{opacity:\"show\"},fadeOut:{opacity:\"hide\"},fadeToggle:{opacity:\"toggle\"}},function(a,b){n.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),n.timers=[],n.fx.tick=function(){var a,b=0,c=n.timers;for(Lb=n.now();b<c.length;b++)a=c[b],a()||c[b]!==a||c.splice(b--,1);c.length||n.fx.stop(),Lb=void 0},n.fx.timer=function(a){n.timers.push(a),a()?n.fx.start():n.timers.pop()},n.fx.interval=13,n.fx.start=function(){Mb||(Mb=setInterval(n.fx.tick,n.fx.interval))},n.fx.stop=function(){clearInterval(Mb),Mb=null},n.fx.speeds={slow:600,fast:200,_default:400},n.fn.delay=function(a,b){return a=n.fx?n.fx.speeds[a]||a:a,b=b||\"fx\",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},function(){var a=l.createElement(\"input\"),b=l.createElement(\"select\"),c=b.appendChild(l.createElement(\"option\"));a.type=\"checkbox\",k.checkOn=\"\"!==a.value,k.optSelected=c.selected,b.disabled=!0,k.optDisabled=!c.disabled,a=l.createElement(\"input\"),a.value=\"t\",a.type=\"radio\",k.radioValue=\"t\"===a.value}();var Yb,Zb,$b=n.expr.attrHandle;n.fn.extend({attr:function(a,b){return J(this,n.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){n.removeAttr(this,a)})}}),n.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&3!==f&&8!==f&&2!==f)return typeof a.getAttribute===U?n.prop(a,b,c):(1===f&&n.isXMLDoc(a)||(b=b.toLowerCase(),d=n.attrHooks[b]||(n.expr.match.bool.test(b)?Zb:Yb)),void 0===c?d&&\"get\"in d&&null!==(e=d.get(a,b))?e:(e=n.find.attr(a,b),null==e?void 0:e):null!==c?d&&\"set\"in d&&void 0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+\"\"),c):void n.removeAttr(a,b))\r\n},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(E);if(f&&1===a.nodeType)while(c=f[e++])d=n.propFix[c]||c,n.expr.match.bool.test(c)&&(a[d]=!1),a.removeAttribute(c)},attrHooks:{type:{set:function(a,b){if(!k.radioValue&&\"radio\"===b&&n.nodeName(a,\"input\")){var c=a.value;return a.setAttribute(\"type\",b),c&&(a.value=c),b}}}}}),Zb={set:function(a,b,c){return b===!1?n.removeAttr(a,c):a.setAttribute(c,c),c}},n.each(n.expr.match.bool.source.match(/\\w+/g),function(a,b){var c=$b[b]||n.find.attr;$b[b]=function(a,b,d){var e,f;return d||(f=$b[b],$b[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,$b[b]=f),e}});var _b=/^(?:input|select|textarea|button)$/i;n.fn.extend({prop:function(a,b){return J(this,n.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[n.propFix[a]||a]})}}),n.extend({propFix:{\"for\":\"htmlFor\",\"class\":\"className\"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return f=1!==g||!n.isXMLDoc(a),f&&(b=n.propFix[b]||b,e=n.propHooks[b]),void 0!==c?e&&\"set\"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&\"get\"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){return a.hasAttribute(\"tabindex\")||_b.test(a.nodeName)||a.href?a.tabIndex:-1}}}}),k.optSelected||(n.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null}}),n.each([\"tabIndex\",\"readOnly\",\"maxLength\",\"cellSpacing\",\"cellPadding\",\"rowSpan\",\"colSpan\",\"useMap\",\"frameBorder\",\"contentEditable\"],function(){n.propFix[this.toLowerCase()]=this});var ac=/[\\t\\r\\n\\f]/g;n.fn.extend({addClass:function(a){var b,c,d,e,f,g,h=\"string\"==typeof a&&a,i=0,j=this.length;if(n.isFunction(a))return this.each(function(b){n(this).addClass(a.call(this,b,this.className))});if(h)for(b=(a||\"\").match(E)||[];j>i;i++)if(c=this[i],d=1===c.nodeType&&(c.className?(\" \"+c.className+\" \").replace(ac,\" \"):\" \")){f=0;while(e=b[f++])d.indexOf(\" \"+e+\" \")<0&&(d+=e+\" \");g=n.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=0===arguments.length||\"string\"==typeof a&&a,i=0,j=this.length;if(n.isFunction(a))return this.each(function(b){n(this).removeClass(a.call(this,b,this.className))});if(h)for(b=(a||\"\").match(E)||[];j>i;i++)if(c=this[i],d=1===c.nodeType&&(c.className?(\" \"+c.className+\" \").replace(ac,\" \"):\"\")){f=0;while(e=b[f++])while(d.indexOf(\" \"+e+\" \")>=0)d=d.replace(\" \"+e+\" \",\" \");g=a?n.trim(d):\"\",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return\"boolean\"==typeof b&&\"string\"===c?b?this.addClass(a):this.removeClass(a):this.each(n.isFunction(a)?function(c){n(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if(\"string\"===c){var b,d=0,e=n(this),f=a.match(E)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===U||\"boolean\"===c)&&(this.className&&L.set(this,\"__className__\",this.className),this.className=this.className||a===!1?\"\":L.get(this,\"__className__\")||\"\")})},hasClass:function(a){for(var b=\" \"+a+\" \",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(\" \"+this[c].className+\" \").replace(ac,\" \").indexOf(b)>=0)return!0;return!1}});var bc=/\\r/g;n.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=n.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,n(this).val()):a,null==e?e=\"\":\"number\"==typeof e?e+=\"\":n.isArray(e)&&(e=n.map(e,function(a){return null==a?\"\":a+\"\"})),b=n.valHooks[this.type]||n.valHooks[this.nodeName.toLowerCase()],b&&\"set\"in b&&void 0!==b.set(this,e,\"value\")||(this.value=e))});if(e)return b=n.valHooks[e.type]||n.valHooks[e.nodeName.toLowerCase()],b&&\"get\"in b&&void 0!==(c=b.get(e,\"value\"))?c:(c=e.value,\"string\"==typeof c?c.replace(bc,\"\"):null==c?\"\":c)}}}),n.extend({valHooks:{option:{get:function(a){var b=n.find.attr(a,\"value\");return null!=b?b:n.trim(n.text(a))}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f=\"select-one\"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],!(!c.selected&&i!==e||(k.optDisabled?c.disabled:null!==c.getAttribute(\"disabled\"))||c.parentNode.disabled&&n.nodeName(c.parentNode,\"optgroup\"))){if(b=n(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=n.makeArray(b),g=e.length;while(g--)d=e[g],(d.selected=n.inArray(d.value,f)>=0)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),n.each([\"radio\",\"checkbox\"],function(){n.valHooks[this]={set:function(a,b){return n.isArray(b)?a.checked=n.inArray(n(a).val(),b)>=0:void 0}},k.checkOn||(n.valHooks[this].get=function(a){return null===a.getAttribute(\"value\")?\"on\":a.value})}),n.each(\"blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu\".split(\" \"),function(a,b){n.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),n.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,\"**\"):this.off(b,a||\"**\",c)}});var cc=n.now(),dc=/\\?/;n.parseJSON=function(a){return JSON.parse(a+\"\")},n.parseXML=function(a){var b,c;if(!a||\"string\"!=typeof a)return null;try{c=new DOMParser,b=c.parseFromString(a,\"text/xml\")}catch(d){b=void 0}return(!b||b.getElementsByTagName(\"parsererror\").length)&&n.error(\"Invalid XML: \"+a),b};var ec=/#.*$/,fc=/([?&])_=[^&]*/,gc=/^(.*?):[ \\t]*([^\\r\\n]*)$/gm,hc=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,ic=/^(?:GET|HEAD)$/,jc=/^\\/\\//,kc=/^([\\w.+-]+:)(?:\\/\\/(?:[^\\/?#]*@|)([^\\/?#:]*)(?::(\\d+)|)|)/,lc={},mc={},nc=\"*/\".concat(\"*\"),oc=a.location.href,pc=kc.exec(oc.toLowerCase())||[];function qc(a){return function(b,c){\"string\"!=typeof b&&(c=b,b=\"*\");var d,e=0,f=b.toLowerCase().match(E)||[];if(n.isFunction(c))while(d=f[e++])\"+\"===d[0]?(d=d.slice(1)||\"*\",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function rc(a,b,c,d){var e={},f=a===mc;function g(h){var i;return e[h]=!0,n.each(a[h]||[],function(a,h){var j=h(b,c,d);return\"string\"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e[\"*\"]&&g(\"*\")}function sc(a,b){var c,d,e=n.ajaxSettings.flatOptions||{};for(c in b)void 0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&n.extend(!0,a,d),a}function tc(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while(\"*\"===i[0])i.shift(),void 0===d&&(d=a.mimeType||b.getResponseHeader(\"Content-Type\"));if(d)for(e in h)if(h[e]&&h[e].test(d)){i.unshift(e);break}if(i[0]in c)f=i[0];else{for(e in c){if(!i[0]||a.converters[e+\" \"+i[0]]){f=e;break}g||(g=e)}f=f||g}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function uc(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if(\"*\"===f)f=i;else if(\"*\"!==i&&i!==f){if(g=j[i+\" \"+f]||j[\"* \"+f],!g)for(e in j)if(h=e.split(\" \"),h[1]===f&&(g=j[i+\" \"+h[0]]||j[\"* \"+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a[\"throws\"])b=g(b);else try{b=g(b)}catch(l){return{state:\"parsererror\",error:g?l:\"No conversion from \"+i+\" to \"+f}}}return{state:\"success\",data:b}}n.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:oc,type:\"GET\",isLocal:hc.test(pc[1]),global:!0,processData:!0,async:!0,contentType:\"application/x-www-form-urlencoded; charset=UTF-8\",accepts:{\"*\":nc,text:\"text/plain\",html:\"text/html\",xml:\"application/xml, text/xml\",json:\"application/json, text/javascript\"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:\"responseXML\",text:\"responseText\",json:\"responseJSON\"},converters:{\"* text\":String,\"text html\":!0,\"text json\":n.parseJSON,\"text xml\":n.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?sc(sc(a,n.ajaxSettings),b):sc(n.ajaxSettings,a)},ajaxPrefilter:qc(lc),ajaxTransport:qc(mc),ajax:function(a,b){\"object\"==typeof a&&(b=a,a=void 0),b=b||{};var c,d,e,f,g,h,i,j,k=n.ajaxSetup({},b),l=k.context||k,m=k.context&&(l.nodeType||l.jquery)?n(l):n.event,o=n.Deferred(),p=n.Callbacks(\"once memory\"),q=k.statusCode||{},r={},s={},t=0,u=\"canceled\",v={readyState:0,getResponseHeader:function(a){var b;if(2===t){if(!f){f={};while(b=gc.exec(e))f[b[1].toLowerCase()]=b[2]}b=f[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===t?e:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(k.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){var b=a||u;return c&&c.abort(b),x(0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,k.url=((a||k.url||oc)+\"\").replace(ec,\"\").replace(jc,pc[1]+\"//\"),k.type=b.method||b.type||k.method||k.type,k.dataTypes=n.trim(k.dataType||\"*\").toLowerCase().match(E)||[\"\"],null==k.crossDomain&&(h=kc.exec(k.url.toLowerCase()),k.crossDomain=!(!h||h[1]===pc[1]&&h[2]===pc[2]&&(h[3]||(\"http:\"===h[1]?\"80\":\"443\"))===(pc[3]||(\"http:\"===pc[1]?\"80\":\"443\")))),k.data&&k.processData&&\"string\"!=typeof k.data&&(k.data=n.param(k.data,k.traditional)),rc(lc,k,b,v),2===t)return v;i=n.event&&k.global,i&&0===n.active++&&n.event.trigger(\"ajaxStart\"),k.type=k.type.toUpperCase(),k.hasContent=!ic.test(k.type),d=k.url,k.hasContent||(k.data&&(d=k.url+=(dc.test(d)?\"&\":\"?\")+k.data,delete k.data),k.cache===!1&&(k.url=fc.test(d)?d.replace(fc,\"$1_=\"+cc++):d+(dc.test(d)?\"&\":\"?\")+\"_=\"+cc++)),k.ifModified&&(n.lastModified[d]&&v.setRequestHeader(\"If-Modified-Since\",n.lastModified[d]),n.etag[d]&&v.setRequestHeader(\"If-None-Match\",n.etag[d])),(k.data&&k.hasContent&&k.contentType!==!1||b.contentType)&&v.setRequestHeader(\"Content-Type\",k.contentType),v.setRequestHeader(\"Accept\",k.dataTypes[0]&&k.accepts[k.dataTypes[0]]?k.accepts[k.dataTypes[0]]+(\"*\"!==k.dataTypes[0]?\", \"+nc+\"; q=0.01\":\"\"):k.accepts[\"*\"]);for(j in k.headers)v.setRequestHeader(j,k.headers[j]);if(k.beforeSend&&(k.beforeSend.call(l,v,k)===!1||2===t))return v.abort();u=\"abort\";for(j in{success:1,error:1,complete:1})v[j](k[j]);if(c=rc(mc,k,b,v)){v.readyState=1,i&&m.trigger(\"ajaxSend\",[v,k]),k.async&&k.timeout>0&&(g=setTimeout(function(){v.abort(\"timeout\")},k.timeout));try{t=1,c.send(r,x)}catch(w){if(!(2>t))throw w;x(-1,w)}}else x(-1,\"No Transport\");function x(a,b,f,h){var j,r,s,u,w,x=b;2!==t&&(t=2,g&&clearTimeout(g),c=void 0,e=h||\"\",v.readyState=a>0?4:0,j=a>=200&&300>a||304===a,f&&(u=tc(k,v,f)),u=uc(k,u,v,j),j?(k.ifModified&&(w=v.getResponseHeader(\"Last-Modified\"),w&&(n.lastModified[d]=w),w=v.getResponseHeader(\"etag\"),w&&(n.etag[d]=w)),204===a||\"HEAD\"===k.type?x=\"nocontent\":304===a?x=\"notmodified\":(x=u.state,r=u.data,s=u.error,j=!s)):(s=x,(a||!x)&&(x=\"error\",0>a&&(a=0))),v.status=a,v.statusText=(b||x)+\"\",j?o.resolveWith(l,[r,x,v]):o.rejectWith(l,[v,x,s]),v.statusCode(q),q=void 0,i&&m.trigger(j?\"ajaxSuccess\":\"ajaxError\",[v,k,j?r:s]),p.fireWith(l,[v,x]),i&&(m.trigger(\"ajaxComplete\",[v,k]),--n.active||n.event.trigger(\"ajaxStop\")))}return v},getJSON:function(a,b,c){return n.get(a,b,c,\"json\")},getScript:function(a,b){return n.get(a,void 0,b,\"script\")}}),n.each([\"get\",\"post\"],function(a,b){n[b]=function(a,c,d,e){return n.isFunction(c)&&(e=e||d,d=c,c=void 0),n.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),n._evalUrl=function(a){return n.ajax({url:a,type:\"GET\",dataType:\"script\",async:!1,global:!1,\"throws\":!0})},n.fn.extend({wrapAll:function(a){var b;return n.isFunction(a)?this.each(function(b){n(this).wrapAll(a.call(this,b))}):(this[0]&&(b=n(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this)},wrapInner:function(a){return this.each(n.isFunction(a)?function(b){n(this).wrapInner(a.call(this,b))}:function(){var b=n(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=n.isFunction(a);return this.each(function(c){n(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){n.nodeName(this,\"body\")||n(this).replaceWith(this.childNodes)}).end()}}),n.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0},n.expr.filters.visible=function(a){return!n.expr.filters.hidden(a)};var vc=/%20/g,wc=/\\[\\]$/,xc=/\\r?\\n/g,yc=/^(?:submit|button|image|reset|file)$/i,zc=/^(?:input|select|textarea|keygen)/i;function Ac(a,b,c,d){var e;if(n.isArray(b))n.each(b,function(b,e){c||wc.test(a)?d(a,e):Ac(a+\"[\"+(\"object\"==typeof e?b:\"\")+\"]\",e,c,d)});else if(c||\"object\"!==n.type(b))d(a,b);else for(e in b)Ac(a+\"[\"+e+\"]\",b[e],c,d)}n.param=function(a,b){var c,d=[],e=function(a,b){b=n.isFunction(b)?b():null==b?\"\":b,d[d.length]=encodeURIComponent(a)+\"=\"+encodeURIComponent(b)};if(void 0===b&&(b=n.ajaxSettings&&n.ajaxSettings.traditional),n.isArray(a)||a.jquery&&!n.isPlainObject(a))n.each(a,function(){e(this.name,this.value)});else for(c in a)Ac(c,a[c],b,e);return d.join(\"&\").replace(vc,\"+\")},n.fn.extend({serialize:function(){return n.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=n.prop(this,\"elements\");return a?n.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!n(this).is(\":disabled\")&&zc.test(this.nodeName)&&!yc.test(a)&&(this.checked||!T.test(a))}).map(function(a,b){var c=n(this).val();return null==c?null:n.isArray(c)?n.map(c,function(a){return{name:b.name,value:a.replace(xc,\"\\r\\n\")}}):{name:b.name,value:c.replace(xc,\"\\r\\n\")}}).get()}}),n.ajaxSettings.xhr=function(){try{return new XMLHttpRequest}catch(a){}};var Bc=0,Cc={},Dc={0:200,1223:204},Ec=n.ajaxSettings.xhr();a.attachEvent&&a.attachEvent(\"onunload\",function(){for(var a in Cc)Cc[a]()}),k.cors=!!Ec&&\"withCredentials\"in Ec,k.ajax=Ec=!!Ec,n.ajaxTransport(function(a){var b;return k.cors||Ec&&!a.crossDomain?{send:function(c,d){var e,f=a.xhr(),g=++Bc;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f[e]=a.xhrFields[e];a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c[\"X-Requested-With\"]||(c[\"X-Requested-With\"]=\"XMLHttpRequest\");for(e in c)f.setRequestHeader(e,c[e]);b=function(a){return function(){b&&(delete Cc[g],b=f.onload=f.onerror=null,\"abort\"===a?f.abort():\"error\"===a?d(f.status,f.statusText):d(Dc[f.status]||f.status,f.statusText,\"string\"==typeof f.responseText?{text:f.responseText}:void 0,f.getAllResponseHeaders()))}},f.onload=b(),f.onerror=b(\"error\"),b=Cc[g]=b(\"abort\");try{f.send(a.hasContent&&a.data||null)}catch(h){if(b)throw h}},abort:function(){b&&b()}}:void 0}),n.ajaxSetup({accepts:{script:\"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\"},contents:{script:/(?:java|ecma)script/},converters:{\"text script\":function(a){return n.globalEval(a),a}}}),n.ajaxPrefilter(\"script\",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type=\"GET\")}),n.ajaxTransport(\"script\",function(a){if(a.crossDomain){var b,c;return{send:function(d,e){b=n(\"<script>\").prop({async:!0,charset:a.scriptCharset,src:a.url}).on(\"load error\",c=function(a){b.remove(),c=null,a&&e(\"error\"===a.type?404:200,a.type)}),l.head.appendChild(b[0])},abort:function(){c&&c()}}}});var Fc=[],Gc=/(=)\\?(?=&|$)|\\?\\?/;n.ajaxSetup({jsonp:\"callback\",jsonpCallback:function(){var a=Fc.pop()||n.expando+\"_\"+cc++;return this[a]=!0,a}}),n.ajaxPrefilter(\"json jsonp\",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(Gc.test(b.url)?\"url\":\"string\"==typeof b.data&&!(b.contentType||\"\").indexOf(\"application/x-www-form-urlencoded\")&&Gc.test(b.data)&&\"data\");return h||\"jsonp\"===b.dataTypes[0]?(e=b.jsonpCallback=n.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(Gc,\"$1\"+e):b.jsonp!==!1&&(b.url+=(dc.test(b.url)?\"&\":\"?\")+b.jsonp+\"=\"+e),b.converters[\"script json\"]=function(){return g||n.error(e+\" was not called\"),g[0]},b.dataTypes[0]=\"json\",f=a[e],a[e]=function(){g=arguments},d.always(function(){a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,Fc.push(e)),g&&n.isFunction(f)&&f(g[0]),g=f=void 0}),\"script\"):void 0}),n.parseHTML=function(a,b,c){if(!a||\"string\"!=typeof a)return null;\"boolean\"==typeof b&&(c=b,b=!1),b=b||l;var d=v.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=n.buildFragment([a],b,e),e&&e.length&&n(e).remove(),n.merge([],d.childNodes))};var Hc=n.fn.load;n.fn.load=function(a,b,c){if(\"string\"!=typeof a&&Hc)return Hc.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(\" \");return h>=0&&(d=n.trim(a.slice(h)),a=a.slice(0,h)),n.isFunction(b)?(c=b,b=void 0):b&&\"object\"==typeof b&&(e=\"POST\"),g.length>0&&n.ajax({url:a,type:e,dataType:\"html\",data:b}).done(function(a){f=arguments,g.html(d?n(\"<div>\").append(n.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,f||[a.responseText,b,a])}),this},n.each([\"ajaxStart\",\"ajaxStop\",\"ajaxComplete\",\"ajaxError\",\"ajaxSuccess\",\"ajaxSend\"],function(a,b){n.fn[b]=function(a){return this.on(b,a)}}),n.expr.filters.animated=function(a){return n.grep(n.timers,function(b){return a===b.elem}).length};var Ic=a.document.documentElement;function Jc(a){return n.isWindow(a)?a:9===a.nodeType&&a.defaultView}n.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=n.css(a,\"position\"),l=n(a),m={};\"static\"===k&&(a.style.position=\"relative\"),h=l.offset(),f=n.css(a,\"top\"),i=n.css(a,\"left\"),j=(\"absolute\"===k||\"fixed\"===k)&&(f+i).indexOf(\"auto\")>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),n.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),\"using\"in b?b.using.call(a,m):l.css(m)}},n.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){n.offset.setOffset(this,a,b)});var b,c,d=this[0],e={top:0,left:0},f=d&&d.ownerDocument;if(f)return b=f.documentElement,n.contains(b,d)?(typeof d.getBoundingClientRect!==U&&(e=d.getBoundingClientRect()),c=Jc(f),{top:e.top+c.pageYOffset-b.clientTop,left:e.left+c.pageXOffset-b.clientLeft}):e},position:function(){if(this[0]){var a,b,c=this[0],d={top:0,left:0};return\"fixed\"===n.css(c,\"position\")?b=c.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),n.nodeName(a[0],\"html\")||(d=a.offset()),d.top+=n.css(a[0],\"borderTopWidth\",!0),d.left+=n.css(a[0],\"borderLeftWidth\",!0)),{top:b.top-d.top-n.css(c,\"marginTop\",!0),left:b.left-d.left-n.css(c,\"marginLeft\",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||Ic;while(a&&!n.nodeName(a,\"html\")&&\"static\"===n.css(a,\"position\"))a=a.offsetParent;return a||Ic})}}),n.each({scrollLeft:\"pageXOffset\",scrollTop:\"pageYOffset\"},function(b,c){var d=\"pageYOffset\"===c;n.fn[b]=function(e){return J(this,function(b,e,f){var g=Jc(b);return void 0===f?g?g[c]:b[e]:void(g?g.scrollTo(d?a.pageXOffset:f,d?f:a.pageYOffset):b[e]=f)},b,e,arguments.length,null)}}),n.each([\"top\",\"left\"],function(a,b){n.cssHooks[b]=yb(k.pixelPosition,function(a,c){return c?(c=xb(a,b),vb.test(c)?n(a).position()[b]+\"px\":c):void 0})}),n.each({Height:\"height\",Width:\"width\"},function(a,b){n.each({padding:\"inner\"+a,content:b,\"\":\"outer\"+a},function(c,d){n.fn[d]=function(d,e){var f=arguments.length&&(c||\"boolean\"!=typeof d),g=c||(d===!0||e===!0?\"margin\":\"border\");return J(this,function(b,c,d){var e;return n.isWindow(b)?b.document.documentElement[\"client\"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body[\"scroll\"+a],e[\"scroll\"+a],b.body[\"offset\"+a],e[\"offset\"+a],e[\"client\"+a])):void 0===d?n.css(b,c,g):n.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),n.fn.size=function(){return this.length},n.fn.andSelf=n.fn.addBack,\"function\"==typeof define&&define.amd&&define(\"jquery\",[],function(){return n});var Kc=a.jQuery,Lc=a.$;return n.noConflict=function(b){return a.$===n&&(a.$=Lc),b&&a.jQuery===n&&(a.jQuery=Kc),n},typeof b===U&&(a.jQuery=a.$=n),n});\r\n;/*!\r\n* D3 ver 3.5.5\r\n*\r\n* Copyright (c) 2010-2015, Michael Bostock\r\n* All rights reserved.\r\n*/\r\n\r\n!function(){function n(n){return n&&(n.ownerDocument||n.document||n).documentElement}function t(n){return n&&(n.ownerDocument&&n.ownerDocument.defaultView||n.document&&n||n.defaultView)}function e(n,t){return t>n?-1:n>t?1:n>=t?0:0/0}function r(n){return null===n?0/0:+n}function u(n){return!isNaN(n)}function i(n){return{left:function(t,e,r,u){for(arguments.length<3&&(r=0),arguments.length<4&&(u=t.length);u>r;){var i=r+u>>>1;n(t[i],e)<0?r=i+1:u=i}return r},right:function(t,e,r,u){for(arguments.length<3&&(r=0),arguments.length<4&&(u=t.length);u>r;){var i=r+u>>>1;n(t[i],e)>0?u=i:r=i+1}return r}}}function o(n){return n.length}function a(n){for(var t=1;n*t%1;)t*=10;return t}function c(n,t){for(var e in t)Object.defineProperty(n.prototype,e,{value:t[e],enumerable:!1})}function l(){this._=Object.create(null)}function s(n){return(n+=\"\")===pa||n[0]===va?va+n:n}function f(n){return(n+=\"\")[0]===va?n.slice(1):n}function h(n){return s(n)in this._}function g(n){return(n=s(n))in this._&&delete this._[n]}function p(){var n=[];for(var t in this._)n.push(f(t));return n}function v(){var n=0;for(var t in this._)++n;return n}function d(){for(var n in this._)return!1;return!0}function m(){this._=Object.create(null)}function y(n){return n}function M(n,t,e){return function(){var r=e.apply(t,arguments);return r===t?n:r}}function x(n,t){if(t in n)return t;t=t.charAt(0).toUpperCase()+t.slice(1);for(var e=0,r=da.length;r>e;++e){var u=da[e]+t;if(u in n)return u}}function b(){}function _(){}function w(n){function t(){for(var t,r=e,u=-1,i=r.length;++u<i;)(t=r[u].on)&&t.apply(this,arguments);return n}var e=[],r=new l;return t.on=function(t,u){var i,o=r.get(t);return arguments.length<2?o&&o.on:(o&&(o.on=null,e=e.slice(0,i=e.indexOf(o)).concat(e.slice(i+1)),r.remove(t)),u&&e.push(r.set(t,{on:u})),n)},t}function S(){ta.event.preventDefault()}function k(){for(var n,t=ta.event;n=t.sourceEvent;)t=n;return t}function E(n){for(var t=new _,e=0,r=arguments.length;++e<r;)t[arguments[e]]=w(t);return t.of=function(e,r){return function(u){try{var i=u.sourceEvent=ta.event;u.target=n,ta.event=u,t[u.type].apply(e,r)}finally{ta.event=i}}},t}function A(n){return ya(n,_a),n}function N(n){return\"function\"==typeof n?n:function(){return Ma(n,this)}}function C(n){return\"function\"==typeof n?n:function(){return xa(n,this)}}function z(n,t){function e(){this.removeAttribute(n)}function r(){this.removeAttributeNS(n.space,n.local)}function u(){this.setAttribute(n,t)}function i(){this.setAttributeNS(n.space,n.local,t)}function o(){var e=t.apply(this,arguments);null==e?this.removeAttribute(n):this.setAttribute(n,e)}function a(){var e=t.apply(this,arguments);null==e?this.removeAttributeNS(n.space,n.local):this.setAttributeNS(n.space,n.local,e)}return n=ta.ns.qualify(n),null==t?n.local?r:e:\"function\"==typeof t?n.local?a:o:n.local?i:u}function q(n){return n.trim().replace(/\\s+/g,\" \")}function L(n){return new RegExp(\"(?:^|\\\\s+)\"+ta.requote(n)+\"(?:\\\\s+|$)\",\"g\")}function T(n){return(n+\"\").trim().split(/^|\\s+/)}function R(n,t){function e(){for(var e=-1;++e<u;)n[e](this,t)}function r(){for(var e=-1,r=t.apply(this,arguments);++e<u;)n[e](this,r)}n=T(n).map(D);var u=n.length;return\"function\"==typeof t?r:e}function D(n){var t=L(n);return function(e,r){if(u=e.classList)return r?u.add(n):u.remove(n);var u=e.getAttribute(\"class\")||\"\";r?(t.lastIndex=0,t.test(u)||e.setAttribute(\"class\",q(u+\" \"+n))):e.setAttribute(\"class\",q(u.replace(t,\" \")))}}function P(n,t,e){function r(){this.style.removeProperty(n)}function u(){this.style.setProperty(n,t,e)}function i(){var r=t.apply(this,arguments);null==r?this.style.removeProperty(n):this.style.setProperty(n,r,e)}return null==t?r:\"function\"==typeof t?i:u}function U(n,t){function e(){delete this[n]}function r(){this[n]=t}function u(){var e=t.apply(this,arguments);null==e?delete this[n]:this[n]=e}return null==t?e:\"function\"==typeof t?u:r}function j(n){function t(){var t=this.ownerDocument,e=this.namespaceURI;return e?t.createElementNS(e,n):t.createElement(n)}function e(){return this.ownerDocument.createElementNS(n.space,n.local)}return\"function\"==typeof n?n:(n=ta.ns.qualify(n)).local?e:t}function F(){var n=this.parentNode;n&&n.removeChild(this)}function H(n){return{__data__:n}}function O(n){return function(){return ba(this,n)}}function I(n){return arguments.length||(n=e),function(t,e){return t&&e?n(t.__data__,e.__data__):!t-!e}}function Y(n,t){for(var e=0,r=n.length;r>e;e++)for(var u,i=n[e],o=0,a=i.length;a>o;o++)(u=i[o])&&t(u,o,e);return n}function Z(n){return ya(n,Sa),n}function V(n){var t,e;return function(r,u,i){var o,a=n[i].update,c=a.length;for(i!=e&&(e=i,t=0),u>=t&&(t=u+1);!(o=a[t])&&++t<c;);return o}}function X(n,t,e){function r(){var t=this[o];t&&(this.removeEventListener(n,t,t.$),delete this[o])}function u(){var u=c(t,ra(arguments));r.call(this),this.addEventListener(n,this[o]=u,u.$=e),u._=t}function i(){var t,e=new RegExp(\"^__on([^.]+)\"+ta.requote(n)+\"$\");for(var r in this)if(t=r.match(e)){var u=this[r];this.removeEventListener(t[1],u,u.$),delete this[r]}}var o=\"__on\"+n,a=n.indexOf(\".\"),c=$;a>0&&(n=n.slice(0,a));var l=ka.get(n);return l&&(n=l,c=B),a?t?u:r:t?b:i}function $(n,t){return function(e){var r=ta.event;ta.event=e,t[0]=this.__data__;try{n.apply(this,t)}finally{ta.event=r}}}function B(n,t){var e=$(n,t);return function(n){var t=this,r=n.relatedTarget;r&&(r===t||8&r.compareDocumentPosition(t))||e.call(t,n)}}function W(e){var r=\".dragsuppress-\"+ ++Aa,u=\"click\"+r,i=ta.select(t(e)).on(\"touchmove\"+r,S).on(\"dragstart\"+r,S).on(\"selectstart\"+r,S);if(null==Ea&&(Ea=\"onselectstart\"in e?!1:x(e.style,\"userSelect\")),Ea){var o=n(e).style,a=o[Ea];o[Ea]=\"none\"}return function(n){if(i.on(r,null),Ea&&(o[Ea]=a),n){var t=function(){i.on(u,null)};i.on(u,function(){S(),t()},!0),setTimeout(t,0)}}}function J(n,e){e.changedTouches&&(e=e.changedTouches[0]);var r=n.ownerSVGElement||n;if(r.createSVGPoint){var u=r.createSVGPoint();if(0>Na){var i=t(n);if(i.scrollX||i.scrollY){r=ta.select(\"body\").append(\"svg\").style({position:\"absolute\",top:0,left:0,margin:0,padding:0,border:\"none\"},\"important\");var o=r[0][0].getScreenCTM();Na=!(o.f||o.e),r.remove()}}return Na?(u.x=e.pageX,u.y=e.pageY):(u.x=e.clientX,u.y=e.clientY),u=u.matrixTransform(n.getScreenCTM().inverse()),[u.x,u.y]}var a=n.getBoundingClientRect();return[e.clientX-a.left-n.clientLeft,e.clientY-a.top-n.clientTop]}function G(){return ta.event.changedTouches[0].identifier}function K(n){return n>0?1:0>n?-1:0}function Q(n,t,e){return(t[0]-n[0])*(e[1]-n[1])-(t[1]-n[1])*(e[0]-n[0])}function nt(n){return n>1?0:-1>n?qa:Math.acos(n)}function tt(n){return n>1?Ra:-1>n?-Ra:Math.asin(n)}function et(n){return((n=Math.exp(n))-1/n)/2}function rt(n){return((n=Math.exp(n))+1/n)/2}function ut(n){return((n=Math.exp(2*n))-1)/(n+1)}function it(n){return(n=Math.sin(n/2))*n}function ot(){}function at(n,t,e){return this instanceof at?(this.h=+n,this.s=+t,void(this.l=+e)):arguments.length<2?n instanceof at?new at(n.h,n.s,n.l):bt(\"\"+n,_t,at):new at(n,t,e)}function ct(n,t,e){function r(n){return n>360?n-=360:0>n&&(n+=360),60>n?i+(o-i)*n/60:180>n?o:240>n?i+(o-i)*(240-n)/60:i}function u(n){return Math.round(255*r(n))}var i,o;return n=isNaN(n)?0:(n%=360)<0?n+360:n,t=isNaN(t)?0:0>t?0:t>1?1:t,e=0>e?0:e>1?1:e,o=.5>=e?e*(1+t):e+t-e*t,i=2*e-o,new mt(u(n+120),u(n),u(n-120))}function lt(n,t,e){return this instanceof lt?(this.h=+n,this.c=+t,void(this.l=+e)):arguments.length<2?n instanceof lt?new lt(n.h,n.c,n.l):n instanceof ft?gt(n.l,n.a,n.b):gt((n=wt((n=ta.rgb(n)).r,n.g,n.b)).l,n.a,n.b):new lt(n,t,e)}function st(n,t,e){return isNaN(n)&&(n=0),isNaN(t)&&(t=0),new ft(e,Math.cos(n*=Da)*t,Math.sin(n)*t)}function ft(n,t,e){return this instanceof ft?(this.l=+n,this.a=+t,void(this.b=+e)):arguments.length<2?n instanceof ft?new ft(n.l,n.a,n.b):n instanceof lt?st(n.h,n.c,n.l):wt((n=mt(n)).r,n.g,n.b):new ft(n,t,e)}function ht(n,t,e){var r=(n+16)/116,u=r+t/500,i=r-e/200;return u=pt(u)*Xa,r=pt(r)*$a,i=pt(i)*Ba,new mt(dt(3.2404542*u-1.5371385*r-.4985314*i),dt(-.969266*u+1.8760108*r+.041556*i),dt(.0556434*u-.2040259*r+1.0572252*i))}function gt(n,t,e){return n>0?new lt(Math.atan2(e,t)*Pa,Math.sqrt(t*t+e*e),n):new lt(0/0,0/0,n)}function pt(n){return n>.206893034?n*n*n:(n-4/29)/7.787037}function vt(n){return n>.008856?Math.pow(n,1/3):7.787037*n+4/29}function dt(n){return Math.round(255*(.00304>=n?12.92*n:1.055*Math.pow(n,1/2.4)-.055))}function mt(n,t,e){return this instanceof mt?(this.r=~~n,this.g=~~t,void(this.b=~~e)):arguments.length<2?n instanceof mt?new mt(n.r,n.g,n.b):bt(\"\"+n,mt,ct):new mt(n,t,e)}function yt(n){return new mt(n>>16,n>>8&255,255&n)}function Mt(n){return yt(n)+\"\"}function xt(n){return 16>n?\"0\"+Math.max(0,n).toString(16):Math.min(255,n).toString(16)}function bt(n,t,e){var r,u,i,o=0,a=0,c=0;if(r=/([a-z]+)\\((.*)\\)/i.exec(n))switch(u=r[2].split(\",\"),r[1]){case\"hsl\":return e(parseFloat(u[0]),parseFloat(u[1])/100,parseFloat(u[2])/100);case\"rgb\":return t(kt(u[0]),kt(u[1]),kt(u[2]))}return(i=Ga.get(n.toLowerCase()))?t(i.r,i.g,i.b):(null==n||\"#\"!==n.charAt(0)||isNaN(i=parseInt(n.slice(1),16))||(4===n.length?(o=(3840&i)>>4,o=o>>4|o,a=240&i,a=a>>4|a,c=15&i,c=c<<4|c):7===n.length&&(o=(16711680&i)>>16,a=(65280&i)>>8,c=255&i)),t(o,a,c))}function _t(n,t,e){var r,u,i=Math.min(n/=255,t/=255,e/=255),o=Math.max(n,t,e),a=o-i,c=(o+i)/2;return a?(u=.5>c?a/(o+i):a/(2-o-i),r=n==o?(t-e)/a+(e>t?6:0):t==o?(e-n)/a+2:(n-t)/a+4,r*=60):(r=0/0,u=c>0&&1>c?0:r),new at(r,u,c)}function wt(n,t,e){n=St(n),t=St(t),e=St(e);var r=vt((.4124564*n+.3575761*t+.1804375*e)/Xa),u=vt((.2126729*n+.7151522*t+.072175*e)/$a),i=vt((.0193339*n+.119192*t+.9503041*e)/Ba);return ft(116*u-16,500*(r-u),200*(u-i))}function St(n){return(n/=255)<=.04045?n/12.92:Math.pow((n+.055)/1.055,2.4)}function kt(n){var t=parseFloat(n);return\"%\"===n.charAt(n.length-1)?Math.round(2.55*t):t}function Et(n){return\"function\"==typeof n?n:function(){return n}}function At(n){return function(t,e,r){return 2===arguments.length&&\"function\"==typeof e&&(r=e,e=null),Nt(t,e,n,r)}}function Nt(n,t,e,r){function u(){var n,t=c.status;if(!t&&zt(c)||t>=200&&300>t||304===t){try{n=e.call(i,c)}catch(r){return void o.error.call(i,r)}o.load.call(i,n)}else o.error.call(i,c)}var i={},o=ta.dispatch(\"beforesend\",\"progress\",\"load\",\"error\"),a={},c=new XMLHttpRequest,l=null;return!this.XDomainRequest||\"withCredentials\"in c||!/^(http(s)?:)?\\/\\//.test(n)||(c=new XDomainRequest),\"onload\"in c?c.onload=c.onerror=u:c.onreadystatechange=function(){c.readyState>3&&u()},c.onprogress=function(n){var t=ta.event;ta.event=n;try{o.progress.call(i,c)}finally{ta.event=t}},i.header=function(n,t){return n=(n+\"\").toLowerCase(),arguments.length<2?a[n]:(null==t?delete a[n]:a[n]=t+\"\",i)},i.mimeType=function(n){return arguments.length?(t=null==n?null:n+\"\",i):t},i.responseType=function(n){return arguments.length?(l=n,i):l},i.response=function(n){return e=n,i},[\"get\",\"post\"].forEach(function(n){i[n]=function(){return i.send.apply(i,[n].concat(ra(arguments)))}}),i.send=function(e,r,u){if(2===arguments.length&&\"function\"==typeof r&&(u=r,r=null),c.open(e,n,!0),null==t||\"accept\"in a||(a.accept=t+\",*/*\"),c.setRequestHeader)for(var s in a)c.setRequestHeader(s,a[s]);return null!=t&&c.overrideMimeType&&c.overrideMimeType(t),null!=l&&(c.responseType=l),null!=u&&i.on(\"error\",u).on(\"load\",function(n){u(null,n)}),o.beforesend.call(i,c),c.send(null==r?null:r),i},i.abort=function(){return c.abort(),i},ta.rebind(i,o,\"on\"),null==r?i:i.get(Ct(r))}function Ct(n){return 1===n.length?function(t,e){n(null==t?e:null)}:n}function zt(n){var t=n.responseType;return t&&\"text\"!==t?n.response:n.responseText}function qt(){var n=Lt(),t=Tt()-n;t>24?(isFinite(t)&&(clearTimeout(tc),tc=setTimeout(qt,t)),nc=0):(nc=1,rc(qt))}function Lt(){var n=Date.now();for(ec=Ka;ec;)n>=ec.t&&(ec.f=ec.c(n-ec.t)),ec=ec.n;return n}function Tt(){for(var n,t=Ka,e=1/0;t;)t.f?t=n?n.n=t.n:Ka=t.n:(t.t<e&&(e=t.t),t=(n=t).n);return Qa=n,e}function Rt(n,t){return t-(n?Math.ceil(Math.log(n)/Math.LN10):1)}function Dt(n,t){var e=Math.pow(10,3*ga(8-t));return{scale:t>8?function(n){return n/e}:function(n){return n*e},symbol:n}}function Pt(n){var t=n.decimal,e=n.thousands,r=n.grouping,u=n.currency,i=r&&e?function(n,t){for(var u=n.length,i=[],o=0,a=r[0],c=0;u>0&&a>0&&(c+a+1>t&&(a=Math.max(1,t-c)),i.push(n.substring(u-=a,u+a)),!((c+=a+1)>t));)a=r[o=(o+1)%r.length];return i.reverse().join(e)}:y;return function(n){var e=ic.exec(n),r=e[1]||\" \",o=e[2]||\">\",a=e[3]||\"-\",c=e[4]||\"\",l=e[5],s=+e[6],f=e[7],h=e[8],g=e[9],p=1,v=\"\",d=\"\",m=!1,y=!0;switch(h&&(h=+h.substring(1)),(l||\"0\"===r&&\"=\"===o)&&(l=r=\"0\",o=\"=\"),g){case\"n\":f=!0,g=\"g\";break;case\"%\":p=100,d=\"%\",g=\"f\";break;case\"p\":p=100,d=\"%\",g=\"r\";break;case\"b\":case\"o\":case\"x\":case\"X\":\"#\"===c&&(v=\"0\"+g.toLowerCase());case\"c\":y=!1;case\"d\":m=!0,h=0;break;case\"s\":p=-1,g=\"r\"}\"$\"===c&&(v=u[0],d=u[1]),\"r\"!=g||h||(g=\"g\"),null!=h&&(\"g\"==g?h=Math.max(1,Math.min(21,h)):(\"e\"==g||\"f\"==g)&&(h=Math.max(0,Math.min(20,h)))),g=oc.get(g)||Ut;var M=l&&f;return function(n){var e=d;if(m&&n%1)return\"\";var u=0>n||0===n&&0>1/n?(n=-n,\"-\"):\"-\"===a?\"\":a;if(0>p){var c=ta.formatPrefix(n,h);n=c.scale(n),e=c.symbol+d}else n*=p;n=g(n,h);var x,b,_=n.lastIndexOf(\".\");if(0>_){var w=y?n.lastIndexOf(\"e\"):-1;0>w?(x=n,b=\"\"):(x=n.substring(0,w),b=n.substring(w))}else x=n.substring(0,_),b=t+n.substring(_+1);!l&&f&&(x=i(x,1/0));var S=v.length+x.length+b.length+(M?0:u.length),k=s>S?new Array(S=s-S+1).join(r):\"\";return M&&(x=i(k+x,k.length?s-b.length:1/0)),u+=v,n=x+b,(\"<\"===o?u+n+k:\">\"===o?k+u+n:\"^\"===o?k.substring(0,S>>=1)+u+n+k.substring(S):u+(M?n:k+n))+e}}}function Ut(n){return n+\"\"}function jt(){this._=new Date(arguments.length>1?Date.UTC.apply(this,arguments):arguments[0])}function Ft(n,t,e){function r(t){var e=n(t),r=i(e,1);return r-t>t-e?e:r}function u(e){return t(e=n(new cc(e-1)),1),e}function i(n,e){return t(n=new cc(+n),e),n}function o(n,r,i){var o=u(n),a=[];if(i>1)for(;r>o;)e(o)%i||a.push(new Date(+o)),t(o,1);else for(;r>o;)a.push(new Date(+o)),t(o,1);return a}function a(n,t,e){try{cc=jt;var r=new jt;return r._=n,o(r,t,e)}finally{cc=Date}}n.floor=n,n.round=r,n.ceil=u,n.offset=i,n.range=o;var c=n.utc=Ht(n);return c.floor=c,c.round=Ht(r),c.ceil=Ht(u),c.offset=Ht(i),c.range=a,n}function Ht(n){return function(t,e){try{cc=jt;var r=new jt;return r._=t,n(r,e)._}finally{cc=Date}}}function Ot(n){function t(n){function t(t){for(var e,u,i,o=[],a=-1,c=0;++a<r;)37===n.charCodeAt(a)&&(o.push(n.slice(c,a)),null!=(u=sc[e=n.charAt(++a)])&&(e=n.charAt(++a)),(i=N[e])&&(e=i(t,null==u?\"e\"===e?\" \":\"0\":u)),o.push(e),c=a+1);return o.push(n.slice(c,a)),o.join(\"\")}var r=n.length;return t.parse=function(t){var r={y:1900,m:0,d:1,H:0,M:0,S:0,L:0,Z:null},u=e(r,n,t,0);if(u!=t.length)return null;\"p\"in r&&(r.H=r.H%12+12*r.p);var i=null!=r.Z&&cc!==jt,o=new(i?jt:cc);return\"j\"in r?o.setFullYear(r.y,0,r.j):\"w\"in r&&(\"W\"in r||\"U\"in r)?(o.setFullYear(r.y,0,1),o.setFullYear(r.y,0,\"W\"in r?(r.w+6)%7+7*r.W-(o.getDay()+5)%7:r.w+7*r.U-(o.getDay()+6)%7)):o.setFullYear(r.y,r.m,r.d),o.setHours(r.H+(r.Z/100|0),r.M+r.Z%100,r.S,r.L),i?o._:o},t.toString=function(){return n},t}function e(n,t,e,r){for(var u,i,o,a=0,c=t.length,l=e.length;c>a;){if(r>=l)return-1;if(u=t.charCodeAt(a++),37===u){if(o=t.charAt(a++),i=C[o in sc?t.charAt(a++):o],!i||(r=i(n,e,r))<0)return-1}else if(u!=e.charCodeAt(r++))return-1}return r}function r(n,t,e){_.lastIndex=0;var r=_.exec(t.slice(e));return r?(n.w=w.get(r[0].toLowerCase()),e+r[0].length):-1}function u(n,t,e){x.lastIndex=0;var r=x.exec(t.slice(e));return r?(n.w=b.get(r[0].toLowerCase()),e+r[0].length):-1}function i(n,t,e){E.lastIndex=0;var r=E.exec(t.slice(e));return r?(n.m=A.get(r[0].toLowerCase()),e+r[0].length):-1}function o(n,t,e){S.lastIndex=0;var r=S.exec(t.slice(e));return r?(n.m=k.get(r[0].toLowerCase()),e+r[0].length):-1}function a(n,t,r){return e(n,N.c.toString(),t,r)}function c(n,t,r){return e(n,N.x.toString(),t,r)}function l(n,t,r){return e(n,N.X.toString(),t,r)}function s(n,t,e){var r=M.get(t.slice(e,e+=2).toLowerCase());return null==r?-1:(n.p=r,e)}var f=n.dateTime,h=n.date,g=n.time,p=n.periods,v=n.days,d=n.shortDays,m=n.months,y=n.shortMonths;t.utc=function(n){function e(n){try{cc=jt;var t=new cc;return t._=n,r(t)}finally{cc=Date}}var r=t(n);return e.parse=function(n){try{cc=jt;var t=r.parse(n);return t&&t._}finally{cc=Date}},e.toString=r.toString,e},t.multi=t.utc.multi=ae;var M=ta.map(),x=Yt(v),b=Zt(v),_=Yt(d),w=Zt(d),S=Yt(m),k=Zt(m),E=Yt(y),A=Zt(y);p.forEach(function(n,t){M.set(n.toLowerCase(),t)});var N={a:function(n){return d[n.getDay()]},A:function(n){return v[n.getDay()]},b:function(n){return y[n.getMonth()]},B:function(n){return m[n.getMonth()]},c:t(f),d:function(n,t){return It(n.getDate(),t,2)},e:function(n,t){return It(n.getDate(),t,2)},H:function(n,t){return It(n.getHours(),t,2)},I:function(n,t){return It(n.getHours()%12||12,t,2)},j:function(n,t){return It(1+ac.dayOfYear(n),t,3)},L:function(n,t){return It(n.getMilliseconds(),t,3)},m:function(n,t){return It(n.getMonth()+1,t,2)},M:function(n,t){return It(n.getMinutes(),t,2)},p:function(n){return p[+(n.getHours()>=12)]},S:function(n,t){return It(n.getSeconds(),t,2)},U:function(n,t){return It(ac.sundayOfYear(n),t,2)},w:function(n){return n.getDay()},W:function(n,t){return It(ac.mondayOfYear(n),t,2)},x:t(h),X:t(g),y:function(n,t){return It(n.getFullYear()%100,t,2)},Y:function(n,t){return It(n.getFullYear()%1e4,t,4)},Z:ie,\"%\":function(){return\"%\"}},C={a:r,A:u,b:i,B:o,c:a,d:Qt,e:Qt,H:te,I:te,j:ne,L:ue,m:Kt,M:ee,p:s,S:re,U:Xt,w:Vt,W:$t,x:c,X:l,y:Wt,Y:Bt,Z:Jt,\"%\":oe};return t}function It(n,t,e){var r=0>n?\"-\":\"\",u=(r?-n:n)+\"\",i=u.length;return r+(e>i?new Array(e-i+1).join(t)+u:u)}function Yt(n){return new RegExp(\"^(?:\"+n.map(ta.requote).join(\"|\")+\")\",\"i\")}function Zt(n){for(var t=new l,e=-1,r=n.length;++e<r;)t.set(n[e].toLowerCase(),e);return t}function Vt(n,t,e){fc.lastIndex=0;var r=fc.exec(t.slice(e,e+1));return r?(n.w=+r[0],e+r[0].length):-1}function Xt(n,t,e){fc.lastIndex=0;var r=fc.exec(t.slice(e));return r?(n.U=+r[0],e+r[0].length):-1}function $t(n,t,e){fc.lastIndex=0;var r=fc.exec(t.slice(e));return r?(n.W=+r[0],e+r[0].length):-1}function Bt(n,t,e){fc.lastIndex=0;var r=fc.exec(t.slice(e,e+4));return r?(n.y=+r[0],e+r[0].length):-1}function Wt(n,t,e){fc.lastIndex=0;var r=fc.exec(t.slice(e,e+2));return r?(n.y=Gt(+r[0]),e+r[0].length):-1}function Jt(n,t,e){return/^[+-]\\d{4}$/.test(t=t.slice(e,e+5))?(n.Z=-t,e+5):-1}function Gt(n){return n+(n>68?1900:2e3)}function Kt(n,t,e){fc.lastIndex=0;var r=fc.exec(t.slice(e,e+2));return r?(n.m=r[0]-1,e+r[0].length):-1}function Qt(n,t,e){fc.lastIndex=0;var r=fc.exec(t.slice(e,e+2));return r?(n.d=+r[0],e+r[0].length):-1}function ne(n,t,e){fc.lastIndex=0;var r=fc.exec(t.slice(e,e+3));return r?(n.j=+r[0],e+r[0].length):-1}function te(n,t,e){fc.lastIndex=0;var r=fc.exec(t.slice(e,e+2));return r?(n.H=+r[0],e+r[0].length):-1}function ee(n,t,e){fc.lastIndex=0;var r=fc.exec(t.slice(e,e+2));return r?(n.M=+r[0],e+r[0].length):-1}function re(n,t,e){fc.lastIndex=0;var r=fc.exec(t.slice(e,e+2));return r?(n.S=+r[0],e+r[0].length):-1}function ue(n,t,e){fc.lastIndex=0;var r=fc.exec(t.slice(e,e+3));return r?(n.L=+r[0],e+r[0].length):-1}function ie(n){var t=n.getTimezoneOffset(),e=t>0?\"-\":\"+\",r=ga(t)/60|0,u=ga(t)%60;return e+It(r,\"0\",2)+It(u,\"0\",2)}function oe(n,t,e){hc.lastIndex=0;var r=hc.exec(t.slice(e,e+1));return r?e+r[0].length:-1}function ae(n){for(var t=n.length,e=-1;++e<t;)n[e][0]=this(n[e][0]);return function(t){for(var e=0,r=n[e];!r[1](t);)r=n[++e];return r[0](t)}}function ce(){}function le(n,t,e){var r=e.s=n+t,u=r-n,i=r-u;e.t=n-i+(t-u)}function se(n,t){n&&dc.hasOwnProperty(n.type)&&dc[n.type](n,t)}function fe(n,t,e){var r,u=-1,i=n.length-e;for(t.lineStart();++u<i;)r=n[u],t.point(r[0],r[1],r[2]);t.lineEnd()}function he(n,t){var e=-1,r=n.length;for(t.polygonStart();++e<r;)fe(n[e],t,1);t.polygonEnd()}function ge(){function n(n,t){n*=Da,t=t*Da/2+qa/4;var e=n-r,o=e>=0?1:-1,a=o*e,c=Math.cos(t),l=Math.sin(t),s=i*l,f=u*c+s*Math.cos(a),h=s*o*Math.sin(a);yc.add(Math.atan2(h,f)),r=n,u=c,i=l}var t,e,r,u,i;Mc.point=function(o,a){Mc.point=n,r=(t=o)*Da,u=Math.cos(a=(e=a)*Da/2+qa/4),i=Math.sin(a)},Mc.lineEnd=function(){n(t,e)}}function pe(n){var t=n[0],e=n[1],r=Math.cos(e);return[r*Math.cos(t),r*Math.sin(t),Math.sin(e)]}function ve(n,t){return n[0]*t[0]+n[1]*t[1]+n[2]*t[2]}function de(n,t){return[n[1]*t[2]-n[2]*t[1],n[2]*t[0]-n[0]*t[2],n[0]*t[1]-n[1]*t[0]]}function me(n,t){n[0]+=t[0],n[1]+=t[1],n[2]+=t[2]}function ye(n,t){return[n[0]*t,n[1]*t,n[2]*t]}function Me(n){var t=Math.sqrt(n[0]*n[0]+n[1]*n[1]+n[2]*n[2]);n[0]/=t,n[1]/=t,n[2]/=t}function xe(n){return[Math.atan2(n[1],n[0]),tt(n[2])]}function be(n,t){return ga(n[0]-t[0])<Ca&&ga(n[1]-t[1])<Ca}function _e(n,t){n*=Da;var e=Math.cos(t*=Da);we(e*Math.cos(n),e*Math.sin(n),Math.sin(t))}function we(n,t,e){++xc,_c+=(n-_c)/xc,wc+=(t-wc)/xc,Sc+=(e-Sc)/xc}function Se(){function n(n,u){n*=Da;var i=Math.cos(u*=Da),o=i*Math.cos(n),a=i*Math.sin(n),c=Math.sin(u),l=Math.atan2(Math.sqrt((l=e*c-r*a)*l+(l=r*o-t*c)*l+(l=t*a-e*o)*l),t*o+e*a+r*c);bc+=l,kc+=l*(t+(t=o)),Ec+=l*(e+(e=a)),Ac+=l*(r+(r=c)),we(t,e,r)}var t,e,r;qc.point=function(u,i){u*=Da;var o=Math.cos(i*=Da);t=o*Math.cos(u),e=o*Math.sin(u),r=Math.sin(i),qc.point=n,we(t,e,r)}}function ke(){qc.point=_e}function Ee(){function n(n,t){n*=Da;var e=Math.cos(t*=Da),o=e*Math.cos(n),a=e*Math.sin(n),c=Math.sin(t),l=u*c-i*a,s=i*o-r*c,f=r*a-u*o,h=Math.sqrt(l*l+s*s+f*f),g=r*o+u*a+i*c,p=h&&-nt(g)/h,v=Math.atan2(h,g);Nc+=p*l,Cc+=p*s,zc+=p*f,bc+=v,kc+=v*(r+(r=o)),Ec+=v*(u+(u=a)),Ac+=v*(i+(i=c)),we(r,u,i)}var t,e,r,u,i;qc.point=function(o,a){t=o,e=a,qc.point=n,o*=Da;var c=Math.cos(a*=Da);r=c*Math.cos(o),u=c*Math.sin(o),i=Math.sin(a),we(r,u,i)},qc.lineEnd=function(){n(t,e),qc.lineEnd=ke,qc.point=_e}}function Ae(n,t){function e(e,r){return e=n(e,r),t(e[0],e[1])}return n.invert&&t.invert&&(e.invert=function(e,r){return e=t.invert(e,r),e&&n.invert(e[0],e[1])}),e}function Ne(){return!0}function Ce(n,t,e,r,u){var i=[],o=[];if(n.forEach(function(n){if(!((t=n.length-1)<=0)){var t,e=n[0],r=n[t];if(be(e,r)){u.lineStart();for(var a=0;t>a;++a)u.point((e=n[a])[0],e[1]);return void u.lineEnd()}var c=new qe(e,n,null,!0),l=new qe(e,null,c,!1);c.o=l,i.push(c),o.push(l),c=new qe(r,n,null,!1),l=new qe(r,null,c,!0),c.o=l,i.push(c),o.push(l)}}),o.sort(t),ze(i),ze(o),i.length){for(var a=0,c=e,l=o.length;l>a;++a)o[a].e=c=!c;for(var s,f,h=i[0];;){for(var g=h,p=!0;g.v;)if((g=g.n)===h)return;s=g.z,u.lineStart();do{if(g.v=g.o.v=!0,g.e){if(p)for(var a=0,l=s.length;l>a;++a)u.point((f=s[a])[0],f[1]);else r(g.x,g.n.x,1,u);g=g.n}else{if(p){s=g.p.z;for(var a=s.length-1;a>=0;--a)u.point((f=s[a])[0],f[1])}else r(g.x,g.p.x,-1,u);g=g.p}g=g.o,s=g.z,p=!p}while(!g.v);u.lineEnd()}}}function ze(n){if(t=n.length){for(var t,e,r=0,u=n[0];++r<t;)u.n=e=n[r],e.p=u,u=e;u.n=e=n[0],e.p=u}}function qe(n,t,e,r){this.x=n,this.z=t,this.o=e,this.e=r,this.v=!1,this.n=this.p=null}function Le(n,t,e,r){return function(u,i){function o(t,e){var r=u(t,e);n(t=r[0],e=r[1])&&i.point(t,e)}function a(n,t){var e=u(n,t);d.point(e[0],e[1])}function c(){y.point=a,d.lineStart()}function l(){y.point=o,d.lineEnd()}function s(n,t){v.push([n,t]);var e=u(n,t);x.point(e[0],e[1])}function f(){x.lineStart(),v=[]}function h(){s(v[0][0],v[0][1]),x.lineEnd();var n,t=x.clean(),e=M.buffer(),r=e.length;if(v.pop(),p.push(v),v=null,r)if(1&t){n=e[0];var u,r=n.length-1,o=-1;if(r>0){for(b||(i.polygonStart(),b=!0),i.lineStart();++o<r;)i.point((u=n[o])[0],u[1]);i.lineEnd()}}else r>1&&2&t&&e.push(e.pop().concat(e.shift())),g.push(e.filter(Te))}var g,p,v,d=t(i),m=u.invert(r[0],r[1]),y={point:o,lineStart:c,lineEnd:l,polygonStart:function(){y.point=s,y.lineStart=f,y.lineEnd=h,g=[],p=[]},polygonEnd:function(){y.point=o,y.lineStart=c,y.lineEnd=l,g=ta.merge(g);var n=Fe(m,p);g.length?(b||(i.polygonStart(),b=!0),Ce(g,De,n,e,i)):n&&(b||(i.polygonStart(),b=!0),i.lineStart(),e(null,null,1,i),i.lineEnd()),b&&(i.polygonEnd(),b=!1),g=p=null},sphere:function(){i.polygonStart(),i.lineStart(),e(null,null,1,i),i.lineEnd(),i.polygonEnd()}},M=Re(),x=t(M),b=!1;return y}}function Te(n){return n.length>1}function Re(){var n,t=[];return{lineStart:function(){t.push(n=[])},point:function(t,e){n.push([t,e])},lineEnd:b,buffer:function(){var e=t;return t=[],n=null,e},rejoin:function(){t.length>1&&t.push(t.pop().concat(t.shift()))}}}function De(n,t){return((n=n.x)[0]<0?n[1]-Ra-Ca:Ra-n[1])-((t=t.x)[0]<0?t[1]-Ra-Ca:Ra-t[1])}function Pe(n){var t,e=0/0,r=0/0,u=0/0;return{lineStart:function(){n.lineStart(),t=1},point:function(i,o){var a=i>0?qa:-qa,c=ga(i-e);ga(c-qa)<Ca?(n.point(e,r=(r+o)/2>0?Ra:-Ra),n.point(u,r),n.lineEnd(),n.lineStart(),n.point(a,r),n.point(i,r),t=0):u!==a&&c>=qa&&(ga(e-u)<Ca&&(e-=u*Ca),ga(i-a)<Ca&&(i-=a*Ca),r=Ue(e,r,i,o),n.point(u,r),n.lineEnd(),n.lineStart(),n.point(a,r),t=0),n.point(e=i,r=o),u=a},lineEnd:function(){n.lineEnd(),e=r=0/0},clean:function(){return 2-t}}}function Ue(n,t,e,r){var u,i,o=Math.sin(n-e);return ga(o)>Ca?Math.atan((Math.sin(t)*(i=Math.cos(r))*Math.sin(e)-Math.sin(r)*(u=Math.cos(t))*Math.sin(n))/(u*i*o)):(t+r)/2}function je(n,t,e,r){var u;if(null==n)u=e*Ra,r.point(-qa,u),r.point(0,u),r.point(qa,u),r.point(qa,0),r.point(qa,-u),r.point(0,-u),r.point(-qa,-u),r.point(-qa,0),r.point(-qa,u);else if(ga(n[0]-t[0])>Ca){var i=n[0]<t[0]?qa:-qa;u=e*i/2,r.point(-i,u),r.point(0,u),r.point(i,u)}else r.point(t[0],t[1])}function Fe(n,t){var e=n[0],r=n[1],u=[Math.sin(e),-Math.cos(e),0],i=0,o=0;yc.reset();for(var a=0,c=t.length;c>a;++a){var l=t[a],s=l.length;if(s)for(var f=l[0],h=f[0],g=f[1]/2+qa/4,p=Math.sin(g),v=Math.cos(g),d=1;;){d===s&&(d=0),n=l[d];var m=n[0],y=n[1]/2+qa/4,M=Math.sin(y),x=Math.cos(y),b=m-h,_=b>=0?1:-1,w=_*b,S=w>qa,k=p*M;if(yc.add(Math.atan2(k*_*Math.sin(w),v*x+k*Math.cos(w))),i+=S?b+_*La:b,S^h>=e^m>=e){var E=de(pe(f),pe(n));Me(E);var A=de(u,E);Me(A);var N=(S^b>=0?-1:1)*tt(A[2]);(r>N||r===N&&(E[0]||E[1]))&&(o+=S^b>=0?1:-1)}if(!d++)break;h=m,p=M,v=x,f=n}}return(-Ca>i||Ca>i&&0>yc)^1&o}function He(n){function t(n,t){return Math.cos(n)*Math.cos(t)>i}function e(n){var e,i,c,l,s;return{lineStart:function(){l=c=!1,s=1},point:function(f,h){var g,p=[f,h],v=t(f,h),d=o?v?0:u(f,h):v?u(f+(0>f?qa:-qa),h):0;if(!e&&(l=c=v)&&n.lineStart(),v!==c&&(g=r(e,p),(be(e,g)||be(p,g))&&(p[0]+=Ca,p[1]+=Ca,v=t(p[0],p[1]))),v!==c)s=0,v?(n.lineStart(),g=r(p,e),n.point(g[0],g[1])):(g=r(e,p),n.point(g[0],g[1]),n.lineEnd()),e=g;else if(a&&e&&o^v){var m;d&i||!(m=r(p,e,!0))||(s=0,o?(n.lineStart(),n.point(m[0][0],m[0][1]),n.point(m[1][0],m[1][1]),n.lineEnd()):(n.point(m[1][0],m[1][1]),n.lineEnd(),n.lineStart(),n.point(m[0][0],m[0][1])))}!v||e&&be(e,p)||n.point(p[0],p[1]),e=p,c=v,i=d},lineEnd:function(){c&&n.lineEnd(),e=null},clean:function(){return s|(l&&c)<<1}}}function r(n,t,e){var r=pe(n),u=pe(t),o=[1,0,0],a=de(r,u),c=ve(a,a),l=a[0],s=c-l*l;if(!s)return!e&&n;var f=i*c/s,h=-i*l/s,g=de(o,a),p=ye(o,f),v=ye(a,h);me(p,v);var d=g,m=ve(p,d),y=ve(d,d),M=m*m-y*(ve(p,p)-1);if(!(0>M)){var x=Math.sqrt(M),b=ye(d,(-m-x)/y);if(me(b,p),b=xe(b),!e)return b;var _,w=n[0],S=t[0],k=n[1],E=t[1];w>S&&(_=w,w=S,S=_);var A=S-w,N=ga(A-qa)<Ca,C=N||Ca>A;if(!N&&k>E&&(_=k,k=E,E=_),C?N?k+E>0^b[1]<(ga(b[0]-w)<Ca?k:E):k<=b[1]&&b[1]<=E:A>qa^(w<=b[0]&&b[0]<=S)){var z=ye(d,(-m+x)/y);return me(z,p),[b,xe(z)]}}}function u(t,e){var r=o?n:qa-n,u=0;return-r>t?u|=1:t>r&&(u|=2),-r>e?u|=4:e>r&&(u|=8),u}var i=Math.cos(n),o=i>0,a=ga(i)>Ca,c=gr(n,6*Da);return Le(t,e,c,o?[0,-n]:[-qa,n-qa])}function Oe(n,t,e,r){return function(u){var i,o=u.a,a=u.b,c=o.x,l=o.y,s=a.x,f=a.y,h=0,g=1,p=s-c,v=f-l;if(i=n-c,p||!(i>0)){if(i/=p,0>p){if(h>i)return;g>i&&(g=i)}else if(p>0){if(i>g)return;i>h&&(h=i)}if(i=e-c,p||!(0>i)){if(i/=p,0>p){if(i>g)return;i>h&&(h=i)}else if(p>0){if(h>i)return;g>i&&(g=i)}if(i=t-l,v||!(i>0)){if(i/=v,0>v){if(h>i)return;g>i&&(g=i)}else if(v>0){if(i>g)return;i>h&&(h=i)}if(i=r-l,v||!(0>i)){if(i/=v,0>v){if(i>g)return;i>h&&(h=i)}else if(v>0){if(h>i)return;g>i&&(g=i)}return h>0&&(u.a={x:c+h*p,y:l+h*v}),1>g&&(u.b={x:c+g*p,y:l+g*v}),u}}}}}}function Ie(n,t,e,r){function u(r,u){return ga(r[0]-n)<Ca?u>0?0:3:ga(r[0]-e)<Ca?u>0?2:1:ga(r[1]-t)<Ca?u>0?1:0:u>0?3:2}function i(n,t){return o(n.x,t.x)}function o(n,t){var e=u(n,1),r=u(t,1);return e!==r?e-r:0===e?t[1]-n[1]:1===e?n[0]-t[0]:2===e?n[1]-t[1]:t[0]-n[0]}return function(a){function c(n){for(var t=0,e=d.length,r=n[1],u=0;e>u;++u)for(var i,o=1,a=d[u],c=a.length,l=a[0];c>o;++o)i=a[o],l[1]<=r?i[1]>r&&Q(l,i,n)>0&&++t:i[1]<=r&&Q(l,i,n)<0&&--t,l=i;return 0!==t}function l(i,a,c,l){var s=0,f=0;if(null==i||(s=u(i,c))!==(f=u(a,c))||o(i,a)<0^c>0){do l.point(0===s||3===s?n:e,s>1?r:t);while((s=(s+c+4)%4)!==f)}else l.point(a[0],a[1])}function s(u,i){return u>=n&&e>=u&&i>=t&&r>=i}function f(n,t){s(n,t)&&a.point(n,t)}function h(){C.point=p,d&&d.push(m=[]),S=!0,w=!1,b=_=0/0}function g(){v&&(p(y,M),x&&w&&A.rejoin(),v.push(A.buffer())),C.point=f,w&&a.lineEnd()}function p(n,t){n=Math.max(-Tc,Math.min(Tc,n)),t=Math.max(-Tc,Math.min(Tc,t));var e=s(n,t);if(d&&m.push([n,t]),S)y=n,M=t,x=e,S=!1,e&&(a.lineStart(),a.point(n,t));else if(e&&w)a.point(n,t);else{var r={a:{x:b,y:_},b:{x:n,y:t}};N(r)?(w||(a.lineStart(),a.point(r.a.x,r.a.y)),a.point(r.b.x,r.b.y),e||a.lineEnd(),k=!1):e&&(a.lineStart(),a.point(n,t),k=!1)}b=n,_=t,w=e}var v,d,m,y,M,x,b,_,w,S,k,E=a,A=Re(),N=Oe(n,t,e,r),C={point:f,lineStart:h,lineEnd:g,polygonStart:function(){a=A,v=[],d=[],k=!0},polygonEnd:function(){a=E,v=ta.merge(v);var t=c([n,r]),e=k&&t,u=v.length;(e||u)&&(a.polygonStart(),e&&(a.lineStart(),l(null,null,1,a),a.lineEnd()),u&&Ce(v,i,t,l,a),a.polygonEnd()),v=d=m=null}};return C}}function Ye(n){var t=0,e=qa/3,r=ir(n),u=r(t,e);return u.parallels=function(n){return arguments.length?r(t=n[0]*qa/180,e=n[1]*qa/180):[t/qa*180,e/qa*180]},u}function Ze(n,t){function e(n,t){var e=Math.sqrt(i-2*u*Math.sin(t))/u;return[e*Math.sin(n*=u),o-e*Math.cos(n)]}var r=Math.sin(n),u=(r+Math.sin(t))/2,i=1+r*(2*u-r),o=Math.sqrt(i)/u;return e.invert=function(n,t){var e=o-t;return[Math.atan2(n,e)/u,tt((i-(n*n+e*e)*u*u)/(2*u))]},e}function Ve(){function n(n,t){Dc+=u*n-r*t,r=n,u=t}var t,e,r,u;Hc.point=function(i,o){Hc.point=n,t=r=i,e=u=o},Hc.lineEnd=function(){n(t,e)}}function Xe(n,t){Pc>n&&(Pc=n),n>jc&&(jc=n),Uc>t&&(Uc=t),t>Fc&&(Fc=t)}function $e(){function n(n,t){o.push(\"M\",n,\",\",t,i)}function t(n,t){o.push(\"M\",n,\",\",t),a.point=e}function e(n,t){o.push(\"L\",n,\",\",t)}function r(){a.point=n}function u(){o.push(\"Z\")}var i=Be(4.5),o=[],a={point:n,lineStart:function(){a.point=t},lineEnd:r,polygonStart:function(){a.lineEnd=u},polygonEnd:function(){a.lineEnd=r,a.point=n},pointRadius:function(n){return i=Be(n),a},result:function(){if(o.length){var n=o.join(\"\");return o=[],n}}};return a}function Be(n){return\"m0,\"+n+\"a\"+n+\",\"+n+\" 0 1,1 0,\"+-2*n+\"a\"+n+\",\"+n+\" 0 1,1 0,\"+2*n+\"z\"}function We(n,t){_c+=n,wc+=t,++Sc}function Je(){function n(n,r){var u=n-t,i=r-e,o=Math.sqrt(u*u+i*i);kc+=o*(t+n)/2,Ec+=o*(e+r)/2,Ac+=o,We(t=n,e=r)}var t,e;Ic.point=function(r,u){Ic.point=n,We(t=r,e=u)}}function Ge(){Ic.point=We}function Ke(){function n(n,t){var e=n-r,i=t-u,o=Math.sqrt(e*e+i*i);kc+=o*(r+n)/2,Ec+=o*(u+t)/2,Ac+=o,o=u*n-r*t,Nc+=o*(r+n),Cc+=o*(u+t),zc+=3*o,We(r=n,u=t)}var t,e,r,u;Ic.point=function(i,o){Ic.point=n,We(t=r=i,e=u=o)},Ic.lineEnd=function(){n(t,e)}}function Qe(n){function t(t,e){n.moveTo(t+o,e),n.arc(t,e,o,0,La)}function e(t,e){n.moveTo(t,e),a.point=r}function r(t,e){n.lineTo(t,e)}function u(){a.point=t}function i(){n.closePath()}var o=4.5,a={point:t,lineStart:function(){a.point=e},lineEnd:u,polygonStart:function(){a.lineEnd=i},polygonEnd:function(){a.lineEnd=u,a.point=t},pointRadius:function(n){return o=n,a},result:b};return a}function nr(n){function t(n){return(a?r:e)(n)}function e(t){return rr(t,function(e,r){e=n(e,r),t.point(e[0],e[1])})}function r(t){function e(e,r){e=n(e,r),t.point(e[0],e[1])}function r(){M=0/0,S.point=i,t.lineStart()}function i(e,r){var i=pe([e,r]),o=n(e,r);u(M,x,y,b,_,w,M=o[0],x=o[1],y=e,b=i[0],_=i[1],w=i[2],a,t),t.point(M,x)}function o(){S.point=e,t.lineEnd()}function c(){r(),S.point=l,S.lineEnd=s}function l(n,t){i(f=n,h=t),g=M,p=x,v=b,d=_,m=w,S.point=i}function s(){u(M,x,y,b,_,w,g,p,f,v,d,m,a,t),S.lineEnd=o,o()}var f,h,g,p,v,d,m,y,M,x,b,_,w,S={point:e,lineStart:r,lineEnd:o,polygonStart:function(){t.polygonStart(),S.lineStart=c\r\n},polygonEnd:function(){t.polygonEnd(),S.lineStart=r}};return S}function u(t,e,r,a,c,l,s,f,h,g,p,v,d,m){var y=s-t,M=f-e,x=y*y+M*M;if(x>4*i&&d--){var b=a+g,_=c+p,w=l+v,S=Math.sqrt(b*b+_*_+w*w),k=Math.asin(w/=S),E=ga(ga(w)-1)<Ca||ga(r-h)<Ca?(r+h)/2:Math.atan2(_,b),A=n(E,k),N=A[0],C=A[1],z=N-t,q=C-e,L=M*z-y*q;(L*L/x>i||ga((y*z+M*q)/x-.5)>.3||o>a*g+c*p+l*v)&&(u(t,e,r,a,c,l,N,C,E,b/=S,_/=S,w,d,m),m.point(N,C),u(N,C,E,b,_,w,s,f,h,g,p,v,d,m))}}var i=.5,o=Math.cos(30*Da),a=16;return t.precision=function(n){return arguments.length?(a=(i=n*n)>0&&16,t):Math.sqrt(i)},t}function tr(n){var t=nr(function(t,e){return n([t*Pa,e*Pa])});return function(n){return or(t(n))}}function er(n){this.stream=n}function rr(n,t){return{point:t,sphere:function(){n.sphere()},lineStart:function(){n.lineStart()},lineEnd:function(){n.lineEnd()},polygonStart:function(){n.polygonStart()},polygonEnd:function(){n.polygonEnd()}}}function ur(n){return ir(function(){return n})()}function ir(n){function t(n){return n=a(n[0]*Da,n[1]*Da),[n[0]*h+c,l-n[1]*h]}function e(n){return n=a.invert((n[0]-c)/h,(l-n[1])/h),n&&[n[0]*Pa,n[1]*Pa]}function r(){a=Ae(o=lr(m,M,x),i);var n=i(v,d);return c=g-n[0]*h,l=p+n[1]*h,u()}function u(){return s&&(s.valid=!1,s=null),t}var i,o,a,c,l,s,f=nr(function(n,t){return n=i(n,t),[n[0]*h+c,l-n[1]*h]}),h=150,g=480,p=250,v=0,d=0,m=0,M=0,x=0,b=Lc,_=y,w=null,S=null;return t.stream=function(n){return s&&(s.valid=!1),s=or(b(o,f(_(n)))),s.valid=!0,s},t.clipAngle=function(n){return arguments.length?(b=null==n?(w=n,Lc):He((w=+n)*Da),u()):w},t.clipExtent=function(n){return arguments.length?(S=n,_=n?Ie(n[0][0],n[0][1],n[1][0],n[1][1]):y,u()):S},t.scale=function(n){return arguments.length?(h=+n,r()):h},t.translate=function(n){return arguments.length?(g=+n[0],p=+n[1],r()):[g,p]},t.center=function(n){return arguments.length?(v=n[0]%360*Da,d=n[1]%360*Da,r()):[v*Pa,d*Pa]},t.rotate=function(n){return arguments.length?(m=n[0]%360*Da,M=n[1]%360*Da,x=n.length>2?n[2]%360*Da:0,r()):[m*Pa,M*Pa,x*Pa]},ta.rebind(t,f,\"precision\"),function(){return i=n.apply(this,arguments),t.invert=i.invert&&e,r()}}function or(n){return rr(n,function(t,e){n.point(t*Da,e*Da)})}function ar(n,t){return[n,t]}function cr(n,t){return[n>qa?n-La:-qa>n?n+La:n,t]}function lr(n,t,e){return n?t||e?Ae(fr(n),hr(t,e)):fr(n):t||e?hr(t,e):cr}function sr(n){return function(t,e){return t+=n,[t>qa?t-La:-qa>t?t+La:t,e]}}function fr(n){var t=sr(n);return t.invert=sr(-n),t}function hr(n,t){function e(n,t){var e=Math.cos(t),a=Math.cos(n)*e,c=Math.sin(n)*e,l=Math.sin(t),s=l*r+a*u;return[Math.atan2(c*i-s*o,a*r-l*u),tt(s*i+c*o)]}var r=Math.cos(n),u=Math.sin(n),i=Math.cos(t),o=Math.sin(t);return e.invert=function(n,t){var e=Math.cos(t),a=Math.cos(n)*e,c=Math.sin(n)*e,l=Math.sin(t),s=l*i-c*o;return[Math.atan2(c*i+l*o,a*r+s*u),tt(s*r-a*u)]},e}function gr(n,t){var e=Math.cos(n),r=Math.sin(n);return function(u,i,o,a){var c=o*t;null!=u?(u=pr(e,u),i=pr(e,i),(o>0?i>u:u>i)&&(u+=o*La)):(u=n+o*La,i=n-.5*c);for(var l,s=u;o>0?s>i:i>s;s-=c)a.point((l=xe([e,-r*Math.cos(s),-r*Math.sin(s)]))[0],l[1])}}function pr(n,t){var e=pe(t);e[0]-=n,Me(e);var r=nt(-e[1]);return((-e[2]<0?-r:r)+2*Math.PI-Ca)%(2*Math.PI)}function vr(n,t,e){var r=ta.range(n,t-Ca,e).concat(t);return function(n){return r.map(function(t){return[n,t]})}}function dr(n,t,e){var r=ta.range(n,t-Ca,e).concat(t);return function(n){return r.map(function(t){return[t,n]})}}function mr(n){return n.source}function yr(n){return n.target}function Mr(n,t,e,r){var u=Math.cos(t),i=Math.sin(t),o=Math.cos(r),a=Math.sin(r),c=u*Math.cos(n),l=u*Math.sin(n),s=o*Math.cos(e),f=o*Math.sin(e),h=2*Math.asin(Math.sqrt(it(r-t)+u*o*it(e-n))),g=1/Math.sin(h),p=h?function(n){var t=Math.sin(n*=h)*g,e=Math.sin(h-n)*g,r=e*c+t*s,u=e*l+t*f,o=e*i+t*a;return[Math.atan2(u,r)*Pa,Math.atan2(o,Math.sqrt(r*r+u*u))*Pa]}:function(){return[n*Pa,t*Pa]};return p.distance=h,p}function xr(){function n(n,u){var i=Math.sin(u*=Da),o=Math.cos(u),a=ga((n*=Da)-t),c=Math.cos(a);Yc+=Math.atan2(Math.sqrt((a=o*Math.sin(a))*a+(a=r*i-e*o*c)*a),e*i+r*o*c),t=n,e=i,r=o}var t,e,r;Zc.point=function(u,i){t=u*Da,e=Math.sin(i*=Da),r=Math.cos(i),Zc.point=n},Zc.lineEnd=function(){Zc.point=Zc.lineEnd=b}}function br(n,t){function e(t,e){var r=Math.cos(t),u=Math.cos(e),i=n(r*u);return[i*u*Math.sin(t),i*Math.sin(e)]}return e.invert=function(n,e){var r=Math.sqrt(n*n+e*e),u=t(r),i=Math.sin(u),o=Math.cos(u);return[Math.atan2(n*i,r*o),Math.asin(r&&e*i/r)]},e}function _r(n,t){function e(n,t){o>0?-Ra+Ca>t&&(t=-Ra+Ca):t>Ra-Ca&&(t=Ra-Ca);var e=o/Math.pow(u(t),i);return[e*Math.sin(i*n),o-e*Math.cos(i*n)]}var r=Math.cos(n),u=function(n){return Math.tan(qa/4+n/2)},i=n===t?Math.sin(n):Math.log(r/Math.cos(t))/Math.log(u(t)/u(n)),o=r*Math.pow(u(n),i)/i;return i?(e.invert=function(n,t){var e=o-t,r=K(i)*Math.sqrt(n*n+e*e);return[Math.atan2(n,e)/i,2*Math.atan(Math.pow(o/r,1/i))-Ra]},e):Sr}function wr(n,t){function e(n,t){var e=i-t;return[e*Math.sin(u*n),i-e*Math.cos(u*n)]}var r=Math.cos(n),u=n===t?Math.sin(n):(r-Math.cos(t))/(t-n),i=r/u+n;return ga(u)<Ca?ar:(e.invert=function(n,t){var e=i-t;return[Math.atan2(n,e)/u,i-K(u)*Math.sqrt(n*n+e*e)]},e)}function Sr(n,t){return[n,Math.log(Math.tan(qa/4+t/2))]}function kr(n){var t,e=ur(n),r=e.scale,u=e.translate,i=e.clipExtent;return e.scale=function(){var n=r.apply(e,arguments);return n===e?t?e.clipExtent(null):e:n},e.translate=function(){var n=u.apply(e,arguments);return n===e?t?e.clipExtent(null):e:n},e.clipExtent=function(n){var o=i.apply(e,arguments);if(o===e){if(t=null==n){var a=qa*r(),c=u();i([[c[0]-a,c[1]-a],[c[0]+a,c[1]+a]])}}else t&&(o=null);return o},e.clipExtent(null)}function Er(n,t){return[Math.log(Math.tan(qa/4+t/2)),-n]}function Ar(n){return n[0]}function Nr(n){return n[1]}function Cr(n){for(var t=n.length,e=[0,1],r=2,u=2;t>u;u++){for(;r>1&&Q(n[e[r-2]],n[e[r-1]],n[u])<=0;)--r;e[r++]=u}return e.slice(0,r)}function zr(n,t){return n[0]-t[0]||n[1]-t[1]}function qr(n,t,e){return(e[0]-t[0])*(n[1]-t[1])<(e[1]-t[1])*(n[0]-t[0])}function Lr(n,t,e,r){var u=n[0],i=e[0],o=t[0]-u,a=r[0]-i,c=n[1],l=e[1],s=t[1]-c,f=r[1]-l,h=(a*(c-l)-f*(u-i))/(f*o-a*s);return[u+h*o,c+h*s]}function Tr(n){var t=n[0],e=n[n.length-1];return!(t[0]-e[0]||t[1]-e[1])}function Rr(){tu(this),this.edge=this.site=this.circle=null}function Dr(n){var t=el.pop()||new Rr;return t.site=n,t}function Pr(n){Xr(n),Qc.remove(n),el.push(n),tu(n)}function Ur(n){var t=n.circle,e=t.x,r=t.cy,u={x:e,y:r},i=n.P,o=n.N,a=[n];Pr(n);for(var c=i;c.circle&&ga(e-c.circle.x)<Ca&&ga(r-c.circle.cy)<Ca;)i=c.P,a.unshift(c),Pr(c),c=i;a.unshift(c),Xr(c);for(var l=o;l.circle&&ga(e-l.circle.x)<Ca&&ga(r-l.circle.cy)<Ca;)o=l.N,a.push(l),Pr(l),l=o;a.push(l),Xr(l);var s,f=a.length;for(s=1;f>s;++s)l=a[s],c=a[s-1],Kr(l.edge,c.site,l.site,u);c=a[0],l=a[f-1],l.edge=Jr(c.site,l.site,null,u),Vr(c),Vr(l)}function jr(n){for(var t,e,r,u,i=n.x,o=n.y,a=Qc._;a;)if(r=Fr(a,o)-i,r>Ca)a=a.L;else{if(u=i-Hr(a,o),!(u>Ca)){r>-Ca?(t=a.P,e=a):u>-Ca?(t=a,e=a.N):t=e=a;break}if(!a.R){t=a;break}a=a.R}var c=Dr(n);if(Qc.insert(t,c),t||e){if(t===e)return Xr(t),e=Dr(t.site),Qc.insert(c,e),c.edge=e.edge=Jr(t.site,c.site),Vr(t),void Vr(e);if(!e)return void(c.edge=Jr(t.site,c.site));Xr(t),Xr(e);var l=t.site,s=l.x,f=l.y,h=n.x-s,g=n.y-f,p=e.site,v=p.x-s,d=p.y-f,m=2*(h*d-g*v),y=h*h+g*g,M=v*v+d*d,x={x:(d*y-g*M)/m+s,y:(h*M-v*y)/m+f};Kr(e.edge,l,p,x),c.edge=Jr(l,n,null,x),e.edge=Jr(n,p,null,x),Vr(t),Vr(e)}}function Fr(n,t){var e=n.site,r=e.x,u=e.y,i=u-t;if(!i)return r;var o=n.P;if(!o)return-1/0;e=o.site;var a=e.x,c=e.y,l=c-t;if(!l)return a;var s=a-r,f=1/i-1/l,h=s/l;return f?(-h+Math.sqrt(h*h-2*f*(s*s/(-2*l)-c+l/2+u-i/2)))/f+r:(r+a)/2}function Hr(n,t){var e=n.N;if(e)return Fr(e,t);var r=n.site;return r.y===t?r.x:1/0}function Or(n){this.site=n,this.edges=[]}function Ir(n){for(var t,e,r,u,i,o,a,c,l,s,f=n[0][0],h=n[1][0],g=n[0][1],p=n[1][1],v=Kc,d=v.length;d--;)if(i=v[d],i&&i.prepare())for(a=i.edges,c=a.length,o=0;c>o;)s=a[o].end(),r=s.x,u=s.y,l=a[++o%c].start(),t=l.x,e=l.y,(ga(r-t)>Ca||ga(u-e)>Ca)&&(a.splice(o,0,new Qr(Gr(i.site,s,ga(r-f)<Ca&&p-u>Ca?{x:f,y:ga(t-f)<Ca?e:p}:ga(u-p)<Ca&&h-r>Ca?{x:ga(e-p)<Ca?t:h,y:p}:ga(r-h)<Ca&&u-g>Ca?{x:h,y:ga(t-h)<Ca?e:g}:ga(u-g)<Ca&&r-f>Ca?{x:ga(e-g)<Ca?t:f,y:g}:null),i.site,null)),++c)}function Yr(n,t){return t.angle-n.angle}function Zr(){tu(this),this.x=this.y=this.arc=this.site=this.cy=null}function Vr(n){var t=n.P,e=n.N;if(t&&e){var r=t.site,u=n.site,i=e.site;if(r!==i){var o=u.x,a=u.y,c=r.x-o,l=r.y-a,s=i.x-o,f=i.y-a,h=2*(c*f-l*s);if(!(h>=-za)){var g=c*c+l*l,p=s*s+f*f,v=(f*g-l*p)/h,d=(c*p-s*g)/h,f=d+a,m=rl.pop()||new Zr;m.arc=n,m.site=u,m.x=v+o,m.y=f+Math.sqrt(v*v+d*d),m.cy=f,n.circle=m;for(var y=null,M=tl._;M;)if(m.y<M.y||m.y===M.y&&m.x<=M.x){if(!M.L){y=M.P;break}M=M.L}else{if(!M.R){y=M;break}M=M.R}tl.insert(y,m),y||(nl=m)}}}}function Xr(n){var t=n.circle;t&&(t.P||(nl=t.N),tl.remove(t),rl.push(t),tu(t),n.circle=null)}function $r(n){for(var t,e=Gc,r=Oe(n[0][0],n[0][1],n[1][0],n[1][1]),u=e.length;u--;)t=e[u],(!Br(t,n)||!r(t)||ga(t.a.x-t.b.x)<Ca&&ga(t.a.y-t.b.y)<Ca)&&(t.a=t.b=null,e.splice(u,1))}function Br(n,t){var e=n.b;if(e)return!0;var r,u,i=n.a,o=t[0][0],a=t[1][0],c=t[0][1],l=t[1][1],s=n.l,f=n.r,h=s.x,g=s.y,p=f.x,v=f.y,d=(h+p)/2,m=(g+v)/2;if(v===g){if(o>d||d>=a)return;if(h>p){if(i){if(i.y>=l)return}else i={x:d,y:c};e={x:d,y:l}}else{if(i){if(i.y<c)return}else i={x:d,y:l};e={x:d,y:c}}}else if(r=(h-p)/(v-g),u=m-r*d,-1>r||r>1)if(h>p){if(i){if(i.y>=l)return}else i={x:(c-u)/r,y:c};e={x:(l-u)/r,y:l}}else{if(i){if(i.y<c)return}else i={x:(l-u)/r,y:l};e={x:(c-u)/r,y:c}}else if(v>g){if(i){if(i.x>=a)return}else i={x:o,y:r*o+u};e={x:a,y:r*a+u}}else{if(i){if(i.x<o)return}else i={x:a,y:r*a+u};e={x:o,y:r*o+u}}return n.a=i,n.b=e,!0}function Wr(n,t){this.l=n,this.r=t,this.a=this.b=null}function Jr(n,t,e,r){var u=new Wr(n,t);return Gc.push(u),e&&Kr(u,n,t,e),r&&Kr(u,t,n,r),Kc[n.i].edges.push(new Qr(u,n,t)),Kc[t.i].edges.push(new Qr(u,t,n)),u}function Gr(n,t,e){var r=new Wr(n,null);return r.a=t,r.b=e,Gc.push(r),r}function Kr(n,t,e,r){n.a||n.b?n.l===e?n.b=r:n.a=r:(n.a=r,n.l=t,n.r=e)}function Qr(n,t,e){var r=n.a,u=n.b;this.edge=n,this.site=t,this.angle=e?Math.atan2(e.y-t.y,e.x-t.x):n.l===t?Math.atan2(u.x-r.x,r.y-u.y):Math.atan2(r.x-u.x,u.y-r.y)}function nu(){this._=null}function tu(n){n.U=n.C=n.L=n.R=n.P=n.N=null}function eu(n,t){var e=t,r=t.R,u=e.U;u?u.L===e?u.L=r:u.R=r:n._=r,r.U=u,e.U=r,e.R=r.L,e.R&&(e.R.U=e),r.L=e}function ru(n,t){var e=t,r=t.L,u=e.U;u?u.L===e?u.L=r:u.R=r:n._=r,r.U=u,e.U=r,e.L=r.R,e.L&&(e.L.U=e),r.R=e}function uu(n){for(;n.L;)n=n.L;return n}function iu(n,t){var e,r,u,i=n.sort(ou).pop();for(Gc=[],Kc=new Array(n.length),Qc=new nu,tl=new nu;;)if(u=nl,i&&(!u||i.y<u.y||i.y===u.y&&i.x<u.x))(i.x!==e||i.y!==r)&&(Kc[i.i]=new Or(i),jr(i),e=i.x,r=i.y),i=n.pop();else{if(!u)break;Ur(u.arc)}t&&($r(t),Ir(t));var o={cells:Kc,edges:Gc};return Qc=tl=Gc=Kc=null,o}function ou(n,t){return t.y-n.y||t.x-n.x}function au(n,t,e){return(n.x-e.x)*(t.y-n.y)-(n.x-t.x)*(e.y-n.y)}function cu(n){return n.x}function lu(n){return n.y}function su(){return{leaf:!0,nodes:[],point:null,x:null,y:null}}function fu(n,t,e,r,u,i){if(!n(t,e,r,u,i)){var o=.5*(e+u),a=.5*(r+i),c=t.nodes;c[0]&&fu(n,c[0],e,r,o,a),c[1]&&fu(n,c[1],o,r,u,a),c[2]&&fu(n,c[2],e,a,o,i),c[3]&&fu(n,c[3],o,a,u,i)}}function hu(n,t,e,r,u,i,o){var a,c=1/0;return function l(n,s,f,h,g){if(!(s>i||f>o||r>h||u>g)){if(p=n.point){var p,v=t-n.x,d=e-n.y,m=v*v+d*d;if(c>m){var y=Math.sqrt(c=m);r=t-y,u=e-y,i=t+y,o=e+y,a=p}}for(var M=n.nodes,x=.5*(s+h),b=.5*(f+g),_=t>=x,w=e>=b,S=w<<1|_,k=S+4;k>S;++S)if(n=M[3&S])switch(3&S){case 0:l(n,s,f,x,b);break;case 1:l(n,x,f,h,b);break;case 2:l(n,s,b,x,g);break;case 3:l(n,x,b,h,g)}}}(n,r,u,i,o),a}function gu(n,t){n=ta.rgb(n),t=ta.rgb(t);var e=n.r,r=n.g,u=n.b,i=t.r-e,o=t.g-r,a=t.b-u;return function(n){return\"#\"+xt(Math.round(e+i*n))+xt(Math.round(r+o*n))+xt(Math.round(u+a*n))}}function pu(n,t){var e,r={},u={};for(e in n)e in t?r[e]=mu(n[e],t[e]):u[e]=n[e];for(e in t)e in n||(u[e]=t[e]);return function(n){for(e in r)u[e]=r[e](n);return u}}function vu(n,t){return n=+n,t=+t,function(e){return n*(1-e)+t*e}}function du(n,t){var e,r,u,i=il.lastIndex=ol.lastIndex=0,o=-1,a=[],c=[];for(n+=\"\",t+=\"\";(e=il.exec(n))&&(r=ol.exec(t));)(u=r.index)>i&&(u=t.slice(i,u),a[o]?a[o]+=u:a[++o]=u),(e=e[0])===(r=r[0])?a[o]?a[o]+=r:a[++o]=r:(a[++o]=null,c.push({i:o,x:vu(e,r)})),i=ol.lastIndex;return i<t.length&&(u=t.slice(i),a[o]?a[o]+=u:a[++o]=u),a.length<2?c[0]?(t=c[0].x,function(n){return t(n)+\"\"}):function(){return t}:(t=c.length,function(n){for(var e,r=0;t>r;++r)a[(e=c[r]).i]=e.x(n);return a.join(\"\")})}function mu(n,t){for(var e,r=ta.interpolators.length;--r>=0&&!(e=ta.interpolators[r](n,t)););return e}function yu(n,t){var e,r=[],u=[],i=n.length,o=t.length,a=Math.min(n.length,t.length);for(e=0;a>e;++e)r.push(mu(n[e],t[e]));for(;i>e;++e)u[e]=n[e];for(;o>e;++e)u[e]=t[e];return function(n){for(e=0;a>e;++e)u[e]=r[e](n);return u}}function Mu(n){return function(t){return 0>=t?0:t>=1?1:n(t)}}function xu(n){return function(t){return 1-n(1-t)}}function bu(n){return function(t){return.5*(.5>t?n(2*t):2-n(2-2*t))}}function _u(n){return n*n}function wu(n){return n*n*n}function Su(n){if(0>=n)return 0;if(n>=1)return 1;var t=n*n,e=t*n;return 4*(.5>n?e:3*(n-t)+e-.75)}function ku(n){return function(t){return Math.pow(t,n)}}function Eu(n){return 1-Math.cos(n*Ra)}function Au(n){return Math.pow(2,10*(n-1))}function Nu(n){return 1-Math.sqrt(1-n*n)}function Cu(n,t){var e;return arguments.length<2&&(t=.45),arguments.length?e=t/La*Math.asin(1/n):(n=1,e=t/4),function(r){return 1+n*Math.pow(2,-10*r)*Math.sin((r-e)*La/t)}}function zu(n){return n||(n=1.70158),function(t){return t*t*((n+1)*t-n)}}function qu(n){return 1/2.75>n?7.5625*n*n:2/2.75>n?7.5625*(n-=1.5/2.75)*n+.75:2.5/2.75>n?7.5625*(n-=2.25/2.75)*n+.9375:7.5625*(n-=2.625/2.75)*n+.984375}function Lu(n,t){n=ta.hcl(n),t=ta.hcl(t);var e=n.h,r=n.c,u=n.l,i=t.h-e,o=t.c-r,a=t.l-u;return isNaN(o)&&(o=0,r=isNaN(r)?t.c:r),isNaN(i)?(i=0,e=isNaN(e)?t.h:e):i>180?i-=360:-180>i&&(i+=360),function(n){return st(e+i*n,r+o*n,u+a*n)+\"\"}}function Tu(n,t){n=ta.hsl(n),t=ta.hsl(t);var e=n.h,r=n.s,u=n.l,i=t.h-e,o=t.s-r,a=t.l-u;return isNaN(o)&&(o=0,r=isNaN(r)?t.s:r),isNaN(i)?(i=0,e=isNaN(e)?t.h:e):i>180?i-=360:-180>i&&(i+=360),function(n){return ct(e+i*n,r+o*n,u+a*n)+\"\"}}function Ru(n,t){n=ta.lab(n),t=ta.lab(t);var e=n.l,r=n.a,u=n.b,i=t.l-e,o=t.a-r,a=t.b-u;return function(n){return ht(e+i*n,r+o*n,u+a*n)+\"\"}}function Du(n,t){return t-=n,function(e){return Math.round(n+t*e)}}function Pu(n){var t=[n.a,n.b],e=[n.c,n.d],r=ju(t),u=Uu(t,e),i=ju(Fu(e,t,-u))||0;t[0]*e[1]<e[0]*t[1]&&(t[0]*=-1,t[1]*=-1,r*=-1,u*=-1),this.rotate=(r?Math.atan2(t[1],t[0]):Math.atan2(-e[0],e[1]))*Pa,this.translate=[n.e,n.f],this.scale=[r,i],this.skew=i?Math.atan2(u,i)*Pa:0}function Uu(n,t){return n[0]*t[0]+n[1]*t[1]}function ju(n){var t=Math.sqrt(Uu(n,n));return t&&(n[0]/=t,n[1]/=t),t}function Fu(n,t,e){return n[0]+=e*t[0],n[1]+=e*t[1],n}function Hu(n,t){var e,r=[],u=[],i=ta.transform(n),o=ta.transform(t),a=i.translate,c=o.translate,l=i.rotate,s=o.rotate,f=i.skew,h=o.skew,g=i.scale,p=o.scale;return a[0]!=c[0]||a[1]!=c[1]?(r.push(\"translate(\",null,\",\",null,\")\"),u.push({i:1,x:vu(a[0],c[0])},{i:3,x:vu(a[1],c[1])})):r.push(c[0]||c[1]?\"translate(\"+c+\")\":\"\"),l!=s?(l-s>180?s+=360:s-l>180&&(l+=360),u.push({i:r.push(r.pop()+\"rotate(\",null,\")\")-2,x:vu(l,s)})):s&&r.push(r.pop()+\"rotate(\"+s+\")\"),f!=h?u.push({i:r.push(r.pop()+\"skewX(\",null,\")\")-2,x:vu(f,h)}):h&&r.push(r.pop()+\"skewX(\"+h+\")\"),g[0]!=p[0]||g[1]!=p[1]?(e=r.push(r.pop()+\"scale(\",null,\",\",null,\")\"),u.push({i:e-4,x:vu(g[0],p[0])},{i:e-2,x:vu(g[1],p[1])})):(1!=p[0]||1!=p[1])&&r.push(r.pop()+\"scale(\"+p+\")\"),e=u.length,function(n){for(var t,i=-1;++i<e;)r[(t=u[i]).i]=t.x(n);return r.join(\"\")}}function Ou(n,t){return t=(t-=n=+n)||1/t,function(e){return(e-n)/t}}function Iu(n,t){return t=(t-=n=+n)||1/t,function(e){return Math.max(0,Math.min(1,(e-n)/t))}}function Yu(n){for(var t=n.source,e=n.target,r=Vu(t,e),u=[t];t!==r;)t=t.parent,u.push(t);for(var i=u.length;e!==r;)u.splice(i,0,e),e=e.parent;return u}function Zu(n){for(var t=[],e=n.parent;null!=e;)t.push(n),n=e,e=e.parent;return t.push(n),t}function Vu(n,t){if(n===t)return n;for(var e=Zu(n),r=Zu(t),u=e.pop(),i=r.pop(),o=null;u===i;)o=u,u=e.pop(),i=r.pop();return o}function Xu(n){n.fixed|=2}function $u(n){n.fixed&=-7}function Bu(n){n.fixed|=4,n.px=n.x,n.py=n.y}function Wu(n){n.fixed&=-5}function Ju(n,t,e){var r=0,u=0;if(n.charge=0,!n.leaf)for(var i,o=n.nodes,a=o.length,c=-1;++c<a;)i=o[c],null!=i&&(Ju(i,t,e),n.charge+=i.charge,r+=i.charge*i.cx,u+=i.charge*i.cy);if(n.point){n.leaf||(n.point.x+=Math.random()-.5,n.point.y+=Math.random()-.5);var l=t*e[n.point.index];n.charge+=n.pointCharge=l,r+=l*n.point.x,u+=l*n.point.y}n.cx=r/n.charge,n.cy=u/n.charge}function Gu(n,t){return ta.rebind(n,t,\"sort\",\"children\",\"value\"),n.nodes=n,n.links=ri,n}function Ku(n,t){for(var e=[n];null!=(n=e.pop());)if(t(n),(u=n.children)&&(r=u.length))for(var r,u;--r>=0;)e.push(u[r])}function Qu(n,t){for(var e=[n],r=[];null!=(n=e.pop());)if(r.push(n),(i=n.children)&&(u=i.length))for(var u,i,o=-1;++o<u;)e.push(i[o]);for(;null!=(n=r.pop());)t(n)}function ni(n){return n.children}function ti(n){return n.value}function ei(n,t){return t.value-n.value}function ri(n){return ta.merge(n.map(function(n){return(n.children||[]).map(function(t){return{source:n,target:t}})}))}function ui(n){return n.x}function ii(n){return n.y}function oi(n,t,e){n.y0=t,n.y=e}function ai(n){return ta.range(n.length)}function ci(n){for(var t=-1,e=n[0].length,r=[];++t<e;)r[t]=0;return r}function li(n){for(var t,e=1,r=0,u=n[0][1],i=n.length;i>e;++e)(t=n[e][1])>u&&(r=e,u=t);return r}function si(n){return n.reduce(fi,0)}function fi(n,t){return n+t[1]}function hi(n,t){return gi(n,Math.ceil(Math.log(t.length)/Math.LN2+1))}function gi(n,t){for(var e=-1,r=+n[0],u=(n[1]-r)/t,i=[];++e<=t;)i[e]=u*e+r;return i}function pi(n){return[ta.min(n),ta.max(n)]}function vi(n,t){return n.value-t.value}function di(n,t){var e=n._pack_next;n._pack_next=t,t._pack_prev=n,t._pack_next=e,e._pack_prev=t}function mi(n,t){n._pack_next=t,t._pack_prev=n}function yi(n,t){var e=t.x-n.x,r=t.y-n.y,u=n.r+t.r;return.999*u*u>e*e+r*r}function Mi(n){function t(n){s=Math.min(n.x-n.r,s),f=Math.max(n.x+n.r,f),h=Math.min(n.y-n.r,h),g=Math.max(n.y+n.r,g)}if((e=n.children)&&(l=e.length)){var e,r,u,i,o,a,c,l,s=1/0,f=-1/0,h=1/0,g=-1/0;if(e.forEach(xi),r=e[0],r.x=-r.r,r.y=0,t(r),l>1&&(u=e[1],u.x=u.r,u.y=0,t(u),l>2))for(i=e[2],wi(r,u,i),t(i),di(r,i),r._pack_prev=i,di(i,u),u=r._pack_next,o=3;l>o;o++){wi(r,u,i=e[o]);var p=0,v=1,d=1;for(a=u._pack_next;a!==u;a=a._pack_next,v++)if(yi(a,i)){p=1;break}if(1==p)for(c=r._pack_prev;c!==a._pack_prev&&!yi(c,i);c=c._pack_prev,d++);p?(d>v||v==d&&u.r<r.r?mi(r,u=a):mi(r=c,u),o--):(di(r,i),u=i,t(i))}var m=(s+f)/2,y=(h+g)/2,M=0;for(o=0;l>o;o++)i=e[o],i.x-=m,i.y-=y,M=Math.max(M,i.r+Math.sqrt(i.x*i.x+i.y*i.y));n.r=M,e.forEach(bi)}}function xi(n){n._pack_next=n._pack_prev=n}function bi(n){delete n._pack_next,delete n._pack_prev}function _i(n,t,e,r){var u=n.children;if(n.x=t+=r*n.x,n.y=e+=r*n.y,n.r*=r,u)for(var i=-1,o=u.length;++i<o;)_i(u[i],t,e,r)}function wi(n,t,e){var r=n.r+e.r,u=t.x-n.x,i=t.y-n.y;if(r&&(u||i)){var o=t.r+e.r,a=u*u+i*i;o*=o,r*=r;var c=.5+(r-o)/(2*a),l=Math.sqrt(Math.max(0,2*o*(r+a)-(r-=a)*r-o*o))/(2*a);e.x=n.x+c*u+l*i,e.y=n.y+c*i-l*u}else e.x=n.x+r,e.y=n.y}function Si(n,t){return n.parent==t.parent?1:2}function ki(n){var t=n.children;return t.length?t[0]:n.t}function Ei(n){var t,e=n.children;return(t=e.length)?e[t-1]:n.t}function Ai(n,t,e){var r=e/(t.i-n.i);t.c-=r,t.s+=e,n.c+=r,t.z+=e,t.m+=e}function Ni(n){for(var t,e=0,r=0,u=n.children,i=u.length;--i>=0;)t=u[i],t.z+=e,t.m+=e,e+=t.s+(r+=t.c)}function Ci(n,t,e){return n.a.parent===t.parent?n.a:e}function zi(n){return 1+ta.max(n,function(n){return n.y})}function qi(n){return n.reduce(function(n,t){return n+t.x},0)/n.length}function Li(n){var t=n.children;return t&&t.length?Li(t[0]):n}function Ti(n){var t,e=n.children;return e&&(t=e.length)?Ti(e[t-1]):n}function Ri(n){return{x:n.x,y:n.y,dx:n.dx,dy:n.dy}}function Di(n,t){var e=n.x+t[3],r=n.y+t[0],u=n.dx-t[1]-t[3],i=n.dy-t[0]-t[2];return 0>u&&(e+=u/2,u=0),0>i&&(r+=i/2,i=0),{x:e,y:r,dx:u,dy:i}}function Pi(n){var t=n[0],e=n[n.length-1];return e>t?[t,e]:[e,t]}function Ui(n){return n.rangeExtent?n.rangeExtent():Pi(n.range())}function ji(n,t,e,r){var u=e(n[0],n[1]),i=r(t[0],t[1]);return function(n){return i(u(n))}}function Fi(n,t){var e,r=0,u=n.length-1,i=n[r],o=n[u];return i>o&&(e=r,r=u,u=e,e=i,i=o,o=e),n[r]=t.floor(i),n[u]=t.ceil(o),n}function Hi(n){return n?{floor:function(t){return Math.floor(t/n)*n},ceil:function(t){return Math.ceil(t/n)*n}}:ml}function Oi(n,t,e,r){var u=[],i=[],o=0,a=Math.min(n.length,t.length)-1;for(n[a]<n[0]&&(n=n.slice().reverse(),t=t.slice().reverse());++o<=a;)u.push(e(n[o-1],n[o])),i.push(r(t[o-1],t[o]));return function(t){var e=ta.bisect(n,t,1,a)-1;return i[e](u[e](t))}}function Ii(n,t,e,r){function u(){var u=Math.min(n.length,t.length)>2?Oi:ji,c=r?Iu:Ou;return o=u(n,t,c,e),a=u(t,n,c,mu),i}function i(n){return o(n)}var o,a;return i.invert=function(n){return a(n)},i.domain=function(t){return arguments.length?(n=t.map(Number),u()):n},i.range=function(n){return arguments.length?(t=n,u()):t},i.rangeRound=function(n){return i.range(n).interpolate(Du)},i.clamp=function(n){return arguments.length?(r=n,u()):r},i.interpolate=function(n){return arguments.length?(e=n,u()):e},i.ticks=function(t){return Xi(n,t)},i.tickFormat=function(t,e){return $i(n,t,e)},i.nice=function(t){return Zi(n,t),u()},i.copy=function(){return Ii(n,t,e,r)},u()}function Yi(n,t){return ta.rebind(n,t,\"range\",\"rangeRound\",\"interpolate\",\"clamp\")}function Zi(n,t){return Fi(n,Hi(Vi(n,t)[2]))}function Vi(n,t){null==t&&(t=10);var e=Pi(n),r=e[1]-e[0],u=Math.pow(10,Math.floor(Math.log(r/t)/Math.LN10)),i=t/r*u;return.15>=i?u*=10:.35>=i?u*=5:.75>=i&&(u*=2),e[0]=Math.ceil(e[0]/u)*u,e[1]=Math.floor(e[1]/u)*u+.5*u,e[2]=u,e}function Xi(n,t){return ta.range.apply(ta,Vi(n,t))}function $i(n,t,e){var r=Vi(n,t);if(e){var u=ic.exec(e);if(u.shift(),\"s\"===u[8]){var i=ta.formatPrefix(Math.max(ga(r[0]),ga(r[1])));return u[7]||(u[7]=\".\"+Bi(i.scale(r[2]))),u[8]=\"f\",e=ta.format(u.join(\"\")),function(n){return e(i.scale(n))+i.symbol}}u[7]||(u[7]=\".\"+Wi(u[8],r)),e=u.join(\"\")}else e=\",.\"+Bi(r[2])+\"f\";return ta.format(e)}function Bi(n){return-Math.floor(Math.log(n)/Math.LN10+.01)}function Wi(n,t){var e=Bi(t[2]);return n in yl?Math.abs(e-Bi(Math.max(ga(t[0]),ga(t[1]))))+ +(\"e\"!==n):e-2*(\"%\"===n)}function Ji(n,t,e,r){function u(n){return(e?Math.log(0>n?0:n):-Math.log(n>0?0:-n))/Math.log(t)}function i(n){return e?Math.pow(t,n):-Math.pow(t,-n)}function o(t){return n(u(t))}return o.invert=function(t){return i(n.invert(t))},o.domain=function(t){return arguments.length?(e=t[0]>=0,n.domain((r=t.map(Number)).map(u)),o):r},o.base=function(e){return arguments.length?(t=+e,n.domain(r.map(u)),o):t},o.nice=function(){var t=Fi(r.map(u),e?Math:xl);return n.domain(t),r=t.map(i),o},o.ticks=function(){var n=Pi(r),o=[],a=n[0],c=n[1],l=Math.floor(u(a)),s=Math.ceil(u(c)),f=t%1?2:t;if(isFinite(s-l)){if(e){for(;s>l;l++)for(var h=1;f>h;h++)o.push(i(l)*h);o.push(i(l))}else for(o.push(i(l));l++<s;)for(var h=f-1;h>0;h--)o.push(i(l)*h);for(l=0;o[l]<a;l++);for(s=o.length;o[s-1]>c;s--);o=o.slice(l,s)}return o},o.tickFormat=function(n,t){if(!arguments.length)return Ml;arguments.length<2?t=Ml:\"function\"!=typeof t&&(t=ta.format(t));var r,a=Math.max(.1,n/o.ticks().length),c=e?(r=1e-12,Math.ceil):(r=-1e-12,Math.floor);return function(n){return n/i(c(u(n)+r))<=a?t(n):\"\"}},o.copy=function(){return Ji(n.copy(),t,e,r)},Yi(o,n)}function Gi(n,t,e){function r(t){return n(u(t))}var u=Ki(t),i=Ki(1/t);return r.invert=function(t){return i(n.invert(t))},r.domain=function(t){return arguments.length?(n.domain((e=t.map(Number)).map(u)),r):e},r.ticks=function(n){return Xi(e,n)},r.tickFormat=function(n,t){return $i(e,n,t)},r.nice=function(n){return r.domain(Zi(e,n))},r.exponent=function(o){return arguments.length?(u=Ki(t=o),i=Ki(1/t),n.domain(e.map(u)),r):t},r.copy=function(){return Gi(n.copy(),t,e)},Yi(r,n)}function Ki(n){return function(t){return 0>t?-Math.pow(-t,n):Math.pow(t,n)}}function Qi(n,t){function e(e){return i[((u.get(e)||(\"range\"===t.t?u.set(e,n.push(e)):0/0))-1)%i.length]}function r(t,e){return ta.range(n.length).map(function(n){return t+e*n})}var u,i,o;return e.domain=function(r){if(!arguments.length)return n;n=[],u=new l;for(var i,o=-1,a=r.length;++o<a;)u.has(i=r[o])||u.set(i,n.push(i));return e[t.t].apply(e,t.a)},e.range=function(n){return arguments.length?(i=n,o=0,t={t:\"range\",a:arguments},e):i},e.rangePoints=function(u,a){arguments.length<2&&(a=0);var c=u[0],l=u[1],s=n.length<2?(c=(c+l)/2,0):(l-c)/(n.length-1+a);return i=r(c+s*a/2,s),o=0,t={t:\"rangePoints\",a:arguments},e},e.rangeRoundPoints=function(u,a){arguments.length<2&&(a=0);var c=u[0],l=u[1],s=n.length<2?(c=l=Math.round((c+l)/2),0):(l-c)/(n.length-1+a)|0;return i=r(c+Math.round(s*a/2+(l-c-(n.length-1+a)*s)/2),s),o=0,t={t:\"rangeRoundPoints\",a:arguments},e},e.rangeBands=function(u,a,c){arguments.length<2&&(a=0),arguments.length<3&&(c=a);var l=u[1]<u[0],s=u[l-0],f=u[1-l],h=(f-s)/(n.length-a+2*c);return i=r(s+h*c,h),l&&i.reverse(),o=h*(1-a),t={t:\"rangeBands\",a:arguments},e},e.rangeRoundBands=function(u,a,c){arguments.length<2&&(a=0),arguments.length<3&&(c=a);var l=u[1]<u[0],s=u[l-0],f=u[1-l],h=Math.floor((f-s)/(n.length-a+2*c));return i=r(s+Math.round((f-s-(n.length-a)*h)/2),h),l&&i.reverse(),o=Math.round(h*(1-a)),t={t:\"rangeRoundBands\",a:arguments},e},e.rangeBand=function(){return o},e.rangeExtent=function(){return Pi(t.a[0])},e.copy=function(){return Qi(n,t)},e.domain(n)}function no(n,t){function i(){var e=0,r=t.length;for(a=[];++e<r;)a[e-1]=ta.quantile(n,e/r);return o}function o(n){return isNaN(n=+n)?void 0:t[ta.bisect(a,n)]}var a;return o.domain=function(t){return arguments.length?(n=t.map(r).filter(u).sort(e),i()):n},o.range=function(n){return arguments.length?(t=n,i()):t},o.quantiles=function(){return a},o.invertExtent=function(e){return e=t.indexOf(e),0>e?[0/0,0/0]:[e>0?a[e-1]:n[0],e<a.length?a[e]:n[n.length-1]]},o.copy=function(){return no(n,t)},i()}function to(n,t,e){function r(t){return e[Math.max(0,Math.min(o,Math.floor(i*(t-n))))]}function u(){return i=e.length/(t-n),o=e.length-1,r}var i,o;return r.domain=function(e){return arguments.length?(n=+e[0],t=+e[e.length-1],u()):[n,t]},r.range=function(n){return arguments.length?(e=n,u()):e},r.invertExtent=function(t){return t=e.indexOf(t),t=0>t?0/0:t/i+n,[t,t+1/i]},r.copy=function(){return to(n,t,e)},u()}function eo(n,t){function e(e){return e>=e?t[ta.bisect(n,e)]:void 0}return e.domain=function(t){return arguments.length?(n=t,e):n},e.range=function(n){return arguments.length?(t=n,e):t},e.invertExtent=function(e){return e=t.indexOf(e),[n[e-1],n[e]]},e.copy=function(){return eo(n,t)},e}function ro(n){function t(n){return+n}return t.invert=t,t.domain=t.range=function(e){return arguments.length?(n=e.map(t),t):n},t.ticks=function(t){return Xi(n,t)},t.tickFormat=function(t,e){return $i(n,t,e)},t.copy=function(){return ro(n)},t}function uo(){return 0}function io(n){return n.innerRadius}function oo(n){return n.outerRadius}function ao(n){return n.startAngle}function co(n){return n.endAngle}function lo(n){return n&&n.padAngle}function so(n,t,e,r){return(n-e)*t-(t-r)*n>0?0:1}function fo(n,t,e,r,u){var i=n[0]-t[0],o=n[1]-t[1],a=(u?r:-r)/Math.sqrt(i*i+o*o),c=a*o,l=-a*i,s=n[0]+c,f=n[1]+l,h=t[0]+c,g=t[1]+l,p=(s+h)/2,v=(f+g)/2,d=h-s,m=g-f,y=d*d+m*m,M=e-r,x=s*g-h*f,b=(0>m?-1:1)*Math.sqrt(M*M*y-x*x),_=(x*m-d*b)/y,w=(-x*d-m*b)/y,S=(x*m+d*b)/y,k=(-x*d+m*b)/y,E=_-p,A=w-v,N=S-p,C=k-v;return E*E+A*A>N*N+C*C&&(_=S,w=k),[[_-c,w-l],[_*e/M,w*e/M]]}function ho(n){function t(t){function o(){l.push(\"M\",i(n(s),a))}for(var c,l=[],s=[],f=-1,h=t.length,g=Et(e),p=Et(r);++f<h;)u.call(this,c=t[f],f)?s.push([+g.call(this,c,f),+p.call(this,c,f)]):s.length&&(o(),s=[]);return s.length&&o(),l.length?l.join(\"\"):null}var e=Ar,r=Nr,u=Ne,i=go,o=i.key,a=.7;return t.x=function(n){return arguments.length?(e=n,t):e},t.y=function(n){return arguments.length?(r=n,t):r},t.defined=function(n){return arguments.length?(u=n,t):u},t.interpolate=function(n){return arguments.length?(o=\"function\"==typeof n?i=n:(i=El.get(n)||go).key,t):o},t.tension=function(n){return arguments.length?(a=n,t):a},t}function go(n){return n.join(\"L\")}function po(n){return go(n)+\"Z\"}function vo(n){for(var t=0,e=n.length,r=n[0],u=[r[0],\",\",r[1]];++t<e;)u.push(\"H\",(r[0]+(r=n[t])[0])/2,\"V\",r[1]);return e>1&&u.push(\"H\",r[0]),u.join(\"\")}function mo(n){for(var t=0,e=n.length,r=n[0],u=[r[0],\",\",r[1]];++t<e;)u.push(\"V\",(r=n[t])[1],\"H\",r[0]);return u.join(\"\")}function yo(n){for(var t=0,e=n.length,r=n[0],u=[r[0],\",\",r[1]];++t<e;)u.push(\"H\",(r=n[t])[0],\"V\",r[1]);return u.join(\"\")}function Mo(n,t){return n.length<4?go(n):n[1]+_o(n.slice(1,-1),wo(n,t))}function xo(n,t){return n.length<3?go(n):n[0]+_o((n.push(n[0]),n),wo([n[n.length-2]].concat(n,[n[1]]),t))}function bo(n,t){return n.length<3?go(n):n[0]+_o(n,wo(n,t))}function _o(n,t){if(t.length<1||n.length!=t.length&&n.length!=t.length+2)return go(n);var e=n.length!=t.length,r=\"\",u=n[0],i=n[1],o=t[0],a=o,c=1;if(e&&(r+=\"Q\"+(i[0]-2*o[0]/3)+\",\"+(i[1]-2*o[1]/3)+\",\"+i[0]+\",\"+i[1],u=n[1],c=2),t.length>1){a=t[1],i=n[c],c++,r+=\"C\"+(u[0]+o[0])+\",\"+(u[1]+o[1])+\",\"+(i[0]-a[0])+\",\"+(i[1]-a[1])+\",\"+i[0]+\",\"+i[1];for(var l=2;l<t.length;l++,c++)i=n[c],a=t[l],r+=\"S\"+(i[0]-a[0])+\",\"+(i[1]-a[1])+\",\"+i[0]+\",\"+i[1]}if(e){var s=n[c];r+=\"Q\"+(i[0]+2*a[0]/3)+\",\"+(i[1]+2*a[1]/3)+\",\"+s[0]+\",\"+s[1]}return r}function wo(n,t){for(var e,r=[],u=(1-t)/2,i=n[0],o=n[1],a=1,c=n.length;++a<c;)e=i,i=o,o=n[a],r.push([u*(o[0]-e[0]),u*(o[1]-e[1])]);return r}function So(n){if(n.length<3)return go(n);var t=1,e=n.length,r=n[0],u=r[0],i=r[1],o=[u,u,u,(r=n[1])[0]],a=[i,i,i,r[1]],c=[u,\",\",i,\"L\",No(Cl,o),\",\",No(Cl,a)];for(n.push(n[e-1]);++t<=e;)r=n[t],o.shift(),o.push(r[0]),a.shift(),a.push(r[1]),Co(c,o,a);return n.pop(),c.push(\"L\",r),c.join(\"\")}function ko(n){if(n.length<4)return go(n);for(var t,e=[],r=-1,u=n.length,i=[0],o=[0];++r<3;)t=n[r],i.push(t[0]),o.push(t[1]);for(e.push(No(Cl,i)+\",\"+No(Cl,o)),--r;++r<u;)t=n[r],i.shift(),i.push(t[0]),o.shift(),o.push(t[1]),Co(e,i,o);return e.join(\"\")}function Eo(n){for(var t,e,r=-1,u=n.length,i=u+4,o=[],a=[];++r<4;)e=n[r%u],o.push(e[0]),a.push(e[1]);for(t=[No(Cl,o),\",\",No(Cl,a)],--r;++r<i;)e=n[r%u],o.shift(),o.push(e[0]),a.shift(),a.push(e[1]),Co(t,o,a);return t.join(\"\")}function Ao(n,t){var e=n.length-1;if(e)for(var r,u,i=n[0][0],o=n[0][1],a=n[e][0]-i,c=n[e][1]-o,l=-1;++l<=e;)r=n[l],u=l/e,r[0]=t*r[0]+(1-t)*(i+u*a),r[1]=t*r[1]+(1-t)*(o+u*c);return So(n)}function No(n,t){return n[0]*t[0]+n[1]*t[1]+n[2]*t[2]+n[3]*t[3]}function Co(n,t,e){n.push(\"C\",No(Al,t),\",\",No(Al,e),\",\",No(Nl,t),\",\",No(Nl,e),\",\",No(Cl,t),\",\",No(Cl,e))}function zo(n,t){return(t[1]-n[1])/(t[0]-n[0])}function qo(n){for(var t=0,e=n.length-1,r=[],u=n[0],i=n[1],o=r[0]=zo(u,i);++t<e;)r[t]=(o+(o=zo(u=i,i=n[t+1])))/2;return r[t]=o,r}function Lo(n){for(var t,e,r,u,i=[],o=qo(n),a=-1,c=n.length-1;++a<c;)t=zo(n[a],n[a+1]),ga(t)<Ca?o[a]=o[a+1]=0:(e=o[a]/t,r=o[a+1]/t,u=e*e+r*r,u>9&&(u=3*t/Math.sqrt(u),o[a]=u*e,o[a+1]=u*r));for(a=-1;++a<=c;)u=(n[Math.min(c,a+1)][0]-n[Math.max(0,a-1)][0])/(6*(1+o[a]*o[a])),i.push([u||0,o[a]*u||0]);return i}function To(n){return n.length<3?go(n):n[0]+_o(n,Lo(n))}function Ro(n){for(var t,e,r,u=-1,i=n.length;++u<i;)t=n[u],e=t[0],r=t[1]-Ra,t[0]=e*Math.cos(r),t[1]=e*Math.sin(r);return n}function Do(n){function t(t){function c(){v.push(\"M\",a(n(m),f),s,l(n(d.reverse()),f),\"Z\")}for(var h,g,p,v=[],d=[],m=[],y=-1,M=t.length,x=Et(e),b=Et(u),_=e===r?function(){return g}:Et(r),w=u===i?function(){return p}:Et(i);++y<M;)o.call(this,h=t[y],y)?(d.push([g=+x.call(this,h,y),p=+b.call(this,h,y)]),m.push([+_.call(this,h,y),+w.call(this,h,y)])):d.length&&(c(),d=[],m=[]);return d.length&&c(),v.length?v.join(\"\"):null}var e=Ar,r=Ar,u=0,i=Nr,o=Ne,a=go,c=a.key,l=a,s=\"L\",f=.7;return t.x=function(n){return arguments.length?(e=r=n,t):r},t.x0=function(n){return arguments.length?(e=n,t):e},t.x1=function(n){return arguments.length?(r=n,t):r\r\n},t.y=function(n){return arguments.length?(u=i=n,t):i},t.y0=function(n){return arguments.length?(u=n,t):u},t.y1=function(n){return arguments.length?(i=n,t):i},t.defined=function(n){return arguments.length?(o=n,t):o},t.interpolate=function(n){return arguments.length?(c=\"function\"==typeof n?a=n:(a=El.get(n)||go).key,l=a.reverse||a,s=a.closed?\"M\":\"L\",t):c},t.tension=function(n){return arguments.length?(f=n,t):f},t}function Po(n){return n.radius}function Uo(n){return[n.x,n.y]}function jo(n){return function(){var t=n.apply(this,arguments),e=t[0],r=t[1]-Ra;return[e*Math.cos(r),e*Math.sin(r)]}}function Fo(){return 64}function Ho(){return\"circle\"}function Oo(n){var t=Math.sqrt(n/qa);return\"M0,\"+t+\"A\"+t+\",\"+t+\" 0 1,1 0,\"+-t+\"A\"+t+\",\"+t+\" 0 1,1 0,\"+t+\"Z\"}function Io(n){return function(){var t,e;(t=this[n])&&(e=t[t.active])&&(--t.count?delete t[t.active]:delete this[n],t.active+=.5,e.event&&e.event.interrupt.call(this,this.__data__,e.index))}}function Yo(n,t,e){return ya(n,Pl),n.namespace=t,n.id=e,n}function Zo(n,t,e,r){var u=n.id,i=n.namespace;return Y(n,\"function\"==typeof e?function(n,o,a){n[i][u].tween.set(t,r(e.call(n,n.__data__,o,a)))}:(e=r(e),function(n){n[i][u].tween.set(t,e)}))}function Vo(n){return null==n&&(n=\"\"),function(){this.textContent=n}}function Xo(n){return null==n?\"__transition__\":\"__transition_\"+n+\"__\"}function $o(n,t,e,r,u){var i=n[e]||(n[e]={active:0,count:0}),o=i[r];if(!o){var a=u.time;o=i[r]={tween:new l,time:a,delay:u.delay,duration:u.duration,ease:u.ease,index:t},u=null,++i.count,ta.timer(function(u){function c(e){if(i.active>r)return s();var u=i[i.active];u&&(--i.count,delete i[i.active],u.event&&u.event.interrupt.call(n,n.__data__,u.index)),i.active=r,o.event&&o.event.start.call(n,n.__data__,t),o.tween.forEach(function(e,r){(r=r.call(n,n.__data__,t))&&v.push(r)}),h=o.ease,f=o.duration,ta.timer(function(){return p.c=l(e||1)?Ne:l,1},0,a)}function l(e){if(i.active!==r)return 1;for(var u=e/f,a=h(u),c=v.length;c>0;)v[--c].call(n,a);return u>=1?(o.event&&o.event.end.call(n,n.__data__,t),s()):void 0}function s(){return--i.count?delete i[r]:delete n[e],1}var f,h,g=o.delay,p=ec,v=[];return p.t=g+a,u>=g?c(u-g):void(p.c=c)},0,a)}}function Bo(n,t,e){n.attr(\"transform\",function(n){var r=t(n);return\"translate(\"+(isFinite(r)?r:e(n))+\",0)\"})}function Wo(n,t,e){n.attr(\"transform\",function(n){var r=t(n);return\"translate(0,\"+(isFinite(r)?r:e(n))+\")\"})}function Jo(n){return n.toISOString()}function Go(n,t,e){function r(t){return n(t)}function u(n,e){var r=n[1]-n[0],u=r/e,i=ta.bisect(Vl,u);return i==Vl.length?[t.year,Vi(n.map(function(n){return n/31536e6}),e)[2]]:i?t[u/Vl[i-1]<Vl[i]/u?i-1:i]:[Bl,Vi(n,e)[2]]}return r.invert=function(t){return Ko(n.invert(t))},r.domain=function(t){return arguments.length?(n.domain(t),r):n.domain().map(Ko)},r.nice=function(n,t){function e(e){return!isNaN(e)&&!n.range(e,Ko(+e+1),t).length}var i=r.domain(),o=Pi(i),a=null==n?u(o,10):\"number\"==typeof n&&u(o,n);return a&&(n=a[0],t=a[1]),r.domain(Fi(i,t>1?{floor:function(t){for(;e(t=n.floor(t));)t=Ko(t-1);return t},ceil:function(t){for(;e(t=n.ceil(t));)t=Ko(+t+1);return t}}:n))},r.ticks=function(n,t){var e=Pi(r.domain()),i=null==n?u(e,10):\"number\"==typeof n?u(e,n):!n.range&&[{range:n},t];return i&&(n=i[0],t=i[1]),n.range(e[0],Ko(+e[1]+1),1>t?1:t)},r.tickFormat=function(){return e},r.copy=function(){return Go(n.copy(),t,e)},Yi(r,n)}function Ko(n){return new Date(n)}function Qo(n){return JSON.parse(n.responseText)}function na(n){var t=ua.createRange();return t.selectNode(ua.body),t.createContextualFragment(n.responseText)}var ta={version:\"3.5.5\"},ea=[].slice,ra=function(n){return ea.call(n)},ua=this.document;if(ua)try{ra(ua.documentElement.childNodes)[0].nodeType}catch(ia){ra=function(n){for(var t=n.length,e=new Array(t);t--;)e[t]=n[t];return e}}if(Date.now||(Date.now=function(){return+new Date}),ua)try{ua.createElement(\"DIV\").style.setProperty(\"opacity\",0,\"\")}catch(oa){var aa=this.Element.prototype,ca=aa.setAttribute,la=aa.setAttributeNS,sa=this.CSSStyleDeclaration.prototype,fa=sa.setProperty;aa.setAttribute=function(n,t){ca.call(this,n,t+\"\")},aa.setAttributeNS=function(n,t,e){la.call(this,n,t,e+\"\")},sa.setProperty=function(n,t,e){fa.call(this,n,t+\"\",e)}}ta.ascending=e,ta.descending=function(n,t){return n>t?-1:t>n?1:t>=n?0:0/0},ta.min=function(n,t){var e,r,u=-1,i=n.length;if(1===arguments.length){for(;++u<i;)if(null!=(r=n[u])&&r>=r){e=r;break}for(;++u<i;)null!=(r=n[u])&&e>r&&(e=r)}else{for(;++u<i;)if(null!=(r=t.call(n,n[u],u))&&r>=r){e=r;break}for(;++u<i;)null!=(r=t.call(n,n[u],u))&&e>r&&(e=r)}return e},ta.max=function(n,t){var e,r,u=-1,i=n.length;if(1===arguments.length){for(;++u<i;)if(null!=(r=n[u])&&r>=r){e=r;break}for(;++u<i;)null!=(r=n[u])&&r>e&&(e=r)}else{for(;++u<i;)if(null!=(r=t.call(n,n[u],u))&&r>=r){e=r;break}for(;++u<i;)null!=(r=t.call(n,n[u],u))&&r>e&&(e=r)}return e},ta.extent=function(n,t){var e,r,u,i=-1,o=n.length;if(1===arguments.length){for(;++i<o;)if(null!=(r=n[i])&&r>=r){e=u=r;break}for(;++i<o;)null!=(r=n[i])&&(e>r&&(e=r),r>u&&(u=r))}else{for(;++i<o;)if(null!=(r=t.call(n,n[i],i))&&r>=r){e=u=r;break}for(;++i<o;)null!=(r=t.call(n,n[i],i))&&(e>r&&(e=r),r>u&&(u=r))}return[e,u]},ta.sum=function(n,t){var e,r=0,i=n.length,o=-1;if(1===arguments.length)for(;++o<i;)u(e=+n[o])&&(r+=e);else for(;++o<i;)u(e=+t.call(n,n[o],o))&&(r+=e);return r},ta.mean=function(n,t){var e,i=0,o=n.length,a=-1,c=o;if(1===arguments.length)for(;++a<o;)u(e=r(n[a]))?i+=e:--c;else for(;++a<o;)u(e=r(t.call(n,n[a],a)))?i+=e:--c;return c?i/c:void 0},ta.quantile=function(n,t){var e=(n.length-1)*t+1,r=Math.floor(e),u=+n[r-1],i=e-r;return i?u+i*(n[r]-u):u},ta.median=function(n,t){var i,o=[],a=n.length,c=-1;if(1===arguments.length)for(;++c<a;)u(i=r(n[c]))&&o.push(i);else for(;++c<a;)u(i=r(t.call(n,n[c],c)))&&o.push(i);return o.length?ta.quantile(o.sort(e),.5):void 0},ta.variance=function(n,t){var e,i,o=n.length,a=0,c=0,l=-1,s=0;if(1===arguments.length)for(;++l<o;)u(e=r(n[l]))&&(i=e-a,a+=i/++s,c+=i*(e-a));else for(;++l<o;)u(e=r(t.call(n,n[l],l)))&&(i=e-a,a+=i/++s,c+=i*(e-a));return s>1?c/(s-1):void 0},ta.deviation=function(){var n=ta.variance.apply(this,arguments);return n?Math.sqrt(n):n};var ha=i(e);ta.bisectLeft=ha.left,ta.bisect=ta.bisectRight=ha.right,ta.bisector=function(n){return i(1===n.length?function(t,r){return e(n(t),r)}:n)},ta.shuffle=function(n,t,e){(i=arguments.length)<3&&(e=n.length,2>i&&(t=0));for(var r,u,i=e-t;i;)u=Math.random()*i--|0,r=n[i+t],n[i+t]=n[u+t],n[u+t]=r;return n},ta.permute=function(n,t){for(var e=t.length,r=new Array(e);e--;)r[e]=n[t[e]];return r},ta.pairs=function(n){for(var t,e=0,r=n.length-1,u=n[0],i=new Array(0>r?0:r);r>e;)i[e]=[t=u,u=n[++e]];return i},ta.zip=function(){if(!(r=arguments.length))return[];for(var n=-1,t=ta.min(arguments,o),e=new Array(t);++n<t;)for(var r,u=-1,i=e[n]=new Array(r);++u<r;)i[u]=arguments[u][n];return e},ta.transpose=function(n){return ta.zip.apply(ta,n)},ta.keys=function(n){var t=[];for(var e in n)t.push(e);return t},ta.values=function(n){var t=[];for(var e in n)t.push(n[e]);return t},ta.entries=function(n){var t=[];for(var e in n)t.push({key:e,value:n[e]});return t},ta.merge=function(n){for(var t,e,r,u=n.length,i=-1,o=0;++i<u;)o+=n[i].length;for(e=new Array(o);--u>=0;)for(r=n[u],t=r.length;--t>=0;)e[--o]=r[t];return e};var ga=Math.abs;ta.range=function(n,t,e){if(arguments.length<3&&(e=1,arguments.length<2&&(t=n,n=0)),(t-n)/e===1/0)throw new Error(\"infinite range\");var r,u=[],i=a(ga(e)),o=-1;if(n*=i,t*=i,e*=i,0>e)for(;(r=n+e*++o)>t;)u.push(r/i);else for(;(r=n+e*++o)<t;)u.push(r/i);return u},ta.map=function(n,t){var e=new l;if(n instanceof l)n.forEach(function(n,t){e.set(n,t)});else if(Array.isArray(n)){var r,u=-1,i=n.length;if(1===arguments.length)for(;++u<i;)e.set(u,n[u]);else for(;++u<i;)e.set(t.call(n,r=n[u],u),r)}else for(var o in n)e.set(o,n[o]);return e};var pa=\"__proto__\",va=\"\\x00\";c(l,{has:h,get:function(n){return this._[s(n)]},set:function(n,t){return this._[s(n)]=t},remove:g,keys:p,values:function(){var n=[];for(var t in this._)n.push(this._[t]);return n},entries:function(){var n=[];for(var t in this._)n.push({key:f(t),value:this._[t]});return n},size:v,empty:d,forEach:function(n){for(var t in this._)n.call(this,f(t),this._[t])}}),ta.nest=function(){function n(t,o,a){if(a>=i.length)return r?r.call(u,o):e?o.sort(e):o;for(var c,s,f,h,g=-1,p=o.length,v=i[a++],d=new l;++g<p;)(h=d.get(c=v(s=o[g])))?h.push(s):d.set(c,[s]);return t?(s=t(),f=function(e,r){s.set(e,n(t,r,a))}):(s={},f=function(e,r){s[e]=n(t,r,a)}),d.forEach(f),s}function t(n,e){if(e>=i.length)return n;var r=[],u=o[e++];return n.forEach(function(n,u){r.push({key:n,values:t(u,e)})}),u?r.sort(function(n,t){return u(n.key,t.key)}):r}var e,r,u={},i=[],o=[];return u.map=function(t,e){return n(e,t,0)},u.entries=function(e){return t(n(ta.map,e,0),0)},u.key=function(n){return i.push(n),u},u.sortKeys=function(n){return o[i.length-1]=n,u},u.sortValues=function(n){return e=n,u},u.rollup=function(n){return r=n,u},u},ta.set=function(n){var t=new m;if(n)for(var e=0,r=n.length;r>e;++e)t.add(n[e]);return t},c(m,{has:h,add:function(n){return this._[s(n+=\"\")]=!0,n},remove:g,values:p,size:v,empty:d,forEach:function(n){for(var t in this._)n.call(this,f(t))}}),ta.behavior={},ta.rebind=function(n,t){for(var e,r=1,u=arguments.length;++r<u;)n[e=arguments[r]]=M(n,t,t[e]);return n};var da=[\"webkit\",\"ms\",\"moz\",\"Moz\",\"o\",\"O\"];ta.dispatch=function(){for(var n=new _,t=-1,e=arguments.length;++t<e;)n[arguments[t]]=w(n);return n},_.prototype.on=function(n,t){var e=n.indexOf(\".\"),r=\"\";if(e>=0&&(r=n.slice(e+1),n=n.slice(0,e)),n)return arguments.length<2?this[n].on(r):this[n].on(r,t);if(2===arguments.length){if(null==t)for(n in this)this.hasOwnProperty(n)&&this[n].on(r,null);return this}},ta.event=null,ta.requote=function(n){return n.replace(ma,\"\\\\$&\")};var ma=/[\\\\\\^\\$\\*\\+\\?\\|\\[\\]\\(\\)\\.\\{\\}]/g,ya={}.__proto__?function(n,t){n.__proto__=t}:function(n,t){for(var e in t)n[e]=t[e]},Ma=function(n,t){return t.querySelector(n)},xa=function(n,t){return t.querySelectorAll(n)},ba=function(n,t){var e=n.matches||n[x(n,\"matchesSelector\")];return(ba=function(n,t){return e.call(n,t)})(n,t)};\"function\"==typeof Sizzle&&(Ma=function(n,t){return Sizzle(n,t)[0]||null},xa=Sizzle,ba=Sizzle.matchesSelector),ta.selection=function(){return ta.select(ua.documentElement)};var _a=ta.selection.prototype=[];_a.select=function(n){var t,e,r,u,i=[];n=N(n);for(var o=-1,a=this.length;++o<a;){i.push(t=[]),t.parentNode=(r=this[o]).parentNode;for(var c=-1,l=r.length;++c<l;)(u=r[c])?(t.push(e=n.call(u,u.__data__,c,o)),e&&\"__data__\"in u&&(e.__data__=u.__data__)):t.push(null)}return A(i)},_a.selectAll=function(n){var t,e,r=[];n=C(n);for(var u=-1,i=this.length;++u<i;)for(var o=this[u],a=-1,c=o.length;++a<c;)(e=o[a])&&(r.push(t=ra(n.call(e,e.__data__,a,u))),t.parentNode=e);return A(r)};var wa={svg:\"http://www.w3.org/2000/svg\",xhtml:\"http://www.w3.org/1999/xhtml\",xlink:\"http://www.w3.org/1999/xlink\",xml:\"http://www.w3.org/XML/1998/namespace\",xmlns:\"http://www.w3.org/2000/xmlns/\"};ta.ns={prefix:wa,qualify:function(n){var t=n.indexOf(\":\"),e=n;return t>=0&&(e=n.slice(0,t),n=n.slice(t+1)),wa.hasOwnProperty(e)?{space:wa[e],local:n}:n}},_a.attr=function(n,t){if(arguments.length<2){if(\"string\"==typeof n){var e=this.node();return n=ta.ns.qualify(n),n.local?e.getAttributeNS(n.space,n.local):e.getAttribute(n)}for(t in n)this.each(z(t,n[t]));return this}return this.each(z(n,t))},_a.classed=function(n,t){if(arguments.length<2){if(\"string\"==typeof n){var e=this.node(),r=(n=T(n)).length,u=-1;if(t=e.classList){for(;++u<r;)if(!t.contains(n[u]))return!1}else for(t=e.getAttribute(\"class\");++u<r;)if(!L(n[u]).test(t))return!1;return!0}for(t in n)this.each(R(t,n[t]));return this}return this.each(R(n,t))},_a.style=function(n,e,r){var u=arguments.length;if(3>u){if(\"string\"!=typeof n){2>u&&(e=\"\");for(r in n)this.each(P(r,n[r],e));return this}if(2>u){var i=this.node();return t(i).getComputedStyle(i,null).getPropertyValue(n)}r=\"\"}return this.each(P(n,e,r))},_a.property=function(n,t){if(arguments.length<2){if(\"string\"==typeof n)return this.node()[n];for(t in n)this.each(U(t,n[t]));return this}return this.each(U(n,t))},_a.text=function(n){return arguments.length?this.each(\"function\"==typeof n?function(){var t=n.apply(this,arguments);this.textContent=null==t?\"\":t}:null==n?function(){this.textContent=\"\"}:function(){this.textContent=n}):this.node().textContent},_a.html=function(n){return arguments.length?this.each(\"function\"==typeof n?function(){var t=n.apply(this,arguments);this.innerHTML=null==t?\"\":t}:null==n?function(){this.innerHTML=\"\"}:function(){this.innerHTML=n}):this.node().innerHTML},_a.append=function(n){return n=j(n),this.select(function(){return this.appendChild(n.apply(this,arguments))})},_a.insert=function(n,t){return n=j(n),t=N(t),this.select(function(){return this.insertBefore(n.apply(this,arguments),t.apply(this,arguments)||null)})},_a.remove=function(){return this.each(F)},_a.data=function(n,t){function e(n,e){var r,u,i,o=n.length,f=e.length,h=Math.min(o,f),g=new Array(f),p=new Array(f),v=new Array(o);if(t){var d,m=new l,y=new Array(o);for(r=-1;++r<o;)m.has(d=t.call(u=n[r],u.__data__,r))?v[r]=u:m.set(d,u),y[r]=d;for(r=-1;++r<f;)(u=m.get(d=t.call(e,i=e[r],r)))?u!==!0&&(g[r]=u,u.__data__=i):p[r]=H(i),m.set(d,!0);for(r=-1;++r<o;)m.get(y[r])!==!0&&(v[r]=n[r])}else{for(r=-1;++r<h;)u=n[r],i=e[r],u?(u.__data__=i,g[r]=u):p[r]=H(i);for(;f>r;++r)p[r]=H(e[r]);for(;o>r;++r)v[r]=n[r]}p.update=g,p.parentNode=g.parentNode=v.parentNode=n.parentNode,a.push(p),c.push(g),s.push(v)}var r,u,i=-1,o=this.length;if(!arguments.length){for(n=new Array(o=(r=this[0]).length);++i<o;)(u=r[i])&&(n[i]=u.__data__);return n}var a=Z([]),c=A([]),s=A([]);if(\"function\"==typeof n)for(;++i<o;)e(r=this[i],n.call(r,r.parentNode.__data__,i));else for(;++i<o;)e(r=this[i],n);return c.enter=function(){return a},c.exit=function(){return s},c},_a.datum=function(n){return arguments.length?this.property(\"__data__\",n):this.property(\"__data__\")},_a.filter=function(n){var t,e,r,u=[];\"function\"!=typeof n&&(n=O(n));for(var i=0,o=this.length;o>i;i++){u.push(t=[]),t.parentNode=(e=this[i]).parentNode;for(var a=0,c=e.length;c>a;a++)(r=e[a])&&n.call(r,r.__data__,a,i)&&t.push(r)}return A(u)},_a.order=function(){for(var n=-1,t=this.length;++n<t;)for(var e,r=this[n],u=r.length-1,i=r[u];--u>=0;)(e=r[u])&&(i&&i!==e.nextSibling&&i.parentNode.insertBefore(e,i),i=e);return this},_a.sort=function(n){n=I.apply(this,arguments);for(var t=-1,e=this.length;++t<e;)this[t].sort(n);return this.order()},_a.each=function(n){return Y(this,function(t,e,r){n.call(t,t.__data__,e,r)})},_a.call=function(n){var t=ra(arguments);return n.apply(t[0]=this,t),this},_a.empty=function(){return!this.node()},_a.node=function(){for(var n=0,t=this.length;t>n;n++)for(var e=this[n],r=0,u=e.length;u>r;r++){var i=e[r];if(i)return i}return null},_a.size=function(){var n=0;return Y(this,function(){++n}),n};var Sa=[];ta.selection.enter=Z,ta.selection.enter.prototype=Sa,Sa.append=_a.append,Sa.empty=_a.empty,Sa.node=_a.node,Sa.call=_a.call,Sa.size=_a.size,Sa.select=function(n){for(var t,e,r,u,i,o=[],a=-1,c=this.length;++a<c;){r=(u=this[a]).update,o.push(t=[]),t.parentNode=u.parentNode;for(var l=-1,s=u.length;++l<s;)(i=u[l])?(t.push(r[l]=e=n.call(u.parentNode,i.__data__,l,a)),e.__data__=i.__data__):t.push(null)}return A(o)},Sa.insert=function(n,t){return arguments.length<2&&(t=V(this)),_a.insert.call(this,n,t)},ta.select=function(t){var e;return\"string\"==typeof t?(e=[Ma(t,ua)],e.parentNode=ua.documentElement):(e=[t],e.parentNode=n(t)),A([e])},ta.selectAll=function(n){var t;return\"string\"==typeof n?(t=ra(xa(n,ua)),t.parentNode=ua.documentElement):(t=n,t.parentNode=null),A([t])},_a.on=function(n,t,e){var r=arguments.length;if(3>r){if(\"string\"!=typeof n){2>r&&(t=!1);for(e in n)this.each(X(e,n[e],t));return this}if(2>r)return(r=this.node()[\"__on\"+n])&&r._;e=!1}return this.each(X(n,t,e))};var ka=ta.map({mouseenter:\"mouseover\",mouseleave:\"mouseout\"});ua&&ka.forEach(function(n){\"on\"+n in ua&&ka.remove(n)});var Ea,Aa=0;ta.mouse=function(n){return J(n,k())};var Na=this.navigator&&/WebKit/.test(this.navigator.userAgent)?-1:0;ta.touch=function(n,t,e){if(arguments.length<3&&(e=t,t=k().changedTouches),t)for(var r,u=0,i=t.length;i>u;++u)if((r=t[u]).identifier===e)return J(n,r)},ta.behavior.drag=function(){function n(){this.on(\"mousedown.drag\",i).on(\"touchstart.drag\",o)}function e(n,t,e,i,o){return function(){function a(){var n,e,r=t(h,v);r&&(n=r[0]-M[0],e=r[1]-M[1],p|=n|e,M=r,g({type:\"drag\",x:r[0]+l[0],y:r[1]+l[1],dx:n,dy:e}))}function c(){t(h,v)&&(m.on(i+d,null).on(o+d,null),y(p&&ta.event.target===f),g({type:\"dragend\"}))}var l,s=this,f=ta.event.target,h=s.parentNode,g=r.of(s,arguments),p=0,v=n(),d=\".drag\"+(null==v?\"\":\"-\"+v),m=ta.select(e(f)).on(i+d,a).on(o+d,c),y=W(f),M=t(h,v);u?(l=u.apply(s,arguments),l=[l.x-M[0],l.y-M[1]]):l=[0,0],g({type:\"dragstart\"})}}var r=E(n,\"drag\",\"dragstart\",\"dragend\"),u=null,i=e(b,ta.mouse,t,\"mousemove\",\"mouseup\"),o=e(G,ta.touch,y,\"touchmove\",\"touchend\");return n.origin=function(t){return arguments.length?(u=t,n):u},ta.rebind(n,r,\"on\")},ta.touches=function(n,t){return arguments.length<2&&(t=k().touches),t?ra(t).map(function(t){var e=J(n,t);return e.identifier=t.identifier,e}):[]};var Ca=1e-6,za=Ca*Ca,qa=Math.PI,La=2*qa,Ta=La-Ca,Ra=qa/2,Da=qa/180,Pa=180/qa,Ua=Math.SQRT2,ja=2,Fa=4;ta.interpolateZoom=function(n,t){function e(n){var t=n*y;if(m){var e=rt(v),o=i/(ja*h)*(e*ut(Ua*t+v)-et(v));return[r+o*l,u+o*s,i*e/rt(Ua*t+v)]}return[r+n*l,u+n*s,i*Math.exp(Ua*t)]}var r=n[0],u=n[1],i=n[2],o=t[0],a=t[1],c=t[2],l=o-r,s=a-u,f=l*l+s*s,h=Math.sqrt(f),g=(c*c-i*i+Fa*f)/(2*i*ja*h),p=(c*c-i*i-Fa*f)/(2*c*ja*h),v=Math.log(Math.sqrt(g*g+1)-g),d=Math.log(Math.sqrt(p*p+1)-p),m=d-v,y=(m||Math.log(c/i))/Ua;return e.duration=1e3*y,e},ta.behavior.zoom=function(){function n(n){n.on(q,f).on(Oa+\".zoom\",g).on(\"dblclick.zoom\",p).on(R,h)}function e(n){return[(n[0]-k.x)/k.k,(n[1]-k.y)/k.k]}function r(n){return[n[0]*k.k+k.x,n[1]*k.k+k.y]}function u(n){k.k=Math.max(N[0],Math.min(N[1],n))}function i(n,t){t=r(t),k.x+=n[0]-t[0],k.y+=n[1]-t[1]}function o(t,e,r,o){t.__chart__={x:k.x,y:k.y,k:k.k},u(Math.pow(2,o)),i(d=e,r),t=ta.select(t),C>0&&(t=t.transition().duration(C)),t.call(n.event)}function a(){b&&b.domain(x.range().map(function(n){return(n-k.x)/k.k}).map(x.invert)),w&&w.domain(_.range().map(function(n){return(n-k.y)/k.k}).map(_.invert))}function c(n){z++||n({type:\"zoomstart\"})}function l(n){a(),n({type:\"zoom\",scale:k.k,translate:[k.x,k.y]})}function s(n){--z||n({type:\"zoomend\"}),d=null}function f(){function n(){f=1,i(ta.mouse(u),g),l(a)}function r(){h.on(L,null).on(T,null),p(f&&ta.event.target===o),s(a)}var u=this,o=ta.event.target,a=D.of(u,arguments),f=0,h=ta.select(t(u)).on(L,n).on(T,r),g=e(ta.mouse(u)),p=W(u);Dl.call(u),c(a)}function h(){function n(){var n=ta.touches(p);return g=k.k,n.forEach(function(n){n.identifier in d&&(d[n.identifier]=e(n))}),n}function t(){var t=ta.event.target;ta.select(t).on(x,r).on(b,a),_.push(t);for(var e=ta.event.changedTouches,u=0,i=e.length;i>u;++u)d[e[u].identifier]=null;var c=n(),l=Date.now();if(1===c.length){if(500>l-M){var s=c[0];o(p,s,d[s.identifier],Math.floor(Math.log(k.k)/Math.LN2)+1),S()}M=l}else if(c.length>1){var s=c[0],f=c[1],h=s[0]-f[0],g=s[1]-f[1];m=h*h+g*g}}function r(){var n,t,e,r,o=ta.touches(p);Dl.call(p);for(var a=0,c=o.length;c>a;++a,r=null)if(e=o[a],r=d[e.identifier]){if(t)break;n=e,t=r}if(r){var s=(s=e[0]-n[0])*s+(s=e[1]-n[1])*s,f=m&&Math.sqrt(s/m);n=[(n[0]+e[0])/2,(n[1]+e[1])/2],t=[(t[0]+r[0])/2,(t[1]+r[1])/2],u(f*g)}M=null,i(n,t),l(v)}function a(){if(ta.event.touches.length){for(var t=ta.event.changedTouches,e=0,r=t.length;r>e;++e)delete d[t[e].identifier];for(var u in d)return void n()}ta.selectAll(_).on(y,null),w.on(q,f).on(R,h),E(),s(v)}var g,p=this,v=D.of(p,arguments),d={},m=0,y=\".zoom-\"+ta.event.changedTouches[0].identifier,x=\"touchmove\"+y,b=\"touchend\"+y,_=[],w=ta.select(p),E=W(p);t(),c(v),w.on(q,null).on(R,t)}function g(){var n=D.of(this,arguments);y?clearTimeout(y):(v=e(d=m||ta.mouse(this)),Dl.call(this),c(n)),y=setTimeout(function(){y=null,s(n)},50),S(),u(Math.pow(2,.002*Ha())*k.k),i(d,v),l(n)}function p(){var n=ta.mouse(this),t=Math.log(k.k)/Math.LN2;o(this,n,e(n),ta.event.shiftKey?Math.ceil(t)-1:Math.floor(t)+1)}var v,d,m,y,M,x,b,_,w,k={x:0,y:0,k:1},A=[960,500],N=Ia,C=250,z=0,q=\"mousedown.zoom\",L=\"mousemove.zoom\",T=\"mouseup.zoom\",R=\"touchstart.zoom\",D=E(n,\"zoomstart\",\"zoom\",\"zoomend\");return Oa||(Oa=\"onwheel\"in ua?(Ha=function(){return-ta.event.deltaY*(ta.event.deltaMode?120:1)},\"wheel\"):\"onmousewheel\"in ua?(Ha=function(){return ta.event.wheelDelta},\"mousewheel\"):(Ha=function(){return-ta.event.detail},\"MozMousePixelScroll\")),n.event=function(n){n.each(function(){var n=D.of(this,arguments),t=k;Tl?ta.select(this).transition().each(\"start.zoom\",function(){k=this.__chart__||{x:0,y:0,k:1},c(n)}).tween(\"zoom:zoom\",function(){var e=A[0],r=A[1],u=d?d[0]:e/2,i=d?d[1]:r/2,o=ta.interpolateZoom([(u-k.x)/k.k,(i-k.y)/k.k,e/k.k],[(u-t.x)/t.k,(i-t.y)/t.k,e/t.k]);return function(t){var r=o(t),a=e/r[2];this.__chart__=k={x:u-r[0]*a,y:i-r[1]*a,k:a},l(n)}}).each(\"interrupt.zoom\",function(){s(n)}).each(\"end.zoom\",function(){s(n)}):(this.__chart__=k,c(n),l(n),s(n))})},n.translate=function(t){return arguments.length?(k={x:+t[0],y:+t[1],k:k.k},a(),n):[k.x,k.y]},n.scale=function(t){return arguments.length?(k={x:k.x,y:k.y,k:+t},a(),n):k.k},n.scaleExtent=function(t){return arguments.length?(N=null==t?Ia:[+t[0],+t[1]],n):N},n.center=function(t){return arguments.length?(m=t&&[+t[0],+t[1]],n):m},n.size=function(t){return arguments.length?(A=t&&[+t[0],+t[1]],n):A},n.duration=function(t){return arguments.length?(C=+t,n):C},n.x=function(t){return arguments.length?(b=t,x=t.copy(),k={x:0,y:0,k:1},n):b},n.y=function(t){return arguments.length?(w=t,_=t.copy(),k={x:0,y:0,k:1},n):w},ta.rebind(n,D,\"on\")};var Ha,Oa,Ia=[0,1/0];ta.color=ot,ot.prototype.toString=function(){return this.rgb()+\"\"},ta.hsl=at;var Ya=at.prototype=new ot;Ya.brighter=function(n){return n=Math.pow(.7,arguments.length?n:1),new at(this.h,this.s,this.l/n)},Ya.darker=function(n){return n=Math.pow(.7,arguments.length?n:1),new at(this.h,this.s,n*this.l)},Ya.rgb=function(){return ct(this.h,this.s,this.l)},ta.hcl=lt;var Za=lt.prototype=new ot;Za.brighter=function(n){return new lt(this.h,this.c,Math.min(100,this.l+Va*(arguments.length?n:1)))},Za.darker=function(n){return new lt(this.h,this.c,Math.max(0,this.l-Va*(arguments.length?n:1)))},Za.rgb=function(){return st(this.h,this.c,this.l).rgb()},ta.lab=ft;var Va=18,Xa=.95047,$a=1,Ba=1.08883,Wa=ft.prototype=new ot;Wa.brighter=function(n){return new ft(Math.min(100,this.l+Va*(arguments.length?n:1)),this.a,this.b)},Wa.darker=function(n){return new ft(Math.max(0,this.l-Va*(arguments.length?n:1)),this.a,this.b)},Wa.rgb=function(){return ht(this.l,this.a,this.b)},ta.rgb=mt;var Ja=mt.prototype=new ot;Ja.brighter=function(n){n=Math.pow(.7,arguments.length?n:1);var t=this.r,e=this.g,r=this.b,u=30;return t||e||r?(t&&u>t&&(t=u),e&&u>e&&(e=u),r&&u>r&&(r=u),new mt(Math.min(255,t/n),Math.min(255,e/n),Math.min(255,r/n))):new mt(u,u,u)},Ja.darker=function(n){return n=Math.pow(.7,arguments.length?n:1),new mt(n*this.r,n*this.g,n*this.b)},Ja.hsl=function(){return _t(this.r,this.g,this.b)},Ja.toString=function(){return\"#\"+xt(this.r)+xt(this.g)+xt(this.b)};var Ga=ta.map({aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074});Ga.forEach(function(n,t){Ga.set(n,yt(t))}),ta.functor=Et,ta.xhr=At(y),ta.dsv=function(n,t){function e(n,e,i){arguments.length<3&&(i=e,e=null);var o=Nt(n,t,null==e?r:u(e),i);return o.row=function(n){return arguments.length?o.response(null==(e=n)?r:u(n)):e},o}function r(n){return e.parse(n.responseText)}function u(n){return function(t){return e.parse(t.responseText,n)}}function i(t){return t.map(o).join(n)}function o(n){return a.test(n)?'\"'+n.replace(/\\\"/g,'\"\"')+'\"':n}var a=new RegExp('[\"'+n+\"\\n]\"),c=n.charCodeAt(0);return e.parse=function(n,t){var r;return e.parseRows(n,function(n,e){if(r)return r(n,e-1);var u=new Function(\"d\",\"return {\"+n.map(function(n,t){return JSON.stringify(n)+\": d[\"+t+\"]\"}).join(\",\")+\"}\");r=t?function(n,e){return t(u(n),e)}:u})},e.parseRows=function(n,t){function e(){if(s>=l)return o;if(u)return u=!1,i;var t=s;if(34===n.charCodeAt(t)){for(var e=t;e++<l;)if(34===n.charCodeAt(e)){if(34!==n.charCodeAt(e+1))break;++e}s=e+2;var r=n.charCodeAt(e+1);return 13===r?(u=!0,10===n.charCodeAt(e+2)&&++s):10===r&&(u=!0),n.slice(t+1,e).replace(/\"\"/g,'\"')}for(;l>s;){var r=n.charCodeAt(s++),a=1;if(10===r)u=!0;else if(13===r)u=!0,10===n.charCodeAt(s)&&(++s,++a);else if(r!==c)continue;return n.slice(t,s-a)}return n.slice(t)}for(var r,u,i={},o={},a=[],l=n.length,s=0,f=0;(r=e())!==o;){for(var h=[];r!==i&&r!==o;)h.push(r),r=e();t&&null==(h=t(h,f++))||a.push(h)}return a},e.format=function(t){if(Array.isArray(t[0]))return e.formatRows(t);var r=new m,u=[];return t.forEach(function(n){for(var t in n)r.has(t)||u.push(r.add(t))}),[u.map(o).join(n)].concat(t.map(function(t){return u.map(function(n){return o(t[n])}).join(n)})).join(\"\\n\")},e.formatRows=function(n){return n.map(i).join(\"\\n\")},e},ta.csv=ta.dsv(\",\",\"text/csv\"),ta.tsv=ta.dsv(\"\t\",\"text/tab-separated-values\");var Ka,Qa,nc,tc,ec,rc=this[x(this,\"requestAnimationFrame\")]||function(n){setTimeout(n,17)};ta.timer=function(n,t,e){var r=arguments.length;2>r&&(t=0),3>r&&(e=Date.now());var u=e+t,i={c:n,t:u,f:!1,n:null};Qa?Qa.n=i:Ka=i,Qa=i,nc||(tc=clearTimeout(tc),nc=1,rc(qt))},ta.timer.flush=function(){Lt(),Tt()},ta.round=function(n,t){return t?Math.round(n*(t=Math.pow(10,t)))/t:Math.round(n)};var uc=[\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"\\xb5\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"].map(Dt);ta.formatPrefix=function(n,t){var e=0;return n&&(0>n&&(n*=-1),t&&(n=ta.round(n,Rt(n,t))),e=1+Math.floor(1e-12+Math.log(n)/Math.LN10),e=Math.max(-24,Math.min(24,3*Math.floor((e-1)/3)))),uc[8+e/3]};var ic=/(?:([^{])?([<>=^]))?([+\\- ])?([$#])?(0)?(\\d+)?(,)?(\\.-?\\d+)?([a-z%])?/i,oc=ta.map({b:function(n){return n.toString(2)},c:function(n){return String.fromCharCode(n)},o:function(n){return n.toString(8)},x:function(n){return n.toString(16)},X:function(n){return n.toString(16).toUpperCase()},g:function(n,t){return n.toPrecision(t)},e:function(n,t){return n.toExponential(t)},f:function(n,t){return n.toFixed(t)},r:function(n,t){return(n=ta.round(n,Rt(n,t))).toFixed(Math.max(0,Math.min(20,Rt(n*(1+1e-15),t))))}}),ac=ta.time={},cc=Date;jt.prototype={getDate:function(){return this._.getUTCDate()},getDay:function(){return this._.getUTCDay()},getFullYear:function(){return this._.getUTCFullYear()},getHours:function(){return this._.getUTCHours()},getMilliseconds:function(){return this._.getUTCMilliseconds()},getMinutes:function(){return this._.getUTCMinutes()},getMonth:function(){return this._.getUTCMonth()},getSeconds:function(){return this._.getUTCSeconds()},getTime:function(){return this._.getTime()},getTimezoneOffset:function(){return 0},valueOf:function(){return this._.valueOf()},setDate:function(){lc.setUTCDate.apply(this._,arguments)},setDay:function(){lc.setUTCDay.apply(this._,arguments)},setFullYear:function(){lc.setUTCFullYear.apply(this._,arguments)},setHours:function(){lc.setUTCHours.apply(this._,arguments)},setMilliseconds:function(){lc.setUTCMilliseconds.apply(this._,arguments)},setMinutes:function(){lc.setUTCMinutes.apply(this._,arguments)},setMonth:function(){lc.setUTCMonth.apply(this._,arguments)},setSeconds:function(){lc.setUTCSeconds.apply(this._,arguments)},setTime:function(){lc.setTime.apply(this._,arguments)}};var lc=Date.prototype;ac.year=Ft(function(n){return n=ac.day(n),n.setMonth(0,1),n},function(n,t){n.setFullYear(n.getFullYear()+t)},function(n){return n.getFullYear()}),ac.years=ac.year.range,ac.years.utc=ac.year.utc.range,ac.day=Ft(function(n){var t=new cc(2e3,0);return t.setFullYear(n.getFullYear(),n.getMonth(),n.getDate()),t},function(n,t){n.setDate(n.getDate()+t)},function(n){return n.getDate()-1}),ac.days=ac.day.range,ac.days.utc=ac.day.utc.range,ac.dayOfYear=function(n){var t=ac.year(n);return Math.floor((n-t-6e4*(n.getTimezoneOffset()-t.getTimezoneOffset()))/864e5)},[\"sunday\",\"monday\",\"tuesday\",\"wednesday\",\"thursday\",\"friday\",\"saturday\"].forEach(function(n,t){t=7-t;var e=ac[n]=Ft(function(n){return(n=ac.day(n)).setDate(n.getDate()-(n.getDay()+t)%7),n},function(n,t){n.setDate(n.getDate()+7*Math.floor(t))},function(n){var e=ac.year(n).getDay();return Math.floor((ac.dayOfYear(n)+(e+t)%7)/7)-(e!==t)});ac[n+\"s\"]=e.range,ac[n+\"s\"].utc=e.utc.range,ac[n+\"OfYear\"]=function(n){var e=ac.year(n).getDay();return Math.floor((ac.dayOfYear(n)+(e+t)%7)/7)}}),ac.week=ac.sunday,ac.weeks=ac.sunday.range,ac.weeks.utc=ac.sunday.utc.range,ac.weekOfYear=ac.sundayOfYear;var sc={\"-\":\"\",_:\" \",0:\"0\"},fc=/^\\s*\\d+/,hc=/^%/;ta.locale=function(n){return{numberFormat:Pt(n),timeFormat:Ot(n)}};var gc=ta.locale({decimal:\".\",thousands:\",\",grouping:[3],currency:[\"$\",\"\"],dateTime:\"%a %b %e %X %Y\",date:\"%m/%d/%Y\",time:\"%H:%M:%S\",periods:[\"AM\",\"PM\"],days:[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],shortDays:[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],months:[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],shortMonths:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"]});ta.format=gc.numberFormat,ta.geo={},ce.prototype={s:0,t:0,add:function(n){le(n,this.t,pc),le(pc.s,this.s,this),this.s?this.t+=pc.t:this.s=pc.t\r\n},reset:function(){this.s=this.t=0},valueOf:function(){return this.s}};var pc=new ce;ta.geo.stream=function(n,t){n&&vc.hasOwnProperty(n.type)?vc[n.type](n,t):se(n,t)};var vc={Feature:function(n,t){se(n.geometry,t)},FeatureCollection:function(n,t){for(var e=n.features,r=-1,u=e.length;++r<u;)se(e[r].geometry,t)}},dc={Sphere:function(n,t){t.sphere()},Point:function(n,t){n=n.coordinates,t.point(n[0],n[1],n[2])},MultiPoint:function(n,t){for(var e=n.coordinates,r=-1,u=e.length;++r<u;)n=e[r],t.point(n[0],n[1],n[2])},LineString:function(n,t){fe(n.coordinates,t,0)},MultiLineString:function(n,t){for(var e=n.coordinates,r=-1,u=e.length;++r<u;)fe(e[r],t,0)},Polygon:function(n,t){he(n.coordinates,t)},MultiPolygon:function(n,t){for(var e=n.coordinates,r=-1,u=e.length;++r<u;)he(e[r],t)},GeometryCollection:function(n,t){for(var e=n.geometries,r=-1,u=e.length;++r<u;)se(e[r],t)}};ta.geo.area=function(n){return mc=0,ta.geo.stream(n,Mc),mc};var mc,yc=new ce,Mc={sphere:function(){mc+=4*qa},point:b,lineStart:b,lineEnd:b,polygonStart:function(){yc.reset(),Mc.lineStart=ge},polygonEnd:function(){var n=2*yc;mc+=0>n?4*qa+n:n,Mc.lineStart=Mc.lineEnd=Mc.point=b}};ta.geo.bounds=function(){function n(n,t){M.push(x=[s=n,h=n]),f>t&&(f=t),t>g&&(g=t)}function t(t,e){var r=pe([t*Da,e*Da]);if(m){var u=de(m,r),i=[u[1],-u[0],0],o=de(i,u);Me(o),o=xe(o);var c=t-p,l=c>0?1:-1,v=o[0]*Pa*l,d=ga(c)>180;if(d^(v>l*p&&l*t>v)){var y=o[1]*Pa;y>g&&(g=y)}else if(v=(v+360)%360-180,d^(v>l*p&&l*t>v)){var y=-o[1]*Pa;f>y&&(f=y)}else f>e&&(f=e),e>g&&(g=e);d?p>t?a(s,t)>a(s,h)&&(h=t):a(t,h)>a(s,h)&&(s=t):h>=s?(s>t&&(s=t),t>h&&(h=t)):t>p?a(s,t)>a(s,h)&&(h=t):a(t,h)>a(s,h)&&(s=t)}else n(t,e);m=r,p=t}function e(){b.point=t}function r(){x[0]=s,x[1]=h,b.point=n,m=null}function u(n,e){if(m){var r=n-p;y+=ga(r)>180?r+(r>0?360:-360):r}else v=n,d=e;Mc.point(n,e),t(n,e)}function i(){Mc.lineStart()}function o(){u(v,d),Mc.lineEnd(),ga(y)>Ca&&(s=-(h=180)),x[0]=s,x[1]=h,m=null}function a(n,t){return(t-=n)<0?t+360:t}function c(n,t){return n[0]-t[0]}function l(n,t){return t[0]<=t[1]?t[0]<=n&&n<=t[1]:n<t[0]||t[1]<n}var s,f,h,g,p,v,d,m,y,M,x,b={point:n,lineStart:e,lineEnd:r,polygonStart:function(){b.point=u,b.lineStart=i,b.lineEnd=o,y=0,Mc.polygonStart()},polygonEnd:function(){Mc.polygonEnd(),b.point=n,b.lineStart=e,b.lineEnd=r,0>yc?(s=-(h=180),f=-(g=90)):y>Ca?g=90:-Ca>y&&(f=-90),x[0]=s,x[1]=h}};return function(n){g=h=-(s=f=1/0),M=[],ta.geo.stream(n,b);var t=M.length;if(t){M.sort(c);for(var e,r=1,u=M[0],i=[u];t>r;++r)e=M[r],l(e[0],u)||l(e[1],u)?(a(u[0],e[1])>a(u[0],u[1])&&(u[1]=e[1]),a(e[0],u[1])>a(u[0],u[1])&&(u[0]=e[0])):i.push(u=e);for(var o,e,p=-1/0,t=i.length-1,r=0,u=i[t];t>=r;u=e,++r)e=i[r],(o=a(u[1],e[0]))>p&&(p=o,s=e[0],h=u[1])}return M=x=null,1/0===s||1/0===f?[[0/0,0/0],[0/0,0/0]]:[[s,f],[h,g]]}}(),ta.geo.centroid=function(n){xc=bc=_c=wc=Sc=kc=Ec=Ac=Nc=Cc=zc=0,ta.geo.stream(n,qc);var t=Nc,e=Cc,r=zc,u=t*t+e*e+r*r;return za>u&&(t=kc,e=Ec,r=Ac,Ca>bc&&(t=_c,e=wc,r=Sc),u=t*t+e*e+r*r,za>u)?[0/0,0/0]:[Math.atan2(e,t)*Pa,tt(r/Math.sqrt(u))*Pa]};var xc,bc,_c,wc,Sc,kc,Ec,Ac,Nc,Cc,zc,qc={sphere:b,point:_e,lineStart:Se,lineEnd:ke,polygonStart:function(){qc.lineStart=Ee},polygonEnd:function(){qc.lineStart=Se}},Lc=Le(Ne,Pe,je,[-qa,-qa/2]),Tc=1e9;ta.geo.clipExtent=function(){var n,t,e,r,u,i,o={stream:function(n){return u&&(u.valid=!1),u=i(n),u.valid=!0,u},extent:function(a){return arguments.length?(i=Ie(n=+a[0][0],t=+a[0][1],e=+a[1][0],r=+a[1][1]),u&&(u.valid=!1,u=null),o):[[n,t],[e,r]]}};return o.extent([[0,0],[960,500]])},(ta.geo.conicEqualArea=function(){return Ye(Ze)}).raw=Ze,ta.geo.albers=function(){return ta.geo.conicEqualArea().rotate([96,0]).center([-.6,38.7]).parallels([29.5,45.5]).scale(1070)},ta.geo.albersUsa=function(){function n(n){var i=n[0],o=n[1];return t=null,e(i,o),t||(r(i,o),t)||u(i,o),t}var t,e,r,u,i=ta.geo.albers(),o=ta.geo.conicEqualArea().rotate([154,0]).center([-2,58.5]).parallels([55,65]),a=ta.geo.conicEqualArea().rotate([157,0]).center([-3,19.9]).parallels([8,18]),c={point:function(n,e){t=[n,e]}};return n.invert=function(n){var t=i.scale(),e=i.translate(),r=(n[0]-e[0])/t,u=(n[1]-e[1])/t;return(u>=.12&&.234>u&&r>=-.425&&-.214>r?o:u>=.166&&.234>u&&r>=-.214&&-.115>r?a:i).invert(n)},n.stream=function(n){var t=i.stream(n),e=o.stream(n),r=a.stream(n);return{point:function(n,u){t.point(n,u),e.point(n,u),r.point(n,u)},sphere:function(){t.sphere(),e.sphere(),r.sphere()},lineStart:function(){t.lineStart(),e.lineStart(),r.lineStart()},lineEnd:function(){t.lineEnd(),e.lineEnd(),r.lineEnd()},polygonStart:function(){t.polygonStart(),e.polygonStart(),r.polygonStart()},polygonEnd:function(){t.polygonEnd(),e.polygonEnd(),r.polygonEnd()}}},n.precision=function(t){return arguments.length?(i.precision(t),o.precision(t),a.precision(t),n):i.precision()},n.scale=function(t){return arguments.length?(i.scale(t),o.scale(.35*t),a.scale(t),n.translate(i.translate())):i.scale()},n.translate=function(t){if(!arguments.length)return i.translate();var l=i.scale(),s=+t[0],f=+t[1];return e=i.translate(t).clipExtent([[s-.455*l,f-.238*l],[s+.455*l,f+.238*l]]).stream(c).point,r=o.translate([s-.307*l,f+.201*l]).clipExtent([[s-.425*l+Ca,f+.12*l+Ca],[s-.214*l-Ca,f+.234*l-Ca]]).stream(c).point,u=a.translate([s-.205*l,f+.212*l]).clipExtent([[s-.214*l+Ca,f+.166*l+Ca],[s-.115*l-Ca,f+.234*l-Ca]]).stream(c).point,n},n.scale(1070)};var Rc,Dc,Pc,Uc,jc,Fc,Hc={point:b,lineStart:b,lineEnd:b,polygonStart:function(){Dc=0,Hc.lineStart=Ve},polygonEnd:function(){Hc.lineStart=Hc.lineEnd=Hc.point=b,Rc+=ga(Dc/2)}},Oc={point:Xe,lineStart:b,lineEnd:b,polygonStart:b,polygonEnd:b},Ic={point:We,lineStart:Je,lineEnd:Ge,polygonStart:function(){Ic.lineStart=Ke},polygonEnd:function(){Ic.point=We,Ic.lineStart=Je,Ic.lineEnd=Ge}};ta.geo.path=function(){function n(n){return n&&(\"function\"==typeof a&&i.pointRadius(+a.apply(this,arguments)),o&&o.valid||(o=u(i)),ta.geo.stream(n,o)),i.result()}function t(){return o=null,n}var e,r,u,i,o,a=4.5;return n.area=function(n){return Rc=0,ta.geo.stream(n,u(Hc)),Rc},n.centroid=function(n){return _c=wc=Sc=kc=Ec=Ac=Nc=Cc=zc=0,ta.geo.stream(n,u(Ic)),zc?[Nc/zc,Cc/zc]:Ac?[kc/Ac,Ec/Ac]:Sc?[_c/Sc,wc/Sc]:[0/0,0/0]},n.bounds=function(n){return jc=Fc=-(Pc=Uc=1/0),ta.geo.stream(n,u(Oc)),[[Pc,Uc],[jc,Fc]]},n.projection=function(n){return arguments.length?(u=(e=n)?n.stream||tr(n):y,t()):e},n.context=function(n){return arguments.length?(i=null==(r=n)?new $e:new Qe(n),\"function\"!=typeof a&&i.pointRadius(a),t()):r},n.pointRadius=function(t){return arguments.length?(a=\"function\"==typeof t?t:(i.pointRadius(+t),+t),n):a},n.projection(ta.geo.albersUsa()).context(null)},ta.geo.transform=function(n){return{stream:function(t){var e=new er(t);for(var r in n)e[r]=n[r];return e}}},er.prototype={point:function(n,t){this.stream.point(n,t)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}},ta.geo.projection=ur,ta.geo.projectionMutator=ir,(ta.geo.equirectangular=function(){return ur(ar)}).raw=ar.invert=ar,ta.geo.rotation=function(n){function t(t){return t=n(t[0]*Da,t[1]*Da),t[0]*=Pa,t[1]*=Pa,t}return n=lr(n[0]%360*Da,n[1]*Da,n.length>2?n[2]*Da:0),t.invert=function(t){return t=n.invert(t[0]*Da,t[1]*Da),t[0]*=Pa,t[1]*=Pa,t},t},cr.invert=ar,ta.geo.circle=function(){function n(){var n=\"function\"==typeof r?r.apply(this,arguments):r,t=lr(-n[0]*Da,-n[1]*Da,0).invert,u=[];return e(null,null,1,{point:function(n,e){u.push(n=t(n,e)),n[0]*=Pa,n[1]*=Pa}}),{type:\"Polygon\",coordinates:[u]}}var t,e,r=[0,0],u=6;return n.origin=function(t){return arguments.length?(r=t,n):r},n.angle=function(r){return arguments.length?(e=gr((t=+r)*Da,u*Da),n):t},n.precision=function(r){return arguments.length?(e=gr(t*Da,(u=+r)*Da),n):u},n.angle(90)},ta.geo.distance=function(n,t){var e,r=(t[0]-n[0])*Da,u=n[1]*Da,i=t[1]*Da,o=Math.sin(r),a=Math.cos(r),c=Math.sin(u),l=Math.cos(u),s=Math.sin(i),f=Math.cos(i);return Math.atan2(Math.sqrt((e=f*o)*e+(e=l*s-c*f*a)*e),c*s+l*f*a)},ta.geo.graticule=function(){function n(){return{type:\"MultiLineString\",coordinates:t()}}function t(){return ta.range(Math.ceil(i/d)*d,u,d).map(h).concat(ta.range(Math.ceil(l/m)*m,c,m).map(g)).concat(ta.range(Math.ceil(r/p)*p,e,p).filter(function(n){return ga(n%d)>Ca}).map(s)).concat(ta.range(Math.ceil(a/v)*v,o,v).filter(function(n){return ga(n%m)>Ca}).map(f))}var e,r,u,i,o,a,c,l,s,f,h,g,p=10,v=p,d=90,m=360,y=2.5;return n.lines=function(){return t().map(function(n){return{type:\"LineString\",coordinates:n}})},n.outline=function(){return{type:\"Polygon\",coordinates:[h(i).concat(g(c).slice(1),h(u).reverse().slice(1),g(l).reverse().slice(1))]}},n.extent=function(t){return arguments.length?n.majorExtent(t).minorExtent(t):n.minorExtent()},n.majorExtent=function(t){return arguments.length?(i=+t[0][0],u=+t[1][0],l=+t[0][1],c=+t[1][1],i>u&&(t=i,i=u,u=t),l>c&&(t=l,l=c,c=t),n.precision(y)):[[i,l],[u,c]]},n.minorExtent=function(t){return arguments.length?(r=+t[0][0],e=+t[1][0],a=+t[0][1],o=+t[1][1],r>e&&(t=r,r=e,e=t),a>o&&(t=a,a=o,o=t),n.precision(y)):[[r,a],[e,o]]},n.step=function(t){return arguments.length?n.majorStep(t).minorStep(t):n.minorStep()},n.majorStep=function(t){return arguments.length?(d=+t[0],m=+t[1],n):[d,m]},n.minorStep=function(t){return arguments.length?(p=+t[0],v=+t[1],n):[p,v]},n.precision=function(t){return arguments.length?(y=+t,s=vr(a,o,90),f=dr(r,e,y),h=vr(l,c,90),g=dr(i,u,y),n):y},n.majorExtent([[-180,-90+Ca],[180,90-Ca]]).minorExtent([[-180,-80-Ca],[180,80+Ca]])},ta.geo.greatArc=function(){function n(){return{type:\"LineString\",coordinates:[t||r.apply(this,arguments),e||u.apply(this,arguments)]}}var t,e,r=mr,u=yr;return n.distance=function(){return ta.geo.distance(t||r.apply(this,arguments),e||u.apply(this,arguments))},n.source=function(e){return arguments.length?(r=e,t=\"function\"==typeof e?null:e,n):r},n.target=function(t){return arguments.length?(u=t,e=\"function\"==typeof t?null:t,n):u},n.precision=function(){return arguments.length?n:0},n},ta.geo.interpolate=function(n,t){return Mr(n[0]*Da,n[1]*Da,t[0]*Da,t[1]*Da)},ta.geo.length=function(n){return Yc=0,ta.geo.stream(n,Zc),Yc};var Yc,Zc={sphere:b,point:b,lineStart:xr,lineEnd:b,polygonStart:b,polygonEnd:b},Vc=br(function(n){return Math.sqrt(2/(1+n))},function(n){return 2*Math.asin(n/2)});(ta.geo.azimuthalEqualArea=function(){return ur(Vc)}).raw=Vc;var Xc=br(function(n){var t=Math.acos(n);return t&&t/Math.sin(t)},y);(ta.geo.azimuthalEquidistant=function(){return ur(Xc)}).raw=Xc,(ta.geo.conicConformal=function(){return Ye(_r)}).raw=_r,(ta.geo.conicEquidistant=function(){return Ye(wr)}).raw=wr;var $c=br(function(n){return 1/n},Math.atan);(ta.geo.gnomonic=function(){return ur($c)}).raw=$c,Sr.invert=function(n,t){return[n,2*Math.atan(Math.exp(t))-Ra]},(ta.geo.mercator=function(){return kr(Sr)}).raw=Sr;var Bc=br(function(){return 1},Math.asin);(ta.geo.orthographic=function(){return ur(Bc)}).raw=Bc;var Wc=br(function(n){return 1/(1+n)},function(n){return 2*Math.atan(n)});(ta.geo.stereographic=function(){return ur(Wc)}).raw=Wc,Er.invert=function(n,t){return[-t,2*Math.atan(Math.exp(n))-Ra]},(ta.geo.transverseMercator=function(){var n=kr(Er),t=n.center,e=n.rotate;return n.center=function(n){return n?t([-n[1],n[0]]):(n=t(),[n[1],-n[0]])},n.rotate=function(n){return n?e([n[0],n[1],n.length>2?n[2]+90:90]):(n=e(),[n[0],n[1],n[2]-90])},e([0,0,90])}).raw=Er,ta.geom={},ta.geom.hull=function(n){function t(n){if(n.length<3)return[];var t,u=Et(e),i=Et(r),o=n.length,a=[],c=[];for(t=0;o>t;t++)a.push([+u.call(this,n[t],t),+i.call(this,n[t],t),t]);for(a.sort(zr),t=0;o>t;t++)c.push([a[t][0],-a[t][1]]);var l=Cr(a),s=Cr(c),f=s[0]===l[0],h=s[s.length-1]===l[l.length-1],g=[];for(t=l.length-1;t>=0;--t)g.push(n[a[l[t]][2]]);for(t=+f;t<s.length-h;++t)g.push(n[a[s[t]][2]]);return g}var e=Ar,r=Nr;return arguments.length?t(n):(t.x=function(n){return arguments.length?(e=n,t):e},t.y=function(n){return arguments.length?(r=n,t):r},t)},ta.geom.polygon=function(n){return ya(n,Jc),n};var Jc=ta.geom.polygon.prototype=[];Jc.area=function(){for(var n,t=-1,e=this.length,r=this[e-1],u=0;++t<e;)n=r,r=this[t],u+=n[1]*r[0]-n[0]*r[1];return.5*u},Jc.centroid=function(n){var t,e,r=-1,u=this.length,i=0,o=0,a=this[u-1];for(arguments.length||(n=-1/(6*this.area()));++r<u;)t=a,a=this[r],e=t[0]*a[1]-a[0]*t[1],i+=(t[0]+a[0])*e,o+=(t[1]+a[1])*e;return[i*n,o*n]},Jc.clip=function(n){for(var t,e,r,u,i,o,a=Tr(n),c=-1,l=this.length-Tr(this),s=this[l-1];++c<l;){for(t=n.slice(),n.length=0,u=this[c],i=t[(r=t.length-a)-1],e=-1;++e<r;)o=t[e],qr(o,s,u)?(qr(i,s,u)||n.push(Lr(i,o,s,u)),n.push(o)):qr(i,s,u)&&n.push(Lr(i,o,s,u)),i=o;a&&n.push(n[0]),s=u}return n};var Gc,Kc,Qc,nl,tl,el=[],rl=[];Or.prototype.prepare=function(){for(var n,t=this.edges,e=t.length;e--;)n=t[e].edge,n.b&&n.a||t.splice(e,1);return t.sort(Yr),t.length},Qr.prototype={start:function(){return this.edge.l===this.site?this.edge.a:this.edge.b},end:function(){return this.edge.l===this.site?this.edge.b:this.edge.a}},nu.prototype={insert:function(n,t){var e,r,u;if(n){if(t.P=n,t.N=n.N,n.N&&(n.N.P=t),n.N=t,n.R){for(n=n.R;n.L;)n=n.L;n.L=t}else n.R=t;e=n}else this._?(n=uu(this._),t.P=null,t.N=n,n.P=n.L=t,e=n):(t.P=t.N=null,this._=t,e=null);for(t.L=t.R=null,t.U=e,t.C=!0,n=t;e&&e.C;)r=e.U,e===r.L?(u=r.R,u&&u.C?(e.C=u.C=!1,r.C=!0,n=r):(n===e.R&&(eu(this,e),n=e,e=n.U),e.C=!1,r.C=!0,ru(this,r))):(u=r.L,u&&u.C?(e.C=u.C=!1,r.C=!0,n=r):(n===e.L&&(ru(this,e),n=e,e=n.U),e.C=!1,r.C=!0,eu(this,r))),e=n.U;this._.C=!1},remove:function(n){n.N&&(n.N.P=n.P),n.P&&(n.P.N=n.N),n.N=n.P=null;var t,e,r,u=n.U,i=n.L,o=n.R;if(e=i?o?uu(o):i:o,u?u.L===n?u.L=e:u.R=e:this._=e,i&&o?(r=e.C,e.C=n.C,e.L=i,i.U=e,e!==o?(u=e.U,e.U=n.U,n=e.R,u.L=n,e.R=o,o.U=e):(e.U=u,u=e,n=e.R)):(r=n.C,n=e),n&&(n.U=u),!r){if(n&&n.C)return void(n.C=!1);do{if(n===this._)break;if(n===u.L){if(t=u.R,t.C&&(t.C=!1,u.C=!0,eu(this,u),t=u.R),t.L&&t.L.C||t.R&&t.R.C){t.R&&t.R.C||(t.L.C=!1,t.C=!0,ru(this,t),t=u.R),t.C=u.C,u.C=t.R.C=!1,eu(this,u),n=this._;break}}else if(t=u.L,t.C&&(t.C=!1,u.C=!0,ru(this,u),t=u.L),t.L&&t.L.C||t.R&&t.R.C){t.L&&t.L.C||(t.R.C=!1,t.C=!0,eu(this,t),t=u.L),t.C=u.C,u.C=t.L.C=!1,ru(this,u),n=this._;break}t.C=!0,n=u,u=u.U}while(!n.C);n&&(n.C=!1)}}},ta.geom.voronoi=function(n){function t(n){var t=new Array(n.length),r=a[0][0],u=a[0][1],i=a[1][0],o=a[1][1];return iu(e(n),a).cells.forEach(function(e,a){var c=e.edges,l=e.site,s=t[a]=c.length?c.map(function(n){var t=n.start();return[t.x,t.y]}):l.x>=r&&l.x<=i&&l.y>=u&&l.y<=o?[[r,o],[i,o],[i,u],[r,u]]:[];s.point=n[a]}),t}function e(n){return n.map(function(n,t){return{x:Math.round(i(n,t)/Ca)*Ca,y:Math.round(o(n,t)/Ca)*Ca,i:t}})}var r=Ar,u=Nr,i=r,o=u,a=ul;return n?t(n):(t.links=function(n){return iu(e(n)).edges.filter(function(n){return n.l&&n.r}).map(function(t){return{source:n[t.l.i],target:n[t.r.i]}})},t.triangles=function(n){var t=[];return iu(e(n)).cells.forEach(function(e,r){for(var u,i,o=e.site,a=e.edges.sort(Yr),c=-1,l=a.length,s=a[l-1].edge,f=s.l===o?s.r:s.l;++c<l;)u=s,i=f,s=a[c].edge,f=s.l===o?s.r:s.l,r<i.i&&r<f.i&&au(o,i,f)<0&&t.push([n[r],n[i.i],n[f.i]])}),t},t.x=function(n){return arguments.length?(i=Et(r=n),t):r},t.y=function(n){return arguments.length?(o=Et(u=n),t):u},t.clipExtent=function(n){return arguments.length?(a=null==n?ul:n,t):a===ul?null:a},t.size=function(n){return arguments.length?t.clipExtent(n&&[[0,0],n]):a===ul?null:a&&a[1]},t)};var ul=[[-1e6,-1e6],[1e6,1e6]];ta.geom.delaunay=function(n){return ta.geom.voronoi().triangles(n)},ta.geom.quadtree=function(n,t,e,r,u){function i(n){function i(n,t,e,r,u,i,o,a){if(!isNaN(e)&&!isNaN(r))if(n.leaf){var c=n.x,s=n.y;if(null!=c)if(ga(c-e)+ga(s-r)<.01)l(n,t,e,r,u,i,o,a);else{var f=n.point;n.x=n.y=n.point=null,l(n,f,c,s,u,i,o,a),l(n,t,e,r,u,i,o,a)}else n.x=e,n.y=r,n.point=t}else l(n,t,e,r,u,i,o,a)}function l(n,t,e,r,u,o,a,c){var l=.5*(u+a),s=.5*(o+c),f=e>=l,h=r>=s,g=h<<1|f;n.leaf=!1,n=n.nodes[g]||(n.nodes[g]=su()),f?u=l:a=l,h?o=s:c=s,i(n,t,e,r,u,o,a,c)}var s,f,h,g,p,v,d,m,y,M=Et(a),x=Et(c);if(null!=t)v=t,d=e,m=r,y=u;else if(m=y=-(v=d=1/0),f=[],h=[],p=n.length,o)for(g=0;p>g;++g)s=n[g],s.x<v&&(v=s.x),s.y<d&&(d=s.y),s.x>m&&(m=s.x),s.y>y&&(y=s.y),f.push(s.x),h.push(s.y);else for(g=0;p>g;++g){var b=+M(s=n[g],g),_=+x(s,g);v>b&&(v=b),d>_&&(d=_),b>m&&(m=b),_>y&&(y=_),f.push(b),h.push(_)}var w=m-v,S=y-d;w>S?y=d+w:m=v+S;var k=su();if(k.add=function(n){i(k,n,+M(n,++g),+x(n,g),v,d,m,y)},k.visit=function(n){fu(n,k,v,d,m,y)},k.find=function(n){return hu(k,n[0],n[1],v,d,m,y)},g=-1,null==t){for(;++g<p;)i(k,n[g],f[g],h[g],v,d,m,y);--g}else n.forEach(k.add);return f=h=n=s=null,k}var o,a=Ar,c=Nr;return(o=arguments.length)?(a=cu,c=lu,3===o&&(u=e,r=t,e=t=0),i(n)):(i.x=function(n){return arguments.length?(a=n,i):a},i.y=function(n){return arguments.length?(c=n,i):c},i.extent=function(n){return arguments.length?(null==n?t=e=r=u=null:(t=+n[0][0],e=+n[0][1],r=+n[1][0],u=+n[1][1]),i):null==t?null:[[t,e],[r,u]]},i.size=function(n){return arguments.length?(null==n?t=e=r=u=null:(t=e=0,r=+n[0],u=+n[1]),i):null==t?null:[r-t,u-e]},i)},ta.interpolateRgb=gu,ta.interpolateObject=pu,ta.interpolateNumber=vu,ta.interpolateString=du;var il=/[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,ol=new RegExp(il.source,\"g\");ta.interpolate=mu,ta.interpolators=[function(n,t){var e=typeof t;return(\"string\"===e?Ga.has(t)||/^(#|rgb\\(|hsl\\()/.test(t)?gu:du:t instanceof ot?gu:Array.isArray(t)?yu:\"object\"===e&&isNaN(t)?pu:vu)(n,t)}],ta.interpolateArray=yu;var al=function(){return y},cl=ta.map({linear:al,poly:ku,quad:function(){return _u},cubic:function(){return wu},sin:function(){return Eu},exp:function(){return Au},circle:function(){return Nu},elastic:Cu,back:zu,bounce:function(){return qu}}),ll=ta.map({\"in\":y,out:xu,\"in-out\":bu,\"out-in\":function(n){return bu(xu(n))}});ta.ease=function(n){var t=n.indexOf(\"-\"),e=t>=0?n.slice(0,t):n,r=t>=0?n.slice(t+1):\"in\";return e=cl.get(e)||al,r=ll.get(r)||y,Mu(r(e.apply(null,ea.call(arguments,1))))},ta.interpolateHcl=Lu,ta.interpolateHsl=Tu,ta.interpolateLab=Ru,ta.interpolateRound=Du,ta.transform=function(n){var t=ua.createElementNS(ta.ns.prefix.svg,\"g\");return(ta.transform=function(n){if(null!=n){t.setAttribute(\"transform\",n);var e=t.transform.baseVal.consolidate()}return new Pu(e?e.matrix:sl)})(n)},Pu.prototype.toString=function(){return\"translate(\"+this.translate+\")rotate(\"+this.rotate+\")skewX(\"+this.skew+\")scale(\"+this.scale+\")\"};var sl={a:1,b:0,c:0,d:1,e:0,f:0};ta.interpolateTransform=Hu,ta.layout={},ta.layout.bundle=function(){return function(n){for(var t=[],e=-1,r=n.length;++e<r;)t.push(Yu(n[e]));return t}},ta.layout.chord=function(){function n(){var n,l,f,h,g,p={},v=[],d=ta.range(i),m=[];for(e=[],r=[],n=0,h=-1;++h<i;){for(l=0,g=-1;++g<i;)l+=u[h][g];v.push(l),m.push(ta.range(i)),n+=l}for(o&&d.sort(function(n,t){return o(v[n],v[t])}),a&&m.forEach(function(n,t){n.sort(function(n,e){return a(u[t][n],u[t][e])})}),n=(La-s*i)/n,l=0,h=-1;++h<i;){for(f=l,g=-1;++g<i;){var y=d[h],M=m[y][g],x=u[y][M],b=l,_=l+=x*n;p[y+\"-\"+M]={index:y,subindex:M,startAngle:b,endAngle:_,value:x}}r[y]={index:y,startAngle:f,endAngle:l,value:(l-f)/n},l+=s}for(h=-1;++h<i;)for(g=h-1;++g<i;){var w=p[h+\"-\"+g],S=p[g+\"-\"+h];(w.value||S.value)&&e.push(w.value<S.value?{source:S,target:w}:{source:w,target:S})}c&&t()}function t(){e.sort(function(n,t){return c((n.source.value+n.target.value)/2,(t.source.value+t.target.value)/2)})}var e,r,u,i,o,a,c,l={},s=0;return l.matrix=function(n){return arguments.length?(i=(u=n)&&u.length,e=r=null,l):u},l.padding=function(n){return arguments.length?(s=n,e=r=null,l):s},l.sortGroups=function(n){return arguments.length?(o=n,e=r=null,l):o},l.sortSubgroups=function(n){return arguments.length?(a=n,e=null,l):a},l.sortChords=function(n){return arguments.length?(c=n,e&&t(),l):c},l.chords=function(){return e||n(),e},l.groups=function(){return r||n(),r},l},ta.layout.force=function(){function n(n){return function(t,e,r,u){if(t.point!==n){var i=t.cx-n.x,o=t.cy-n.y,a=u-e,c=i*i+o*o;if(c>a*a/d){if(p>c){var l=t.charge/c;n.px-=i*l,n.py-=o*l}return!0}if(t.point&&c&&p>c){var l=t.pointCharge/c;n.px-=i*l,n.py-=o*l}}return!t.charge}}function t(n){n.px=ta.event.x,n.py=ta.event.y,a.resume()}var e,r,u,i,o,a={},c=ta.dispatch(\"start\",\"tick\",\"end\"),l=[1,1],s=.9,f=fl,h=hl,g=-30,p=gl,v=.1,d=.64,m=[],M=[];return a.tick=function(){if((r*=.99)<.005)return c.end({type:\"end\",alpha:r=0}),!0;var t,e,a,f,h,p,d,y,x,b=m.length,_=M.length;for(e=0;_>e;++e)a=M[e],f=a.source,h=a.target,y=h.x-f.x,x=h.y-f.y,(p=y*y+x*x)&&(p=r*i[e]*((p=Math.sqrt(p))-u[e])/p,y*=p,x*=p,h.x-=y*(d=f.weight/(h.weight+f.weight)),h.y-=x*d,f.x+=y*(d=1-d),f.y+=x*d);if((d=r*v)&&(y=l[0]/2,x=l[1]/2,e=-1,d))for(;++e<b;)a=m[e],a.x+=(y-a.x)*d,a.y+=(x-a.y)*d;if(g)for(Ju(t=ta.geom.quadtree(m),r,o),e=-1;++e<b;)(a=m[e]).fixed||t.visit(n(a));for(e=-1;++e<b;)a=m[e],a.fixed?(a.x=a.px,a.y=a.py):(a.x-=(a.px-(a.px=a.x))*s,a.y-=(a.py-(a.py=a.y))*s);c.tick({type:\"tick\",alpha:r})},a.nodes=function(n){return arguments.length?(m=n,a):m},a.links=function(n){return arguments.length?(M=n,a):M},a.size=function(n){return arguments.length?(l=n,a):l},a.linkDistance=function(n){return arguments.length?(f=\"function\"==typeof n?n:+n,a):f},a.distance=a.linkDistance,a.linkStrength=function(n){return arguments.length?(h=\"function\"==typeof n?n:+n,a):h},a.friction=function(n){return arguments.length?(s=+n,a):s},a.charge=function(n){return arguments.length?(g=\"function\"==typeof n?n:+n,a):g},a.chargeDistance=function(n){return arguments.length?(p=n*n,a):Math.sqrt(p)},a.gravity=function(n){return arguments.length?(v=+n,a):v},a.theta=function(n){return arguments.length?(d=n*n,a):Math.sqrt(d)},a.alpha=function(n){return arguments.length?(n=+n,r?r=n>0?n:0:n>0&&(c.start({type:\"start\",alpha:r=n}),ta.timer(a.tick)),a):r},a.start=function(){function n(n,r){if(!e){for(e=new Array(c),a=0;c>a;++a)e[a]=[];for(a=0;s>a;++a){var u=M[a];e[u.source.index].push(u.target),e[u.target.index].push(u.source)}}for(var i,o=e[t],a=-1,l=o.length;++a<l;)if(!isNaN(i=o[a][n]))return i;return Math.random()*r}var t,e,r,c=m.length,s=M.length,p=l[0],v=l[1];for(t=0;c>t;++t)(r=m[t]).index=t,r.weight=0;for(t=0;s>t;++t)r=M[t],\"number\"==typeof r.source&&(r.source=m[r.source]),\"number\"==typeof r.target&&(r.target=m[r.target]),++r.source.weight,++r.target.weight;for(t=0;c>t;++t)r=m[t],isNaN(r.x)&&(r.x=n(\"x\",p)),isNaN(r.y)&&(r.y=n(\"y\",v)),isNaN(r.px)&&(r.px=r.x),isNaN(r.py)&&(r.py=r.y);if(u=[],\"function\"==typeof f)for(t=0;s>t;++t)u[t]=+f.call(this,M[t],t);else for(t=0;s>t;++t)u[t]=f;if(i=[],\"function\"==typeof h)for(t=0;s>t;++t)i[t]=+h.call(this,M[t],t);else for(t=0;s>t;++t)i[t]=h;if(o=[],\"function\"==typeof g)for(t=0;c>t;++t)o[t]=+g.call(this,m[t],t);else for(t=0;c>t;++t)o[t]=g;return a.resume()},a.resume=function(){return a.alpha(.1)},a.stop=function(){return a.alpha(0)},a.drag=function(){return e||(e=ta.behavior.drag().origin(y).on(\"dragstart.force\",Xu).on(\"drag.force\",t).on(\"dragend.force\",$u)),arguments.length?void this.on(\"mouseover.force\",Bu).on(\"mouseout.force\",Wu).call(e):e},ta.rebind(a,c,\"on\")};var fl=20,hl=1,gl=1/0;ta.layout.hierarchy=function(){function n(u){var i,o=[u],a=[];for(u.depth=0;null!=(i=o.pop());)if(a.push(i),(l=e.call(n,i,i.depth))&&(c=l.length)){for(var c,l,s;--c>=0;)o.push(s=l[c]),s.parent=i,s.depth=i.depth+1;r&&(i.value=0),i.children=l}else r&&(i.value=+r.call(n,i,i.depth)||0),delete i.children;return Qu(u,function(n){var e,u;t&&(e=n.children)&&e.sort(t),r&&(u=n.parent)&&(u.value+=n.value)}),a}var t=ei,e=ni,r=ti;return n.sort=function(e){return arguments.length?(t=e,n):t},n.children=function(t){return arguments.length?(e=t,n):e},n.value=function(t){return arguments.length?(r=t,n):r},n.revalue=function(t){return r&&(Ku(t,function(n){n.children&&(n.value=0)}),Qu(t,function(t){var e;t.children||(t.value=+r.call(n,t,t.depth)||0),(e=t.parent)&&(e.value+=t.value)})),t},n},ta.layout.partition=function(){function n(t,e,r,u){var i=t.children;if(t.x=e,t.y=t.depth*u,t.dx=r,t.dy=u,i&&(o=i.length)){var o,a,c,l=-1;for(r=t.value?r/t.value:0;++l<o;)n(a=i[l],e,c=a.value*r,u),e+=c}}function t(n){var e=n.children,r=0;if(e&&(u=e.length))for(var u,i=-1;++i<u;)r=Math.max(r,t(e[i]));return 1+r}function e(e,i){var o=r.call(this,e,i);return n(o[0],0,u[0],u[1]/t(o[0])),o}var r=ta.layout.hierarchy(),u=[1,1];return e.size=function(n){return arguments.length?(u=n,e):u},Gu(e,r)},ta.layout.pie=function(){function n(o){var a,c=o.length,l=o.map(function(e,r){return+t.call(n,e,r)}),s=+(\"function\"==typeof r?r.apply(this,arguments):r),f=(\"function\"==typeof u?u.apply(this,arguments):u)-s,h=Math.min(Math.abs(f)/c,+(\"function\"==typeof i?i.apply(this,arguments):i)),g=h*(0>f?-1:1),p=(f-c*g)/ta.sum(l),v=ta.range(c),d=[];return null!=e&&v.sort(e===pl?function(n,t){return l[t]-l[n]}:function(n,t){return e(o[n],o[t])}),v.forEach(function(n){d[n]={data:o[n],value:a=l[n],startAngle:s,endAngle:s+=a*p+g,padAngle:h}}),d}var t=Number,e=pl,r=0,u=La,i=0;return n.value=function(e){return arguments.length?(t=e,n):t},n.sort=function(t){return arguments.length?(e=t,n):e},n.startAngle=function(t){return arguments.length?(r=t,n):r},n.endAngle=function(t){return arguments.length?(u=t,n):u},n.padAngle=function(t){return arguments.length?(i=t,n):i},n};var pl={};ta.layout.stack=function(){function n(a,c){if(!(h=a.length))return a;var l=a.map(function(e,r){return t.call(n,e,r)}),s=l.map(function(t){return t.map(function(t,e){return[i.call(n,t,e),o.call(n,t,e)]})}),f=e.call(n,s,c);l=ta.permute(l,f),s=ta.permute(s,f);var h,g,p,v,d=r.call(n,s,c),m=l[0].length;for(p=0;m>p;++p)for(u.call(n,l[0][p],v=d[p],s[0][p][1]),g=1;h>g;++g)u.call(n,l[g][p],v+=s[g-1][p][1],s[g][p][1]);return a}var t=y,e=ai,r=ci,u=oi,i=ui,o=ii;return n.values=function(e){return arguments.length?(t=e,n):t},n.order=function(t){return arguments.length?(e=\"function\"==typeof t?t:vl.get(t)||ai,n):e},n.offset=function(t){return arguments.length?(r=\"function\"==typeof t?t:dl.get(t)||ci,n):r},n.x=function(t){return arguments.length?(i=t,n):i},n.y=function(t){return arguments.length?(o=t,n):o},n.out=function(t){return arguments.length?(u=t,n):u},n};var vl=ta.map({\"inside-out\":function(n){var t,e,r=n.length,u=n.map(li),i=n.map(si),o=ta.range(r).sort(function(n,t){return u[n]-u[t]}),a=0,c=0,l=[],s=[];for(t=0;r>t;++t)e=o[t],c>a?(a+=i[e],l.push(e)):(c+=i[e],s.push(e));return s.reverse().concat(l)},reverse:function(n){return ta.range(n.length).reverse()},\"default\":ai}),dl=ta.map({silhouette:function(n){var t,e,r,u=n.length,i=n[0].length,o=[],a=0,c=[];for(e=0;i>e;++e){for(t=0,r=0;u>t;t++)r+=n[t][e][1];r>a&&(a=r),o.push(r)}for(e=0;i>e;++e)c[e]=(a-o[e])/2;return c},wiggle:function(n){var t,e,r,u,i,o,a,c,l,s=n.length,f=n[0],h=f.length,g=[];for(g[0]=c=l=0,e=1;h>e;++e){for(t=0,u=0;s>t;++t)u+=n[t][e][1];for(t=0,i=0,a=f[e][0]-f[e-1][0];s>t;++t){for(r=0,o=(n[t][e][1]-n[t][e-1][1])/(2*a);t>r;++r)o+=(n[r][e][1]-n[r][e-1][1])/a;i+=o*n[t][e][1]}g[e]=c-=u?i/u*a:0,l>c&&(l=c)}for(e=0;h>e;++e)g[e]-=l;return g},expand:function(n){var t,e,r,u=n.length,i=n[0].length,o=1/u,a=[];for(e=0;i>e;++e){for(t=0,r=0;u>t;t++)r+=n[t][e][1];if(r)for(t=0;u>t;t++)n[t][e][1]/=r;else for(t=0;u>t;t++)n[t][e][1]=o}for(e=0;i>e;++e)a[e]=0;return a},zero:ci});ta.layout.histogram=function(){function n(n,i){for(var o,a,c=[],l=n.map(e,this),s=r.call(this,l,i),f=u.call(this,s,l,i),i=-1,h=l.length,g=f.length-1,p=t?1:1/h;++i<g;)o=c[i]=[],o.dx=f[i+1]-(o.x=f[i]),o.y=0;if(g>0)for(i=-1;++i<h;)a=l[i],a>=s[0]&&a<=s[1]&&(o=c[ta.bisect(f,a,1,g)-1],o.y+=p,o.push(n[i]));return c}var t=!0,e=Number,r=pi,u=hi;return n.value=function(t){return arguments.length?(e=t,n):e},n.range=function(t){return arguments.length?(r=Et(t),n):r},n.bins=function(t){return arguments.length?(u=\"number\"==typeof t?function(n){return gi(n,t)}:Et(t),n):u},n.frequency=function(e){return arguments.length?(t=!!e,n):t},n},ta.layout.pack=function(){function n(n,i){var o=e.call(this,n,i),a=o[0],c=u[0],l=u[1],s=null==t?Math.sqrt:\"function\"==typeof t?t:function(){return t};if(a.x=a.y=0,Qu(a,function(n){n.r=+s(n.value)}),Qu(a,Mi),r){var f=r*(t?1:Math.max(2*a.r/c,2*a.r/l))/2;Qu(a,function(n){n.r+=f}),Qu(a,Mi),Qu(a,function(n){n.r-=f})}return _i(a,c/2,l/2,t?1:1/Math.max(2*a.r/c,2*a.r/l)),o}var t,e=ta.layout.hierarchy().sort(vi),r=0,u=[1,1];return n.size=function(t){return arguments.length?(u=t,n):u},n.radius=function(e){return arguments.length?(t=null==e||\"function\"==typeof e?e:+e,n):t},n.padding=function(t){return arguments.length?(r=+t,n):r},Gu(n,e)},ta.layout.tree=function(){function n(n,u){var s=o.call(this,n,u),f=s[0],h=t(f);if(Qu(h,e),h.parent.m=-h.z,Ku(h,r),l)Ku(f,i);else{var g=f,p=f,v=f;Ku(f,function(n){n.x<g.x&&(g=n),n.x>p.x&&(p=n),n.depth>v.depth&&(v=n)});var d=a(g,p)/2-g.x,m=c[0]/(p.x+a(p,g)/2+d),y=c[1]/(v.depth||1);Ku(f,function(n){n.x=(n.x+d)*m,n.y=n.depth*y})}return s}function t(n){for(var t,e={A:null,children:[n]},r=[e];null!=(t=r.pop());)for(var u,i=t.children,o=0,a=i.length;a>o;++o)r.push((i[o]=u={_:i[o],parent:t,children:(u=i[o].children)&&u.slice()||[],A:null,a:null,z:0,m:0,c:0,s:0,t:null,i:o}).a=u);return e.children[0]}function e(n){var t=n.children,e=n.parent.children,r=n.i?e[n.i-1]:null;if(t.length){Ni(n);var i=(t[0].z+t[t.length-1].z)/2;r?(n.z=r.z+a(n._,r._),n.m=n.z-i):n.z=i}else r&&(n.z=r.z+a(n._,r._));n.parent.A=u(n,r,n.parent.A||e[0])}function r(n){n._.x=n.z+n.parent.m,n.m+=n.parent.m}function u(n,t,e){if(t){for(var r,u=n,i=n,o=t,c=u.parent.children[0],l=u.m,s=i.m,f=o.m,h=c.m;o=Ei(o),u=ki(u),o&&u;)c=ki(c),i=Ei(i),i.a=n,r=o.z+f-u.z-l+a(o._,u._),r>0&&(Ai(Ci(o,n,e),n,r),l+=r,s+=r),f+=o.m,l+=u.m,h+=c.m,s+=i.m;o&&!Ei(i)&&(i.t=o,i.m+=f-s),u&&!ki(c)&&(c.t=u,c.m+=l-h,e=n)}return e}function i(n){n.x*=c[0],n.y=n.depth*c[1]}var o=ta.layout.hierarchy().sort(null).value(null),a=Si,c=[1,1],l=null;return n.separation=function(t){return arguments.length?(a=t,n):a},n.size=function(t){return arguments.length?(l=null==(c=t)?i:null,n):l?null:c},n.nodeSize=function(t){return arguments.length?(l=null==(c=t)?null:i,n):l?c:null},Gu(n,o)},ta.layout.cluster=function(){function n(n,i){var o,a=t.call(this,n,i),c=a[0],l=0;Qu(c,function(n){var t=n.children;t&&t.length?(n.x=qi(t),n.y=zi(t)):(n.x=o?l+=e(n,o):0,n.y=0,o=n)});var s=Li(c),f=Ti(c),h=s.x-e(s,f)/2,g=f.x+e(f,s)/2;return Qu(c,u?function(n){n.x=(n.x-c.x)*r[0],n.y=(c.y-n.y)*r[1]}:function(n){n.x=(n.x-h)/(g-h)*r[0],n.y=(1-(c.y?n.y/c.y:1))*r[1]}),a}var t=ta.layout.hierarchy().sort(null).value(null),e=Si,r=[1,1],u=!1;return n.separation=function(t){return arguments.length?(e=t,n):e},n.size=function(t){return arguments.length?(u=null==(r=t),n):u?null:r},n.nodeSize=function(t){return arguments.length?(u=null!=(r=t),n):u?r:null},Gu(n,t)},ta.layout.treemap=function(){function n(n,t){for(var e,r,u=-1,i=n.length;++u<i;)r=(e=n[u]).value*(0>t?0:t),e.area=isNaN(r)||0>=r?0:r}function t(e){var i=e.children;if(i&&i.length){var o,a,c,l=f(e),s=[],h=i.slice(),p=1/0,v=\"slice\"===g?l.dx:\"dice\"===g?l.dy:\"slice-dice\"===g?1&e.depth?l.dy:l.dx:Math.min(l.dx,l.dy);for(n(h,l.dx*l.dy/e.value),s.area=0;(c=h.length)>0;)s.push(o=h[c-1]),s.area+=o.area,\"squarify\"!==g||(a=r(s,v))<=p?(h.pop(),p=a):(s.area-=s.pop().area,u(s,v,l,!1),v=Math.min(l.dx,l.dy),s.length=s.area=0,p=1/0);s.length&&(u(s,v,l,!0),s.length=s.area=0),i.forEach(t)}}function e(t){var r=t.children;if(r&&r.length){var i,o=f(t),a=r.slice(),c=[];for(n(a,o.dx*o.dy/t.value),c.area=0;i=a.pop();)c.push(i),c.area+=i.area,null!=i.z&&(u(c,i.z?o.dx:o.dy,o,!a.length),c.length=c.area=0);r.forEach(e)}}function r(n,t){for(var e,r=n.area,u=0,i=1/0,o=-1,a=n.length;++o<a;)(e=n[o].area)&&(i>e&&(i=e),e>u&&(u=e));return r*=r,t*=t,r?Math.max(t*u*p/r,r/(t*i*p)):1/0}function u(n,t,e,r){var u,i=-1,o=n.length,a=e.x,l=e.y,s=t?c(n.area/t):0;if(t==e.dx){for((r||s>e.dy)&&(s=e.dy);++i<o;)u=n[i],u.x=a,u.y=l,u.dy=s,a+=u.dx=Math.min(e.x+e.dx-a,s?c(u.area/s):0);u.z=!0,u.dx+=e.x+e.dx-a,e.y+=s,e.dy-=s}else{for((r||s>e.dx)&&(s=e.dx);++i<o;)u=n[i],u.x=a,u.y=l,u.dx=s,l+=u.dy=Math.min(e.y+e.dy-l,s?c(u.area/s):0);u.z=!1,u.dy+=e.y+e.dy-l,e.x+=s,e.dx-=s}}function i(r){var u=o||a(r),i=u[0];return i.x=0,i.y=0,i.dx=l[0],i.dy=l[1],o&&a.revalue(i),n([i],i.dx*i.dy/i.value),(o?e:t)(i),h&&(o=u),u}var o,a=ta.layout.hierarchy(),c=Math.round,l=[1,1],s=null,f=Ri,h=!1,g=\"squarify\",p=.5*(1+Math.sqrt(5));\r\nreturn i.size=function(n){return arguments.length?(l=n,i):l},i.padding=function(n){function t(t){var e=n.call(i,t,t.depth);return null==e?Ri(t):Di(t,\"number\"==typeof e?[e,e,e,e]:e)}function e(t){return Di(t,n)}if(!arguments.length)return s;var r;return f=null==(s=n)?Ri:\"function\"==(r=typeof n)?t:\"number\"===r?(n=[n,n,n,n],e):e,i},i.round=function(n){return arguments.length?(c=n?Math.round:Number,i):c!=Number},i.sticky=function(n){return arguments.length?(h=n,o=null,i):h},i.ratio=function(n){return arguments.length?(p=n,i):p},i.mode=function(n){return arguments.length?(g=n+\"\",i):g},Gu(i,a)},ta.random={normal:function(n,t){var e=arguments.length;return 2>e&&(t=1),1>e&&(n=0),function(){var e,r,u;do e=2*Math.random()-1,r=2*Math.random()-1,u=e*e+r*r;while(!u||u>1);return n+t*e*Math.sqrt(-2*Math.log(u)/u)}},logNormal:function(){var n=ta.random.normal.apply(ta,arguments);return function(){return Math.exp(n())}},bates:function(n){var t=ta.random.irwinHall(n);return function(){return t()/n}},irwinHall:function(n){return function(){for(var t=0,e=0;n>e;e++)t+=Math.random();return t}}},ta.scale={};var ml={floor:y,ceil:y};ta.scale.linear=function(){return Ii([0,1],[0,1],mu,!1)};var yl={s:1,g:1,p:1,r:1,e:1};ta.scale.log=function(){return Ji(ta.scale.linear().domain([0,1]),10,!0,[1,10])};var Ml=ta.format(\".0e\"),xl={floor:function(n){return-Math.ceil(-n)},ceil:function(n){return-Math.floor(-n)}};ta.scale.pow=function(){return Gi(ta.scale.linear(),1,[0,1])},ta.scale.sqrt=function(){return ta.scale.pow().exponent(.5)},ta.scale.ordinal=function(){return Qi([],{t:\"range\",a:[[]]})},ta.scale.category10=function(){return ta.scale.ordinal().range(bl)},ta.scale.category20=function(){return ta.scale.ordinal().range(_l)},ta.scale.category20b=function(){return ta.scale.ordinal().range(wl)},ta.scale.category20c=function(){return ta.scale.ordinal().range(Sl)};var bl=[2062260,16744206,2924588,14034728,9725885,9197131,14907330,8355711,12369186,1556175].map(Mt),_l=[2062260,11454440,16744206,16759672,2924588,10018698,14034728,16750742,9725885,12955861,9197131,12885140,14907330,16234194,8355711,13092807,12369186,14408589,1556175,10410725].map(Mt),wl=[3750777,5395619,7040719,10264286,6519097,9216594,11915115,13556636,9202993,12426809,15186514,15190932,8666169,11356490,14049643,15177372,8077683,10834324,13528509,14589654].map(Mt),Sl=[3244733,7057110,10406625,13032431,15095053,16616764,16625259,16634018,3253076,7652470,10607003,13101504,7695281,10394312,12369372,14342891,6513507,9868950,12434877,14277081].map(Mt);ta.scale.quantile=function(){return no([],[])},ta.scale.quantize=function(){return to(0,1,[0,1])},ta.scale.threshold=function(){return eo([.5],[0,1])},ta.scale.identity=function(){return ro([0,1])},ta.svg={},ta.svg.arc=function(){function n(){var n=Math.max(0,+e.apply(this,arguments)),l=Math.max(0,+r.apply(this,arguments)),s=o.apply(this,arguments)-Ra,f=a.apply(this,arguments)-Ra,h=Math.abs(f-s),g=s>f?0:1;if(n>l&&(p=l,l=n,n=p),h>=Ta)return t(l,g)+(n?t(n,1-g):\"\")+\"Z\";var p,v,d,m,y,M,x,b,_,w,S,k,E=0,A=0,N=[];if((m=(+c.apply(this,arguments)||0)/2)&&(d=i===kl?Math.sqrt(n*n+l*l):+i.apply(this,arguments),g||(A*=-1),l&&(A=tt(d/l*Math.sin(m))),n&&(E=tt(d/n*Math.sin(m)))),l){y=l*Math.cos(s+A),M=l*Math.sin(s+A),x=l*Math.cos(f-A),b=l*Math.sin(f-A);var C=Math.abs(f-s-2*A)<=qa?0:1;if(A&&so(y,M,x,b)===g^C){var z=(s+f)/2;y=l*Math.cos(z),M=l*Math.sin(z),x=b=null}}else y=M=0;if(n){_=n*Math.cos(f-E),w=n*Math.sin(f-E),S=n*Math.cos(s+E),k=n*Math.sin(s+E);var q=Math.abs(s-f+2*E)<=qa?0:1;if(E&&so(_,w,S,k)===1-g^q){var L=(s+f)/2;_=n*Math.cos(L),w=n*Math.sin(L),S=k=null}}else _=w=0;if((p=Math.min(Math.abs(l-n)/2,+u.apply(this,arguments)))>.001){v=l>n^g?0:1;var T=null==S?[_,w]:null==x?[y,M]:Lr([y,M],[S,k],[x,b],[_,w]),R=y-T[0],D=M-T[1],P=x-T[0],U=b-T[1],j=1/Math.sin(Math.acos((R*P+D*U)/(Math.sqrt(R*R+D*D)*Math.sqrt(P*P+U*U)))/2),F=Math.sqrt(T[0]*T[0]+T[1]*T[1]);if(null!=x){var H=Math.min(p,(l-F)/(j+1)),O=fo(null==S?[_,w]:[S,k],[y,M],l,H,g),I=fo([x,b],[_,w],l,H,g);p===H?N.push(\"M\",O[0],\"A\",H,\",\",H,\" 0 0,\",v,\" \",O[1],\"A\",l,\",\",l,\" 0 \",1-g^so(O[1][0],O[1][1],I[1][0],I[1][1]),\",\",g,\" \",I[1],\"A\",H,\",\",H,\" 0 0,\",v,\" \",I[0]):N.push(\"M\",O[0],\"A\",H,\",\",H,\" 0 1,\",v,\" \",I[0])}else N.push(\"M\",y,\",\",M);if(null!=S){var Y=Math.min(p,(n-F)/(j-1)),Z=fo([y,M],[S,k],n,-Y,g),V=fo([_,w],null==x?[y,M]:[x,b],n,-Y,g);p===Y?N.push(\"L\",V[0],\"A\",Y,\",\",Y,\" 0 0,\",v,\" \",V[1],\"A\",n,\",\",n,\" 0 \",g^so(V[1][0],V[1][1],Z[1][0],Z[1][1]),\",\",1-g,\" \",Z[1],\"A\",Y,\",\",Y,\" 0 0,\",v,\" \",Z[0]):N.push(\"L\",V[0],\"A\",Y,\",\",Y,\" 0 0,\",v,\" \",Z[0])}else N.push(\"L\",_,\",\",w)}else N.push(\"M\",y,\",\",M),null!=x&&N.push(\"A\",l,\",\",l,\" 0 \",C,\",\",g,\" \",x,\",\",b),N.push(\"L\",_,\",\",w),null!=S&&N.push(\"A\",n,\",\",n,\" 0 \",q,\",\",1-g,\" \",S,\",\",k);return N.push(\"Z\"),N.join(\"\")}function t(n,t){return\"M0,\"+n+\"A\"+n+\",\"+n+\" 0 1,\"+t+\" 0,\"+-n+\"A\"+n+\",\"+n+\" 0 1,\"+t+\" 0,\"+n}var e=io,r=oo,u=uo,i=kl,o=ao,a=co,c=lo;return n.innerRadius=function(t){return arguments.length?(e=Et(t),n):e},n.outerRadius=function(t){return arguments.length?(r=Et(t),n):r},n.cornerRadius=function(t){return arguments.length?(u=Et(t),n):u},n.padRadius=function(t){return arguments.length?(i=t==kl?kl:Et(t),n):i},n.startAngle=function(t){return arguments.length?(o=Et(t),n):o},n.endAngle=function(t){return arguments.length?(a=Et(t),n):a},n.padAngle=function(t){return arguments.length?(c=Et(t),n):c},n.centroid=function(){var n=(+e.apply(this,arguments)+ +r.apply(this,arguments))/2,t=(+o.apply(this,arguments)+ +a.apply(this,arguments))/2-Ra;return[Math.cos(t)*n,Math.sin(t)*n]},n};var kl=\"auto\";ta.svg.line=function(){return ho(y)};var El=ta.map({linear:go,\"linear-closed\":po,step:vo,\"step-before\":mo,\"step-after\":yo,basis:So,\"basis-open\":ko,\"basis-closed\":Eo,bundle:Ao,cardinal:bo,\"cardinal-open\":Mo,\"cardinal-closed\":xo,monotone:To});El.forEach(function(n,t){t.key=n,t.closed=/-closed$/.test(n)});var Al=[0,2/3,1/3,0],Nl=[0,1/3,2/3,0],Cl=[0,1/6,2/3,1/6];ta.svg.line.radial=function(){var n=ho(Ro);return n.radius=n.x,delete n.x,n.angle=n.y,delete n.y,n},mo.reverse=yo,yo.reverse=mo,ta.svg.area=function(){return Do(y)},ta.svg.area.radial=function(){var n=Do(Ro);return n.radius=n.x,delete n.x,n.innerRadius=n.x0,delete n.x0,n.outerRadius=n.x1,delete n.x1,n.angle=n.y,delete n.y,n.startAngle=n.y0,delete n.y0,n.endAngle=n.y1,delete n.y1,n},ta.svg.chord=function(){function n(n,a){var c=t(this,i,n,a),l=t(this,o,n,a);return\"M\"+c.p0+r(c.r,c.p1,c.a1-c.a0)+(e(c,l)?u(c.r,c.p1,c.r,c.p0):u(c.r,c.p1,l.r,l.p0)+r(l.r,l.p1,l.a1-l.a0)+u(l.r,l.p1,c.r,c.p0))+\"Z\"}function t(n,t,e,r){var u=t.call(n,e,r),i=a.call(n,u,r),o=c.call(n,u,r)-Ra,s=l.call(n,u,r)-Ra;return{r:i,a0:o,a1:s,p0:[i*Math.cos(o),i*Math.sin(o)],p1:[i*Math.cos(s),i*Math.sin(s)]}}function e(n,t){return n.a0==t.a0&&n.a1==t.a1}function r(n,t,e){return\"A\"+n+\",\"+n+\" 0 \"+ +(e>qa)+\",1 \"+t}function u(n,t,e,r){return\"Q 0,0 \"+r}var i=mr,o=yr,a=Po,c=ao,l=co;return n.radius=function(t){return arguments.length?(a=Et(t),n):a},n.source=function(t){return arguments.length?(i=Et(t),n):i},n.target=function(t){return arguments.length?(o=Et(t),n):o},n.startAngle=function(t){return arguments.length?(c=Et(t),n):c},n.endAngle=function(t){return arguments.length?(l=Et(t),n):l},n},ta.svg.diagonal=function(){function n(n,u){var i=t.call(this,n,u),o=e.call(this,n,u),a=(i.y+o.y)/2,c=[i,{x:i.x,y:a},{x:o.x,y:a},o];return c=c.map(r),\"M\"+c[0]+\"C\"+c[1]+\" \"+c[2]+\" \"+c[3]}var t=mr,e=yr,r=Uo;return n.source=function(e){return arguments.length?(t=Et(e),n):t},n.target=function(t){return arguments.length?(e=Et(t),n):e},n.projection=function(t){return arguments.length?(r=t,n):r},n},ta.svg.diagonal.radial=function(){var n=ta.svg.diagonal(),t=Uo,e=n.projection;return n.projection=function(n){return arguments.length?e(jo(t=n)):t},n},ta.svg.symbol=function(){function n(n,r){return(zl.get(t.call(this,n,r))||Oo)(e.call(this,n,r))}var t=Ho,e=Fo;return n.type=function(e){return arguments.length?(t=Et(e),n):t},n.size=function(t){return arguments.length?(e=Et(t),n):e},n};var zl=ta.map({circle:Oo,cross:function(n){var t=Math.sqrt(n/5)/2;return\"M\"+-3*t+\",\"+-t+\"H\"+-t+\"V\"+-3*t+\"H\"+t+\"V\"+-t+\"H\"+3*t+\"V\"+t+\"H\"+t+\"V\"+3*t+\"H\"+-t+\"V\"+t+\"H\"+-3*t+\"Z\"},diamond:function(n){var t=Math.sqrt(n/(2*Ll)),e=t*Ll;return\"M0,\"+-t+\"L\"+e+\",0 0,\"+t+\" \"+-e+\",0Z\"},square:function(n){var t=Math.sqrt(n)/2;return\"M\"+-t+\",\"+-t+\"L\"+t+\",\"+-t+\" \"+t+\",\"+t+\" \"+-t+\",\"+t+\"Z\"},\"triangle-down\":function(n){var t=Math.sqrt(n/ql),e=t*ql/2;return\"M0,\"+e+\"L\"+t+\",\"+-e+\" \"+-t+\",\"+-e+\"Z\"},\"triangle-up\":function(n){var t=Math.sqrt(n/ql),e=t*ql/2;return\"M0,\"+-e+\"L\"+t+\",\"+e+\" \"+-t+\",\"+e+\"Z\"}});ta.svg.symbolTypes=zl.keys();var ql=Math.sqrt(3),Ll=Math.tan(30*Da);_a.transition=function(n){for(var t,e,r=Tl||++Ul,u=Xo(n),i=[],o=Rl||{time:Date.now(),ease:Su,delay:0,duration:250},a=-1,c=this.length;++a<c;){i.push(t=[]);for(var l=this[a],s=-1,f=l.length;++s<f;)(e=l[s])&&$o(e,s,u,r,o),t.push(e)}return Yo(i,u,r)},_a.interrupt=function(n){return this.each(null==n?Dl:Io(Xo(n)))};var Tl,Rl,Dl=Io(Xo()),Pl=[],Ul=0;Pl.call=_a.call,Pl.empty=_a.empty,Pl.node=_a.node,Pl.size=_a.size,ta.transition=function(n,t){return n&&n.transition?Tl?n.transition(t):n:ta.selection().transition(n)},ta.transition.prototype=Pl,Pl.select=function(n){var t,e,r,u=this.id,i=this.namespace,o=[];n=N(n);for(var a=-1,c=this.length;++a<c;){o.push(t=[]);for(var l=this[a],s=-1,f=l.length;++s<f;)(r=l[s])&&(e=n.call(r,r.__data__,s,a))?(\"__data__\"in r&&(e.__data__=r.__data__),$o(e,s,i,u,r[i][u]),t.push(e)):t.push(null)}return Yo(o,i,u)},Pl.selectAll=function(n){var t,e,r,u,i,o=this.id,a=this.namespace,c=[];n=C(n);for(var l=-1,s=this.length;++l<s;)for(var f=this[l],h=-1,g=f.length;++h<g;)if(r=f[h]){i=r[a][o],e=n.call(r,r.__data__,h,l),c.push(t=[]);for(var p=-1,v=e.length;++p<v;)(u=e[p])&&$o(u,p,a,o,i),t.push(u)}return Yo(c,a,o)},Pl.filter=function(n){var t,e,r,u=[];\"function\"!=typeof n&&(n=O(n));for(var i=0,o=this.length;o>i;i++){u.push(t=[]);for(var e=this[i],a=0,c=e.length;c>a;a++)(r=e[a])&&n.call(r,r.__data__,a,i)&&t.push(r)}return Yo(u,this.namespace,this.id)},Pl.tween=function(n,t){var e=this.id,r=this.namespace;return arguments.length<2?this.node()[r][e].tween.get(n):Y(this,null==t?function(t){t[r][e].tween.remove(n)}:function(u){u[r][e].tween.set(n,t)})},Pl.attr=function(n,t){function e(){this.removeAttribute(a)}function r(){this.removeAttributeNS(a.space,a.local)}function u(n){return null==n?e:(n+=\"\",function(){var t,e=this.getAttribute(a);return e!==n&&(t=o(e,n),function(n){this.setAttribute(a,t(n))})})}function i(n){return null==n?r:(n+=\"\",function(){var t,e=this.getAttributeNS(a.space,a.local);return e!==n&&(t=o(e,n),function(n){this.setAttributeNS(a.space,a.local,t(n))})})}if(arguments.length<2){for(t in n)this.attr(t,n[t]);return this}var o=\"transform\"==n?Hu:mu,a=ta.ns.qualify(n);return Zo(this,\"attr.\"+n,t,a.local?i:u)},Pl.attrTween=function(n,t){function e(n,e){var r=t.call(this,n,e,this.getAttribute(u));return r&&function(n){this.setAttribute(u,r(n))}}function r(n,e){var r=t.call(this,n,e,this.getAttributeNS(u.space,u.local));return r&&function(n){this.setAttributeNS(u.space,u.local,r(n))}}var u=ta.ns.qualify(n);return this.tween(\"attr.\"+n,u.local?r:e)},Pl.style=function(n,e,r){function u(){this.style.removeProperty(n)}function i(e){return null==e?u:(e+=\"\",function(){var u,i=t(this).getComputedStyle(this,null).getPropertyValue(n);return i!==e&&(u=mu(i,e),function(t){this.style.setProperty(n,u(t),r)})})}var o=arguments.length;if(3>o){if(\"string\"!=typeof n){2>o&&(e=\"\");for(r in n)this.style(r,n[r],e);return this}r=\"\"}return Zo(this,\"style.\"+n,e,i)},Pl.styleTween=function(n,e,r){function u(u,i){var o=e.call(this,u,i,t(this).getComputedStyle(this,null).getPropertyValue(n));return o&&function(t){this.style.setProperty(n,o(t),r)}}return arguments.length<3&&(r=\"\"),this.tween(\"style.\"+n,u)},Pl.text=function(n){return Zo(this,\"text\",n,Vo)},Pl.remove=function(){var n=this.namespace;return this.each(\"end.transition\",function(){var t;this[n].count<2&&(t=this.parentNode)&&t.removeChild(this)})},Pl.ease=function(n){var t=this.id,e=this.namespace;return arguments.length<1?this.node()[e][t].ease:(\"function\"!=typeof n&&(n=ta.ease.apply(ta,arguments)),Y(this,function(r){r[e][t].ease=n}))},Pl.delay=function(n){var t=this.id,e=this.namespace;return arguments.length<1?this.node()[e][t].delay:Y(this,\"function\"==typeof n?function(r,u,i){r[e][t].delay=+n.call(r,r.__data__,u,i)}:(n=+n,function(r){r[e][t].delay=n}))},Pl.duration=function(n){var t=this.id,e=this.namespace;return arguments.length<1?this.node()[e][t].duration:Y(this,\"function\"==typeof n?function(r,u,i){r[e][t].duration=Math.max(1,n.call(r,r.__data__,u,i))}:(n=Math.max(1,n),function(r){r[e][t].duration=n}))},Pl.each=function(n,t){var e=this.id,r=this.namespace;if(arguments.length<2){var u=Rl,i=Tl;try{Tl=e,Y(this,function(t,u,i){Rl=t[r][e],n.call(t,t.__data__,u,i)})}finally{Rl=u,Tl=i}}else Y(this,function(u){var i=u[r][e];(i.event||(i.event=ta.dispatch(\"start\",\"end\",\"interrupt\"))).on(n,t)});return this},Pl.transition=function(){for(var n,t,e,r,u=this.id,i=++Ul,o=this.namespace,a=[],c=0,l=this.length;l>c;c++){a.push(n=[]);for(var t=this[c],s=0,f=t.length;f>s;s++)(e=t[s])&&(r=e[o][u],$o(e,s,o,i,{time:r.time,ease:r.ease,delay:r.delay+r.duration,duration:r.duration})),n.push(e)}return Yo(a,o,i)},ta.svg.axis=function(){function n(n){n.each(function(){var n,l=ta.select(this),s=this.__chart__||e,f=this.__chart__=e.copy(),h=null==c?f.ticks?f.ticks.apply(f,a):f.domain():c,g=null==t?f.tickFormat?f.tickFormat.apply(f,a):y:t,p=l.selectAll(\".tick\").data(h,f),v=p.enter().insert(\"g\",\".domain\").attr(\"class\",\"tick\").style(\"opacity\",Ca),d=ta.transition(p.exit()).style(\"opacity\",Ca).remove(),m=ta.transition(p.order()).style(\"opacity\",1),M=Math.max(u,0)+o,x=Ui(f),b=l.selectAll(\".domain\").data([0]),_=(b.enter().append(\"path\").attr(\"class\",\"domain\"),ta.transition(b));v.append(\"line\"),v.append(\"text\");var w,S,k,E,A=v.select(\"line\"),N=m.select(\"line\"),C=p.select(\"text\").text(g),z=v.select(\"text\"),q=m.select(\"text\"),L=\"top\"===r||\"left\"===r?-1:1;if(\"bottom\"===r||\"top\"===r?(n=Bo,w=\"x\",k=\"y\",S=\"x2\",E=\"y2\",C.attr(\"dy\",0>L?\"0em\":\".71em\").style(\"text-anchor\",\"middle\"),_.attr(\"d\",\"M\"+x[0]+\",\"+L*i+\"V0H\"+x[1]+\"V\"+L*i)):(n=Wo,w=\"y\",k=\"x\",S=\"y2\",E=\"x2\",C.attr(\"dy\",\".32em\").style(\"text-anchor\",0>L?\"end\":\"start\"),_.attr(\"d\",\"M\"+L*i+\",\"+x[0]+\"H0V\"+x[1]+\"H\"+L*i)),A.attr(E,L*u),z.attr(k,L*M),N.attr(S,0).attr(E,L*u),q.attr(w,0).attr(k,L*M),f.rangeBand){var T=f,R=T.rangeBand()/2;s=f=function(n){return T(n)+R}}else s.rangeBand?s=f:d.call(n,f,s);v.call(n,s,f),m.call(n,f,f)})}var t,e=ta.scale.linear(),r=jl,u=6,i=6,o=3,a=[10],c=null;return n.scale=function(t){return arguments.length?(e=t,n):e},n.orient=function(t){return arguments.length?(r=t in Fl?t+\"\":jl,n):r},n.ticks=function(){return arguments.length?(a=arguments,n):a},n.tickValues=function(t){return arguments.length?(c=t,n):c},n.tickFormat=function(e){return arguments.length?(t=e,n):t},n.tickSize=function(t){var e=arguments.length;return e?(u=+t,i=+arguments[e-1],n):u},n.innerTickSize=function(t){return arguments.length?(u=+t,n):u},n.outerTickSize=function(t){return arguments.length?(i=+t,n):i},n.tickPadding=function(t){return arguments.length?(o=+t,n):o},n.tickSubdivide=function(){return arguments.length&&n},n};var jl=\"bottom\",Fl={top:1,right:1,bottom:1,left:1};ta.svg.brush=function(){function n(t){t.each(function(){var t=ta.select(this).style(\"pointer-events\",\"all\").style(\"-webkit-tap-highlight-color\",\"rgba(0,0,0,0)\").on(\"mousedown.brush\",i).on(\"touchstart.brush\",i),o=t.selectAll(\".background\").data([0]);o.enter().append(\"rect\").attr(\"class\",\"background\").style(\"visibility\",\"hidden\").style(\"cursor\",\"crosshair\"),t.selectAll(\".extent\").data([0]).enter().append(\"rect\").attr(\"class\",\"extent\").style(\"cursor\",\"move\");var a=t.selectAll(\".resize\").data(v,y);a.exit().remove(),a.enter().append(\"g\").attr(\"class\",function(n){return\"resize \"+n}).style(\"cursor\",function(n){return Hl[n]}).append(\"rect\").attr(\"x\",function(n){return/[ew]$/.test(n)?-3:null}).attr(\"y\",function(n){return/^[ns]/.test(n)?-3:null}).attr(\"width\",6).attr(\"height\",6).style(\"visibility\",\"hidden\"),a.style(\"display\",n.empty()?\"none\":null);var c,f=ta.transition(t),h=ta.transition(o);l&&(c=Ui(l),h.attr(\"x\",c[0]).attr(\"width\",c[1]-c[0]),r(f)),s&&(c=Ui(s),h.attr(\"y\",c[0]).attr(\"height\",c[1]-c[0]),u(f)),e(f)})}function e(n){n.selectAll(\".resize\").attr(\"transform\",function(n){return\"translate(\"+f[+/e$/.test(n)]+\",\"+h[+/^s/.test(n)]+\")\"})}function r(n){n.select(\".extent\").attr(\"x\",f[0]),n.selectAll(\".extent,.n>rect,.s>rect\").attr(\"width\",f[1]-f[0])}function u(n){n.select(\".extent\").attr(\"y\",h[0]),n.selectAll(\".extent,.e>rect,.w>rect\").attr(\"height\",h[1]-h[0])}function i(){function i(){32==ta.event.keyCode&&(C||(M=null,q[0]-=f[1],q[1]-=h[1],C=2),S())}function v(){32==ta.event.keyCode&&2==C&&(q[0]+=f[1],q[1]+=h[1],C=0,S())}function d(){var n=ta.mouse(b),t=!1;x&&(n[0]+=x[0],n[1]+=x[1]),C||(ta.event.altKey?(M||(M=[(f[0]+f[1])/2,(h[0]+h[1])/2]),q[0]=f[+(n[0]<M[0])],q[1]=h[+(n[1]<M[1])]):M=null),A&&m(n,l,0)&&(r(k),t=!0),N&&m(n,s,1)&&(u(k),t=!0),t&&(e(k),w({type:\"brush\",mode:C?\"move\":\"resize\"}))}function m(n,t,e){var r,u,i=Ui(t),c=i[0],l=i[1],s=q[e],v=e?h:f,d=v[1]-v[0];return C&&(c-=s,l-=d+s),r=(e?p:g)?Math.max(c,Math.min(l,n[e])):n[e],C?u=(r+=s)+d:(M&&(s=Math.max(c,Math.min(l,2*M[e]-r))),r>s?(u=r,r=s):u=s),v[0]!=r||v[1]!=u?(e?a=null:o=null,v[0]=r,v[1]=u,!0):void 0}function y(){d(),k.style(\"pointer-events\",\"all\").selectAll(\".resize\").style(\"display\",n.empty()?\"none\":null),ta.select(\"body\").style(\"cursor\",null),L.on(\"mousemove.brush\",null).on(\"mouseup.brush\",null).on(\"touchmove.brush\",null).on(\"touchend.brush\",null).on(\"keydown.brush\",null).on(\"keyup.brush\",null),z(),w({type:\"brushend\"})}var M,x,b=this,_=ta.select(ta.event.target),w=c.of(b,arguments),k=ta.select(b),E=_.datum(),A=!/^(n|s)$/.test(E)&&l,N=!/^(e|w)$/.test(E)&&s,C=_.classed(\"extent\"),z=W(b),q=ta.mouse(b),L=ta.select(t(b)).on(\"keydown.brush\",i).on(\"keyup.brush\",v);if(ta.event.changedTouches?L.on(\"touchmove.brush\",d).on(\"touchend.brush\",y):L.on(\"mousemove.brush\",d).on(\"mouseup.brush\",y),k.interrupt().selectAll(\"*\").interrupt(),C)q[0]=f[0]-q[0],q[1]=h[0]-q[1];else if(E){var T=+/w$/.test(E),R=+/^n/.test(E);x=[f[1-T]-q[0],h[1-R]-q[1]],q[0]=f[T],q[1]=h[R]}else ta.event.altKey&&(M=q.slice());k.style(\"pointer-events\",\"none\").selectAll(\".resize\").style(\"display\",null),ta.select(\"body\").style(\"cursor\",_.style(\"cursor\")),w({type:\"brushstart\"}),d()}var o,a,c=E(n,\"brushstart\",\"brush\",\"brushend\"),l=null,s=null,f=[0,0],h=[0,0],g=!0,p=!0,v=Ol[0];return n.event=function(n){n.each(function(){var n=c.of(this,arguments),t={x:f,y:h,i:o,j:a},e=this.__chart__||t;this.__chart__=t,Tl?ta.select(this).transition().each(\"start.brush\",function(){o=e.i,a=e.j,f=e.x,h=e.y,n({type:\"brushstart\"})}).tween(\"brush:brush\",function(){var e=yu(f,t.x),r=yu(h,t.y);return o=a=null,function(u){f=t.x=e(u),h=t.y=r(u),n({type:\"brush\",mode:\"resize\"})}}).each(\"end.brush\",function(){o=t.i,a=t.j,n({type:\"brush\",mode:\"resize\"}),n({type:\"brushend\"})}):(n({type:\"brushstart\"}),n({type:\"brush\",mode:\"resize\"}),n({type:\"brushend\"}))})},n.x=function(t){return arguments.length?(l=t,v=Ol[!l<<1|!s],n):l},n.y=function(t){return arguments.length?(s=t,v=Ol[!l<<1|!s],n):s},n.clamp=function(t){return arguments.length?(l&&s?(g=!!t[0],p=!!t[1]):l?g=!!t:s&&(p=!!t),n):l&&s?[g,p]:l?g:s?p:null},n.extent=function(t){var e,r,u,i,c;return arguments.length?(l&&(e=t[0],r=t[1],s&&(e=e[0],r=r[0]),o=[e,r],l.invert&&(e=l(e),r=l(r)),e>r&&(c=e,e=r,r=c),(e!=f[0]||r!=f[1])&&(f=[e,r])),s&&(u=t[0],i=t[1],l&&(u=u[1],i=i[1]),a=[u,i],s.invert&&(u=s(u),i=s(i)),u>i&&(c=u,u=i,i=c),(u!=h[0]||i!=h[1])&&(h=[u,i])),n):(l&&(o?(e=o[0],r=o[1]):(e=f[0],r=f[1],l.invert&&(e=l.invert(e),r=l.invert(r)),e>r&&(c=e,e=r,r=c))),s&&(a?(u=a[0],i=a[1]):(u=h[0],i=h[1],s.invert&&(u=s.invert(u),i=s.invert(i)),u>i&&(c=u,u=i,i=c))),l&&s?[[e,u],[r,i]]:l?[e,r]:s&&[u,i])},n.clear=function(){return n.empty()||(f=[0,0],h=[0,0],o=a=null),n},n.empty=function(){return!!l&&f[0]==f[1]||!!s&&h[0]==h[1]},ta.rebind(n,c,\"on\")};var Hl={n:\"ns-resize\",e:\"ew-resize\",s:\"ns-resize\",w:\"ew-resize\",nw:\"nwse-resize\",ne:\"nesw-resize\",se:\"nwse-resize\",sw:\"nesw-resize\"},Ol=[[\"n\",\"e\",\"s\",\"w\",\"nw\",\"ne\",\"se\",\"sw\"],[\"e\",\"w\"],[\"n\",\"s\"],[]],Il=ac.format=gc.timeFormat,Yl=Il.utc,Zl=Yl(\"%Y-%m-%dT%H:%M:%S.%LZ\");Il.iso=Date.prototype.toISOString&&+new Date(\"2000-01-01T00:00:00.000Z\")?Jo:Zl,Jo.parse=function(n){var t=new Date(n);return isNaN(t)?null:t},Jo.toString=Zl.toString,ac.second=Ft(function(n){return new cc(1e3*Math.floor(n/1e3))},function(n,t){n.setTime(n.getTime()+1e3*Math.floor(t))},function(n){return n.getSeconds()}),ac.seconds=ac.second.range,ac.seconds.utc=ac.second.utc.range,ac.minute=Ft(function(n){return new cc(6e4*Math.floor(n/6e4))},function(n,t){n.setTime(n.getTime()+6e4*Math.floor(t))},function(n){return n.getMinutes()}),ac.minutes=ac.minute.range,ac.minutes.utc=ac.minute.utc.range,ac.hour=Ft(function(n){var t=n.getTimezoneOffset()/60;return new cc(36e5*(Math.floor(n/36e5-t)+t))},function(n,t){n.setTime(n.getTime()+36e5*Math.floor(t))},function(n){return n.getHours()}),ac.hours=ac.hour.range,ac.hours.utc=ac.hour.utc.range,ac.month=Ft(function(n){return n=ac.day(n),n.setDate(1),n},function(n,t){n.setMonth(n.getMonth()+t)},function(n){return n.getMonth()}),ac.months=ac.month.range,ac.months.utc=ac.month.utc.range;var Vl=[1e3,5e3,15e3,3e4,6e4,3e5,9e5,18e5,36e5,108e5,216e5,432e5,864e5,1728e5,6048e5,2592e6,7776e6,31536e6],Xl=[[ac.second,1],[ac.second,5],[ac.second,15],[ac.second,30],[ac.minute,1],[ac.minute,5],[ac.minute,15],[ac.minute,30],[ac.hour,1],[ac.hour,3],[ac.hour,6],[ac.hour,12],[ac.day,1],[ac.day,2],[ac.week,1],[ac.month,1],[ac.month,3],[ac.year,1]],$l=Il.multi([[\".%L\",function(n){return n.getMilliseconds()}],[\":%S\",function(n){return n.getSeconds()}],[\"%I:%M\",function(n){return n.getMinutes()}],[\"%I %p\",function(n){return n.getHours()}],[\"%a %d\",function(n){return n.getDay()&&1!=n.getDate()}],[\"%b %d\",function(n){return 1!=n.getDate()}],[\"%B\",function(n){return n.getMonth()}],[\"%Y\",Ne]]),Bl={range:function(n,t,e){return ta.range(Math.ceil(n/e)*e,+t,e).map(Ko)},floor:y,ceil:y};Xl.year=ac.year,ac.scale=function(){return Go(ta.scale.linear(),Xl,$l)};var Wl=Xl.map(function(n){return[n[0].utc,n[1]]}),Jl=Yl.multi([[\".%L\",function(n){return n.getUTCMilliseconds()}],[\":%S\",function(n){return n.getUTCSeconds()}],[\"%I:%M\",function(n){return n.getUTCMinutes()}],[\"%I %p\",function(n){return n.getUTCHours()}],[\"%a %d\",function(n){return n.getUTCDay()&&1!=n.getUTCDate()}],[\"%b %d\",function(n){return 1!=n.getUTCDate()}],[\"%B\",function(n){return n.getUTCMonth()}],[\"%Y\",Ne]]);Wl.year=ac.year.utc,ac.scale.utc=function(){return Go(ta.scale.linear(),Wl,Jl)},ta.text=At(function(n){return n.responseText}),ta.json=function(n,t){return Nt(n,\"application/json\",Qo,t)},ta.html=function(n,t){return Nt(n,\"text/html\",na,t)},ta.xml=At(function(n){return n.responseXML}),\"function\"==typeof define&&define.amd?define(ta):\"object\"==typeof module&&module.exports&&(module.exports=ta),this.d3=ta}();;/**\r\n * @license\r\n * lodash 3.6.0 (Custom Build) lodash.com/license | Underscore.js 1.8.2 underscorejs.org/LICENSE\r\n * Build: `lodash compat -o ./lodash.js`\r\n */\r\n;(function(){function n(n,t){if(n!==t){var r=n===n,e=t===t;if(n>t||!r||typeof n==\"undefined\"&&e)return 1;if(n<t||!e||typeof t==\"undefined\"&&r)return-1}return 0}function t(n,t,r){for(var e=n.length,u=r?e:-1;r?u--:++u<e;)if(t(n[u],u,n))return u;return-1}function r(n,t,r){if(t!==t)return p(n,r);r-=1;for(var e=n.length;++r<e;)if(n[r]===t)return r;return-1}function e(n){return typeof n==\"function\"||false}function u(n){return typeof n==\"string\"?n:null==n?\"\":n+\"\"}function o(n){return n.charCodeAt(0)}function i(n,t){for(var r=-1,e=n.length;++r<e&&-1<t.indexOf(n.charAt(r)););return r\r\n}function f(n,t){for(var r=n.length;r--&&-1<t.indexOf(n.charAt(r)););return r}function a(t,r){return n(t.a,r.a)||t.b-r.b}function c(n){return Ut[n]}function l(n){return Ft[n]}function s(n){return\"\\\\\"+Lt[n]}function p(n,t,r){var e=n.length;for(t+=r?0:-1;r?t--:++t<e;){var u=n[t];if(u!==u)return t}return-1}function h(n){return!!n&&typeof n==\"object\"}function _(n){return 160>=n&&9<=n&&13>=n||32==n||160==n||5760==n||6158==n||8192<=n&&(8202>=n||8232==n||8233==n||8239==n||8287==n||12288==n||65279==n)}function g(n,t){for(var r=-1,e=n.length,u=-1,o=[];++r<e;)n[r]===t&&(n[r]=P,o[++u]=r);\r\nreturn o}function v(n){for(var t=-1,r=n.length;++t<r&&_(n.charCodeAt(t)););return t}function y(n){for(var t=n.length;t--&&_(n.charCodeAt(t)););return t}function d(n){return Wt[n]}function m(_){function Ut(n){if(h(n)&&!(yi(n)||n instanceof Nt)){if(n instanceof Wt)return n;if(Pu.call(n,\"__chain__\")&&Pu.call(n,\"__wrapped__\"))return ke(n)}return new Wt(n)}function Ft(){}function Wt(n,t,r){this.__wrapped__=n,this.__actions__=r||[],this.__chain__=!!t}function Nt(n){this.__wrapped__=n,this.__actions__=null,this.__dir__=1,this.__filtered__=false,this.__iteratees__=null,this.__takeCount__=go,this.__views__=null\r\n}function Lt(){this.__data__={}}function $t(n){var t=n?n.length:0;for(this.data={hash:oo(null),set:new Hu};t--;)this.push(n[t])}function Pt(n,t){var r=n.data;return(typeof t==\"string\"||nu(t)?r.set.has(t):r.hash[t])?0:-1}function Bt(n,t){var r=-1,e=n.length;for(t||(t=xu(e));++r<e;)t[r]=n[r];return t}function zt(n,t){for(var r=-1,e=n.length;++r<e&&false!==t(n[r],r,n););return n}function Kt(n,t){for(var r=-1,e=n.length;++r<e;)if(!t(n[r],r,n))return false;return true}function Vt(n,t){for(var r=-1,e=n.length,u=-1,o=[];++r<e;){var i=n[r];\r\nt(i,r,n)&&(o[++u]=i)}return o}function Yt(n,t){for(var r=-1,e=n.length,u=xu(e);++r<e;)u[r]=t(n[r],r,n);return u}function Zt(n){for(var t=-1,r=n.length,e=_o;++t<r;){var u=n[t];u>e&&(e=u)}return e}function Gt(n,t){for(var r=-1,e=n.length;++r<e;)if(t(n[r],r,n))return true;return false}function Jt(n,t){return typeof n==\"undefined\"?t:n}function Xt(n,t,r,e){return typeof n!=\"undefined\"&&Pu.call(e,r)?n:t}function Ht(n,t,r){var e=Ri(t);if(!r)return nr(t,n,e);for(var u=-1,o=e.length;++u<o;){var i=e[u],f=n[i],a=r(f,t[i],i,n,t);\r\n(a===a?a===f:f!==f)&&(typeof f!=\"undefined\"||i in n)||(n[i]=a)}return n}function Qt(n,t){for(var r=-1,e=n.length,u=we(e),o=t.length,i=xu(o);++r<o;){var f=t[r];u?(f=parseFloat(f),i[r]=ye(f,e)?n[f]:w):i[r]=n[f]}return i}function nr(n,t,r){r||(r=t,t={});for(var e=-1,u=r.length;++e<u;){var o=r[e];t[o]=n[o]}return t}function tr(n,t,r){var e=typeof n;return\"function\"==e?typeof t==\"undefined\"?n:Fr(n,t,r):null==n?du:\"object\"==e?yr(n):typeof t==\"undefined\"?wr(n+\"\"):dr(n+\"\",t)}function rr(n,t,r,e,u,o,i){var f;\r\nif(r&&(f=u?r(n,e,u):r(n)),typeof f!=\"undefined\")return f;if(!nu(n))return n;if(e=yi(n)){if(f=_e(n),!t)return Bt(n,f)}else{var a=zu.call(n),c=a==K;if(a!=Y&&a!=B&&(!c||u))return Ct[a]?ve(n,a,t):u?n:{};if(Dt(n))return u?n:{};if(f=ge(c?{}:n),!t)return nr(n,f,Ri(n))}for(o||(o=[]),i||(i=[]),u=o.length;u--;)if(o[u]==n)return i[u];return o.push(n),i.push(f),(e?zt:lr)(n,function(e,u){f[u]=rr(e,t,r,u,n,o,i)}),f}function er(n,t,r){if(typeof n!=\"function\")throw new Cu($);return Qu(function(){n.apply(w,r)},t)\r\n}function ur(n,t){var e=n?n.length:0,u=[];if(!e)return u;var o=-1,i=he(),f=i==r,a=f&&200<=t.length?Uo(t):null,c=t.length;a&&(i=Pt,f=false,t=a);n:for(;++o<e;)if(a=n[o],f&&a===a){for(var l=c;l--;)if(t[l]===a)continue n;u.push(a)}else 0>i(t,a,0)&&u.push(a);return u}function or(n,t){var r=true;return ko(n,function(n,e,u){return r=!!t(n,e,u)}),r}function ir(n,t){var r=[];return ko(n,function(n,e,u){t(n,e,u)&&r.push(n)}),r}function fr(n,t,r,e){var u;return r(n,function(n,r,o){return t(n,r,o)?(u=e?r:n,false):void 0\r\n}),u}function ar(n,t,r){for(var e=-1,u=n.length,o=-1,i=[];++e<u;){var f=n[e];if(h(f)&&we(f.length)&&(yi(f)||Xe(f))){t&&(f=ar(f,t,r));var a=-1,c=f.length;for(i.length+=c;++a<c;)i[++o]=f[a]}else r||(i[++o]=f)}return i}function cr(n,t){So(n,t,au)}function lr(n,t){return So(n,t,Ri)}function sr(n,t){return Co(n,t,Ri)}function pr(n,t){for(var r=-1,e=t.length,u=-1,o=[];++r<e;){var i=t[r];mi(n[i])&&(o[++u]=i)}return o}function hr(n,t,r,e,u,o){if(n===t)return 0!==n||1/n==1/t;var i=typeof n,f=typeof t;return\"function\"!=i&&\"object\"!=i&&\"function\"!=f&&\"object\"!=f||null==n||null==t?n!==n&&t!==t:_r(n,t,hr,r,e,u,o)\r\n}function _r(n,t,r,e,u,o,i){var f=yi(n),a=yi(t),c=z,l=z;f||(c=zu.call(n),c==B?c=Y:c!=Y&&(f=ou(n))),a||(l=zu.call(t),l==B?l=Y:l!=Y&&ou(t));var s=(c==Y||u&&c==K)&&!Dt(n),a=(l==Y||u&&l==K)&&!Dt(t);if((l=c==l)&&!f&&!s)return ce(n,t,c);if(u){if(!(l||s&&a))return false}else{if(c=s&&Pu.call(n,\"__wrapped__\"),a=a&&Pu.call(t,\"__wrapped__\"),c||a)return r(c?n.value():n,a?t.value():t,e,u,o,i);if(!l)return false}for(o||(o=[]),i||(i=[]),c=o.length;c--;)if(o[c]==n)return i[c]==t;return o.push(n),i.push(t),n=(f?ae:le)(n,t,r,e,u,o,i),o.pop(),i.pop(),n\r\n}function gr(n,t,r,e,u){for(var o=-1,i=t.length,f=!u;++o<i;)if(f&&e[o]?r[o]!==n[t[o]]:!(t[o]in n))return false;for(o=-1;++o<i;){var a=t[o],c=n[a],l=r[o];if(f&&e[o]?a=typeof c!=\"undefined\"||a in n:(a=u?u(c,l,a):w,typeof a==\"undefined\"&&(a=hr(l,c,u,true))),!a)return false}return true}function vr(n,t){var r=[];return ko(n,function(n,e,u){r.push(t(n,e,u))}),r}function yr(n){var t=Ri(n),r=t.length;if(!r)return yu(true);if(1==r){var e=t[0],u=n[e];if(be(u))return function(n){return null!=n&&n[e]===u&&(typeof u!=\"undefined\"||e in Ie(n))\r\n}}for(var o=xu(r),i=xu(r);r--;)u=n[t[r]],o[r]=u,i[r]=be(u);return function(n){return null!=n&&gr(Ie(n),t,o,i)}}function dr(n,t){return be(t)?function(r){return null!=r&&r[n]===t&&(typeof t!=\"undefined\"||n in Ie(r))}:function(r){return null!=r&&hr(t,r[n],null,true)}}function mr(n,t,r,e,u){if(!nu(n))return n;var o=we(t.length)&&(yi(t)||ou(t));return(o?zt:lr)(t,function(t,i,f){if(h(t)){e||(e=[]),u||(u=[]);n:{t=e;for(var a=u,c=t.length,l=f[i];c--;)if(t[c]==l){n[i]=a[c],i=void 0;break n}c=n[i],f=r?r(c,l,i,n,f):w;\r\nvar s=typeof f==\"undefined\";s&&(f=l,we(l.length)&&(yi(l)||ou(l))?f=yi(c)?c:c&&c.length?Bt(c):[]:wi(l)||Xe(l)?f=Xe(c)?iu(c):wi(c)?c:{}:s=false),t.push(l),a.push(f),s?n[i]=mr(f,l,r,t,a):(f===f?f!==c:c===c)&&(n[i]=f),i=void 0}return i}a=n[i],f=r?r(a,t,i,n,f):w,(l=typeof f==\"undefined\")&&(f=t),!o&&typeof f==\"undefined\"||!l&&(f===f?f===a:a!==a)||(n[i]=f)}),n}function wr(n){return function(t){return null==t?w:t[n]}}function br(n,t){return n+Zu(ho()*(t-n+1))}function xr(n,t,r,e,u){return u(n,function(n,u,o){r=e?(e=false,n):t(r,n,u,o)\r\n}),r}function Ar(n,t,r){var e=-1,u=n.length;for(t=null==t?0:+t||0,0>t&&(t=-t>u?0:u+t),r=typeof r==\"undefined\"||r>u?u:+r||0,0>r&&(r+=u),u=t>r?0:r-t>>>0,t>>>=0,r=xu(u);++e<u;)r[e]=n[e+t];return r}function jr(n,t){var r;return ko(n,function(n,e,u){return r=t(n,e,u),!r}),!!r}function Or(n,t){var r=n.length;for(n.sort(t);r--;)n[r]=n[r].c;return n}function Er(t,r,e){var u=-1,o=t.length,i=we(o)?xu(o):[];return ko(t,function(n){for(var t=r.length,e=xu(t);t--;)e[t]=null==n?w:n[r[t]];i[++u]={a:e,b:u,c:n}}),Or(i,function(t,r){var u;\r\nn:{u=-1;for(var o=t.a,i=r.a,f=o.length,a=e.length;++u<f;){var c=n(o[u],i[u]);if(c){u=u<a?c*(e[u]?1:-1):c;break n}}u=t.b-r.b}return u})}function Ir(n,t){var r=0;return ko(n,function(n,e,u){r+=+t(n,e,u)||0}),r}function kr(n,t){var e=-1,u=he(),o=n.length,i=u==r,f=i&&200<=o,a=f?Uo():null,c=[];a?(u=Pt,i=false):(f=false,a=t?[]:c);n:for(;++e<o;){var l=n[e],s=t?t(l,e,n):l;if(i&&l===l){for(var p=a.length;p--;)if(a[p]===s)continue n;t&&a.push(s),c.push(l)}else 0>u(a,s,0)&&((t||f)&&a.push(s),c.push(l))}return c}function Rr(n,t){for(var r=-1,e=t.length,u=xu(e);++r<e;)u[r]=n[t[r]];\r\nreturn u}function Sr(n,t,r,e){for(var u=n.length,o=e?u:-1;(e?o--:++o<u)&&t(n[o],o,n););return r?Ar(n,e?0:o,e?o+1:u):Ar(n,e?o+1:0,e?u:o)}function Cr(n,t){var r=n;r instanceof Nt&&(r=r.value());for(var e=-1,u=t.length;++e<u;){var r=[r],o=t[e];Ju.apply(r,o.args),r=o.func.apply(o.thisArg,r)}return r}function Tr(n,t,r){var e=0,u=n?n.length:e;if(typeof t==\"number\"&&t===t&&u<=mo){for(;e<u;){var o=e+u>>>1,i=n[o];(r?i<=t:i<t)?e=o+1:u=o}return u}return Ur(n,t,du,r)}function Ur(n,t,r,e){t=r(t);for(var u=0,o=n?n.length:0,i=t!==t,f=typeof t==\"undefined\";u<o;){var a=Zu((u+o)/2),c=r(n[a]),l=c===c;\r\n(i?l||e:f?l&&(e||typeof c!=\"undefined\"):e?c<=t:c<t)?u=a+1:o=a}return co(o,yo)}function Fr(n,t,r){if(typeof n!=\"function\")return du;if(typeof t==\"undefined\")return n;switch(r){case 1:return function(r){return n.call(t,r)};case 3:return function(r,e,u){return n.call(t,r,e,u)};case 4:return function(r,e,u,o){return n.call(t,r,e,u,o)};case 5:return function(r,e,u,o,i){return n.call(t,r,e,u,o,i)}}return function(){return n.apply(t,arguments)}}function Wr(n){return Ku.call(n,0)}function Nr(n,t,r){for(var e=r.length,u=-1,o=ao(n.length-e,0),i=-1,f=t.length,a=xu(o+f);++i<f;)a[i]=t[i];\r\nfor(;++u<e;)a[r[u]]=n[u];for(;o--;)a[i++]=n[u++];return a}function Lr(n,t,r){for(var e=-1,u=r.length,o=-1,i=ao(n.length-u,0),f=-1,a=t.length,c=xu(i+a);++o<i;)c[o]=n[o];for(i=o;++f<a;)c[i+f]=t[f];for(;++e<u;)c[i+r[e]]=n[o++];return c}function $r(n,t){return function(r,e,u){var o=t?t():{};if(e=pe(e,u,3),yi(r)){u=-1;for(var i=r.length;++u<i;){var f=r[u];n(o,f,e(f,u,r),r)}}else ko(r,function(t,r,u){n(o,t,e(t,r,u),u)});return o}}function Pr(n){return function(){var t=arguments,r=t.length,e=t[0];if(2>r||null==e)return e;\r\nvar u=t[r-2],o=t[r-1],i=t[3];for(3<r&&typeof u==\"function\"?(u=Fr(u,o,5),r-=2):(u=2<r&&typeof o==\"function\"?o:null,r-=u?1:0),i&&de(t[1],t[2],i)&&(u=3==r?null:u,r=2),o=0;++o<r;)(i=t[o])&&n(e,i,u);return e}}function Br(n,t){return function(r,e){var u=r?r.length:0;if(!we(u))return n(r,e);for(var o=t?u:-1,i=Ie(r);(t?o--:++o<u)&&false!==e(i[o],o,i););return r}}function zr(n){return function(t,r,e){var u=Ie(t);e=e(t);for(var o=e.length,i=n?o:-1;n?i--:++i<o;){var f=e[i];if(false===r(u[f],f,u))break}return t}}function Mr(n,t){function r(){return(this&&this!==Mt&&this instanceof r?e:n).apply(t,arguments)\r\n}var e=qr(n);return r}function Dr(n){return function(t){var r=-1;t=gu(lu(t));for(var e=t.length,u=\"\";++r<e;)u=n(u,t[r],r);return u}}function qr(n){return function(){var t=Io(n.prototype),r=n.apply(t,arguments);return nu(r)?r:t}}function Kr(n){function t(r,e,u){return u&&de(r,e,u)&&(e=null),r=fe(r,n,null,null,null,null,null,e),r.placeholder=t.placeholder,r}return t}function Vr(n,t){return function(r,e,u){u&&de(r,e,u)&&(e=null);var i=pe(),f=null==e;if(i===tr&&f||(f=false,e=i(e,u,3)),f){if(e=yi(r),e||!uu(r))return n(e?r:Ee(r));\r\ne=o}return se(r,e,t)}}function Yr(n,r){return function(e,u,o){return u=pe(u,o,3),yi(e)?(u=t(e,u,r),-1<u?e[u]:w):fr(e,u,n)}}function Zr(n){return function(r,e,u){return r&&r.length?(e=pe(e,u,3),t(r,e,n)):-1}}function Gr(n){return function(t,r,e){return r=pe(r,e,3),fr(t,r,n,true)}}function Jr(n){return function(){var t=arguments.length;if(!t)return function(){return arguments[0]};for(var r,e=n?t:-1,u=0,o=xu(t);n?e--:++e<t;){var i=o[u++]=arguments[e];if(typeof i!=\"function\")throw new Cu($);var f=r?\"\":Wo(i);\r\nr=\"wrapper\"==f?new Wt([]):r}for(e=r?-1:t;++e<t;)i=o[e],f=Wo(i),r=(u=\"wrapper\"==f?Fo(i):null)&&me(u[0])?r[Wo(u[0])].apply(r,u[3]):1==i.length&&me(i)?r[f]():r.thru(i);return function(){var n=arguments;if(r&&1==n.length&&yi(n[0]))return r.plant(n[0]).value();for(var e=0,n=o[e].apply(this,n);++e<t;)n=o[e].call(this,n);return n}}}function Xr(n,t){return function(r,e,u){return typeof e==\"function\"&&typeof u==\"undefined\"&&yi(r)?n(r,e):t(r,Fr(e,u,3))}}function Hr(n){return function(t,r,e){return(typeof r!=\"function\"||typeof e!=\"undefined\")&&(r=Fr(r,e,3)),n(t,r,au)\r\n}}function Qr(n){return function(t,r,e){return(typeof r!=\"function\"||typeof e!=\"undefined\")&&(r=Fr(r,e,3)),n(t,r)}}function ne(n){return function(t,r,e){return(t=u(t))&&(n?t:\"\")+ue(t,r,e)+(n?\"\":t)}}function te(n){var t=Je(function(r,e){var u=g(e,t.placeholder);return fe(r,n,null,e,u)});return t}function re(n,t){return function(r,e,u,o){var i=3>arguments.length;return typeof e==\"function\"&&typeof o==\"undefined\"&&yi(r)?n(r,e,u,i):xr(r,pe(e,o,4),u,i,t)}}function ee(n,t,r,e,u,o,i,f,a,c){function l(){for(var b=arguments.length,j=b,O=xu(b);j--;)O[j]=arguments[j];\r\nif(e&&(O=Nr(O,e,u)),o&&(O=Lr(O,o,i)),_||y){var j=l.placeholder,E=g(O,j),b=b-E.length;if(b<c){var R=f?Bt(f):null,b=ao(c-b,0),S=_?E:null,E=_?null:E,C=_?O:null,O=_?null:O;return t|=_?I:k,t&=~(_?k:I),v||(t&=~(x|A)),O=[n,t,r,C,S,O,E,R,a,b],R=ee.apply(w,O),me(n)&&No(R,O),R.placeholder=j,R}}if(j=p?r:this,h&&(n=j[m]),f)for(R=O.length,b=co(f.length,R),S=Bt(O);b--;)E=f[b],O[b]=ye(E,R)?S[E]:w;return s&&a<O.length&&(O.length=a),(this&&this!==Mt&&this instanceof l?d||qr(n):n).apply(j,O)}var s=t&R,p=t&x,h=t&A,_=t&O,v=t&j,y=t&E,d=!h&&qr(n),m=n;\r\nreturn l}function ue(n,t,r){return n=n.length,t=+t,n<t&&io(t)?(t-=n,r=null==r?\" \":r+\"\",hu(r,Vu(t/r.length)).slice(0,t)):\"\"}function oe(n,t,r,e){function u(){for(var t=-1,f=arguments.length,a=-1,c=e.length,l=xu(f+c);++a<c;)l[a]=e[a];for(;f--;)l[a++]=arguments[++t];return(this&&this!==Mt&&this instanceof u?i:n).apply(o?r:this,l)}var o=t&x,i=qr(n);return u}function ie(n){return function(t,r,e,u){var o=pe(e);return o===tr&&null==e?Tr(t,r,n):Ur(t,r,o(e,u,1),n)}}function fe(n,t,r,e,u,o,i,f){var a=t&A;if(!a&&typeof n!=\"function\")throw new Cu($);\r\nvar c=e?e.length:0;if(c||(t&=~(I|k),e=u=null),c-=u?u.length:0,t&k){var l=e,s=u;e=u=null}var p=a?null:Fo(n);return r=[n,t,r,e,u,l,s,o,i,f],p&&(e=r[1],t=p[1],f=e|t,u=t==R&&e==O||t==R&&e==S&&r[7].length<=p[8]||t==(R|S)&&e==O,(f<R||u)&&(t&x&&(r[2]=p[2],f|=e&x?0:j),(e=p[3])&&(u=r[3],r[3]=u?Nr(u,e,p[4]):Bt(e),r[4]=u?g(r[3],P):Bt(p[4])),(e=p[5])&&(u=r[5],r[5]=u?Lr(u,e,p[6]):Bt(e),r[6]=u?g(r[5],P):Bt(p[6])),(e=p[7])&&(r[7]=Bt(e)),t&R&&(r[8]=null==r[8]?p[8]:co(r[8],p[8])),null==r[9]&&(r[9]=p[9]),r[0]=p[0],r[1]=f),t=r[1],f=r[9]),r[9]=null==f?a?0:n.length:ao(f-c,0)||0,(p?To:No)(t==x?Mr(r[0],r[2]):t!=I&&t!=(x|I)||r[4].length?ee.apply(w,r):oe.apply(w,r),r)\r\n}function ae(n,t,r,e,u,o,i){var f=-1,a=n.length,c=t.length,l=true;if(a!=c&&(!u||c<=a))return false;for(;l&&++f<a;){var s=n[f],p=t[f],l=w;if(e&&(l=u?e(p,s,f):e(s,p,f)),typeof l==\"undefined\")if(u)for(var h=c;h--&&(p=t[h],!(l=s&&s===p||r(s,p,e,u,o,i))););else l=s&&s===p||r(s,p,e,u,o,i)}return!!l}function ce(n,t,r){switch(r){case M:case D:return+n==+t;case q:return n.name==t.name&&n.message==t.message;case V:return n!=+n?t!=+t:0==n?1/n==1/t:n==+t;case Z:case G:return n==t+\"\"}return false}function le(n,t,r,e,u,o,i){var f=Ri(n),a=f.length,c=Ri(t).length;\r\nif(a!=c&&!u)return false;for(var c=u,l=-1;++l<a;){var s=f[l],p=u?s in t:Pu.call(t,s);if(p){var h=n[s],_=t[s],p=w;e&&(p=u?e(_,h,s):e(h,_,s)),typeof p==\"undefined\"&&(p=h&&h===_||r(h,_,e,u,o,i))}if(!p)return false;c||(c=\"constructor\"==s)}return c||(r=n.constructor,e=t.constructor,!(r!=e&&\"constructor\"in n&&\"constructor\"in t)||typeof r==\"function\"&&r instanceof r&&typeof e==\"function\"&&e instanceof e)?true:false}function se(n,t,r){var e=r?go:_o,u=e,o=u;return ko(n,function(n,i,f){i=t(n,i,f),((r?i<u:i>u)||i===e&&i===o)&&(u=i,o=n)\r\n}),o}function pe(n,t,r){var e=Ut.callback||vu,e=e===vu?tr:e;return r?e(n,t,r):e}function he(n,t,e){var u=Ut.indexOf||Te,u=u===Te?r:u;return n?u(n,t,e):u}function _e(n){var t=n.length,r=new n.constructor(t);return t&&\"string\"==typeof n[0]&&Pu.call(n,\"index\")&&(r.index=n.index,r.input=n.input),r}function ge(n){return n=n.constructor,typeof n==\"function\"&&n instanceof n||(n=ku),new n}function ve(n,t,r){var e=n.constructor;switch(t){case J:return Wr(n);case M:case D:return new e(+n);case X:case H:case Q:case nt:case tt:case rt:case et:case ut:case ot:return e instanceof e&&(e=jo[t]),t=n.buffer,new e(r?Wr(t):t,n.byteOffset,n.length);\r\ncase V:case G:return new e(n);case Z:var u=new e(n.source,dt.exec(n));u.lastIndex=n.lastIndex}return u}function ye(n,t){return n=+n,t=null==t?bo:t,-1<n&&0==n%1&&n<t}function de(n,t,r){if(!nu(r))return false;var e=typeof t;return\"number\"==e?(e=r.length,e=we(e)&&ye(t,e)):e=\"string\"==e&&t in r,e?(t=r[t],n===n?n===t:t!==t):false}function me(n){var t=Wo(n);return!!t&&n===Ut[t]&&t in Nt.prototype}function we(n){return typeof n==\"number\"&&-1<n&&0==n%1&&n<=bo}function be(n){return n===n&&(0===n?0<1/n:!nu(n))}function xe(n,t){n=Ie(n);\r\nfor(var r=-1,e=t.length,u={};++r<e;){var o=t[r];o in n&&(u[o]=n[o])}return u}function Ae(n,t){var r={};return cr(n,function(n,e,u){t(n,e,u)&&(r[e]=n)}),r}function je(n){var t,r=Ut.support;if(!h(n)||zu.call(n)!=Y||Dt(n)||!(Pu.call(n,\"constructor\")||(t=n.constructor,typeof t!=\"function\"||t instanceof t))||!r.argsTag&&Xe(n))return false;var e;return r.ownLast?(cr(n,function(n,t,r){return e=Pu.call(r,t),false}),false!==e):(cr(n,function(n,t){e=t}),typeof e==\"undefined\"||Pu.call(n,e))}function Oe(n){for(var t=au(n),r=t.length,e=r&&n.length,u=Ut.support,u=e&&we(e)&&(yi(n)||u.nonEnumStrings&&uu(n)||u.nonEnumArgs&&Xe(n)),o=-1,i=[];++o<r;){var f=t[o];\r\n(u&&ye(f,e)||Pu.call(n,f))&&i.push(f)}return i}function Ee(n){return null==n?[]:we(n.length)?Ut.support.unindexedChars&&uu(n)?n.split(\"\"):nu(n)?n:ku(n):cu(n)}function Ie(n){if(Ut.support.unindexedChars&&uu(n)){for(var t=-1,r=n.length,e=ku(n);++t<r;)e[t]=n.charAt(t);return e}return nu(n)?n:ku(n)}function ke(n){return n instanceof Nt?n.clone():new Wt(n.__wrapped__,n.__chain__,Bt(n.__actions__))}function Re(n,t,r){return n&&n.length?((r?de(n,t,r):null==t)&&(t=1),Ar(n,0>t?0:t)):[]}function Se(n,t,r){var e=n?n.length:0;\r\nreturn e?((r?de(n,t,r):null==t)&&(t=1),t=e-(+t||0),Ar(n,0,0>t?0:t)):[]}function Ce(n){return n?n[0]:w}function Te(n,t,e){var u=n?n.length:0;if(!u)return-1;if(typeof e==\"number\")e=0>e?ao(u+e,0):e;else if(e)return e=Tr(n,t),n=n[e],(t===t?t===n:n!==n)?e:-1;return r(n,t,e||0)}function Ue(n){var t=n?n.length:0;return t?n[t-1]:w}function Fe(n){return Re(n,1)}function We(n,t,e,u){if(!n||!n.length)return[];null!=t&&typeof t!=\"boolean\"&&(u=e,e=de(n,t,u)?null:t,t=false);var o=pe();if((o!==tr||null!=e)&&(e=o(e,u,3)),t&&he()==r){t=e;\r\nvar i;e=-1,u=n.length;for(var o=-1,f=[];++e<u;){var a=n[e],c=t?t(a,e,n):a;e&&i===c||(i=c,f[++o]=a)}n=f}else n=kr(n,e);return n}function Ne(n){for(var t=-1,r=(n&&n.length&&Zt(Yt(n,$u)))>>>0,e=xu(r);++t<r;)e[t]=Yt(n,wr(t));return e}function Le(n,t){var r=-1,e=n?n.length:0,u={};for(!e||t||yi(n[0])||(t=[]);++r<e;){var o=n[r];t?u[o]=t[r]:o&&(u[o[0]]=o[1])}return u}function $e(n){return n=Ut(n),n.__chain__=true,n}function Pe(n,t,r){return t.call(r,n)}function Be(n,t,r){var e=yi(n)?Kt:or;return r&&de(n,t,r)&&(t=null),(typeof t!=\"function\"||typeof r!=\"undefined\")&&(t=pe(t,r,3)),e(n,t)\r\n}function ze(n,t,r){var e=yi(n)?Vt:ir;return t=pe(t,r,3),e(n,t)}function Me(n,t,r,e){var u=n?n.length:0;return we(u)||(n=cu(n),u=n.length),u?(r=typeof r!=\"number\"||e&&de(t,r,e)?0:0>r?ao(u+r,0):r||0,typeof n==\"string\"||!yi(n)&&uu(n)?r<u&&-1<n.indexOf(t,r):-1<he(n,t,r)):false}function De(n,t,r){var e=yi(n)?Yt:vr;return t=pe(t,r,3),e(n,t)}function qe(n,t,r){return(r?de(n,t,r):null==t)?(n=Ee(n),t=n.length,0<t?n[br(0,t-1)]:w):(n=Ke(n),n.length=co(0>t?0:+t||0,n.length),n)}function Ke(n){n=Ee(n);for(var t=-1,r=n.length,e=xu(r);++t<r;){var u=br(0,t);\r\nt!=u&&(e[t]=e[u]),e[u]=n[t]}return e}function Ve(n,t,r){var e=yi(n)?Gt:jr;return r&&de(n,t,r)&&(t=null),(typeof t!=\"function\"||typeof r!=\"undefined\")&&(t=pe(t,r,3)),e(n,t)}function Ye(n,t){var r;if(typeof t!=\"function\"){if(typeof n!=\"function\")throw new Cu($);var e=n;n=t,t=e}return function(){return 0<--n?r=t.apply(this,arguments):t=null,r}}function Ze(n,t,r){function e(){var r=t-(ui()-c);0>=r||r>t?(f&&Yu(f),r=p,f=s=p=w,r&&(h=ui(),a=n.apply(l,i),s||f||(i=l=null))):s=Qu(e,r)}function u(){s&&Yu(s),f=s=p=w,(g||_!==t)&&(h=ui(),a=n.apply(l,i),s||f||(i=l=null))\r\n}function o(){if(i=arguments,c=ui(),l=this,p=g&&(s||!v),false===_)var r=v&&!s;else{f||v||(h=c);var o=_-(c-h),y=0>=o||o>_;y?(f&&(f=Yu(f)),h=c,a=n.apply(l,i)):f||(f=Qu(u,o))}return y&&s?s=Yu(s):s||t===_||(s=Qu(e,t)),r&&(y=true,a=n.apply(l,i)),!y||s||f||(i=l=null),a}var i,f,a,c,l,s,p,h=0,_=false,g=true;if(typeof n!=\"function\")throw new Cu($);if(t=0>t?0:+t||0,true===r)var v=true,g=false;else nu(r)&&(v=r.leading,_=\"maxWait\"in r&&ao(+r.maxWait||0,t),g=\"trailing\"in r?r.trailing:g);return o.cancel=function(){s&&Yu(s),f&&Yu(f),f=s=p=w\r\n},o}function Ge(n,t){function r(){var e=arguments,u=r.cache,o=t?t.apply(this,e):e[0];return u.has(o)?u.get(o):(e=n.apply(this,e),u.set(o,e),e)}if(typeof n!=\"function\"||t&&typeof t!=\"function\")throw new Cu($);return r.cache=new Ge.Cache,r}function Je(n,t){if(typeof n!=\"function\")throw new Cu($);return t=ao(typeof t==\"undefined\"?n.length-1:+t||0,0),function(){for(var r=arguments,e=-1,u=ao(r.length-t,0),o=xu(u);++e<u;)o[e]=r[t+e];switch(t){case 0:return n.call(this,o);case 1:return n.call(this,r[0],o);\r\ncase 2:return n.call(this,r[0],r[1],o)}for(u=xu(t+1),e=-1;++e<t;)u[e]=r[e];return u[t]=o,n.apply(this,u)}}function Xe(n){return we(h(n)?n.length:w)&&zu.call(n)==B}function He(n){return!!n&&1===n.nodeType&&h(n)&&(Ut.support.nodeTag?-1<zu.call(n).indexOf(\"Element\"):Dt(n))}function Qe(n){return h(n)&&typeof n.message==\"string\"&&zu.call(n)==q}function nu(n){var t=typeof n;return\"function\"==t||!!n&&\"object\"==t}function tu(n){return null==n?false:zu.call(n)==K?Du.test(Lu.call(n)):h(n)&&(Dt(n)?Du:wt).test(n)\r\n}function ru(n){return typeof n==\"number\"||h(n)&&zu.call(n)==V}function eu(n){return nu(n)&&zu.call(n)==Z}function uu(n){return typeof n==\"string\"||h(n)&&zu.call(n)==G}function ou(n){return h(n)&&we(n.length)&&!!St[zu.call(n)]}function iu(n){return nr(n,au(n))}function fu(n){return pr(n,au(n))}function au(n){if(null==n)return[];nu(n)||(n=ku(n));for(var t=n.length,r=Ut.support,t=t&&we(t)&&(yi(n)||r.nonEnumStrings&&uu(n)||r.nonEnumArgs&&Xe(n))&&t||0,e=n.constructor,u=-1,e=mi(e)&&e.prototype||Fu,o=e===n,i=xu(t),f=0<t,a=r.enumErrorProps&&(n===Uu||n instanceof ju),c=r.enumPrototypes&&mi(n);++u<t;)i[u]=u+\"\";\r\nfor(var l in n)c&&\"prototype\"==l||a&&(\"message\"==l||\"name\"==l)||f&&ye(l,t)||\"constructor\"==l&&(o||!Pu.call(n,l))||i.push(l);if(r.nonEnumShadows&&n!==Fu)for(t=n===Wu?G:n===Uu?q:zu.call(n),r=Oo[t]||Oo[Y],t==Y&&(e=Fu),t=Rt.length;t--;)l=Rt[t],u=r[l],o&&u||(u?!Pu.call(n,l):n[l]===e[l])||i.push(l);return i}function cu(n){return Rr(n,Ri(n))}function lu(n){return(n=u(n))&&n.replace(bt,c).replace(vt,\"\")}function su(n){return(n=u(n))&&jt.test(n)?n.replace(At,\"\\\\$&\"):n}function pu(n,t,r){return r&&de(n,t,r)&&(t=0),po(n,t)\r\n}function hu(n,t){var r=\"\";if(n=u(n),t=+t,1>t||!n||!io(t))return r;do t%2&&(r+=n),t=Zu(t/2),n+=n;while(t);return r}function _u(n,t,r){var e=n;return(n=u(n))?(r?de(e,t,r):null==t)?n.slice(v(n),y(n)+1):(t+=\"\",n.slice(i(n,t),f(n,t)+1)):n}function gu(n,t,r){return r&&de(n,t,r)&&(t=null),n=u(n),n.match(t||Et)||[]}function vu(n,t,r){return r&&de(n,t,r)&&(t=null),h(n)?mu(n):tr(n,t)}function yu(n){return function(){return n}}function du(n){return n}function mu(n){return yr(rr(n,true))}function wu(n,t,r){if(null==r){var e=nu(t),u=e&&Ri(t);\r\n((u=u&&u.length&&pr(t,u))?u.length:e)||(u=false,r=t,t=n,n=this)}u||(u=pr(t,Ri(t)));var o=true,e=-1,i=mi(n),f=u.length;false===r?o=false:nu(r)&&\"chain\"in r&&(o=r.chain);for(;++e<f;){r=u[e];var a=t[r];n[r]=a,i&&(n.prototype[r]=function(t){return function(){var r=this.__chain__;if(o||r){var e=n(this.__wrapped__);return(e.__actions__=Bt(this.__actions__)).push({func:t,args:arguments,thisArg:n}),e.__chain__=r,e}return r=[this.value()],Ju.apply(r,arguments),t.apply(n,r)}}(a))}return n}function bu(){}_=_?qt.defaults(Mt.Object(),_,qt.pick(Mt,kt)):Mt;\r\nvar xu=_.Array,Au=_.Date,ju=_.Error,Ou=_.Function,Eu=_.Math,Iu=_.Number,ku=_.Object,Ru=_.RegExp,Su=_.String,Cu=_.TypeError,Tu=xu.prototype,Uu=ju.prototype,Fu=ku.prototype,Wu=Su.prototype,Nu=(Nu=_.window)&&Nu.document,Lu=Ou.prototype.toString,$u=wr(\"length\"),Pu=Fu.hasOwnProperty,Bu=0,zu=Fu.toString,Mu=_._,Du=Ru(\"^\"+su(zu).replace(/toString|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g,\"$1.*?\")+\"$\"),qu=tu(qu=_.ArrayBuffer)&&qu,Ku=tu(Ku=qu&&new qu(0).slice)&&Ku,Vu=Eu.ceil,Yu=_.clearTimeout,Zu=Eu.floor,Gu=tu(Gu=ku.getPrototypeOf)&&Gu,Ju=Tu.push,Xu=Fu.propertyIsEnumerable,Hu=tu(Hu=_.Set)&&Hu,Qu=_.setTimeout,no=Tu.splice,to=tu(to=_.Uint8Array)&&to,ro=tu(ro=_.WeakMap)&&ro,eo=function(){try{var n=tu(n=_.Float64Array)&&n,t=new n(new qu(10),0,1)&&n\r\n}catch(r){}return t}(),uo=tu(uo=xu.isArray)&&uo,oo=tu(oo=ku.create)&&oo,io=_.isFinite,fo=tu(fo=ku.keys)&&fo,ao=Eu.max,co=Eu.min,lo=tu(lo=Au.now)&&lo,so=tu(so=Iu.isFinite)&&so,po=_.parseInt,ho=Eu.random,_o=Iu.NEGATIVE_INFINITY,go=Iu.POSITIVE_INFINITY,vo=Eu.pow(2,32)-1,yo=vo-1,mo=vo>>>1,wo=eo?eo.BYTES_PER_ELEMENT:0,bo=Eu.pow(2,53)-1,xo=ro&&new ro,Ao={},jo={};jo[X]=_.Float32Array,jo[H]=_.Float64Array,jo[Q]=_.Int8Array,jo[nt]=_.Int16Array,jo[tt]=_.Int32Array,jo[rt]=_.Uint8Array,jo[et]=_.Uint8ClampedArray,jo[ut]=_.Uint16Array,jo[ot]=_.Uint32Array;\r\nvar Oo={};Oo[z]=Oo[D]=Oo[V]={constructor:true,toLocaleString:true,toString:true,valueOf:true},Oo[M]=Oo[G]={constructor:true,toString:true,valueOf:true},Oo[q]=Oo[K]=Oo[Z]={constructor:true,toString:true},Oo[Y]={constructor:true},zt(Rt,function(n){for(var t in Oo)if(Pu.call(Oo,t)){var r=Oo[t];r[n]=Pu.call(r,n)}});var Eo=Ut.support={};!function(n){function t(){this.x=1}var r={0:1,length:1},e=[];t.prototype={valueOf:1,y:1};for(var u in new t)e.push(u);Eo.argsTag=zu.call(arguments)==B,Eo.enumErrorProps=Xu.call(Uu,\"message\")||Xu.call(Uu,\"name\"),Eo.enumPrototypes=Xu.call(t,\"prototype\"),Eo.funcDecomp=/\\bthis\\b/.test(function(){return this\r\n}),Eo.funcNames=typeof Ou.name==\"string\",Eo.nodeTag=zu.call(Nu)!=Y,Eo.nonEnumStrings=!Xu.call(\"x\",0),Eo.nonEnumShadows=!/valueOf/.test(e),Eo.ownLast=\"x\"!=e[0],Eo.spliceObjects=(no.call(r,0,1),!r[0]),Eo.unindexedChars=\"xx\"!=\"x\"[0]+ku(\"x\")[0];try{Eo.dom=11===Nu.createDocumentFragment().nodeType}catch(o){Eo.dom=false}try{Eo.nonEnumArgs=!Xu.call(arguments,1)}catch(i){Eo.nonEnumArgs=true}}(0,0),Ut.templateSettings={escape:ht,evaluate:_t,interpolate:gt,variable:\"\",imports:{_:Ut}};var Io=function(){function n(){}return function(t){if(nu(t)){n.prototype=t;\r\nvar r=new n;n.prototype=null}return r||_.Object()}}(),ko=Br(lr),Ro=Br(sr,true),So=zr(),Co=zr(true),To=xo?function(n,t){return xo.set(n,t),n}:du;Ku||(Wr=qu&&to?function(n){var t=n.byteLength,r=eo?Zu(t/wo):0,e=r*wo,u=new qu(t);if(r){var o=new eo(u,0,r);o.set(new eo(n,0,r))}return t!=e&&(o=new to(u,e),o.set(new to(n,e))),u}:yu(null));var Uo=oo&&Hu?function(n){return new $t(n)}:yu(null),Fo=xo?function(n){return xo.get(n)}:bu,Wo=function(){return Eo.funcNames?\"constant\"==yu.name?wr(\"name\"):function(n){for(var t=n.name,r=Ao[t],e=r?r.length:0;e--;){var u=r[e],o=u.func;\r\nif(null==o||o==n)return u.name}return t}:yu(\"\")}(),No=function(){var n=0,t=0;return function(r,e){var u=ui(),o=F-(u-t);if(t=u,0<o){if(++n>=U)return r}else n=0;return To(r,e)}}(),Lo=Je(function(n,t){return yi(n)||Xe(n)?ur(n,ar(t,false,true)):[]}),$o=Zr(),Po=Zr(true),Bo=Je(function(t,r){t||(t=[]),r=ar(r);var e=r.length,u=Qt(t,r);for(r.sort(n);e--;){var o=parseFloat(r[e]);if(o!=i&&ye(o)){var i=o;no.call(t,o,1)}}return u}),zo=ie(),Mo=ie(true),Do=Je(function(n){return kr(ar(n,false,true))}),qo=Je(function(n,t){return yi(n)||Xe(n)?ur(n,t):[]\r\n}),Ko=Je(Ne),Vo=Je(function(n,t){return we(n?n.length:0)&&(n=Ee(n)),Qt(n,ar(t))}),Yo=$r(function(n,t,r){Pu.call(n,r)?++n[r]:n[r]=1}),Zo=Yr(ko),Go=Yr(Ro,true),Jo=Xr(zt,ko),Xo=Xr(function(n,t){for(var r=n.length;r--&&false!==t(n[r],r,n););return n},Ro),Ho=$r(function(n,t,r){Pu.call(n,r)?n[r].push(t):n[r]=[t]}),Qo=$r(function(n,t,r){n[r]=t}),ni=Je(function(n,t,r){var e=-1,u=typeof t==\"function\",o=n?n.length:0,i=we(o)?xu(o):[];return ko(n,function(n){var o=u?t:null!=n&&n[t];i[++e]=o?o.apply(n,r):w}),i}),ti=$r(function(n,t,r){n[r?0:1].push(t)\r\n},function(){return[[],[]]}),ri=re(function(n,t,r,e){var u=-1,o=n.length;for(e&&o&&(r=n[++u]);++u<o;)r=t(r,n[u],u,n);return r},ko),ei=re(function(n,t,r,e){var u=n.length;for(e&&u&&(r=n[--u]);u--;)r=t(r,n[u],u,n);return r},Ro),ui=lo||function(){return(new Au).getTime()},oi=Je(function(n,t,r){var e=x;if(r.length)var u=g(r,oi.placeholder),e=e|I;return fe(n,e,t,r,u)}),ii=Je(function(n,t){t=t.length?ar(t):fu(n);for(var r=-1,e=t.length;++r<e;){var u=t[r];n[u]=fe(n[u],x,n)}return n}),fi=Je(function(n,t,r){var e=x|A;\r\nif(r.length)var u=g(r,fi.placeholder),e=e|I;return fe(t,e,n,r,u)}),ai=Kr(O),ci=Kr(E),li=Je(function(n,t){return er(n,1,t)}),si=Je(function(n,t,r){return er(n,t,r)}),pi=Jr(),hi=Jr(true),_i=te(I),gi=te(k),vi=Je(function(n,t){return fe(n,S,null,null,null,ar(t))});Eo.argsTag||(Xe=function(n){return we(h(n)?n.length:w)&&Pu.call(n,\"callee\")&&!Xu.call(n,\"callee\")});var yi=uo||function(n){return h(n)&&we(n.length)&&zu.call(n)==z};Eo.dom||(He=function(n){return!!n&&1===n.nodeType&&h(n)&&!wi(n)});var di=so||function(n){return typeof n==\"number\"&&io(n)\r\n},mi=e(/x/)||to&&!e(to)?function(n){return zu.call(n)==K}:e,wi=Gu?function(n){if(!n||zu.call(n)!=Y||!Ut.support.argsTag&&Xe(n))return false;var t=n.valueOf,r=tu(t)&&(r=Gu(t))&&Gu(r);return r?n==r||Gu(n)==r:je(n)}:je,bi=Pr(Ht),xi=Je(function(n){var t=n[0];return null==t?t:(n.push(Jt),bi.apply(w,n))}),Ai=Gr(lr),ji=Gr(sr),Oi=Hr(So),Ei=Hr(Co),Ii=Qr(lr),ki=Qr(sr),Ri=fo?function(n){if(n)var t=n.constructor,r=n.length;return typeof t==\"function\"&&t.prototype===n||(typeof n==\"function\"?Ut.support.enumPrototypes:r&&we(r))?Oe(n):nu(n)?fo(n):[]\r\n}:Oe,Si=Pr(mr),Ci=Je(function(n,t){if(null==n)return{};if(\"function\"!=typeof t[0])return t=Yt(ar(t),Su),xe(n,ur(au(n),t));var r=Fr(t[0],t[1],3);return Ae(n,function(n,t,e){return!r(n,t,e)})}),Ti=Je(function(n,t){return null==n?{}:\"function\"==typeof t[0]?Ae(n,Fr(t[0],t[1],3)):xe(n,ar(t))}),Ui=Dr(function(n,t,r){return t=t.toLowerCase(),n+(r?t.charAt(0).toUpperCase()+t.slice(1):t)}),Fi=Dr(function(n,t,r){return n+(r?\"-\":\"\")+t.toLowerCase()}),Wi=ne(),Ni=ne(true);8!=po(It+\"08\")&&(pu=function(n,t,r){return(r?de(n,t,r):null==t)?t=0:t&&(t=+t),n=_u(n),po(n,t||(mt.test(n)?16:10))\r\n});var Li=Dr(function(n,t,r){return n+(r?\"_\":\"\")+t.toLowerCase()}),$i=Dr(function(n,t,r){return n+(r?\" \":\"\")+(t.charAt(0).toUpperCase()+t.slice(1))}),Pi=Je(function(n,t){try{return n.apply(w,t)}catch(r){return Qe(r)?r:new ju(r)}}),Bi=Vr(Zt),zi=Vr(function(n){for(var t=-1,r=n.length,e=go;++t<r;){var u=n[t];u<e&&(e=u)}return e},true);return Ut.prototype=Ft.prototype,Wt.prototype=Io(Ft.prototype),Wt.prototype.constructor=Wt,Nt.prototype=Io(Ft.prototype),Nt.prototype.constructor=Nt,Lt.prototype[\"delete\"]=function(n){return this.has(n)&&delete this.__data__[n]\r\n},Lt.prototype.get=function(n){return\"__proto__\"==n?w:this.__data__[n]},Lt.prototype.has=function(n){return\"__proto__\"!=n&&Pu.call(this.__data__,n)},Lt.prototype.set=function(n,t){return\"__proto__\"!=n&&(this.__data__[n]=t),this},$t.prototype.push=function(n){var t=this.data;typeof n==\"string\"||nu(n)?t.set.add(n):t.hash[n]=true},Ge.Cache=Lt,Ut.after=function(n,t){if(typeof t!=\"function\"){if(typeof n!=\"function\")throw new Cu($);var r=n;n=t,t=r}return n=io(n=+n)?n:0,function(){return 1>--n?t.apply(this,arguments):void 0\r\n}},Ut.ary=function(n,t,r){return r&&de(n,t,r)&&(t=null),t=n&&null==t?n.length:ao(+t||0,0),fe(n,R,null,null,null,null,t)},Ut.assign=bi,Ut.at=Vo,Ut.before=Ye,Ut.bind=oi,Ut.bindAll=ii,Ut.bindKey=fi,Ut.callback=vu,Ut.chain=$e,Ut.chunk=function(n,t,r){t=(r?de(n,t,r):null==t)?1:ao(+t||1,1),r=0;for(var e=n?n.length:0,u=-1,o=xu(Vu(e/t));r<e;)o[++u]=Ar(n,r,r+=t);return o},Ut.compact=function(n){for(var t=-1,r=n?n.length:0,e=-1,u=[];++t<r;){var o=n[t];o&&(u[++e]=o)}return u},Ut.constant=yu,Ut.countBy=Yo,Ut.create=function(n,t,r){var e=Io(n);\r\nreturn r&&de(n,t,r)&&(t=null),t?nr(t,e,Ri(t)):e},Ut.curry=ai,Ut.curryRight=ci,Ut.debounce=Ze,Ut.defaults=xi,Ut.defer=li,Ut.delay=si,Ut.difference=Lo,Ut.drop=Re,Ut.dropRight=Se,Ut.dropRightWhile=function(n,t,r){return n&&n.length?Sr(n,pe(t,r,3),true,true):[]},Ut.dropWhile=function(n,t,r){return n&&n.length?Sr(n,pe(t,r,3),true):[]},Ut.fill=function(n,t,r,e){var u=n?n.length:0;if(!u)return[];for(r&&typeof r!=\"number\"&&de(n,t,r)&&(r=0,e=u),u=n.length,r=null==r?0:+r||0,0>r&&(r=-r>u?0:u+r),e=typeof e==\"undefined\"||e>u?u:+e||0,0>e&&(e+=u),u=r>e?0:e>>>0,r>>>=0;r<u;)n[r++]=t;\r\nreturn n},Ut.filter=ze,Ut.flatten=function(n,t,r){var e=n?n.length:0;return r&&de(n,t,r)&&(t=false),e?ar(n,t):[]},Ut.flattenDeep=function(n){return n&&n.length?ar(n,true):[]},Ut.flow=pi,Ut.flowRight=hi,Ut.forEach=Jo,Ut.forEachRight=Xo,Ut.forIn=Oi,Ut.forInRight=Ei,Ut.forOwn=Ii,Ut.forOwnRight=ki,Ut.functions=fu,Ut.groupBy=Ho,Ut.indexBy=Qo,Ut.initial=function(n){return Se(n,1)},Ut.intersection=function(){for(var n=[],t=-1,e=arguments.length,u=[],o=he(),i=o==r;++t<e;){var f=arguments[t];(yi(f)||Xe(f))&&(n.push(f),u.push(i&&120<=f.length?Uo(t&&f):null))\r\n}var e=n.length,i=n[0],a=-1,c=i?i.length:0,l=[],s=u[0];n:for(;++a<c;)if(f=i[a],0>(s?Pt(s,f):o(l,f,0))){for(t=e;--t;){var p=u[t];if(0>(p?Pt(p,f):o(n[t],f,0)))continue n}s&&s.push(f),l.push(f)}return l},Ut.invert=function(n,t,r){r&&de(n,t,r)&&(t=null),r=-1;for(var e=Ri(n),u=e.length,o={};++r<u;){var i=e[r],f=n[i];t?Pu.call(o,f)?o[f].push(i):o[f]=[i]:o[f]=i}return o},Ut.invoke=ni,Ut.keys=Ri,Ut.keysIn=au,Ut.map=De,Ut.mapValues=function(n,t,r){var e={};return t=pe(t,r,3),lr(n,function(n,r,u){e[r]=t(n,r,u)\r\n}),e},Ut.matches=mu,Ut.matchesProperty=function(n,t){return dr(n+\"\",rr(t,true))},Ut.memoize=Ge,Ut.merge=Si,Ut.mixin=wu,Ut.negate=function(n){if(typeof n!=\"function\")throw new Cu($);return function(){return!n.apply(this,arguments)}},Ut.omit=Ci,Ut.once=function(n){return Ye(n,2)},Ut.pairs=function(n){for(var t=-1,r=Ri(n),e=r.length,u=xu(e);++t<e;){var o=r[t];u[t]=[o,n[o]]}return u},Ut.partial=_i,Ut.partialRight=gi,Ut.partition=ti,Ut.pick=Ti,Ut.pluck=function(n,t){return De(n,wr(t))},Ut.property=function(n){return wr(n+\"\")\r\n},Ut.propertyOf=function(n){return function(t){return null==n?w:n[t]}},Ut.pull=function(){var n=arguments,t=n[0];if(!t||!t.length)return t;for(var r=0,e=he(),u=n.length;++r<u;)for(var o=0,i=n[r];-1<(o=e(t,i,o));)no.call(t,o,1);return t},Ut.pullAt=Bo,Ut.range=function(n,t,r){r&&de(n,t,r)&&(t=r=null),n=+n||0,r=null==r?1:+r||0,null==t?(t=n,n=0):t=+t||0;var e=-1;t=ao(Vu((t-n)/(r||1)),0);for(var u=xu(t);++e<t;)u[e]=n,n+=r;return u},Ut.rearg=vi,Ut.reject=function(n,t,r){var e=yi(n)?Vt:ir;return t=pe(t,r,3),e(n,function(n,r,e){return!t(n,r,e)\r\n})},Ut.remove=function(n,t,r){var e=-1,u=n?n.length:0,o=[];for(t=pe(t,r,3);++e<u;)r=n[e],t(r,e,n)&&(o.push(r),no.call(n,e--,1),u--);return o},Ut.rest=Fe,Ut.restParam=Je,Ut.shuffle=Ke,Ut.slice=function(n,t,r){var e=n?n.length:0;return e?(r&&typeof r!=\"number\"&&de(n,t,r)&&(t=0,r=e),Ar(n,t,r)):[]},Ut.sortBy=function(n,t,r){if(null==n)return[];var e=-1,u=n.length,o=we(u)?xu(u):[];return r&&de(n,t,r)&&(t=null),t=pe(t,r,3),ko(n,function(n,r,u){o[++e]={a:t(n,r,u),b:e,c:n}}),Or(o,a)},Ut.sortByAll=function(){var n=arguments,t=n[0],r=n[3],e=0,u=n.length-1;\r\nif(null==t)return[];for(var o=xu(u);e<u;)o[e]=n[++e];return r&&de(n[1],n[2],r)&&(o=n[1]),Er(t,ar(o),[])},Ut.sortByOrder=function(n,t,r,e){return null==n?[]:(e&&de(t,r,e)&&(r=null),yi(t)||(t=null==t?[]:[t]),yi(r)||(r=null==r?[]:[r]),Er(n,t,r))},Ut.spread=function(n){if(typeof n!=\"function\")throw new Cu($);return function(t){return n.apply(this,t)}},Ut.take=function(n,t,r){return n&&n.length?((r?de(n,t,r):null==t)&&(t=1),Ar(n,0,0>t?0:t)):[]},Ut.takeRight=function(n,t,r){var e=n?n.length:0;return e?((r?de(n,t,r):null==t)&&(t=1),t=e-(+t||0),Ar(n,0>t?0:t)):[]\r\n},Ut.takeRightWhile=function(n,t,r){return n&&n.length?Sr(n,pe(t,r,3),false,true):[]},Ut.takeWhile=function(n,t,r){return n&&n.length?Sr(n,pe(t,r,3)):[]},Ut.tap=function(n,t,r){return t.call(r,n),n},Ut.throttle=function(n,t,r){var e=true,u=true;if(typeof n!=\"function\")throw new Cu($);return false===r?e=false:nu(r)&&(e=\"leading\"in r?!!r.leading:e,u=\"trailing\"in r?!!r.trailing:u),Tt.leading=e,Tt.maxWait=+t,Tt.trailing=u,Ze(n,t,Tt)},Ut.thru=Pe,Ut.times=function(n,t,r){if(n=+n,1>n||!io(n))return[];var e=-1,u=xu(co(n,vo));\r\nfor(t=Fr(t,r,1);++e<n;)e<vo?u[e]=t(e):t(e);return u},Ut.toArray=function(n){var t=n?n.length:0;return we(t)?t?Ut.support.unindexedChars&&uu(n)?n.split(\"\"):Bt(n):[]:cu(n)},Ut.toPlainObject=iu,Ut.transform=function(n,t,r,e){var u=yi(n)||ou(n);return t=pe(t,e,4),null==r&&(u||nu(n)?(e=n.constructor,r=u?yi(n)?new e:[]:Io(mi(e)&&e.prototype)):r={}),(u?zt:lr)(n,function(n,e,u){return t(r,n,e,u)}),r},Ut.union=Do,Ut.uniq=We,Ut.unzip=Ne,Ut.values=cu,Ut.valuesIn=function(n){return Rr(n,au(n))},Ut.where=function(n,t){return ze(n,yr(t))\r\n},Ut.without=qo,Ut.wrap=function(n,t){return t=null==t?du:t,fe(t,I,null,[n],[])},Ut.xor=function(){for(var n=-1,t=arguments.length;++n<t;){var r=arguments[n];if(yi(r)||Xe(r))var e=e?ur(e,r).concat(ur(r,e)):r}return e?kr(e):[]},Ut.zip=Ko,Ut.zipObject=Le,Ut.backflow=hi,Ut.collect=De,Ut.compose=hi,Ut.each=Jo,Ut.eachRight=Xo,Ut.extend=bi,Ut.iteratee=vu,Ut.methods=fu,Ut.object=Le,Ut.select=ze,Ut.tail=Fe,Ut.unique=We,wu(Ut,Ut),Ut.add=function(n,t){return n+t},Ut.attempt=Pi,Ut.camelCase=Ui,Ut.capitalize=function(n){return(n=u(n))&&n.charAt(0).toUpperCase()+n.slice(1)\r\n},Ut.clone=function(n,t,r,e){return t&&typeof t!=\"boolean\"&&de(n,t,r)?t=false:typeof t==\"function\"&&(e=r,r=t,t=false),r=typeof r==\"function\"&&Fr(r,e,1),rr(n,t,r)},Ut.cloneDeep=function(n,t,r){return t=typeof t==\"function\"&&Fr(t,r,1),rr(n,true,t)},Ut.deburr=lu,Ut.endsWith=function(n,t,r){n=u(n),t+=\"\";var e=n.length;return r=typeof r==\"undefined\"?e:co(0>r?0:+r||0,e),r-=t.length,0<=r&&n.indexOf(t,r)==r},Ut.escape=function(n){return(n=u(n))&&pt.test(n)?n.replace(lt,l):n},Ut.escapeRegExp=su,Ut.every=Be,Ut.find=Zo,Ut.findIndex=$o,Ut.findKey=Ai,Ut.findLast=Go,Ut.findLastIndex=Po,Ut.findLastKey=ji,Ut.findWhere=function(n,t){return Zo(n,yr(t))\r\n},Ut.first=Ce,Ut.has=function(n,t){return n?Pu.call(n,t):false},Ut.identity=du,Ut.includes=Me,Ut.indexOf=Te,Ut.inRange=function(n,t,r){return t=+t||0,\"undefined\"===typeof r?(r=t,t=0):r=+r||0,n>=t&&n<r},Ut.isArguments=Xe,Ut.isArray=yi,Ut.isBoolean=function(n){return true===n||false===n||h(n)&&zu.call(n)==M},Ut.isDate=function(n){return h(n)&&zu.call(n)==D},Ut.isElement=He,Ut.isEmpty=function(n){if(null==n)return true;var t=n.length;return we(t)&&(yi(n)||uu(n)||Xe(n)||h(n)&&mi(n.splice))?!t:!Ri(n).length},Ut.isEqual=function(n,t,r,e){return r=typeof r==\"function\"&&Fr(r,e,3),!r&&be(n)&&be(t)?n===t:(e=r?r(n,t):w,typeof e==\"undefined\"?hr(n,t,r):!!e)\r\n},Ut.isError=Qe,Ut.isFinite=di,Ut.isFunction=mi,Ut.isMatch=function(n,t,r,e){var u=Ri(t),o=u.length;if(!o)return true;if(null==n)return false;if(r=typeof r==\"function\"&&Fr(r,e,3),!r&&1==o){var i=u[0];if(e=t[i],be(e))return e===n[i]&&(typeof e!=\"undefined\"||i in Ie(n))}for(var i=xu(o),f=xu(o);o--;)e=i[o]=t[u[o]],f[o]=be(e);return gr(Ie(n),u,i,f,r)},Ut.isNaN=function(n){return ru(n)&&n!=+n},Ut.isNative=tu,Ut.isNull=function(n){return null===n},Ut.isNumber=ru,Ut.isObject=nu,Ut.isPlainObject=wi,Ut.isRegExp=eu,Ut.isString=uu,Ut.isTypedArray=ou,Ut.isUndefined=function(n){return typeof n==\"undefined\"\r\n},Ut.kebabCase=Fi,Ut.last=Ue,Ut.lastIndexOf=function(n,t,r){var e=n?n.length:0;if(!e)return-1;var u=e;if(typeof r==\"number\")u=(0>r?ao(e+r,0):co(r||0,e-1))+1;else if(r)return u=Tr(n,t,true)-1,n=n[u],(t===t?t===n:n!==n)?u:-1;if(t!==t)return p(n,u,true);for(;u--;)if(n[u]===t)return u;return-1},Ut.max=Bi,Ut.min=zi,Ut.noConflict=function(){return _._=Mu,this},Ut.noop=bu,Ut.now=ui,Ut.pad=function(n,t,r){n=u(n),t=+t;var e=n.length;return e<t&&io(t)?(e=(t-e)/2,t=Zu(e),e=Vu(e),r=ue(\"\",e,r),r.slice(0,t)+n+r):n\r\n},Ut.padLeft=Wi,Ut.padRight=Ni,Ut.parseInt=pu,Ut.random=function(n,t,r){r&&de(n,t,r)&&(t=r=null);var e=null==n,u=null==t;return null==r&&(u&&typeof n==\"boolean\"?(r=n,n=1):typeof t==\"boolean\"&&(r=t,u=true)),e&&u&&(t=1,u=false),n=+n||0,u?(t=n,n=0):t=+t||0,r||n%1||t%1?(r=ho(),co(n+r*(t-n+parseFloat(\"1e-\"+((r+\"\").length-1))),t)):br(n,t)},Ut.reduce=ri,Ut.reduceRight=ei,Ut.repeat=hu,Ut.result=function(n,t,r){return t=null==n?w:n[t],typeof t==\"undefined\"&&(t=r),mi(t)?t.call(n):t},Ut.runInContext=m,Ut.size=function(n){var t=n?n.length:0;\r\nreturn we(t)?t:Ri(n).length},Ut.snakeCase=Li,Ut.some=Ve,Ut.sortedIndex=zo,Ut.sortedLastIndex=Mo,Ut.startCase=$i,Ut.startsWith=function(n,t,r){return n=u(n),r=null==r?0:co(0>r?0:+r||0,n.length),n.lastIndexOf(t,r)==r},Ut.sum=function(n,t,r){r&&de(n,t,r)&&(t=null);var e=pe(),u=null==t;if(e===tr&&u||(u=false,t=e(t,r,3)),u){for(n=yi(n)?n:Ee(n),t=n.length,r=0;t--;)r+=+n[t]||0;n=r}else n=Ir(n,t);return n},Ut.template=function(n,t,r){var e=Ut.templateSettings;r&&de(n,t,r)&&(t=r=null),n=u(n),t=Ht(Ht({},r||t),e,Xt),r=Ht(Ht({},t.imports),e.imports,Xt);\r\nvar o,i,f=Ri(r),a=Rr(r,f),c=0;r=t.interpolate||xt;var l=\"__p+='\";r=Ru((t.escape||xt).source+\"|\"+r.source+\"|\"+(r===gt?yt:xt).source+\"|\"+(t.evaluate||xt).source+\"|$\",\"g\");var p=\"sourceURL\"in t?\"//# sourceURL=\"+t.sourceURL+\"\\n\":\"\";if(n.replace(r,function(t,r,e,u,f,a){return e||(e=u),l+=n.slice(c,a).replace(Ot,s),r&&(o=true,l+=\"'+__e(\"+r+\")+'\"),f&&(i=true,l+=\"';\"+f+\";\\n__p+='\"),e&&(l+=\"'+((__t=(\"+e+\"))==null?'':__t)+'\"),c=a+t.length,t}),l+=\"';\",(t=t.variable)||(l=\"with(obj){\"+l+\"}\"),l=(i?l.replace(it,\"\"):l).replace(ft,\"$1\").replace(at,\"$1;\"),l=\"function(\"+(t||\"obj\")+\"){\"+(t?\"\":\"obj||(obj={});\")+\"var __t,__p=''\"+(o?\",__e=_.escape\":\"\")+(i?\",__j=Array.prototype.join;function print(){__p+=__j.call(arguments,'')}\":\";\")+l+\"return __p}\",t=Pi(function(){return Ou(f,p+\"return \"+l).apply(w,a)\r\n}),t.source=l,Qe(t))throw t;return t},Ut.trim=_u,Ut.trimLeft=function(n,t,r){var e=n;return(n=u(n))?n.slice((r?de(e,t,r):null==t)?v(n):i(n,t+\"\")):n},Ut.trimRight=function(n,t,r){var e=n;return(n=u(n))?(r?de(e,t,r):null==t)?n.slice(0,y(n)+1):n.slice(0,f(n,t+\"\")+1):n},Ut.trunc=function(n,t,r){r&&de(n,t,r)&&(t=null);var e=C;if(r=T,null!=t)if(nu(t)){var o=\"separator\"in t?t.separator:o,e=\"length\"in t?+t.length||0:e;r=\"omission\"in t?u(t.omission):r}else e=+t||0;if(n=u(n),e>=n.length)return n;if(e-=r.length,1>e)return r;\r\nif(t=n.slice(0,e),null==o)return t+r;if(eu(o)){if(n.slice(e).search(o)){var i,f=n.slice(0,e);for(o.global||(o=Ru(o.source,(dt.exec(o)||\"\")+\"g\")),o.lastIndex=0;n=o.exec(f);)i=n.index;t=t.slice(0,null==i?e:i)}}else n.indexOf(o,e)!=e&&(o=t.lastIndexOf(o),-1<o&&(t=t.slice(0,o)));return t+r},Ut.unescape=function(n){return(n=u(n))&&st.test(n)?n.replace(ct,d):n},Ut.uniqueId=function(n){var t=++Bu;return u(n)+t},Ut.words=gu,Ut.all=Be,Ut.any=Ve,Ut.contains=Me,Ut.detect=Zo,Ut.foldl=ri,Ut.foldr=ei,Ut.head=Ce,Ut.include=Me,Ut.inject=ri,wu(Ut,function(){var n={};\r\nreturn lr(Ut,function(t,r){Ut.prototype[r]||(n[r]=t)}),n}(),false),Ut.sample=qe,Ut.prototype.sample=function(n){return this.__chain__||null!=n?this.thru(function(t){return qe(t,n)}):qe(this.value())},Ut.VERSION=b,zt(\"bind bindKey curry curryRight partial partialRight\".split(\" \"),function(n){Ut[n].placeholder=Ut}),zt([\"dropWhile\",\"filter\",\"map\",\"takeWhile\"],function(n,t){var r=t!=L,e=t==W;Nt.prototype[n]=function(n,u){var o=this.__filtered__,i=o&&e?new Nt(this):this.clone();return(i.__iteratees__||(i.__iteratees__=[])).push({done:false,count:0,index:0,iteratee:pe(n,u,1),limit:-1,type:t}),i.__filtered__=o||r,i\r\n}}),zt([\"drop\",\"take\"],function(n,t){var r=n+\"While\";Nt.prototype[n]=function(r){var e=this.__filtered__,u=e&&!t?this.dropWhile():this.clone();return r=null==r?1:ao(Zu(r)||0,0),e?t?u.__takeCount__=co(u.__takeCount__,r):Ue(u.__iteratees__).limit=r:(u.__views__||(u.__views__=[])).push({size:r,type:n+(0>u.__dir__?\"Right\":\"\")}),u},Nt.prototype[n+\"Right\"]=function(t){return this.reverse()[n](t).reverse()},Nt.prototype[n+\"RightWhile\"]=function(n,t){return this.reverse()[r](n,t).reverse()}}),zt([\"first\",\"last\"],function(n,t){var r=\"take\"+(t?\"Right\":\"\");\r\nNt.prototype[n]=function(){return this[r](1).value()[0]}}),zt([\"initial\",\"rest\"],function(n,t){var r=\"drop\"+(t?\"\":\"Right\");Nt.prototype[n]=function(){return this[r](1)}}),zt([\"pluck\",\"where\"],function(n,t){var r=t?\"filter\":\"map\",e=t?yr:wr;Nt.prototype[n]=function(n){return this[r](e(n))}}),Nt.prototype.compact=function(){return this.filter(du)},Nt.prototype.reject=function(n,t){return n=pe(n,t,1),this.filter(function(t){return!n(t)})},Nt.prototype.slice=function(n,t){n=null==n?0:+n||0;var r=0>n?this.takeRight(-n):this.drop(n);\r\nreturn typeof t!=\"undefined\"&&(t=+t||0,r=0>t?r.dropRight(-t):r.take(t-n)),r},Nt.prototype.toArray=function(){return this.drop(0)},lr(Nt.prototype,function(n,t){var r=Ut[t];if(r){var e=/^(?:filter|map|reject)|While$/.test(t),u=/^(?:first|last)$/.test(t);Ut.prototype[t]=function(){function t(n){return n=[n],Ju.apply(n,o),r.apply(Ut,n)}var o=arguments,i=this.__chain__,f=this.__wrapped__,a=!!this.__actions__.length,c=f instanceof Nt,l=o[0],s=c||yi(f);return s&&e&&typeof l==\"function\"&&1!=l.length&&(c=s=false),c=c&&!a,u&&!i?c?n.call(f):r.call(Ut,this.value()):s?(f=n.apply(c?f:new Nt(this),o),u||!a&&!f.__actions__||(f.__actions__||(f.__actions__=[])).push({func:Pe,args:[t],thisArg:Ut}),new Wt(f,i)):this.thru(t)\r\n}}}),zt(\"concat join pop push replace shift sort splice split unshift\".split(\" \"),function(n){var t=(/^(?:replace|split)$/.test(n)?Wu:Tu)[n],r=/^(?:push|sort|unshift)$/.test(n)?\"tap\":\"thru\",e=/^(?:join|pop|replace|shift)$/.test(n),u=Eo.spliceObjects||!/^(?:pop|shift|splice)$/.test(n)?t:function(){var n=t.apply(this,arguments);return 0===this.length&&delete this[0],n};Ut.prototype[n]=function(){var n=arguments;return e&&!this.__chain__?u.apply(this.value(),n):this[r](function(t){return u.apply(t,n)\r\n})}}),lr(Nt.prototype,function(n,t){var r=Ut[t];if(r){var e=r.name;(Ao[e]||(Ao[e]=[])).push({name:t,func:r})}}),Ao[ee(null,A).name]=[{name:\"wrapper\",func:null}],Nt.prototype.clone=function(){var n=this.__actions__,t=this.__iteratees__,r=this.__views__,e=new Nt(this.__wrapped__);return e.__actions__=n?Bt(n):null,e.__dir__=this.__dir__,e.__filtered__=this.__filtered__,e.__iteratees__=t?Bt(t):null,e.__takeCount__=this.__takeCount__,e.__views__=r?Bt(r):null,e},Nt.prototype.reverse=function(){if(this.__filtered__){var n=new Nt(this);\r\nn.__dir__=-1,n.__filtered__=true}else n=this.clone(),n.__dir__*=-1;return n},Nt.prototype.value=function(){var n=this.__wrapped__.value();if(!yi(n))return Cr(n,this.__actions__);var t,r=this.__dir__,e=0>r;t=n.length;for(var u=this.__views__,o=0,i=-1,f=u?u.length:0;++i<f;){var a=u[i],c=a.size;switch(a.type){case\"drop\":o+=c;break;case\"dropRight\":t-=c;break;case\"take\":t=co(t,o+c);break;case\"takeRight\":o=ao(o,t-c)}}t={start:o,end:t},u=t.start,o=t.end,t=o-u,u=e?o:u-1,o=co(t,this.__takeCount__),f=(i=this.__iteratees__)?i.length:0,a=0,c=[];\r\nn:for(;t--&&a<o;){for(var u=u+r,l=-1,s=n[u];++l<f;){var p=i[l],h=p.iteratee,_=p.type;if(_==W){if(p.done&&(e?u>p.index:u<p.index)&&(p.count=0,p.done=false),p.index=u,!(p.done||(_=p.limit,p.done=-1<_?p.count++>=_:!h(s))))continue n}else if(p=h(s),_==L)s=p;else if(!p){if(_==N)continue n;break n}}c[a++]=s}return c},Ut.prototype.chain=function(){return $e(this)},Ut.prototype.commit=function(){return new Wt(this.value(),this.__chain__)},Ut.prototype.plant=function(n){for(var t,r=this;r instanceof Ft;){var e=ke(r);\r\nt?u.__wrapped__=e:t=e;var u=e,r=r.__wrapped__}return u.__wrapped__=n,t},Ut.prototype.reverse=function(){var n=this.__wrapped__;return n instanceof Nt?(this.__actions__.length&&(n=new Nt(this)),new Wt(n.reverse(),this.__chain__)):this.thru(function(n){return n.reverse()})},Ut.prototype.toString=function(){return this.value()+\"\"},Ut.prototype.run=Ut.prototype.toJSON=Ut.prototype.valueOf=Ut.prototype.value=function(){return Cr(this.__wrapped__,this.__actions__)},Ut.prototype.collect=Ut.prototype.map,Ut.prototype.head=Ut.prototype.first,Ut.prototype.select=Ut.prototype.filter,Ut.prototype.tail=Ut.prototype.rest,Ut\r\n}var w,b=\"3.6.0\",x=1,A=2,j=4,O=8,E=16,I=32,k=64,R=128,S=256,C=30,T=\"...\",U=150,F=16,W=0,N=1,L=2,$=\"Expected a function\",P=\"__lodash_placeholder__\",B=\"[object Arguments]\",z=\"[object Array]\",M=\"[object Boolean]\",D=\"[object Date]\",q=\"[object Error]\",K=\"[object Function]\",V=\"[object Number]\",Y=\"[object Object]\",Z=\"[object RegExp]\",G=\"[object String]\",J=\"[object ArrayBuffer]\",X=\"[object Float32Array]\",H=\"[object Float64Array]\",Q=\"[object Int8Array]\",nt=\"[object Int16Array]\",tt=\"[object Int32Array]\",rt=\"[object Uint8Array]\",et=\"[object Uint8ClampedArray]\",ut=\"[object Uint16Array]\",ot=\"[object Uint32Array]\",it=/\\b__p\\+='';/g,ft=/\\b(__p\\+=)''\\+/g,at=/(__e\\(.*?\\)|\\b__t\\))\\+'';/g,ct=/&(?:amp|lt|gt|quot|#39|#96);/g,lt=/[&<>\"'`]/g,st=RegExp(ct.source),pt=RegExp(lt.source),ht=/<%-([\\s\\S]+?)%>/g,_t=/<%([\\s\\S]+?)%>/g,gt=/<%=([\\s\\S]+?)%>/g,vt=/[\\u0300-\\u036f\\ufe20-\\ufe23]/g,yt=/\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g,dt=/\\w*$/,mt=/^0[xX]/,wt=/^\\[object .+?Constructor\\]$/,bt=/[\\xc0-\\xd6\\xd8-\\xde\\xdf-\\xf6\\xf8-\\xff]/g,xt=/($^)/,At=/[.*+?^${}()|[\\]\\/\\\\]/g,jt=RegExp(At.source),Ot=/['\\n\\r\\u2028\\u2029\\\\]/g,Et=RegExp(\"[A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde]+(?=[A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde][a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff]+)|[A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde]?[a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff]+|[A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde]+|[0-9]+\",\"g\"),It=\" \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\",kt=\"Array ArrayBuffer Date Error Float32Array Float64Array Function Int8Array Int16Array Int32Array Math Number Object RegExp Set String _ clearTimeout document isFinite parseInt setTimeout TypeError Uint8Array Uint8ClampedArray Uint16Array Uint32Array WeakMap window\".split(\" \"),Rt=\"constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf\".split(\" \"),St={};\r\nSt[X]=St[H]=St[Q]=St[nt]=St[tt]=St[rt]=St[et]=St[ut]=St[ot]=true,St[B]=St[z]=St[J]=St[M]=St[D]=St[q]=St[K]=St[\"[object Map]\"]=St[V]=St[Y]=St[Z]=St[\"[object Set]\"]=St[G]=St[\"[object WeakMap]\"]=false;var Ct={};Ct[B]=Ct[z]=Ct[J]=Ct[M]=Ct[D]=Ct[X]=Ct[H]=Ct[Q]=Ct[nt]=Ct[tt]=Ct[V]=Ct[Y]=Ct[Z]=Ct[G]=Ct[rt]=Ct[et]=Ct[ut]=Ct[ot]=true,Ct[q]=Ct[K]=Ct[\"[object Map]\"]=Ct[\"[object Set]\"]=Ct[\"[object WeakMap]\"]=false;var Tt={leading:false,maxWait:0,trailing:false},Ut={\"\\xc0\":\"A\",\"\\xc1\":\"A\",\"\\xc2\":\"A\",\"\\xc3\":\"A\",\"\\xc4\":\"A\",\"\\xc5\":\"A\",\"\\xe0\":\"a\",\"\\xe1\":\"a\",\"\\xe2\":\"a\",\"\\xe3\":\"a\",\"\\xe4\":\"a\",\"\\xe5\":\"a\",\"\\xc7\":\"C\",\"\\xe7\":\"c\",\"\\xd0\":\"D\",\"\\xf0\":\"d\",\"\\xc8\":\"E\",\"\\xc9\":\"E\",\"\\xca\":\"E\",\"\\xcb\":\"E\",\"\\xe8\":\"e\",\"\\xe9\":\"e\",\"\\xea\":\"e\",\"\\xeb\":\"e\",\"\\xcc\":\"I\",\"\\xcd\":\"I\",\"\\xce\":\"I\",\"\\xcf\":\"I\",\"\\xec\":\"i\",\"\\xed\":\"i\",\"\\xee\":\"i\",\"\\xef\":\"i\",\"\\xd1\":\"N\",\"\\xf1\":\"n\",\"\\xd2\":\"O\",\"\\xd3\":\"O\",\"\\xd4\":\"O\",\"\\xd5\":\"O\",\"\\xd6\":\"O\",\"\\xd8\":\"O\",\"\\xf2\":\"o\",\"\\xf3\":\"o\",\"\\xf4\":\"o\",\"\\xf5\":\"o\",\"\\xf6\":\"o\",\"\\xf8\":\"o\",\"\\xd9\":\"U\",\"\\xda\":\"U\",\"\\xdb\":\"U\",\"\\xdc\":\"U\",\"\\xf9\":\"u\",\"\\xfa\":\"u\",\"\\xfb\":\"u\",\"\\xfc\":\"u\",\"\\xdd\":\"Y\",\"\\xfd\":\"y\",\"\\xff\":\"y\",\"\\xc6\":\"Ae\",\"\\xe6\":\"ae\",\"\\xde\":\"Th\",\"\\xfe\":\"th\",\"\\xdf\":\"ss\"},Ft={\"&\":\"&amp;\",\"<\":\"&lt;\",\">\":\"&gt;\",'\"':\"&quot;\",\"'\":\"&#39;\",\"`\":\"&#96;\"},Wt={\"&amp;\":\"&\",\"&lt;\":\"<\",\"&gt;\":\">\",\"&quot;\":'\"',\"&#39;\":\"'\",\"&#96;\":\"`\"},Nt={\"function\":true,object:true},Lt={\"\\\\\":\"\\\\\",\"'\":\"'\",\"\\n\":\"n\",\"\\r\":\"r\",\"\\u2028\":\"u2028\",\"\\u2029\":\"u2029\"},$t=Nt[typeof exports]&&exports&&!exports.nodeType&&exports,Pt=Nt[typeof module]&&module&&!module.nodeType&&module,Bt=Nt[typeof self]&&self&&self.Object&&self,Nt=Nt[typeof window]&&window&&window.Object&&window,zt=Pt&&Pt.exports===$t&&$t,Mt=$t&&Pt&&typeof global==\"object\"&&global||Nt!==(this&&this.window)&&Nt||Bt||this,Dt=function(){try{Object({toString:0}+\"\")\r\n}catch(n){return function(){return false}}return function(n){return typeof n.toString!=\"function\"&&typeof(n+\"\")==\"string\"}}(),qt=m();typeof define==\"function\"&&typeof define.amd==\"object\"&&define.amd?(Mt._=qt, define(function(){return qt})):$t&&Pt?zt?(Pt.exports=qt)._=qt:$t._=qt:Mt._=qt}).call(this);;/*! globalize - v0.1.0pre - 2012-10-18\r\n* http://wiki.jqueryui.com/Globalize\r\n* Copyright 2012 ; Licensed MIT */\r\n(function(e,t){var n,r,i,s,o,u,a,f,l,c,h,p,d,v,m,g,y,b,w,E,S,x,T,N;n=function(e){return new n.prototype.init(e)},typeof require!=\"undefined\"&&typeof exports!=\"undefined\"&&typeof module!=\"undefined\"?module.exports=n:e.Globalize=n,n.cultures={},n.prototype={constructor:n,init:function(e){return this.cultures=n.cultures,this.cultureSelector=e,this}},n.prototype.init.prototype=n.prototype,n.cultures[\"default\"]={name:\"en\",englishName:\"English\",nativeName:\"English\",isRTL:!1,language:\"en\",numberFormat:{pattern:[\"-n\"],decimals:2,\",\":\",\",\".\":\".\",groupSizes:[3],\"+\":\"+\",\"-\":\"-\",NaN:\"NaN\",negativeInfinity:\"-Infinity\",positiveInfinity:\"Infinity\",percent:{pattern:[\"-n %\",\"n %\"],decimals:2,groupSizes:[3],\",\":\",\",\".\":\".\",symbol:\"%\"},currency:{pattern:[\"($n)\",\"$n\"],decimals:2,groupSizes:[3],\",\":\",\",\".\":\".\",symbol:\"$\"}},calendars:{standard:{name:\"Gregorian_USEnglish\",\"/\":\"/\",\":\":\":\",firstDay:0,days:{names:[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],namesAbbr:[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],namesShort:[\"Su\",\"Mo\",\"Tu\",\"We\",\"Th\",\"Fr\",\"Sa\"]},months:{names:[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\",\"\"],namesAbbr:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\",\"\"]},AM:[\"AM\",\"am\",\"AM\"],PM:[\"PM\",\"pm\",\"PM\"],eras:[{name:\"A.D.\",start:null,offset:0}],twoDigitYearMax:2029,patterns:{d:\"M/d/yyyy\",D:\"dddd, MMMM dd, yyyy\",t:\"h:mm tt\",T:\"h:mm:ss tt\",f:\"dddd, MMMM dd, yyyy h:mm tt\",F:\"dddd, MMMM dd, yyyy h:mm:ss tt\",M:\"MMMM dd\",Y:\"yyyy MMMM\",S:\"yyyy'-'MM'-'dd'T'HH':'mm':'ss\"}}},messages:{}},n.cultures[\"default\"].calendar=n.cultures[\"default\"].calendars.standard,n.cultures.en=n.cultures[\"default\"],n.cultureSelector=\"en\",r=/^0x[a-f0-9]+$/i,i=/^[+\\-]?infinity$/i,s=/^[+\\-]?\\d*\\.?\\d*(e[+\\-]?\\d+)?$/,o=/^\\s+|\\s+$/g,u=function(e,t){if(e.indexOf)return e.indexOf(t);for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},a=function(e,t){return e.substr(e.length-t.length)===t},f=function(){var e,n,r,i,s,o,u=arguments[0]||{},a=1,p=arguments.length,d=!1;typeof u==\"boolean\"&&(d=u,u=arguments[1]||{},a=2),typeof u!=\"object\"&&!c(u)&&(u={});for(;a<p;a++)if((e=arguments[a])!=null)for(n in e){r=u[n],i=e[n];if(u===i)continue;d&&i&&(h(i)||(s=l(i)))?(s?(s=!1,o=r&&l(r)?r:[]):o=r&&h(r)?r:{},u[n]=f(d,o,i)):i!==t&&(u[n]=i)}return u},l=Array.isArray||function(e){return Object.prototype.toString.call(e)===\"[object Array]\"},c=function(e){return Object.prototype.toString.call(e)===\"[object Function]\"},h=function(e){return Object.prototype.toString.call(e)===\"[object Object]\"},p=function(e,t){return e.indexOf(t)===0},d=function(e){return(e+\"\").replace(o,\"\")},v=function(e){return isNaN(e)?NaN:Math[e<0?\"ceil\":\"floor\"](e)},m=function(e,t,n){var r;for(r=e.length;r<t;r+=1)e=n?\"0\"+e:e+\"0\";return e},g=function(e,t){var n=0,r=!1;for(var i=0,s=e.length;i<s;i++){var o=e.charAt(i);switch(o){case\"'\":r?t.push(\"'\"):n++,r=!1;break;case\"\\\\\":r&&t.push(\"\\\\\"),r=!r;break;default:t.push(o),r=!1}}return n},y=function(e,t){t=t||\"F\";var n,r=e.patterns,i=t.length;if(i===1){n=r[t];if(!n)throw\"Invalid date format string '\"+t+\"'.\";t=n}else i===2&&t.charAt(0)===\"%\"&&(t=t.charAt(1));return t},b=function(e,t,n){function T(e,t){var n,r=e+\"\";return t>1&&r.length<t?(n=c[t-2]+r,n.substr(n.length-t,t)):(n=r,n)}function N(){return h||p?h:(h=d.test(t),p=!0,h)}function C(e,t){if(w)return w[t];switch(t){case 0:return e.getFullYear();case 1:return e.getMonth();case 2:return e.getDate();default:throw\"Invalid part value \"+t}}var r=n.calendar,i=r.convert,s;if(!t||!t.length||t===\"i\"){if(n&&n.name.length)if(i)s=b(e,r.patterns.F,n);else{var o=new Date(e.getTime()),u=S(e,r.eras);o.setFullYear(x(e,r,u)),s=o.toLocaleString()}else s=e.toString();return s}var a=r.eras,f=t===\"s\";t=y(r,t),s=[];var l,c=[\"0\",\"00\",\"000\"],h,p,d=/([^d]|^)(d|dd)([^d]|$)/g,v=0,m=E(),w;!f&&i&&(w=i.fromGregorian(e));for(;;){var k=m.lastIndex,L=m.exec(t),A=t.slice(k,L?L.index:t.length);v+=g(A,s);if(!L)break;if(v%2){s.push(L[0]);continue}var O=L[0],M=O.length;switch(O){case\"ddd\":case\"dddd\":var _=M===3?r.days.namesAbbr:r.days.names;s.push(_[e.getDay()]);break;case\"d\":case\"dd\":h=!0,s.push(T(C(e,2),M));break;case\"MMM\":case\"MMMM\":var D=C(e,1);s.push(r.monthsGenitive&&N()?r.monthsGenitive[M===3?\"namesAbbr\":\"names\"][D]:r.months[M===3?\"namesAbbr\":\"names\"][D]);break;case\"M\":case\"MM\":s.push(T(C(e,1)+1,M));break;case\"y\":case\"yy\":case\"yyyy\":D=w?w[0]:x(e,r,S(e,a),f),M<4&&(D%=100),s.push(T(D,M));break;case\"h\":case\"hh\":l=e.getHours()%12,l===0&&(l=12),s.push(T(l,M));break;case\"H\":case\"HH\":s.push(T(e.getHours(),M));break;case\"m\":case\"mm\":s.push(T(e.getMinutes(),M));break;case\"s\":case\"ss\":s.push(T(e.getSeconds(),M));break;case\"t\":case\"tt\":D=e.getHours()<12?r.AM?r.AM[0]:\" \":r.PM?r.PM[0]:\" \",s.push(M===1?D.charAt(0):D);break;case\"f\":case\"ff\":case\"fff\":s.push(T(e.getMilliseconds(),3).substr(0,M));break;case\"z\":case\"zz\":l=e.getTimezoneOffset()/60,s.push((l<=0?\"+\":\"-\")+T(Math.floor(Math.abs(l)),M));break;case\"zzz\":l=e.getTimezoneOffset()/60,s.push((l<=0?\"+\":\"-\")+T(Math.floor(Math.abs(l)),2)+\":\"+T(Math.abs(e.getTimezoneOffset()%60),2));break;case\"g\":case\"gg\":r.eras&&s.push(r.eras[S(e,a)].name);break;case\"/\":s.push(r[\"/\"]);break;default:throw\"Invalid date format pattern '\"+O+\"'.\"}}return s.join(\"\")},function(){var e;e=function(e,t,n){var r=n.groupSizes,i=r[0],s=1,o=Math.pow(10,t),u=Math.round(e*o)/o;isFinite(u)||(u=e),e=u;var a=e+\"\",f=\"\",l=a.split(/e/i),c=l.length>1?parseInt(l[1],10):0;a=l[0],l=a.split(\".\"),a=l[0],f=l.length>1?l[1]:\"\";var h;c>0?(f=m(f,c,!1),a+=f.slice(0,c),f=f.substr(c)):c<0&&(c=-c,a=m(a,c+1,!0),f=a.slice(-c,a.length)+f,a=a.slice(0,-c)),t>0?f=n[\".\"]+(f.length>t?f.slice(0,t):m(f,t)):f=\"\";var p=a.length-1,d=n[\",\"],v=\"\";while(p>=0){if(i===0||i>p)return a.slice(0,p+1)+(v.length?d+v+f:f);v=a.slice(p-i+1,p+1)+(v.length?d+v:\"\"),p-=i,s<r.length&&(i=r[s],s++)}return a.slice(0,p+1)+d+v+f},w=function(t,n,r){if(!isFinite(t))return t===Infinity?r.numberFormat.positiveInfinity:t===-Infinity?r.numberFormat.negativeInfinity:r.numberFormat.NaN;if(!n||n===\"i\")return r.name.length?t.toLocaleString():t.toString();n=n||\"D\";var i=r.numberFormat,s=Math.abs(t),o=-1,u;n.length>1&&(o=parseInt(n.slice(1),10));var a=n.charAt(0).toUpperCase(),f;switch(a){case\"D\":u=\"n\",s=v(s),o!==-1&&(s=m(\"\"+s,o,!0)),t<0&&(s=\"-\"+s);break;case\"N\":f=i;case\"C\":f=f||i.currency;case\"P\":f=f||i.percent,u=t<0?f.pattern[0]:f.pattern[1]||\"n\",o===-1&&(o=f.decimals),s=e(s*(a===\"P\"?100:1),o,f);break;default:throw\"Bad number format specifier: \"+a}var l=/n|\\$|-|%/g,c=\"\";for(;;){var h=l.lastIndex,p=l.exec(u);c+=u.slice(h,p?p.index:u.length);if(!p)break;switch(p[0]){case\"n\":c+=s;break;case\"$\":c+=i.currency.symbol;break;case\"-\":/[1-9]/.test(s)&&(c+=i[\"-\"]);break;case\"%\":c+=i.percent.symbol}}return c}}(),E=function(){return/\\/|dddd|ddd|dd|d|MMMM|MMM|MM|M|yyyy|yy|y|hh|h|HH|H|mm|m|ss|s|tt|t|fff|ff|f|zzz|zz|z|gg|g/g},S=function(e,t){if(!t)return 0;var n,r=e.getTime();for(var i=0,s=t.length;i<s;i++){n=t[i].start;if(n===null||r>=n)return i}return 0},x=function(e,t,n,r){var i=e.getFullYear();return!r&&t.eras&&(i-=t.eras[n].offset),i},function(){var e,t,n,r,i,s,o;e=function(e,t){if(t<100){var n=new Date,r=S(n),i=x(n,e,r),s=e.twoDigitYearMax;s=typeof s==\"string\"?(new Date).getFullYear()%100+parseInt(s,10):s,t+=i-i%100,t>s&&(t-=100)}return t},t=function(e,t,n){var r,i=e.days,a=e._upperDays;return a||(e._upperDays=a=[o(i.names),o(i.namesAbbr),o(i.namesShort)]),t=s(t),n?(r=u(a[1],t),r===-1&&(r=u(a[2],t))):r=u(a[0],t),r},n=function(e,t,n){var r=e.months,i=e.monthsGenitive||e.months,a=e._upperMonths,f=e._upperMonthsGen;a||(e._upperMonths=a=[o(r.names),o(r.namesAbbr)],e._upperMonthsGen=f=[o(i.names),o(i.namesAbbr)]),t=s(t);var l=u(n?a[1]:a[0],t);return l<0&&(l=u(n?f[1]:f[0],t)),l},r=function(e,t){var n=e._parseRegExp;if(!n)e._parseRegExp=n={};else{var r=n[t];if(r)return r}var i=y(e,t).replace(/([\\^\\$\\.\\*\\+\\?\\|\\[\\]\\(\\)\\{\\}])/g,\"\\\\\\\\$1\"),s=[\"^\"],o=[],u=0,a=0,f=E(),l;while((l=f.exec(i))!==null){var c=i.slice(u,l.index);u=f.lastIndex,a+=g(c,s);if(a%2){s.push(l[0]);continue}var h=l[0],p=h.length,d;switch(h){case\"dddd\":case\"ddd\":case\"MMMM\":case\"MMM\":case\"gg\":case\"g\":d=\"(\\\\D+)\";break;case\"tt\":case\"t\":d=\"(\\\\D*)\";break;case\"yyyy\":case\"fff\":case\"ff\":case\"f\":d=\"(\\\\d{\"+p+\"})\";break;case\"dd\":case\"d\":case\"MM\":case\"M\":case\"yy\":case\"y\":case\"HH\":case\"H\":case\"hh\":case\"h\":case\"mm\":case\"m\":case\"ss\":case\"s\":d=\"(\\\\d\\\\d?)\";break;case\"zzz\":d=\"([+-]?\\\\d\\\\d?:\\\\d{2})\";break;case\"zz\":case\"z\":d=\"([+-]?\\\\d\\\\d?)\";break;case\"/\":d=\"(\\\\/)\";break;default:throw\"Invalid date format pattern '\"+h+\"'.\"}d&&s.push(d),o.push(l[0])}g(i.slice(u),s),s.push(\"$\");var v=s.join(\"\").replace(/\\s+/g,\"\\\\s+\"),m={regExp:v,groups:o};return n[t]=m},i=function(e,t,n){return e<t||e>n},s=function(e){return e.split(\"Â \").join(\" \").toUpperCase()},o=function(e){var t=[];for(var n=0,r=e.length;n<r;n++)t[n]=s(e[n]);return t},T=function(s,o,u){s=d(s);var a=u.calendar,f=r(a,o),l=(new RegExp(f.regExp)).exec(s);if(l===null)return null;var c=f.groups,h=null,v=null,m=null,g=null,y=null,b=0,w,E=0,S=0,x=0,T=null,N=!1;for(var C=0,k=c.length;C<k;C++){var L=l[C+1];if(L){var A=c[C],O=A.length,M=parseInt(L,10);switch(A){case\"dd\":case\"d\":g=M;if(i(g,1,31))return null;break;case\"MMM\":case\"MMMM\":m=n(a,L,O===3);if(i(m,0,11))return null;break;case\"M\":case\"MM\":m=M-1;if(i(m,0,11))return null;break;case\"y\":case\"yy\":case\"yyyy\":v=O<4?e(a,M):M;if(i(v,0,9999))return null;break;case\"h\":case\"hh\":b=M,b===12&&(b=0);if(i(b,0,11))return null;break;case\"H\":case\"HH\":b=M;if(i(b,0,23))return null;break;case\"m\":case\"mm\":E=M;if(i(E,0,59))return null;break;case\"s\":case\"ss\":S=M;if(i(S,0,59))return null;break;case\"tt\":case\"t\":N=a.PM&&(L===a.PM[0]||L===a.PM[1]||L===a.PM[2]);if(!N&&(!a.AM||L!==a.AM[0]&&L!==a.AM[1]&&L!==a.AM[2]))return null;break;case\"f\":case\"ff\":case\"fff\":x=M*Math.pow(10,3-O);if(i(x,0,999))return null;break;case\"ddd\":case\"dddd\":y=t(a,L,O===3);if(i(y,0,6))return null;break;case\"zzz\":var _=L.split(/:/);if(_.length!==2)return null;w=parseInt(_[0],10);if(i(w,-12,13))return null;var D=parseInt(_[1],10);if(i(D,0,59))return null;T=w*60+(p(L,\"-\")?-D:D);break;case\"z\":case\"zz\":w=M;if(i(w,-12,13))return null;T=w*60;break;case\"g\":case\"gg\":var P=L;if(!P||!a.eras)return null;P=d(P.toLowerCase());for(var H=0,B=a.eras.length;H<B;H++)if(P===a.eras[H].name.toLowerCase()){h=H;break}if(h===null)return null}}}var j=new Date,F,I=a.convert;F=I?I.fromGregorian(j)[0]:j.getFullYear(),v===null?v=F:a.eras&&(v+=a.eras[h||0].offset),m===null&&(m=0),g===null&&(g=1);if(I){j=I.toGregorian(v,m,g);if(j===null)return null}else{j.setFullYear(v,m,g);if(j.getDate()!==g)return null;if(y!==null&&j.getDay()!==y)return null}N&&b<12&&(b+=12),j.setHours(b,E,S,x);if(T!==null){var q=j.getMinutes()-(T+j.getTimezoneOffset());j.setHours(j.getHours()+parseInt(q/60,10),q%60)}return j}}(),N=function(e,t,n){var r=t[\"-\"],i=t[\"+\"],s;switch(n){case\"n -\":r=\" \"+r,i=\" \"+i;case\"n-\":a(e,r)?s=[\"-\",e.substr(0,e.length-r.length)]:a(e,i)&&(s=[\"+\",e.substr(0,e.length-i.length)]);break;case\"- n\":r+=\" \",i+=\" \";case\"-n\":p(e,r)?s=[\"-\",e.substr(r.length)]:p(e,i)&&(s=[\"+\",e.substr(i.length)]);break;case\"(n)\":p(e,\"(\")&&a(e,\")\")&&(s=[\"-\",e.substr(1,e.length-2)])}return s||[\"\",e]},n.prototype.findClosestCulture=function(e){return n.findClosestCulture.call(this,e)},n.prototype.format=function(e,t,r){return n.format.call(this,e,t,r)},n.prototype.localize=function(e,t){return n.localize.call(this,e,t)},n.prototype.parseInt=function(e,t,r){return n.parseInt.call(this,e,t,r)},n.prototype.parseFloat=function(e,t,r){return n.parseFloat.call(this,e,t,r)},n.prototype.culture=function(e){return n.culture.call(this,e)},n.addCultureInfo=function(e,t,n){var r={},i=!1;typeof e!=\"string\"?(n=e,e=this.culture().name,r=this.cultures[e]):typeof t!=\"string\"?(n=t,i=this.cultures[e]==null,r=this.cultures[e]||this.cultures[\"default\"]):(i=!0,r=this.cultures[t]),this.cultures[e]=f(!0,{},r,n),i&&(this.cultures[e].calendar=this.cultures[e].calendars.standard)},n.findClosestCulture=function(e){var t;if(!e)return this.findClosestCulture(this.cultureSelector)||this.cultures[\"default\"];typeof e==\"string\"&&(e=e.split(\",\"));if(l(e)){var n,r=this.cultures,i=e,s,o=i.length,u=[];for(s=0;s<o;s++){e=d(i[s]);var a,f=e.split(\";\");n=d(f[0]),f.length===1?a=1:(e=d(f[1]),e.indexOf(\"q=\")===0?(e=e.substr(2),a=parseFloat(e),a=isNaN(a)?0:a):a=1),u.push({lang:n,pri:a})}u.sort(function(e,t){return e.pri<t.pri?1:e.pri>t.pri?-1:0});for(s=0;s<o;s++){n=u[s].lang,t=r[n];if(t)return t}for(s=0;s<o;s++){n=u[s].lang;do{var c=n.lastIndexOf(\"-\");if(c===-1)break;n=n.substr(0,c),t=r[n];if(t)return t}while(1)}for(s=0;s<o;s++){n=u[s].lang;for(var h in r){var p=r[h];if(p.language==n)return p}}}else if(typeof e==\"object\")return e;return t||null},n.format=function(e,t,n){var r=this.findClosestCulture(n);return e instanceof Date?e=b(e,t,r):typeof e==\"number\"&&(e=w(e,t,r)),e},n.localize=function(e,t){return this.findClosestCulture(t).messages[e]||this.cultures[\"default\"].messages[e]},n.parseDate=function(e,t,n){n=this.findClosestCulture(n);var r,i,s;if(t){typeof t==\"string\"&&(t=[t]);if(t.length)for(var o=0,u=t.length;o<u;o++){var a=t[o];if(a){r=T(e,a,n);if(r)break}}}else{s=n.calendar.patterns;for(i in s){r=T(e,s[i],n);if(r)break}}return r||null},n.parseInt=function(e,t,r){return v(n.parseFloat(e,t,r))},n.parseFloat=function(e,t,n){typeof t!=\"number\"&&(n=t,t=10);var o=this.findClosestCulture(n),u=NaN,a=o.numberFormat;e.indexOf(o.numberFormat.currency.symbol)>-1&&(e=e.replace(o.numberFormat.currency.symbol,\"\"),e=e.replace(o.numberFormat.currency[\".\"],o.numberFormat[\".\"])),e.indexOf(o.numberFormat.percent.symbol)>-1&&(e=e.replace(o.numberFormat.percent.symbol,\"\")),e=e.replace(/ /g,\"\");if(i.test(e))u=parseFloat(e);else if(!t&&r.test(e))u=parseInt(e,16);else{var f=N(e,a,a.pattern[0]),l=f[0],c=f[1];l===\"\"&&a.pattern[0]!==\"(n)\"&&(f=N(e,a,\"(n)\"),l=f[0],c=f[1]),l===\"\"&&a.pattern[0]!==\"-n\"&&(f=N(e,a,\"-n\"),l=f[0],c=f[1]),l=l||\"+\";var h,p,d=c.indexOf(\"e\");d<0&&(d=c.indexOf(\"E\")),d<0?(p=c,h=null):(p=c.substr(0,d),h=c.substr(d+1));var v,m,g=a[\".\"],y=p.indexOf(g);y<0?(v=p,m=null):(v=p.substr(0,y),m=p.substr(y+g.length));var b=a[\",\"];v=v.split(b).join(\"\");var w=b.replace(/\\u00A0/g,\" \");b!==w&&(v=v.split(w).join(\"\"));var E=l+v;m!==null&&(E+=\".\"+m);if(h!==null){var S=N(h,a,\"-n\");E+=\"e\"+(S[0]||\"+\")+S[1]}s.test(E)&&(u=parseFloat(E))}return u},n.culture=function(e){return typeof e!=\"undefined\"&&(this.cultureSelector=e),this.findClosestCulture(e)||this.cultures[\"default\"]}})(this);;/*\r\n * Globalize Culture en-US\r\n *\r\n * http://github.com/jquery/globalize\r\n *\r\n * Copyright Software Freedom Conservancy, Inc.\r\n * Dual licensed under the MIT or GPL Version 2 licenses.\r\n * http://jquery.org/license\r\n *\r\n * This file was generated by the Globalize Culture Generator\r\n * Translation: bugs found in this file need to be fixed in the generator\r\n */\r\n\r\n(function( window, undefined ) {\r\n\r\nvar Globalize;\r\n\r\nif ( typeof require !== \"undefined\" &&\r\n\ttypeof exports !== \"undefined\" &&\r\n\ttypeof module !== \"undefined\" ) {\r\n\t// Assume CommonJS\r\n\tGlobalize = require( \"globalize\" );\r\n} else {\r\n\t// Global variable\r\n\tGlobalize = window.Globalize;\r\n}\r\n\r\nGlobalize.addCultureInfo( \"en-US\", \"default\", {\r\n\tname: \"en-US\",\r\n\tenglishName: \"English (United States)\"\r\n});\r\n\r\n}( this ));;/*! jQuery UI - v1.11.4 - 2015-08-25\r\n* http://jqueryui.com\r\n* Includes: core.js, widget.js, mouse.js, resizable.js, datepicker.js\r\n* Copyright 2015 jQuery Foundation and other contributors; Licensed MIT */\r\n\r\n(function(e){\"function\"==typeof define&&define.amd?define([\"jquery\"],e):e(jQuery)})(function(e){function t(t,s){var n,a,o,r=t.nodeName.toLowerCase();return\"area\"===r?(n=t.parentNode,a=n.name,t.href&&a&&\"map\"===n.nodeName.toLowerCase()?(o=e(\"img[usemap='#\"+a+\"']\")[0],!!o&&i(o)):!1):(/^(input|select|textarea|button|object)$/.test(r)?!t.disabled:\"a\"===r?t.href||s:s)&&i(t)}function i(t){return e.expr.filters.visible(t)&&!e(t).parents().addBack().filter(function(){return\"hidden\"===e.css(this,\"visibility\")}).length}function s(e){for(var t,i;e.length&&e[0]!==document;){if(t=e.css(\"position\"),(\"absolute\"===t||\"relative\"===t||\"fixed\"===t)&&(i=parseInt(e.css(\"zIndex\"),10),!isNaN(i)&&0!==i))return i;e=e.parent()}return 0}function n(){this._curInst=null,this._keyEvent=!1,this._disabledInputs=[],this._datepickerShowing=!1,this._inDialog=!1,this._mainDivId=\"ui-datepicker-div\",this._inlineClass=\"ui-datepicker-inline\",this._appendClass=\"ui-datepicker-append\",this._triggerClass=\"ui-datepicker-trigger\",this._dialogClass=\"ui-datepicker-dialog\",this._disableClass=\"ui-datepicker-disabled\",this._unselectableClass=\"ui-datepicker-unselectable\",this._currentClass=\"ui-datepicker-current-day\",this._dayOverClass=\"ui-datepicker-days-cell-over\",this.regional=[],this.regional[\"\"]={closeText:\"Done\",prevText:\"Prev\",nextText:\"Next\",currentText:\"Today\",monthNames:[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],monthNamesShort:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"],dayNames:[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],dayNamesShort:[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],dayNamesMin:[\"Su\",\"Mo\",\"Tu\",\"We\",\"Th\",\"Fr\",\"Sa\"],weekHeader:\"Wk\",dateFormat:\"mm/dd/yy\",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"},this._defaults={showOn:\"focus\",showAnim:\"fadeIn\",showOptions:{},defaultDate:null,appendText:\"\",buttonText:\"...\",buttonImage:\"\",buttonImageOnly:!1,hideIfNoPrevNext:!1,navigationAsDateFormat:!1,gotoCurrent:!1,changeMonth:!1,changeYear:!1,yearRange:\"c-10:c+10\",showOtherMonths:!1,selectOtherMonths:!1,showWeek:!1,calculateWeek:this.iso8601Week,shortYearCutoff:\"+10\",minDate:null,maxDate:null,duration:\"fast\",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:\"\",altFormat:\"\",constrainInput:!0,showButtonPanel:!1,autoSize:!1,disabled:!1},e.extend(this._defaults,this.regional[\"\"]),this.regional.en=e.extend(!0,{},this.regional[\"\"]),this.regional[\"en-US\"]=e.extend(!0,{},this.regional.en),this.dpDiv=a(e(\"<div id='\"+this._mainDivId+\"' class='ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>\"))}function a(t){var i=\"button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a\";return t.delegate(i,\"mouseout\",function(){e(this).removeClass(\"ui-state-hover\"),-1!==this.className.indexOf(\"ui-datepicker-prev\")&&e(this).removeClass(\"ui-datepicker-prev-hover\"),-1!==this.className.indexOf(\"ui-datepicker-next\")&&e(this).removeClass(\"ui-datepicker-next-hover\")}).delegate(i,\"mouseover\",o)}function o(){e.datepicker._isDisabledDatepicker(d.inline?d.dpDiv.parent()[0]:d.input[0])||(e(this).parents(\".ui-datepicker-calendar\").find(\"a\").removeClass(\"ui-state-hover\"),e(this).addClass(\"ui-state-hover\"),-1!==this.className.indexOf(\"ui-datepicker-prev\")&&e(this).addClass(\"ui-datepicker-prev-hover\"),-1!==this.className.indexOf(\"ui-datepicker-next\")&&e(this).addClass(\"ui-datepicker-next-hover\"))}function r(t,i){e.extend(t,i);for(var s in i)null==i[s]&&(t[s]=i[s]);return t}e.ui=e.ui||{},e.extend(e.ui,{version:\"1.11.4\",keyCode:{BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38}}),e.fn.extend({scrollParent:function(t){var i=this.css(\"position\"),s=\"absolute\"===i,n=t?/(auto|scroll|hidden)/:/(auto|scroll)/,a=this.parents().filter(function(){var t=e(this);return s&&\"static\"===t.css(\"position\")?!1:n.test(t.css(\"overflow\")+t.css(\"overflow-y\")+t.css(\"overflow-x\"))}).eq(0);return\"fixed\"!==i&&a.length?a:e(this[0].ownerDocument||document)},uniqueId:function(){var e=0;return function(){return this.each(function(){this.id||(this.id=\"ui-id-\"+ ++e)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\\d+$/.test(this.id)&&e(this).removeAttr(\"id\")})}}),e.extend(e.expr[\":\"],{data:e.expr.createPseudo?e.expr.createPseudo(function(t){return function(i){return!!e.data(i,t)}}):function(t,i,s){return!!e.data(t,s[3])},focusable:function(i){return t(i,!isNaN(e.attr(i,\"tabindex\")))},tabbable:function(i){var s=e.attr(i,\"tabindex\"),n=isNaN(s);return(n||s>=0)&&t(i,!n)}}),e(\"<a>\").outerWidth(1).jquery||e.each([\"Width\",\"Height\"],function(t,i){function s(t,i,s,a){return e.each(n,function(){i-=parseFloat(e.css(t,\"padding\"+this))||0,s&&(i-=parseFloat(e.css(t,\"border\"+this+\"Width\"))||0),a&&(i-=parseFloat(e.css(t,\"margin\"+this))||0)}),i}var n=\"Width\"===i?[\"Left\",\"Right\"]:[\"Top\",\"Bottom\"],a=i.toLowerCase(),o={innerWidth:e.fn.innerWidth,innerHeight:e.fn.innerHeight,outerWidth:e.fn.outerWidth,outerHeight:e.fn.outerHeight};e.fn[\"inner\"+i]=function(t){return void 0===t?o[\"inner\"+i].call(this):this.each(function(){e(this).css(a,s(this,t)+\"px\")})},e.fn[\"outer\"+i]=function(t,n){return\"number\"!=typeof t?o[\"outer\"+i].call(this,t):this.each(function(){e(this).css(a,s(this,t,!0,n)+\"px\")})}}),e.fn.addBack||(e.fn.addBack=function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}),e(\"<a>\").data(\"a-b\",\"a\").removeData(\"a-b\").data(\"a-b\")&&(e.fn.removeData=function(t){return function(i){return arguments.length?t.call(this,e.camelCase(i)):t.call(this)}}(e.fn.removeData)),e.ui.ie=!!/msie [\\w.]+/.exec(navigator.userAgent.toLowerCase()),e.fn.extend({focus:function(t){return function(i,s){return\"number\"==typeof i?this.each(function(){var t=this;setTimeout(function(){e(t).focus(),s&&s.call(t)},i)}):t.apply(this,arguments)}}(e.fn.focus),disableSelection:function(){var e=\"onselectstart\"in document.createElement(\"div\")?\"selectstart\":\"mousedown\";return function(){return this.bind(e+\".ui-disableSelection\",function(e){e.preventDefault()})}}(),enableSelection:function(){return this.unbind(\".ui-disableSelection\")},zIndex:function(t){if(void 0!==t)return this.css(\"zIndex\",t);if(this.length)for(var i,s,n=e(this[0]);n.length&&n[0]!==document;){if(i=n.css(\"position\"),(\"absolute\"===i||\"relative\"===i||\"fixed\"===i)&&(s=parseInt(n.css(\"zIndex\"),10),!isNaN(s)&&0!==s))return s;n=n.parent()}return 0}}),e.ui.plugin={add:function(t,i,s){var n,a=e.ui[t].prototype;for(n in s)a.plugins[n]=a.plugins[n]||[],a.plugins[n].push([i,s[n]])},call:function(e,t,i,s){var n,a=e.plugins[t];if(a&&(s||e.element[0].parentNode&&11!==e.element[0].parentNode.nodeType))for(n=0;a.length>n;n++)e.options[a[n][0]]&&a[n][1].apply(e.element,i)}};var h=0,l=Array.prototype.slice;e.cleanData=function(t){return function(i){var s,n,a;for(a=0;null!=(n=i[a]);a++)try{s=e._data(n,\"events\"),s&&s.remove&&e(n).triggerHandler(\"remove\")}catch(o){}t(i)}}(e.cleanData),e.widget=function(t,i,s){var n,a,o,r,h={},l=t.split(\".\")[0];return t=t.split(\".\")[1],n=l+\"-\"+t,s||(s=i,i=e.Widget),e.expr[\":\"][n.toLowerCase()]=function(t){return!!e.data(t,n)},e[l]=e[l]||{},a=e[l][t],o=e[l][t]=function(e,t){return this._createWidget?(arguments.length&&this._createWidget(e,t),void 0):new o(e,t)},e.extend(o,a,{version:s.version,_proto:e.extend({},s),_childConstructors:[]}),r=new i,r.options=e.widget.extend({},r.options),e.each(s,function(t,s){return e.isFunction(s)?(h[t]=function(){var e=function(){return i.prototype[t].apply(this,arguments)},n=function(e){return i.prototype[t].apply(this,e)};return function(){var t,i=this._super,a=this._superApply;return this._super=e,this._superApply=n,t=s.apply(this,arguments),this._super=i,this._superApply=a,t}}(),void 0):(h[t]=s,void 0)}),o.prototype=e.widget.extend(r,{widgetEventPrefix:a?r.widgetEventPrefix||t:t},h,{constructor:o,namespace:l,widgetName:t,widgetFullName:n}),a?(e.each(a._childConstructors,function(t,i){var s=i.prototype;e.widget(s.namespace+\".\"+s.widgetName,o,i._proto)}),delete a._childConstructors):i._childConstructors.push(o),e.widget.bridge(t,o),o},e.widget.extend=function(t){for(var i,s,n=l.call(arguments,1),a=0,o=n.length;o>a;a++)for(i in n[a])s=n[a][i],n[a].hasOwnProperty(i)&&void 0!==s&&(t[i]=e.isPlainObject(s)?e.isPlainObject(t[i])?e.widget.extend({},t[i],s):e.widget.extend({},s):s);return t},e.widget.bridge=function(t,i){var s=i.prototype.widgetFullName||t;e.fn[t]=function(n){var a=\"string\"==typeof n,o=l.call(arguments,1),r=this;return a?this.each(function(){var i,a=e.data(this,s);return\"instance\"===n?(r=a,!1):a?e.isFunction(a[n])&&\"_\"!==n.charAt(0)?(i=a[n].apply(a,o),i!==a&&void 0!==i?(r=i&&i.jquery?r.pushStack(i.get()):i,!1):void 0):e.error(\"no such method '\"+n+\"' for \"+t+\" widget instance\"):e.error(\"cannot call methods on \"+t+\" prior to initialization; \"+\"attempted to call method '\"+n+\"'\")}):(o.length&&(n=e.widget.extend.apply(null,[n].concat(o))),this.each(function(){var t=e.data(this,s);t?(t.option(n||{}),t._init&&t._init()):e.data(this,s,new i(n,this))})),r}},e.Widget=function(){},e.Widget._childConstructors=[],e.Widget.prototype={widgetName:\"widget\",widgetEventPrefix:\"\",defaultElement:\"<div>\",options:{disabled:!1,create:null},_createWidget:function(t,i){i=e(i||this.defaultElement||this)[0],this.element=e(i),this.uuid=h++,this.eventNamespace=\".\"+this.widgetName+this.uuid,this.bindings=e(),this.hoverable=e(),this.focusable=e(),i!==this&&(e.data(i,this.widgetFullName,this),this._on(!0,this.element,{remove:function(e){e.target===i&&this.destroy()}}),this.document=e(i.style?i.ownerDocument:i.document||i),this.window=e(this.document[0].defaultView||this.document[0].parentWindow)),this.options=e.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this._trigger(\"create\",null,this._getCreateEventData()),this._init()},_getCreateOptions:e.noop,_getCreateEventData:e.noop,_create:e.noop,_init:e.noop,destroy:function(){this._destroy(),this.element.unbind(this.eventNamespace).removeData(this.widgetFullName).removeData(e.camelCase(this.widgetFullName)),this.widget().unbind(this.eventNamespace).removeAttr(\"aria-disabled\").removeClass(this.widgetFullName+\"-disabled \"+\"ui-state-disabled\"),this.bindings.unbind(this.eventNamespace),this.hoverable.removeClass(\"ui-state-hover\"),this.focusable.removeClass(\"ui-state-focus\")},_destroy:e.noop,widget:function(){return this.element},option:function(t,i){var s,n,a,o=t;if(0===arguments.length)return e.widget.extend({},this.options);if(\"string\"==typeof t)if(o={},s=t.split(\".\"),t=s.shift(),s.length){for(n=o[t]=e.widget.extend({},this.options[t]),a=0;s.length-1>a;a++)n[s[a]]=n[s[a]]||{},n=n[s[a]];if(t=s.pop(),1===arguments.length)return void 0===n[t]?null:n[t];n[t]=i}else{if(1===arguments.length)return void 0===this.options[t]?null:this.options[t];o[t]=i}return this._setOptions(o),this},_setOptions:function(e){var t;for(t in e)this._setOption(t,e[t]);return this},_setOption:function(e,t){return this.options[e]=t,\"disabled\"===e&&(this.widget().toggleClass(this.widgetFullName+\"-disabled\",!!t),t&&(this.hoverable.removeClass(\"ui-state-hover\"),this.focusable.removeClass(\"ui-state-focus\"))),this},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_on:function(t,i,s){var n,a=this;\"boolean\"!=typeof t&&(s=i,i=t,t=!1),s?(i=n=e(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),e.each(s,function(s,o){function r(){return t||a.options.disabled!==!0&&!e(this).hasClass(\"ui-state-disabled\")?(\"string\"==typeof o?a[o]:o).apply(a,arguments):void 0}\"string\"!=typeof o&&(r.guid=o.guid=o.guid||r.guid||e.guid++);var h=s.match(/^([\\w:-]*)\\s*(.*)$/),l=h[1]+a.eventNamespace,u=h[2];u?n.delegate(u,l,r):i.bind(l,r)})},_off:function(t,i){i=(i||\"\").split(\" \").join(this.eventNamespace+\" \")+this.eventNamespace,t.unbind(i).undelegate(i),this.bindings=e(this.bindings.not(t).get()),this.focusable=e(this.focusable.not(t).get()),this.hoverable=e(this.hoverable.not(t).get())},_delay:function(e,t){function i(){return(\"string\"==typeof e?s[e]:e).apply(s,arguments)}var s=this;return setTimeout(i,t||0)},_hoverable:function(t){this.hoverable=this.hoverable.add(t),this._on(t,{mouseenter:function(t){e(t.currentTarget).addClass(\"ui-state-hover\")},mouseleave:function(t){e(t.currentTarget).removeClass(\"ui-state-hover\")}})},_focusable:function(t){this.focusable=this.focusable.add(t),this._on(t,{focusin:function(t){e(t.currentTarget).addClass(\"ui-state-focus\")},focusout:function(t){e(t.currentTarget).removeClass(\"ui-state-focus\")}})},_trigger:function(t,i,s){var n,a,o=this.options[t];if(s=s||{},i=e.Event(i),i.type=(t===this.widgetEventPrefix?t:this.widgetEventPrefix+t).toLowerCase(),i.target=this.element[0],a=i.originalEvent)for(n in a)n in i||(i[n]=a[n]);return this.element.trigger(i,s),!(e.isFunction(o)&&o.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},e.each({show:\"fadeIn\",hide:\"fadeOut\"},function(t,i){e.Widget.prototype[\"_\"+t]=function(s,n,a){\"string\"==typeof n&&(n={effect:n});var o,r=n?n===!0||\"number\"==typeof n?i:n.effect||i:t;n=n||{},\"number\"==typeof n&&(n={duration:n}),o=!e.isEmptyObject(n),n.complete=a,n.delay&&s.delay(n.delay),o&&e.effects&&e.effects.effect[r]?s[t](n):r!==t&&s[r]?s[r](n.duration,n.easing,a):s.queue(function(i){e(this)[t](),a&&a.call(s[0]),i()})}}),e.widget;var u=!1;e(document).mouseup(function(){u=!1}),e.widget(\"ui.mouse\",{version:\"1.11.4\",options:{cancel:\"input,textarea,button,select,option\",distance:1,delay:0},_mouseInit:function(){var t=this;this.element.bind(\"mousedown.\"+this.widgetName,function(e){return t._mouseDown(e)}).bind(\"click.\"+this.widgetName,function(i){return!0===e.data(i.target,t.widgetName+\".preventClickEvent\")?(e.removeData(i.target,t.widgetName+\".preventClickEvent\"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.unbind(\".\"+this.widgetName),this._mouseMoveDelegate&&this.document.unbind(\"mousemove.\"+this.widgetName,this._mouseMoveDelegate).unbind(\"mouseup.\"+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(t){if(!u){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(t),this._mouseDownEvent=t;var i=this,s=1===t.which,n=\"string\"==typeof this.options.cancel&&t.target.nodeName?e(t.target).closest(this.options.cancel).length:!1;return s&&!n&&this._mouseCapture(t)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=this._mouseStart(t)!==!1,!this._mouseStarted)?(t.preventDefault(),!0):(!0===e.data(t.target,this.widgetName+\".preventClickEvent\")&&e.removeData(t.target,this.widgetName+\".preventClickEvent\"),this._mouseMoveDelegate=function(e){return i._mouseMove(e)},this._mouseUpDelegate=function(e){return i._mouseUp(e)},this.document.bind(\"mousemove.\"+this.widgetName,this._mouseMoveDelegate).bind(\"mouseup.\"+this.widgetName,this._mouseUpDelegate),t.preventDefault(),u=!0,!0)):!0}},_mouseMove:function(t){if(this._mouseMoved){if(e.ui.ie&&(!document.documentMode||9>document.documentMode)&&!t.button)return this._mouseUp(t);if(!t.which)return this._mouseUp(t)}return(t.which||t.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(t),t.preventDefault()):(this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,t)!==!1,this._mouseStarted?this._mouseDrag(t):this._mouseUp(t)),!this._mouseStarted)},_mouseUp:function(t){return this.document.unbind(\"mousemove.\"+this.widgetName,this._mouseMoveDelegate).unbind(\"mouseup.\"+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,t.target===this._mouseDownEvent.target&&e.data(t.target,this.widgetName+\".preventClickEvent\",!0),this._mouseStop(t)),u=!1,!1},_mouseDistanceMet:function(e){return Math.max(Math.abs(this._mouseDownEvent.pageX-e.pageX),Math.abs(this._mouseDownEvent.pageY-e.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),e.widget(\"ui.resizable\",e.ui.mouse,{version:\"1.11.4\",widgetEventPrefix:\"resize\",options:{alsoResize:!1,animate:!1,animateDuration:\"slow\",animateEasing:\"swing\",aspectRatio:!1,autoHide:!1,containment:!1,ghost:!1,grid:!1,handles:\"e,s,se\",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(e){return parseInt(e,10)||0},_isNumber:function(e){return!isNaN(parseInt(e,10))},_hasScroll:function(t,i){if(\"hidden\"===e(t).css(\"overflow\"))return!1;var s=i&&\"left\"===i?\"scrollLeft\":\"scrollTop\",n=!1;return t[s]>0?!0:(t[s]=1,n=t[s]>0,t[s]=0,n)},_create:function(){var t,i,s,n,a,o=this,r=this.options;if(this.element.addClass(\"ui-resizable\"),e.extend(this,{_aspectRatio:!!r.aspectRatio,aspectRatio:r.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:r.helper||r.ghost||r.animate?r.helper||\"ui-resizable-helper\":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(e(\"<div class='ui-wrapper' style='overflow: hidden;'></div>\").css({position:this.element.css(\"position\"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css(\"top\"),left:this.element.css(\"left\")})),this.element=this.element.parent().data(\"ui-resizable\",this.element.resizable(\"instance\")),this.elementIsWrapper=!0,this.element.css({marginLeft:this.originalElement.css(\"marginLeft\"),marginTop:this.originalElement.css(\"marginTop\"),marginRight:this.originalElement.css(\"marginRight\"),marginBottom:this.originalElement.css(\"marginBottom\")}),this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0}),this.originalResizeStyle=this.originalElement.css(\"resize\"),this.originalElement.css(\"resize\",\"none\"),this._proportionallyResizeElements.push(this.originalElement.css({position:\"static\",zoom:1,display:\"block\"})),this.originalElement.css({margin:this.originalElement.css(\"margin\")}),this._proportionallyResize()),this.handles=r.handles||(e(\".ui-resizable-handle\",this.element).length?{n:\".ui-resizable-n\",e:\".ui-resizable-e\",s:\".ui-resizable-s\",w:\".ui-resizable-w\",se:\".ui-resizable-se\",sw:\".ui-resizable-sw\",ne:\".ui-resizable-ne\",nw:\".ui-resizable-nw\"}:\"e,s,se\"),this._handles=e(),this.handles.constructor===String)for(\"all\"===this.handles&&(this.handles=\"n,e,s,w,se,sw,ne,nw\"),t=this.handles.split(\",\"),this.handles={},i=0;t.length>i;i++)s=e.trim(t[i]),a=\"ui-resizable-\"+s,n=e(\"<div class='ui-resizable-handle \"+a+\"'></div>\"),n.css({zIndex:r.zIndex}),\"se\"===s&&n.addClass(\"ui-icon ui-icon-gripsmall-diagonal-se\"),this.handles[s]=\".ui-resizable-\"+s,this.element.append(n);this._renderAxis=function(t){var i,s,n,a;t=t||this.element;for(i in this.handles)this.handles[i].constructor===String?this.handles[i]=this.element.children(this.handles[i]).first().show():(this.handles[i].jquery||this.handles[i].nodeType)&&(this.handles[i]=e(this.handles[i]),this._on(this.handles[i],{mousedown:o._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=e(this.handles[i],this.element),a=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=[\"padding\",/ne|nw|n/.test(i)?\"Top\":/se|sw|s/.test(i)?\"Bottom\":/^e$/.test(i)?\"Right\":\"Left\"].join(\"\"),t.css(n,a),this._proportionallyResize()),this._handles=this._handles.add(this.handles[i])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(\".ui-resizable-handle\")),this._handles.disableSelection(),this._handles.mouseover(function(){o.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),o.axis=n&&n[1]?n[1]:\"se\")}),r.autoHide&&(this._handles.hide(),e(this.element).addClass(\"ui-resizable-autohide\").mouseenter(function(){r.disabled||(e(this).removeClass(\"ui-resizable-autohide\"),o._handles.show())}).mouseleave(function(){r.disabled||o.resizing||(e(this).addClass(\"ui-resizable-autohide\"),o._handles.hide())})),this._mouseInit()},_destroy:function(){this._mouseDestroy();var t,i=function(t){e(t).removeClass(\"ui-resizable ui-resizable-disabled ui-resizable-resizing\").removeData(\"resizable\").removeData(\"ui-resizable\").unbind(\".resizable\").find(\".ui-resizable-handle\").remove()};return this.elementIsWrapper&&(i(this.element),t=this.element,this.originalElement.css({position:t.css(\"position\"),width:t.outerWidth(),height:t.outerHeight(),top:t.css(\"top\"),left:t.css(\"left\")}).insertAfter(t),t.remove()),this.originalElement.css(\"resize\",this.originalResizeStyle),i(this.originalElement),this},_mouseCapture:function(t){var i,s,n=!1;for(i in this.handles)s=e(this.handles[i])[0],(s===t.target||e.contains(s,t.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(t){var i,s,n,a=this.options,o=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css(\"left\")),s=this._num(this.helper.css(\"top\")),a.containment&&(i+=e(a.containment).scrollLeft()||0,s+=e(a.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:s},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:o.width(),height:o.height()},this.originalSize=this._helper?{width:o.outerWidth(),height:o.outerHeight()}:{width:o.width(),height:o.height()},this.sizeDiff={width:o.outerWidth()-o.width(),height:o.outerHeight()-o.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio=\"number\"==typeof a.aspectRatio?a.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=e(\".ui-resizable-\"+this.axis).css(\"cursor\"),e(\"body\").css(\"cursor\",\"auto\"===n?this.axis+\"-resize\":n),o.addClass(\"ui-resizable-resizing\"),this._propagate(\"start\",t),!0},_mouseDrag:function(t){var i,s,n=this.originalMousePosition,a=this.axis,o=t.pageX-n.left||0,r=t.pageY-n.top||0,h=this._change[a];return this._updatePrevProperties(),h?(i=h.apply(this,[t,o,r]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(i=this._updateRatio(i,t)),i=this._respectSize(i,t),this._updateCache(i),this._propagate(\"resize\",t),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),e.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger(\"resize\",t,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(t){this.resizing=!1;var i,s,n,a,o,r,h,l=this.options,u=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&this._hasScroll(i[0],\"left\")?0:u.sizeDiff.height,a=s?0:u.sizeDiff.width,o={width:u.helper.width()-a,height:u.helper.height()-n},r=parseInt(u.element.css(\"left\"),10)+(u.position.left-u.originalPosition.left)||null,h=parseInt(u.element.css(\"top\"),10)+(u.position.top-u.originalPosition.top)||null,l.animate||this.element.css(e.extend(o,{top:h,left:r})),u.helper.height(u.size.height),u.helper.width(u.size.width),this._helper&&!l.animate&&this._proportionallyResize()),e(\"body\").css(\"cursor\",\"auto\"),this.element.removeClass(\"ui-resizable-resizing\"),this._propagate(\"stop\",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var e={};return this.position.top!==this.prevPosition.top&&(e.top=this.position.top+\"px\"),this.position.left!==this.prevPosition.left&&(e.left=this.position.left+\"px\"),this.size.width!==this.prevSize.width&&(e.width=this.size.width+\"px\"),this.size.height!==this.prevSize.height&&(e.height=this.size.height+\"px\"),this.helper.css(e),e},_updateVirtualBoundaries:function(e){var t,i,s,n,a,o=this.options;a={minWidth:this._isNumber(o.minWidth)?o.minWidth:0,maxWidth:this._isNumber(o.maxWidth)?o.maxWidth:1/0,minHeight:this._isNumber(o.minHeight)?o.minHeight:0,maxHeight:this._isNumber(o.maxHeight)?o.maxHeight:1/0},(this._aspectRatio||e)&&(t=a.minHeight*this.aspectRatio,s=a.minWidth/this.aspectRatio,i=a.maxHeight*this.aspectRatio,n=a.maxWidth/this.aspectRatio,t>a.minWidth&&(a.minWidth=t),s>a.minHeight&&(a.minHeight=s),a.maxWidth>i&&(a.maxWidth=i),a.maxHeight>n&&(a.maxHeight=n)),this._vBoundaries=a},_updateCache:function(e){this.offset=this.helper.offset(),this._isNumber(e.left)&&(this.position.left=e.left),this._isNumber(e.top)&&(this.position.top=e.top),this._isNumber(e.height)&&(this.size.height=e.height),this._isNumber(e.width)&&(this.size.width=e.width)},_updateRatio:function(e){var t=this.position,i=this.size,s=this.axis;return this._isNumber(e.height)?e.width=e.height*this.aspectRatio:this._isNumber(e.width)&&(e.height=e.width/this.aspectRatio),\"sw\"===s&&(e.left=t.left+(i.width-e.width),e.top=null),\"nw\"===s&&(e.top=t.top+(i.height-e.height),e.left=t.left+(i.width-e.width)),e},_respectSize:function(e){var t=this._vBoundaries,i=this.axis,s=this._isNumber(e.width)&&t.maxWidth&&t.maxWidth<e.width,n=this._isNumber(e.height)&&t.maxHeight&&t.maxHeight<e.height,a=this._isNumber(e.width)&&t.minWidth&&t.minWidth>e.width,o=this._isNumber(e.height)&&t.minHeight&&t.minHeight>e.height,r=this.originalPosition.left+this.originalSize.width,h=this.position.top+this.size.height,l=/sw|nw|w/.test(i),u=/nw|ne|n/.test(i);return a&&(e.width=t.minWidth),o&&(e.height=t.minHeight),s&&(e.width=t.maxWidth),n&&(e.height=t.maxHeight),a&&l&&(e.left=r-t.minWidth),s&&l&&(e.left=r-t.maxWidth),o&&u&&(e.top=h-t.minHeight),n&&u&&(e.top=h-t.maxHeight),e.width||e.height||e.left||!e.top?e.width||e.height||e.top||!e.left||(e.left=null):e.top=null,e},_getPaddingPlusBorderDimensions:function(e){for(var t=0,i=[],s=[e.css(\"borderTopWidth\"),e.css(\"borderRightWidth\"),e.css(\"borderBottomWidth\"),e.css(\"borderLeftWidth\")],n=[e.css(\"paddingTop\"),e.css(\"paddingRight\"),e.css(\"paddingBottom\"),e.css(\"paddingLeft\")];4>t;t++)i[t]=parseInt(s[t],10)||0,i[t]+=parseInt(n[t],10)||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var e,t=0,i=this.helper||this.element;this._proportionallyResizeElements.length>t;t++)e=this._proportionallyResizeElements[t],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(e)),e.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var t=this.element,i=this.options;this.elementOffset=t.offset(),this._helper?(this.helper=this.helper||e(\"<div style='overflow:hidden;'></div>\"),this.helper.addClass(this._helper).css({width:this.element.outerWidth()-1,height:this.element.outerHeight()-1,position:\"absolute\",left:this.elementOffset.left+\"px\",top:this.elementOffset.top+\"px\",zIndex:++i.zIndex}),this.helper.appendTo(\"body\").disableSelection()):this.helper=this.element},_change:{e:function(e,t){return{width:this.originalSize.width+t}},w:function(e,t){var i=this.originalSize,s=this.originalPosition;return{left:s.left+t,width:i.width-t}},n:function(e,t,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(e,t,i){return{height:this.originalSize.height+i}},se:function(t,i,s){return e.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,i,s]))},sw:function(t,i,s){return e.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,i,s]))},ne:function(t,i,s){return e.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,i,s]))},nw:function(t,i,s){return e.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,i,s]))}},_propagate:function(t,i){e.ui.plugin.call(this,t,[i,this.ui()]),\"resize\"!==t&&this._trigger(t,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),e.ui.plugin.add(\"resizable\",\"animate\",{stop:function(t){var i=e(this).resizable(\"instance\"),s=i.options,n=i._proportionallyResizeElements,a=n.length&&/textarea/i.test(n[0].nodeName),o=a&&i._hasScroll(n[0],\"left\")?0:i.sizeDiff.height,r=a?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-o},l=parseInt(i.element.css(\"left\"),10)+(i.position.left-i.originalPosition.left)||null,u=parseInt(i.element.css(\"top\"),10)+(i.position.top-i.originalPosition.top)||null;i.element.animate(e.extend(h,u&&l?{top:u,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseInt(i.element.css(\"width\"),10),height:parseInt(i.element.css(\"height\"),10),top:parseInt(i.element.css(\"top\"),10),left:parseInt(i.element.css(\"left\"),10)};n&&n.length&&e(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate(\"resize\",t)}})}}),e.ui.plugin.add(\"resizable\",\"containment\",{start:function(){var t,i,s,n,a,o,r,h=e(this).resizable(\"instance\"),l=h.options,u=h.element,d=l.containment,c=d instanceof e?d.get(0):/parent/.test(d)?u.parent().get(0):d;c&&(h.containerElement=e(c),/document/.test(d)||d===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:e(document),left:0,top:0,width:e(document).width(),height:e(document).height()||document.body.parentNode.scrollHeight}):(t=e(c),i=[],e([\"Top\",\"Right\",\"Left\",\"Bottom\"]).each(function(e,s){i[e]=h._num(t.css(\"padding\"+s))}),h.containerOffset=t.offset(),h.containerPosition=t.position(),h.containerSize={height:t.innerHeight()-i[3],width:t.innerWidth()-i[1]},s=h.containerOffset,n=h.containerSize.height,a=h.containerSize.width,o=h._hasScroll(c,\"left\")?c.scrollWidth:a,r=h._hasScroll(c)?c.scrollHeight:n,h.parentData={element:c,left:s.left,top:s.top,width:o,height:r}))},resize:function(t){var i,s,n,a,o=e(this).resizable(\"instance\"),r=o.options,h=o.containerOffset,l=o.position,u=o._aspectRatio||t.shiftKey,d={top:0,left:0},c=o.containerElement,p=!0;c[0]!==document&&/static/.test(c.css(\"position\"))&&(d=h),l.left<(o._helper?h.left:0)&&(o.size.width=o.size.width+(o._helper?o.position.left-h.left:o.position.left-d.left),u&&(o.size.height=o.size.width/o.aspectRatio,p=!1),o.position.left=r.helper?h.left:0),l.top<(o._helper?h.top:0)&&(o.size.height=o.size.height+(o._helper?o.position.top-h.top:o.position.top),u&&(o.size.width=o.size.height*o.aspectRatio,p=!1),o.position.top=o._helper?h.top:0),n=o.containerElement.get(0)===o.element.parent().get(0),a=/relative|absolute/.test(o.containerElement.css(\"position\")),n&&a?(o.offset.left=o.parentData.left+o.position.left,o.offset.top=o.parentData.top+o.position.top):(o.offset.left=o.element.offset().left,o.offset.top=o.element.offset().top),i=Math.abs(o.sizeDiff.width+(o._helper?o.offset.left-d.left:o.offset.left-h.left)),s=Math.abs(o.sizeDiff.height+(o._helper?o.offset.top-d.top:o.offset.top-h.top)),i+o.size.width>=o.parentData.width&&(o.size.width=o.parentData.width-i,u&&(o.size.height=o.size.width/o.aspectRatio,p=!1)),s+o.size.height>=o.parentData.height&&(o.size.height=o.parentData.height-s,u&&(o.size.width=o.size.height*o.aspectRatio,p=!1)),p||(o.position.left=o.prevPosition.left,o.position.top=o.prevPosition.top,o.size.width=o.prevSize.width,o.size.height=o.prevSize.height)},stop:function(){var t=e(this).resizable(\"instance\"),i=t.options,s=t.containerOffset,n=t.containerPosition,a=t.containerElement,o=e(t.helper),r=o.offset(),h=o.outerWidth()-t.sizeDiff.width,l=o.outerHeight()-t.sizeDiff.height;t._helper&&!i.animate&&/relative/.test(a.css(\"position\"))&&e(this).css({left:r.left-n.left-s.left,width:h,height:l}),t._helper&&!i.animate&&/static/.test(a.css(\"position\"))&&e(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),e.ui.plugin.add(\"resizable\",\"alsoResize\",{start:function(){var t=e(this).resizable(\"instance\"),i=t.options;\r\ne(i.alsoResize).each(function(){var t=e(this);t.data(\"ui-resizable-alsoresize\",{width:parseInt(t.width(),10),height:parseInt(t.height(),10),left:parseInt(t.css(\"left\"),10),top:parseInt(t.css(\"top\"),10)})})},resize:function(t,i){var s=e(this).resizable(\"instance\"),n=s.options,a=s.originalSize,o=s.originalPosition,r={height:s.size.height-a.height||0,width:s.size.width-a.width||0,top:s.position.top-o.top||0,left:s.position.left-o.left||0};e(n.alsoResize).each(function(){var t=e(this),s=e(this).data(\"ui-resizable-alsoresize\"),n={},a=t.parents(i.originalElement[0]).length?[\"width\",\"height\"]:[\"width\",\"height\",\"top\",\"left\"];e.each(a,function(e,t){var i=(s[t]||0)+(r[t]||0);i&&i>=0&&(n[t]=i||null)}),t.css(n)})},stop:function(){e(this).removeData(\"resizable-alsoresize\")}}),e.ui.plugin.add(\"resizable\",\"ghost\",{start:function(){var t=e(this).resizable(\"instance\"),i=t.options,s=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:\"block\",position:\"relative\",height:s.height,width:s.width,margin:0,left:0,top:0}).addClass(\"ui-resizable-ghost\").addClass(\"string\"==typeof i.ghost?i.ghost:\"\"),t.ghost.appendTo(t.helper)},resize:function(){var t=e(this).resizable(\"instance\");t.ghost&&t.ghost.css({position:\"relative\",height:t.size.height,width:t.size.width})},stop:function(){var t=e(this).resizable(\"instance\");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),e.ui.plugin.add(\"resizable\",\"grid\",{resize:function(){var t,i=e(this).resizable(\"instance\"),s=i.options,n=i.size,a=i.originalSize,o=i.originalPosition,r=i.axis,h=\"number\"==typeof s.grid?[s.grid,s.grid]:s.grid,l=h[0]||1,u=h[1]||1,d=Math.round((n.width-a.width)/l)*l,c=Math.round((n.height-a.height)/u)*u,p=a.width+d,f=a.height+c,m=s.maxWidth&&p>s.maxWidth,g=s.maxHeight&&f>s.maxHeight,v=s.minWidth&&s.minWidth>p,y=s.minHeight&&s.minHeight>f;s.grid=h,v&&(p+=l),y&&(f+=u),m&&(p-=l),g&&(f-=u),/^(se|s|e)$/.test(r)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.top=o.top-c):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=o.left-d):((0>=f-u||0>=p-l)&&(t=i._getPaddingPlusBorderDimensions(this)),f-u>0?(i.size.height=f,i.position.top=o.top-c):(f=u-t.height,i.size.height=f,i.position.top=o.top+a.height-f),p-l>0?(i.size.width=p,i.position.left=o.left-d):(p=l-t.width,i.size.width=p,i.position.left=o.left+a.width-p))}}),e.ui.resizable,e.extend(e.ui,{datepicker:{version:\"1.11.4\"}});var d;e.extend(n.prototype,{markerClassName:\"hasDatepicker\",maxRows:4,_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(e){return r(this._defaults,e||{}),this},_attachDatepicker:function(t,i){var s,n,a;s=t.nodeName.toLowerCase(),n=\"div\"===s||\"span\"===s,t.id||(this.uuid+=1,t.id=\"dp\"+this.uuid),a=this._newInst(e(t),n),a.settings=e.extend({},i||{}),\"input\"===s?this._connectDatepicker(t,a):n&&this._inlineDatepicker(t,a)},_newInst:function(t,i){var s=t[0].id.replace(/([^A-Za-z0-9_\\-])/g,\"\\\\\\\\$1\");return{id:s,input:t,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:i,dpDiv:i?a(e(\"<div class='\"+this._inlineClass+\" ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>\")):this.dpDiv}},_connectDatepicker:function(t,i){var s=e(t);i.append=e([]),i.trigger=e([]),s.hasClass(this.markerClassName)||(this._attachments(s,i),s.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp),this._autoSize(i),e.data(t,\"datepicker\",i),i.settings.disabled&&this._disableDatepicker(t))},_attachments:function(t,i){var s,n,a,o=this._get(i,\"appendText\"),r=this._get(i,\"isRTL\");i.append&&i.append.remove(),o&&(i.append=e(\"<span class='\"+this._appendClass+\"'>\"+o+\"</span>\"),t[r?\"before\":\"after\"](i.append)),t.unbind(\"focus\",this._showDatepicker),i.trigger&&i.trigger.remove(),s=this._get(i,\"showOn\"),(\"focus\"===s||\"both\"===s)&&t.focus(this._showDatepicker),(\"button\"===s||\"both\"===s)&&(n=this._get(i,\"buttonText\"),a=this._get(i,\"buttonImage\"),i.trigger=e(this._get(i,\"buttonImageOnly\")?e(\"<img/>\").addClass(this._triggerClass).attr({src:a,alt:n,title:n}):e(\"<button type='button'></button>\").addClass(this._triggerClass).html(a?e(\"<img/>\").attr({src:a,alt:n,title:n}):n)),t[r?\"before\":\"after\"](i.trigger),i.trigger.click(function(){return e.datepicker._datepickerShowing&&e.datepicker._lastInput===t[0]?e.datepicker._hideDatepicker():e.datepicker._datepickerShowing&&e.datepicker._lastInput!==t[0]?(e.datepicker._hideDatepicker(),e.datepicker._showDatepicker(t[0])):e.datepicker._showDatepicker(t[0]),!1}))},_autoSize:function(e){if(this._get(e,\"autoSize\")&&!e.inline){var t,i,s,n,a=new Date(2009,11,20),o=this._get(e,\"dateFormat\");o.match(/[DM]/)&&(t=function(e){for(i=0,s=0,n=0;e.length>n;n++)e[n].length>i&&(i=e[n].length,s=n);return s},a.setMonth(t(this._get(e,o.match(/MM/)?\"monthNames\":\"monthNamesShort\"))),a.setDate(t(this._get(e,o.match(/DD/)?\"dayNames\":\"dayNamesShort\"))+20-a.getDay())),e.input.attr(\"size\",this._formatDate(e,a).length)}},_inlineDatepicker:function(t,i){var s=e(t);s.hasClass(this.markerClassName)||(s.addClass(this.markerClassName).append(i.dpDiv),e.data(t,\"datepicker\",i),this._setDate(i,this._getDefaultDate(i),!0),this._updateDatepicker(i),this._updateAlternate(i),i.settings.disabled&&this._disableDatepicker(t),i.dpDiv.css(\"display\",\"block\"))},_dialogDatepicker:function(t,i,s,n,a){var o,h,l,u,d,c=this._dialogInst;return c||(this.uuid+=1,o=\"dp\"+this.uuid,this._dialogInput=e(\"<input type='text' id='\"+o+\"' style='position: absolute; top: -100px; width: 0px;'/>\"),this._dialogInput.keydown(this._doKeyDown),e(\"body\").append(this._dialogInput),c=this._dialogInst=this._newInst(this._dialogInput,!1),c.settings={},e.data(this._dialogInput[0],\"datepicker\",c)),r(c.settings,n||{}),i=i&&i.constructor===Date?this._formatDate(c,i):i,this._dialogInput.val(i),this._pos=a?a.length?a:[a.pageX,a.pageY]:null,this._pos||(h=document.documentElement.clientWidth,l=document.documentElement.clientHeight,u=document.documentElement.scrollLeft||document.body.scrollLeft,d=document.documentElement.scrollTop||document.body.scrollTop,this._pos=[h/2-100+u,l/2-150+d]),this._dialogInput.css(\"left\",this._pos[0]+20+\"px\").css(\"top\",this._pos[1]+\"px\"),c.settings.onSelect=s,this._inDialog=!0,this.dpDiv.addClass(this._dialogClass),this._showDatepicker(this._dialogInput[0]),e.blockUI&&e.blockUI(this.dpDiv),e.data(this._dialogInput[0],\"datepicker\",c),this},_destroyDatepicker:function(t){var i,s=e(t),n=e.data(t,\"datepicker\");s.hasClass(this.markerClassName)&&(i=t.nodeName.toLowerCase(),e.removeData(t,\"datepicker\"),\"input\"===i?(n.append.remove(),n.trigger.remove(),s.removeClass(this.markerClassName).unbind(\"focus\",this._showDatepicker).unbind(\"keydown\",this._doKeyDown).unbind(\"keypress\",this._doKeyPress).unbind(\"keyup\",this._doKeyUp)):(\"div\"===i||\"span\"===i)&&s.removeClass(this.markerClassName).empty(),d===n&&(d=null))},_enableDatepicker:function(t){var i,s,n=e(t),a=e.data(t,\"datepicker\");n.hasClass(this.markerClassName)&&(i=t.nodeName.toLowerCase(),\"input\"===i?(t.disabled=!1,a.trigger.filter(\"button\").each(function(){this.disabled=!1}).end().filter(\"img\").css({opacity:\"1.0\",cursor:\"\"})):(\"div\"===i||\"span\"===i)&&(s=n.children(\".\"+this._inlineClass),s.children().removeClass(\"ui-state-disabled\"),s.find(\"select.ui-datepicker-month, select.ui-datepicker-year\").prop(\"disabled\",!1)),this._disabledInputs=e.map(this._disabledInputs,function(e){return e===t?null:e}))},_disableDatepicker:function(t){var i,s,n=e(t),a=e.data(t,\"datepicker\");n.hasClass(this.markerClassName)&&(i=t.nodeName.toLowerCase(),\"input\"===i?(t.disabled=!0,a.trigger.filter(\"button\").each(function(){this.disabled=!0}).end().filter(\"img\").css({opacity:\"0.5\",cursor:\"default\"})):(\"div\"===i||\"span\"===i)&&(s=n.children(\".\"+this._inlineClass),s.children().addClass(\"ui-state-disabled\"),s.find(\"select.ui-datepicker-month, select.ui-datepicker-year\").prop(\"disabled\",!0)),this._disabledInputs=e.map(this._disabledInputs,function(e){return e===t?null:e}),this._disabledInputs[this._disabledInputs.length]=t)},_isDisabledDatepicker:function(e){if(!e)return!1;for(var t=0;this._disabledInputs.length>t;t++)if(this._disabledInputs[t]===e)return!0;return!1},_getInst:function(t){try{return e.data(t,\"datepicker\")}catch(i){throw\"Missing instance data for this datepicker\"}},_optionDatepicker:function(t,i,s){var n,a,o,h,l=this._getInst(t);return 2===arguments.length&&\"string\"==typeof i?\"defaults\"===i?e.extend({},e.datepicker._defaults):l?\"all\"===i?e.extend({},l.settings):this._get(l,i):null:(n=i||{},\"string\"==typeof i&&(n={},n[i]=s),l&&(this._curInst===l&&this._hideDatepicker(),a=this._getDateDatepicker(t,!0),o=this._getMinMaxDate(l,\"min\"),h=this._getMinMaxDate(l,\"max\"),r(l.settings,n),null!==o&&void 0!==n.dateFormat&&void 0===n.minDate&&(l.settings.minDate=this._formatDate(l,o)),null!==h&&void 0!==n.dateFormat&&void 0===n.maxDate&&(l.settings.maxDate=this._formatDate(l,h)),\"disabled\"in n&&(n.disabled?this._disableDatepicker(t):this._enableDatepicker(t)),this._attachments(e(t),l),this._autoSize(l),this._setDate(l,a),this._updateAlternate(l),this._updateDatepicker(l)),void 0)},_changeDatepicker:function(e,t,i){this._optionDatepicker(e,t,i)},_refreshDatepicker:function(e){var t=this._getInst(e);t&&this._updateDatepicker(t)},_setDateDatepicker:function(e,t){var i=this._getInst(e);i&&(this._setDate(i,t),this._updateDatepicker(i),this._updateAlternate(i))},_getDateDatepicker:function(e,t){var i=this._getInst(e);return i&&!i.inline&&this._setDateFromField(i,t),i?this._getDate(i):null},_doKeyDown:function(t){var i,s,n,a=e.datepicker._getInst(t.target),o=!0,r=a.dpDiv.is(\".ui-datepicker-rtl\");if(a._keyEvent=!0,e.datepicker._datepickerShowing)switch(t.keyCode){case 9:e.datepicker._hideDatepicker(),o=!1;break;case 13:return n=e(\"td.\"+e.datepicker._dayOverClass+\":not(.\"+e.datepicker._currentClass+\")\",a.dpDiv),n[0]&&e.datepicker._selectDay(t.target,a.selectedMonth,a.selectedYear,n[0]),i=e.datepicker._get(a,\"onSelect\"),i?(s=e.datepicker._formatDate(a),i.apply(a.input?a.input[0]:null,[s,a])):e.datepicker._hideDatepicker(),!1;case 27:e.datepicker._hideDatepicker();break;case 33:e.datepicker._adjustDate(t.target,t.ctrlKey?-e.datepicker._get(a,\"stepBigMonths\"):-e.datepicker._get(a,\"stepMonths\"),\"M\");break;case 34:e.datepicker._adjustDate(t.target,t.ctrlKey?+e.datepicker._get(a,\"stepBigMonths\"):+e.datepicker._get(a,\"stepMonths\"),\"M\");break;case 35:(t.ctrlKey||t.metaKey)&&e.datepicker._clearDate(t.target),o=t.ctrlKey||t.metaKey;break;case 36:(t.ctrlKey||t.metaKey)&&e.datepicker._gotoToday(t.target),o=t.ctrlKey||t.metaKey;break;case 37:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,r?1:-1,\"D\"),o=t.ctrlKey||t.metaKey,t.originalEvent.altKey&&e.datepicker._adjustDate(t.target,t.ctrlKey?-e.datepicker._get(a,\"stepBigMonths\"):-e.datepicker._get(a,\"stepMonths\"),\"M\");break;case 38:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,-7,\"D\"),o=t.ctrlKey||t.metaKey;break;case 39:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,r?-1:1,\"D\"),o=t.ctrlKey||t.metaKey,t.originalEvent.altKey&&e.datepicker._adjustDate(t.target,t.ctrlKey?+e.datepicker._get(a,\"stepBigMonths\"):+e.datepicker._get(a,\"stepMonths\"),\"M\");break;case 40:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,7,\"D\"),o=t.ctrlKey||t.metaKey;break;default:o=!1}else 36===t.keyCode&&t.ctrlKey?e.datepicker._showDatepicker(this):o=!1;o&&(t.preventDefault(),t.stopPropagation())},_doKeyPress:function(t){var i,s,n=e.datepicker._getInst(t.target);return e.datepicker._get(n,\"constrainInput\")?(i=e.datepicker._possibleChars(e.datepicker._get(n,\"dateFormat\")),s=String.fromCharCode(null==t.charCode?t.keyCode:t.charCode),t.ctrlKey||t.metaKey||\" \">s||!i||i.indexOf(s)>-1):void 0},_doKeyUp:function(t){var i,s=e.datepicker._getInst(t.target);if(s.input.val()!==s.lastVal)try{i=e.datepicker.parseDate(e.datepicker._get(s,\"dateFormat\"),s.input?s.input.val():null,e.datepicker._getFormatConfig(s)),i&&(e.datepicker._setDateFromField(s),e.datepicker._updateAlternate(s),e.datepicker._updateDatepicker(s))}catch(n){}return!0},_showDatepicker:function(t){if(t=t.target||t,\"input\"!==t.nodeName.toLowerCase()&&(t=e(\"input\",t.parentNode)[0]),!e.datepicker._isDisabledDatepicker(t)&&e.datepicker._lastInput!==t){var i,n,a,o,h,l,u;i=e.datepicker._getInst(t),e.datepicker._curInst&&e.datepicker._curInst!==i&&(e.datepicker._curInst.dpDiv.stop(!0,!0),i&&e.datepicker._datepickerShowing&&e.datepicker._hideDatepicker(e.datepicker._curInst.input[0])),n=e.datepicker._get(i,\"beforeShow\"),a=n?n.apply(t,[t,i]):{},a!==!1&&(r(i.settings,a),i.lastVal=null,e.datepicker._lastInput=t,e.datepicker._setDateFromField(i),e.datepicker._inDialog&&(t.value=\"\"),e.datepicker._pos||(e.datepicker._pos=e.datepicker._findPos(t),e.datepicker._pos[1]+=t.offsetHeight),o=!1,e(t).parents().each(function(){return o|=\"fixed\"===e(this).css(\"position\"),!o}),h={left:e.datepicker._pos[0],top:e.datepicker._pos[1]},e.datepicker._pos=null,i.dpDiv.empty(),i.dpDiv.css({position:\"absolute\",display:\"block\",top:\"-1000px\"}),e.datepicker._updateDatepicker(i),h=e.datepicker._checkOffset(i,h,o),i.dpDiv.css({position:e.datepicker._inDialog&&e.blockUI?\"static\":o?\"fixed\":\"absolute\",display:\"none\",left:h.left+\"px\",top:h.top+\"px\"}),i.inline||(l=e.datepicker._get(i,\"showAnim\"),u=e.datepicker._get(i,\"duration\"),i.dpDiv.css(\"z-index\",s(e(t))+1),e.datepicker._datepickerShowing=!0,e.effects&&e.effects.effect[l]?i.dpDiv.show(l,e.datepicker._get(i,\"showOptions\"),u):i.dpDiv[l||\"show\"](l?u:null),e.datepicker._shouldFocusInput(i)&&i.input.focus(),e.datepicker._curInst=i))}},_updateDatepicker:function(t){this.maxRows=4,d=t,t.dpDiv.empty().append(this._generateHTML(t)),this._attachHandlers(t);var i,s=this._getNumberOfMonths(t),n=s[1],a=17,r=t.dpDiv.find(\".\"+this._dayOverClass+\" a\");r.length>0&&o.apply(r.get(0)),t.dpDiv.removeClass(\"ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4\").width(\"\"),n>1&&t.dpDiv.addClass(\"ui-datepicker-multi-\"+n).css(\"width\",a*n+\"em\"),t.dpDiv[(1!==s[0]||1!==s[1]?\"add\":\"remove\")+\"Class\"](\"ui-datepicker-multi\"),t.dpDiv[(this._get(t,\"isRTL\")?\"add\":\"remove\")+\"Class\"](\"ui-datepicker-rtl\"),t===e.datepicker._curInst&&e.datepicker._datepickerShowing&&e.datepicker._shouldFocusInput(t)&&t.input.focus(),t.yearshtml&&(i=t.yearshtml,setTimeout(function(){i===t.yearshtml&&t.yearshtml&&t.dpDiv.find(\"select.ui-datepicker-year:first\").replaceWith(t.yearshtml),i=t.yearshtml=null},0))},_shouldFocusInput:function(e){return e.input&&e.input.is(\":visible\")&&!e.input.is(\":disabled\")&&!e.input.is(\":focus\")},_checkOffset:function(t,i,s){var n=t.dpDiv.outerWidth(),a=t.dpDiv.outerHeight(),o=t.input?t.input.outerWidth():0,r=t.input?t.input.outerHeight():0,h=document.documentElement.clientWidth+(s?0:e(document).scrollLeft()),l=document.documentElement.clientHeight+(s?0:e(document).scrollTop());return i.left-=this._get(t,\"isRTL\")?n-o:0,i.left-=s&&i.left===t.input.offset().left?e(document).scrollLeft():0,i.top-=s&&i.top===t.input.offset().top+r?e(document).scrollTop():0,i.left-=Math.min(i.left,i.left+n>h&&h>n?Math.abs(i.left+n-h):0),i.top-=Math.min(i.top,i.top+a>l&&l>a?Math.abs(a+r):0),i},_findPos:function(t){for(var i,s=this._getInst(t),n=this._get(s,\"isRTL\");t&&(\"hidden\"===t.type||1!==t.nodeType||e.expr.filters.hidden(t));)t=t[n?\"previousSibling\":\"nextSibling\"];return i=e(t).offset(),[i.left,i.top]},_hideDatepicker:function(t){var i,s,n,a,o=this._curInst;!o||t&&o!==e.data(t,\"datepicker\")||this._datepickerShowing&&(i=this._get(o,\"showAnim\"),s=this._get(o,\"duration\"),n=function(){e.datepicker._tidyDialog(o)},e.effects&&(e.effects.effect[i]||e.effects[i])?o.dpDiv.hide(i,e.datepicker._get(o,\"showOptions\"),s,n):o.dpDiv[\"slideDown\"===i?\"slideUp\":\"fadeIn\"===i?\"fadeOut\":\"hide\"](i?s:null,n),i||n(),this._datepickerShowing=!1,a=this._get(o,\"onClose\"),a&&a.apply(o.input?o.input[0]:null,[o.input?o.input.val():\"\",o]),this._lastInput=null,this._inDialog&&(this._dialogInput.css({position:\"absolute\",left:\"0\",top:\"-100px\"}),e.blockUI&&(e.unblockUI(),e(\"body\").append(this.dpDiv))),this._inDialog=!1)},_tidyDialog:function(e){e.dpDiv.removeClass(this._dialogClass).unbind(\".ui-datepicker-calendar\")},_checkExternalClick:function(t){if(e.datepicker._curInst){var i=e(t.target),s=e.datepicker._getInst(i[0]);(i[0].id!==e.datepicker._mainDivId&&0===i.parents(\"#\"+e.datepicker._mainDivId).length&&!i.hasClass(e.datepicker.markerClassName)&&!i.closest(\".\"+e.datepicker._triggerClass).length&&e.datepicker._datepickerShowing&&(!e.datepicker._inDialog||!e.blockUI)||i.hasClass(e.datepicker.markerClassName)&&e.datepicker._curInst!==s)&&e.datepicker._hideDatepicker()}},_adjustDate:function(t,i,s){var n=e(t),a=this._getInst(n[0]);this._isDisabledDatepicker(n[0])||(this._adjustInstDate(a,i+(\"M\"===s?this._get(a,\"showCurrentAtPos\"):0),s),this._updateDatepicker(a))},_gotoToday:function(t){var i,s=e(t),n=this._getInst(s[0]);this._get(n,\"gotoCurrent\")&&n.currentDay?(n.selectedDay=n.currentDay,n.drawMonth=n.selectedMonth=n.currentMonth,n.drawYear=n.selectedYear=n.currentYear):(i=new Date,n.selectedDay=i.getDate(),n.drawMonth=n.selectedMonth=i.getMonth(),n.drawYear=n.selectedYear=i.getFullYear()),this._notifyChange(n),this._adjustDate(s)},_selectMonthYear:function(t,i,s){var n=e(t),a=this._getInst(n[0]);a[\"selected\"+(\"M\"===s?\"Month\":\"Year\")]=a[\"draw\"+(\"M\"===s?\"Month\":\"Year\")]=parseInt(i.options[i.selectedIndex].value,10),this._notifyChange(a),this._adjustDate(n)},_selectDay:function(t,i,s,n){var a,o=e(t);e(n).hasClass(this._unselectableClass)||this._isDisabledDatepicker(o[0])||(a=this._getInst(o[0]),a.selectedDay=a.currentDay=e(\"a\",n).html(),a.selectedMonth=a.currentMonth=i,a.selectedYear=a.currentYear=s,this._selectDate(t,this._formatDate(a,a.currentDay,a.currentMonth,a.currentYear)))},_clearDate:function(t){var i=e(t);this._selectDate(i,\"\")},_selectDate:function(t,i){var s,n=e(t),a=this._getInst(n[0]);i=null!=i?i:this._formatDate(a),a.input&&a.input.val(i),this._updateAlternate(a),s=this._get(a,\"onSelect\"),s?s.apply(a.input?a.input[0]:null,[i,a]):a.input&&a.input.trigger(\"change\"),a.inline?this._updateDatepicker(a):(this._hideDatepicker(),this._lastInput=a.input[0],\"object\"!=typeof a.input[0]&&a.input.focus(),this._lastInput=null)},_updateAlternate:function(t){var i,s,n,a=this._get(t,\"altField\");a&&(i=this._get(t,\"altFormat\")||this._get(t,\"dateFormat\"),s=this._getDate(t),n=this.formatDate(i,s,this._getFormatConfig(t)),e(a).each(function(){e(this).val(n)}))},noWeekends:function(e){var t=e.getDay();return[t>0&&6>t,\"\"]},iso8601Week:function(e){var t,i=new Date(e.getTime());return i.setDate(i.getDate()+4-(i.getDay()||7)),t=i.getTime(),i.setMonth(0),i.setDate(1),Math.floor(Math.round((t-i)/864e5)/7)+1},parseDate:function(t,i,s){if(null==t||null==i)throw\"Invalid arguments\";if(i=\"object\"==typeof i?\"\"+i:i+\"\",\"\"===i)return null;var n,a,o,r,h=0,l=(s?s.shortYearCutoff:null)||this._defaults.shortYearCutoff,u=\"string\"!=typeof l?l:(new Date).getFullYear()%100+parseInt(l,10),d=(s?s.dayNamesShort:null)||this._defaults.dayNamesShort,c=(s?s.dayNames:null)||this._defaults.dayNames,p=(s?s.monthNamesShort:null)||this._defaults.monthNamesShort,f=(s?s.monthNames:null)||this._defaults.monthNames,m=-1,g=-1,v=-1,y=-1,b=!1,_=function(e){var i=t.length>n+1&&t.charAt(n+1)===e;return i&&n++,i},x=function(e){var t=_(e),s=\"@\"===e?14:\"!\"===e?20:\"y\"===e&&t?4:\"o\"===e?3:2,n=\"y\"===e?s:1,a=RegExp(\"^\\\\d{\"+n+\",\"+s+\"}\"),o=i.substring(h).match(a);if(!o)throw\"Missing number at position \"+h;return h+=o[0].length,parseInt(o[0],10)},w=function(t,s,n){var a=-1,o=e.map(_(t)?n:s,function(e,t){return[[t,e]]}).sort(function(e,t){return-(e[1].length-t[1].length)});if(e.each(o,function(e,t){var s=t[1];return i.substr(h,s.length).toLowerCase()===s.toLowerCase()?(a=t[0],h+=s.length,!1):void 0}),-1!==a)return a+1;throw\"Unknown name at position \"+h},k=function(){if(i.charAt(h)!==t.charAt(n))throw\"Unexpected literal at position \"+h;h++};for(n=0;t.length>n;n++)if(b)\"'\"!==t.charAt(n)||_(\"'\")?k():b=!1;else switch(t.charAt(n)){case\"d\":v=x(\"d\");break;case\"D\":w(\"D\",d,c);break;case\"o\":y=x(\"o\");break;case\"m\":g=x(\"m\");break;case\"M\":g=w(\"M\",p,f);break;case\"y\":m=x(\"y\");break;case\"@\":r=new Date(x(\"@\")),m=r.getFullYear(),g=r.getMonth()+1,v=r.getDate();break;case\"!\":r=new Date((x(\"!\")-this._ticksTo1970)/1e4),m=r.getFullYear(),g=r.getMonth()+1,v=r.getDate();break;case\"'\":_(\"'\")?k():b=!0;break;default:k()}if(i.length>h&&(o=i.substr(h),!/^\\s+/.test(o)))throw\"Extra/unparsed characters found in date: \"+o;if(-1===m?m=(new Date).getFullYear():100>m&&(m+=(new Date).getFullYear()-(new Date).getFullYear()%100+(u>=m?0:-100)),y>-1)for(g=1,v=y;;){if(a=this._getDaysInMonth(m,g-1),a>=v)break;g++,v-=a}if(r=this._daylightSavingAdjust(new Date(m,g-1,v)),r.getFullYear()!==m||r.getMonth()+1!==g||r.getDate()!==v)throw\"Invalid date\";return r},ATOM:\"yy-mm-dd\",COOKIE:\"D, dd M yy\",ISO_8601:\"yy-mm-dd\",RFC_822:\"D, d M y\",RFC_850:\"DD, dd-M-y\",RFC_1036:\"D, d M y\",RFC_1123:\"D, d M yy\",RFC_2822:\"D, d M yy\",RSS:\"D, d M y\",TICKS:\"!\",TIMESTAMP:\"@\",W3C:\"yy-mm-dd\",_ticksTo1970:1e7*60*60*24*(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925)),formatDate:function(e,t,i){if(!t)return\"\";var s,n=(i?i.dayNamesShort:null)||this._defaults.dayNamesShort,a=(i?i.dayNames:null)||this._defaults.dayNames,o=(i?i.monthNamesShort:null)||this._defaults.monthNamesShort,r=(i?i.monthNames:null)||this._defaults.monthNames,h=function(t){var i=e.length>s+1&&e.charAt(s+1)===t;return i&&s++,i},l=function(e,t,i){var s=\"\"+t;if(h(e))for(;i>s.length;)s=\"0\"+s;return s},u=function(e,t,i,s){return h(e)?s[t]:i[t]},d=\"\",c=!1;if(t)for(s=0;e.length>s;s++)if(c)\"'\"!==e.charAt(s)||h(\"'\")?d+=e.charAt(s):c=!1;else switch(e.charAt(s)){case\"d\":d+=l(\"d\",t.getDate(),2);break;case\"D\":d+=u(\"D\",t.getDay(),n,a);break;case\"o\":d+=l(\"o\",Math.round((new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime()-new Date(t.getFullYear(),0,0).getTime())/864e5),3);break;case\"m\":d+=l(\"m\",t.getMonth()+1,2);break;case\"M\":d+=u(\"M\",t.getMonth(),o,r);break;case\"y\":d+=h(\"y\")?t.getFullYear():(10>t.getYear()%100?\"0\":\"\")+t.getYear()%100;break;case\"@\":d+=t.getTime();break;case\"!\":d+=1e4*t.getTime()+this._ticksTo1970;break;case\"'\":h(\"'\")?d+=\"'\":c=!0;break;default:d+=e.charAt(s)}return d},_possibleChars:function(e){var t,i=\"\",s=!1,n=function(i){var s=e.length>t+1&&e.charAt(t+1)===i;return s&&t++,s};for(t=0;e.length>t;t++)if(s)\"'\"!==e.charAt(t)||n(\"'\")?i+=e.charAt(t):s=!1;else switch(e.charAt(t)){case\"d\":case\"m\":case\"y\":case\"@\":i+=\"0123456789\";break;case\"D\":case\"M\":return null;case\"'\":n(\"'\")?i+=\"'\":s=!0;break;default:i+=e.charAt(t)}return i},_get:function(e,t){return void 0!==e.settings[t]?e.settings[t]:this._defaults[t]},_setDateFromField:function(e,t){if(e.input.val()!==e.lastVal){var i=this._get(e,\"dateFormat\"),s=e.lastVal=e.input?e.input.val():null,n=this._getDefaultDate(e),a=n,o=this._getFormatConfig(e);try{a=this.parseDate(i,s,o)||n}catch(r){s=t?\"\":s}e.selectedDay=a.getDate(),e.drawMonth=e.selectedMonth=a.getMonth(),e.drawYear=e.selectedYear=a.getFullYear(),e.currentDay=s?a.getDate():0,e.currentMonth=s?a.getMonth():0,e.currentYear=s?a.getFullYear():0,this._adjustInstDate(e)}},_getDefaultDate:function(e){return this._restrictMinMax(e,this._determineDate(e,this._get(e,\"defaultDate\"),new Date))},_determineDate:function(t,i,s){var n=function(e){var t=new Date;return t.setDate(t.getDate()+e),t},a=function(i){try{return e.datepicker.parseDate(e.datepicker._get(t,\"dateFormat\"),i,e.datepicker._getFormatConfig(t))}catch(s){}for(var n=(i.toLowerCase().match(/^c/)?e.datepicker._getDate(t):null)||new Date,a=n.getFullYear(),o=n.getMonth(),r=n.getDate(),h=/([+\\-]?[0-9]+)\\s*(d|D|w|W|m|M|y|Y)?/g,l=h.exec(i);l;){switch(l[2]||\"d\"){case\"d\":case\"D\":r+=parseInt(l[1],10);break;case\"w\":case\"W\":r+=7*parseInt(l[1],10);break;case\"m\":case\"M\":o+=parseInt(l[1],10),r=Math.min(r,e.datepicker._getDaysInMonth(a,o));break;case\"y\":case\"Y\":a+=parseInt(l[1],10),r=Math.min(r,e.datepicker._getDaysInMonth(a,o))}l=h.exec(i)}return new Date(a,o,r)},o=null==i||\"\"===i?s:\"string\"==typeof i?a(i):\"number\"==typeof i?isNaN(i)?s:n(i):new Date(i.getTime());return o=o&&\"Invalid Date\"==\"\"+o?s:o,o&&(o.setHours(0),o.setMinutes(0),o.setSeconds(0),o.setMilliseconds(0)),this._daylightSavingAdjust(o)},_daylightSavingAdjust:function(e){return e?(e.setHours(e.getHours()>12?e.getHours()+2:0),e):null},_setDate:function(e,t,i){var s=!t,n=e.selectedMonth,a=e.selectedYear,o=this._restrictMinMax(e,this._determineDate(e,t,new Date));e.selectedDay=e.currentDay=o.getDate(),e.drawMonth=e.selectedMonth=e.currentMonth=o.getMonth(),e.drawYear=e.selectedYear=e.currentYear=o.getFullYear(),n===e.selectedMonth&&a===e.selectedYear||i||this._notifyChange(e),this._adjustInstDate(e),e.input&&e.input.val(s?\"\":this._formatDate(e))},_getDate:function(e){var t=!e.currentYear||e.input&&\"\"===e.input.val()?null:this._daylightSavingAdjust(new Date(e.currentYear,e.currentMonth,e.currentDay));return t},_attachHandlers:function(t){var i=this._get(t,\"stepMonths\"),s=\"#\"+t.id.replace(/\\\\\\\\/g,\"\\\\\");t.dpDiv.find(\"[data-handler]\").map(function(){var t={prev:function(){e.datepicker._adjustDate(s,-i,\"M\")},next:function(){e.datepicker._adjustDate(s,+i,\"M\")},hide:function(){e.datepicker._hideDatepicker()},today:function(){e.datepicker._gotoToday(s)},selectDay:function(){return e.datepicker._selectDay(s,+this.getAttribute(\"data-month\"),+this.getAttribute(\"data-year\"),this),!1},selectMonth:function(){return e.datepicker._selectMonthYear(s,this,\"M\"),!1},selectYear:function(){return e.datepicker._selectMonthYear(s,this,\"Y\"),!1}};e(this).bind(this.getAttribute(\"data-event\"),t[this.getAttribute(\"data-handler\")])})},_generateHTML:function(e){var t,i,s,n,a,o,r,h,l,u,d,c,p,f,m,g,v,y,b,_,x,w,k,T,D,S,N,M,C,P,A,I,H,z,F,E,W,O,L,j=new Date,R=this._daylightSavingAdjust(new Date(j.getFullYear(),j.getMonth(),j.getDate())),Y=this._get(e,\"isRTL\"),J=this._get(e,\"showButtonPanel\"),B=this._get(e,\"hideIfNoPrevNext\"),K=this._get(e,\"navigationAsDateFormat\"),U=this._getNumberOfMonths(e),V=this._get(e,\"showCurrentAtPos\"),q=this._get(e,\"stepMonths\"),G=1!==U[0]||1!==U[1],X=this._daylightSavingAdjust(e.currentDay?new Date(e.currentYear,e.currentMonth,e.currentDay):new Date(9999,9,9)),Q=this._getMinMaxDate(e,\"min\"),$=this._getMinMaxDate(e,\"max\"),Z=e.drawMonth-V,et=e.drawYear;if(0>Z&&(Z+=12,et--),$)for(t=this._daylightSavingAdjust(new Date($.getFullYear(),$.getMonth()-U[0]*U[1]+1,$.getDate())),t=Q&&Q>t?Q:t;this._daylightSavingAdjust(new Date(et,Z,1))>t;)Z--,0>Z&&(Z=11,et--);for(e.drawMonth=Z,e.drawYear=et,i=this._get(e,\"prevText\"),i=K?this.formatDate(i,this._daylightSavingAdjust(new Date(et,Z-q,1)),this._getFormatConfig(e)):i,s=this._canAdjustMonth(e,-1,et,Z)?\"<a class='ui-datepicker-prev ui-corner-all' data-handler='prev' data-event='click' title='\"+i+\"'><span class='ui-icon ui-icon-circle-triangle-\"+(Y?\"e\":\"w\")+\"'>\"+i+\"</span></a>\":B?\"\":\"<a class='ui-datepicker-prev ui-corner-all ui-state-disabled' title='\"+i+\"'><span class='ui-icon ui-icon-circle-triangle-\"+(Y?\"e\":\"w\")+\"'>\"+i+\"</span></a>\",n=this._get(e,\"nextText\"),n=K?this.formatDate(n,this._daylightSavingAdjust(new Date(et,Z+q,1)),this._getFormatConfig(e)):n,a=this._canAdjustMonth(e,1,et,Z)?\"<a class='ui-datepicker-next ui-corner-all' data-handler='next' data-event='click' title='\"+n+\"'><span class='ui-icon ui-icon-circle-triangle-\"+(Y?\"w\":\"e\")+\"'>\"+n+\"</span></a>\":B?\"\":\"<a class='ui-datepicker-next ui-corner-all ui-state-disabled' title='\"+n+\"'><span class='ui-icon ui-icon-circle-triangle-\"+(Y?\"w\":\"e\")+\"'>\"+n+\"</span></a>\",o=this._get(e,\"currentText\"),r=this._get(e,\"gotoCurrent\")&&e.currentDay?X:R,o=K?this.formatDate(o,r,this._getFormatConfig(e)):o,h=e.inline?\"\":\"<button type='button' class='ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all' data-handler='hide' data-event='click'>\"+this._get(e,\"closeText\")+\"</button>\",l=J?\"<div class='ui-datepicker-buttonpane ui-widget-content'>\"+(Y?h:\"\")+(this._isInRange(e,r)?\"<button type='button' class='ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all' data-handler='today' data-event='click'>\"+o+\"</button>\":\"\")+(Y?\"\":h)+\"</div>\":\"\",u=parseInt(this._get(e,\"firstDay\"),10),u=isNaN(u)?0:u,d=this._get(e,\"showWeek\"),c=this._get(e,\"dayNames\"),p=this._get(e,\"dayNamesMin\"),f=this._get(e,\"monthNames\"),m=this._get(e,\"monthNamesShort\"),g=this._get(e,\"beforeShowDay\"),v=this._get(e,\"showOtherMonths\"),y=this._get(e,\"selectOtherMonths\"),b=this._getDefaultDate(e),_=\"\",w=0;U[0]>w;w++){for(k=\"\",this.maxRows=4,T=0;U[1]>T;T++){if(D=this._daylightSavingAdjust(new Date(et,Z,e.selectedDay)),S=\" ui-corner-all\",N=\"\",G){if(N+=\"<div class='ui-datepicker-group\",U[1]>1)switch(T){case 0:N+=\" ui-datepicker-group-first\",S=\" ui-corner-\"+(Y?\"right\":\"left\");break;case U[1]-1:N+=\" ui-datepicker-group-last\",S=\" ui-corner-\"+(Y?\"left\":\"right\");break;default:N+=\" ui-datepicker-group-middle\",S=\"\"}N+=\"'>\"}for(N+=\"<div class='ui-datepicker-header ui-widget-header ui-helper-clearfix\"+S+\"'>\"+(/all|left/.test(S)&&0===w?Y?a:s:\"\")+(/all|right/.test(S)&&0===w?Y?s:a:\"\")+this._generateMonthYearHeader(e,Z,et,Q,$,w>0||T>0,f,m)+\"</div><table class='ui-datepicker-calendar'><thead>\"+\"<tr>\",M=d?\"<th class='ui-datepicker-week-col'>\"+this._get(e,\"weekHeader\")+\"</th>\":\"\",x=0;7>x;x++)C=(x+u)%7,M+=\"<th scope='col'\"+((x+u+6)%7>=5?\" class='ui-datepicker-week-end'\":\"\")+\">\"+\"<span title='\"+c[C]+\"'>\"+p[C]+\"</span></th>\";for(N+=M+\"</tr></thead><tbody>\",P=this._getDaysInMonth(et,Z),et===e.selectedYear&&Z===e.selectedMonth&&(e.selectedDay=Math.min(e.selectedDay,P)),A=(this._getFirstDayOfMonth(et,Z)-u+7)%7,I=Math.ceil((A+P)/7),H=G?this.maxRows>I?this.maxRows:I:I,this.maxRows=H,z=this._daylightSavingAdjust(new Date(et,Z,1-A)),F=0;H>F;F++){for(N+=\"<tr>\",E=d?\"<td class='ui-datepicker-week-col'>\"+this._get(e,\"calculateWeek\")(z)+\"</td>\":\"\",x=0;7>x;x++)W=g?g.apply(e.input?e.input[0]:null,[z]):[!0,\"\"],O=z.getMonth()!==Z,L=O&&!y||!W[0]||Q&&Q>z||$&&z>$,E+=\"<td class='\"+((x+u+6)%7>=5?\" ui-datepicker-week-end\":\"\")+(O?\" ui-datepicker-other-month\":\"\")+(z.getTime()===D.getTime()&&Z===e.selectedMonth&&e._keyEvent||b.getTime()===z.getTime()&&b.getTime()===D.getTime()?\" \"+this._dayOverClass:\"\")+(L?\" \"+this._unselectableClass+\" ui-state-disabled\":\"\")+(O&&!v?\"\":\" \"+W[1]+(z.getTime()===X.getTime()?\" \"+this._currentClass:\"\")+(z.getTime()===R.getTime()?\" ui-datepicker-today\":\"\"))+\"'\"+(O&&!v||!W[2]?\"\":\" title='\"+W[2].replace(/'/g,\"&#39;\")+\"'\")+(L?\"\":\" data-handler='selectDay' data-event='click' data-month='\"+z.getMonth()+\"' data-year='\"+z.getFullYear()+\"'\")+\">\"+(O&&!v?\"&#xa0;\":L?\"<span class='ui-state-default'>\"+z.getDate()+\"</span>\":\"<a class='ui-state-default\"+(z.getTime()===R.getTime()?\" ui-state-highlight\":\"\")+(z.getTime()===X.getTime()?\" ui-state-active\":\"\")+(O?\" ui-priority-secondary\":\"\")+\"' href='#'>\"+z.getDate()+\"</a>\")+\"</td>\",z.setDate(z.getDate()+1),z=this._daylightSavingAdjust(z);N+=E+\"</tr>\"}Z++,Z>11&&(Z=0,et++),N+=\"</tbody></table>\"+(G?\"</div>\"+(U[0]>0&&T===U[1]-1?\"<div class='ui-datepicker-row-break'></div>\":\"\"):\"\"),k+=N}_+=k}return _+=l,e._keyEvent=!1,_},_generateMonthYearHeader:function(e,t,i,s,n,a,o,r){var h,l,u,d,c,p,f,m,g=this._get(e,\"changeMonth\"),v=this._get(e,\"changeYear\"),y=this._get(e,\"showMonthAfterYear\"),b=\"<div class='ui-datepicker-title'>\",_=\"\";if(a||!g)_+=\"<span class='ui-datepicker-month'>\"+o[t]+\"</span>\";else{for(h=s&&s.getFullYear()===i,l=n&&n.getFullYear()===i,_+=\"<select class='ui-datepicker-month' data-handler='selectMonth' data-event='change'>\",u=0;12>u;u++)(!h||u>=s.getMonth())&&(!l||n.getMonth()>=u)&&(_+=\"<option value='\"+u+\"'\"+(u===t?\" selected='selected'\":\"\")+\">\"+r[u]+\"</option>\");_+=\"</select>\"}if(y||(b+=_+(!a&&g&&v?\"\":\"&#xa0;\")),!e.yearshtml)if(e.yearshtml=\"\",a||!v)b+=\"<span class='ui-datepicker-year'>\"+i+\"</span>\";else{for(d=this._get(e,\"yearRange\").split(\":\"),c=(new Date).getFullYear(),p=function(e){var t=e.match(/c[+\\-].*/)?i+parseInt(e.substring(1),10):e.match(/[+\\-].*/)?c+parseInt(e,10):parseInt(e,10);return isNaN(t)?c:t},f=p(d[0]),m=Math.max(f,p(d[1]||\"\")),f=s?Math.max(f,s.getFullYear()):f,m=n?Math.min(m,n.getFullYear()):m,e.yearshtml+=\"<select class='ui-datepicker-year' data-handler='selectYear' data-event='change'>\";m>=f;f++)e.yearshtml+=\"<option value='\"+f+\"'\"+(f===i?\" selected='selected'\":\"\")+\">\"+f+\"</option>\";\r\ne.yearshtml+=\"</select>\",b+=e.yearshtml,e.yearshtml=null}return b+=this._get(e,\"yearSuffix\"),y&&(b+=(!a&&g&&v?\"\":\"&#xa0;\")+_),b+=\"</div>\"},_adjustInstDate:function(e,t,i){var s=e.drawYear+(\"Y\"===i?t:0),n=e.drawMonth+(\"M\"===i?t:0),a=Math.min(e.selectedDay,this._getDaysInMonth(s,n))+(\"D\"===i?t:0),o=this._restrictMinMax(e,this._daylightSavingAdjust(new Date(s,n,a)));e.selectedDay=o.getDate(),e.drawMonth=e.selectedMonth=o.getMonth(),e.drawYear=e.selectedYear=o.getFullYear(),(\"M\"===i||\"Y\"===i)&&this._notifyChange(e)},_restrictMinMax:function(e,t){var i=this._getMinMaxDate(e,\"min\"),s=this._getMinMaxDate(e,\"max\"),n=i&&i>t?i:t;return s&&n>s?s:n},_notifyChange:function(e){var t=this._get(e,\"onChangeMonthYear\");t&&t.apply(e.input?e.input[0]:null,[e.selectedYear,e.selectedMonth+1,e])},_getNumberOfMonths:function(e){var t=this._get(e,\"numberOfMonths\");return null==t?[1,1]:\"number\"==typeof t?[1,t]:t},_getMinMaxDate:function(e,t){return this._determineDate(e,this._get(e,t+\"Date\"),null)},_getDaysInMonth:function(e,t){return 32-this._daylightSavingAdjust(new Date(e,t,32)).getDate()},_getFirstDayOfMonth:function(e,t){return new Date(e,t,1).getDay()},_canAdjustMonth:function(e,t,i,s){var n=this._getNumberOfMonths(e),a=this._daylightSavingAdjust(new Date(i,s+(0>t?t:n[0]*n[1]),1));return 0>t&&a.setDate(this._getDaysInMonth(a.getFullYear(),a.getMonth())),this._isInRange(e,a)},_isInRange:function(e,t){var i,s,n=this._getMinMaxDate(e,\"min\"),a=this._getMinMaxDate(e,\"max\"),o=null,r=null,h=this._get(e,\"yearRange\");return h&&(i=h.split(\":\"),s=(new Date).getFullYear(),o=parseInt(i[0],10),r=parseInt(i[1],10),i[0].match(/[+\\-].*/)&&(o+=s),i[1].match(/[+\\-].*/)&&(r+=s)),(!n||t.getTime()>=n.getTime())&&(!a||t.getTime()<=a.getTime())&&(!o||t.getFullYear()>=o)&&(!r||r>=t.getFullYear())},_getFormatConfig:function(e){var t=this._get(e,\"shortYearCutoff\");return t=\"string\"!=typeof t?t:(new Date).getFullYear()%100+parseInt(t,10),{shortYearCutoff:t,dayNamesShort:this._get(e,\"dayNamesShort\"),dayNames:this._get(e,\"dayNames\"),monthNamesShort:this._get(e,\"monthNamesShort\"),monthNames:this._get(e,\"monthNames\")}},_formatDate:function(e,t,i,s){t||(e.currentDay=e.selectedDay,e.currentMonth=e.selectedMonth,e.currentYear=e.selectedYear);var n=t?\"object\"==typeof t?t:this._daylightSavingAdjust(new Date(s,i,t)):this._daylightSavingAdjust(new Date(e.currentYear,e.currentMonth,e.currentDay));return this.formatDate(this._get(e,\"dateFormat\"),n,this._getFormatConfig(e))}}),e.fn.datepicker=function(t){if(!this.length)return this;e.datepicker.initialized||(e(document).mousedown(e.datepicker._checkExternalClick),e.datepicker.initialized=!0),0===e(\"#\"+e.datepicker._mainDivId).length&&e(\"body\").append(e.datepicker.dpDiv);var i=Array.prototype.slice.call(arguments,1);return\"string\"!=typeof t||\"isDisabled\"!==t&&\"getDate\"!==t&&\"widget\"!==t?\"option\"===t&&2===arguments.length&&\"string\"==typeof arguments[1]?e.datepicker[\"_\"+t+\"Datepicker\"].apply(e.datepicker,[this[0]].concat(i)):this.each(function(){\"string\"==typeof t?e.datepicker[\"_\"+t+\"Datepicker\"].apply(e.datepicker,[this].concat(i)):e.datepicker._attachDatepicker(this,t)}):e.datepicker[\"_\"+t+\"Datepicker\"].apply(e.datepicker,[this[0]].concat(i))},e.datepicker=new n,e.datepicker.initialized=!1,e.datepicker.uuid=(new Date).getTime(),e.datepicker.version=\"1.11.4\",e.datepicker});",null,"/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n///<reference path=\"../../Typedefs/jquery/jquery.d.ts\"/>\r\n///<reference path=\"../../Typedefs/d3/d3.d.ts\"/>\r\n///<reference path=\"../../Typedefs/lodash/lodash.d.ts\"/>","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n///<reference path=\"../../VisualsContracts/obj/VisualsContracts.d.ts\"/>\r\n\r\n","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"_references.ts\"/>\r\n\r\nmodule jsCommon {\r\n /**\r\n * DOM constants.\r\n */\r\n export module DOMConstants {\r\n\r\n /** \r\n * Integer codes corresponding to individual keys on the keyboard.\r\n */\r\n export const escKeyCode = 27;\r\n export const enterKeyCode = 13;\r\n export const tabKeyCode = 9;\r\n export const upArrowKeyCode = 38;\r\n export const downArrowKeyCode = 40;\r\n export const leftArrowKeyCode = 37;\r\n export const rightArrowKeyCode = 39;\r\n export const homeKeyCode = 36;\r\n export const endKeyCode = 35;\r\n export const backSpaceKeyCode = 8;\r\n export const deleteKeyCode = 46;\r\n export const spaceKeyCode = 32;\r\n export const shiftKeyCode = 16;\r\n export const ctrlKeyCode = 17;\r\n export const altKeyCode = 18;\r\n\r\n export const aKeyCode = 65;\r\n export const cKeyCode = 67;\r\n export const sKeyCode = 83;\r\n export const vKeyCode = 86;\r\n export const xKeyCode = 88;\r\n export const yKeyCode = 89;\r\n export const zKeyCode = 90;\r\n\r\n /** \r\n * DOM Elements.\r\n */\r\n export const DocumentBody = 'body';\r\n export const Anchor = 'a';\r\n export const EditableTextElements = ':text, textarea';\r\n\r\n /** \r\n * DOM Attributes and values.\r\n */\r\n export const disabledAttributeOrValue = 'disabled';\r\n export const readonlyAttributeOrValue = 'readonly';\r\n export const idAttribute = 'id';\r\n export const styleAttribute = 'style';\r\n export const hrefAttribute = 'href';\r\n export const targetAttribute = 'target';\r\n export const blankValue = '_blank';\r\n export const selfValue = '_self';\r\n export const classAttribute = 'class';\r\n export const titleAttribute = 'title';\r\n export const srcAttribute = 'src';\r\n\r\n /**\r\n * DOM event names.\r\n */\r\n export const contextmenuEventName = 'contextmenu';\r\n export const blurEventName = 'blur';\r\n export const keyUpEventName = 'keyup';\r\n export const inputEventName = 'input';\r\n export const changeEventName = 'change';\r\n export const cutEventName = 'cut';\r\n export const keyDownEventName = 'keydown';\r\n export const mouseMoveEventName = 'mousemove';\r\n export const mouseDownEventName = 'mousedown';\r\n export const mouseEnterEventName = 'mouseenter';\r\n export const mouseLeaveEventName = 'mouseleave';\r\n export const mouseOverEventName = 'mouseover';\r\n export const mouseOutEventName = 'mouseout';\r\n export const mouseClickEventName = 'click';\r\n export const pasteEventName = 'paste';\r\n export const scrollEventName = 'scroll';\r\n export const dropEventName = 'drop';\r\n export const focusEventName = 'focus';\r\n export const focusInEventName = 'focusin';\r\n export const focusOutEventName = 'focusout';\r\n export const selectEventName = 'select';\r\n export const messageEventName = 'message';\r\n export const loadEventName = 'load';\r\n export const beforeUnload = 'beforeunload';\r\n \r\n /**\r\n * Common DOM event combination names.\r\n */\r\n export const inputAndSelectEventNames = 'input, select';\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"_references.ts\"/>\r\n\r\nmodule powerbi {\r\n import IStringResourceProvider = jsCommon.IStringResourceProvider;\r\n\r\n export interface ServiceError {\r\n statusCode: number;\r\n\r\n /**\r\n * This error code corresponds with a PowerBIServiceException that happened on the server.\r\n */\r\n errorCode?: string;\r\n \r\n /**\r\n * Message and stack trace should only be sent in non-production environments.\r\n */\r\n message?: string;\r\n stackTrace?: string;\r\n errorDetails?: PowerBIErrorDetail[];\r\n parameters?: ErrorParameter[];\r\n }\r\n\r\n export interface PowerBIErrorDetail {\r\n code: string;\r\n detail: PowerBIErrorDetailValue;\r\n }\r\n\r\n export interface ErrorParameter {\r\n Key: string;\r\n Value: string;\r\n }\r\n\r\n export interface PowerBIErrorDetailValue {\r\n type: PowerBIErrorResourceType;\r\n value: string;\r\n }\r\n\r\n export enum PowerBIErrorResourceType {\r\n ResourceCodeReference = 0,\r\n EmbeddedString = 1,\r\n }\r\n\r\n export const enum ServiceErrorStatusCode {\r\n GeneralError = 0,\r\n CsdlFetching = 1,\r\n CsdlConvertXmlToConceptualSchema = 2,\r\n CsdlCreateClientSchema = 3,\r\n ExecuteSemanticQueryError = 4,\r\n ExecuteSemanticQueryInvalidStreamFormat = 5,\r\n ExecuteSemanticQueryTransformError = 6,\r\n }\r\n\r\n export class ServiceErrorToClientError implements IClientError {\r\n private m_serviceError: ServiceError;\r\n private httpRequestId: string;\r\n private static codeName = 'ServiceErrorToClientError';\r\n\r\n public get code(): string {\r\n return ServiceErrorToClientError.codeName;\r\n }\r\n\r\n public get ignorable(): boolean {\r\n return false;\r\n }\r\n\r\n public get requestId(): string {\r\n return this.httpRequestId;\r\n }\r\n\r\n public set requestId(value: string) {\r\n this.httpRequestId = value;\r\n }\r\n\r\n constructor(serviceError: ServiceError) {\r\n this.m_serviceError = serviceError;\r\n }\r\n\r\n public getDetails(resourceProvider: IStringResourceProvider): ErrorDetails {\r\n let errorDetails: ErrorDetails;\r\n if (this.m_serviceError.statusCode === ServiceErrorStatusCode.ExecuteSemanticQueryTransformError) {\r\n errorDetails = PowerBIErrorDetailHelper.GetDetailsFromTransformError(resourceProvider, this.m_serviceError);\r\n }\r\n else {\r\n errorDetails = PowerBIErrorDetailHelper.GetDetailsFromServerErrorStatusCode(resourceProvider, this.m_serviceError.statusCode);\r\n }\r\n\r\n PowerBIErrorDetailHelper.addAdditionalInfo(errorDetails, this.m_serviceError.errorDetails, resourceProvider);\r\n PowerBIErrorDetailHelper.addMessageAndStackTrace(errorDetails, this.m_serviceError.message || null, this.m_serviceError.stackTrace || null, resourceProvider);\r\n\r\n return errorDetails;\r\n }\r\n }\r\n\r\n export class PowerBIErrorDetailHelper {\r\n private static serverErrorPrefix = \"ServerError_\";\r\n public static addAdditionalInfo(errorDetails: ErrorDetails, pbiErrorDetails: PowerBIErrorDetail[], localize: IStringResourceProvider): ErrorDetails {\r\n if (pbiErrorDetails) {\r\n for (let i = 0; i < pbiErrorDetails.length; i++) {\r\n let element = pbiErrorDetails[i];\r\n let localizedCode = localize.get(PowerBIErrorDetailHelper.serverErrorPrefix + element.code);\r\n let additionErrorInfoKeyValuePair = {\r\n errorInfoKey: localizedCode ? localizedCode : element.code,\r\n errorInfoValue: element.detail.type === PowerBIErrorResourceType.ResourceCodeReference ? localize.get(PowerBIErrorDetailHelper.serverErrorPrefix + element.detail.value) : element.detail.value\r\n };\r\n\r\n errorDetails.additionalErrorInfo.push(additionErrorInfoKeyValuePair);\r\n }\r\n }\r\n return errorDetails;\r\n }\r\n\r\n public static addMessageAndStackTrace(errorDetails: ErrorDetails, message: string, stackTrace: string, localize: IStringResourceProvider): ErrorDetails {\r\n if (message) {\r\n let additionErrorInfoKeyValuePair = {\r\n errorInfoKey: localize.get(\"AdditionalErrorInfo_ErrorDetailsText\"),\r\n errorInfoValue: message\r\n };\r\n errorDetails.additionalErrorInfo.push(additionErrorInfoKeyValuePair);\r\n }\r\n if (stackTrace) {\r\n let additionErrorInfoKeyValuePair = {\r\n errorInfoKey: localize.get(\"AdditionalErrorInfo_StackTraceText\"),\r\n errorInfoValue: stackTrace\r\n };\r\n errorDetails.additionalErrorInfo.push(additionErrorInfoKeyValuePair);\r\n }\r\n return errorDetails;\r\n }\r\n\r\n public static GetDetailsFromTransformError(localize: IStringResourceProvider, serviceError: ServiceError): ErrorDetails {\r\n let message = localize.get('ServiceError_CannotLoadVisual');\r\n let key = localize.get('ServiceError_CannotLoadVisual');\r\n let val = serviceError.message;\r\n\r\n let additionalInfo: ErrorInfoKeyValuePair[] = [];\r\n additionalInfo.push({ errorInfoKey: key, errorInfoValue: val, });\r\n\r\n let errorDetails: ErrorDetails = {\r\n message: message,\r\n additionalErrorInfo: additionalInfo,\r\n };\r\n\r\n return errorDetails;\r\n }\r\n\r\n public static GetDetailsFromServerErrorStatusCode(localize: IStringResourceProvider, statusCode: number): ErrorDetails {\r\n // TODO: Localize\r\n let message: string = \"\";\r\n let key: string = \"\";\r\n let val: string = \"\";\r\n\r\n switch (statusCode) {\r\n case ServiceErrorStatusCode.CsdlConvertXmlToConceptualSchema:\r\n message = localize.get('ServiceError_ModelCannotLoad');\r\n key = localize.get('ServiceError_ModelConvertFailureKey');\r\n val = localize.get('ServiceError_ModelConvertFailureValue');\r\n break;\r\n case ServiceErrorStatusCode.CsdlCreateClientSchema:\r\n message = localize.get('ServiceError_ModelCannotLoad');\r\n key = localize.get('ServiceError_ModelCreationFailureKey');\r\n val = localize.get('ServiceError_ModelCreationFailureValue');\r\n break;\r\n case ServiceErrorStatusCode.CsdlFetching:\r\n message = localize.get('ServiceError_ModelCannotLoad');\r\n key = localize.get('ServiceError_ModelFetchingFailureKey');\r\n val = localize.get('ServiceError_ModelFetchingFailureValue');\r\n break;\r\n case ServiceErrorStatusCode.ExecuteSemanticQueryError:\r\n message = localize.get('ServiceError_CannotLoadVisual');\r\n key = localize.get('ServiceError_ExecuteSemanticQueryErrorKey');\r\n val = localize.get('ServiceError_ExecuteSemanticQueryErrorValue');\r\n break;\r\n case ServiceErrorStatusCode.ExecuteSemanticQueryInvalidStreamFormat:\r\n message = localize.get('ServiceError_CannotLoadVisual');\r\n key = localize.get('ServiceError_ExecuteSemanticQueryInvalidStreamFormatKey');\r\n val = localize.get('ServiceError_ExecuteSemanticQueryInvalidStreamFormatValue');\r\n break;\r\n case ServiceErrorStatusCode.GeneralError:\r\n default:\r\n message = localize.get('ServiceError_GeneralError');\r\n key = localize.get('ServiceError_GeneralErrorKey');\r\n val = localize.get('ServiceError_GeneralErrorValue');\r\n break;\r\n }\r\n\r\n let additionalInfo: ErrorInfoKeyValuePair[] = [];\r\n additionalInfo.push({ errorInfoKey: key, errorInfoValue: val, });\r\n\r\n let errorDetails: ErrorDetails = {\r\n message: message,\r\n additionalErrorInfo: additionalInfo,\r\n };\r\n\r\n return errorDetails;\r\n }\r\n }\r\n} ","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\nmodule powerbi {\r\n export declare let build;\r\n} ","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi {\r\n export const CategoryTypes = {\r\n Address: \"Address\",\r\n City: \"City\",\r\n Continent: \"Continent\",\r\n CountryRegion: \"Country\", // The text has to stay \"Country\" because it is used as a key in the geocoding caching dictionary\r\n County: \"County\",\r\n Longitude: \"Longitude\",\r\n Latitude: \"Latitude\",\r\n Place: \"Place\",\r\n PostalCode: \"PostalCode\",\r\n StateOrProvince: \"StateOrProvince\"\r\n };\r\n\r\n export interface IGeoTaggingAnalyzerService {\r\n isLongitudeOrLatitude(fieldRefName: string): boolean;\r\n isGeographic(fieldRefName: string): boolean;\r\n isGeocodable(fieldRefName: string): boolean;\r\n getFieldType(fieldName: string): string;\r\n isGeoshapable(fieldRefName: string): boolean;\r\n }\r\n\r\n export function createGeoTaggingAnalyzerService(getLocalized: (string) => string): IGeoTaggingAnalyzerService {\r\n return new GeoTaggingAnalyzerService(getLocalized);\r\n }\r\n\r\n const EnglishBackup = {\r\n GeotaggingString_Continent: \"continent\",\r\n GeotaggingString_Continents: \"continents\",\r\n GeotaggingString_Country: \"country\",\r\n GeotaggingString_Countries: \"countries\",\r\n GeotaggingString_State: \"state\",\r\n GeotaggingString_States: \"states\",\r\n GeotaggingString_City: \"city\",\r\n GeotaggingString_Cities: \"cities\",\r\n GeotaggingString_Town: \"town\",\r\n GeotaggingString_Towns: \"towns\",\r\n GeotaggingString_Province: \"province\",\r\n GeotaggingString_Provinces: \"provinces\",\r\n GeotaggingString_County: \"county\",\r\n GeotaggingString_Counties: \"counties\",\r\n GeotaggingString_Village: \"village\",\r\n GeotaggingString_Villages: \"villages\",\r\n GeotaggingString_Post: \"post\",\r\n GeotaggingString_Zip: \"zip\",\r\n GeotaggingString_Code: \"code\",\r\n GeotaggingString_Place: \"place\",\r\n GeotaggingString_Places: \"places\",\r\n GeotaggingString_Address: \"address\",\r\n GeotaggingString_Addresses: \"addresses\",\r\n GeotaggingString_Street: \"street\",\r\n GeotaggingString_Streets: \"streets\",\r\n GeotaggingString_Longitude: \"longitude\",\r\n GeotaggingString_Longitude_Short: \"lon\",\r\n GeotaggingString_Latitude: \"latitude\",\r\n GeotaggingString_Latitude_Short: \"lat\",\r\n GeotaggingString_PostalCode: \"postal code\",\r\n GeotaggingString_PostalCodes: \"postal codes\",\r\n GeotaggingString_ZipCode: \"zip code\",\r\n GeotaggingString_ZipCodes: \"zip codes\",\r\n GeotaggingString_Territory: \"territory\",\r\n GeotaggingString_Territories: \"territories\",\r\n GeotaggingString_VRMBackCompat_CountryRegion: \"CountryRegion\",\r\n GeotaggingString_VRMBackCompat_StateOrProvince: \"StateOrProvince\",\r\n };\r\n\r\n export class GeoTaggingAnalyzerService implements IGeoTaggingAnalyzerService {\r\n private GeotaggingString_Continent;\r\n private GeotaggingString_Continents;\r\n private GeotaggingString_Country;\r\n private GeotaggingString_Countries;\r\n private GeotaggingString_State;\r\n private GeotaggingString_States;\r\n private GeotaggingString_City;\r\n private GeotaggingString_Cities;\r\n private GeotaggingString_Town;\r\n private GeotaggingString_Towns;\r\n private GeotaggingString_Province;\r\n private GeotaggingString_Provinces;\r\n private GeotaggingString_County;\r\n private GeotaggingString_Counties;\r\n private GeotaggingString_Village;\r\n private GeotaggingString_Villages;\r\n private GeotaggingString_Post;\r\n private GeotaggingString_Zip;\r\n private GeotaggingString_Code;\r\n private GeotaggingString_Place;\r\n private GeotaggingString_Places;\r\n private GeotaggingString_Address;\r\n private GeotaggingString_Addresses;\r\n private GeotaggingString_Street;\r\n private GeotaggingString_Streets;\r\n private GeotaggingString_Longitude;\r\n private GeotaggingString_Longitude_Short;\r\n private GeotaggingString_Latitude;\r\n private GeotaggingString_Latitude_Short;\r\n private GeotaggingString_PostalCode;\r\n private GeotaggingString_PostalCodes;\r\n private GeotaggingString_ZipCode;\r\n private GeotaggingString_ZipCodes;\r\n private GeotaggingString_Territory;\r\n private GeotaggingString_Territories;\r\n private GeotaggingString_VRMBackCompat_CountryRegion = \"CountryRegion\";\r\n private GeotaggingString_VRMBackCompat_StateOrProvince = \"StateOrProvince\";\r\n\r\n constructor(getLocalized: (string) => string) {\r\n this.GeotaggingString_Continent = getLocalized(\"GeotaggingString_Continent\").toLowerCase();\r\n this.GeotaggingString_Continents = getLocalized(\"GeotaggingString_Continents\").toLowerCase();\r\n this.GeotaggingString_Country = getLocalized(\"GeotaggingString_Country\").toLowerCase();\r\n this.GeotaggingString_Countries = getLocalized(\"GeotaggingString_Countries\").toLowerCase();\r\n this.GeotaggingString_State = getLocalized(\"GeotaggingString_State\").toLowerCase();\r\n this.GeotaggingString_States = getLocalized(\"GeotaggingString_States\").toLowerCase();\r\n this.GeotaggingString_City = getLocalized(\"GeotaggingString_City\").toLowerCase();\r\n this.GeotaggingString_Cities = getLocalized(\"GeotaggingString_Cities\").toLowerCase();\r\n this.GeotaggingString_Town = getLocalized(\"GeotaggingString_Town\").toLowerCase();\r\n this.GeotaggingString_Towns = getLocalized(\"GeotaggingString_Towns\").toLowerCase();\r\n this.GeotaggingString_Province = getLocalized(\"GeotaggingString_Province\").toLowerCase();\r\n this.GeotaggingString_Provinces = getLocalized(\"GeotaggingString_Provinces\").toLowerCase();\r\n this.GeotaggingString_County = getLocalized(\"GeotaggingString_County\").toLowerCase();\r\n this.GeotaggingString_Counties = getLocalized(\"GeotaggingString_Counties\").toLowerCase();\r\n this.GeotaggingString_Village = getLocalized(\"GeotaggingString_Village\").toLowerCase();\r\n this.GeotaggingString_Villages = getLocalized(\"GeotaggingString_Villages\").toLowerCase();\r\n this.GeotaggingString_Post = getLocalized(\"GeotaggingString_Post\").toLowerCase();\r\n this.GeotaggingString_Zip = getLocalized(\"GeotaggingString_Zip\").toLowerCase();\r\n this.GeotaggingString_Code = getLocalized(\"GeotaggingString_Code\").toLowerCase();\r\n this.GeotaggingString_Place = getLocalized(\"GeotaggingString_Place\").toLowerCase();\r\n this.GeotaggingString_Places = getLocalized(\"GeotaggingString_Places\").toLowerCase();\r\n this.GeotaggingString_Address = getLocalized(\"GeotaggingString_Address\").toLowerCase();\r\n this.GeotaggingString_Addresses = getLocalized(\"GeotaggingString_Addresses\").toLowerCase();\r\n this.GeotaggingString_Street = getLocalized(\"GeotaggingString_Street\").toLowerCase();\r\n this.GeotaggingString_Streets = getLocalized(\"GeotaggingString_Streets\").toLowerCase();\r\n this.GeotaggingString_Longitude = getLocalized(\"GeotaggingString_Longitude\").toLowerCase();\r\n this.GeotaggingString_Longitude_Short = getLocalized(\"GeotaggingString_Longitude_Short\").toLowerCase();\r\n this.GeotaggingString_Latitude = getLocalized(\"GeotaggingString_Latitude\").toLowerCase();\r\n this.GeotaggingString_Latitude_Short = getLocalized(\"GeotaggingString_Latitude_Short\").toLowerCase();\r\n this.GeotaggingString_PostalCode = getLocalized(\"GeotaggingString_PostalCode\").toLowerCase();\r\n this.GeotaggingString_PostalCodes = getLocalized(\"GeotaggingString_PostalCodes\").toLowerCase();\r\n this.GeotaggingString_ZipCode = getLocalized(\"GeotaggingString_ZipCode\").toLowerCase();\r\n this.GeotaggingString_ZipCodes = getLocalized(\"GeotaggingString_ZipCodes\").toLowerCase();\r\n this.GeotaggingString_Territory = getLocalized(\"GeotaggingString_Territory\").toLowerCase();\r\n this.GeotaggingString_Territories = getLocalized(\"GeotaggingString_Territories\").toLowerCase();\r\n }\r\n\r\n public isLongitudeOrLatitude(fieldRefName: string): boolean {\r\n return this.isLongitude(fieldRefName) ||\r\n this.isLatitude(fieldRefName);\r\n }\r\n\r\n public isGeographic(fieldRefName: string): boolean {\r\n return this.isLongitudeOrLatitude(fieldRefName) ||\r\n this.isGeocodable(fieldRefName);\r\n }\r\n\r\n public isGeocodable(fieldRefName: string): boolean {\r\n return this.isAddress(fieldRefName) ||\r\n this.isCity(fieldRefName) ||\r\n this.isContinent(fieldRefName) ||\r\n this.isCountry(fieldRefName) ||\r\n this.isCounty(fieldRefName) ||\r\n this.isStateOrProvince(fieldRefName) ||\r\n this.isPlace(fieldRefName) ||\r\n this.isPostalCode(fieldRefName) ||\r\n this.isTerritory(fieldRefName);\r\n }\r\n\r\n public isGeoshapable(fieldRefName: string): boolean {\r\n return this.isCity(fieldRefName) ||\r\n this.isCountry(fieldRefName) ||\r\n this.isCounty(fieldRefName) ||\r\n this.isStateOrProvince(fieldRefName) ||\r\n this.isPostalCode(fieldRefName) ||\r\n this.isTerritory(fieldRefName) ||\r\n this.isGeoshapableEnglish(fieldRefName);\r\n }\r\n\r\n private isGeoshapableEnglish(fieldRefName: string): boolean {\r\n return this.isEnglishCity(fieldRefName) ||\r\n this.isEnglishCountry(fieldRefName) ||\r\n this.isEnglishCounty(fieldRefName) ||\r\n this.isEnglishStateOrProvince(fieldRefName) ||\r\n this.isEnglishPostalCode(fieldRefName) ||\r\n this.isEnglishTerritory(fieldRefName);\r\n }\r\n\r\n private isAddress(fieldRefName: string): boolean {\r\n return GeoTaggingAnalyzerService.hasMatches(fieldRefName, [\r\n this.GeotaggingString_Address,\r\n this.GeotaggingString_Addresses,\r\n this.GeotaggingString_Street,\r\n this.GeotaggingString_Streets\r\n ]);\r\n }\r\n\r\n private isPlace(fieldRefName: string): boolean {\r\n return GeoTaggingAnalyzerService.hasMatches(fieldRefName, [\r\n this.GeotaggingString_Place,\r\n this.GeotaggingString_Places\r\n ]);\r\n }\r\n\r\n private isCity(fieldRefName: string): boolean {\r\n return GeoTaggingAnalyzerService.hasMatches(fieldRefName, [\r\n this.GeotaggingString_City,\r\n this.GeotaggingString_Cities,\r\n this.GeotaggingString_Town,\r\n this.GeotaggingString_Towns,\r\n this.GeotaggingString_Village,\r\n this.GeotaggingString_Villages\r\n ]);\r\n }\r\n\r\n private isStateOrProvince(fieldRefName: string): boolean {\r\n return GeoTaggingAnalyzerService.hasMatches(fieldRefName, [\r\n this.GeotaggingString_State,\r\n this.GeotaggingString_States,\r\n this.GeotaggingString_Province,\r\n this.GeotaggingString_Provinces,\r\n this.GeotaggingString_VRMBackCompat_StateOrProvince,\r\n ]);\r\n }\r\n\r\n private isCountry(fieldRefName: string): boolean {\r\n return GeoTaggingAnalyzerService.hasMatches(fieldRefName, [\r\n this.GeotaggingString_Country,\r\n this.GeotaggingString_Countries,\r\n this.GeotaggingString_VRMBackCompat_CountryRegion\r\n ]);\r\n }\r\n\r\n private isCounty(fieldRefName: string): boolean {\r\n return GeoTaggingAnalyzerService.hasMatches(fieldRefName, [\r\n this.GeotaggingString_County,\r\n this.GeotaggingString_Counties\r\n ]);\r\n }\r\n\r\n private isContinent(fieldRefName: string): boolean {\r\n return GeoTaggingAnalyzerService.hasMatches(fieldRefName, [\r\n this.GeotaggingString_Continent,\r\n this.GeotaggingString_Continents\r\n ]);\r\n }\r\n\r\n private isPostalCode(fieldRefName: string): boolean {\r\n let result =\r\n (GeoTaggingAnalyzerService.hasMatches(fieldRefName, [\r\n this.GeotaggingString_Post,\r\n this.GeotaggingString_Zip])\r\n && GeoTaggingAnalyzerService.hasMatches(fieldRefName, [this.GeotaggingString_Code])) ||\r\n GeoTaggingAnalyzerService.hasMatches(fieldRefName, [\r\n this.GeotaggingString_PostalCode,\r\n this.GeotaggingString_PostalCodes,\r\n this.GeotaggingString_ZipCode,\r\n this.GeotaggingString_ZipCodes\r\n ]);\r\n\r\n //Check again for strings without whitespace\r\n if (!result) {\r\n let whiteSpaceRegex = /\\s+/;\r\n let fieldNameWithoutWhitespace = fieldRefName.replace(whiteSpaceRegex, \"\");\r\n result = GeoTaggingAnalyzerService.hasMatches(fieldNameWithoutWhitespace, [\r\n this.GeotaggingString_PostalCode.replace(whiteSpaceRegex, ''),\r\n this.GeotaggingString_PostalCodes.replace(whiteSpaceRegex, ''),\r\n this.GeotaggingString_ZipCode.replace(whiteSpaceRegex, ''),\r\n this.GeotaggingString_ZipCodes.replace(whiteSpaceRegex, '')\r\n ]);\r\n }\r\n\r\n return result;\r\n }\r\n\r\n private isLongitude(fieldRefName: string): boolean {\r\n return GeoTaggingAnalyzerService.hasMatches(fieldRefName, [this.GeotaggingString_Longitude])\r\n || GeoTaggingAnalyzerService.hasMatches(fieldRefName, [this.GeotaggingString_Longitude_Short], true /* useStrict */);\r\n }\r\n\r\n private isLatitude(fieldRefName: string): boolean {\r\n return GeoTaggingAnalyzerService.hasMatches(fieldRefName, [this.GeotaggingString_Latitude])\r\n || GeoTaggingAnalyzerService.hasMatches(fieldRefName, [this.GeotaggingString_Latitude_Short], true /* useStrict */);\r\n }\r\n\r\n private isTerritory(fieldRefName: string): boolean {\r\n return GeoTaggingAnalyzerService.hasMatches(fieldRefName, [\r\n this.GeotaggingString_Territory,\r\n this.GeotaggingString_Territories\r\n ]);\r\n }\r\n\r\n private static hasMatches(fieldName: string, possibleMatches: string[], useStrict?: boolean): boolean {\r\n let nonWordRegex = /\\W/;\r\n let value = fieldName.toLowerCase();\r\n for (let i = 0, len = possibleMatches.length; i < len; i++) {\r\n let possibleMatch = possibleMatches[i].toLowerCase();\r\n if (!useStrict) {\r\n if (value.indexOf(possibleMatch) > -1)\r\n return true;\r\n }\r\n else {\r\n let indexofpossibleMatch = value.indexOf(possibleMatch);\r\n if (indexofpossibleMatch > -1) {\r\n let wordEndFlag, wordBeginFlag: boolean;\r\n wordEndFlag = wordBeginFlag = true;\r\n if (indexofpossibleMatch - 1 > 0)\r\n wordBeginFlag = nonWordRegex.test(value[indexofpossibleMatch - 1]);\r\n if (indexofpossibleMatch + possibleMatch.length < value.length)\r\n wordEndFlag = nonWordRegex.test(value[indexofpossibleMatch + possibleMatch.length]);\r\n if (wordBeginFlag && wordEndFlag)\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n public getFieldType(fieldName: string): string {\r\n if (fieldName == null)\r\n return undefined;\r\n if (this.isLatitude(fieldName))\r\n return CategoryTypes.Latitude;\r\n if (this.isLongitude(fieldName))\r\n return CategoryTypes.Longitude;\r\n if (this.isPostalCode(fieldName))\r\n return CategoryTypes.PostalCode;\r\n if (this.isAddress(fieldName))\r\n return CategoryTypes.Address;\r\n if (this.isPlace(fieldName))\r\n return CategoryTypes.Place;\r\n if (this.isCity(fieldName))\r\n return CategoryTypes.City;\r\n if (this.isCountry(fieldName))\r\n return CategoryTypes.CountryRegion;\r\n if (this.isCounty(fieldName))\r\n return CategoryTypes.County;\r\n if (this.isStateOrProvince(fieldName))\r\n return CategoryTypes.StateOrProvince;\r\n if (this.isContinent(fieldName))\r\n return CategoryTypes.Continent;\r\n return this.getEnglishFieldType(fieldName);\r\n }\r\n\r\n private isEnglishAddress(fieldRefName: string): boolean {\r\n return GeoTaggingAnalyzerService.hasMatches(fieldRefName, [\r\n EnglishBackup.GeotaggingString_Address,\r\n EnglishBackup.GeotaggingString_Addresses,\r\n EnglishBackup.GeotaggingString_Street,\r\n EnglishBackup.GeotaggingString_Streets\r\n ]);\r\n }\r\n\r\n private isEnglishPlace(fieldRefName: string): boolean {\r\n return GeoTaggingAnalyzerService.hasMatches(fieldRefName, [\r\n EnglishBackup.GeotaggingString_Place,\r\n EnglishBackup.GeotaggingString_Places\r\n ]);\r\n }\r\n\r\n private isEnglishCity(fieldRefName: string): boolean {\r\n return GeoTaggingAnalyzerService.hasMatches(fieldRefName, [\r\n EnglishBackup.GeotaggingString_City,\r\n EnglishBackup.GeotaggingString_Cities,\r\n EnglishBackup.GeotaggingString_Town,\r\n EnglishBackup.GeotaggingString_Towns,\r\n EnglishBackup.GeotaggingString_Village,\r\n EnglishBackup.GeotaggingString_Villages\r\n ]);\r\n }\r\n\r\n private isEnglishStateOrProvince(fieldRefName: string): boolean {\r\n return GeoTaggingAnalyzerService.hasMatches(fieldRefName, [\r\n EnglishBackup.GeotaggingString_State,\r\n EnglishBackup.GeotaggingString_States,\r\n EnglishBackup.GeotaggingString_Province,\r\n EnglishBackup.GeotaggingString_Provinces,\r\n EnglishBackup.GeotaggingString_VRMBackCompat_StateOrProvince,\r\n ]);\r\n }\r\n\r\n private isEnglishCountry(fieldRefName: string): boolean {\r\n return GeoTaggingAnalyzerService.hasMatches(fieldRefName, [\r\n EnglishBackup.GeotaggingString_Country,\r\n EnglishBackup.GeotaggingString_Countries,\r\n EnglishBackup.GeotaggingString_VRMBackCompat_CountryRegion\r\n ]);\r\n }\r\n\r\n private isEnglishCounty(fieldRefName: string): boolean {\r\n return GeoTaggingAnalyzerService.hasMatches(fieldRefName, [\r\n EnglishBackup.GeotaggingString_County,\r\n EnglishBackup.GeotaggingString_Counties\r\n ]);\r\n }\r\n\r\n private isEnglishContinent(fieldRefName: string): boolean {\r\n return GeoTaggingAnalyzerService.hasMatches(fieldRefName, [\r\n EnglishBackup.GeotaggingString_Continent,\r\n EnglishBackup.GeotaggingString_Continents\r\n ]);\r\n }\r\n\r\n private isEnglishPostalCode(fieldRefName: string): boolean {\r\n let result =\r\n (GeoTaggingAnalyzerService.hasMatches(fieldRefName, [\r\n EnglishBackup.GeotaggingString_Post,\r\n EnglishBackup.GeotaggingString_Zip])\r\n && GeoTaggingAnalyzerService.hasMatches(fieldRefName, [this.GeotaggingString_Code])) ||\r\n GeoTaggingAnalyzerService.hasMatches(fieldRefName, [\r\n EnglishBackup.GeotaggingString_PostalCode,\r\n EnglishBackup.GeotaggingString_PostalCodes,\r\n EnglishBackup.GeotaggingString_ZipCode,\r\n EnglishBackup.GeotaggingString_ZipCodes\r\n ]);\r\n\r\n //Check again for strings without whitespace\r\n if (!result) {\r\n let whiteSpaceRegexPattern = new RegExp('\\s');\r\n result = GeoTaggingAnalyzerService.hasMatches(fieldRefName, [\r\n EnglishBackup.GeotaggingString_PostalCode.replace(whiteSpaceRegexPattern, ''),\r\n EnglishBackup.GeotaggingString_PostalCodes.replace(whiteSpaceRegexPattern, ''),\r\n EnglishBackup.GeotaggingString_ZipCode.replace(whiteSpaceRegexPattern, ''),\r\n EnglishBackup.GeotaggingString_ZipCodes.replace(whiteSpaceRegexPattern, '')\r\n ]);\r\n }\r\n\r\n return result;\r\n }\r\n\r\n private isEnglishLongitude(fieldRefName: string): boolean {\r\n return GeoTaggingAnalyzerService.hasMatches(fieldRefName, [\r\n EnglishBackup.GeotaggingString_Longitude,\r\n EnglishBackup.GeotaggingString_Longitude_Short\r\n ]);\r\n }\r\n\r\n private isEnglishLatitude(fieldRefName: string): boolean {\r\n return GeoTaggingAnalyzerService.hasMatches(fieldRefName, [\r\n EnglishBackup.GeotaggingString_Latitude,\r\n EnglishBackup.GeotaggingString_Latitude_Short\r\n ]);\r\n }\r\n\r\n protected isEnglishTerritory(fieldRefName: string): boolean {\r\n return GeoTaggingAnalyzerService.hasMatches(fieldRefName, [\r\n EnglishBackup.GeotaggingString_Territory,\r\n EnglishBackup.GeotaggingString_Territories\r\n ]);\r\n }\r\n\r\n private getEnglishFieldType(fieldName: string): string {\r\n if (fieldName == null)\r\n return undefined;\r\n if (this.isEnglishLatitude(fieldName))\r\n return CategoryTypes.Latitude;\r\n if (this.isEnglishLongitude(fieldName))\r\n return CategoryTypes.Longitude;\r\n if (this.isEnglishPostalCode(fieldName))\r\n return CategoryTypes.PostalCode;\r\n if (this.isEnglishAddress(fieldName))\r\n return CategoryTypes.Address;\r\n if (this.isEnglishPlace(fieldName))\r\n return CategoryTypes.Place;\r\n if (this.isEnglishCity(fieldName))\r\n return CategoryTypes.City;\r\n if (this.isEnglishCountry(fieldName))\r\n return CategoryTypes.CountryRegion;\r\n if (this.isEnglishCounty(fieldName))\r\n return CategoryTypes.County;\r\n if (this.isEnglishStateOrProvince(fieldName))\r\n return CategoryTypes.StateOrProvince;\r\n if (this.isEnglishContinent(fieldName))\r\n return CategoryTypes.Continent;\r\n return undefined;\r\n }\r\n }\r\n} ","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\ndeclare var DEBUG: boolean;\r\n\r\nif (typeof DEBUG === 'undefined') var DEBUG = true;","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"_references.ts\"/>\r\n\r\nmodule powerbi {\r\n import IStringResourceProvider = jsCommon.IStringResourceProvider;\r\n\r\n export interface ILocalizableError {\r\n getDetails(resourceProvider: IStringResourceProvider): ErrorDetails;\r\n }\r\n\r\n export interface IClientError extends ILocalizableError {\r\n code: string;\r\n debugInfo?: string;\r\n ignorable?: boolean;\r\n requestId?: string;\r\n }\r\n\r\n export interface IClientWarning extends ILocalizableError {\r\n columnNameFromIndex: (index: number) => string;\r\n }\r\n\r\n export class UnknownClientError implements IClientError {\r\n public get code(): string {\r\n return 'UnknownClientError';\r\n }\r\n public get ignorable(): boolean {\r\n return false;\r\n }\r\n\r\n public getDetails(resourceProvider: IStringResourceProvider): ErrorDetails {\r\n let details: ErrorDetails = {\r\n message: resourceProvider.get('ClientError_UnknownClientErrorValue'),\r\n additionalErrorInfo: [{ errorInfoKey: resourceProvider.get('ClientError_UnknownClientErrorKey'), errorInfoValue: resourceProvider.get('ClientError_UnknownClientErrorValue'), }],\r\n };\r\n\r\n return details;\r\n }\r\n }\r\n\r\n export class HttpClientError implements IClientError {\r\n private httpRequestId: string;\r\n private httpStatusCode: number;\r\n \r\n constructor(httpStatusCode: number, requestId: string) {\r\n debug.assertValue(httpStatusCode, 'httpStatusCode');\r\n debug.assertValue(requestId, 'requestId');\r\n this.httpStatusCode = httpStatusCode;\r\n this.httpRequestId = requestId;\r\n }\r\n\r\n public get code(): string {\r\n return 'HttpClientError';\r\n }\r\n\r\n public get ignorable(): boolean {\r\n return false;\r\n }\r\n\r\n public get requestId(): string {\r\n return this.httpRequestId;\r\n }\r\n\r\n public getDetails(resourceProvider: IStringResourceProvider): ErrorDetails {\r\n // Use a general error message for a HTTP request failure, since we currently do not know of any specifc error cases at this point in time.\r\n let details: ErrorDetails = {\r\n message: null,\r\n additionalErrorInfo: [\r\n { errorInfoKey: resourceProvider.get('DsrError_Key'), errorInfoValue: resourceProvider.get('DsrError_UnknownErrorValue')},\r\n { errorInfoKey: resourceProvider.get('ClientError_HttpResponseStatusCodeKey'), errorInfoValue: this.httpStatusCode.toString() }],\r\n };\r\n\r\n return details;\r\n }\r\n }\r\n\r\n export class IgnorableClientError implements IClientError {\r\n public get code(): string {\r\n return 'IgnorableClientError';\r\n }\r\n public get ignorable(): boolean {\r\n return true;\r\n }\r\n\r\n public getDetails(resourceProvider: IStringResourceProvider): ErrorDetails {\r\n let details: ErrorDetails = {\r\n message: '',\r\n additionalErrorInfo: [],\r\n };\r\n\r\n return details;\r\n }\r\n }\r\n} ","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"_references.ts\"/>\r\n\r\nmodule jsCommon {\r\n export interface ArrayIdItems<T> extends Array<T> {\r\n withId(id: number): T;\r\n }\r\n\r\n export interface ArrayNamedItems<T> extends Array<T> {\r\n withName(name: string): T;\r\n }\r\n\r\n export module ArrayExtensions {\r\n /**\r\n * Returns items that exist in target and other.\r\n */\r\n export function intersect<T>(target: T[], other: T[]): T[] {\r\n let result: T[] = [];\r\n for (let i = target.length - 1; i >= 0; --i) {\r\n if (other.indexOf(target[i]) !== -1) {\r\n result.push(target[i]);\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n /**\r\n * Return elements exists in target but not exists in other.\r\n */\r\n export function diff<T>(target: T[], other: T[]): T[] {\r\n let result: T[] = [];\r\n for (let i = target.length - 1; i >= 0; --i) {\r\n let value: T = target[i];\r\n if (other.indexOf(value) === -1) {\r\n result.push(value);\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n /** \r\n * Return an array with only the distinct items in the source. \r\n */\r\n export function distinct<T>(source: T[]): T[] {\r\n let result: T[] = [];\r\n for (let i = 0, len = source.length; i < len; i++) {\r\n let value: T = source[i];\r\n if (result.indexOf(value) === -1) {\r\n result.push(value);\r\n }\r\n }\r\n return result;\r\n }\r\n \r\n /**\r\n * Pushes content of source onto target,\r\n * for parts of course that do not already exist in target.\r\n */\r\n export function union<T>(target: T[], source: T[]): void {\r\n for (let i = 0, len = source.length; i < len; ++i) {\r\n unionSingle(target, source[i]);\r\n }\r\n }\r\n\r\n /**\r\n * Pushes value onto target, if value does not already exist in target.\r\n */\r\n export function unionSingle<T>(target: T[], value: T): void {\r\n if (target.indexOf(value) < 0) {\r\n target.push(value);\r\n }\r\n }\r\n \r\n /**\r\n * Returns an array with a range of items from source,\r\n * including the startIndex & endIndex.\r\n */\r\n export function range<T>(source: T[], startIndex: number, endIndex: number): T[] {\r\n debug.assert(startIndex >= 0 && startIndex < source.length, 'startIndex is out of range.');\r\n debug.assert(endIndex >= 0 && endIndex < source.length, 'endIndex is out of range.');\r\n\r\n let result: T[] = [];\r\n for (let i = startIndex; i <= endIndex; ++i) {\r\n result.push(source[i]);\r\n }\r\n return result;\r\n }\r\n\r\n /**\r\n * Returns an array that includes items from source, up to the specified count.\r\n */\r\n export function take<T>(source: T[], count: number): T[] {\r\n debug.assert(count >= 0, 'Count is negative.');\r\n debug.assert(count <= source.length, 'Count is too large.');\r\n\r\n let result: T[] = [];\r\n for (let i = 0; i < count; ++i) {\r\n result.push(source[i]);\r\n }\r\n return result;\r\n }\r\n\r\n export function copy<T>(source: T[]): T[] {\r\n debug.assertValue(source, 'source');\r\n\r\n return take(source, source.length);\r\n }\r\n\r\n /**\r\n * Returns a value indicating whether the arrays have the same values in the same sequence.\r\n */\r\n export function sequenceEqual<T>(left: T[], right: T[], comparison: (x: T, y: T) => boolean): boolean {\r\n debug.assertValue(comparison, 'comparison');\r\n\r\n if (left === right) {\r\n return true;\r\n }\r\n\r\n if (!!left !== !!right) {\r\n return false;\r\n }\r\n\r\n let len = left.length;\r\n if (len !== right.length) {\r\n return false;\r\n }\r\n\r\n let i = 0;\r\n while (i < len && comparison(left[i], right[i])) {\r\n ++i;\r\n }\r\n\r\n return i === len;\r\n }\r\n\r\n /**\r\n * Returns null if the specified array is empty. \r\n * Otherwise returns the specified array.\r\n */\r\n export function emptyToNull<T>(array: T[]): T[] {\r\n if (array && array.length === 0) {\r\n return null;\r\n }\r\n return array;\r\n }\r\n\r\n export function indexOf<T>(array: T[], predicate: (T) => boolean): number {\r\n debug.assertValue(array, 'array');\r\n debug.assertValue(predicate, 'predicate');\r\n\r\n for (let i = 0, len = array.length; i < len; ++i) {\r\n if (predicate(array[i])) {\r\n return i;\r\n }\r\n }\r\n return -1;\r\n }\r\n\r\n /**\r\n * Returns a copy of the array rotated by the specified offset.\r\n */\r\n export function rotate<T>(array: T[], offset: number): T[] {\r\n if (offset === 0)\r\n return array.slice();\r\n\r\n let rotated = array.slice(offset);\r\n Array.prototype.push.apply(rotated, array.slice(0, offset));\r\n\r\n return rotated;\r\n }\r\n\r\n export function createWithId<T>(): ArrayIdItems<T> {\r\n return extendWithId<T>([]);\r\n }\r\n\r\n export function extendWithId<T>(array: { id: number }[]): ArrayIdItems<T> {\r\n debug.assertValue(array, 'array');\r\n\r\n let extended: ArrayIdItems<T> = <any>array;\r\n extended.withId = withId;\r\n\r\n return extended;\r\n }\r\n\r\n /**\r\n * Finds and returns the first item with a matching ID.\r\n */\r\n export function findWithId<T>(array: T[], id: number): T {\r\n for (let i = 0, len = array.length; i < len; i++) {\r\n let item = array[i];\r\n if ((<any>item).id === id)\r\n return item;\r\n }\r\n }\r\n\r\n function withId<T>(id: number): T {\r\n return ArrayExtensions.findWithId<T>(this, id);\r\n }\r\n\r\n export function createWithName<T>(): ArrayNamedItems<T> {\r\n return extendWithName<T>([]);\r\n }\r\n\r\n export function extendWithName<T>(array: { name: string }[]): ArrayNamedItems<T> {\r\n debug.assertValue(array, 'array');\r\n\r\n let extended: ArrayNamedItems<T> = <any>array;\r\n extended.withName = withName;\r\n\r\n return extended;\r\n }\r\n\r\n export function findItemWithName<T>(array: T[], name: string): T {\r\n let index = indexWithName(array, name);\r\n if (index >= 0)\r\n return array[index];\r\n }\r\n\r\n export function indexWithName<T>(array: T[], name: string): number {\r\n for (let i = 0, len = array.length; i < len; i++) {\r\n let item = array[i];\r\n if ((<any>item).name === name)\r\n return i;\r\n }\r\n\r\n return -1;\r\n }\r\n\r\n /**\r\n * Finds and returns the first item with a matching name.\r\n */\r\n function withName<T>(name: string): T {\r\n let array: T[] = this;\r\n return findItemWithName(array, name);\r\n }\r\n\r\n /**\r\n * Deletes all items from the array.\r\n */\r\n export function clear(array: any[]): void {\r\n if (!array)\r\n return;\r\n\r\n while (array.length > 0)\r\n array.pop();\r\n }\r\n\r\n export function isUndefinedOrEmpty(array: any[]): boolean {\r\n if (!array || array.length === 0) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n export function swap<T>(array: T[], firstIndex: number, secondIndex: number): void {\r\n let temp = array[firstIndex];\r\n array[firstIndex] = array[secondIndex];\r\n array[secondIndex] = temp;\r\n }\r\n\r\n export function isInArray<T>(array: T[], lookupItem: T, compareCallback: (item1: T, item2: T) => boolean): boolean {\r\n return _.any(array, item => compareCallback(item, lookupItem));\r\n }\r\n }\r\n} ","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule InJs {\r\n export module DomFactory {\r\n\r\n export function div(): JQuery {\r\n return $('<div/>');\r\n }\r\n\r\n export function span(): JQuery {\r\n return $('<span/>');\r\n }\r\n\r\n export function checkbox(): JQuery {\r\n return $('<input type=\"checkbox\"/>');\r\n }\r\n\r\n export function ul(): JQuery {\r\n return $('<ul/>');\r\n }\r\n\r\n export function li(): JQuery {\r\n return $('<li/>');\r\n }\r\n\r\n export function button(): JQuery {\r\n return $('<input type=\"button\"/>');\r\n }\r\n\r\n export function select(): JQuery {\r\n return $('<select/>');\r\n }\r\n\r\n export function textBox(): JQuery {\r\n return $('<input type=\"text\"/>');\r\n }\r\n\r\n export function img(): JQuery {\r\n return $('<img/>');\r\n }\r\n\r\n export function iframe(): JQuery {\r\n return $('<iframe/>');\r\n }\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"_references.ts\"/>\r\n\r\nmodule powerbi {\r\n\r\n /**\r\n * Module Double contains a set of constants and precision based utility methods \r\n * for dealing with doubles and their decimal garbage in the javascript.\r\n */\r\n export module Double {\r\n\r\n // Constants.\r\n export const MIN_VALUE = -Number.MAX_VALUE;\r\n export const MAX_VALUE = Number.MAX_VALUE;\r\n export const MIN_EXP = -308;\r\n export const MAX_EXP = 308;\r\n export const EPSILON = 1E-323;\r\n export const DEFAULT_PRECISION = 0.0001;\r\n export const DEFAULT_PRECISION_IN_DECIMAL_DIGITS = 12;\r\n export const LOG_E_10 = Math.log(10);\r\n export const POSITIVE_POWERS = [\r\n 1E0, 1E1, 1E2, 1E3, 1E4, 1E5, 1E6, 1E7, 1E8, 1E9, 1E10, 1E11, 1E12, 1E13, 1E14, 1E15, 1E16, 1E17, 1E18, 1E19, 1E20, 1E21, 1E22, 1E23, 1E24, 1E25, 1E26, 1E27, 1E28, 1E29, 1E30, 1E31, 1E32, 1E33, 1E34, 1E35, 1E36, 1E37, 1E38, 1E39, 1E40, 1E41, 1E42, 1E43, 1E44, 1E45, 1E46, 1E47, 1E48, 1E49, 1E50, 1E51, 1E52, 1E53, 1E54, 1E55, 1E56, 1E57, 1E58, 1E59, 1E60, 1E61, 1E62, 1E63, 1E64, 1E65, 1E66, 1E67, 1E68, 1E69, 1E70, 1E71, 1E72, 1E73, 1E74, 1E75, 1E76, 1E77, 1E78, 1E79, 1E80, 1E81, 1E82, 1E83, 1E84, 1E85, 1E86, 1E87, 1E88, 1E89, 1E90, 1E91, 1E92, 1E93, 1E94, 1E95, 1E96, 1E97, 1E98, 1E99,\r\n 1E100, 1E101, 1E102, 1E103, 1E104, 1E105, 1E106, 1E107, 1E108, 1E109, 1E110, 1E111, 1E112, 1E113, 1E114, 1E115, 1E116, 1E117, 1E118, 1E119, 1E120, 1E121, 1E122, 1E123, 1E124, 1E125, 1E126, 1E127, 1E128, 1E129, 1E130, 1E131, 1E132, 1E133, 1E134, 1E135, 1E136, 1E137, 1E138, 1E139, 1E140, 1E141, 1E142, 1E143, 1E144, 1E145, 1E146, 1E147, 1E148, 1E149, 1E150, 1E151, 1E152, 1E153, 1E154, 1E155, 1E156, 1E157, 1E158, 1E159, 1E160, 1E161, 1E162, 1E163, 1E164, 1E165, 1E166, 1E167, 1E168, 1E169, 1E170, 1E171, 1E172, 1E173, 1E174, 1E175, 1E176, 1E177, 1E178, 1E179, 1E180, 1E181, 1E182, 1E183, 1E184, 1E185, 1E186, 1E187, 1E188, 1E189, 1E190, 1E191, 1E192, 1E193, 1E194, 1E195, 1E196, 1E197, 1E198, 1E199,\r\n 1E200, 1E201, 1E202, 1E203, 1E204, 1E205, 1E206, 1E207, 1E208, 1E209, 1E210, 1E211, 1E212, 1E213, 1E214, 1E215, 1E216, 1E217, 1E218, 1E219, 1E220, 1E221, 1E222, 1E223, 1E224, 1E225, 1E226, 1E227, 1E228, 1E229, 1E230, 1E231, 1E232, 1E233, 1E234, 1E235, 1E236, 1E237, 1E238, 1E239, 1E240, 1E241, 1E242, 1E243, 1E244, 1E245, 1E246, 1E247, 1E248, 1E249, 1E250, 1E251, 1E252, 1E253, 1E254, 1E255, 1E256, 1E257, 1E258, 1E259, 1E260, 1E261, 1E262, 1E263, 1E264, 1E265, 1E266, 1E267, 1E268, 1E269, 1E270, 1E271, 1E272, 1E273, 1E274, 1E275, 1E276, 1E277, 1E278, 1E279, 1E280, 1E281, 1E282, 1E283, 1E284, 1E285, 1E286, 1E287, 1E288, 1E289, 1E290, 1E291, 1E292, 1E293, 1E294, 1E295, 1E296, 1E297, 1E298, 1E299,\r\n 1E300, 1E301, 1E302, 1E303, 1E304, 1E305, 1E306, 1E307, 1E308];\r\n export const NEGATIVE_POWERS = [\r\n 1E0, 1E-1, 1E-2, 1E-3, 1E-4, 1E-5, 1E-6, 1E-7, 1E-8, 1E-9, 1E-10, 1E-11, 1E-12, 1E-13, 1E-14, 1E-15, 1E-16, 1E-17, 1E-18, 1E-19, 1E-20, 1E-21, 1E-22, 1E-23, 1E-24, 1E-25, 1E-26, 1E-27, 1E-28, 1E-29, 1E-30, 1E-31, 1E-32, 1E-33, 1E-34, 1E-35, 1E-36, 1E-37, 1E-38, 1E-39, 1E-40, 1E-41, 1E-42, 1E-43, 1E-44, 1E-45, 1E-46, 1E-47, 1E-48, 1E-49, 1E-50, 1E-51, 1E-52, 1E-53, 1E-54, 1E-55, 1E-56, 1E-57, 1E-58, 1E-59, 1E-60, 1E-61, 1E-62, 1E-63, 1E-64, 1E-65, 1E-66, 1E-67, 1E-68, 1E-69, 1E-70, 1E-71, 1E-72, 1E-73, 1E-74, 1E-75, 1E-76, 1E-77, 1E-78, 1E-79, 1E-80, 1E-81, 1E-82, 1E-83, 1E-84, 1E-85, 1E-86, 1E-87, 1E-88, 1E-89, 1E-90, 1E-91, 1E-92, 1E-93, 1E-94, 1E-95, 1E-96, 1E-97, 1E-98, 1E-99,\r\n 1E-100, 1E-101, 1E-102, 1E-103, 1E-104, 1E-105, 1E-106, 1E-107, 1E-108, 1E-109, 1E-110, 1E-111, 1E-112, 1E-113, 1E-114, 1E-115, 1E-116, 1E-117, 1E-118, 1E-119, 1E-120, 1E-121, 1E-122, 1E-123, 1E-124, 1E-125, 1E-126, 1E-127, 1E-128, 1E-129, 1E-130, 1E-131, 1E-132, 1E-133, 1E-134, 1E-135, 1E-136, 1E-137, 1E-138, 1E-139, 1E-140, 1E-141, 1E-142, 1E-143, 1E-144, 1E-145, 1E-146, 1E-147, 1E-148, 1E-149, 1E-150, 1E-151, 1E-152, 1E-153, 1E-154, 1E-155, 1E-156, 1E-157, 1E-158, 1E-159, 1E-160, 1E-161, 1E-162, 1E-163, 1E-164, 1E-165, 1E-166, 1E-167, 1E-168, 1E-169, 1E-170, 1E-171, 1E-172, 1E-173, 1E-174, 1E-175, 1E-176, 1E-177, 1E-178, 1E-179, 1E-180, 1E-181, 1E-182, 1E-183, 1E-184, 1E-185, 1E-186, 1E-187, 1E-188, 1E-189, 1E-190, 1E-191, 1E-192, 1E-193, 1E-194, 1E-195, 1E-196, 1E-197, 1E-198, 1E-199,\r\n 1E-200, 1E-201, 1E-202, 1E-203, 1E-204, 1E-205, 1E-206, 1E-207, 1E-208, 1E-209, 1E-210, 1E-211, 1E-212, 1E-213, 1E-214, 1E-215, 1E-216, 1E-217, 1E-218, 1E-219, 1E-220, 1E-221, 1E-222, 1E-223, 1E-224, 1E-225, 1E-226, 1E-227, 1E-228, 1E-229, 1E-230, 1E-231, 1E-232, 1E-233, 1E-234, 1E-235, 1E-236, 1E-237, 1E-238, 1E-239, 1E-240, 1E-241, 1E-242, 1E-243, 1E-244, 1E-245, 1E-246, 1E-247, 1E-248, 1E-249, 1E-250, 1E-251, 1E-252, 1E-253, 1E-254, 1E-255, 1E-256, 1E-257, 1E-258, 1E-259, 1E-260, 1E-261, 1E-262, 1E-263, 1E-264, 1E-265, 1E-266, 1E-267, 1E-268, 1E-269, 1E-270, 1E-271, 1E-272, 1E-273, 1E-274, 1E-275, 1E-276, 1E-277, 1E-278, 1E-279, 1E-280, 1E-281, 1E-282, 1E-283, 1E-284, 1E-285, 1E-286, 1E-287, 1E-288, 1E-289, 1E-290, 1E-291, 1E-292, 1E-293, 1E-294, 1E-295, 1E-296, 1E-297, 1E-298, 1E-299,\r\n 1E-300, 1E-301, 1E-302, 1E-303, 1E-304, 1E-305, 1E-306, 1E-307, 1E-308, 1E-309, 1E-310, 1E-311, 1E-312, 1E-313, 1E-314, 1E-315, 1E-316, 1E-317, 1E-318, 1E-319, 1E-320, 1E-321, 1E-322, 1E-323, 1E-324];\r\n\r\n /**\r\n * Returns powers of 10. \r\n * Unlike the Math.pow this function produces no decimal garbage.\r\n * @param exp Exponent.\r\n */\r\n export function pow10(exp: number): number {\r\n debug.assertValue(exp, \"exp\");\r\n\r\n // Positive & zero\r\n if (exp >= 0) {\r\n if (exp < Double.POSITIVE_POWERS.length) {\r\n return Double.POSITIVE_POWERS[exp];\r\n } else {\r\n return Infinity;\r\n }\r\n }\r\n // Negative\r\n exp = -exp;\r\n if (exp > 0 && exp < Double.NEGATIVE_POWERS.length) { // if exp==int.MIN_VALUE then changing the sign will overflow and keep the number negative - we need to check for exp > 0 to filter out this corner case\r\n return Double.NEGATIVE_POWERS[exp];\r\n } else {\r\n return 0;\r\n }\r\n }\r\n\r\n /** \r\n * Returns the 10 base logarithm of the number.\r\n * Unlike Math.log function this produces integer results with no decimal garbage.\r\n * @param val Positive value or zero.\r\n */\r\n export function log10(val: number): number {\r\n debug.assert(val >= 0, \"val\");\r\n\r\n // Fast Log10() algorithm \r\n if (val > 1 && val < 1E16) {\r\n if (val < 1E8) {\r\n if (val < 1E4) {\r\n if (val < 1E2) {\r\n if (val < 1E1) {\r\n return 0;\r\n } else {\r\n return 1;\r\n }\r\n } else {\r\n if (val < 1E3) {\r\n return 2;\r\n } else {\r\n return 3;\r\n }\r\n }\r\n } else {\r\n if (val < 1E6) {\r\n if (val < 1E5) {\r\n return 4;\r\n } else {\r\n return 5;\r\n }\r\n } else {\r\n if (val < 1E7) {\r\n return 6;\r\n } else {\r\n return 7;\r\n }\r\n }\r\n }\r\n } else {\r\n if (val < 1E12) {\r\n if (val < 1E10) {\r\n if (val < 1E9) {\r\n return 8;\r\n } else {\r\n return 9;\r\n }\r\n } else {\r\n if (val < 1E11) {\r\n return 10;\r\n } else {\r\n return 11;\r\n }\r\n }\r\n } else {\r\n if (val < 1E14) {\r\n if (val < 1E13) {\r\n return 12;\r\n } else {\r\n return 13;\r\n }\r\n } else {\r\n if (val < 1E15) {\r\n return 14;\r\n } else {\r\n return 15;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (val > 1E-16 && val < 1) {\r\n if (val < 1E-8) {\r\n if (val < 1E-12) {\r\n if (val < 1E-14) {\r\n if (val < 1E-15) {\r\n return -16;\r\n } else {\r\n return -15;\r\n }\r\n } else {\r\n if (val < 1E-13) {\r\n return -14;\r\n } else {\r\n return -13;\r\n }\r\n }\r\n } else {\r\n if (val < 1E-10) {\r\n if (val < 1E-11) {\r\n return -12;\r\n } else {\r\n return -11;\r\n }\r\n } else {\r\n if (val < 1E-9) {\r\n return -10;\r\n } else {\r\n return -9;\r\n }\r\n }\r\n }\r\n } else {\r\n if (val < 1E-4) {\r\n if (val < 1E-6) {\r\n if (val < 1E-7) {\r\n return -8;\r\n } else {\r\n return -7;\r\n }\r\n } else {\r\n if (val < 1E-5) {\r\n return -6;\r\n } else {\r\n return -5;\r\n }\r\n }\r\n } else {\r\n if (val < 1E-2) {\r\n if (val < 1E-3) {\r\n return -4;\r\n } else {\r\n return -3;\r\n }\r\n } else {\r\n if (val < 1E-1) {\r\n return -2;\r\n } else {\r\n return -1;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n // JS Math provides only natural log function so we need to calc the 10 base logarithm:\r\n // logb(x) = logk(x)/logk(b); \r\n let log10 = Math.log(val) / Double.LOG_E_10;\r\n return Double.floorWithPrecision(log10);\r\n }\r\n\r\n /**\r\n * Returns a power of 10 representing precision of the number based on the number of meaningful decimal digits. \r\n * For example the precision of 56,263.3767 with the 6 meaningful decimal digit is 0.1.\r\n * @param x Value.\r\n * @param decimalDigits How many decimal digits are meaningfull.\r\n */\r\n export function getPrecision(x: number, decimalDigits?: number): number {\r\n if (decimalDigits === undefined) {\r\n decimalDigits = Double.DEFAULT_PRECISION_IN_DECIMAL_DIGITS;\r\n } else {\r\n debug.assert(decimalDigits >= 0, \"decimalDigits\");\r\n }\r\n if (!x) {\r\n return undefined;\r\n }\r\n\r\n let exp = Double.log10(Math.abs(x));\r\n\r\n if (exp < Double.MIN_EXP) {\r\n return 0;\r\n }\r\n let precisionExp = Math.max(exp - decimalDigits, -Double.NEGATIVE_POWERS.length + 1);\r\n return Double.pow10(precisionExp);\r\n }\r\n\r\n /** \r\n * Checks if a delta between 2 numbers is less than provided precision.\r\n * @param x One value.\r\n * @param y Another value.\r\n * @param precision Precision value.\r\n */\r\n export function equalWithPrecision(x: number, y: number, precision?: number): boolean {\r\n precision = applyDefault(precision, Double.DEFAULT_PRECISION);\r\n debug.assert(precision >= 0, \"precision\");\r\n\r\n return x === y || Math.abs(x - y) < precision;\r\n }\r\n\r\n /** \r\n * Checks if a first value is less than another taking \r\n * into account the loose precision based equality.\r\n * @param x One value.\r\n * @param y Another value.\r\n * @param precision Precision value.\r\n */\r\n export function lessWithPrecision(x: number, y: number, precision?: number): boolean {\r\n precision = applyDefault(precision, Double.DEFAULT_PRECISION);\r\n debug.assert(precision >= 0, \"precision\");\r\n\r\n return x < y && Math.abs(x - y) > precision;\r\n }\r\n\r\n /** \r\n * Checks if a first value is less or equal than another taking \r\n * into account the loose precision based equality.\r\n * @param x One value.\r\n * @param y Another value.\r\n * @param precision Precision value.\r\n */\r\n export function lessOrEqualWithPrecision(x: number, y: number, precision?: number): boolean {\r\n precision = applyDefault(precision, Double.DEFAULT_PRECISION);\r\n debug.assert(precision >= 0, \"precision\");\r\n\r\n return x < y || Math.abs(x - y) < precision;\r\n }\r\n\r\n /** \r\n * Checks if a first value is greater than another taking \r\n * into account the loose precision based equality.\r\n * @param x One value.\r\n * @param y Another value.\r\n * @param precision Precision value.\r\n */\r\n export function greaterWithPrecision(x: number, y: number, precision?: number): boolean {\r\n precision = applyDefault(precision, Double.DEFAULT_PRECISION);\r\n debug.assert(precision >= 0, \"precision\");\r\n\r\n return x > y && Math.abs(x - y) > precision;\r\n }\r\n\r\n /** \r\n * Checks if a first value is greater or equal to another taking \r\n * into account the loose precision based equality.\r\n * @param x One value.\r\n * @param y Another value.\r\n * @param precision Precision value.\r\n */\r\n export function greaterOrEqualWithPrecision(x: number, y: number, precision?: number): boolean {\r\n precision = applyDefault(precision, Double.DEFAULT_PRECISION);\r\n debug.assert(precision >= 0, \"precision\");\r\n\r\n return x > y || Math.abs(x - y) < precision;\r\n }\r\n\r\n /** \r\n * Floors the number unless it's withing the precision distance from the higher int.\r\n * @param x One value.\r\n * @param precision Precision value.\r\n */\r\n export function floorWithPrecision(x: number, precision?: number): number {\r\n precision = applyDefault(precision, Double.DEFAULT_PRECISION);\r\n debug.assert(precision >= 0, \"precision\");\r\n\r\n let roundX = Math.round(x);\r\n if (Math.abs(x - roundX) < precision) {\r\n return roundX;\r\n } else {\r\n return Math.floor(x);\r\n }\r\n }\r\n\r\n /** \r\n * Ceils the number unless it's withing the precision distance from the lower int.\r\n * @param x One value.\r\n * @param precision Precision value.\r\n */\r\n export function ceilWithPrecision(x: number, precision?: number): number {\r\n precision = applyDefault(precision, Double.DEFAULT_PRECISION);\r\n debug.assert(precision >= 0, \"precision\");\r\n\r\n let roundX = Math.round(x);\r\n if (Math.abs(x - roundX) < precision) {\r\n return roundX;\r\n } else {\r\n return Math.ceil(x);\r\n }\r\n }\r\n\r\n /** \r\n * Floors the number to the provided precision.\r\n * For example 234,578 floored to 1,000 precision is 234,000.\r\n * @param x One value.\r\n * @param precision Precision value.\r\n */\r\n export function floorToPrecision(x: number, precision?: number): number {\r\n precision = applyDefault(precision, Double.DEFAULT_PRECISION);\r\n debug.assert(precision >= 0, \"precision\");\r\n if (precision === 0 || x === 0) {\r\n return x;\r\n }\r\n //Precision must be a Power of 10\r\n return Math.floor(x / precision) * precision;\r\n }\r\n\r\n /** \r\n * Ceils the number to the provided precision.\r\n * For example 234,578 floored to 1,000 precision is 235,000.\r\n * @param x One value.\r\n * @param precision Precision value.\r\n */\r\n export function ceilToPrecision(x: number, precision?: number): number {\r\n precision = applyDefault(precision, Double.DEFAULT_PRECISION);\r\n debug.assert(precision >= 0, \"precision\");\r\n if (precision === 0 || x === 0) {\r\n return x;\r\n }\r\n //Precision must be a Power of 10\r\n return Math.ceil(x / precision) * precision;\r\n }\r\n\r\n /** \r\n * Rounds the number to the provided precision. \r\n * For example 234,578 floored to 1,000 precision is 235,000.\r\n * @param x One value.\r\n * @param precision Precision value.\r\n */\r\n export function roundToPrecision(x: number, precision?: number): number {\r\n precision = applyDefault(precision, Double.DEFAULT_PRECISION);\r\n debug.assert(precision >= 0, \"precision\");\r\n if (precision === 0 || x === 0) {\r\n return x;\r\n } \r\n //Precision must be a Power of 10\r\n let result = Math.round(x / precision) * precision;\r\n let decimalDigits = Math.round(Double.log10(Math.abs(x)) - Double.log10(precision)) + 1;\r\n if (decimalDigits > 0 && decimalDigits < 16) {\r\n result = parseFloat(result.toPrecision(decimalDigits));\r\n }\r\n\r\n return result;\r\n }\r\n\r\n /** \r\n * Returns the value making sure that it's restricted to the provided range.\r\n * @param x One value.\r\n * @param min Range min boundary.\r\n * @param max Range max boundary.\r\n */\r\n export function ensureInRange(x: number, min: number, max: number): number {\r\n debug.assert(min <= max, \"min must be less or equal to max\");\r\n if (x === undefined || x === null) {\r\n return x;\r\n }\r\n if (x < min) {\r\n return min;\r\n }\r\n if (x > max) {\r\n return max;\r\n }\r\n return x;\r\n }\r\n\r\n /** \r\n * Rounds the value - this method is actually faster than Math.round - used in the graphics utils.\r\n * @param x Value to round.\r\n */\r\n export function round(x: number): number {\r\n debug.assert(x >= 0, \"x must be greater or equal to 0\");\r\n\r\n return (0.5 + x) << 0;\r\n }\r\n\r\n /** \r\n * Projects the value from the source range into the target range.\r\n * @param value Value to project.\r\n * @param fromMin Minimum of the source range.\r\n * @param toMin Minimum of the target range.\r\n * @param toMax Maximum of the target range.\r\n */\r\n export function project(value: number, fromMin: number, fromSize: number, toMin: number, toSize: number): number {\r\n if (fromSize === 0 || toSize === 0) {\r\n if (fromMin <= value && value <= fromMin + fromSize) {\r\n return toMin;\r\n } else {\r\n return NaN;\r\n }\r\n }\r\n let relativeX = (value - fromMin) / fromSize;\r\n let projectedX = toMin + relativeX * toSize;\r\n return projectedX;\r\n }\r\n\r\n /** \r\n * Removes decimal noise.\r\n * @param value Value to be processed.\r\n */\r\n export function removeDecimalNoise(value: number): number {\r\n return roundToPrecision(value, getPrecision(value));\r\n }\r\n\r\n /** \r\n * Checks whether the number is integer.\r\n * @param value Value to be checked.\r\n */\r\n export function isInteger(value: number): boolean {\r\n return value !== null && value % 1 === 0;\r\n }\r\n\r\n /**\r\n * Dividing by increment will give us count of increments\r\n * Round out the rough edges into even integer\r\n * Multiply back by increment to get rounded value\r\n * e.g. Rounder.toIncrement(0.647291, 0.05) => 0.65\r\n * @param value - value to round to nearest increment\r\n * @param increment - smallest increment to round toward\r\n */\r\n export function toIncrement(value: number, increment: number): number {\r\n return Math.round(value / increment) * increment;\r\n }\r\n }\r\n\r\n function applyDefault(value: number, defaultValue: number): number {\r\n return value !== undefined ? value : defaultValue;\r\n }\r\n}\r\n","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"_references.ts\"/>\r\n\r\nmodule jsCommon {\r\n import Double = powerbi.Double;\r\n\r\n export module Color {\r\n export function rotate(rgbString: string, rotateFactor: number): string {\r\n if (rotateFactor === 0)\r\n return rgbString;\r\n\r\n let originalRgb = parseColorString(rgbString);\r\n let originalHsv = rgbToHsv(originalRgb);\r\n let rotatedHsv = rotateHsv(originalHsv, rotateFactor);\r\n let rotatedRgb = hsvToRgb(rotatedHsv);\r\n return hexString(rotatedRgb);\r\n }\r\n\r\n export function normalizeToHexString(color: string): string {\r\n let rgb = parseColorString(color);\r\n return hexString(rgb);\r\n }\r\n\r\n export function parseColorString(color: string): RgbColor {\r\n debug.assertValue(color, 'color');\r\n\r\n if (color.indexOf('#') >= 0) {\r\n if (color.length === 7) {\r\n // #RRGGBB\r\n let result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(color);\r\n if (result == null || result.length < 4)\r\n return;\r\n\r\n return {\r\n R: parseInt(result[1], 16),\r\n G: parseInt(result[2], 16),\r\n B: parseInt(result[3], 16),\r\n };\r\n } else if (color.length === 4) {\r\n // #RGB\r\n let result = /^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i.exec(color);\r\n if (result == null || result.length < 4)\r\n return;\r\n\r\n return {\r\n R: parseInt(result[1] + result[1], 16),\r\n G: parseInt(result[2] + result[2], 16),\r\n B: parseInt(result[3] + result[3], 16),\r\n };\r\n }\r\n }\r\n else if (color.indexOf('rgb(') >= 0) {\r\n // rgb(R, G, B)\r\n let result = /^rgb\\((\\d+),\\s*(\\d+),\\s*(\\d+)\\)$/.exec(color);\r\n if (result == null || result.length < 4)\r\n return;\r\n\r\n return {\r\n R: parseInt(result[1], 10),\r\n G: parseInt(result[2], 10),\r\n B: parseInt(result[3], 10),\r\n };\r\n }\r\n else if (color.indexOf('rgba(') >= 0) {\r\n // rgba(R, G, B, A)\r\n let result = /^rgba\\((\\d+),\\s*(\\d+),\\s*(\\d+),\\s*(\\d*(?:\\.\\d+)?)\\)$/.exec(color);\r\n if (result == null || result.length < 5)\r\n return;\r\n\r\n return {\r\n R: parseInt(result[1], 10),\r\n G: parseInt(result[2], 10),\r\n B: parseInt(result[3], 10),\r\n A: parseFloat(result[4]),\r\n };\r\n }\r\n }\r\n\r\n function rgbToHsv(rgbColor: RgbColor): HsvColor {\r\n let s, h;\r\n let r = rgbColor.R / 255,\r\n g = rgbColor.G / 255,\r\n b = rgbColor.B / 255;\r\n\r\n let min = Math.min(r, Math.min(g, b));\r\n let max = Math.max(r, Math.max(g, b));\r\n\r\n let v = max;\r\n let delta = max - min;\r\n if (max === 0 || delta === 0) {\r\n // R, G, and B must be 0.0, or all the same.\r\n // In this case, S is 0.0, and H is undefined.\r\n // Using H = 0.0 is as good as any...\r\n s = 0;\r\n h = 0;\r\n }\r\n else {\r\n s = delta / max;\r\n if (r === max) {\r\n // Between Yellow and Magenta\r\n h = (g - b) / delta;\r\n }\r\n else if (g === max) {\r\n // Between Cyan and Yellow\r\n h = 2 + (b - r) / delta;\r\n }\r\n else {\r\n // Between Magenta and Cyan\r\n h = 4 + (r - g) / delta;\r\n }\r\n }\r\n\r\n // Scale h to be between 0.0 and 1.\r\n // This may require adding 1, if the value\r\n // is negative.\r\n h /= 6;\r\n if (h < 0) {\r\n h += 1;\r\n }\r\n\r\n return {\r\n H: h,\r\n S: s,\r\n V: v,\r\n };\r\n }\r\n\r\n function hsvToRgb(hsvColor: HsvColor): RgbColor {\r\n let r, g, b;\r\n let h = hsvColor.H,\r\n s = hsvColor.S,\r\n v = hsvColor.V;\r\n\r\n if (s === 0) {\r\n // If s is 0, all colors are the same.\r\n // This is some flavor of gray.\r\n r = v;\r\n g = v;\r\n b = v;\r\n }\r\n else {\r\n let p, q, t, fractionalSector, sectorNumber, sectorPos;\r\n\r\n // The color wheel consists of 6 sectors.\r\n // Figure out which sector you//re in.\r\n sectorPos = h * 6;\r\n sectorNumber = Math.floor(sectorPos);\r\n\r\n // get the fractional part of the sector.\r\n // That is, how many degrees into the sector\r\n // are you?\r\n fractionalSector = sectorPos - sectorNumber;\r\n\r\n // Calculate values for the three axes\r\n // of the color.\r\n p = v * (1.0 - s);\r\n q = v * (1.0 - (s * fractionalSector));\r\n t = v * (1.0 - (s * (1 - fractionalSector)));\r\n\r\n // Assign the fractional colors to r, g, and b\r\n // based on the sector the angle is in.\r\n switch (sectorNumber) {\r\n case 0:\r\n r = v;\r\n g = t;\r\n b = p;\r\n break;\r\n\r\n case 1:\r\n r = q;\r\n g = v;\r\n b = p;\r\n break;\r\n\r\n case 2:\r\n r = p;\r\n g = v;\r\n b = t;\r\n break;\r\n\r\n case 3:\r\n r = p;\r\n g = q;\r\n b = v;\r\n break;\r\n\r\n case 4:\r\n r = t;\r\n g = p;\r\n b = v;\r\n break;\r\n\r\n case 5:\r\n r = v;\r\n g = p;\r\n b = q;\r\n break;\r\n }\r\n }\r\n\r\n return {\r\n R: Math.floor(r * 255),\r\n G: Math.floor(g * 255),\r\n B: Math.floor(b * 255),\r\n };\r\n }\r\n\r\n function rotateHsv(hsvColor: HsvColor, rotateFactor: number): HsvColor {\r\n let newH = hsvColor.H + rotateFactor;\r\n\r\n return {\r\n H: newH > 1 ? newH - 1 : newH,\r\n S: hsvColor.S,\r\n V: hsvColor.V,\r\n };\r\n }\r\n\r\n export function darken(color: RgbColor, diff: number): RgbColor {\r\n let flooredNumber = Math.floor(diff);\r\n return {\r\n R: Math.max(0, color.R - flooredNumber),\r\n G: Math.max(0, color.G - flooredNumber),\r\n B: Math.max(0, color.B - flooredNumber),\r\n };\r\n }\r\n\r\n export function rgbString(color: RgbColor): string {\r\n if (color.A == null)\r\n return \"rgb(\" + color.R + \",\" + color.G + \",\" + color.B + \")\";\r\n return \"rgba(\" + color.R + \",\" + color.G + \",\" + color.B + \",\" + color.A + \")\";\r\n }\r\n\r\n export function hexString(color: RgbColor): string {\r\n return \"#\" + componentToHex(color.R) + componentToHex(color.G) + componentToHex(color.B);\r\n }\r\n\r\n function componentToHex(hexComponent: number): string {\r\n let clamped = Double.ensureInRange(hexComponent, 0, 255);\r\n let hex = clamped.toString(16).toUpperCase();\r\n return hex.length === 1 ? \"0\" + hex : hex;\r\n }\r\n\r\n export interface RgbColor {\r\n R: number;\r\n G: number;\r\n B: number;\r\n A?: number;\r\n }\r\n\r\n interface HsvColor {\r\n H: number;\r\n S: number;\r\n V: number;\r\n }\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"_references.ts\"/>\r\n\r\nmodule jsCommon {\r\n /**\r\n * CSS constants.\r\n */\r\n export module CssConstants {\r\n export interface ClassAndSelector {\r\n class: string;\r\n selector: string;\r\n }\r\n\r\n export function createClassAndSelector(className: string): ClassAndSelector {\r\n return {\r\n class: className,\r\n selector: '.' + className,\r\n };\r\n }\r\n\r\n export const styleAttribute = 'style';\r\n export const pixelUnits = 'px';\r\n\r\n export const heightProperty = 'height';\r\n export const widthProperty = 'width';\r\n export const topProperty = 'top';\r\n export const bottomProperty = 'bottom';\r\n export const leftProperty = 'left';\r\n export const rightProperty = 'right';\r\n export const marginTopProperty = 'margin-top';\r\n export const marginLeftProperty = 'margin-left';\r\n export const displayProperty = 'display';\r\n export const backgroundProperty = 'background';\r\n export const backgroundColorProperty = 'background-color';\r\n export const backgroundRepeatProperty = 'background-repeat';\r\n export const backgroundSizeProperty = 'background-size';\r\n export const backgroundImageProperty = 'background-image';\r\n export const textShadowProperty = 'text-shadow';\r\n export const textAlignProperty = 'text-align';\r\n export const borderTopWidthProperty = 'border-top-width';\r\n export const borderBottomWidthProperty = 'border-bottom-width';\r\n export const borderLeftWidthProperty = 'border-left-width';\r\n export const borderRightWidthProperty = 'border-right-width';\r\n export const fontSizeProperty = 'font-size';\r\n export const fontWeightProperty = 'font-weight';\r\n export const colorProperty = 'color';\r\n export const opacityProperty = 'opacity';\r\n export const paddingLeftProperty = 'padding-left';\r\n export const paddingRightProperty = 'padding-right';\r\n export const positionProperty = 'position';\r\n export const maxWidthProperty = 'max-width';\r\n export const minWidthProperty = 'min-width';\r\n export const overflowProperty = 'overflow';\r\n export const overflowXProperty = 'overflow-x';\r\n export const overflowYProperty = 'overflow-y';\r\n export const transformProperty = 'transform';\r\n export const webkitTransformProperty = '-webkit-transform';\r\n export const cursorProperty = 'cursor';\r\n export const visibilityProperty = 'visibility';\r\n\r\n export const absoluteValue = 'absolute';\r\n export const zeroPixelValue = '0px';\r\n export const autoValue = 'auto';\r\n export const hiddenValue = 'hidden';\r\n export const noneValue = 'none';\r\n export const blockValue = 'block';\r\n export const inlineBlockValue = 'inline-block';\r\n export const transparentValue = 'transparent';\r\n export const boldValue = 'bold';\r\n export const visibleValue = 'visible';\r\n export const tableRowValue = 'table-row';\r\n export const coverValue = 'cover';\r\n export const pointerValue = 'pointer';\r\n }\r\n\r\n export interface ExtendedCSSProperties extends CSSStyleDeclaration {\r\n scrollbarShadowColor: string;\r\n scrollbarHighlightColor: string;\r\n layoutGridChar: string;\r\n layoutGridType: string;\r\n textAutospace: string;\r\n textKashidaSpace: string;\r\n writingMode: string;\r\n scrollbarFaceColor: string;\r\n backgroundPositionY: string;\r\n lineBreak: string;\r\n imeMode: string;\r\n msBlockProgression: string;\r\n layoutGridLine: string;\r\n scrollbarBaseColor: string;\r\n layoutGrid: string;\r\n layoutFlow: string;\r\n textKashida: string;\r\n filter: string;\r\n zoom: string;\r\n scrollbarArrowColor: string;\r\n behavior: string;\r\n backgroundPositionX: string;\r\n accelerator: string;\r\n layoutGridMode: string;\r\n textJustifyTrim: string;\r\n scrollbar3dLightColor: string;\r\n msInterpolationMode: string;\r\n scrollbarTrackColor: string;\r\n scrollbarDarkShadowColor: string;\r\n styleFloat: string;\r\n getAttribute(attributeName: string, flags?: number): any;\r\n setAttribute(attributeName: string, AttributeValue: any, flags?: number): void;\r\n removeAttribute(attributeName: string, flags?: number): boolean;\r\n\r\n pixelWidth: number;\r\n posHeight: number;\r\n posLeft: number;\r\n pixelTop: number;\r\n pixelBottom: number;\r\n textDecorationNone: boolean;\r\n pixelLeft: number;\r\n posTop: number;\r\n posBottom: number;\r\n textDecorationOverline: boolean;\r\n posWidth: number;\r\n textDecorationLineThrough: boolean;\r\n pixelHeight: number;\r\n textDecorationBlink: boolean;\r\n posRight: number;\r\n pixelRight: number;\r\n textDecorationUnderline: boolean;\r\n\r\n webkitTransform: string;\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/**\r\n * Defines a Debug object. Calls to any functions in this object removed by the minifier.\r\n * The functions within this class are not minified away, so we use the preprocessor-style\r\n * comments to have the minifier remove those as well.\r\n */\r\n \r\n///#DEBUG\r\n\r\nmodule debug {\r\n\r\n export let assertFailFunction: {\r\n (message: string): void;\r\n };\r\n\r\n /** \r\n * Asserts that the condition is true, fails otherwise.\r\n */\r\n export function assert(condition: boolean, message: string): void {\r\n if (condition !== true) {\r\n assertFail(message || ('condition: ' + condition));\r\n }\r\n }\r\n\r\n /**\r\n * Asserts that the value is neither null nor undefined, fails otherwise. \r\n */\r\n export function assertValue<T>(value: T, message: string): void {\r\n if (value === null || value === undefined) {\r\n assertFail(message || ('condition: ' + value));\r\n }\r\n }\r\n\r\n /**\r\n * Asserts that the value is neither null nor undefined, and has a length property that returns greater than zero, fails otherwise. \r\n */\r\n export function assertNonEmpty<T>(value: T[], message: string): void {\r\n if (!(value != null && value.length > 0)) {\r\n assertFail(message || ('condition: ' + value));\r\n }\r\n }\r\n\r\n /**\r\n * Makes no assertion on the given value.\r\n * This is documentation/placeholder that a value is possibly null or undefined (unlike assertValue).\r\n */\r\n export function assertAnyValue<T>(value: T, message: string): void {\r\n }\r\n\r\n export function assertFail(message: string): void {\r\n (assertFailFunction || alert)('Debug Assert failed: ' + message);\r\n }\r\n}\r\n\r\n///#ENDDEBUG","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"_references.ts\"/>\r\n\r\nmodule jsCommon {\r\n export interface IError extends Error {\r\n stack?: string;\r\n argument?: string;\r\n }\r\n\r\n export module Errors {\r\n export function infoNavAppAlreadyPresent(): IError {\r\n return {\r\n name: 'infoNavAppAlreadyPresent',\r\n message: 'Cannot initialize embedded scenario when the InfoNav App is already present in this context',\r\n stack: getExceptionStackTrace()\r\n };\r\n }\r\n\r\n export function invalidOperation(message: string): IError {\r\n return {\r\n name: 'invalidOperation',\r\n message: message,\r\n stack: getExceptionStackTrace()\r\n };\r\n }\r\n\r\n export function argument(argumentName: string, message: string): IError {\r\n return {\r\n name: 'invalidArgumentError',\r\n argument: argumentName,\r\n message: message,\r\n stack: getExceptionStackTrace()\r\n };\r\n }\r\n\r\n export function argumentNull(argumentName: string): IError {\r\n return {\r\n name: 'argumentNull',\r\n argument: argumentName,\r\n message: 'Argument was null',\r\n stack: getExceptionStackTrace()\r\n };\r\n }\r\n\r\n export function argumentUndefined(argumentName: string): IError {\r\n return {\r\n name: 'argumentUndefined',\r\n argument: argumentName,\r\n message: 'Argument was undefined',\r\n stack: getExceptionStackTrace()\r\n };\r\n }\r\n\r\n export function argumentOutOfRange(argumentName: string): IError {\r\n return {\r\n name: 'argumentOutOfRange',\r\n argument: argumentName,\r\n message: 'Argument was out of range',\r\n stack: getExceptionStackTrace()\r\n };\r\n }\r\n\r\n export function pureVirtualMethodException(className: string, methodName: string): IError {\r\n return {\r\n name: 'pureVirtualMethodException',\r\n message: 'This method must be overriden by the derived class:' + className + '.' + methodName,\r\n stack: getExceptionStackTrace()\r\n };\r\n }\r\n\r\n export function notImplementedException(message: string): IError {\r\n return {\r\n name: 'notImplementedException',\r\n message: message,\r\n stack: getExceptionStackTrace()\r\n };\r\n }\r\n\r\n function getExceptionStackTrace(): string {\r\n return getStackTrace(/*leadingFramesToRemove*/2);\r\n }\r\n }\r\n\r\n /**\r\n * Captures the stack trace, if available.\r\n * It optionally takes the number of frames to remove from the stack trace.\r\n * By default, it removes the last frame to consider the calling type's\r\n * constructor and the temporary error used to capture the stack trace (below).\r\n * More levels can be requested as needed e..g. when an error is created\r\n * from a helper method. <Min requirement: IE10, Chrome, Firefox, Opera>.\r\n */\r\n export function getStackTrace(leadingFramesToRemove = 1): string {\r\n let stackTrace: string,\r\n stackSegments: string[];\r\n\r\n try {\r\n // needs to throw for stack trace to work in IE\r\n throw new Error();\r\n } catch (error) {\r\n stackTrace = error.stack;\r\n if (stackTrace != null) {\r\n stackSegments = stackTrace.split('\\n');\r\n stackSegments.splice(1, leadingFramesToRemove);\r\n // Finally\r\n stackTrace = stackSegments.join('\\n');\r\n }\r\n }\r\n\r\n return stackTrace;\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"_references.ts\"/>\r\n\r\n$.fn.multiline = function (text) {\r\n this.text(text);\r\n this.html(this.html().replace(/\\n/g, '<br/>'));\r\n return this;\r\n};\r\n\r\n$.fn.togglePanelControl = function () {\r\n return this.each(function () {\r\n $(this).addClass(\"ui-accordion ui-accordion-icons ui-widget ui-helper-reset\")\r\n .find(\".accordionHeader\")\r\n .addClass(\"ui-accordion-header ui-helper-reset ui-state-default ui-corner-top ui-corner-bottom\")\r\n .hover(function() {\r\n $(this).toggleClass(\"ui-state-hover\");\r\n })\r\n .prepend('<span class=\"ui-icon ui-icon-triangle-1-e\"></span>')\r\n .click(function() {\r\n $(this)\r\n .toggleClass(\"ui-accordion-header-active ui-state-active ui-state-default ui-corner-bottom\")\r\n .find(\"> .ui-icon\").toggleClass(\"ui-icon-triangle-1-e ui-icon-triangle-1-s\").end()\r\n .next().slideToggle();\r\n return false;\r\n })\r\n .next()\r\n .addClass(\"ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom\")\r\n .hide();\r\n });\r\n};\r\n\r\nmodule jsCommon {\r\n /** \r\n * Represents a promise that may be rejected by its consumer.\r\n */ \r\n export interface IRejectablePromise extends JQueryPromise<void> {\r\n reject(...args: any[]): void;\r\n }\r\n\r\n export module JQueryConstants {\r\n export const VisibleSelector: string = ':visible';\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"_references.ts\"/>\r\n\r\nmodule jsCommon {\r\n\r\n /** \r\n * Represents a lazily instantiated value.\r\n */\r\n export class Lazy<T> {\r\n private value: T;\r\n private factoryMethod: () => T;\r\n\r\n constructor(factoryMethod: () => T) {\r\n Utility.throwIfNullOrUndefined(factoryMethod, this, 'constructor', 'factoryMethod');\r\n\r\n this.factoryMethod = factoryMethod;\r\n }\r\n\r\n public getValue(): T {\r\n if (this.factoryMethod !== null) {\r\n this.value = this.factoryMethod();\r\n\r\n // Optimization: Release the factoryMethod, as it could be holding a large object graph.\r\n this.factoryMethod = null;\r\n }\r\n\r\n return this.value;\r\n }\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved.\r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n *\r\n * The above copyright notice and this permission notice shall be included in\r\n * all copies or substantial portions of the Software.\r\n *\r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"_references.ts\"/>\r\n\r\nmodule powerbi {\r\n export module Prototype {\r\n /**\r\n * Returns a new object with the provided obj as its prototype.\r\n */\r\n export function inherit<T>(obj: T, extension?: (inherited: T) => void): T {\r\n debug.assertValue(obj, 'obj');\r\n\r\n function wrapCtor(): void { };\r\n wrapCtor.prototype = obj;\r\n\r\n let inherited = new wrapCtor();\r\n\r\n if (extension)\r\n extension(inherited);\r\n\r\n return inherited;\r\n }\r\n\r\n /**\r\n * Returns a new object with the provided obj as its prototype\r\n * if, and only if, the prototype has not been previously set\r\n */\r\n export function inheritSingle<T>(obj: T): T {\r\n debug.assertValue(obj, 'obj');\r\n\r\n let proto = Object.getPrototypeOf(obj);\r\n if (proto === Object.prototype || proto === Array.prototype)\r\n obj = inherit(obj);\r\n\r\n return obj;\r\n }\r\n\r\n /**\r\n * Uses the provided callback function to selectively replace contents in the provided array.\r\n * @return A new array with those values overriden\r\n * or undefined if no overrides are necessary.\r\n */\r\n export function overrideArray<T, TArray>(prototype: TArray, override: (T) => T): TArray {\r\n if (!prototype)\r\n return;\r\n\r\n let overwritten: TArray;\r\n\r\n for (let i = 0, len = (<T[]><any>prototype).length; i < len; i++) {\r\n let value = override(prototype[i]);\r\n if (value) {\r\n if (!overwritten)\r\n overwritten = inherit(prototype);\r\n\r\n overwritten[i] = value;\r\n }\r\n }\r\n\r\n return overwritten;\r\n }\r\n }\r\n}\r\n","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"_references.ts\"/>\r\n\r\ninterface ScriptErrorInfo {\r\n message: string;\r\n sourceUrl: string;\r\n lineNumber: number;\r\n columnNumber: number;\r\n stack: string;\r\n}\r\n\r\ninterface ErrorInfoKeyValuePair {\r\n errorInfoKey: string;\r\n errorInfoValue: string;\r\n}\r\n\r\ninterface ErrorDetails {\r\n message: string;\r\n additionalErrorInfo: ErrorInfoKeyValuePair[];\r\n helpLink?: string;\r\n}\r\n","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"_references.ts\"/>\r\n\r\nmodule jsCommon {\r\n\r\n export module Formatting {\r\n\r\n interface IRegexInt {\r\n // Regex for replace.\r\n r: RegExp;\r\n // The string to replace.\r\n s: string;\r\n }\r\n\r\n let regexCache: IRegexInt[];\r\n\r\n /** \r\n * Translate .NET format into something supported by jQuery.Globalize.\r\n */\r\n export function findDateFormat(value: Date, format: string, cultureName: string)\r\n {\r\n switch (format) {\r\n case \"m\":\r\n // Month + day\r\n format = \"M\";\r\n break;\r\n case \"O\":\r\n case \"o\":\r\n // Roundtrip\r\n format = \"yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fff'0000'\";\r\n break;\r\n case \"R\":\r\n case \"r\":\r\n // RFC1123 pattern - - time must be converted to UTC before formatting \r\n value = new Date(value.getUTCFullYear(), value.getUTCMonth(), value.getUTCDate(), value.getUTCHours(), value.getUTCMinutes(), value.getUTCSeconds(), value.getUTCMilliseconds());\r\n format = \"ddd, dd MMM yyyy HH':'mm':'ss 'GMT'\";\r\n break;\r\n case \"s\":\r\n // Sortable - should use invariant culture\r\n format = \"S\";\r\n break;\r\n case \"u\":\r\n // Universal sortable - should convert to UTC before applying the \"yyyy'-'MM'-'dd HH':'mm':'ss'Z' format.\r\n value = new Date(value.getUTCFullYear(), value.getUTCMonth(), value.getUTCDate(), value.getUTCHours(), value.getUTCMinutes(), value.getUTCSeconds(), value.getUTCMilliseconds());\r\n format = \"yyyy'-'MM'-'dd HH':'mm':'ss'Z'\";\r\n break;\r\n case \"U\":\r\n // Universal full - the pattern is same as F but the time must be converted to UTC before formatting\r\n value = new Date(value.getUTCFullYear(), value.getUTCMonth(), value.getUTCDate(), value.getUTCHours(), value.getUTCMinutes(), value.getUTCSeconds(), value.getUTCMilliseconds());\r\n format = \"F\";\r\n break;\r\n case \"y\":\r\n case \"Y\":\r\n // Year and month\r\n switch (cultureName) {\r\n case \"default\":\r\n case \"en\":\r\n case \"en-US\":\r\n format = \"MMMM, yyyy\"; // Fix the default year-month pattern for english\r\n break;\r\n default:\r\n format = \"Y\"; // For other cultures - use the localized pattern\r\n }\r\n break;\r\n }\r\n return { value: value, format: format };\r\n }\r\n \r\n /** \r\n * Translates unsupported .NET custom format expressions to the custom expressions supported by JQuery.Globalize.\r\n */\r\n export function fixDateTimeFormat(format: string): string {\r\n // Fix for the \"K\" format (timezone): \r\n //The js dates don't have a kind property so we'll support only local kind which is equavalent to zzz format.\r\n format = format.replace(/%K/g, \"zzz\"); \r\n format = format.replace(/K/g, \"zzz\");\r\n format = format.replace(/fffffff/g, \"fff0000\");\r\n format = format.replace(/ffffff/g, \"fff000\");\r\n format = format.replace(/fffff/g, \"fff00\");\r\n format = format.replace(/ffff/g, \"fff0\");\r\n // Fix for the 5 digit year: \"yyyyy\" format. \r\n //The Globalize doesn't support dates greater than 9999 so we replace the \"yyyyy\" with \"0yyyy\".\r\n format = format.replace(/yyyyy/g, \"0yyyy\"); \r\n // Fix for the 3 digit year: \"yyy\" format. \r\n //The Globalize doesn't support this formatting so we need to replace it with the 4 digit year \"yyyy\" format.\r\n format = format.replace(/(^y|^)yyy(^y|$)/g, \"yyyy\"); \r\n\r\n if (!regexCache) {\r\n // Creating Regexes for cases \"Using single format specifier\" \r\n //- http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx#UsingSingleSpecifiers\r\n // This is not supported from The Globalize.\r\n // The case covers all single \"%\" lead specifier (like \"%d\" but not %dd) \r\n // The cases as single \"%d\" are filtered in if the bellow.\r\n // (?!S) where S is the specifier make sure that we only one symbol for specifier.\r\n regexCache = [\"d\", \"f\", \"F\", \"g\", \"h\", \"H\", \"K\", \"m\", \"M\", \"s\", \"t\", \"y\", \"z\", \":\", \"/\"].map((s) => {\r\n return { r: new RegExp(\"\\%\" + s + \"(?!\" + s + \")\", \"g\"), s: s };\r\n });\r\n }\r\n\r\n if (format.indexOf(\"%\") !== -1 && format.length > 2) {\r\n for (let i = 0; i < regexCache.length; i++) {\r\n format = format.replace(regexCache[i].r, regexCache[i].s);\r\n }\r\n }\r\n return format;\r\n }\r\n\r\n }\r\n\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule jsCommon {\r\n\r\n let doc: HTMLDocument = document,\r\n headElement: HTMLElement = doc.head,\r\n firstScriptInHeadElement: HTMLElement = headElement.getElementsByTagName('script')[0],\r\n linkElement: HTMLElement = doc.createElement('link'),\r\n scriptElement: HTMLElement = doc.createElement('script'),\r\n styleSheetLoaded: string[] = [],\r\n javaScriptFilesLoaded: string[] = [],\r\n javaScriptFilesLoading: any[] = [];\r\n\r\n linkElement.setAttribute('rel', 'stylesheet');\r\n\r\n /**\r\n * Public API.\r\n */\r\n\texport interface IJavaScriptDependency {\r\n\t\tjavascriptFile: string;\r\n\r\n // Callback that indicates when the script is loaded, after writing a <script> tag\r\n\t\tonLoadCallback?: () => JQueryPromise<void>;\r\n\t}\r\n\r\n export interface IDependency {\r\n javaScriptFiles?: string[];\r\n cssFiles?: string[];\r\n\t\tjavaScriptFilesWithCallback?: IJavaScriptDependency[];\r\n }\r\n\r\n export function requires(dependency: IDependency, to: () => void = $.noop): void {\r\n loadStyleSheets(dependency.cssFiles || []);\r\n\r\n\t\tlet scriptsToRun = dependency.javaScriptFilesWithCallback || [];\r\n\r\n\t\tif (dependency.javaScriptFiles) {\r\n\t\t\tfor(let i=0, len=dependency.javaScriptFiles.length; i<len; ++i) {\r\n\t\t\t\tscriptsToRun.push({javascriptFile:dependency.javaScriptFiles[i]});\r\n\t\t\t}\r\n\t\t}\r\n loadJavaScriptFiles(scriptsToRun, to);\r\n }\r\n\r\n /**\r\n * Private Helpers.\r\n */\r\n function loadStyleSheets(hrefList: string[]): void {\r\n hrefList.forEach(href => {\r\n if (styleSheetLoaded.indexOf(href) === -1) {\r\n styleSheetLoaded.push(href);\r\n loadStyleSheet(href);\r\n }\r\n });\r\n }\r\n\r\n function loadJavaScriptFiles(scripts: IJavaScriptDependency[], callback: () => void): void {\r\n let loadingCount = scripts.length,\r\n parsingCount = loadingCount,\r\n sourceCodeList: IJavaScriptDependency[] = [];\r\n\r\n function parseIfLoadingComplete(): void {\r\n if (!--loadingCount) {\r\n parseJavaScriptSourceCodes(scripts, sourceCodeList);\r\n }\r\n }\r\n\r\n function makeCallbackIfParsingComplete(): void {\r\n if (!--parsingCount) {\r\n callback();\r\n }\r\n }\r\n\r\n scripts.forEach((script: IJavaScriptDependency, index: number) => {\r\n let file = script.javascriptFile;\r\n if (javaScriptFilesLoaded.indexOf(file) === -1) { // not loaded\r\n\r\n if (file in javaScriptFilesLoading) { // loading\r\n javaScriptFilesLoading[file].push(() => {\r\n parseIfLoadingComplete();\r\n makeCallbackIfParsingComplete();\r\n });\r\n\r\n } else { // not loading\r\n javaScriptFilesLoading[file] = [() => {\r\n makeCallbackIfParsingComplete();\r\n }];\r\n\r\n if (isExternalUrl(file)) { // external JS file\r\n sourceCodeList[index] = script;\r\n parseIfLoadingComplete();\r\n\r\n } else { // internal JS file\r\n loadJavaScriptSourceCode(file, (sourceCode: string) => {\r\n sourceCodeList[index] = {javascriptFile: sourceCode};\r\n parseIfLoadingComplete();\r\n });\r\n }\r\n }\r\n\r\n } else { // loaded\r\n parseIfLoadingComplete();\r\n makeCallbackIfParsingComplete();\r\n }\r\n });\r\n }\r\n\r\n function loadStyleSheet(href: string): void {\r\n let link = <any>linkElement.cloneNode();\r\n link.href = href;\r\n if (firstScriptInHeadElement) {\r\n headElement.insertBefore(link, firstScriptInHeadElement);\r\n } else {\r\n headElement.appendChild(link);\r\n }\r\n }\r\n\r\n function loadJavaScriptSourceCode(src: string, onload: (code: string) => void): void {\r\n webGet(src, function (): void {\r\n onload(this.responseText);\r\n });\r\n }\r\n\r\n function parseJavaScript(script: IJavaScriptDependency, onComplete: () => void = $.noop): void {\r\n if (!script) {\r\n onComplete();\r\n return;\r\n }\r\n\r\n\t\tlet sourceCodeOrFileName = script.javascriptFile;\r\n\r\n\t\tlet targetCallback = onComplete;\r\n\t\tif (script.onLoadCallback) {\r\n\t\t\tlet promiseAsCallback = () => {\r\n\t\t\t\tscript.onLoadCallback().then(onComplete);\r\n\t\t\t};\r\n\t\t\ttargetCallback = promiseAsCallback;\r\n\t\t}\r\n\r\n isExternalUrl(sourceCodeOrFileName)\r\n ? loadExternalJavaScriptFile(sourceCodeOrFileName, targetCallback)\r\n : parseInternalJavaScriptCode(sourceCodeOrFileName, targetCallback);\r\n }\r\n\r\n function parseInternalJavaScriptCode(sourceCode: string, onComplete: () => void = $.noop): void {\r\n let script: HTMLElement;\r\n if (sourceCode) {\r\n script = <any>scriptElement.cloneNode();\r\n script.setAttribute('type', 'text/javascript');\r\n script.innerHTML = sourceCode;\r\n headElement.appendChild(script);\r\n }\r\n setTimeout(onComplete, 0);\r\n }\r\n\r\n function loadExternalJavaScriptFile(src, onload: () => void): void {\r\n let script: HTMLElement;\r\n if (src) {\r\n script = <any>scriptElement.cloneNode();\r\n script.setAttribute('src', src);\r\n script.setAttribute('charset', 'utf-8');\r\n script.onload = onload;\r\n headElement.appendChild(script);\r\n }\r\n }\r\n\r\n function parseJavaScriptSourceCodes(scripts: IJavaScriptDependency[], sourceCodeList: IJavaScriptDependency[]): void {\r\n asyncLoop(sourceCodeList, parseJavaScript, /*on all files parsed*/() => {\r\n scripts.forEach((script: IJavaScriptDependency) => {\r\n let file = script.javascriptFile;\r\n let listeners = javaScriptFilesLoading[file];\r\n if (listeners) {\r\n listeners.forEach((listener) => {\r\n listener();\r\n });\r\n }\r\n\r\n delete javaScriptFilesLoading[file];\r\n if (javaScriptFilesLoaded.indexOf(file) === -1) {\r\n javaScriptFilesLoaded.push(file);\r\n }\r\n });\r\n });\r\n }\r\n\r\n function webGet(src: string, onload: () => void, onerror?: (error: any) => void): void {\r\n let xhr = new XMLHttpRequest();\r\n\r\n try {\r\n xhr.open('GET', src, true);\r\n xhr.onload = onload;\r\n xhr.onerror = onerror;\r\n xhr.send(null);\r\n }\r\n catch (e) {\r\n // handle it\r\n }\r\n }\r\n\r\n function isExternalUrl(url: string): boolean {\r\n let origin = location.protocol + '//' + location.host + '/';\r\n return /^http[s]?:\\/\\/.+/i.test(url) && url.indexOf(origin) !== 0;\r\n }\r\n\r\n function _(...args: any[]): any { }\r\n\r\n function asyncSteps(...args: Function[]): void {\r\n if (args.length === 0) {\r\n return;\r\n }\r\n\r\n let steps = [],\r\n i = args.length;\r\n\r\n while (i--) {\r\n (function (j) {\r\n steps[j] = function () {\r\n args[j](steps[j + 1] || _);\r\n };\r\n })(i);\r\n }\r\n steps[0]();\r\n }\r\n\r\n function asyncLoop(enumerable: any[], func: (item, next) => void, callback: () => void): void {\r\n let steps = [],\r\n i = 0,\r\n len = enumerable.length;\r\n\r\n for (; i < len - 1; i++) {\r\n (function (i) {\r\n steps[i] = (next) => {\r\n func(enumerable[i], next);\r\n };\r\n } (i));\r\n }\r\n\r\n steps[len - 1] = (next) => {\r\n func(enumerable[len - 1], callback);\r\n };\r\n\r\n asyncSteps.apply(null, steps);\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi {\r\n export function createJQueryPromiseFactory(): IPromiseFactory {\r\n return new JQueryPromiseFactory();\r\n }\r\n\r\n /**\r\n * jQuery-based implementation of IPromiseFactory.\r\n * This is useful for cases when Angular is not present, or when immediate promise resolving (not tied to Angular digest cycle) is desired.\r\n */\r\n class JQueryPromiseFactory implements IPromiseFactory {\r\n public defer<TSuccess, TError>(): IDeferred2<TSuccess, TError> {\r\n return new JQueryDeferredWrapper($.Deferred());\r\n }\r\n\r\n public reject<TError>(reason?: TError): IPromise2<any, TError> {\r\n let deferred = this.defer();\r\n deferred.reject(reason);\r\n return deferred.promise;\r\n }\r\n\r\n public resolve<TSuccess>(value: TSuccess): IPromise2<TSuccess, any> {\r\n let deferred = this.defer();\r\n deferred.resolve(value);\r\n return deferred.promise;\r\n }\r\n\r\n public all(promises: IPromise2<any, any>[]): IPromise<any[]>;\r\n\r\n public all(promises: any): IPromise<any[]> {\r\n let unwrappedPromises = jQuery.map(promises, (value) => {\r\n return value && value.promise ? value.promise : value;\r\n });\r\n\r\n return new JQueryPromiseWrapper($.when.apply($, unwrappedPromises));\r\n }\r\n\r\n public when<T>(value: T | IPromise<T>): IPromise<T>;\r\n\r\n public when<T>(value: any): IPromise<T> {\r\n let unwrappedPromise = value && value.promise ? value.promise : value;\r\n return new JQueryPromiseWrapper($.when(unwrappedPromise));\r\n }\r\n }\r\n\r\n /** \r\n * Implements IDeferred via a wrapped a jQuery Deferred.\r\n */\r\n class JQueryDeferredWrapper<TSuccess, TError> implements IDeferred2<TSuccess, TError> {\r\n public promise: IPromise2<TSuccess, TError>;\r\n private deferred: JQueryDeferred<any>;\r\n\r\n constructor(deferred: JQueryDeferred<any>) {\r\n debug.assertValue(deferred, 'deferred');\r\n\r\n this.deferred = deferred;\r\n this.promise = new JQueryPromiseWrapper(deferred.promise());\r\n }\r\n\r\n public resolve(value: TSuccess | IPromise<any>): void {\r\n this.deferred.resolve(value);\r\n }\r\n\r\n public reject(reason?: TError): void {\r\n this.deferred.reject(reason);\r\n }\r\n }\r\n\r\n /** \r\n * Implements IDeferred via a wrapped a jQuery Promise.\r\n */\r\n class JQueryPromiseWrapper<TSuccess, TError> implements IPromise2<TSuccess, TError> {\r\n private promise: JQueryPromise<any>;\r\n\r\n constructor(promise: JQueryPromise<any>) {\r\n debug.assertValue(promise, 'promise');\r\n\r\n this.promise = promise;\r\n }\r\n\r\n public then(a: (arg: any) => any, b: (arg: any) => any): IPromise2<any, any> {\r\n return new JQueryPromiseWrapper(\r\n this.promise.then(\r\n JQueryPromiseWrapper.wrapCallback(a),\r\n JQueryPromiseWrapper.wrapCallback(b)));\r\n }\r\n\r\n public catch(callback): IPromise2<any, any> {\r\n return this.then(null, callback);\r\n }\r\n\r\n public finally(callback): IPromise2<any, any> {\r\n this.promise.always(\r\n JQueryPromiseWrapper.wrapCallback(callback));\r\n return this;\r\n }\r\n\r\n /** \r\n * Wraps a callback, which may return a IPromise. \r\n */\r\n private static wrapCallback(callback: (arg: any) => any): (arg: any) => any {\r\n if (callback)\r\n return arg => {\r\n let value = callback(arg);\r\n\r\n // If the callback returns a Promise, unwrap that to allow jQuery to chain.\r\n if (value instanceof JQueryPromiseWrapper)\r\n return (<JQueryPromiseWrapper<any, any>>value).promise;\r\n\r\n return value;\r\n };\r\n\r\n return callback;\r\n }\r\n }\r\n}\r\n ","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi {\r\n\r\n export interface IStorageService {\r\n getData(key: string): any;\r\n setData(key: string, data: any): void;\r\n }\r\n\r\n class LocalStorageService implements IStorageService {\r\n public getData(key: string): any {\r\n try {\r\n if (localStorage) {\r\n let value = localStorage[key];\r\n if (value) {\r\n return JSON.parse(value);\r\n }\r\n }\r\n }\r\n catch (exception) {}\r\n\r\n return null;\r\n }\r\n\r\n public setData(key: string, data: any) {\r\n try {\r\n if (localStorage) {\r\n localStorage[key] = JSON.stringify(data);\r\n }\r\n }\r\n catch (e) {}\r\n }\r\n }\r\n\r\n export class EphemeralStorageService implements IStorageService {\r\n private cache: { [key: string]: any } = {};\r\n private clearCacheTimerId: number;\r\n private clearCacheInterval: number;\r\n public static defaultClearCacheInterval: number = (1000 * 60 * 60 * 24); // 1 day\r\n\r\n constructor(clearCacheInterval?: number) {\r\n this.clearCacheInterval = (clearCacheInterval != null)\r\n ? clearCacheInterval\r\n : EphemeralStorageService.defaultClearCacheInterval;\r\n\r\n this.clearCache();\r\n }\r\n\r\n public getData(key: string): any {\r\n return this.cache[key];\r\n }\r\n\r\n public setData(key: string, data: any) {\r\n this.cache[key] = data;\r\n\r\n if (this.clearCacheTimerId == null) {\r\n this.clearCacheTimerId = setTimeout(() => this.clearCache(), this.clearCacheInterval);\r\n }\r\n }\r\n\r\n private clearCache(): void {\r\n this.cache = {};\r\n this.clearCacheTimerId = undefined;\r\n }\r\n }\r\n\r\n export var localStorageService: IStorageService = new LocalStorageService();\r\n export const ephemeralStorageService: IStorageService = new EphemeralStorageService();\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\nmodule jsCommon {\r\n export module WordBreaker {\r\n import TextProperties = powerbi.TextProperties;\r\n import ITextAsSVGMeasurer = powerbi.ITextAsSVGMeasurer;\r\n import ITextTruncator = powerbi.ITextTruncator;\r\n \r\n export interface WordBreakerResult {\r\n start: number;\r\n end: number;\r\n }\r\n\r\n const SPACE = ' ';\r\n const BREAKERS_REGEX = /[\\s\\n]+/g;\r\n\r\n function search(index: number, content: string, backward: boolean): number {\r\n if (backward) {\r\n for (let i = index - 1; i > -1; i--) {\r\n if (hasBreakers(content[i]))\r\n return i + 1;\r\n }\r\n } else {\r\n for (let i = index, ilen = content.length; i < ilen; i++) {\r\n if (hasBreakers(content[i]))\r\n return i;\r\n }\r\n }\r\n\r\n return backward ? 0 : content.length;\r\n }\r\n\r\n /**\r\n * Find the word nearest the cursor specified within content\r\n * @param index - point within content to search forward/backward from\r\n * @param content - string to search\r\n */\r\n export function find(index: number, content: string): WordBreakerResult {\r\n debug.assert(index >= 0 && index <= content.length, 'index within content string bounds');\r\n\r\n let result = { start: 0, end: 0 };\r\n if (content.length === 0)\r\n return result;\r\n\r\n result.start = search(index, content, true);\r\n result.end = search(index, content, false);\r\n return result;\r\n }\r\n\r\n /**\r\n * Test for presence of breakers within content\r\n * @param content - string to test\r\n */\r\n export function hasBreakers(content: string): boolean {\r\n BREAKERS_REGEX.lastIndex = 0;\r\n return BREAKERS_REGEX.test(content);\r\n }\r\n\r\n /**\r\n * Count the number of pieces when broken by BREAKERS_REGEX\r\n * ~2.7x faster than WordBreaker.split(content).length\r\n * @param content - string to break and count\r\n */\r\n export function wordCount(content: string): number {\r\n let count = 1;\r\n BREAKERS_REGEX.lastIndex = 0;\r\n BREAKERS_REGEX.exec(content);\r\n while (BREAKERS_REGEX.lastIndex !== 0) {\r\n count++;\r\n BREAKERS_REGEX.exec(content);\r\n }\r\n\r\n return count;\r\n }\r\n\r\n export function getMaxWordWidth(content: string, textWidthMeasurer: ITextAsSVGMeasurer, properties: TextProperties): number {\r\n let words = split(content);\r\n let maxWidth = 0;\r\n for (let w of words) {\r\n properties.text = w;\r\n maxWidth = Math.max(maxWidth, textWidthMeasurer(properties));\r\n }\r\n return maxWidth;\r\n }\r\n\r\n function split(content: string): string[] {\r\n return content.split(BREAKERS_REGEX);\r\n }\r\n\r\n function getWidth(content: string, properties: TextProperties, textWidthMeasurer: ITextAsSVGMeasurer): number {\r\n properties.text = content;\r\n return textWidthMeasurer(properties);\r\n }\r\n\r\n function truncate(content: string, properties: TextProperties, truncator: ITextTruncator, maxWidth: number): string {\r\n properties.text = content;\r\n return truncator(properties, maxWidth);\r\n }\r\n\r\n /**\r\n * Split content by breakers (words) and greedy fit as many words\r\n * into each index in the result based on max width and number of lines\r\n * e.g. Each index in result corresponds to a line of content\r\n * when used by AxisHelper.LabelLayoutStrategy.wordBreak\r\n * @param content - string to split\r\n * @param properties - text properties to be used by @param:textWidthMeasurer\r\n * @param textWidthMeasurer - function to calculate width of given text content\r\n * @param maxWidth - maximum allowed width of text content in each result\r\n * @param maxNumLines - maximum number of results we will allow, valid values must be greater than 0\r\n * @param truncator - (optional) if specified, used as a function to truncate content to a given width\r\n */\r\n export function splitByWidth(\r\n content: string,\r\n properties: TextProperties,\r\n textWidthMeasurer: ITextAsSVGMeasurer,\r\n maxWidth: number,\r\n maxNumLines: number,\r\n truncator?: ITextTruncator): string[] {\r\n // Default truncator returns string as-is\r\n truncator = truncator ? truncator : (properties: TextProperties, maxWidth: number) => properties.text;\r\n\r\n let result: string[] = [];\r\n let words = split(content);\r\n\r\n let usedWidth = 0;\r\n let wordsInLine: string[] = [];\r\n\r\n for (let word of words) {\r\n // Last line? Just add whatever is left\r\n if ((maxNumLines > 0) && (result.length >= maxNumLines - 1)) {\r\n wordsInLine.push(word);\r\n continue;\r\n }\r\n\r\n // Determine width if we add this word\r\n // Account for SPACE we will add when joining...\r\n let wordWidth = wordsInLine.length === 0\r\n ? getWidth(word, properties, textWidthMeasurer)\r\n : getWidth(SPACE + word, properties, textWidthMeasurer);\r\n\r\n // If width would exceed max width,\r\n // then push used words and start new split result\r\n if (usedWidth + wordWidth > maxWidth) {\r\n // Word alone exceeds max width, just add it.\r\n if (wordsInLine.length === 0) {\r\n result.push(truncate(word, properties, truncator, maxWidth));\r\n\r\n usedWidth = 0;\r\n wordsInLine = [];\r\n continue;\r\n }\r\n \r\n result.push(truncate(wordsInLine.join(SPACE), properties, truncator, maxWidth));\r\n\r\n usedWidth = 0;\r\n wordsInLine = [];\r\n }\r\n\r\n // ...otherwise, add word and continue\r\n wordsInLine.push(word);\r\n usedWidth += wordWidth;\r\n }\r\n\r\n // Push remaining words onto result\r\n result.push(truncate(wordsInLine.join(SPACE), properties, truncator, maxWidth));\r\n\r\n return result;\r\n }\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi {\r\n export interface ITextMeasurer {\r\n (textElement: SVGTextElement): number;\r\n }\r\n\r\n export interface ITextAsSVGMeasurer {\r\n (textProperties: TextProperties): number;\r\n }\r\n\r\n export interface ITextTruncator {\r\n (properties: TextProperties, maxWidth: number): string;\r\n }\r\n\r\n export interface TextProperties {\r\n text?: string;\r\n fontFamily: string;\r\n fontSize: string;\r\n fontWeight?: string;\r\n fontStyle?: string;\r\n whiteSpace?: string;\r\n }\r\n\r\n interface CanvasContext {\r\n font: string;\r\n measureText(text: string): { width: number };\r\n }\r\n\r\n interface CanvasElement extends HTMLElement {\r\n getContext(name: string);\r\n }\r\n\r\n export module TextMeasurementService {\r\n const ellipsis = '…';\r\n const OverflowingText = jsCommon.CssConstants.createClassAndSelector('overflowingText');\r\n\r\n let spanElement: JQuery;\r\n let svgTextElement: D3.Selection;\r\n let canvasCtx: CanvasContext;\r\n\r\n /**\r\n * Idempotent function for adding the elements to the DOM. \r\n */\r\n function ensureDOM(): void {\r\n if (spanElement)\r\n return;\r\n\r\n spanElement = $('<span/>');\r\n $('body').append(spanElement);\r\n //The style hides the svg element from the canvas, preventing canvas from scrolling down to show svg black square.\r\n svgTextElement = d3.select($('body').get(0))\r\n .append('svg')\r\n .style({\r\n 'height': '0px',\r\n 'width': '0px',\r\n 'position': 'absolute'\r\n })\r\n .append('text');\r\n canvasCtx = (<CanvasElement>$('<canvas/>').get(0)).getContext(\"2d\");\r\n }\r\n \r\n /**\r\n * Removes spanElement from DOM.\r\n */\r\n export function removeSpanElement() {\r\n if (spanElement && spanElement.remove) {\r\n spanElement.remove();\r\n }\r\n\r\n spanElement = null;\r\n }\r\n\r\n /**\r\n * This method measures the width of the text with the given SVG text properties.\r\n * @param textProperties The text properties to use for text measurement.\r\n */\r\n export function measureSvgTextWidth(textProperties: TextProperties): number {\r\n debug.assertValue(textProperties, 'textProperties');\r\n\r\n ensureDOM();\r\n\r\n canvasCtx.font = textProperties.fontSize + ' ' + textProperties.fontFamily;\r\n return canvasCtx.measureText(textProperties.text).width;\r\n }\r\n\r\n /**\r\n * This method return the rect with the given SVG text properties.\r\n * @param textProperties The text properties to use for text measurement.\r\n */\r\n export function measureSvgTextRect(textProperties: TextProperties): SVGRect {\r\n debug.assertValue(textProperties, 'textProperties');\r\n\r\n ensureDOM();\r\n\r\n svgTextElement.style(null);\r\n svgTextElement\r\n .text(textProperties.text)\r\n .attr({\r\n 'visibility': 'hidden',\r\n 'font-family': textProperties.fontFamily,\r\n 'font-size': textProperties.fontSize,\r\n 'font-weight': textProperties.fontWeight,\r\n 'font-style': textProperties.fontStyle,\r\n 'white-space': textProperties.whiteSpace || 'nowrap'\r\n });\r\n\r\n // We're expecting the browser to give a synchronous measurement here\r\n // We're using SVGTextElement because it works across all browsers \r\n return svgTextElement.node<SVGTextElement>().getBBox();\r\n }\r\n\r\n /**\r\n * This method measures the height of the text with the given SVG text properties.\r\n * @param textProperties The text properties to use for text measurement.\r\n */\r\n export function measureSvgTextHeight(textProperties: TextProperties): number {\r\n return measureSvgTextRect(textProperties).height;\r\n }\r\n\r\n /**\r\n * This method returns the text Rect with the given SVG text properties.\r\n * Does NOT return text width; obliterates text value\r\n * @param {TextProperties} textProperties - The text properties to use for text measurement\r\n */\r\n function estimateSvgTextRect(textProperties: TextProperties): SVGRect {\r\n debug.assertValue(textProperties, 'textProperties');\r\n\r\n let propertiesKey = textProperties.fontFamily + textProperties.fontSize;\r\n let rect: SVGRect = ephemeralStorageService.getData(propertiesKey);\r\n\r\n if (rect == null) {\r\n // To estimate we check the height of a particular character, once it is cached, subsequent\r\n // calls should always get the height from the cache (regardless of the text).\r\n let estimatedTextProperties: TextProperties = {\r\n fontFamily: textProperties.fontFamily,\r\n fontSize: textProperties.fontSize,\r\n text: \"M\",\r\n };\r\n\r\n rect = measureSvgTextRect(estimatedTextProperties);\r\n ephemeralStorageService.setData(propertiesKey, rect);\r\n }\r\n\r\n return rect;\r\n }\r\n\r\n /**\r\n * This method returns the text Rect with the given SVG text properties.\r\n * @param {TextProperties} textProperties - The text properties to use for text measurement\r\n */\r\n export function estimateSvgTextBaselineDelta(textProperties: TextProperties): number {\r\n let rect = estimateSvgTextRect(textProperties);\r\n return rect.y + rect.height;\r\n }\r\n\r\n /**\r\n * This method estimates the height of the text with the given SVG text properties.\r\n * @param {TextProperties} textProperties - The text properties to use for text measurement\r\n */\r\n export function estimateSvgTextHeight(textProperties: TextProperties, tightFightForNumeric: boolean = false): number {\r\n let height = estimateSvgTextRect(textProperties).height;\r\n\r\n //TODO: replace it with new baseline calculation\r\n if (tightFightForNumeric)\r\n height *= 0.7;\r\n\r\n return height;\r\n }\r\n\r\n /**\r\n * This method measures the width of the svgElement.\r\n * @param svgElement The SVGTextElement to be measured.\r\n */\r\n export function measureSvgTextElementWidth(svgElement: SVGTextElement): number {\r\n debug.assertValue(svgElement, 'svgElement');\r\n return measureSvgTextWidth(getSvgMeasurementProperties(svgElement));\r\n }\r\n\r\n /**\r\n * This method fetches the text measurement properties of the given DOM element.\r\n * @param element The selector for the DOM Element.\r\n */\r\n export function getMeasurementProperties(element: JQuery): TextProperties {\r\n debug.assertValue(element, 'element');\r\n\r\n return {\r\n text: element.val() || element.text(),\r\n fontFamily: element.css('font-family'),\r\n fontSize: element.css('font-size'),\r\n fontWeight: element.css('font-weight'),\r\n fontStyle: element.css('font-style'),\r\n whiteSpace: element.css('white-space')\r\n };\r\n }\r\n\r\n /**\r\n * This method fetches the text measurement properties of the given SVG text element.\r\n * @param svgElement The SVGTextElement to be measured.\r\n */\r\n export function getSvgMeasurementProperties(svgElement: SVGTextElement): TextProperties {\r\n debug.assertValue(svgElement, 'svgElement');\r\n\r\n let style = window.getComputedStyle(svgElement, null);\r\n return {\r\n text: svgElement.textContent,\r\n fontFamily: style.fontFamily,\r\n fontSize: style.fontSize,\r\n fontWeight: style.fontWeight,\r\n fontStyle: style.fontStyle,\r\n whiteSpace: style.whiteSpace\r\n };\r\n }\r\n\r\n /**\r\n * This method returns the width of a div element.\r\n * @param element The div element.\r\n */\r\n export function getDivElementWidth(element: JQuery): string {\r\n debug.assert(element.is('div'), 'Given element is not a div type. Cannot get width');\r\n return getComputedStyle(element[0]).width;\r\n }\r\n\r\n /**\r\n * Compares labels text size to the available size and renders ellipses when the available size is smaller.\r\n * @param textProperties The text properties (including text content) to use for text measurement.\r\n * @param maxWidth The maximum width available for rendering the text.\r\n */\r\n export function getTailoredTextOrDefault(properties: TextProperties, maxWidth: number): string {\r\n debug.assertValue(properties, 'properties');\r\n debug.assertValue(properties.text, 'properties.text');\r\n\r\n ensureDOM();\r\n\r\n let strLength = properties.text.length;\r\n\r\n if (strLength === 0)\r\n return properties.text;\r\n\r\n let width = measureSvgTextWidth(properties);\r\n\r\n if (width < maxWidth)\r\n return properties.text;\r\n\r\n // Take the properties and apply them to svgTextElement\r\n // Then, do the binary search to figure out the substring we want\r\n // Set the substring on textElement argument\r\n let text = properties.text = ellipsis + properties.text;\r\n\r\n let min = 1;\r\n let max = text.length;\r\n let i = ellipsis.length;\r\n\r\n while (min <= max) {\r\n // num | 0 prefered to Math.floor(num) for performance benefits\r\n i = (min + max) / 2 | 0;\r\n\r\n properties.text = text.substr(0, i);\r\n width = measureSvgTextWidth(properties);\r\n\r\n if (maxWidth > width)\r\n min = i + 1;\r\n else if (maxWidth < width)\r\n max = i - 1;\r\n else\r\n break;\r\n }\r\n\r\n // Since the search algorithm almost never finds an exact match,\r\n // it will pick one of the closest two, which could result in a\r\n // value bigger with than 'maxWidth' thus we need to go back by \r\n // one to guarantee a smaller width than 'maxWidth'.\r\n properties.text = text.substr(0, i);\r\n width = measureSvgTextWidth(properties);\r\n if (width > maxWidth)\r\n i--;\r\n\r\n return text.substr(ellipsis.length, i - ellipsis.length) + ellipsis;\r\n }\r\n\r\n /**\r\n * Compares labels text size to the available size and renders ellipses when the available size is smaller.\r\n * @param textElement The SVGTextElement containing the text to render.\r\n * @param maxWidth The maximum width available for rendering the text.\r\n */\r\n export function svgEllipsis(textElement: SVGTextElement, maxWidth: number): void {\r\n debug.assertValue(textElement, 'textElement');\r\n\r\n let properties = getSvgMeasurementProperties(textElement);\r\n let originalText = properties.text;\r\n let tailoredText = getTailoredTextOrDefault(properties, maxWidth);\r\n\r\n if (originalText !== tailoredText) {\r\n textElement.textContent = tailoredText;\r\n }\r\n }\r\n\r\n /**\r\n * Word break textContent of <text> SVG element into <tspan>s\r\n * Each tspan will be the height of a single line of text\r\n * @param textElement - the SVGTextElement containing the text to wrap\r\n * @param maxWidth - the maximum width available\r\n * @param maxHeight - the maximum height available (defaults to single line)\r\n * @param linePadding - (optional) padding to add to line height\r\n */\r\n export function wordBreak(textElement: SVGTextElement, maxWidth: number, maxHeight: number, linePadding: number = 0): void {\r\n debug.assertValue(textElement, 'textElement');\r\n\r\n let properties = getSvgMeasurementProperties(textElement);\r\n let height = estimateSvgTextHeight(properties) + linePadding;\r\n let maxNumLines = Math.max(1, Math.floor(maxHeight / height));\r\n let node = d3.select(textElement);\r\n \r\n // Save y of parent textElement to apply as first tspan dy\r\n let firstDY = node.attr('y');\r\n\r\n // Store and clear text content\r\n let labelText = textElement.textContent;\r\n textElement.textContent = null;\r\n\r\n // Append a tspan for each word broken section\r\n let words = jsCommon.WordBreaker.splitByWidth(labelText, properties, measureSvgTextWidth, maxWidth, maxNumLines);\r\n for (let i = 0, ilen = words.length; i < ilen; i++) {\r\n properties.text = words[i];\r\n node\r\n .append('tspan')\r\n .attr({\r\n 'x': 0,\r\n 'dy': i === 0 ? firstDY : height,\r\n })\r\n // Truncate\r\n .text(getTailoredTextOrDefault(properties, maxWidth));\r\n }\r\n }\r\n\r\n /**\r\n * Word break textContent of span element into <span>s\r\n * Each span will be the height of a single line of text\r\n * @param textElement - the element containing the text to wrap\r\n * @param maxWidth - the maximum width available\r\n * @param maxHeight - the maximum height available (defaults to single line)\r\n * @param linePadding - (optional) padding to add to line height\r\n */\r\n export function wordBreakOverflowingText(textElement: any, maxWidth: number, maxHeight: number, linePadding: number = 0): void {\r\n debug.assertValue(textElement, 'textElement');\r\n\r\n let properties = getSvgMeasurementProperties(<SVGTextElement>textElement);\r\n let height = estimateSvgTextHeight(properties) + linePadding;\r\n let maxNumLines = Math.max(1, Math.floor(maxHeight / height));\r\n \r\n // Store and clear text content\r\n let labelText = textElement.textContent;\r\n textElement.textContent = null;\r\n\r\n // Append a span for each word broken section\r\n let words = jsCommon.WordBreaker.splitByWidth(labelText, properties, measureSvgTextWidth, maxWidth, maxNumLines);\r\n\r\n // splitByWidth() occasionally returns unnecessary empty strings, so get rid of them.\r\n // TODO: Fix splitByWidth.\r\n words = _.compact(words);\r\n\r\n let spanItem = d3.select(textElement)\r\n .selectAll(OverflowingText.selector)\r\n .data(words, (d: String) => $.inArray(d, words));\r\n\r\n spanItem\r\n .enter()\r\n .append(\"span\")\r\n .classed(OverflowingText.class, true)\r\n .text((d: string) => d)\r\n .style(\"width\", jsCommon.PixelConverter.toString(maxWidth));\r\n }\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule jsCommon {\r\n /**\r\n * Responsible for throttling input function.\r\n */\r\n export class ThrottleUtility {\r\n private fn: () => void;\r\n private timerFactory: ITimerPromiseFactory;\r\n private delay: number;\r\n\r\n constructor(delay?: number) {\r\n this.timerFactory = TimerPromiseFactory.instance;\r\n this.delay = 0;\r\n if (delay) {\r\n this.delay = delay;\r\n }\r\n }\r\n\r\n public run(fn: () => void): void {\r\n if (!this.fn) {\r\n this.fn = fn;\r\n this.timerFactory.create(this.delay).done(() => this.timerComplete(this.fn));\r\n } else {\r\n this.fn = fn;\r\n }\r\n }\r\n\r\n /**\r\n * Note: Public for testing purpose.\r\n */\r\n public timerComplete(fn: () => void) {\r\n // run fn\r\n fn();\r\n \r\n // clear fn\r\n this.fn = null;\r\n }\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule jsCommon {\r\n\r\n export interface ITimerPromiseFactory {\r\n /** \r\n * Creates a promise that will be resolved after the specified delayInMs.\r\n * @return Promise.\r\n */\r\n create(delayInMs: number): IRejectablePromise;\r\n }\r\n\r\n /** \r\n * Responsible for creating timer promises.\r\n */\r\n export class TimerPromiseFactory implements ITimerPromiseFactory {\r\n public static instance = new TimerPromiseFactory();\r\n\r\n /**\r\n * {@inheritDoc}\r\n */\r\n public create(delayInMs: number): IRejectablePromise {\r\n debug.assertValue(delayInMs, 'delayInMs');\r\n debug.assert(delayInMs >= 0, 'delayInMs must be a positive value.');\r\n\r\n let deferred = $.Deferred<void>();\r\n\r\n window.setTimeout(\r\n () => deferred.resolve(),\r\n delayInMs);\r\n\r\n return deferred;\r\n }\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\n/**\r\n * Defined in host.\r\n */\r\ndeclare var clusterUri: string;\r\n\r\nmodule jsCommon {\r\n\r\n /**\r\n * Http Status code we are interested.\r\n */\r\n export enum HttpStatusCode {\r\n OK = 200,\r\n BadRequest = 400,\r\n Unauthorized = 401,\r\n Forbidden = 403,\r\n RequestEntityTooLarge = 413,\r\n }\r\n\r\n /**\r\n * Other HTTP Constants.\r\n */\r\n export module HttpConstants {\r\n export const ApplicationOctetStream = 'application/octet-stream';\r\n export const MultiPartFormData = 'multipart/form-data';\r\n }\r\n\r\n /**\r\n * Extensions to String class.\r\n */\r\n export module StringExtensions {\r\n export function format(...args: string[]) {\r\n let s = args[0];\r\n\r\n if (isNullOrUndefinedOrWhiteSpaceString(s))\r\n return s;\r\n\r\n for (let i = 0; i < args.length - 1; i++) {\r\n let reg = new RegExp(\"\\\\{\" + i + \"\\\\}\", \"gm\");\r\n s = s.replace(reg, args[i + 1]);\r\n }\r\n return s;\r\n }\r\n\r\n /**\r\n * Compares two strings for equality, ignoring case.\r\n */\r\n export function equalIgnoreCase(a: string, b: string): boolean {\r\n return StringExtensions.normalizeCase(a) === StringExtensions.normalizeCase(b);\r\n }\r\n\r\n export function startsWithIgnoreCase(a: string, b: string): boolean {\r\n let normalizedSearchString = StringExtensions.normalizeCase(b);\r\n return StringExtensions.normalizeCase(a).indexOf(normalizedSearchString) === 0;\r\n }\r\n\r\n export function startsWith(a: string, b: string): boolean {\r\n return a.indexOf(b) === 0;\r\n }\r\n\r\n /** Determines whether a string contains a specified substring (while ignoring case). */\r\n export function containsIgnoreCase(source: string, substring: string): boolean {\r\n if (source == null)\r\n return false;\r\n\r\n return source.toLowerCase().indexOf(substring.toLowerCase().toString()) !== -1;\r\n }\r\n\r\n /** \r\n * Normalizes case for a string.\r\n * Used by equalIgnoreCase method. \r\n */\r\n export function normalizeCase(value: string): string {\r\n Utility.throwIfNullOrUndefined(value, StringExtensions, 'normalizeCase', 'value');\r\n\r\n return value.toUpperCase();\r\n }\r\n\r\n /** \r\n * Is string null or empty or undefined?\r\n * @return True if the value is null or undefined or empty string,\r\n * otherwise false.\r\n */\r\n export function isNullOrEmpty(value: string): boolean {\r\n return (value == null) || (value.length === 0);\r\n }\r\n\r\n /** \r\n * Returns true if the string is null, undefined, empty, or only includes white spaces.\r\n * @return True if the str is null, undefined, empty, or only includes white spaces,\r\n * otherwise false.\r\n */\r\n export function isNullOrUndefinedOrWhiteSpaceString(str: string): boolean {\r\n return StringExtensions.isNullOrEmpty(str) || StringExtensions.isNullOrEmpty(str.trim());\r\n }\r\n\r\n /**\r\n * Returns a value indicating whether the str contains any whitespace.\r\n */\r\n export function containsWhitespace(str: string): boolean {\r\n Utility.throwIfNullOrUndefined(str, this, 'containsWhitespace', 'str');\r\n\r\n let expr: RegExp = /\\s/;\r\n return expr.test(str);\r\n }\r\n\r\n /**\r\n * Returns a value indicating whether the str is a whitespace string.\r\n */\r\n export function isWhitespace(str: string): boolean {\r\n Utility.throwIfNullOrUndefined(str, this, 'isWhitespace', 'str');\r\n\r\n return str.trim() === '';\r\n }\r\n\r\n /** \r\n * Returns the string with any trailing whitespace from str removed.\r\n */\r\n export function trimTrailingWhitespace(str: string): string {\r\n Utility.throwIfNullOrUndefined(str, this, 'trimTrailingWhitespace', 'str');\r\n return str.replace(/\\s+$/, '');\r\n }\r\n\r\n /**\r\n * Returns the string with any leading and trailing whitespace from str removed.\r\n */\r\n export function trimWhitespace(str: string): string {\r\n Utility.throwIfNullOrUndefined(str, this, 'trimWhitespace', 'str');\r\n return str.replace(/^\\s+/, '').replace(/\\s+$/, '');\r\n }\r\n\r\n /** \r\n * Returns length difference between the two provided strings.\r\n */\r\n export function getLengthDifference(left: string, right: string) {\r\n Utility.throwIfNullOrUndefined(left, this, 'getLengthDifference', 'left');\r\n Utility.throwIfNullOrUndefined(right, this, 'getLengthDifference', 'right');\r\n\r\n return Math.abs(left.length - right.length);\r\n }\r\n\r\n /**\r\n * Repeat char or string several times.\r\n * @param char The string to repeat.\r\n * @param count How many times to repeat the string.\r\n */\r\n export function repeat(char: string, count: number): string {\r\n let result = \"\";\r\n for (let i = 0; i < count; i++) {\r\n result += char;\r\n }\r\n return result;\r\n }\r\n\r\n /**\r\n * Replace all the occurrences of the textToFind in the text with the textToReplace.\r\n * @param text The original string.\r\n * @param textToFind Text to find in the original string.\r\n * @param textToReplace New text replacing the textToFind.\r\n */\r\n export function replaceAll(text: string, textToFind: string, textToReplace: string): string {\r\n if (!textToFind)\r\n return text;\r\n\r\n let pattern = escapeStringForRegex(textToFind);\r\n return text.replace(new RegExp(pattern, 'gi'), textToReplace);\r\n }\r\n\r\n export function ensureUniqueNames(names: string[]): string[] {\r\n debug.assertValue(names, 'names');\r\n\r\n let usedNames: { [name: string]: boolean } = {};\r\n\r\n // Make sure we are giving fair chance for all columns to stay with their original name\r\n // First we fill the used names map to contain all the original unique names from the list.\r\n for (let name of names) {\r\n usedNames[name] = false;\r\n }\r\n\r\n let uniqueNames: string[] = [];\r\n\r\n // Now we go over all names and find a unique name for each\r\n for (let name of names) {\r\n let uniqueName = name;\r\n\r\n // If the (original) column name is already taken lets try to find another name\r\n if (usedNames[uniqueName]) {\r\n let counter = 0;\r\n // Find a name that is not already in the map\r\n while (usedNames[uniqueName] !== undefined) {\r\n uniqueName = name + \".\" + (++counter);\r\n }\r\n }\r\n\r\n uniqueNames.push(uniqueName);\r\n usedNames[uniqueName] = true;\r\n }\r\n\r\n return uniqueNames;\r\n }\r\n\r\n /**\r\n * Returns a name that is not specified in the values.\r\n */\r\n export function findUniqueName(\r\n usedNames: { [name: string]: boolean },\r\n baseName: string): string {\r\n debug.assertValue(usedNames, 'usedNames');\r\n debug.assertValue(baseName, 'baseName');\r\n\r\n // Find a unique name\r\n let i = 0,\r\n uniqueName: string = baseName;\r\n while (usedNames[uniqueName]) {\r\n uniqueName = baseName + (++i);\r\n }\r\n\r\n return uniqueName;\r\n }\r\n\r\n export function constructCommaSeparatedList(list: string[], resourceProvider: IStringResourceProvider, maxValue?: number): string {\r\n if (!list || list.length === 0)\r\n return '';\r\n\r\n if (maxValue === null || maxValue === undefined)\r\n maxValue = Number.MAX_VALUE;\r\n\r\n let length = Math.min(maxValue, list.length);\r\n\r\n let replacedList = [];\r\n // Only need to replace user entries of {0} and {1} since we build the list in pairs.\r\n for (let j = 0; j < 2; j++) {\r\n let targetValue = '{' + j + '}';\r\n let replaceValue = '_|_<' + j + '>_|_';\r\n for (let i = 0; i < length; i++) {\r\n if (list[i].indexOf(targetValue) > -1) {\r\n list[i] = list[i].replace(targetValue, replaceValue);\r\n replacedList.push({ targetValue: targetValue, replaceValue: replaceValue });\r\n }\r\n }\r\n }\r\n\r\n let commaSeparatedList: string = '';\r\n for (let i = 0; i < length; i++) {\r\n if (i === 0)\r\n commaSeparatedList = list[i];\r\n else\r\n commaSeparatedList = StringExtensions.format(resourceProvider.get('FilterRestatement_Comma'), commaSeparatedList, list[i]);\r\n }\r\n\r\n for (let i = 0; i < replacedList.length; i++) {\r\n commaSeparatedList = commaSeparatedList.replace(replacedList[i].replaceValue, replacedList[i].targetValue);\r\n }\r\n\r\n return commaSeparatedList;\r\n }\r\n\r\n export function escapeStringForRegex(s: string): string {\r\n return s.replace(/([-()\\[\\]{}+?*.$\\^|,:#<!\\\\])/g, '\\\\$1');\r\n }\r\n\r\n /**\r\n * Remove file name reserved characters <>:\"/\\|?* from input string.\r\n */\r\n export function normalizeFileName(fileName: string): string { \r\n debug.assertValue(fileName, 'fileName'); \r\n return fileName.replace(/[\\<\\>\\:\"\\/\\\\\\|\\?*]/g, '');\r\n }\r\n\r\n /**\r\n * Similar to JSON.stringify, but strips away escape sequences so that the resulting\r\n * string is human-readable (and parsable by JSON formatting/validating tools).\r\n */\r\n export function stringifyAsPrettyJSON(object: any): string {\r\n //let specialCharacterRemover = (key: string, value: string) => value.replace(/[^\\w\\s]/gi, '');\r\n return JSON.stringify(object /*, specialCharacterRemover*/);\r\n }\r\n\r\n /**\r\n * Derive a CLS-compliant name from a specified string. If no allowed characters are present, return a fallback string instead.\r\n * TODO (6708134): this should have a fully Unicode-aware implementation\r\n */\r\n export function deriveClsCompliantName(input: string, fallback: string): string {\r\n debug.assertValue(input, 'input');\r\n\r\n let result = input.replace(/^[^A-Za-z]*/g, '').replace(/[ :\\.\\/\\\\\\-\\u00a0\\u1680\\u180e\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000]/g, '_').replace(/[\\W]/g, '');\r\n\r\n return result.length > 0 ? result : fallback;\r\n }\r\n }\r\n\r\n /**\r\n * Interface used for interacting with WCF typed objects.\r\n */\r\n export interface TypedObject {\r\n __type: string;\r\n }\r\n\r\n export interface TextMatch {\r\n start: number;\r\n end: number;\r\n text: string;\r\n }\r\n\r\n /** \r\n * The general utility class.\r\n */\r\n export class Utility {\r\n private static TypeNamespace = 'http://schemas.microsoft.com/sqlbi/2013/01/NLRuntimeService';\r\n\r\n public static JsonContentType = 'application/json';\r\n public static JpegContentType = 'image/jpeg';\r\n public static XJavascriptContentType = 'application/x-javascript';\r\n public static JsonDataType = 'json';\r\n public static BlobDataType = 'blob';\r\n public static HttpGetMethod = 'GET';\r\n public static HttpPostMethod = 'POST';\r\n public static HttpPutMethod = 'PUT';\r\n public static HttpDeleteMethod = 'DELETE';\r\n public static HttpContentTypeHeader = 'Content-Type';\r\n public static HttpAcceptHeader = 'Accept';\r\n public static Undefined = 'undefined';\r\n\r\n private static staticContentLocation: string = window.location.protocol + '//' + window.location.host;\r\n private static urlRegex = /http[s]?:\\/\\/(\\S)+/gi;\r\n\r\n /**\r\n * Ensures the specified value is not null or undefined. Throws a relevent exception if it is.\r\n * @param value The value to check.\r\n * @param context The context from which the check originated.\r\n * @param methodName The name of the method that initiated the check.\r\n * @param parameterName The parameter name of the value to check.\r\n */\r\n public static throwIfNullOrUndefined(value, context, methodName, parameterName) {\r\n if (value === null) {\r\n Utility.throwException(Errors.argumentNull(Utility.getComponentName(context) + methodName + '.' + parameterName));\r\n }\r\n else if (typeof (value) === Utility.Undefined) {\r\n Utility.throwException(Errors.argumentUndefined(Utility.getComponentName(context) + methodName + '.' + parameterName));\r\n }\r\n }\r\n\r\n /**\r\n * Ensures the specified value is not null, undefined or empty. Throws a relevent exception if it is.\r\n * @param value The value to check.\r\n * @param context The context from which the check originated.\r\n * @param methodName The name of the method that initiated the check.\r\n * @param parameterName The parameter name of the value to check.\r\n */\r\n public static throwIfNullOrEmpty(value: any, context: any, methodName: string, parameterName: string) {\r\n Utility.throwIfNullOrUndefined(value, context, methodName, parameterName);\r\n if (!value.length) {\r\n Utility.throwException(Errors.argumentOutOfRange(Utility.getComponentName(context) + methodName + '.' + parameterName));\r\n }\r\n }\r\n\r\n /**\r\n * Ensures the specified string is not null, undefined or empty. Throws a relevent exception if it is.\r\n * @param value The value to check.\r\n * @param context The context from which the check originated.\r\n * @param methodName The name of the method that initiated the check.\r\n * @param parameterName The parameter name of the value to check.\r\n */\r\n public static throwIfNullOrEmptyString(value: string, context: any, methodName: string, parameterName: string) {\r\n Utility.throwIfNullOrUndefined(value, context, methodName, parameterName);\r\n if (value.length < 1) {\r\n Utility.throwException(Errors.argumentOutOfRange(Utility.getComponentName(context) + methodName + '.' + parameterName));\r\n }\r\n }\r\n\r\n /**\r\n * Ensures the specified value is not null, undefined, whitespace or empty. Throws a relevent exception if it is.\r\n * @param value The value to check.\r\n * @param context The context from which the check originated.\r\n * @param methodName The name of the method that initiated the check.\r\n * @param parameterName The parameter name of the value to check.\r\n */\r\n public static throwIfNullEmptyOrWhitespaceString(value: string, context: any, methodName: string, parameterName: string) {\r\n Utility.throwIfNullOrUndefined(value, context, methodName, parameterName);\r\n if (StringExtensions.isNullOrUndefinedOrWhiteSpaceString(value)) {\r\n Utility.throwException(Errors.argumentOutOfRange(Utility.getComponentName(context) + methodName + '.' + parameterName));\r\n }\r\n }\r\n\r\n /**\r\n * Ensures the specified condition is true. Throws relevant exception if it isn't.\r\n * @param condition The condition to check.\r\n * @param context The context from which the check originated.\r\n * @param methodName The name of the method that initiated the check.\r\n * @param parameterName The parameter name against which the condition is checked.\r\n */\r\n public static throwIfNotTrue(condition: boolean, context: any, methodName: string, parameterName: string) {\r\n if (!condition) {\r\n Utility.throwException(Errors.argument(parameterName, Utility.getComponentName(context) + methodName + '.' + parameterName));\r\n }\r\n }\r\n\r\n /**\r\n * Checks whether the provided value is a 'string'.\r\n * @param value The value to test.\r\n */\r\n public static isString(value: any): boolean {\r\n return ((typeof value) === 'string');\r\n }\r\n\r\n /**\r\n * Checks whether the provided value is a 'boolean'.\r\n * @param value The value to test.\r\n */\r\n public static isBoolean(value: any): boolean {\r\n return ((typeof value) === 'boolean');\r\n }\r\n\r\n /**\r\n * Checks whether the provided value is a 'number'.\r\n * @param value The value to test.\r\n */\r\n public static isNumber(value: any): boolean {\r\n return ((typeof value) === 'number');\r\n }\r\n\r\n /**\r\n * Checks whether the provided value is a Date instance.\r\n * @param value The value to test.\r\n */\r\n public static isDate(value: any): boolean {\r\n return Utility.isObject(value) && (value instanceof Date);\r\n }\r\n\r\n /**\r\n * Checks whether the provided value is an 'object'.\r\n * @param value The value to test.\r\n */\r\n public static isObject(value: any): boolean {\r\n return (value != null) && ((typeof value) === 'object');\r\n }\r\n\r\n /**\r\n * Checks whether the provided value is null or undefined.\r\n * @param value The value to test.\r\n */\r\n public static isNullOrUndefined(value: any): boolean {\r\n return (value === null) || (typeof (value) === Utility.Undefined);\r\n }\r\n\r\n /**\r\n * Combine a base url and a path.\r\n * @param baseUrl The base url.\r\n * @param path The path to add on to the base url.\r\n * @returns The combined url.\r\n */\r\n public static urlCombine(baseUrl: string, path: string) {\r\n Utility.throwIfNullOrUndefined(baseUrl, null, \"urlCombine\", \"baseUrl\");\r\n Utility.throwIfNullOrUndefined(path, null, \"urlCombine\", \"path\");\r\n\r\n // should any of the components be empty, fail gracefuly - this is important when using the test page\r\n if (StringExtensions.isNullOrUndefinedOrWhiteSpaceString(path)) {\r\n return baseUrl;\r\n }\r\n\r\n if (StringExtensions.isNullOrUndefinedOrWhiteSpaceString(baseUrl)) {\r\n return path;\r\n }\r\n\r\n let finalUrl = baseUrl;\r\n\r\n if (finalUrl.charAt(finalUrl.length - 1) === '/') {\r\n if (path.charAt(0) === '/')\r\n path = path.slice(1);\r\n } else {\r\n if (path.charAt(0) !== '/')\r\n path = '/' + path;\r\n }\r\n\r\n return finalUrl + path;\r\n }\r\n\r\n public static getAbsoluteUri(path: string): string {\r\n Utility.throwIfNullOrUndefined(path, null, \"getAbsoluteUri\", \"path\");\r\n\r\n let url = path;\r\n // Make absolute\r\n if (url && url.indexOf('http') === - 1) {\r\n url = Utility.urlCombine(clusterUri, url);\r\n }\r\n return url;\r\n }\r\n\r\n public static getStaticResourceUri(path: string) {\r\n Utility.throwIfNullOrUndefined(path, null, \"getStaticResourceUri\", \"path\");\r\n\r\n let url = path;\r\n // Make absolute\r\n if (url && url.indexOf('http') === - 1) {\r\n url = jsCommon.Utility.urlCombine(Utility.staticContentLocation, url);\r\n }\r\n return url;\r\n }\r\n\r\n public static getComponentName(context) {\r\n return !context ? '' : (typeof context).toString() + '.';\r\n }\r\n\r\n public static throwException(e) {\r\n Trace.error(\r\n StringExtensions.format(\"Throwing exception: {0}\", JSON.stringify(e)), \r\n /*includeStackTrace*/ e.stack != null ? false : true);\r\n throw e;\r\n }\r\n\r\n public static createClassSelector(className: string): string {\r\n Utility.throwIfNullOrEmptyString(className, null, 'CreateClassSelector', 'className');\r\n return '.' + className;\r\n }\r\n\r\n public static createIdSelector(id: string): string {\r\n Utility.throwIfNullOrEmptyString(id, null, 'CreateIdSelector', 'id');\r\n return '#' + id;\r\n }\r\n\r\n /**\r\n * Creates a client-side Guid string.\r\n * @returns A string representation of a Guid.\r\n */\r\n public static generateGuid(): string {\r\n let guid = \"\",\r\n idx = 0;\r\n\r\n for (idx = 0; idx < 32; idx += 1) {\r\n let guidDigitsItem = Math.random() * 16 | 0;\r\n switch (idx) {\r\n case 8:\r\n case 12:\r\n case 16:\r\n case 20:\r\n guid += \"-\";\r\n break;\r\n }\r\n guid += guidDigitsItem.toString(16);\r\n }\r\n\r\n return guid;\r\n }\r\n\r\n /**\r\n * Try extract a cookie from {@link document.cookie} identified by key.\r\n */\r\n public static getCookieValue(key: string): string {\r\n // the cookie is of the format <key1=value1>; <key2=value2>. Split by ';', then by '=' \r\n // to search for the key\r\n let keyValuePairs = document.cookie.split(';');\r\n for (let i = 0; i < keyValuePairs.length; i++) {\r\n let keyValue = keyValuePairs[i];\r\n let split = keyValue.split('=');\r\n if (split.length > 0 && split[0].trim() === key) {\r\n return keyValue.substr(keyValue.indexOf('=') + 1);\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Extracts the protocol://hostname section of a url.\r\n * @param url The URL from which to extract the section.\r\n * @returns The protocol://hostname portion of the given URL.\r\n */\r\n public static getDomainForUrl(url: string): string {\r\n let hrefObject = Utility.getHrefObjectFromUrl(url);\r\n return hrefObject.prop('protocol') + '//' + hrefObject.prop('hostname');\r\n }\r\n\r\n /**\r\n * Extracts the hostname and absolute path sections of a url.\r\n * @param url The URL from which to extract the section.\r\n * @returns The hostname and absolute path portion of the given URL.\r\n */\r\n public static getHostNameForUrl(url: string): string {\r\n let hrefObject = Utility.getHrefObjectFromUrl(url);\r\n return Utility.urlCombine(hrefObject.prop('hostname'), hrefObject.prop('pathname'));\r\n }\r\n\r\n /**\r\n * Return the original url with query string stripped.\r\n * @param url The URL from which to extract the section.\r\n * @returns the original url with query string stripped.\r\n */\r\n public static getUrlWithoutQueryString(url: string): string {\r\n let hrefObject = Utility.getHrefObjectFromUrl(url);\r\n return hrefObject.prop('protocol') + '//' + Utility.urlCombine(hrefObject.prop('host'), hrefObject.prop('pathname'));\r\n }\r\n\r\n /**\r\n * Extracts the protocol section of a url.\r\n * @param url The URL from which to extract the section.\r\n * @returns The protocol for the current URL.\r\n */\r\n public static getProtocolFromUrl(url: string): string {\r\n return Utility.getHrefObjectFromUrl(url).prop('protocol').replace(':', '');\r\n }\r\n\r\n /**\r\n * Returns a formatted href object from a URL.\r\n * @param url The URL used to generate the object.\r\n * @returns A jQuery object with the url.\r\n */\r\n public static getHrefObjectFromUrl(url: string): JQuery {\r\n let aObject = $('<a>');\r\n aObject = aObject.prop('href', url);\r\n return aObject;\r\n }\r\n\r\n /**\r\n * Converts a WCF representation of a dictionary to a JavaScript dictionary.\r\n * @param wcfDictionary The WCF dictionary to convert.\r\n * @returns The native JavaScript representation of this dictionary.\r\n */\r\n public static convertWcfToJsDictionary(wcfDictionary: any[]): { [index: string]: any; } {\r\n // convert the WCF JSON representation of a dictionary\r\n // to JS dictionary.\r\n // WCF representation: [{\"Key\": Key, \"Value\": Value}..]\r\n // JS representation: [Key: Value ..]\r\n\r\n let result: { [index: string]: any; } = {};\r\n\r\n for (let i = 0; i < wcfDictionary.length; i++) {\r\n let keyValuePair = wcfDictionary[i];\r\n result[keyValuePair['Key']] = keyValuePair['Value'];\r\n }\r\n\r\n return result;\r\n }\r\n\r\n public static getDateFromWcfJsonString(jsonDate: string, fromUtcMilliseconds: boolean): Date {\r\n if (StringExtensions.isNullOrEmpty(jsonDate)) {\r\n return null;\r\n }\r\n let begIndex = jsonDate.indexOf('(');\r\n let endIndex = jsonDate.indexOf(')');\r\n if (begIndex !== -1 && endIndex !== -1) {\r\n let milliseconds = parseInt(jsonDate.substring(begIndex + 1, endIndex), 10);\r\n\r\n if (fromUtcMilliseconds) {\r\n return new Date(milliseconds);\r\n }\r\n else {\r\n let retValue = new Date(0);\r\n retValue.setUTCMilliseconds(milliseconds);\r\n return retValue;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Get the outer html of the given jquery object.\r\n * @param content The jquery object.\r\n * @returns The entire html representation of the object.\r\n */\r\n public static getOuterHtml(content: JQuery): string {\r\n return $('<div>').append(content).html();\r\n }\r\n\r\n /**\r\n * Comparison Method: Compares two integer numbers.\r\n * @param a An integer value.\r\n * @param b An integer value.\r\n * @returns The comparison result.\r\n */\r\n public static compareInt(a: number, b: number): number {\r\n return a - b;\r\n }\r\n \r\n /**\r\n * Return the index of the smallest value in a numerical array.\r\n * @param a A numeric array.\r\n * @returns The index of the smallest value in the array.\r\n */\r\n public static getIndexOfMinValue(a: number[]) {\r\n let retValue = 0;\r\n let currentMinValue = a[0];\r\n\r\n for (let i = 0; i < a.length; i++) {\r\n if (a[i] < currentMinValue) {\r\n currentMinValue = a[i];\r\n retValue = i;\r\n }\r\n }\r\n\r\n return retValue;\r\n }\r\n \r\n /**\r\n * Tests whether a URL is valid.\r\n * @param url The url to be tested.\r\n * @returns Whether the provided url is valid.\r\n */\r\n public static isValidUrl(url: string): boolean {\r\n if (StringExtensions.isNullOrEmpty(url))\r\n return false;\r\n\r\n let match = RegExpExtensions.run(Utility.urlRegex, url);\r\n return !!match && match.index === 0;\r\n }\r\n\r\n /**\r\n * Finds all valid urls.\r\n * @param text The text to search.\r\n * @returns An array of ranges corresponding to the urls.\r\n */\r\n public static findAllValidUrls(text: string): TextMatch[] {\r\n if (StringExtensions.isNullOrEmpty(text))\r\n return [];\r\n\r\n // Find all urls in the text.\r\n // TODO: This could potentially be expensive, maybe include a cap here for text with many urls?\r\n let urlRanges: TextMatch[] = [];\r\n let matches: RegExpExecArray;\r\n let start = 0;\r\n while ((matches = RegExpExtensions.run(Utility.urlRegex, text, start)) !== null) {\r\n let url = matches[0];\r\n let end = matches.index + url.length;\r\n urlRanges.push({\r\n start: matches.index,\r\n end: end,\r\n text: url,\r\n });\r\n start = end;\r\n }\r\n\r\n return urlRanges;\r\n }\r\n \r\n /**\r\n * Extracts a url from a background image attribute in the format of: url('www.foobar.com/image.png').\r\n * @param input The value of the background-image attribute.\r\n * @returns The extracted url.\r\n */\r\n public static extractUrlFromCssBackgroundImage(input: string) {\r\n return input.replace(/\"/g, \"\").replace(/url\\(|\\)$/ig, \"\");\r\n }\r\n \r\n /**\r\n * Verifies image data url of images.\r\n */\r\n public static isValidImageDataUrl(url: string): boolean {\r\n let regex: RegExp = new RegExp('data:(image\\/(png|jpg|jpeg|gif|svg))');\r\n return regex.test(url);\r\n }\r\n \r\n /**\r\n * Downloads a content string as a file.\r\n * @param content Content stream.\r\n * @param fileName File name to use.\r\n */\r\n public static saveAsFile(content: any, fileName: string): void {\r\n let contentBlob = new Blob([content], { type: HttpConstants.ApplicationOctetStream });\r\n let url = window['webkitURL'] || URL;\r\n let urlLink = url.createObjectURL(contentBlob);\r\n let fileNameLink = fileName || urlLink;\r\n\r\n // IE support, use msSaveOrOpenBlob API\r\n if (window.navigator.msSaveOrOpenBlob) {\r\n window.navigator.msSaveOrOpenBlob(contentBlob, fileNameLink);\r\n return;\r\n }\r\n\r\n // WebKit-based browser support requires generating an anchor tag with\r\n // download attribute set to blob store and triggering a click event to invoke \r\n // a download to file action\r\n let hyperlink = document.createElement('a');\r\n hyperlink.href = urlLink;\r\n hyperlink.target = '_blank';\r\n hyperlink['download'] = fileNameLink;\r\n document.body.appendChild(hyperlink);\r\n hyperlink.click();\r\n\r\n document.body.removeChild(hyperlink);\r\n }\r\n\r\n /**\r\n * Helper method to get the simple type name from a typed object.\r\n * @param obj The typed object.\r\n * @returns The simple type name for the object.\r\n */\r\n public static getType(obj: TypedObject) {\r\n Utility.throwIfNullEmptyOrWhitespaceString(obj.__type, this, 'getType', 'obj');\r\n\r\n let parts = obj.__type.split(\":\");\r\n\r\n if (parts.length !== 2) {\r\n Errors.argument(\"obj.__type\", \"Type String not in expected format [Type]#[Namespace]: \" + obj.__type);\r\n }\r\n\r\n if (parts[1] !== Utility.TypeNamespace) {\r\n Errors.argument(\"obj.__type\", \"Type Namespace not expected: \" + parts[1]);\r\n }\r\n\r\n return parts[0];\r\n }\r\n\r\n /** \r\n * Check if an element supports a specific event type.\r\n * @param eventName The name of the event.\r\n * @param element The element to test for event support.\r\n * @returns Whether the even is supported on the provided element.\r\n */\r\n public static isEventSupported(eventName: string, element: Element): boolean {\r\n eventName = 'on' + eventName;\r\n let isSupported = (eventName in element);\r\n\r\n if (!isSupported) {\r\n // if we can't use setAttribute try a generic element\r\n if (!element.setAttribute) {\r\n element = document.createElement('div');\r\n }\r\n if (element.setAttribute && element.removeAttribute) {\r\n element.setAttribute(eventName, '');\r\n isSupported = typeof element[eventName] === 'function';\r\n\r\n // if the property was created - remove it\r\n if (typeof element[eventName] !== 'undefined') {\r\n element[eventName] = null;\r\n }\r\n\r\n element.removeAttribute(eventName);\r\n }\r\n }\r\n\r\n element = null;\r\n return isSupported;\r\n }\r\n\r\n public static toPixel(pixelAmount: number): string {\r\n Utility.throwIfNullOrUndefined(pixelAmount, this, \"toPixel\", \"pixelAmount\");\r\n\r\n return pixelAmount.toString() + CssConstants.pixelUnits;\r\n }\r\n\r\n public static getPropertyCount(object: any) {\r\n Utility.throwIfNullOrUndefined(object, this, \"getPropertyCount\", \"object\");\r\n return Object.getOwnPropertyNames(object).length;\r\n }\r\n\r\n /** \r\n * Check if an element supports a specific event type.\r\n * @param filePath File path.\r\n * @returns File extension.\r\n */\r\n public static getFileExtension(filePath: string): string {\r\n if (filePath) {\r\n let index = filePath.lastIndexOf('.');\r\n if (index >= 0)\r\n return filePath.substr(index + 1);\r\n }\r\n return '';\r\n }\r\n\r\n /** \r\n * Extract the filename out of a full path delimited by '\\' or '/'.\r\n * @param filePath File path.\r\n * @returns filename File name.\r\n */\r\n public static extractFileNameFromPath(filePath: string): string {\r\n return filePath.replace(/^.*[\\\\\\/]/, '');\r\n }\r\n\r\n /**\r\n * This method indicates whether window.clipboardData is supported.\r\n * For example, clipboard support for Windows Store apps is currently disabled \r\n * since window.clipboardData is unsupported (it raises access denied error)\r\n * since clipboard in Windows Store is being \r\n * achieved through Windows.ApplicationModel.DataTransfer.Clipboard class.\r\n */\r\n public static canUseClipboard(): boolean {\r\n return (typeof MSApp === \"undefined\");\r\n }\r\n\r\n public static is64BitOperatingSystem(): boolean {\r\n return navigator.userAgent.indexOf(\"WOW64\") !== -1 ||\r\n navigator.userAgent.indexOf(\"Win64\") !== -1;\r\n }\r\n\r\n public static parseNumber(value: any, defaultValue?: number): number {\r\n if (value === null)\r\n return null;\r\n if (value === undefined)\r\n return defaultValue;\r\n \r\n let result = Number(value);\r\n if (isFinite(result))\r\n return result;\r\n if (isNaN(result) && !(typeof value === \"number\" || value === \"NaN\"))\r\n return defaultValue;\r\n return result;\r\n }\r\n\r\n public static getURLParamValue(name:string) {\r\n let results = new RegExp('[\\?&]' + name + '=([^&#]*)').exec(window.location.href);\r\n if (results == null) {\r\n return null;\r\n }\r\n else {\r\n return results[1] || 0;\r\n }\r\n }\r\n\r\n /**\r\n * Return local timezone.\r\n * This function uses summer and winter offset to determine local time zone.\r\n * The result localTimeZoneString must be a subset of the strings used by server, \r\n * as documented here: https://msdn.microsoft.com/en-us/library/gg154758.aspx (Dynamic Daylight Savings Time (Compact 2013)).\r\n * @return Local timezone string or UTC if timezone cannot be found.\r\n */\r\n public static getLocalTimeZoneString(): string {\r\n let timeSummer = new Date(Date.UTC(2005, 6, 30, 0, 0, 0, 0));\r\n let summerOffset = -1 * timeSummer.getTimezoneOffset();\r\n let timeWinter = new Date(Date.UTC(2005, 12, 30, 0, 0, 0, 0));\r\n let winterOffset = -1 * timeWinter.getTimezoneOffset();\r\n let localTimeZoneString;\r\n\r\n if (-720 === summerOffset && -720 === winterOffset) { localTimeZoneString = 'Dateline Standard Time'; }\r\n else if (-660 === summerOffset && -660 === winterOffset) { localTimeZoneString = 'UTC-11'; }\r\n else if (-660 === summerOffset && -660 === winterOffset) { localTimeZoneString = 'Samoa Standard Time'; }\r\n else if (-600 === summerOffset && -600 === winterOffset) { localTimeZoneString = 'Hawaiian Standard Time'; }\r\n else if (-480 === summerOffset && -540 === winterOffset) { localTimeZoneString = 'Alaskan Standard Time'; }\r\n else if (-420 === summerOffset && -480 === winterOffset) { localTimeZoneString = 'Pacific Standard Time'; }\r\n else if (-420 === summerOffset && -420 === winterOffset) { localTimeZoneString = 'US Mountain Standard Time'; }\r\n else if (-360 === summerOffset && -420 === winterOffset) { localTimeZoneString = 'Mountain Standard Time'; }\r\n else if (-360 === summerOffset && -360 === winterOffset) { localTimeZoneString = 'Central America Standard Time'; }\r\n else if (-300 === summerOffset && -360 === winterOffset) { localTimeZoneString = 'Central Standard Time'; }\r\n else if (-300 === summerOffset && -300 === winterOffset) { localTimeZoneString = 'SA Pacific Standard Time'; }\r\n else if (-240 === summerOffset && -300 === winterOffset) { localTimeZoneString = 'Eastern Standard Time'; }\r\n else if (-270 === summerOffset && -270 === winterOffset) { localTimeZoneString = 'Venezuela Standard Time'; }\r\n else if (-240 === summerOffset && -240 === winterOffset) { localTimeZoneString = 'SA Western Standard Time'; }\r\n else if (-240 === summerOffset && -180 === winterOffset) { localTimeZoneString = 'Central Brazilian Standard Time'; }\r\n else if (-180 === summerOffset && -240 === winterOffset) { localTimeZoneString = 'Atlantic Standard Time'; }\r\n else if (-180 === summerOffset && -180 === winterOffset) { localTimeZoneString = 'Montevideo Standard Time'; }\r\n else if (-180 === summerOffset && -120 === winterOffset) { localTimeZoneString = 'E. South America Standard Time'; }\r\n else if (-150 === summerOffset && -210 === winterOffset) { localTimeZoneString = 'Mid-Atlantic Standard Time'; }\r\n else if (-120 === summerOffset && -120 === winterOffset) { localTimeZoneString = 'SA Eastern Standard Time'; }\r\n else if (0 === summerOffset && 0 === winterOffset) { localTimeZoneString = 'UTC'; }\r\n else if (60 === summerOffset && 0 === winterOffset) { localTimeZoneString = 'GMT Standard Time'; }\r\n else if (60 === summerOffset && 120 === winterOffset) { localTimeZoneString = 'Namibia Standard Time'; }\r\n else if (120 === summerOffset && 60 === winterOffset) { localTimeZoneString = 'Romance Standard Time'; }\r\n else if (120 === summerOffset && 120 === winterOffset) { localTimeZoneString = 'South Africa Standard Time'; }\r\n else if (180 === summerOffset && 120 === winterOffset) { localTimeZoneString = 'GTB Standard Time'; }\r\n else if (180 === summerOffset && 180 === winterOffset) { localTimeZoneString = 'E. Africa Standard Time'; }\r\n else if (240 === summerOffset && 180 === winterOffset) { localTimeZoneString = 'Russian Standard Time'; }\r\n else if (240 === summerOffset && 240 === winterOffset) { localTimeZoneString = 'Arabian Standard Time'; }\r\n else if (270 === summerOffset && 210 === winterOffset) { localTimeZoneString = 'Iran Standard Time'; }\r\n else if (270 === summerOffset && 270 === winterOffset) { localTimeZoneString = 'Afghanistan Standard Time'; }\r\n else if (300 === summerOffset && 240 === winterOffset) { localTimeZoneString = 'Pakistan Standard Time'; }\r\n else if (300 === summerOffset && 300 === winterOffset) { localTimeZoneString = 'West Asia Standard Time'; }\r\n else if (330 === summerOffset && 330 === winterOffset) { localTimeZoneString = 'India Standard Time'; }\r\n else if (345 === summerOffset && 345 === winterOffset) { localTimeZoneString = 'Nepal Standard Time'; }\r\n else if (360 === summerOffset && 300 === winterOffset) { localTimeZoneString = 'N. Central Asia Standard Time'; }\r\n else if (360 === summerOffset && 360 === winterOffset) { localTimeZoneString = 'Central Asia Standard Time'; }\r\n else if (390 === summerOffset && 390 === winterOffset) { localTimeZoneString = 'Myanmar Standard Time'; }\r\n else if (420 === summerOffset && 360 === winterOffset) { localTimeZoneString = 'North Asia Standard Time'; }\r\n else if (420 === summerOffset && 420 === winterOffset) { localTimeZoneString = 'SE Asia Standard Time'; }\r\n else if (480 === summerOffset && 420 === winterOffset) { localTimeZoneString = 'North Asia East Standard Time'; }\r\n else if (480 === summerOffset && 480 === winterOffset) { localTimeZoneString = 'China Standard Time'; }\r\n else if (540 === summerOffset && 480 === winterOffset) { localTimeZoneString = 'Yakutsk Standard Time'; }\r\n else if (540 === summerOffset && 540 === winterOffset) { localTimeZoneString = 'Tokyo Standard Time'; }\r\n else if (570 === summerOffset && 570 === winterOffset) { localTimeZoneString = 'Cen. Australia Standard Time'; }\r\n else if (600 === summerOffset && 600 === winterOffset) { localTimeZoneString = 'E. Australia Standard Time'; }\r\n else if (600 === summerOffset && 660 === winterOffset) { localTimeZoneString = 'AUS Eastern Standard Time'; }\r\n else if (660 === summerOffset && 600 === winterOffset) { localTimeZoneString = 'Tasmania Standard Time'; }\r\n else if (660 === summerOffset && 660 === winterOffset) { localTimeZoneString = 'West Pacific Standard Time'; }\r\n else if (690 === summerOffset && 690 === winterOffset) { localTimeZoneString = 'Central Pacific Standard Time'; }\r\n else if (720 === summerOffset && 660 === winterOffset) { localTimeZoneString = 'Magadan Standard Time'; }\r\n else if (720 === summerOffset && 720 === winterOffset) { localTimeZoneString = 'Fiji Standard Time'; }\r\n else if (720 === summerOffset && 780 === winterOffset) { localTimeZoneString = 'New Zealand Standard Time'; }\r\n else if (780 === summerOffset && 780 === winterOffset) { localTimeZoneString = 'Tonga Standard Time'; }\r\n else { localTimeZoneString = 'UTC'; }\r\n return localTimeZoneString;\r\n }\r\n }\r\n\r\n export class VersionUtility {\r\n /**\r\n * Compares 2 version strings.\r\n * @param versionA The first version string.\r\n * @param versionB The second version string.\r\n * @returns A result for the comparison.\r\n */\r\n static compareVersions(versionA: string, versionB: string): number {\r\n let a = versionA.split('.').map(parseFloat);\r\n let b = versionB.split('.').map(parseFloat);\r\n\r\n let versionParts = Math.max(a.length, b.length);\r\n\r\n for (let i = 0; i < versionParts; i++) {\r\n let partA = a[i] || 0;\r\n let partB = b[i] || 0;\r\n\r\n if (partA > partB)\r\n return 1;\r\n\r\n if (partA < partB)\r\n return -1;\r\n }\r\n\r\n return 0;\r\n }\r\n }\r\n\r\n export module PerformanceUtil {\r\n export class PerfMarker {\r\n private _name: string;\r\n private _start: string;\r\n\r\n constructor(name: string) {\r\n this._name = name;\r\n this._start = PerfMarker.begin(name);\r\n }\r\n\r\n private static begin(name: string) {\r\n if (window.performance === undefined || performance.mark === undefined) return;\r\n if (console.time) {\r\n console.time(name);\r\n }\r\n name = 'Begin ' + name;\r\n performance.mark(name);\r\n return name;\r\n }\r\n\r\n public end() {\r\n if (window.performance === undefined || performance.mark === undefined || performance.measure === undefined) return;\r\n let name = this._name;\r\n let end = 'End ' + name;\r\n performance.mark(end);\r\n performance.measure(name, this._start, end);\r\n if (console.timeEnd) {\r\n console.timeEnd(name);\r\n }\r\n }\r\n }\r\n\r\n export function create(name: string): PerfMarker {\r\n return new PerfMarker(name);\r\n }\r\n }\r\n\r\n export module DeferUtility {\r\n /**\r\n * Wraps a callback and returns a new function.\r\n * The function can be called many times but the callback\r\n * will only be executed once on the next frame.\r\n * Use this to throttle big UI updates and access to DOM.\r\n */\r\n export function deferUntilNextFrame(callback: Function): Function {\r\n let isWaiting, args, context;\r\n\r\n if (!window.requestAnimationFrame) {\r\n window.requestAnimationFrame = (func) => setTimeout(func, 1000 / 50);\r\n }\r\n\r\n return function() {\r\n if (!isWaiting) {\r\n isWaiting = true;\r\n args = arguments;\r\n context = this;\r\n window.requestAnimationFrame(() => {\r\n isWaiting = false;\r\n callback.apply(context, args);\r\n });\r\n }\r\n };\r\n }\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule jsCommon {\r\n export class TraceItem {\r\n public type: TraceType;\r\n public sessionId: string;\r\n public requestId: string;\r\n public text: string;\r\n public timeStamp: Date;\r\n\r\n /** \r\n * Note: DO NOT USE for backward compability only.\r\n */\r\n public _activityId: string;\r\n\r\n private static traceTypeStrings: string[] = [\r\n 'INFORMATION',\r\n 'VERBOSE',\r\n 'WARNING',\r\n 'ERROR',\r\n 'EXPECTEDERROR',\r\n 'UNEXPECTEDERROR',\r\n 'FATAL',\r\n ];\r\n\r\n constructor(text: string, type: TraceType, sessionId: string, requestId?: string) {\r\n this.text = text;\r\n this.type = type;\r\n this.sessionId = sessionId;\r\n this.requestId = requestId;\r\n this.timeStamp = new Date();\r\n }\r\n\r\n public toString(): string {\r\n let resultString: string = '';\r\n\r\n resultString += (StringExtensions.format(\r\n '{0} ({1}): {2}',\r\n TraceItem.traceTypeStrings[this.type],\r\n this.timeStamp.toUTCString(),\r\n this.text));\r\n\r\n if (this.requestId)\r\n resultString += ('\\n(Request id: ' + this.requestId + ')');\r\n\r\n return resultString;\r\n }\r\n }\r\n} ","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule jsCommon {\r\n // NOTE: this file includes standalone utilities that should have no dependencies on external libraries, including jQuery.\r\n\r\n /**\r\n * Interface to help define objects indexed by number to a particular type.\r\n */\r\n export interface INumberDictionary<T> {\r\n [key: number]: T;\r\n }\r\n\r\n /**\r\n * Interface to help define objects indexed by name to a particular type.\r\n */\r\n export interface IStringDictionary<T> {\r\n [key: string]: T;\r\n }\r\n\r\n /**\r\n * Extensions for Enumerations.\r\n */\r\n export module EnumExtensions {\r\n /**\r\n * Gets a value indicating whether the value has the bit flags set.\r\n */\r\n export function hasFlag(value: number, flag: number): boolean {\r\n debug.assert(!!flag, 'flag must be specified and nonzero.');\r\n\r\n return (value & flag) === flag;\r\n }\r\n\r\n /**\r\n * Sets a value of a flag without modifying any other flags.\r\n */ \r\n export function setFlag(value: number, flag: number): number {\r\n debug.assert(!!flag, \"flag must be specified and nonzero.\");\r\n return value |= flag;\r\n }\r\n\r\n /**\r\n * Resets a value of a flag without modifying any other flags.\r\n */ \r\n export function resetFlag(value: number, flag: number): number {\r\n debug.assert(!!flag, \"flag must be specified and nonzero.\");\r\n return value &= ~flag;\r\n }\r\n\r\n /**\r\n * According to the TypeScript Handbook, this is safe to do.\r\n */\r\n export function toString(enumType: any, value: number): string {\r\n return enumType[value];\r\n }\r\n }\r\n\r\n /**\r\n * Extensions to String class.\r\n */\r\n export module StringExtensions {\r\n /**\r\n * Checks if a string ends with a sub-string.\r\n */\r\n export function endsWith(str: string, suffix: string): boolean {\r\n debug.assertValue(str, 'str');\r\n debug.assertValue(suffix, 'suffix');\r\n\r\n return str.indexOf(suffix, str.length - suffix.length) !== -1;\r\n }\r\n }\r\n\r\n export module LogicExtensions {\r\n export function XOR(a: boolean, b: boolean): boolean {\r\n return (a || b) && !(a && b);\r\n }\r\n }\r\n\r\n export module JsonComparer {\r\n /**\r\n * Performs JSON-style comparison of two objects.\r\n */\r\n export function equals<T>(x: T, y: T): boolean {\r\n if (x === y)\r\n return true;\r\n\r\n return JSON.stringify(x) === JSON.stringify(y);\r\n }\r\n }\r\n\r\n /**\r\n * Values are in terms of 'pt'\r\n * Convert to pixels using PixelConverter.fromPoint\r\n */\r\n export module TextSizeDefaults {\r\n /**\r\n * Stored in terms of 'pt'\r\n * Convert to pixels using PixelConverter.fromPoint\r\n */\r\n export const TextSizeMin: number = 8;\r\n\r\n /**\r\n * Stored in terms of 'pt'\r\n * Convert to pixels using PixelConverter.fromPoint\r\n */\r\n export const TextSizeMax: number = 40;\r\n\r\n const TextSizeRange: number = TextSizeMax - TextSizeMin;\r\n\r\n /**\r\n * Returns the percentage of this value relative to the TextSizeMax\r\n * @param textSize - should be given in terms of 'pt'\r\n */\r\n export function getScale(textSize: number) {\r\n return (textSize - TextSizeMin) / TextSizeRange;\r\n }\r\n\r\n }\r\n\r\n export module PixelConverter {\r\n const PxPtRatio: number = 4 / 3;\r\n const PixelString: string = 'px';\r\n\r\n /**\r\n * Appends 'px' to the end of number value for use as pixel string in styles\r\n */\r\n export function toString(px: number): string {\r\n return px + PixelString;\r\n }\r\n\r\n /**\r\n * Converts point value (pt) to pixels\r\n * Returns a string for font-size property\r\n * e.g. fromPoint(8) => '24px'\r\n */\r\n export function fromPoint(pt: number): string {\r\n return toString(fromPointToPixel(pt));\r\n }\r\n\r\n /**\r\n * Converts point value (pt) to pixels\r\n * Returns a number for font-size property\r\n * e.g. fromPoint(8) => 24px\r\n */\r\n export function fromPointToPixel(pt: number): number {\r\n return (PxPtRatio * pt);\r\n }\r\n\r\n /**\r\n * Converts pixel value (px) to pt\r\n * e.g. toPoint(24) => 8\r\n */\r\n export function toPoint(px: number): number {\r\n return px / PxPtRatio;\r\n }\r\n }\r\n\r\n export module RegExpExtensions {\r\n /**\r\n * Runs exec on regex starting from 0 index\r\n * This is the expected behavior but RegExp actually remember\r\n * the last index they stopped at (found match at) and will\r\n * return unexpected results when run in sequence.\r\n * @param regex - regular expression object\r\n * @param value - string to search wiht regex\r\n * @param start - index within value to start regex\r\n */\r\n export function run(regex: RegExp, value: string, start?: number): RegExpExecArray {\r\n debug.assertValue(regex, 'regex');\r\n\r\n regex.lastIndex = start || 0;\r\n return regex.exec(value);\r\n }\r\n }\r\n}\r\n","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule jsCommon {\r\n export interface ITraceListener {\r\n logTrace(trace: TraceItem): void;\r\n }\r\n\r\n export class ConsoleTracer implements ITraceListener {\r\n public logTrace(trace: TraceItem): void {\r\n if (DEBUG) {\r\n switch (trace.type) {\r\n case TraceType.Information:\r\n console.info(trace.toString());\r\n break;\r\n case TraceType.UnexpectedError:\r\n case TraceType.Error:\r\n case TraceType.Fatal:\r\n console.error(trace.toString());\r\n break;\r\n case TraceType.ExpectedError:\r\n case TraceType.Warning:\r\n console.warn(trace.toString());\r\n break;\r\n case TraceType.Verbose:\r\n console.log(trace.toString());\r\n break;\r\n default:\r\n console.log(trace.toString());\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n export module Trace {\r\n const traceMaxCount = 1000;\r\n let traces = new Array<TraceItem>(traceMaxCount);\r\n let lastTraceIndex: number = -1;\r\n let defaultListener = new ConsoleTracer();\r\n let listeners = new Array<ITraceListener>(defaultListener);\r\n\r\n /**\r\n * Trace a warning. Please ensure that no PII is being logged.\r\n */\r\n export function warning(text: string, requestId?: string): void {\r\n debug.assertValue(text, 'text');\r\n logTraceInternal(new TraceItem(text, TraceType.Warning, requestId));\r\n }\r\n\r\n /** \r\n * Trace an error. Please ensure that no PII is being logged.\r\n */\r\n export function error(text: string, includeStackTrace?: boolean, requestId?: string): void {\r\n debug.assertValue(text, 'text');\r\n if (includeStackTrace)\r\n text = StringExtensions.format(\"{0}.\\nStack:\\n{1}\", text, getStackTrace());\r\n logTraceInternal(new TraceItem(text, TraceType.Error, requestId));\r\n }\r\n\r\n /** \r\n * Trace an information. Please ensure that no PII is being logged.\r\n */\r\n export function verbose(text: string, requestId?: string): void {\r\n debug.assertValue(text, 'text');\r\n logTraceInternal(new TraceItem(text, TraceType.Verbose, requestId));\r\n }\r\n\r\n export function addListener(listener: ITraceListener): void {\r\n debug.assertValue(listener, 'listener');\r\n listeners.push(listener);\r\n }\r\n\r\n export function removeListener(listener: ITraceListener): void {\r\n debug.assertValue(listener, 'listener');\r\n\r\n let index = listeners.indexOf(listener);\r\n if (index >= 0)\r\n listeners.splice(index, 1);\r\n }\r\n\r\n export function resetListeners(): void {\r\n listeners = new Array<ITraceListener>(defaultListener);\r\n }\r\n\r\n export function reset(): void {\r\n lastTraceIndex = -1;\r\n }\r\n\r\n export function getTraces(): Array<TraceItem> {\r\n if (lastTraceIndex < 0)\r\n return;\r\n\r\n let result = new Array<TraceItem>(lastTraceIndex+1);\r\n for (let i = 0; i <= lastTraceIndex; i++)\r\n result[i] = traces[i];\r\n\r\n return result;\r\n }\r\n\r\n /** \r\n * Note: Used for unit-test only. \r\n */\r\n export function disableDefaultListener(): void {\r\n removeListener(defaultListener);\r\n }\r\n\r\n export function enableDefaultListener(): void {\r\n addListener(defaultListener);\r\n }\r\n\r\n function logTraceInternal(trace: TraceItem): void {\r\n if ((lastTraceIndex + 1) >= traceMaxCount)\r\n reset();\r\n\r\n traces[++lastTraceIndex] = trace;\r\n\r\n for (let i = 0, len = listeners.length; i < len; i++)\r\n listeners[i].logTrace(trace);\r\n }\r\n }\r\n} ","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule jsCommon {\r\n /** \r\n * The types of possible traces within the system, this aligns to the traces available in Cloud Platform.\r\n */\r\n export enum TraceType {\r\n Information = 0,\r\n Verbose = 1,\r\n Warning = 2,\r\n Error = 3,\r\n ExpectedError = 4,\r\n UnexpectedError = 5,\r\n Fatal = 6,\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule jsCommon {\r\n /**\r\n * JavaScript files.\r\n */ \r\n const MSMapcontrol = 'https://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0&s=1&onscriptload=globalMapControlLoaded';\r\n\r\n /**\r\n * Map loading logic.\r\n */\r\n let MSMapcontrolLoaded = false;\r\n let WaitForMSMapLoad: JQueryDeferred<void> = null;\r\n\r\n const PowerViewPackage: IDependency = {\r\n javaScriptFiles: [\r\n powerbi.build + '/externals/pv/webclient.js'\r\n ],\r\n cssFiles: [\r\n powerbi.build +'/externals/pv/Styles/_all.css'\r\n ],\r\n\t\tjavaScriptFilesWithCallback: [\r\n { javascriptFile: MSMapcontrol, onLoadCallback: waitForMapControlLoaded }\r\n ]\r\n };\r\n\r\n export function ensurePowerView(action: () => void = _.noop): void {\r\n requires(PowerViewPackage, action);\r\n }\r\n\r\n const MapPackage: IDependency = {\r\n\t\tjavaScriptFilesWithCallback: [\r\n { javascriptFile: MSMapcontrol, onLoadCallback: waitForMapControlLoaded }\r\n ]\r\n };\r\n\r\n export function ensureMap(locale: string, action: () => void): void {\r\n let mapPackageWithLocale = powerbi.Prototype.inherit(MapPackage);\r\n if (!_.isEmpty(locale)) {\r\n mapPackageWithLocale.javaScriptFilesWithCallback[0].javascriptFile = MSMapcontrol.concat('&mkt=' + locale);\r\n }\r\n requires(mapPackageWithLocale, action);\r\n }\r\n\r\n\texport function mapControlLoaded(): void {\r\n\t\tMSMapcontrolLoaded = true;\r\n\t\tif (WaitForMSMapLoad) {\r\n\t\t\tWaitForMSMapLoad.resolve();\r\n WaitForMSMapLoad = undefined;\r\n\t\t}\r\n\t}\r\n\r\n\texport function waitForMapControlLoaded(): JQueryPromise<void> {\r\n\t\tlet task: JQueryDeferred<void>;\r\n\t\tif (!MSMapcontrolLoaded) {\r\n\t\t\ttask = WaitForMSMapLoad = $.Deferred<void>();\r\n\t\t} else {\r\n\t\t\ttask = $.Deferred<void>();\r\n\t\t\ttask.resolve();\r\n\t\t}\r\n\r\n\t\treturn task.promise();\r\n\t}\r\n}\r\n\r\n/* tslint:disable:no-unused-variable */\r\nlet globalMapControlLoaded = function() {\r\n\t// Map requires a function in the global namespace to callback once loaded\r\n\tjsCommon.mapControlLoaded();\r\n};\r\n/* tslint:enable:no-unused-variable */","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"typedefs/typedefs.ts\"/>\r\n/// <reference path=\"typedefs/typedefs.obj.ts\"/>\r\n\r\n/// <reference path=\"DOMConstants.ts\"/>\r\n/// <reference path=\"serviceError.ts\"/>\r\n/// <reference path=\"services/build.ts\"/>\r\n/// <reference path=\"services/geoTaggingAnalyzerService.ts\"/>\r\n/// <reference path=\"typedefs/buildConstants.ts\"/>\r\n/// <reference path=\"clientError.ts\"/>\r\n/// <reference path=\"arrayExtensions.ts\"/>\r\n/// <reference path=\"Controls/DomFactory.ts\"/>\r\n/// <reference path=\"Double.ts\"/>\r\n/// <reference path=\"color.ts\"/>\r\n/// <reference path=\"CssConstants.ts\"/>\r\n/// <reference path=\"debug.ts\"/>\r\n/// <reference path=\"Errors.ts\"/>\r\n/// <reference path=\"JQueryExtensions.ts\"/>\r\n/// <reference path=\"Lazy.ts\"/>\r\n/// <reference path=\"Prototype.ts\"/>\r\n/// <reference path=\"ScriptErrorInfo.ts\"/>\r\n/// <reference path=\"Formatting.ts\"/>\r\n/// <reference path=\"services/requires.ts\"/>\r\n/// <reference path=\"services/jqueryPromiseFactory.ts\"/>\r\n/// <reference path=\"services/localStorageService.ts\"/>\r\n/// <reference path=\"Utility/wordBreaker.ts\"/>\r\n/// <reference path=\"services/textMeasurementService.ts\"/>\r\n/// <reference path=\"Utility/ThrottleUtility.ts\"/>\r\n/// <reference path=\"Utility/TimerPromiseFactory.ts\"/>\r\n/// <reference path=\"Utility/Utility.ts\"/>\r\n/// <reference path=\"tracing/traceItem.ts\"/>\r\n/// <reference path=\"Utility/StandaloneUtility.ts\"/>\r\n/// <reference path=\"tracing/trace.ts\"/>\r\n/// <reference path=\"tracing/traceType.ts\"/>\r\n/// <reference path=\"services/dependencies.ts\"/>","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\nmodule InJs\r\n{\r\n /** \r\n * The types of possible traces within the system, this aligns to the traces available in Cloud Platform.\r\n */\r\n export enum TraceType {\r\n information = 0,\r\n verbose = 1,\r\n warning = 2,\r\n error = 3,\r\n expectedError = 4,\r\n unexpectedError = 5,\r\n fatal = 6,\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n///<reference path=\"../../Typedefs/jquery/jquery.d.ts\"/>\r\n///<reference path=\"../../Typedefs/globalize/globalize.d.ts\"/>\r\n///<reference path=\"../../Typedefs/lodash/lodash.d.ts\"/>\r\n","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../../VisualsContracts/obj/VisualsContracts.d.ts\"/>\r\n/// <reference path=\"../../VisualsCommon/obj/VisualsCommon.d.ts\"/>","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n//// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.data {\r\n\r\n /** Allows generic traversal and type discovery for a SQExpr tree. */\r\n export interface ISQExprVisitorWithArg<T, TArg> {\r\n visitEntity(expr: SQEntityExpr, arg: TArg): T;\r\n visitColumnRef(expr: SQColumnRefExpr, arg: TArg): T;\r\n visitMeasureRef(expr: SQMeasureRefExpr, arg: TArg): T;\r\n visitAggr(expr: SQAggregationExpr, arg: TArg): T;\r\n visitHierarchy(expr: SQHierarchyExpr, arg: TArg): T;\r\n visitHierarchyLevel(expr: SQHierarchyLevelExpr, arg: TArg): T;\r\n visitPropertyVariationSource(expr: SQPropertyVariationSourceExpr, arg: TArg): T;\r\n visitAnd(expr: SQAndExpr, arg: TArg): T;\r\n visitBetween(expr: SQBetweenExpr, arg: TArg): T;\r\n visitIn(expr: SQInExpr, arg: TArg): T;\r\n visitOr(expr: SQOrExpr, arg: TArg): T;\r\n visitCompare(expr: SQCompareExpr, arg: TArg): T;\r\n visitContains(expr: SQContainsExpr, arg: TArg): T;\r\n visitExists(expr: SQExistsExpr, arg: TArg): T;\r\n visitNot(expr: SQNotExpr, arg: TArg): T;\r\n visitStartsWith(expr: SQStartsWithExpr, arg: TArg): T;\r\n visitConstant(expr: SQConstantExpr, arg: TArg): T;\r\n visitDateSpan(expr: SQDateSpanExpr, arg: TArg): T;\r\n visitDateAdd(expr: SQDateAddExpr, arg: TArg): T;\r\n visitNow(expr: SQNowExpr, arg: TArg): T;\r\n visitDefaultValue(expr: SQDefaultValueExpr, arg: TArg): T;\r\n visitAnyValue(expr: SQAnyValueExpr, arg: TArg): T;\r\n }\r\n\r\n export interface ISQExprVisitor<T> extends ISQExprVisitorWithArg<T, void> {\r\n }\r\n\r\n /** Default IQueryExprVisitorWithArg implementation that others may derive from. */\r\n export class DefaultSQExprVisitorWithArg<T, TArg> implements ISQExprVisitorWithArg<T, TArg> {\r\n public visitEntity(expr: SQEntityExpr, arg: TArg): T {\r\n return this.visitDefault(expr, arg);\r\n }\r\n\r\n public visitColumnRef(expr: SQColumnRefExpr, arg: TArg): T {\r\n return this.visitDefault(expr, arg);\r\n }\r\n\r\n public visitMeasureRef(expr: SQMeasureRefExpr, arg: TArg): T {\r\n return this.visitDefault(expr, arg);\r\n }\r\n\r\n public visitAggr(expr: SQAggregationExpr, arg: TArg): T {\r\n return this.visitDefault(expr, arg);\r\n }\r\n\r\n public visitHierarchy(expr: SQHierarchyExpr, arg: TArg): T {\r\n return this.visitDefault(expr, arg);\r\n }\r\n\r\n public visitHierarchyLevel(expr: SQHierarchyLevelExpr, arg: TArg): T {\r\n return this.visitDefault(expr, arg);\r\n }\r\n\r\n public visitPropertyVariationSource(expr: SQPropertyVariationSourceExpr, arg: TArg): T {\r\n return this.visitDefault(expr, arg);\r\n }\r\n\r\n public visitBetween(expr: SQBetweenExpr, arg: TArg): T {\r\n return this.visitDefault(expr, arg);\r\n }\r\n\r\n public visitIn(expr: SQInExpr, arg: TArg): T {\r\n return this.visitDefault(expr, arg);\r\n }\r\n\r\n public visitAnd(expr: SQAndExpr, arg: TArg): T {\r\n return this.visitDefault(expr, arg);\r\n }\r\n\r\n public visitOr(expr: SQOrExpr, arg: TArg): T {\r\n return this.visitDefault(expr, arg);\r\n }\r\n\r\n public visitCompare(expr: SQCompareExpr, arg: TArg): T {\r\n return this.visitDefault(expr, arg);\r\n }\r\n\r\n public visitContains(expr: SQContainsExpr, arg: TArg): T {\r\n return this.visitDefault(expr, arg);\r\n }\r\n\r\n public visitExists(expr: SQExistsExpr, arg: TArg): T {\r\n return this.visitDefault(expr, arg);\r\n }\r\n\r\n public visitNot(expr: SQNotExpr, arg: TArg): T {\r\n return this.visitDefault(expr, arg);\r\n }\r\n\r\n public visitStartsWith(expr: SQStartsWithExpr, arg: TArg): T {\r\n return this.visitDefault(expr, arg);\r\n }\r\n\r\n public visitConstant(expr: SQConstantExpr, arg: TArg): T {\r\n return this.visitDefault(expr, arg);\r\n }\r\n\r\n public visitDateSpan(expr: SQDateSpanExpr, arg: TArg): T {\r\n return this.visitDefault(expr, arg);\r\n }\r\n\r\n public visitDateAdd(expr: SQDateAddExpr, arg: TArg): T {\r\n return this.visitDefault(expr, arg);\r\n }\r\n\r\n public visitNow(expr: SQNowExpr, arg: TArg): T {\r\n return this.visitDefault(expr, arg);\r\n }\r\n\r\n public visitDefaultValue(expr: SQDefaultValueExpr, arg: TArg): T {\r\n return this.visitDefault(expr, arg);\r\n }\r\n\r\n public visitAnyValue(expr: SQAnyValueExpr, arg: TArg): T {\r\n return this.visitDefault(expr, arg);\r\n }\r\n\r\n public visitDefault(expr: SQExpr, arg: TArg): T {\r\n return;\r\n }\r\n }\r\n\r\n /** Default ISQExprVisitor implementation that others may derive from. */\r\n export class DefaultSQExprVisitor<T> extends DefaultSQExprVisitorWithArg<T, void> implements ISQExprVisitor<T> {\r\n }\r\n\r\n /** Default ISQExprVisitor implementation that implements default traversal and that others may derive from. */\r\n export class DefaultSQExprVisitorWithTraversal implements ISQExprVisitor<void> {\r\n public visitEntity(expr: SQEntityExpr): void {\r\n this.visitDefault(expr);\r\n }\r\n\r\n public visitColumnRef(expr: SQColumnRefExpr): void {\r\n expr.source.accept(this);\r\n }\r\n\r\n public visitMeasureRef(expr: SQMeasureRefExpr): void {\r\n expr.source.accept(this);\r\n }\r\n\r\n public visitAggr(expr: SQAggregationExpr): void {\r\n expr.arg.accept(this);\r\n } \r\n\r\n public visitHierarchy(expr: SQHierarchyExpr): void {\r\n expr.arg.accept(this);\r\n }\r\n\r\n public visitHierarchyLevel(expr: SQHierarchyLevelExpr): void {\r\n expr.arg.accept(this);\r\n }\r\n\r\n public visitPropertyVariationSource(expr: SQPropertyVariationSourceExpr): void {\r\n expr.arg.accept(this);\r\n }\r\n\r\n public visitBetween(expr: SQBetweenExpr): void {\r\n expr.arg.accept(this);\r\n expr.lower.accept(this);\r\n expr.upper.accept(this);\r\n }\r\n\r\n public visitIn(expr: SQInExpr): void {\r\n let args = expr.args;\r\n for (let i = 0, len = args.length; i < len; i++)\r\n args[i].accept(this);\r\n\r\n let values = expr.values;\r\n for (let i = 0, len = values.length; i < len; i++) {\r\n let valueTuple = values[i];\r\n for (let j = 0, jlen = valueTuple.length; j < jlen; j++)\r\n valueTuple[j].accept(this);\r\n }\r\n }\r\n\r\n public visitAnd(expr: SQAndExpr): void {\r\n expr.left.accept(this);\r\n expr.right.accept(this);\r\n }\r\n\r\n public visitOr(expr: SQOrExpr): void {\r\n expr.left.accept(this);\r\n expr.right.accept(this);\r\n }\r\n\r\n public visitCompare(expr: SQCompareExpr): void {\r\n expr.left.accept(this);\r\n expr.right.accept(this);\r\n }\r\n\r\n public visitContains(expr: SQContainsExpr): void {\r\n expr.left.accept(this);\r\n expr.right.accept(this);\r\n }\r\n\r\n public visitExists(expr: SQExistsExpr): void {\r\n expr.arg.accept(this);\r\n }\r\n\r\n public visitNot(expr: SQNotExpr): void {\r\n expr.arg.accept(this);\r\n }\r\n\r\n public visitStartsWith(expr: SQStartsWithExpr): void {\r\n expr.left.accept(this);\r\n expr.right.accept(this);\r\n }\r\n\r\n public visitConstant(expr: SQConstantExpr): void {\r\n this.visitDefault(expr);\r\n }\r\n\r\n public visitDateSpan(expr: SQDateSpanExpr): void {\r\n expr.arg.accept(this);\r\n }\r\n\r\n public visitDateAdd(expr: SQDateAddExpr): void {\r\n expr.arg.accept(this);\r\n }\r\n\r\n public visitNow(expr: SQNowExpr): void {\r\n this.visitDefault(expr);\r\n }\r\n\r\n public visitDefaultValue(expr: SQDefaultValueExpr): void {\r\n this.visitDefault(expr);\r\n }\r\n\r\n public visitAnyValue(expr: SQAnyValueExpr): void {\r\n this.visitDefault(expr);\r\n }\r\n\r\n public visitDefault(expr: SQExpr): void {\r\n return;\r\n }\r\n }\r\n} ","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi {\r\n /** Defines a custom enumeration data type, and its values. */\r\n export interface IEnumType {\r\n /** Gets the members of the enumeration, limited to the validMembers, if appropriate. */\r\n members(validMembers?: EnumMemberValue[]): IEnumMember[];\r\n }\r\n\r\n export function createEnumType(members: IEnumMember[]): IEnumType {\r\n return new EnumType(members);\r\n }\r\n\r\n class EnumType implements IEnumType {\r\n private allMembers: IEnumMember[];\r\n\r\n constructor(allMembers: IEnumMember[]) {\r\n debug.assertValue(allMembers, 'allMembers');\r\n\r\n this.allMembers = allMembers;\r\n }\r\n\r\n public members(validMembers?: EnumMemberValue[]): IEnumMember[] {\r\n let allMembers = this.allMembers;\r\n if (!validMembers)\r\n return allMembers;\r\n\r\n let membersToReturn: IEnumMember[] = [];\r\n for (let member of allMembers) {\r\n if (_.contains(validMembers, member.value))\r\n membersToReturn.push(member);\r\n }\r\n return membersToReturn;\r\n }\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi {\r\n import SQExpr = powerbi.data.SQExpr;\r\n\r\n export interface FillDefinition {\r\n solid?: {\r\n color?: SQExpr;\r\n };\r\n gradient?: {\r\n startColor?: SQExpr;\r\n endColor?: SQExpr;\r\n };\r\n pattern?: {\r\n patternKind?: SQExpr;\r\n color?: SQExpr;\r\n };\r\n }\r\n\r\n export module FillSolidColorTypeDescriptor {\r\n /** Gets a value indicating whether the descriptor is nullable or not. */\r\n export function nullable(descriptor: FillSolidColorTypeDescriptor): boolean {\r\n debug.assertValue(descriptor, 'descriptor');\r\n\r\n if (descriptor === true)\r\n return false;\r\n\r\n let advancedDescriptor = <FillSolidColorAdvancedTypeDescriptor>descriptor;\r\n return !!advancedDescriptor.nullable;\r\n }\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi {\r\n import SQExpr = powerbi.data.SQExpr;\r\n\r\n export interface FillRuleTypeDescriptor {\r\n }\r\n\r\n export interface FillRuleDefinition extends FillRuleGeneric<SQExpr, SQExpr> {\r\n }\r\n\r\n export interface FillRule extends FillRuleGeneric<string, number> {\r\n }\r\n\r\n export type LinearGradient2 = LinearGradient2Generic<string, number>;\r\n export type LinearGradient3 = LinearGradient3Generic<string, number>;\r\n\r\n export type RuleColorStopDefinition = RuleColorStopGeneric<SQExpr, SQExpr>;\r\n export type RuleColorStop = RuleColorStopGeneric<string, number>;\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi {\r\n import SQExpr = powerbi.data.SQExpr;\r\n\r\n export interface ImageTypeDescriptor {\r\n }\r\n\r\n export type ImageDefinition = ImageDefinitionGeneric<SQExpr>;\r\n\r\n export module ImageDefinition {\r\n export const urlType: ValueTypeDescriptor = { misc: { imageUrl: true } };\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi {\r\n import SQExpr = powerbi.data.SQExpr;\r\n\r\n export interface ParagraphsTypeDescriptor {\r\n }\r\n\r\n export type ParagraphsDefinition = ParagraphDefinition[];\r\n export type ParagraphDefinition = ParagraphDefinitionGeneric<SQExpr>;\r\n export type TextRunDefinition = TextRunDefinitionGeneric<SQExpr>;\r\n\r\n export interface ParagraphDefinitionGeneric<TExpr> {\r\n horizontalTextAlignment?: string;\r\n textRuns: TextRunDefinitionGeneric<TExpr>[];\r\n }\r\n\r\n export interface TextRunDefinitionGeneric<TExpr> {\r\n textStyle?: TextRunStyle;\r\n url?: string;\r\n value: string | TExpr;\r\n }\r\n\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi {\r\n import SemanticFilter = powerbi.data.SemanticFilter;\r\n\r\n export type StructuralObjectDefinition =\r\n FillDefinition |\r\n FillRuleDefinition |\r\n SemanticFilter |\r\n DefaultValueDefinition |\r\n ImageDefinition |\r\n ParagraphsDefinition;\r\n\r\n export module StructuralTypeDescriptor {\r\n export function isValid(type: StructuralTypeDescriptor): boolean {\r\n debug.assertValue(type, 'type');\r\n\r\n if (type.fill ||\r\n type.fillRule ||\r\n type.filter ||\r\n type.expression ||\r\n type.image ||\r\n type.paragraphs) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n }\r\n}\r\n","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi {\r\n import EnumExtensions = jsCommon.EnumExtensions;\r\n\r\n export interface ValueTypeDescriptor {\r\n extendedType?: ExtendedType;\r\n }\r\n \r\n /** Describes a data value type, including a primitive type and extended type if any (derived from data category). */\r\n export class ValueType implements ValueTypeDescriptor {\r\n private static typeCache: { [id: string]: ValueType } = {};\r\n\r\n private underlyingType: ExtendedType;\r\n private category: string;\r\n\r\n private temporalType: TemporalType;\r\n private geographyType: GeographyType;\r\n private miscType: MiscellaneousType;\r\n private formattingType: FormattingType;\r\n private enumType: IEnumType;\r\n private scriptingType: ScriptType;\r\n\r\n /** Do not call the ValueType constructor directly. Use the ValueType.fromXXX methods. */\r\n constructor(type: ExtendedType, category?: string, enumType?: IEnumType) {\r\n debug.assert((!!type && ExtendedType[type] != null) || type === ExtendedType.Null, 'type');\r\n debug.assert(!!category || category === null, 'category');\r\n debug.assert(type !== ExtendedType.Enumeration || !!enumType, 'enumType');\r\n\r\n this.underlyingType = type;\r\n this.category = category;\r\n\r\n if (EnumExtensions.hasFlag(type, ExtendedType.Temporal)) {\r\n this.temporalType = new TemporalType(type);\r\n }\r\n if (EnumExtensions.hasFlag(type, ExtendedType.Geography)) {\r\n this.geographyType = new GeographyType(type);\r\n }\r\n if (EnumExtensions.hasFlag(type, ExtendedType.Miscellaneous)) {\r\n this.miscType = new MiscellaneousType(type);\r\n }\r\n if (EnumExtensions.hasFlag(type, ExtendedType.Formatting)) {\r\n this.formattingType = new FormattingType(type);\r\n }\r\n if (EnumExtensions.hasFlag(type, ExtendedType.Enumeration)) {\r\n this.enumType = enumType;\r\n }\r\n if (EnumExtensions.hasFlag(type, ExtendedType.Scripting)) {\r\n this.scriptingType = new ScriptType(type);\r\n }\r\n }\r\n\r\n /** Creates or retrieves a ValueType object based on the specified ValueTypeDescriptor. */\r\n public static fromDescriptor(descriptor: ValueTypeDescriptor): ValueType {\r\n descriptor = descriptor || {};\r\n\r\n // Simplified primitive types\r\n if (descriptor.text) return ValueType.fromExtendedType(ExtendedType.Text);\r\n if (descriptor.integer) return ValueType.fromExtendedType(ExtendedType.Integer);\r\n if (descriptor.numeric) return ValueType.fromExtendedType(ExtendedType.Double);\r\n if (descriptor.bool) return ValueType.fromExtendedType(ExtendedType.Boolean);\r\n if (descriptor.dateTime) return ValueType.fromExtendedType(ExtendedType.DateTime);\r\n if (descriptor.duration) return ValueType.fromExtendedType(ExtendedType.Duration);\r\n if (descriptor.binary) return ValueType.fromExtendedType(ExtendedType.Binary);\r\n if (descriptor.none) return ValueType.fromExtendedType(ExtendedType.None);\r\n\r\n // Extended types\r\n if (descriptor.scripting) {\r\n if (descriptor.scripting.source) return ValueType.fromExtendedType(ExtendedType.ScriptSource);\r\n }\r\n if (descriptor.enumeration) return ValueType.fromEnum(descriptor.enumeration);\r\n if (descriptor.temporal) {\r\n if (descriptor.temporal.year) return ValueType.fromExtendedType(ExtendedType.Year_Integer);\r\n if (descriptor.temporal.month) return ValueType.fromExtendedType(ExtendedType.Month_Integer);\r\n }\r\n if (descriptor.geography) {\r\n if (descriptor.geography.address) return ValueType.fromExtendedType(ExtendedType.Address);\r\n if (descriptor.geography.city) return ValueType.fromExtendedType(ExtendedType.City);\r\n if (descriptor.geography.continent) return ValueType.fromExtendedType(ExtendedType.Continent);\r\n if (descriptor.geography.country) return ValueType.fromExtendedType(ExtendedType.Country);\r\n if (descriptor.geography.county) return ValueType.fromExtendedType(ExtendedType.County);\r\n if (descriptor.geography.region) return ValueType.fromExtendedType(ExtendedType.Region);\r\n if (descriptor.geography.postalCode) return ValueType.fromExtendedType(ExtendedType.PostalCode_Text);\r\n if (descriptor.geography.stateOrProvince) return ValueType.fromExtendedType(ExtendedType.StateOrProvince);\r\n if (descriptor.geography.place) return ValueType.fromExtendedType(ExtendedType.Place);\r\n if (descriptor.geography.latitude) return ValueType.fromExtendedType(ExtendedType.Latitude_Double);\r\n if (descriptor.geography.longitude) return ValueType.fromExtendedType(ExtendedType.Longitude_Double);\r\n }\r\n if (descriptor.misc) {\r\n if (descriptor.misc.image) return ValueType.fromExtendedType(ExtendedType.Image);\r\n if (descriptor.misc.imageUrl) return ValueType.fromExtendedType(ExtendedType.ImageUrl);\r\n if (descriptor.misc.webUrl) return ValueType.fromExtendedType(ExtendedType.WebUrl);\r\n }\r\n if (descriptor.formatting) {\r\n if (descriptor.formatting.color) return ValueType.fromExtendedType(ExtendedType.Color);\r\n if (descriptor.formatting.formatString) return ValueType.fromExtendedType(ExtendedType.FormatString);\r\n if (descriptor.formatting.alignment) return ValueType.fromExtendedType(ExtendedType.Alignment);\r\n if (descriptor.formatting.labelDisplayUnits) return ValueType.fromExtendedType(ExtendedType.LabelDisplayUnits);\r\n if (descriptor.formatting.fontSize) return ValueType.fromExtendedType(ExtendedType.FontSize);\r\n if (descriptor.formatting.labelDensity) return ValueType.fromExtendedType(ExtendedType.LabelDensity);\r\n }\r\n if (descriptor.extendedType) {\r\n return ValueType.fromExtendedType(descriptor.extendedType);\r\n }\r\n\r\n return ValueType.fromExtendedType(ExtendedType.Null);\r\n }\r\n\r\n /** Advanced: Generally use fromDescriptor instead. Creates or retrieves a ValueType object for the specified ExtendedType. */\r\n public static fromExtendedType(extendedType: ExtendedType): ValueType {\r\n extendedType = extendedType || ExtendedType.Null;\r\n\r\n let primitiveType = getPrimitiveType(extendedType),\r\n category = getCategoryFromExtendedType(extendedType);\r\n debug.assert(\r\n primitiveType !== PrimitiveType.Null || extendedType === ExtendedType.Null,\r\n 'Cannot create ValueType for abstract extended type. Consider using fromDescriptor instead.');\r\n return ValueType.fromPrimitiveTypeAndCategory(primitiveType, category);\r\n }\r\n\r\n /** Creates or retrieves a ValueType object for the specified PrimitiveType and data category. */\r\n public static fromPrimitiveTypeAndCategory(primitiveType: PrimitiveType, category?: string): ValueType {\r\n primitiveType = primitiveType || PrimitiveType.Null;\r\n category = category || null;\r\n\r\n let id = primitiveType.toString();\r\n if (category)\r\n id += '|' + category;\r\n\r\n return ValueType.typeCache[id] || (ValueType.typeCache[id] = new ValueType(toExtendedType(primitiveType, category), category));\r\n }\r\n\r\n /** Creates a ValueType to describe the given IEnumType. */\r\n public static fromEnum(enumType: IEnumType): ValueType {\r\n debug.assertValue(enumType, 'enumType');\r\n\r\n return new ValueType(ExtendedType.Enumeration, null, enumType);\r\n }\r\n\r\n /** Determines if the instance ValueType is convertable from the 'other' ValueType. */\r\n public isCompatibleFrom(other: ValueType): boolean {\r\n debug.assertValue(other, 'other');\r\n\r\n let otherPrimitiveType = other.primitiveType;\r\n if (this === other ||\r\n this.primitiveType === otherPrimitiveType ||\r\n otherPrimitiveType === PrimitiveType.Null)\r\n return true;\r\n return false;\r\n }\r\n\r\n /** Gets the exact primitive type of this ValueType. */\r\n public get primitiveType(): PrimitiveType {\r\n return getPrimitiveType(this.underlyingType);\r\n }\r\n\r\n /** Gets the exact extended type of this ValueType. */\r\n public get extendedType(): ExtendedType {\r\n return this.underlyingType;\r\n }\r\n\r\n /** Gets the data category string (if any) for this ValueType. */\r\n public get categoryString(): string {\r\n return this.category;\r\n }\r\n\r\n // Simplified primitive types\r\n\r\n /** Indicates whether the type represents text values. */\r\n public get text(): boolean {\r\n return this.primitiveType === PrimitiveType.Text;\r\n }\r\n\r\n /** Indicates whether the type represents any numeric value. */\r\n public get numeric(): boolean {\r\n return EnumExtensions.hasFlag(this.underlyingType, ExtendedType.Numeric);\r\n }\r\n\r\n /** Indicates whether the type represents integer numeric values. */\r\n public get integer(): boolean {\r\n return this.primitiveType === PrimitiveType.Integer;\r\n }\r\n\r\n /** Indicates whether the type represents Boolean values. */\r\n public get bool(): boolean {\r\n return this.primitiveType === PrimitiveType.Boolean;\r\n }\r\n\r\n /** Indicates whether the type represents any date/time values. */\r\n public get dateTime(): boolean {\r\n return this.primitiveType === PrimitiveType.DateTime ||\r\n this.primitiveType === PrimitiveType.Date ||\r\n this.primitiveType === PrimitiveType.Time;\r\n }\r\n\r\n /** Indicates whether the type represents duration values. */\r\n public get duration(): boolean {\r\n return this.primitiveType === PrimitiveType.Duration;\r\n }\r\n\r\n /** Indicates whether the type represents binary values. */\r\n public get binary(): boolean {\r\n return this.primitiveType === PrimitiveType.Binary;\r\n }\r\n\r\n /** Indicates whether the type represents none values. */\r\n public get none(): boolean {\r\n return this.primitiveType === PrimitiveType.None;\r\n }\r\n\r\n // Extended types\r\n\r\n /** Returns an object describing temporal values represented by the type, if it represents a temporal type. */\r\n public get temporal(): TemporalType {\r\n return this.temporalType;\r\n }\r\n\r\n /** Returns an object describing geographic values represented by the type, if it represents a geographic type. */\r\n public get geography(): GeographyType {\r\n return this.geographyType;\r\n }\r\n\r\n /** Returns an object describing the specific values represented by the type, if it represents a miscellaneous extended type. */\r\n public get misc(): MiscellaneousType {\r\n return this.miscType;\r\n }\r\n\r\n /** Returns an object describing the formatting values represented by the type, if it represents a formatting type. */\r\n public get formatting(): FormattingType {\r\n return this.formattingType;\r\n }\r\n\r\n /** Returns an object describing the enum values represented by the type, if it represents an enumeration type. */\r\n public get enum(): IEnumType {\r\n return this.enumType;\r\n }\r\n\r\n public get scripting(): ScriptType {\r\n return this.scriptingType;\r\n }\r\n }\r\n\r\n export class ScriptType implements ScriptTypeDescriptor {\r\n private underlyingType: ExtendedType;\r\n\r\n constructor(type: ExtendedType) {\r\n debug.assert(!!type && EnumExtensions.hasFlag(type, ExtendedType.Scripting), 'type');\r\n this.underlyingType = type;\r\n }\r\n\r\n public get source(): boolean {\r\n return matchesExtendedTypeWithAnyPrimitive(this.underlyingType, ExtendedType.ScriptSource);\r\n }\r\n }\r\n\r\n export class TemporalType implements TemporalTypeDescriptor {\r\n private underlyingType: ExtendedType;\r\n\r\n constructor(type: ExtendedType) {\r\n debug.assert(!!type && EnumExtensions.hasFlag(type, ExtendedType.Temporal), 'type');\r\n this.underlyingType = type;\r\n }\r\n\r\n public get year(): boolean {\r\n return matchesExtendedTypeWithAnyPrimitive(this.underlyingType, ExtendedType.Year);\r\n }\r\n public get month(): boolean {\r\n return matchesExtendedTypeWithAnyPrimitive(this.underlyingType, ExtendedType.Month);\r\n }\r\n }\r\n\r\n export class GeographyType implements GeographyTypeDescriptor {\r\n private underlyingType: ExtendedType;\r\n\r\n constructor(type: ExtendedType) {\r\n debug.assert(!!type && EnumExtensions.hasFlag(type, ExtendedType.Geography), 'type');\r\n this.underlyingType = type;\r\n }\r\n\r\n public get address(): boolean {\r\n return matchesExtendedTypeWithAnyPrimitive(this.underlyingType, ExtendedType.Address);\r\n }\r\n public get city(): boolean {\r\n return matchesExtendedTypeWithAnyPrimitive(this.underlyingType, ExtendedType.City);\r\n }\r\n public get continent(): boolean {\r\n return matchesExtendedTypeWithAnyPrimitive(this.underlyingType, ExtendedType.Continent);\r\n }\r\n public get country(): boolean {\r\n return matchesExtendedTypeWithAnyPrimitive(this.underlyingType, ExtendedType.Country);\r\n }\r\n public get county(): boolean {\r\n return matchesExtendedTypeWithAnyPrimitive(this.underlyingType, ExtendedType.County);\r\n }\r\n public get region(): boolean {\r\n return matchesExtendedTypeWithAnyPrimitive(this.underlyingType, ExtendedType.Region);\r\n }\r\n public get postalCode(): boolean {\r\n return matchesExtendedTypeWithAnyPrimitive(this.underlyingType, ExtendedType.PostalCode);\r\n }\r\n public get stateOrProvince(): boolean {\r\n return matchesExtendedTypeWithAnyPrimitive(this.underlyingType, ExtendedType.StateOrProvince);\r\n }\r\n public get place(): boolean {\r\n return matchesExtendedTypeWithAnyPrimitive(this.underlyingType, ExtendedType.Place);\r\n }\r\n public get latitude(): boolean {\r\n return matchesExtendedTypeWithAnyPrimitive(this.underlyingType, ExtendedType.Latitude);\r\n }\r\n public get longitude(): boolean {\r\n return matchesExtendedTypeWithAnyPrimitive(this.underlyingType, ExtendedType.Longitude);\r\n }\r\n }\r\n\r\n export class MiscellaneousType implements MiscellaneousTypeDescriptor {\r\n private underlyingType: ExtendedType;\r\n\r\n constructor(type: ExtendedType) {\r\n debug.assert(!!type && EnumExtensions.hasFlag(type, ExtendedType.Miscellaneous), 'type');\r\n this.underlyingType = type;\r\n }\r\n\r\n public get image(): boolean {\r\n return matchesExtendedTypeWithAnyPrimitive(this.underlyingType, ExtendedType.Image);\r\n }\r\n public get imageUrl(): boolean {\r\n return matchesExtendedTypeWithAnyPrimitive(this.underlyingType, ExtendedType.ImageUrl);\r\n }\r\n public get webUrl(): boolean {\r\n return matchesExtendedTypeWithAnyPrimitive(this.underlyingType, ExtendedType.WebUrl);\r\n }\r\n }\r\n\r\n export class FormattingType implements FormattingTypeDescriptor {\r\n private underlyingType: ExtendedType;\r\n\r\n constructor(type: ExtendedType) {\r\n debug.assert(!!type && EnumExtensions.hasFlag(type, ExtendedType.Formatting), 'type');\r\n this.underlyingType = type;\r\n }\r\n\r\n public get color(): boolean {\r\n return matchesExtendedTypeWithAnyPrimitive(this.underlyingType, ExtendedType.Color);\r\n }\r\n\r\n public get formatString(): boolean {\r\n return matchesExtendedTypeWithAnyPrimitive(this.underlyingType, ExtendedType.FormatString);\r\n }\r\n\r\n public get alignment(): boolean {\r\n return matchesExtendedTypeWithAnyPrimitive(this.underlyingType, ExtendedType.Alignment);\r\n }\r\n\r\n public get labelDisplayUnits(): boolean {\r\n return matchesExtendedTypeWithAnyPrimitive(this.underlyingType, ExtendedType.LabelDisplayUnits);\r\n }\r\n\r\n public get fontSize(): boolean {\r\n return matchesExtendedTypeWithAnyPrimitive(this.underlyingType, ExtendedType.FontSize);\r\n }\r\n\r\n public get labelDensity(): boolean {\r\n return matchesExtendedTypeWithAnyPrimitive(this.underlyingType, ExtendedType.LabelDensity);\r\n }\r\n }\r\n\r\n /** Defines primitive value types. Must be consistent with types defined by server conceptual schema. */\r\n export enum PrimitiveType {\r\n Null = 0,\r\n Text = 1,\r\n Decimal = 2,\r\n Double = 3,\r\n Integer = 4,\r\n Boolean = 5,\r\n Date = 6,\r\n DateTime = 7,\r\n DateTimeZone = 8,\r\n Time = 9,\r\n Duration = 10,\r\n Binary = 11,\r\n None = 12,\r\n }\r\n\r\n /** Defines extended value types, which include primitive types and known data categories constrained to expected primitive types. */\r\n export enum ExtendedType {\r\n // Flags (1 << 8-15 range [0xFF00])\r\n // Important: Enum members must be declared before they are used in TypeScript.\r\n Numeric = 1 << 8,\r\n Temporal = 1 << 9,\r\n Geography = 1 << 10,\r\n Miscellaneous = 1 << 11,\r\n Formatting = 1 << 12,\r\n Scripting = 1 << 13, \r\n\r\n // Primitive types (0-255 range [0xFF] | flags)\r\n // The member names and base values must match those in PrimitiveType.\r\n Null = 0,\r\n Text = 1,\r\n Decimal = Numeric | 2,\r\n Double = Numeric | 3,\r\n Integer = Numeric | 4,\r\n Boolean = 5,\r\n Date = Temporal | 6,\r\n DateTime = Temporal | 7,\r\n DateTimeZone = Temporal | 8,\r\n Time = Temporal | 9,\r\n Duration = 10,\r\n Binary = 11,\r\n None = 12,\r\n\r\n // Extended types (0-32767 << 16 range [0xFFFF0000] | corresponding primitive type | flags)\r\n // Temporal\r\n Year = Temporal | (1 << 16),\r\n Year_Text = Year | Text,\r\n Year_Integer = Year | Integer,\r\n Year_Date = Year | Date,\r\n Year_DateTime = Year | DateTime,\r\n Month = Temporal | (2 << 16),\r\n Month_Text = Month | Text,\r\n Month_Integer = Month | Integer,\r\n Month_Date = Month | Date,\r\n Month_DateTime = Month | DateTime,\r\n // Geography\r\n Address = Text | Geography | (100 << 16),\r\n City = Text | Geography | (101 << 16),\r\n Continent = Text | Geography | (102 << 16),\r\n Country = Text | Geography | (103 << 16),\r\n County = Text | Geography | (104 << 16),\r\n Region = Text | Geography | (105 << 16),\r\n PostalCode = Geography | (106 << 16),\r\n PostalCode_Text = PostalCode | Text,\r\n PostalCode_Integer = PostalCode | Integer,\r\n StateOrProvince = Text | Geography | (107 << 16),\r\n Place = Text | Geography | (108 << 16),\r\n Latitude = Geography | (109 << 16),\r\n Latitude_Decimal = Latitude | Decimal,\r\n Latitude_Double = Latitude | Double,\r\n Longitude = Geography | (110 << 16),\r\n Longitude_Decimal = Longitude | Decimal,\r\n Longitude_Double = Longitude | Double,\r\n // Miscellaneous\r\n Image = Binary | Miscellaneous | (200 << 16),\r\n ImageUrl = Text | Miscellaneous | (201 << 16),\r\n WebUrl = Text | Miscellaneous | (202 << 16),\r\n // Formatting\r\n Color = Text | Formatting | (300 << 16),\r\n FormatString = Text | Formatting | (301 << 16),\r\n Alignment = Text | Formatting | (306 << 16),\r\n LabelDisplayUnits = Text | Formatting | (307 << 16),\r\n FontSize = Double | Formatting | (308 << 16),\r\n LabelDensity = Double | Formatting | (309 << 16),\r\n // Enumeration\r\n Enumeration = Text | 400 << 16,\r\n // Scripting\r\n ScriptSource = Text | Scripting | (500 << 16), \r\n // NOTE: To avoid confusion, underscores should be used only to delimit primitive type variants of an extended type\r\n // (e.g. Year_Integer or Latitude_Double above)\r\n }\r\n\r\n const PrimitiveTypeMask = 0xFF;\r\n const PrimitiveTypeWithFlagsMask = 0xFFFF;\r\n const PrimitiveTypeFlagsExcludedMask = 0xFFFF0000;\r\n\r\n function getPrimitiveType(extendedType: ExtendedType): PrimitiveType {\r\n return extendedType & PrimitiveTypeMask;\r\n }\r\n\r\n function isPrimitiveType(extendedType: ExtendedType): boolean {\r\n return (extendedType & PrimitiveTypeWithFlagsMask) === extendedType;\r\n }\r\n\r\n function getCategoryFromExtendedType(extendedType: ExtendedType): string {\r\n if (isPrimitiveType(extendedType))\r\n return null;\r\n\r\n let category = ExtendedType[extendedType];\r\n if (category) {\r\n // Check for ExtendedType declaration without a primitive type.\r\n // If exists, use it as category (e.g. Longitude rather than Longitude_Double)\r\n // Otherwise use the ExtendedType declaration with a primitive type (e.g. Address)\r\n let delimIdx = category.lastIndexOf('_');\r\n if (delimIdx > 0) {\r\n let baseCategory = category.slice(0, delimIdx);\r\n if (ExtendedType[baseCategory]) {\r\n debug.assert(\r\n (ExtendedType[baseCategory] & PrimitiveTypeFlagsExcludedMask) === (extendedType & PrimitiveTypeFlagsExcludedMask),\r\n 'Unexpected value for ExtendedType base member of ' + extendedType);\r\n category = baseCategory;\r\n }\r\n }\r\n }\r\n return category || null;\r\n }\r\n\r\n function toExtendedType(primitiveType: PrimitiveType, category?: string): ExtendedType {\r\n let primitiveString = PrimitiveType[primitiveType];\r\n let t = ExtendedType[primitiveString];\r\n if (t == null) {\r\n debug.assertFail('Unexpected primitiveType ' + primitiveType);\r\n t = ExtendedType.Null;\r\n }\r\n\r\n if (primitiveType && category) {\r\n let categoryType: ExtendedType = ExtendedType[category];\r\n if (categoryType) {\r\n let categoryPrimitiveType = getPrimitiveType(categoryType);\r\n if (categoryPrimitiveType === PrimitiveType.Null) {\r\n // Category supports multiple primitive types, check if requested primitive type is supported\r\n // (note: important to use t here rather than primitiveType as it may include primitive type flags)\r\n categoryType = t | categoryType;\r\n if (ExtendedType[categoryType]) {\r\n debug.assert(\r\n ExtendedType[categoryType] === (category + '_' + primitiveString),\r\n 'Unexpected name for ExtendedType member ' + categoryType);\r\n t = categoryType;\r\n }\r\n }\r\n else if (categoryPrimitiveType === primitiveType) {\r\n // Primitive type matches the single supported type for the category\r\n t = categoryType;\r\n }\r\n }\r\n }\r\n\r\n return t;\r\n }\r\n\r\n function matchesExtendedTypeWithAnyPrimitive(a: ExtendedType, b: ExtendedType): boolean {\r\n return (a & PrimitiveTypeFlagsExcludedMask) === (b & PrimitiveTypeFlagsExcludedMask);\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.data {\r\n export class ConceptualSchema {\r\n public entities: jsCommon.ArrayNamedItems<ConceptualEntity>;\r\n public capabilities: ConceptualCapabilities;\r\n\r\n /** Indicates whether the user can edit this ConceptualSchema. This is used to enable/disable model authoring UX. */\r\n public canEdit: boolean;\r\n\r\n public findProperty(entityName: string, propertyName: string): ConceptualProperty {\r\n let entity = this.entities.withName(entityName);\r\n if (!entity || _.isEmpty(entity.properties))\r\n return;\r\n\r\n return entity.properties.withName(propertyName);\r\n }\r\n\r\n public findHierarchy(entityName: string, name: string): ConceptualHierarchy {\r\n let entity = this.entities.withName(entityName);\r\n if (!entity || _.isEmpty(entity.hierarchies))\r\n return;\r\n\r\n return entity.hierarchies.withName(name);\r\n }\r\n\r\n public findHierarchyByVariation(\r\n variationEntityName: string,\r\n variationColumnName: string,\r\n variationName: string,\r\n hierarchyName: string): ConceptualHierarchy {\r\n\r\n let variationEntity = this.entities.withName(variationEntityName);\r\n if (!variationEntity || _.isEmpty(variationEntity.properties))\r\n return;\r\n\r\n let variationProperty = variationEntity.properties.withName(variationColumnName);\r\n if (!variationProperty)\r\n return;\r\n\r\n let variationColumn = variationProperty.column;\r\n if (!variationColumn || _.isEmpty(variationColumn.variations))\r\n return;\r\n\r\n let variation = variationColumn.variations.withName(variationName);\r\n if (variation) {\r\n let targetEntity = variation.navigationProperty ? variation.navigationProperty.targetEntity : variationEntity;\r\n if (!targetEntity || _.isEmpty(targetEntity.hierarchies))\r\n return;\r\n\r\n return targetEntity.hierarchies.withName(hierarchyName);\r\n }\r\n }\r\n\r\n /**\r\n * Returns the first property of the entity whose kpi is tied to kpiProperty\r\n */\r\n public findPropertyWithKpi(entityName: string, kpiProperty: ConceptualProperty): ConceptualProperty {\r\n debug.assertValue(kpiProperty, 'kpiProperty');\r\n\r\n let entity = this.entities.withName(entityName);\r\n if (!entity || _.isEmpty(entity.properties))\r\n return;\r\n\r\n for (let prop of entity.properties) {\r\n if (prop &&\r\n prop.measure &&\r\n prop.measure.kpi &&\r\n (prop.measure.kpi.status === kpiProperty || prop.measure.kpi.goal === kpiProperty))\r\n return prop;\r\n }\r\n\r\n return;\r\n }\r\n }\r\n\r\n export interface ConceptualCapabilities {\r\n discourageQueryAggregateUsage: boolean;\r\n normalizedFiveStateKpiRange: boolean;\r\n supportsMedian: boolean;\r\n supportsPercentile: boolean;\r\n }\r\n\r\n export interface ConceptualEntity {\r\n name: string;\r\n displayName: string;\r\n visibility?: ConceptualVisibility;\r\n calculated?: boolean;\r\n queryable?: ConceptualQueryableState;\r\n properties: jsCommon.ArrayNamedItems<ConceptualProperty>;\r\n hierarchies: jsCommon.ArrayNamedItems<ConceptualHierarchy>;\r\n navigationProperties: jsCommon.ArrayNamedItems<ConceptualNavigationProperty>;\r\n }\r\n\r\n export interface ConceptualProperty {\r\n name: string;\r\n displayName: string;\r\n type: ValueType;\r\n kind: ConceptualPropertyKind;\r\n hidden?: boolean;\r\n format?: string;\r\n column?: ConceptualColumn;\r\n queryable?: ConceptualQueryableState;\r\n measure?: ConceptualMeasure;\r\n kpi?: ConceptualProperty;\r\n }\r\n\r\n export interface ConceptualHierarchy {\r\n name: string;\r\n displayName: string;\r\n levels: jsCommon.ArrayNamedItems<ConceptualHierarchyLevel>;\r\n hidden?: boolean;\r\n }\r\n\r\n export interface ConceptualHierarchyLevel {\r\n name: string;\r\n displayName: string;\r\n column: ConceptualProperty;\r\n hidden?: boolean;\r\n }\r\n\r\n export interface ConceptualNavigationProperty {\r\n name: string;\r\n isActive: boolean;\r\n sourceColumn?: ConceptualColumn;\r\n targetEntity: ConceptualEntity;\r\n sourceMultiplicity: ConceptualMultiplicity;\r\n targetMultiplicity: ConceptualMultiplicity;\r\n }\r\n\r\n export interface ConceptualVariationSource {\r\n name: string;\r\n isDefault: boolean;\r\n navigationProperty?: ConceptualNavigationProperty;\r\n defaultHierarchy?: ConceptualHierarchy;\r\n defaultProperty?: ConceptualProperty;\r\n }\r\n\r\n export interface ConceptualColumn {\r\n defaultAggregate?: ConceptualDefaultAggregate;\r\n keys?: jsCommon.ArrayNamedItems<ConceptualProperty>;\r\n idOnEntityKey?: boolean;\r\n calculated?: boolean;\r\n defaultValue?: SQConstantExpr;\r\n variations?: jsCommon.ArrayNamedItems<ConceptualVariationSource>;\r\n }\r\n\r\n export interface ConceptualMeasure {\r\n kpi?: ConceptualPropertyKpi;\r\n }\r\n\r\n export interface ConceptualPropertyKpi {\r\n statusMetadata: DataViewKpiColumnMetadata;\r\n status?: ConceptualProperty;\r\n goal?: ConceptualProperty;\r\n }\r\n\r\n export const enum ConceptualVisibility {\r\n Visible = 0,\r\n Hidden = 1,\r\n ShowAsVariationsOnly = 2,\r\n IsPrivate = 4,\r\n }\r\n\r\n export const enum ConceptualQueryableState {\r\n Queryable = 0,\r\n Error = 1,\r\n }\r\n\r\n export const enum ConceptualMultiplicity {\r\n ZeroOrOne = 0,\r\n One = 1,\r\n Many = 2,\r\n }\r\n\r\n export const enum ConceptualPropertyKind {\r\n Column,\r\n Measure,\r\n Kpi,\r\n }\r\n\r\n export const enum ConceptualDefaultAggregate {\r\n Default,\r\n None,\r\n Sum,\r\n Count,\r\n Min,\r\n Max,\r\n Average,\r\n DistinctCount,\r\n }\r\n\r\n // TODO: Remove this (replaced by ValueType)\r\n export enum ConceptualDataCategory {\r\n None,\r\n Address,\r\n City,\r\n Company,\r\n Continent,\r\n Country,\r\n County,\r\n Date,\r\n Image,\r\n ImageUrl,\r\n Latitude,\r\n Longitude,\r\n Organization,\r\n Place,\r\n PostalCode,\r\n Product,\r\n StateOrProvince,\r\n WebUrl,\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.data {\r\n /**\r\n * Represents the versions of the data shape binding structure.\r\n * NOTE Keep this file in sync with the Sql\\InfoNav\\src\\Data\\Contracts\\DsqGeneration\\DataShapeBindingVersions.cs\r\n * file in the TFS Dev branch.\r\n */\r\n export const enum DataShapeBindingVersions {\r\n /** The initial version of data shape binding */\r\n Version0 = 0,\r\n /** Explicit subtotal support for axis groupings. */\r\n Version1 = 1,\r\n }\r\n\r\n export interface DataShapeBindingLimitTarget {\r\n Primary?: number;\r\n }\r\n\r\n export enum DataShapeBindingLimitType {\r\n Top = 0,\r\n First = 1,\r\n Last = 2,\r\n Sample = 3,\r\n Bottom = 4,\r\n }\r\n\r\n export interface DataShapeBindingLimit {\r\n Count?: number;\r\n Target: DataShapeBindingLimitTarget;\r\n Type: DataShapeBindingLimitType;\r\n }\r\n\r\n export interface DataShapeBinding {\r\n Version?: number;\r\n Primary: DataShapeBindingAxis;\r\n Secondary?: DataShapeBindingAxis;\r\n Projections?: number[];\r\n Limits?: DataShapeBindingLimit[];\r\n Highlights?: FilterDefinition[];\r\n DataReduction?: DataShapeBindingDataReduction;\r\n IncludeEmptyGroups?: boolean;\r\n }\r\n\r\n export interface DataShapeBindingDataReduction {\r\n Primary?: DataShapeBindingDataReductionAlgorithm;\r\n Secondary?: DataShapeBindingDataReductionAlgorithm;\r\n DataVolume?: number;\r\n }\r\n\r\n export interface DataShapeBindingDataReductionAlgorithm {\r\n Top?: DataShapeBindingDataReductionTopLimit;\r\n Sample?: DataShapeBindingDataReductionSampleLimit;\r\n Bottom?: DataShapeBindingDataReductionBottomLimit;\r\n Window?: DataShapeBindingDataReductionDataWindow;\r\n }\r\n\r\n export interface DataShapeBindingDataReductionTopLimit {\r\n Count?: number;\r\n }\r\n\r\n export interface DataShapeBindingDataReductionSampleLimit {\r\n Count?: number;\r\n }\r\n\r\n export interface DataShapeBindingDataReductionBottomLimit {\r\n Count?: number;\r\n }\r\n\r\n export interface DataShapeBindingDataReductionDataWindow {\r\n Count?: number;\r\n RestartTokens?: RestartToken;\r\n }\r\n\r\n export interface DataShapeBindingAxis {\r\n Groupings: DataShapeBindingAxisGrouping[];\r\n }\r\n\r\n export enum SubtotalType {\r\n None = 0,\r\n Before = 1,\r\n After = 2\r\n }\r\n\r\n export interface DataShapeBindingAxisGrouping {\r\n Projections: number[];\r\n SuppressedProjections?: number[];\r\n Subtotal?: SubtotalType;\r\n ShowItemsWithNoData?: number[];\r\n } \r\n} \r\n","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved.\r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n *\r\n * The above copyright notice and this permission notice shall be included in\r\n * all copies or substantial portions of the Software.\r\n *\r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.data {\r\n export module DataShapeBindingDataReduction {\r\n\r\n export function createFrom(reduction: ReductionAlgorithm): DataShapeBindingDataReductionAlgorithm {\r\n if (!reduction)\r\n return;\r\n\r\n var result: DataShapeBindingDataReductionAlgorithm;\r\n if (reduction.top) {\r\n result = {\r\n Top: {}\r\n };\r\n\r\n if (reduction.top.count)\r\n result.Top.Count = reduction.top.count;\r\n }\r\n\r\n if (reduction.bottom) {\r\n result = {\r\n Bottom: {}\r\n };\r\n\r\n if (reduction.bottom.count)\r\n result.Bottom.Count = reduction.bottom.count;\r\n }\r\n\r\n if (reduction.sample) {\r\n result = {\r\n Sample: {}\r\n };\r\n\r\n if (reduction.sample.count)\r\n result.Sample.Count = reduction.sample.count;\r\n }\r\n\r\n if (reduction.window) {\r\n result = {\r\n Window: {}\r\n };\r\n\r\n if (reduction.window.count)\r\n result.Window.Count = reduction.window.count;\r\n }\r\n\r\n return result;\r\n }\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.data {\r\n export interface FederatedConceptualSchemaInitOptions {\r\n schemas: { [name: string]: ConceptualSchema };\r\n links?: ConceptualSchemaLink[];\r\n }\r\n\r\n /** Represents a federated conceptual schema. */\r\n export class FederatedConceptualSchema {\r\n private schemas: { [name: string]: ConceptualSchema };\r\n private links: ConceptualSchemaLink[];\r\n\r\n constructor(options: FederatedConceptualSchemaInitOptions) {\r\n debug.assertValue(options, 'options');\r\n\r\n this.schemas = options.schemas; \r\n if (options.links)\r\n this.links = options.links;\r\n }\r\n\r\n public schema(name: string): ConceptualSchema {\r\n return this.schemas[name];\r\n }\r\n }\r\n\r\n /** Describes a semantic relationship between ConceptualSchemas. */\r\n export interface ConceptualSchemaLink {\r\n }\r\n}\r\n","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.data {\r\n\r\n export module Selector {\r\n export function filterFromSelector(selectors: Selector[], isNot?: boolean): SemanticFilter {\r\n if (_.isEmpty(selectors))\r\n return;\r\n\r\n let exprs: SQExpr[] = [];\r\n for (let i = 0, ilen = selectors.length; i < ilen; i++) {\r\n let identity = selectors[i];\r\n let data = identity.data;\r\n let exprToAdd: SQExpr = undefined;\r\n if (data && data.length) {\r\n for (let j = 0, jlen = data.length; j < jlen; j++) {\r\n exprToAdd = SQExprBuilder.and(exprToAdd, <SQExpr>(<DataViewScopeIdentity>identity.data[j]).expr);\r\n }\r\n }\r\n\r\n if (exprToAdd)\r\n exprs.push(exprToAdd);\r\n }\r\n\r\n if (!_.isEmpty(exprs))\r\n return DataViewScopeIdentity.filterFromExprs(exprs, isNot);\r\n }\r\n\r\n export function matchesData(selector: Selector, identities: DataViewScopeIdentity[]): boolean {\r\n debug.assertValue(selector, 'selector');\r\n debug.assertValue(selector.data, 'selector.data');\r\n debug.assertValue(identities, 'identities');\r\n\r\n let selectorData = selector.data;\r\n if (selectorData.length !== identities.length)\r\n return false;\r\n\r\n for (let i = 0, len = selectorData.length; i < len; i++) {\r\n let dataItem = selector.data[i];\r\n let selectorDataItem = <DataViewScopeIdentity>dataItem;\r\n if (selectorDataItem.expr) {\r\n if (!DataViewScopeIdentity.equals(selectorDataItem, identities[i]))\r\n return false;\r\n }\r\n else {\r\n if (!DataViewScopeWildcard.matches(<DataViewScopeWildcard>dataItem, identities[i]))\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n export function matchesKeys(selector: Selector, keysList: SQExpr[][]): boolean {\r\n debug.assertValue(selector, 'selector');\r\n debug.assertValue(selector.data, 'selector.data');\r\n debug.assertValue(keysList, 'keysList');\r\n\r\n let selectorData = selector.data,\r\n selectorDataLength = selectorData.length;\r\n if (selectorDataLength !== keysList.length)\r\n return false;\r\n\r\n for (let i = 0; i < selectorDataLength; i++) {\r\n let selectorDataItem = selector.data[i],\r\n selectorDataExprs: SQExpr[];\r\n\r\n if ((<DataViewScopeIdentity>selectorDataItem).expr) {\r\n selectorDataExprs = ScopeIdentityExtractor.getKeys(<SQExpr>(<DataViewScopeIdentity>selectorDataItem).expr);\r\n }\r\n else {\r\n selectorDataExprs = <SQExpr[]>(<DataViewScopeWildcard>selectorDataItem).exprs;\r\n }\r\n\r\n if (!selectorDataExprs)\r\n continue;\r\n if (!SQExprUtils.sequenceEqual(keysList[i], selectorDataExprs))\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n /** Determines whether two selectors are equal. */\r\n export function equals(x: Selector, y: Selector): boolean {\r\n // Normalize falsy to null\r\n x = x || null;\r\n y = y || null;\r\n\r\n if (x === y)\r\n return true;\r\n\r\n if (!x !== !y)\r\n return false;\r\n\r\n debug.assertValue(x, 'x');\r\n debug.assertValue(y, 'y');\r\n\r\n if (x.id !== y.id)\r\n return false;\r\n if (x.metadata !== y.metadata)\r\n return false;\r\n if (!equalsDataArray(x.data, y.data))\r\n return false;\r\n\r\n return true;\r\n }\r\n\r\n function equalsDataArray(x: DataRepetitionSelector[], y: DataRepetitionSelector[]): boolean {\r\n // Normalize falsy to null\r\n x = x || null;\r\n y = y || null;\r\n\r\n if (x === y)\r\n return true;\r\n\r\n if (!x !== !y)\r\n return false;\r\n\r\n if (x.length !== y.length)\r\n return false;\r\n\r\n for (let i = 0, len = x.length; i < len; i++) {\r\n if (!equalsData(x[i], y[i]))\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n function equalsData(x: DataRepetitionSelector, y: DataRepetitionSelector): boolean {\r\n if (!(<DataViewScopeIdentity>x).expr && (<DataViewScopeIdentity>y).expr) {\r\n // TODO: We need to also check wildcard selectors too (once that's supported/figured out).\r\n return false;\r\n }\r\n\r\n return DataViewScopeIdentity.equals(<DataViewScopeIdentity>x, <DataViewScopeIdentity>y);\r\n }\r\n\r\n export function getKey(selector: Selector): string {\r\n let toStringify: any = {};\r\n if (selector.data) {\r\n let data = [];\r\n for (let i = 0, ilen = selector.data.length; i < ilen; i++) {\r\n data.push(selector.data[i].key);\r\n }\r\n toStringify.data = data;\r\n }\r\n if (selector.metadata)\r\n toStringify.metadata = selector.metadata;\r\n if (selector.id)\r\n toStringify.id = selector.id;\r\n return JSON.stringify(toStringify);\r\n }\r\n\r\n export function containsWildcard(selector: Selector): boolean {\r\n debug.assertValue(selector, 'selector');\r\n\r\n let dataItems = selector.data;\r\n if (!dataItems)\r\n return false;\r\n\r\n for (let i = 0, len = dataItems.length; i < len; i++) {\r\n let wildcard = <DataViewScopeWildcard>dataItems[i];\r\n if (wildcard.exprs)\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.data {\r\n\r\n export interface QueryDefinition {\r\n Version?: number;\r\n From: EntitySource[];\r\n Where?: QueryFilter[];\r\n OrderBy?: QuerySortClause[];\r\n Select: QueryExpressionContainer[];\r\n }\r\n\r\n export interface FilterDefinition {\r\n Version?: number;\r\n From: EntitySource[];\r\n Where: QueryFilter[];\r\n } \r\n\r\n export enum EntitySourceType {\r\n Table = 0,\r\n Pod = 1,\r\n }\r\n\r\n export interface EntitySource {\r\n Name: string;\r\n EntitySet?: string; // TODO: Remove this when Q&A Silverlight is removed and make Entity required\r\n Entity?: string;\r\n Schema?: string;\r\n Type?: EntitySourceType;\r\n }\r\n\r\n export interface QueryFilter {\r\n Target?: QueryExpressionContainer[];\r\n Condition: QueryExpressionContainer;\r\n }\r\n\r\n export interface QuerySortClause {\r\n Expression: QueryExpressionContainer;\r\n Direction: SortDirection;\r\n }\r\n\r\n export interface QueryExpressionContainer {\r\n Name?: string;\r\n\r\n SourceRef?: QuerySourceRefExpression;\r\n Column?: QueryColumnExpression;\r\n Measure?: QueryMeasureExpression;\r\n Aggregation?: QueryAggregationExpression;\r\n Hierarchy?: QueryHierarchyExpression;\r\n HierarchyLevel?: QueryHierarchyLevelExpression;\r\n PropertyVariationSource?: QueryPropertyVariationSourceExpression;\r\n\r\n // Logical\r\n And?: QueryBinaryExpression;\r\n Between?: QueryBetweenExpression;\r\n In?: QueryInExpression;\r\n Or?: QueryBinaryExpression;\r\n Comparison?: QueryComparisonExpression;\r\n Not?: QueryNotExpression;\r\n Contains?: QueryContainsExpression;\r\n StartsWith?: QueryStartsWithExpression;\r\n Exists?: QueryExistsExpression;\r\n\r\n // Constants\r\n Boolean?: QueryBooleanExpression;\r\n DateTime?: QueryDateTimeExpression;\r\n DateTimeSecond?: QueryDateTimeSecondExpression;\r\n Date?: QueryDateTimeExpression;\r\n Decimal?: QueryDecimalExpression;\r\n Integer?: QueryIntegerExpression;\r\n Null?: QueryNullExpression;\r\n Number?: QueryNumberExpression;\r\n String?: QueryStringExpression;\r\n Literal?: QueryLiteralExpression;\r\n\r\n DateSpan?: QueryDateSpanExpression;\r\n DateAdd?: QueryDateAddExpression;\r\n Now?: QueryNowExpression;\r\n\r\n // Default Values\r\n DefaultValue?: QueryDefaultValueExpression;\r\n AnyValue?: QueryAnyValueExpression;\r\n\r\n // TODO: Still need to add the rest of the QueryExpression types.\r\n }\r\n\r\n export interface QueryPropertyExpression {\r\n Expression: QueryExpressionContainer;\r\n Property: string;\r\n }\r\n\r\n export interface QueryColumnExpression extends QueryPropertyExpression {\r\n }\r\n\r\n export interface QueryMeasureExpression extends QueryPropertyExpression {\r\n }\r\n\r\n export interface QuerySourceRefExpression {\r\n Source: string;\r\n }\r\n\r\n export interface QueryAggregationExpression {\r\n Function: QueryAggregateFunction;\r\n Expression: QueryExpressionContainer;\r\n }\r\n\r\n export interface QueryHierarchyExpression {\r\n Expression: QueryExpressionContainer;\r\n Hierarchy: string;\r\n }\r\n\r\n export interface QueryHierarchyLevelExpression {\r\n Expression: QueryExpressionContainer;\r\n Level: string;\r\n }\r\n\r\n export interface QueryPropertyVariationSourceExpression {\r\n Expression: QueryExpressionContainer;\r\n Name: string;\r\n Property: string;\r\n }\r\n\r\n export interface QueryBinaryExpression {\r\n Left: QueryExpressionContainer;\r\n Right: QueryExpressionContainer;\r\n }\r\n\r\n export interface QueryBetweenExpression {\r\n Expression: QueryExpressionContainer;\r\n LowerBound: QueryExpressionContainer;\r\n UpperBound: QueryExpressionContainer;\r\n }\r\n\r\n export interface QueryInExpression {\r\n Expressions: QueryExpressionContainer[];\r\n Values: QueryExpressionContainer[][];\r\n }\r\n\r\n export interface QueryComparisonExpression extends QueryBinaryExpression {\r\n ComparisonKind: QueryComparisonKind;\r\n }\r\n\r\n export interface QueryContainsExpression extends QueryBinaryExpression { }\r\n\r\n export interface QueryNotExpression {\r\n Expression: QueryExpressionContainer;\r\n }\r\n\r\n export interface QueryStartsWithExpression extends QueryBinaryExpression { }\r\n\r\n export interface QueryExistsExpression {\r\n Expression: QueryExpressionContainer;\r\n }\r\n\r\n export interface QueryConstantExpression<T> {\r\n Value: T;\r\n }\r\n\r\n export interface QueryLiteralExpression {\r\n Value: string;\r\n }\r\n\r\n export interface QueryBooleanExpression extends QueryConstantExpression<boolean> { }\r\n export interface QueryDateTimeExpression extends QueryConstantExpression<string> { }\r\n export interface QueryDateTimeSecondExpression extends QueryConstantExpression<string> { }\r\n export interface QueryDecimalExpression extends QueryConstantExpression<number> { }\r\n export interface QueryIntegerExpression extends QueryConstantExpression<number> { }\r\n export interface QueryNumberExpression extends QueryConstantExpression<string> { }\r\n export interface QueryNullExpression { }\r\n export interface QueryStringExpression extends QueryConstantExpression<string> { }\r\n\r\n export interface QueryDateSpanExpression {\r\n TimeUnit: TimeUnit;\r\n Expression: QueryExpressionContainer;\r\n }\r\n\r\n export interface QueryDateAddExpression {\r\n Amount: number;\r\n TimeUnit: TimeUnit;\r\n Expression: QueryExpressionContainer;\r\n }\r\n\r\n export interface QueryNowExpression { }\r\n\r\n export interface QueryDefaultValueExpression { }\r\n\r\n export interface QueryAnyValueExpression { }\r\n\r\n export enum TimeUnit {\r\n Day = 0,\r\n Week = 1,\r\n Month = 2,\r\n Year = 3,\r\n Decade = 4,\r\n Second = 5,\r\n Minute = 6,\r\n Hour = 7,\r\n }\r\n\r\n export enum QueryAggregateFunction {\r\n Sum = 0,\r\n Avg = 1,\r\n Count = 2,\r\n Min = 3,\r\n Max = 4,\r\n CountNonNull = 5,\r\n Median = 6,\r\n StandardDeviation = 7,\r\n Variance = 8,\r\n }\r\n\r\n export enum QueryComparisonKind {\r\n Equal = 0,\r\n GreaterThan = 1,\r\n GreaterThanOrEqual = 2,\r\n LessThan = 3,\r\n LessThanOrEqual = 4,\r\n }\r\n\r\n export interface SemanticQueryDataShapeCommand {\r\n Query: QueryDefinition;\r\n Binding: DataShapeBinding;\r\n }\r\n\r\n /** Only one of the members can be non-null at any one time */\r\n export interface QueryCommand {\r\n SemanticQueryDataShapeCommand?: SemanticQueryDataShapeCommand;\r\n ScriptVisualCommand?: ScriptVisualCommand;\r\n }\r\n\r\n export interface DataQuery {\r\n Commands: QueryCommand[];\r\n }\r\n\r\n /** The final (single) result of a DataQuery is cacheable.\r\n * The intermediate results coming out of each QueryCommand (a DataQuery.Commands[i]) is not cached nor returned to the client. */\r\n export interface DataQueryRequest {\r\n Query: DataQuery;\r\n\r\n /** Optional server-side cache key for the semantic query. This CacheKey is not used to the IQueryCache (client-side cache). */\r\n CacheKey?: string;\r\n }\r\n\r\n export interface ScriptVisualCommand {\r\n Script?: string;\r\n RenderingEngine?: string;\r\n ViewportWidthPx?: number;\r\n ViewportHeightPx?: number;\r\n Version?: number;\r\n ScriptInput?: ScriptInput;\r\n }\r\n\r\n /** Defines semantic data types. */\r\n export enum SemanticType {\r\n None = 0x0,\r\n Number = 0x1,\r\n Integer = Number + 0x2,\r\n DateTime = 0x4,\r\n Time = 0x08,\r\n Date = DateTime + 0x10,\r\n Month = Integer + 0x20,\r\n Year = Integer + 0x40,\r\n YearAndMonth = 0x80,\r\n MonthAndDay = 0x100,\r\n Decade = Integer + 0x200,\r\n YearAndWeek = 0x400,\r\n String = 0x800,\r\n Boolean = 0x1000,\r\n Table = 0x2000,\r\n Range = 0x4000,\r\n }\r\n\r\n export enum SelectKind {\r\n None,\r\n Group,\r\n Measure,\r\n }\r\n\r\n export interface AuxiliarySelectBinding {\r\n Value?: string;\r\n }\r\n\r\n export interface QueryMetadata {\r\n Select?: SelectMetadata[];\r\n Filters?: FilterMetadata[];\r\n }\r\n\r\n // TODO: Stop using SemanticType and ConceptualDataCategory here (may need server contract changes)\r\n export interface SelectMetadata {\r\n Restatement: string;\r\n \r\n /* SemanticType or PrimitiveType. */\r\n Type?: number; \r\n\r\n Format?: string;\r\n DataCategory?: ConceptualDataCategory;\r\n\r\n /** The select projection name. */\r\n Name?: string;\r\n\r\n /* If defined, this indicates the KPI class*/\r\n kpiStatusGraphic?: string; // old version of kpi data\r\n\r\n /* If defined, this indicates the KPI metadata*/\r\n kpi?: DataViewKpiColumnMetadata;\r\n }\r\n\r\n export interface FilterMetadata {\r\n Restatement: string;\r\n Kind?: FilterKind;\r\n }\r\n\r\n export enum FilterKind {\r\n Default,\r\n Period,\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.data {\r\n \r\n /** Represents a projection from a query result. */\r\n export interface QueryProjection {\r\n /** Name of item in the semantic query Select clause. */\r\n queryRef: string;\r\n\r\n /** Optional format string. */\r\n format?: string; // TODO: Deprecate this, and populate format string through objects instead.\r\n }\r\n\r\n /** A set of QueryProjections, grouped by visualization property, and ordered within that property. */\r\n export interface QueryProjectionsByRole {\r\n [roleName: string]: QueryProjectionCollection;\r\n }\r\n\r\n export class QueryProjectionCollection {\r\n private items: QueryProjection[];\r\n private _activeProjectionRef: string;\r\n private _showAll: boolean;\r\n\r\n public constructor(items: QueryProjection[], activeProjectionRef?: string, showAll?: boolean) {\r\n debug.assertValue(items, 'items');\r\n\r\n this.items = items;\r\n this._activeProjectionRef = activeProjectionRef;\r\n this._showAll = showAll;\r\n }\r\n\r\n /** Returns all projections in a mutable array. */\r\n public all(): QueryProjection[] {\r\n return this.items;\r\n }\r\n\r\n public get activeProjectionQueryRef(): string {\r\n return this._activeProjectionRef;\r\n }\r\n\r\n public set activeProjectionQueryRef(value: string) {\r\n let queryRefs = this.items.map(val => val.queryRef);\r\n if (!_.contains(queryRefs, value))\r\n return;\r\n this._activeProjectionRef = value;\r\n }\r\n\r\n public get showAll(): boolean {\r\n return this._showAll;\r\n }\r\n\r\n public set showAll(value: boolean) {\r\n this._showAll = value;\r\n }\r\n \r\n public clone(): QueryProjectionCollection {\r\n return new QueryProjectionCollection(_.clone(this.items), this._activeProjectionRef, this._showAll);\r\n }\r\n }\r\n\r\n export module QueryProjectionsByRole {\r\n /** Clones the QueryProjectionsByRole. */\r\n export function clone(roles: QueryProjectionsByRole): QueryProjectionsByRole {\r\n if (!roles)\r\n return roles;\r\n\r\n let clonedRoles: QueryProjectionsByRole = {};\r\n\r\n for (let roleName in roles)\r\n clonedRoles[roleName] = roles[roleName].clone();\r\n\r\n return clonedRoles;\r\n }\r\n\r\n /** Returns the QueryProjectionCollection for that role. Even returns empty collections so that 'drillable' and 'activeProjection' fields are preserved. */\r\n export function getRole(roles: QueryProjectionsByRole, name: string): QueryProjectionCollection {\r\n debug.assertAnyValue(roles, 'roles');\r\n debug.assertValue(name, 'name');\r\n\r\n if (!roles)\r\n return;\r\n\r\n return roles[name];\r\n }\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi {\r\n\r\n export interface VisualElement {\r\n DataRoles?: DataRole[];\r\n Settings?: VisualElementSettings;\r\n }\r\n\r\n /** Defines common settings for a visual element. */\r\n export interface VisualElementSettings {\r\n DisplayUnitSystemType?: DisplayUnitSystemType;\r\n }\r\n\r\n export interface DataRole {\r\n Name: string;\r\n Projection: number;\r\n isActive?: boolean;\r\n }\r\n\r\n /** The system used to determine display units used during formatting */\r\n export enum DisplayUnitSystemType {\r\n /** Default display unit system, which saves space by using units such as K, M, bn with PowerView rules for when to pick a unit. Suitable for chart axes. */\r\n Default,\r\n\r\n /** A verbose display unit system that will only respect the formatting defined in the model. Suitable for explore mode single-value cards. */\r\n Verbose,\r\n\r\n /**\r\n * A display unit system that uses units such as K, M, bn if we have at least one of those units (e.g. 0.9M is not valid as it's less than 1 million).\r\n * Suitable for dashboard tile cards\r\n */\r\n WholeUnits,\r\n\r\n /**A display unit system that also contains Auto and None units for data labels*/\r\n DataLabels,\r\n }\r\n}\r\n\r\nmodule powerbi.data.contracts {\r\n\r\n export interface DataViewSource {\r\n data: any;\r\n type?: string;\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi {\r\n\r\n export interface IColorAllocator {\r\n /** Computes the color corresponding to the provided value. */\r\n color(value: number): string;\r\n }\r\n\r\n export interface IColorAllocatorFactory {\r\n /** Creates a gradient that that transitions between two colors. */\r\n linearGradient2(options: LinearGradient2): IColorAllocator;\r\n\r\n /** Creates a gradient that that transitions between three colors. */\r\n linearGradient3(options: LinearGradient3, splitScales: boolean): IColorAllocator;\r\n }\r\n} ","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.data {\r\n export interface CompiledDataViewRoleBindMappingWithReduction extends CompiledDataViewRoleBindMapping, HasReductionAlgorithm {\r\n }\r\n\r\n export interface CompiledDataViewRoleForMappingWithReduction extends CompiledDataViewRoleForMapping, HasReductionAlgorithm {\r\n }\r\n} ","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.data {\r\n import JsonComparer = jsCommon.JsonComparer;\r\n\r\n /** Defines the values for particular objects. */\r\n export interface DataViewObjectDefinitions {\r\n [objectName: string]: DataViewObjectDefinition[];\r\n }\r\n\r\n export interface DataViewObjectDefinition {\r\n selector?: Selector;\r\n properties: DataViewObjectPropertyDefinitions;\r\n }\r\n\r\n export interface DataViewObjectPropertyDefinitions {\r\n [name: string]: DataViewObjectPropertyDefinition;\r\n }\r\n\r\n export type DataViewObjectPropertyDefinition = SQExpr | StructuralObjectDefinition;\r\n\r\n export module DataViewObjectDefinitions {\r\n\r\n /** Creates or reuses a DataViewObjectDefinition for matching the given objectName and selector within the defns. */\r\n export function ensure(\r\n defns: DataViewObjectDefinitions,\r\n objectName: string,\r\n selector: Selector): DataViewObjectDefinition {\r\n debug.assertValue(defns, 'defns');\r\n\r\n let defnsForObject = defns[objectName];\r\n if (!defnsForObject)\r\n defns[objectName] = defnsForObject = [];\r\n\r\n for (let i = 0, len = defnsForObject.length; i < len; i++) {\r\n let defn = defnsForObject[i];\r\n if (Selector.equals(defn.selector, selector))\r\n return defn;\r\n }\r\n\r\n let newDefn: DataViewObjectDefinition = {\r\n selector: selector,\r\n properties: {},\r\n };\r\n defnsForObject.push(newDefn);\r\n\r\n return newDefn;\r\n }\r\n\r\n export function deleteProperty(\r\n defns: DataViewObjectDefinitions,\r\n objectName: string,\r\n selector: Selector,\r\n propertyName: string): void {\r\n debug.assertValue(defns, 'defns');\r\n\r\n let defn = getObjectDefinition(defns, objectName, selector);\r\n if (!defn)\r\n return;\r\n\r\n DataViewObjectDefinition.deleteSingleProperty(defn, propertyName);\r\n }\r\n \r\n export function getValue(\r\n defns: DataViewObjectDefinitions,\r\n propertyId: DataViewObjectPropertyIdentifier,\r\n selector: Selector): DataViewObjectPropertyDefinition {\r\n\r\n let properties = getPropertyContainer(defns, propertyId, selector);\r\n if (!properties)\r\n return;\r\n\r\n return properties[propertyId.propertyName];\r\n }\r\n\r\n export function getPropertyContainer(\r\n defns: DataViewObjectDefinitions,\r\n propertyId: DataViewObjectPropertyIdentifier,\r\n selector: Selector): DataViewObjectPropertyDefinitions {\r\n\r\n let defn = getObjectDefinition(defns, propertyId.objectName, selector);\r\n if (!defn)\r\n return;\r\n\r\n return defn.properties;\r\n }\r\n\r\n export function getObjectDefinition(\r\n defns: DataViewObjectDefinitions,\r\n objectName: string,\r\n selector: Selector): DataViewObjectDefinition {\r\n debug.assertAnyValue(defns, 'defns');\r\n debug.assertValue(objectName, 'objectName');\r\n debug.assertAnyValue(selector, 'selector');\r\n\r\n if (!defns)\r\n return;\r\n\r\n let defnsForObject = defns[objectName];\r\n if (!defnsForObject)\r\n return;\r\n\r\n for (let i = 0, len = defnsForObject.length; i < len; i++) {\r\n let defn = defnsForObject[i];\r\n if (Selector.equals(defn.selector, selector))\r\n return defn;\r\n }\r\n }\r\n\r\n export function propertiesAreEqual(a: DataViewObjectPropertyDefinition, b: DataViewObjectPropertyDefinition): boolean {\r\n if (a instanceof SemanticFilter && b instanceof SemanticFilter) {\r\n return SemanticFilter.isSameFilter(<SemanticFilter>a, <SemanticFilter>b);\r\n }\r\n\r\n return JsonComparer.equals(a, b);\r\n }\r\n\r\n export function allPropertiesAreEqual(a: DataViewObjectPropertyDefinitions, b: DataViewObjectPropertyDefinitions): boolean {\r\n debug.assertValue(a, 'a');\r\n debug.assertValue(b, 'b');\r\n\r\n if (Object.keys(a).length !== Object.keys(b).length)\r\n return false;\r\n\r\n for (let property in a) {\r\n if (!propertiesAreEqual(a[property], b[property]))\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n export function encodePropertyValue(value: DataViewPropertyValue, valueTypeDescriptor: ValueTypeDescriptor): DataViewObjectPropertyDefinition {\r\n debug.assertAnyValue(value, 'value');\r\n debug.assertValue(valueTypeDescriptor, 'valueTypeDescriptor');\r\n\r\n if (valueTypeDescriptor.bool) {\r\n if (typeof (value) !== 'boolean')\r\n value = false; // This is fallback, which doesn't really belong here.\r\n\r\n return SQExprBuilder.boolean(<boolean>value);\r\n }\r\n else if (valueTypeDescriptor.text || (valueTypeDescriptor.scripting && valueTypeDescriptor.scripting.source)) {\r\n return SQExprBuilder.text(<string>value);\r\n }\r\n else if (valueTypeDescriptor.numeric) {\r\n if ($.isNumeric(value))\r\n return SQExprBuilder.double(+value);\r\n }\r\n else if ((<StructuralTypeDescriptor>valueTypeDescriptor).fill) {\r\n if (value) {\r\n return {\r\n solid: { color: SQExprBuilder.text(<string>value) }\r\n };\r\n }\r\n }\r\n else if (valueTypeDescriptor.formatting) {\r\n if (valueTypeDescriptor.formatting.labelDisplayUnits) {\r\n return SQExprBuilder.double(+value);\r\n }\r\n else {\r\n return SQExprBuilder.text(<string>value);\r\n }\r\n }\r\n else if (valueTypeDescriptor.enumeration) {\r\n if ($.isNumeric(value))\r\n return SQExprBuilder.double(+value);\r\n else\r\n return SQExprBuilder.text(<string>value);\r\n }\r\n else if (valueTypeDescriptor.misc) {\r\n if (value) {\r\n value = SQExprBuilder.text(<string>value);\r\n } else {\r\n value = null;\r\n }\r\n }\r\n else if ((<StructuralTypeDescriptor>valueTypeDescriptor).image) {\r\n if (value) {\r\n let imageValue = <ImageValue>value;\r\n let imageDefinition: ImageDefinition = {\r\n name: SQExprBuilder.text(imageValue.name),\r\n url: SQExprBuilder.text(imageValue.url),\r\n };\r\n\r\n if (imageValue.scaling)\r\n imageDefinition.scaling = SQExprBuilder.text(imageValue.scaling);\r\n\r\n return imageDefinition;\r\n }\r\n }\r\n\r\n return value;\r\n }\r\n\r\n export function clone(original: DataViewObjectDefinitions): DataViewObjectDefinitions {\r\n debug.assertValue(original, 'original');\r\n\r\n let cloned: DataViewObjectDefinitions = {};\r\n\r\n for (let objectName in original) {\r\n let originalDefns = original[objectName];\r\n if (_.isEmpty(originalDefns))\r\n continue;\r\n\r\n let clonedDefns: DataViewObjectDefinition[] = [];\r\n for (let originalDefn of originalDefns) {\r\n clonedDefns.push({\r\n properties: cloneProperties(originalDefn.properties),\r\n selector: originalDefn.selector,\r\n });\r\n }\r\n cloned[objectName] = clonedDefns;\r\n }\r\n\r\n return cloned;\r\n }\r\n\r\n function cloneProperties(original: DataViewObjectPropertyDefinitions): DataViewObjectPropertyDefinitions {\r\n debug.assertValue(original, 'original');\r\n\r\n // NOTE: properties are considered atomic, so a shallow clone is appropriate here.\r\n return _.clone(original);\r\n }\r\n }\r\n\r\n export module DataViewObjectDefinition {\r\n\r\n export function deleteSingleProperty(\r\n defn: DataViewObjectDefinition,\r\n propertyName: string): void {\r\n\r\n //note: We decided that delete is acceptable here and that we don't need optimization here\r\n delete defn.properties[propertyName];\r\n }\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.data {\r\n\r\n export module DataViewObjectDescriptors {\r\n /** Attempts to find the format string property. This can be useful for upgrade and conversion. */\r\n export function findFormatString(descriptors: DataViewObjectDescriptors): DataViewObjectPropertyIdentifier {\r\n return findProperty(\r\n descriptors,\r\n (propDesc: DataViewObjectPropertyDescriptor) => {\r\n let formattingTypeDesc = ValueType.fromDescriptor(propDesc.type).formatting;\r\n return formattingTypeDesc && formattingTypeDesc.formatString;\r\n });\r\n }\r\n\r\n /** Attempts to find the filter property. This can be useful for propagating filters from one visual to others. */\r\n export function findFilterOutput(descriptors: DataViewObjectDescriptors): DataViewObjectPropertyIdentifier {\r\n return findProperty(\r\n descriptors,\r\n (propDesc: DataViewObjectPropertyDescriptor) => {\r\n let propType: StructuralTypeDescriptor = propDesc.type;\r\n return propType && !!propType.filter;\r\n });\r\n }\r\n\r\n /** Attempts to find the default value property. This can be useful for propagating schema default value. */\r\n export function findDefaultValue(descriptors: DataViewObjectDescriptors): DataViewObjectPropertyIdentifier {\r\n return findProperty(\r\n descriptors,\r\n (propDesc: DataViewObjectPropertyDescriptor) => {\r\n let propType: StructuralTypeDescriptor = propDesc.type;\r\n return propType && !!propType.expression && propType.expression.defaultValue;\r\n });\r\n }\r\n\r\n function findProperty(descriptors: DataViewObjectDescriptors, propPredicate: (propDesc: DataViewObjectPropertyDescriptor) => boolean): DataViewObjectPropertyIdentifier {\r\n debug.assertAnyValue(descriptors, 'descriptors');\r\n debug.assertAnyValue(propPredicate, 'propPredicate');\r\n\r\n if (!descriptors)\r\n return;\r\n\r\n for (let objectName in descriptors) {\r\n let objPropDescs = descriptors[objectName].properties;\r\n\r\n for (let propertyName in objPropDescs) {\r\n if (propPredicate(objPropDescs[propertyName])) {\r\n return {\r\n objectName: objectName,\r\n propertyName: propertyName,\r\n };\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","/*\r\n* Power BI Visualizations\r\n*\r\n* Copyright (c) Microsoft Corporation\r\n* All rights reserved. \r\n * MIT License\r\n*\r\n* Permission is hereby granted, free of charge, to any person obtaining a copy\r\n* of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n* in the Software without restriction, including without limitation the rights\r\n* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n* copies of the Software, and to permit persons to whom the Software is\r\n* furnished to do so, subject to the following conditions:\r\n* \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n* \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n* THE SOFTWARE.\r\n*/\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.data {\r\n export interface DataViewObjectDefinitionsByRepetition {\r\n metadataOnce?: DataViewObjectDefinitionsForSelector;\r\n userDefined?: DataViewObjectDefinitionsForSelector[];\r\n metadata?: DataViewObjectDefinitionsForSelector[];\r\n data: DataViewObjectDefinitionsForSelectorWithRule[];\r\n }\r\n\r\n export interface DataViewObjectDefinitionsForSelector {\r\n selector?: Selector;\r\n objects: DataViewNamedObjectDefinition[];\r\n }\r\n\r\n export interface DataViewObjectDefinitionsForSelectorWithRule extends DataViewObjectDefinitionsForSelector {\r\n rules?: RuleEvaluation[];\r\n }\r\n\r\n export interface DataViewNamedObjectDefinition {\r\n name: string;\r\n properties: DataViewObjectPropertyDefinitions;\r\n }\r\n\r\n export module DataViewObjectEvaluationUtils {\r\n export function evaluateDataViewObjects(\r\n evalContext: IEvalContext,\r\n objectDescriptors: DataViewObjectDescriptors,\r\n objectDefns: DataViewNamedObjectDefinition[]): DataViewObjects {\r\n debug.assertValue(evalContext, 'evalContext');\r\n debug.assertValue(objectDescriptors, 'objectDescriptors');\r\n debug.assertValue(objectDefns, 'objectDefns');\r\n\r\n let objects: DataViewObjects;\r\n\r\n for (let j = 0, jlen = objectDefns.length; j < jlen; j++) {\r\n let objectDefinition = objectDefns[j],\r\n objectName = objectDefinition.name;\r\n\r\n let evaluatedObject: DataViewObject = DataViewObjectEvaluator.run(\r\n evalContext,\r\n objectDescriptors[objectName],\r\n objectDefinition.properties);\r\n\r\n if (!evaluatedObject)\r\n continue;\r\n\r\n if (!objects)\r\n objects = {};\r\n\r\n // NOTE: this currently has last-object-wins semantics.\r\n objects[objectName] = evaluatedObject;\r\n }\r\n\r\n return objects;\r\n }\r\n\r\n export function groupObjectsBySelector(objectDefinitions: DataViewObjectDefinitions): DataViewObjectDefinitionsByRepetition {\r\n debug.assertAnyValue(objectDefinitions, 'objectDefinitions');\r\n\r\n let grouped: DataViewObjectDefinitionsByRepetition = {\r\n data: [],\r\n };\r\n\r\n if (objectDefinitions) {\r\n for (let objectName in objectDefinitions) {\r\n let objectDefnList = objectDefinitions[objectName];\r\n\r\n for (let i = 0, len = objectDefnList.length; i < len; i++) {\r\n let objectDefn = objectDefnList[i];\r\n\r\n ensureDefinitionListForSelector(grouped, objectDefn.selector).objects.push({\r\n name: objectName,\r\n properties: objectDefn.properties,\r\n });\r\n }\r\n }\r\n }\r\n\r\n return grouped;\r\n }\r\n\r\n function ensureDefinitionListForSelector(grouped: DataViewObjectDefinitionsByRepetition, selector: Selector): DataViewObjectDefinitionsForSelector {\r\n debug.assertValue(grouped, 'grouped');\r\n debug.assertAnyValue(selector, 'selector');\r\n\r\n if (!selector) {\r\n if (!grouped.metadataOnce)\r\n grouped.metadataOnce = { objects: [] };\r\n return grouped.metadataOnce;\r\n }\r\n\r\n let groupedObjects: DataViewObjectDefinitionsForSelector[];\r\n if (selector.data) {\r\n groupedObjects = grouped.data;\r\n }\r\n else if (selector.metadata) {\r\n if (!grouped.metadata)\r\n grouped.metadata = [];\r\n groupedObjects = grouped.metadata;\r\n }\r\n else if (selector.id) {\r\n if (!grouped.userDefined)\r\n grouped.userDefined = [];\r\n groupedObjects = grouped.userDefined;\r\n }\r\n\r\n debug.assert(!!groupedObjects, 'GroupedObjects is not defined. Indicates malformed selector.');\r\n\r\n for (let item of groupedObjects) {\r\n if (Selector.equals(selector, item.selector))\r\n return item;\r\n }\r\n\r\n let item: DataViewObjectDefinitionsForSelector = {\r\n selector: selector,\r\n objects: [],\r\n };\r\n groupedObjects.push(item);\r\n\r\n return item;\r\n }\r\n\r\n export function addImplicitObjects(\r\n objectsForAllSelectors: DataViewObjectDefinitionsByRepetition,\r\n objectDescriptors: DataViewObjectDescriptors,\r\n columns: DataViewMetadataColumn[],\r\n selectTransforms: DataViewSelectTransform[]): void {\r\n debug.assertValue(objectsForAllSelectors, 'objectsForAllSelectors');\r\n debug.assertValue(objectDescriptors, 'objectDescriptors');\r\n debug.assertValue(columns, 'columns');\r\n debug.assertAnyValue(selectTransforms, 'selectTransforms');\r\n\r\n if (selectTransforms) {\r\n addDefaultFormatString(objectsForAllSelectors, objectDescriptors, columns, selectTransforms);\r\n addDefaultValue(objectsForAllSelectors, objectDescriptors, columns, selectTransforms);\r\n }\r\n }\r\n\r\n function addDefaultFormatString(\r\n objectsForAllSelectors: DataViewObjectDefinitionsByRepetition,\r\n objectDescriptors: DataViewObjectDescriptors,\r\n columns: DataViewMetadataColumn[],\r\n selectTransforms: DataViewSelectTransform[]): void {\r\n debug.assertValue(objectsForAllSelectors, 'objectsForAllSelectors');\r\n debug.assertValue(objectDescriptors, 'objectDescriptors');\r\n debug.assertValue(columns, 'columns');\r\n debug.assertValue(selectTransforms, 'selectTransforms');\r\n\r\n let formatStringProp = DataViewObjectDescriptors.findFormatString(objectDescriptors);\r\n if (!formatStringProp)\r\n return;\r\n\r\n for (let selectIdx = 0, selectLen = selectTransforms.length; selectIdx < selectLen; selectIdx++) {\r\n let selectTransform = selectTransforms[selectIdx];\r\n if (!selectTransform)\r\n continue;\r\n debug.assertValue(selectTransform.queryName, 'selectTransform.queryName');\r\n\r\n applyFormatString(\r\n objectsForAllSelectors,\r\n formatStringProp,\r\n selectTransform.queryName,\r\n selectTransform.format || getColumnFormatForIndex(columns, selectIdx));\r\n }\r\n }\r\n\r\n /** Registers properties for default value, if the properties are not explicitly provided. */\r\n function addDefaultValue (\r\n objectsForAllSelectors: DataViewObjectDefinitionsByRepetition,\r\n objectDescriptors: DataViewObjectDescriptors,\r\n columns: DataViewMetadataColumn[],\r\n selectTransforms: DataViewSelectTransform[]): void {\r\n debug.assertValue(objectsForAllSelectors, 'objectsForAllSelectors');\r\n debug.assertValue(objectDescriptors, 'objectDescriptors');\r\n debug.assertValue(columns, 'columns');\r\n debug.assertValue(selectTransforms, 'selectTransforms');\r\n\r\n let defaultValueProp = DataViewObjectDescriptors.findDefaultValue(objectDescriptors);\r\n if (!defaultValueProp)\r\n return;\r\n\r\n for (let selectTransform of selectTransforms) {\r\n if (!selectTransform)\r\n continue;\r\n debug.assertValue(selectTransform.queryName, 'selectTransform.queryName');\r\n\r\n applyDefaultValue(\r\n objectsForAllSelectors,\r\n defaultValueProp,\r\n selectTransform.queryName,\r\n selectTransform.defaultValue);\r\n }\r\n }\r\n\r\n function getColumnFormatForIndex(columns: DataViewMetadataColumn[], selectIdx: number): string {\r\n for (let columnIdx = 0, columnLen = columns.length; columnIdx < columnLen; columnIdx++) {\r\n let column = columns[columnIdx];\r\n if (!column || column.index !== selectIdx)\r\n continue;\r\n\r\n return column.format;\r\n }\r\n }\r\n\r\n function applyFormatString(\r\n objectsForAllSelectors: DataViewObjectDefinitionsByRepetition,\r\n formatStringProp: DataViewObjectPropertyIdentifier,\r\n queryName: string,\r\n formatStringValue: string): void {\r\n if (!formatStringValue)\r\n return;\r\n\r\n // There is a format string specified -- apply it as an object property, if there is not already one specified.\r\n applyMetadataProperty(\r\n objectsForAllSelectors,\r\n formatStringProp,\r\n { metadata: queryName },\r\n SQExprBuilder.text(formatStringValue));\r\n }\r\n\r\n function applyDefaultValue(\r\n objectsForAllSelectors: DataViewObjectDefinitionsByRepetition,\r\n defaultValueProp: DataViewObjectPropertyIdentifier,\r\n queryName: string,\r\n defaultValue: DefaultValueDefinition): void {\r\n if (!defaultValue)\r\n return;\r\n\r\n // There is a default value specified -- apply it as an object property, if there is not already one specified.\r\n applyMetadataProperty(\r\n objectsForAllSelectors,\r\n defaultValueProp,\r\n { metadata: queryName },\r\n defaultValue);\r\n }\r\n\r\n function applyMetadataProperty(\r\n objectsForAllSelectors: DataViewObjectDefinitionsByRepetition,\r\n propertyId: DataViewObjectPropertyIdentifier,\r\n selector: Selector,\r\n value: DataViewObjectPropertyDefinition): void {\r\n\r\n let objectDefns: DataViewObjectDefinitionsForSelector[];\r\n if (selector) {\r\n let metadataObjects = objectsForAllSelectors.metadata;\r\n if (!metadataObjects)\r\n metadataObjects = objectsForAllSelectors.metadata = [];\r\n objectDefns = metadataObjects;\r\n }\r\n else {\r\n let metadataOnce = objectsForAllSelectors.metadataOnce;\r\n if (!metadataOnce)\r\n metadataOnce = objectsForAllSelectors.metadataOnce = { selector: selector, objects: [] };\r\n objectDefns = [metadataOnce];\r\n }\r\n\r\n let targetMetadataObject = findWithMatchingSelector(objectDefns, selector);\r\n let targetObjectDefn: DataViewNamedObjectDefinition;\r\n if (targetMetadataObject) {\r\n let targetObjectDefns = targetMetadataObject.objects;\r\n targetObjectDefn = findExistingObject(targetObjectDefns, propertyId.objectName);\r\n if (targetObjectDefn) {\r\n if (targetObjectDefn.properties[propertyId.propertyName])\r\n return;\r\n }\r\n else {\r\n targetObjectDefn = {\r\n name: propertyId.objectName,\r\n properties: {},\r\n };\r\n targetObjectDefns.push(targetObjectDefn);\r\n }\r\n }\r\n else {\r\n targetObjectDefn = {\r\n name: propertyId.objectName,\r\n properties: {}\r\n };\r\n\r\n objectDefns.push({\r\n selector: selector,\r\n objects: [targetObjectDefn],\r\n });\r\n }\r\n\r\n targetObjectDefn.properties[propertyId.propertyName] = value;\r\n }\r\n\r\n function findWithMatchingSelector(objects: DataViewObjectDefinitionsForSelector[], selector: Selector): DataViewObjectDefinitionsForSelector {\r\n debug.assertValue(objects, 'objects');\r\n debug.assertAnyValue(selector, 'selector');\r\n\r\n for (let i = 0, len = objects.length; i < len; i++) {\r\n let object = objects[i];\r\n if (Selector.equals(object.selector, selector))\r\n return object;\r\n }\r\n }\r\n\r\n function findExistingObject(objectDefns: DataViewNamedObjectDefinition[], objectName: string): DataViewNamedObjectDefinition {\r\n debug.assertValue(objectDefns, 'objectDefns');\r\n debug.assertValue(objectName, 'objectName');\r\n\r\n for (let i = 0, len = objectDefns.length; i < len; i++) {\r\n let objectDefn = objectDefns[i];\r\n\r\n if (objectDefn.name === objectName)\r\n return objectDefn;\r\n }\r\n }\r\n }\r\n}\r\n","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n \r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.data {\r\n /** Responsible for evaluating object property expressions to be applied at various scopes in a DataView. */\r\n export module DataViewObjectEvaluator {\r\n const colorValueType: ValueType = ValueType.fromDescriptor({ formatting: { color: true } });\r\n const numericType: ValueType = ValueType.fromDescriptor({ numeric: true });\r\n const textType: ValueType = ValueType.fromDescriptor({ text: true });\r\n\r\n export function run(\r\n evalContext: IEvalContext,\r\n objectDescriptor: DataViewObjectDescriptor,\r\n propertyDefinitions: DataViewObjectPropertyDefinitions): DataViewObject {\r\n debug.assertValue(evalContext, 'evalContext');\r\n debug.assertAnyValue(objectDescriptor, 'objectDescriptor');\r\n debug.assertValue(propertyDefinitions, 'propertyDefinitions');\r\n\r\n if (!objectDescriptor)\r\n return;\r\n\r\n let object: DataViewObject,\r\n propertyDescriptors = objectDescriptor.properties;\r\n for (let propertyName in propertyDefinitions) {\r\n let propertyDefinition = propertyDefinitions[propertyName],\r\n propertyDescriptor = propertyDescriptors[propertyName];\r\n\r\n if (!propertyDescriptor)\r\n continue;\r\n\r\n let propertyValue = evaluateProperty(evalContext, propertyDescriptor, propertyDefinition);\r\n if (propertyValue === undefined)\r\n continue;\r\n\r\n if (!object)\r\n object = {};\r\n object[propertyName] = propertyValue;\r\n }\r\n\r\n return object;\r\n }\r\n\r\n /** Note: Exported for testability */\r\n export function evaluateProperty(\r\n evalContext: IEvalContext,\r\n propertyDescriptor: DataViewObjectPropertyDescriptor,\r\n propertyDefinition: DataViewObjectPropertyDefinition): any {\r\n debug.assertValue(evalContext, 'evalContext');\r\n debug.assertValue(propertyDescriptor, 'propertyDescriptor');\r\n debug.assertValue(propertyDefinition, 'propertyDefinition');\r\n\r\n let structuralType = <StructuralTypeDescriptor>propertyDescriptor.type;\r\n if (structuralType && structuralType.expression)\r\n return propertyDefinition;\r\n\r\n let value = evaluateValue(evalContext, <any>propertyDefinition, ValueType.fromDescriptor(propertyDescriptor.type));\r\n if (value !== undefined || (propertyDefinition instanceof RuleEvaluation))\r\n return value;\r\n\r\n return evaluateFill(evalContext, <FillDefinition>propertyDefinition, structuralType)\r\n || evaluateFillRule(evalContext, <FillRuleDefinition>propertyDefinition, structuralType)\r\n || evaluateImage(evalContext, <ImageDefinition>propertyDefinition, structuralType)\r\n || evaluateParagraphs(evalContext, <ParagraphsDefinition>propertyDefinition, structuralType)\r\n || propertyDefinition;\r\n }\r\n\r\n function evaluateFill(evalContext: IEvalContext, fillDefn: FillDefinition, type: StructuralTypeDescriptor): Fill {\r\n let fillType = type.fill;\r\n if (!fillType)\r\n return;\r\n\r\n if (fillType && fillType.solid && fillType.solid.color && fillDefn.solid) {\r\n return {\r\n solid: {\r\n color: evaluateValue(evalContext, fillDefn.solid.color, ValueType.fromExtendedType(ExtendedType.Color)),\r\n }\r\n };\r\n }\r\n }\r\n\r\n function evaluateFillRule(evalContext: IEvalContext, fillRuleDefn: FillRuleDefinition, type: StructuralTypeDescriptor): FillRule {\r\n if (!type.fillRule)\r\n return;\r\n\r\n if (fillRuleDefn.linearGradient2) {\r\n let linearGradient2 = fillRuleDefn.linearGradient2;\r\n return {\r\n linearGradient2: {\r\n min: evaluateColorStop(evalContext, linearGradient2.min),\r\n max: evaluateColorStop(evalContext, linearGradient2.max),\r\n }\r\n };\r\n }\r\n\r\n if (fillRuleDefn.linearGradient3) {\r\n let linearGradient3 = fillRuleDefn.linearGradient3;\r\n return {\r\n linearGradient3: {\r\n min: evaluateColorStop(evalContext, linearGradient3.min),\r\n mid: evaluateColorStop(evalContext, linearGradient3.mid),\r\n max: evaluateColorStop(evalContext, linearGradient3.max),\r\n }\r\n };\r\n }\r\n }\r\n\r\n function evaluateColorStop(evalContext: IEvalContext, colorStop: RuleColorStopDefinition): RuleColorStop {\r\n debug.assertValue(evalContext, 'evalContext');\r\n debug.assertValue(colorStop, 'colorStop');\r\n\r\n let step: RuleColorStop = {\r\n color: evaluateValue(evalContext, colorStop.color, colorValueType),\r\n };\r\n\r\n let value = evaluateValue(evalContext, colorStop.value, numericType);\r\n if (value != null)\r\n step.value = value;\r\n\r\n return step;\r\n }\r\n\r\n function evaluateImage(evalContext: IEvalContext, definition: ImageDefinition, type: StructuralTypeDescriptor): ImageValue {\r\n debug.assertValue(evalContext, 'evalContext');\r\n debug.assertAnyValue(definition, 'definition');\r\n debug.assertValue(type, 'type');\r\n\r\n if (!type.image || !definition)\r\n return;\r\n\r\n let value: ImageValue = {\r\n name: evaluateValue(evalContext, definition.name, textType),\r\n url: evaluateValue(evalContext, definition.url, ValueType.fromDescriptor(ImageDefinition.urlType)),\r\n };\r\n\r\n if (definition.scaling)\r\n value.scaling = evaluateValue(evalContext, definition.scaling, textType);\r\n\r\n return value;\r\n }\r\n\r\n function evaluateParagraphs(evalContext: IEvalContext, definition: ParagraphsDefinition, type: StructuralTypeDescriptor): Paragraphs {\r\n debug.assertValue(evalContext, 'evalContext');\r\n debug.assertAnyValue(definition, 'definition');\r\n debug.assertValue(type, 'type');\r\n\r\n if (!type.paragraphs || !definition)\r\n return;\r\n\r\n return evaluateArrayCopyOnChange(evalContext, definition, evaluateParagraph);\r\n }\r\n\r\n function evaluateParagraph(evalContext: IEvalContext, definition: ParagraphDefinition): Paragraph {\r\n debug.assertValue(evalContext, 'evalContext');\r\n debug.assertValue(definition, 'definition');\r\n\r\n let evaluated: Paragraph;\r\n\r\n let definitionTextRuns = definition.textRuns;\r\n let evaluatedTextRuns: TextRun[] = evaluateArrayCopyOnChange(evalContext, definitionTextRuns, evaluateTextRun);\r\n if (definitionTextRuns !== evaluatedTextRuns) {\r\n evaluated = _.clone(<any>definition);\r\n evaluated.textRuns = evaluatedTextRuns;\r\n }\r\n\r\n return evaluated || <Paragraph>definition;\r\n }\r\n\r\n function evaluateTextRun(evalContext: IEvalContext, definition: TextRunDefinition): TextRun {\r\n debug.assertValue(evalContext, 'evalContext');\r\n debug.assertValue(definition, 'definition');\r\n\r\n let evaluated: TextRun;\r\n\r\n let definitionValue = definition.value;\r\n let evaluatedValue = evaluateValue(evalContext, <any> definitionValue, textType);\r\n if (evaluatedValue !== undefined) {\r\n evaluated = _.clone(<any>definition);\r\n evaluated.value = evaluatedValue;\r\n }\r\n\r\n return evaluated || <TextRun>definition;\r\n }\r\n\r\n /**\r\n * Evaluates an array, and lazily copies on write whenever the evaluator function returns something\r\n * other than the input to it.\r\n */\r\n function evaluateArrayCopyOnChange<TDefinition, TEvaluated>(\r\n evalContext: IEvalContext,\r\n definitions: TDefinition[],\r\n evaluator: (ctx: IEvalContext, defn: TDefinition) => TEvaluated): TEvaluated[] {\r\n debug.assertValue(evalContext, 'evalContext');\r\n debug.assertValue(definitions, 'definitions');\r\n debug.assertValue(evaluator, 'evaluator');\r\n\r\n let evaluatedValues: TEvaluated[];\r\n\r\n for (let i = 0, len = definitions.length; i < len; i++) {\r\n let definition = definitions[i];\r\n let evaluated: TEvaluated = evaluator(evalContext, definition);\r\n\r\n // NOTE: the any casts here are necessary due to the compiler not knowing the relationship\r\n // between TEvaluated & TDefinition\r\n if (!evaluatedValues && <any>definition !== evaluated) {\r\n evaluatedValues = _.take(<TEvaluated[]><any>definitions, i);\r\n }\r\n\r\n if (evaluatedValues) {\r\n evaluatedValues.push(evaluated);\r\n }\r\n }\r\n\r\n return evaluatedValues || <TEvaluated[]><any>definitions;\r\n }\r\n\r\n function evaluateValue(evalContext: IEvalContext, definition: SQExpr | RuleEvaluation, valueType: ValueType): any {\r\n if (definition instanceof SQExpr)\r\n return ExpressionEvaluator.evaluate(<SQExpr>definition, evalContext);\r\n\r\n if (definition instanceof RuleEvaluation)\r\n return (<RuleEvaluation>definition).evaluate(evalContext);\r\n }\r\n\r\n /** Responsible for evaluating SQExprs into values. */\r\n class ExpressionEvaluator extends DefaultSQExprVisitorWithArg<PrimitiveValue, IEvalContext> {\r\n private static instance: ExpressionEvaluator = new ExpressionEvaluator();\r\n\r\n public static evaluate(expr: SQExpr, evalContext: IEvalContext): PrimitiveValue {\r\n if (expr == null)\r\n return;\r\n\r\n return expr.accept(ExpressionEvaluator.instance, evalContext);\r\n }\r\n\r\n public visitConstant(expr: SQConstantExpr, evalContext: IEvalContext): PrimitiveValue {\r\n return expr.value;\r\n }\r\n\r\n public visitMeasureRef(expr: SQMeasureRefExpr, evalContext: IEvalContext): PrimitiveValue {\r\n return evalContext.getExprValue(expr);\r\n }\r\n\r\n public visitAggr(expr: SQAggregationExpr, evalContext: IEvalContext): PrimitiveValue {\r\n return evalContext.getExprValue(expr);\r\n }\r\n }\r\n }\r\n} \r\n","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi {\r\n\r\n export module DataViewObjects {\r\n /** Gets the value of the given object/property pair. */\r\n export function getValue<T>(objects: DataViewObjects, propertyId: DataViewObjectPropertyIdentifier, defaultValue?: T): T {\r\n debug.assertAnyValue(objects, 'objects');\r\n debug.assertValue(propertyId, 'propertyId');\r\n\r\n if (!objects)\r\n return defaultValue;\r\n\r\n let objectOrMap = objects[propertyId.objectName];\r\n debug.assert(!isUserDefined(objectOrMap), 'expected DataViewObject');\r\n\r\n let object = <DataViewObject>objectOrMap;\r\n return DataViewObject.getValue(object, propertyId.propertyName, defaultValue);\r\n }\r\n\r\n /** Gets an object from objects. */\r\n export function getObject(objects: DataViewObjects, objectName: string, defaultValue?: DataViewObject): DataViewObject {\r\n if (objects && objects[objectName]) {\r\n let object = <DataViewObject>objects[objectName];\r\n debug.assert(!isUserDefined(object), 'expected DataViewObject');\r\n return object;\r\n }\r\n else {\r\n return defaultValue;\r\n }\r\n }\r\n\r\n /** Gets a map of user-defined objects. */\r\n export function getUserDefinedObjects(objects: DataViewObjects, objectName: string): DataViewObjectMap {\r\n if (objects && objects[objectName]) {\r\n let map = <DataViewObjectMap>objects[objectName];\r\n debug.assert(isUserDefined(map), 'expected DataViewObjectMap');\r\n return map;\r\n }\r\n }\r\n\r\n /** Gets the solid color from a fill property. */\r\n export function getFillColor(objects: DataViewObjects, propertyId: DataViewObjectPropertyIdentifier, defaultColor?: string): string {\r\n let value: Fill = getValue(objects, propertyId);\r\n if (!value || !value.solid)\r\n return defaultColor;\r\n\r\n return value.solid.color;\r\n }\r\n\r\n /** Returns true if the given object represents a collection of user-defined objects */\r\n export function isUserDefined(objectOrMap: DataViewObject | DataViewObjectMap): boolean {\r\n return _.isArray(objectOrMap);\r\n }\r\n }\r\n\r\n export module DataViewObject {\r\n export function getValue<T>(object: DataViewObject, propertyName: string, defaultValue?: T): T {\r\n debug.assertAnyValue(object, 'object');\r\n debug.assertValue(propertyName, 'propertyName');\r\n\r\n if (!object)\r\n return defaultValue;\r\n\r\n let propertyValue = <T>object[propertyName];\r\n if (propertyValue === undefined)\r\n return defaultValue;\r\n\r\n return propertyValue;\r\n }\r\n\r\n /** Gets the solid color from a fill property using only a propertyName */\r\n export function getFillColorByPropertyName(objects: DataViewObjects, propertyName: string, defaultColor?: string): string {\r\n let value: Fill = DataViewObject.getValue(objects, propertyName);\r\n if (!value || !value.solid)\r\n return defaultColor;\r\n\r\n return value.solid.color;\r\n }\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.data {\r\n import inherit = Prototype.inherit;\r\n\r\n export module DataViewPivotCategorical {\r\n /**\r\n * Pivots categories in a categorical DataView into valueGroupings.\r\n * This is akin to a mathematical matrix transpose.\r\n */\r\n export function apply(dataView: DataView): DataView {\r\n debug.assertValue(dataView, 'dataView');\r\n\r\n let categorical = dataView.categorical;\r\n if (!categorical)\r\n return null;\r\n\r\n let categories = categorical.categories;\r\n if (!categories || categories.length !== 1)\r\n return null;\r\n\r\n let values = categorical.values;\r\n if (_.isEmpty(values) || values.source)\r\n return null;\r\n\r\n let category = categories[0],\r\n categoryIdentities = category.identity,\r\n categoryValues = category.values,\r\n pivotedColumns: DataViewMetadataColumn[] = [],\r\n pivotedValues: DataViewValueColumn[] = [];\r\n for (let rowIdx = 0, rowCount = categoryValues.length; rowIdx < rowCount; rowIdx++) {\r\n let categoryValue = categoryValues[rowIdx],\r\n categoryIdentity = categoryIdentities[rowIdx];\r\n for (let colIdx = 0, colCount = values.length; colIdx < colCount; colIdx++) {\r\n let value = values[colIdx],\r\n pivotedColumn = inherit(value.source);\r\n\r\n // A value has a series group, which is not implemented for pivoting -- just give up.\r\n if (value.identity)\r\n return null;\r\n\r\n pivotedColumn.groupName = categoryValue;\r\n let pivotedValue: DataViewValueColumn = {\r\n source: pivotedColumn,\r\n values: [value.values[rowIdx]],\r\n identity: categoryIdentity,\r\n min: value.min,\r\n max: value.max,\r\n subtotal: value.subtotal\r\n };\r\n\r\n let highlights = value.highlights;\r\n if (highlights) {\r\n pivotedValue.highlights = [highlights[rowIdx]];\r\n }\r\n\r\n pivotedColumns.push(pivotedColumn);\r\n pivotedValues.push(pivotedValue);\r\n }\r\n }\r\n\r\n let pivotedMetadata = inherit(dataView.metadata);\r\n pivotedMetadata.columns = pivotedColumns;\r\n\r\n values = DataViewTransform.createValueColumns(pivotedValues, <SQExpr[]>category.identityFields, category.source);\r\n return {\r\n metadata: pivotedMetadata,\r\n categorical: {\r\n values: values,\r\n },\r\n matrix: dataView.matrix\r\n };\r\n }\r\n }\r\n} ","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.data {\r\n export module DataViewPivotMatrix {\r\n /** Pivots row hierarchy members in a matrix DataView into column hierarchy. */\r\n export function apply(dataViewMatrix: DataViewMatrix, context: MatrixTransformationContext): void {\r\n debug.assertValue(dataViewMatrix, 'dataViewMatrix');\r\n\r\n if (!context.columnHierarchyRewritten)\r\n dataViewMatrix.columns = Prototype.inherit(dataViewMatrix.columns);\r\n let columns = dataViewMatrix.columns;\r\n\r\n if (!context.rowHierarchyRewritten)\r\n dataViewMatrix.rows = Prototype.inherit(dataViewMatrix.rows);\r\n let rows = dataViewMatrix.rows;\r\n\r\n if (columns.levels.length > 1)\r\n return;\r\n\r\n let pivotedRowNode: DataViewMatrixNode = {\r\n level: 0\r\n };\r\n\r\n let columnLeafNodes: DataViewMatrixNode[] = columns.root.children;\r\n let columnCount = columnLeafNodes.length;\r\n\r\n if (columnCount > 0) {\r\n let index = 0;\r\n let callback = function (node: DataViewMatrixNode) {\r\n // Collect values and remove them from row leaves\r\n if (node.values) {\r\n if (!pivotedRowNode.values)\r\n pivotedRowNode.values = {};\r\n\r\n for (let i = 0; i < columnCount; i++)\r\n pivotedRowNode.values[index++] = node.values[i];\r\n\r\n delete node.values;\r\n }\r\n\r\n // Create measure headers if there are more than one measures\r\n if (columnCount > 1) {\r\n let level = node.level + 1;\r\n if (!node.children)\r\n node.children = [];\r\n\r\n for (let j = 0; j < columnCount; j++) {\r\n let measureHeaderLeaf: DataViewMatrixNode = { level: level };\r\n\r\n // Copy levelSourceIndex from columnLeafNodes (as they might have been reordered)\r\n let columnLeafNode = columnLeafNodes[j];\r\n measureHeaderLeaf.levelSourceIndex = columnLeafNode.levelSourceIndex;\r\n\r\n if (node.isSubtotal)\r\n measureHeaderLeaf.isSubtotal = true;\r\n\r\n node.children.push(measureHeaderLeaf);\r\n }\r\n }\r\n };\r\n\r\n if (context.hierarchyTreesRewritten) {\r\n forEachLeaf(rows.root, callback);\r\n }\r\n else {\r\n dataViewMatrix.columns.root = cloneTreeExecuteOnLeaf(rows.root, callback);\r\n }\r\n }\r\n else {\r\n if (!context.hierarchyTreesRewritten) {\r\n dataViewMatrix.columns.root = cloneTree(rows.root);\r\n }\r\n }\r\n\r\n if (columnCount > 1) {\r\n // Keep measure headers, but move them to the innermost level\r\n let level: DataViewHierarchyLevel = { sources: columns.levels[0].sources };\r\n rows.levels.push(level);\r\n\r\n columns.levels.length = 0;\r\n }\r\n\r\n if (context.hierarchyTreesRewritten) {\r\n dataViewMatrix.columns.root = rows.root;\r\n dataViewMatrix.rows.root = {\r\n children: [pivotedRowNode]\r\n };\r\n }\r\n else {\r\n let updatedRowRoot = Prototype.inherit(dataViewMatrix.rows.root);\r\n updatedRowRoot.children = [pivotedRowNode];\r\n dataViewMatrix.rows.root = updatedRowRoot;\r\n }\r\n\r\n dataViewMatrix.columns.levels = rows.levels;\r\n dataViewMatrix.rows.levels = [];\r\n }\r\n\r\n function forEachLeaf(root: DataViewMatrixNode, callback: (node: DataViewMatrixNode) => void): void {\r\n let children = root.children;\r\n if (children && children.length > 0) {\r\n for (let i = 0, ilen = children.length; i < ilen; i++)\r\n forEachLeaf(children[i], callback);\r\n\r\n return;\r\n }\r\n\r\n callback(root);\r\n }\r\n\r\n export function cloneTree(node: DataViewMatrixNode): DataViewMatrixNode {\r\n return cloneTreeExecuteOnLeaf(node);\r\n }\r\n\r\n export function cloneTreeExecuteOnLeaf(node: DataViewMatrixNode, callback?: (node: DataViewMatrixNode) => void): DataViewMatrixNode {\r\n let updatedNode = Prototype.inherit(node);\r\n\r\n let children = node.children;\r\n if (children && children.length > 0) {\r\n let newChildren: DataViewTreeNode[] = [];\r\n\r\n for (let i = 0, ilen = children.length; i < ilen; i++) {\r\n let updatedChild = cloneTreeExecuteOnLeaf(children[i], callback);\r\n newChildren.push(updatedChild);\r\n }\r\n updatedNode.children = newChildren;\r\n }\r\n else {\r\n if (callback)\r\n callback(updatedNode);\r\n }\r\n\r\n return updatedNode;\r\n }\r\n }\r\n} ","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.data {\r\n export module DataViewSelfCrossJoin {\r\n /**\r\n * Returns a new DataView based on the original, with a single DataViewCategorical category that is \"cross joined\"\r\n * to itself as a value grouping.\r\n * This is the mathematical equivalent of taking an array and turning it into an identity matrix.\r\n */\r\n export function apply(dataView: DataView): DataView {\r\n debug.assertValue(dataView, 'dataView');\r\n\r\n if (!dataView.categorical)\r\n return;\r\n let dataViewCategorical = dataView.categorical;\r\n if (!dataViewCategorical.categories || dataViewCategorical.categories.length !== 1)\r\n return;\r\n if (dataViewCategorical.values && dataViewCategorical.values.source)\r\n return;\r\n\r\n return applyCategorical(dataView.metadata, dataViewCategorical);\r\n }\r\n\r\n function applyCategorical(dataViewMetadata: DataViewMetadata, dataViewCategorical: DataViewCategorical): DataView {\r\n debug.assertValue(dataViewMetadata, 'dataViewMetadata');\r\n debug.assertValue(dataViewCategorical, 'dataViewCategorical');\r\n debug.assertValue(dataViewCategorical.categories, 'dataViewCategorical.categories');\r\n\r\n let category = dataViewCategorical.categories[0],\r\n categoryValues = category.values,\r\n categoryLength = categoryValues.length;\r\n\r\n if (categoryLength === 0)\r\n return;\r\n\r\n let valuesArray: DataViewValueColumn[] = dataViewCategorical.values\r\n ? dataViewCategorical.values.grouped()[0].values\r\n : [];\r\n let transformedDataView = createCategoricalDataViewBuilder()\r\n .withCategories(dataViewCategorical.categories)\r\n .withGroupedValues(createGroupedValues(category, categoryValues, categoryLength, valuesArray))\r\n .build();\r\n\r\n dataViewMetadata = Prototype.inherit(dataViewMetadata);\r\n dataViewMetadata.columns = transformedDataView.metadata.columns;\r\n\r\n return {\r\n metadata: dataViewMetadata,\r\n categorical: transformedDataView.categorical,\r\n };\r\n }\r\n\r\n function createGroupedValues(\r\n category: DataViewCategoryColumn,\r\n categoryValues: any[],\r\n categoryLength: number,\r\n valuesArray: DataViewValueColumn[]): DataViewBuilderGroupedValuesOptions {\r\n debug.assertValue(category, 'category');\r\n debug.assertValue(categoryValues, 'categoryValues');\r\n debug.assertValue(categoryLength, 'categoryLength');\r\n debug.assertValue(valuesArray, 'valuesArray');\r\n\r\n let nullValuesArray: any[] = createNullValues(categoryLength),\r\n valuesArrayLen = valuesArray.length,\r\n seriesData: DataViewBuilderSeriesData[][] = [];\r\n\r\n for (let i = 0; i < categoryLength; i++) {\r\n let seriesDataItem: DataViewBuilderSeriesData[] = [];\r\n\r\n for (let j = 0; j < valuesArrayLen; j++) {\r\n let originalValueColumn = valuesArray[j],\r\n originalHighlightValues = originalValueColumn.highlights;\r\n\r\n let seriesDataItemCategory: DataViewBuilderSeriesData = {\r\n values: inheritArrayWithValue(nullValuesArray, originalValueColumn.values, i),\r\n };\r\n if (originalHighlightValues)\r\n seriesDataItemCategory.highlights = inheritArrayWithValue(nullValuesArray, originalHighlightValues, i);\r\n\r\n seriesDataItem.push(seriesDataItemCategory);\r\n }\r\n\r\n seriesData.push(seriesDataItem);\r\n }\r\n\r\n return {\r\n groupColumn: {\r\n source: category.source,\r\n identityFrom: { fields: <SQExpr[]>category.identityFields, identities: category.identity },\r\n values: category.values,\r\n },\r\n valueColumns: _.map(valuesArray, v => <DataViewBuilderColumnOptions>{ source: v.source }),\r\n data: seriesData,\r\n };\r\n }\r\n }\r\n\r\n function createNullValues(length: number): any[] {\r\n debug.assertValue(length, 'length');\r\n\r\n let array = new Array(length);\r\n for (let i = 0; i < length; i++)\r\n array[i] = null;\r\n return array;\r\n }\r\n\r\n function inheritArrayWithValue(nullValues: any[], original: any[], index: number): any[] {\r\n let inherited = Prototype.inherit(nullValues);\r\n inherited[index] = original[index];\r\n\r\n return inherited;\r\n }\r\n}\r\n","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved.\r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n *\r\n * The above copyright notice and this permission notice shall be included in\r\n * all copies or substantial portions of the Software.\r\n *\r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.data {\r\n import ArrayExtensions = jsCommon.ArrayExtensions;\r\n import DataShapeBindingDataReduction = powerbi.data.DataShapeBindingDataReduction;\r\n import RoleKindByQueryRef = DataViewAnalysis.RoleKindByQueryRef;\r\n\r\n export module DataViewPivotCategoricalToPrimaryGroups {\r\n\r\n /**\r\n * If mapping requests cross axis data reduction and the binding has secondary grouping, mutates the binding to\r\n * pivot the secondary before the primary.\r\n */\r\n export function pivotBinding(binding: DataShapeBinding, allMappings: CompiledDataViewMapping[], finalMapping: CompiledDataViewMapping, defaultDataVolume: number): void {\r\n // unpivot is inferred from result in DataViewTransform.apply but it does not have the\r\n // compiled mappings available, let alone the merged mapping, only the original\r\n // DataViewMappings. to keep that inference easy, only apply pivot when there's\r\n // only one matching mapping\r\n if (!allMappings || allMappings.length !== 1)\r\n return;\r\n\r\n if (!finalMapping.categorical || !finalMapping.categorical.dataReductionAlgorithm)\r\n return;\r\n\r\n if (!binding)\r\n return;\r\n\r\n if (!canPivotCategorical(binding, finalMapping))\r\n return;\r\n\r\n // pivot secondary onto front of primary\r\n binding.Primary.Groupings = [binding.Secondary.Groupings[0], binding.Primary.Groupings[0]];\r\n\r\n binding.Secondary = undefined;\r\n \r\n // set primary to pivot reduction\r\n binding.DataReduction = {\r\n Primary: DataShapeBindingDataReduction.createFrom(finalMapping.categorical.dataReductionAlgorithm),\r\n DataVolume: finalMapping.categorical.dataVolume || defaultDataVolume,\r\n };\r\n }\r\n\r\n /** narrowly targets scatter chart scenario for now to keep code simple */\r\n function isPivotableAxis(axis: powerbi.data.DataShapeBindingAxis): boolean {\r\n return axis\r\n && axis.Groupings\r\n && axis.Groupings.length === 1\r\n && !_.isEmpty(axis.Groupings[0].Projections)\r\n && !axis.Groupings[0].Subtotal\r\n && _.isEmpty(axis.Groupings[0].SuppressedProjections);\r\n }\r\n\r\n function canPivotCategorical(binding: DataShapeBinding, mapping: CompiledDataViewMapping): boolean {\r\n if (!isPivotableAxis(binding.Primary))\r\n return false;\r\n if (!isPivotableAxis(binding.Secondary) || binding.Secondary.Groupings[0].Projections.length !== 1)\r\n return false;\r\n\r\n // don't pivot if either axis has a data reduction\r\n if (binding.DataReduction && (binding.DataReduction.Primary || binding.DataReduction.Secondary))\r\n return false;\r\n\r\n return true;\r\n }\r\n\r\n export function unpivotResult(oldDataView: DataView, selects: DataViewSelectTransform[], dataViewMappings: DataViewMapping[]): DataView {\r\n if (!inferUnpivotTransform(selects, dataViewMappings, oldDataView))\r\n return oldDataView;\r\n\r\n // This returns a subsetted version of the DataView rather than using prototypal inheritance because\r\n // any dataviews in the old one (including ones invented after this code is written) will correspond\r\n // to a pivoted query result and therefore will be in the wrong shape for the unpivoted query the\r\n // querying code made.\r\n let newDataView: DataView = {\r\n metadata: {\r\n columns: ArrayExtensions.copy(oldDataView.metadata.columns),\r\n },\r\n };\r\n \r\n // preserve view types that aren't affected by pivoting\r\n if (oldDataView.single)\r\n newDataView.single = oldDataView.single;\r\n if (oldDataView.table)\r\n newDataView.table = oldDataView.table;\r\n\r\n // other views are derived from matrix\r\n if (oldDataView.matrix) {\r\n let newDataViewMatrix = unpivotMatrix(oldDataView.matrix);\r\n\r\n // categorical only if there's data\r\n if (!_.isEmpty(newDataViewMatrix.valueSources))\r\n newDataView.categorical = categoricalFromUnpivotedMatrix(newDataViewMatrix, newDataView.metadata.columns);\r\n }\r\n\r\n return newDataView;\r\n }\r\n\r\n /** Convert selection info to projections */\r\n function projectionsFromSelects(selects: DataViewSelectTransform[]): QueryProjectionsByRole {\r\n let projections: QueryProjectionsByRole = {};\r\n for (let select of selects) {\r\n let roles = select.roles;\r\n if (!roles)\r\n continue;\r\n\r\n for (let roleName in roles) {\r\n if (roles[roleName]) {\r\n let qp = projections[roleName];\r\n if (!qp)\r\n qp = projections[roleName] = new QueryProjectionCollection([]);\r\n qp.all().push({ queryRef: select.queryName });\r\n }\r\n }\r\n }\r\n\r\n return projections;\r\n }\r\n\r\n /** Use selections and metadata to fashion query role kinds */\r\n function createRoleKindFromMetadata(selects: DataViewSelectTransform[], metadata: DataViewMetadata): RoleKindByQueryRef {\r\n let roleKindByQueryRef: DataViewAnalysis.RoleKindByQueryRef = {};\r\n for (let column of metadata.columns) {\r\n if ((!column.index && column.index !== 0) || column.index < 0 || column.index >= selects.length)\r\n continue;\r\n\r\n let select = selects[column.index];\r\n if (select) {\r\n let queryRef = select.queryName;\r\n if (queryRef && roleKindByQueryRef[queryRef] === undefined) {\r\n roleKindByQueryRef[queryRef] = column.isMeasure ? VisualDataRoleKind.Measure : VisualDataRoleKind.Grouping;\r\n }\r\n }\r\n }\r\n return roleKindByQueryRef;\r\n }\r\n\r\n /** Get roles from a role mapping */\r\n function getRolesInRoleMapping(role: (roleName: string) => void, roleMapping: DataViewRoleBindMapping | DataViewRoleForMapping | DataViewGroupedRoleMapping | DataViewListRoleMapping): void {\r\n if (!roleMapping)\r\n return;\r\n\r\n if ((<DataViewRoleBindMapping>roleMapping).bind)\r\n role((<DataViewRoleBindMapping>roleMapping).bind.to);\r\n\r\n if ((<DataViewRoleForMapping>roleMapping).for)\r\n role((<DataViewRoleForMapping>roleMapping).for.in);\r\n\r\n if ((<DataViewGroupedRoleMapping>roleMapping).group) {\r\n role((<DataViewGroupedRoleMapping>roleMapping).group.by);\r\n getRolesInRoleMappings(role, (<DataViewGroupedRoleMapping>roleMapping).group.select);\r\n }\r\n\r\n getRolesInRoleMappings(role, (<DataViewListRoleMapping>roleMapping).select);\r\n }\r\n\r\n /** Get roles from a list of role mappings */\r\n function getRolesInRoleMappings(role: (roleName: string) => void, roleMappings: (DataViewRoleBindMapping | DataViewRoleForMapping)[]): void {\r\n if (!_.isEmpty(roleMappings)) {\r\n for (let roleMapping of roleMappings)\r\n getRolesInRoleMapping(role, roleMapping);\r\n }\r\n }\r\n\r\n /**\r\n * Infer from the query result and the visual mappings whether the query was pivoted.\r\n * Narrowly targets scatter chart scenario for now to keep code simple\r\n */\r\n function inferUnpivotTransform(selects: DataViewSelectTransform[], dataViewMappings: DataViewMapping[], dataView: DataView): boolean {\r\n if (!selects || !dataViewMappings || !dataView)\r\n return false;\r\n\r\n // select applicable mappings based on select roles\r\n let roleKinds: RoleKindByQueryRef = createRoleKindFromMetadata(selects, dataView.metadata);\r\n let projections: QueryProjectionsByRole = projectionsFromSelects(selects);\r\n dataViewMappings = DataViewAnalysis.chooseDataViewMappings(projections, dataViewMappings, roleKinds);\r\n\r\n // NOTE: limiting to simple situation that handles scatter for now - see the other side in canPivotCategorical\r\n if (!dataViewMappings || dataViewMappings.length !== 1)\r\n return false;\r\n\r\n let categoricalMapping = dataViewMappings[0].categorical;\r\n if (!categoricalMapping)\r\n return false;\r\n\r\n // pivoted query will have produced a matrix\r\n let matrixDataview = dataView.matrix;\r\n if (!matrixDataview)\r\n return false;\r\n\r\n // matrix must have two levels of grouping\r\n if (!matrixDataview.rows || !matrixDataview.rows.levels || matrixDataview.rows.levels.length !== 2)\r\n return false;\r\n\r\n // get category and value grouping roles\r\n let categoryGroups: string[] = [];\r\n let valueGroups: string[] = [];\r\n\r\n let addGroupingRole = (roleName: string, groups: string[]) => {\r\n let roleProjections: QueryProjectionCollection = projections[roleName];\r\n if (!roleProjections)\r\n return;\r\n\r\n for (let roleProjection of roleProjections.all()) {\r\n if (roleKinds[roleProjection.queryRef] === VisualDataRoleKind.Grouping)\r\n groups.push(roleProjection.queryRef);\r\n }\r\n };\r\n\r\n getRolesInRoleMapping((roleName: string) => { addGroupingRole(roleName, categoryGroups); }, categoricalMapping.categories);\r\n getRolesInRoleMapping((roleName: string) => { addGroupingRole(roleName, valueGroups); }, categoricalMapping.values);\r\n\r\n // need both for pivot to have been done\r\n if (_.isEmpty(categoryGroups) || _.isEmpty(valueGroups))\r\n return false;\r\n\r\n // if there was a pivot, there won't be any measures left in the columns\r\n for (let level of matrixDataview.columns.levels) {\r\n for (let source of level.sources) {\r\n if (!source.isMeasure)\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n interface GroupValue {\r\n identity: DataViewScopeIdentity;\r\n value: any;\r\n }\r\n\r\n interface DataViewMatrixNodeValues {\r\n [id: number]: DataViewMatrixNodeValue;\r\n }\r\n\r\n /**\r\n * matrix will have two groupings in the rows, outer (series) and inner (categories), and none in the columns.\r\n * this function changes that so that the categories become the rows and the series the columns.\r\n */\r\n function unpivotMatrix(oldMatrix: DataViewMatrix): DataViewMatrix {\r\n let oldRows = oldMatrix.rows;\r\n let oldRoot = oldRows.root;\r\n let oldChildren = oldRoot.children;\r\n\r\n // series are the outer grouping\r\n let series: GroupValue[] = [];\r\n let seriesIdLevel = oldRows.levels[0];\r\n let seriesIdFields = oldRoot.childIdentityFields;\r\n\r\n // categories are the inner grouping. \r\n let categories: GroupValue[] = [];\r\n let categoryIdLevel = oldRows.levels[1];\r\n let categoryIdFields = oldChildren[0].childIdentityFields;\r\n\r\n let measureCount = oldMatrix.valueSources.length;\r\n\r\n // within each series value, the category list may not be complete so cannot simply use the inner loop index\r\n // to reference it.\r\n let findcat = (identity: DataViewScopeIdentity) => {\r\n return _.findIndex(categories, pair => DataViewScopeIdentity.equals(pair.identity, identity));\r\n };\r\n\r\n // collect series and categories from the row hierarchy\r\n for (let seriesNode of oldChildren) {\r\n series.push({ value: seriesNode.value, identity: seriesNode.identity });\r\n\r\n for (let categoryNode of seriesNode.children) {\r\n let catindex = findcat(categoryNode.identity);\r\n if (catindex === -1)\r\n categories.push({ value: categoryNode.value, identity: categoryNode.identity });\r\n }\r\n }\r\n \r\n // extract intersection values from pivoted matrix\r\n // values will be indexed by categories then series\r\n let matrixValues: DataViewMatrixNodeValues[][] = new Array<DataViewMatrixNodeValues[]>(categories.length);\r\n for (let j = 0; j < series.length; ++j) { // outer is series\r\n let seriesNode = oldChildren[j];\r\n for (let categoryNode of seriesNode.children) { // inner is categories but maybe a subset\r\n let i = findcat(categoryNode.identity); // must lookup actual category index\r\n\r\n if (!matrixValues[i])\r\n matrixValues[i] = new Array<DataViewMatrixNodeValues>(series.length);\r\n\r\n matrixValues[i][j] = categoryNode.values;\r\n }\r\n }\r\n\r\n // unpivoted matrix columns are the series\r\n let newColumns: DataViewHierarchy = {\r\n root: {\r\n children: _.map(series, (s: any) => {\r\n return {\r\n level: 0,\r\n value: s.value,\r\n identity: s.identity,\r\n };\r\n }),\r\n childIdentityFields: seriesIdFields,\r\n },\r\n levels: [\r\n seriesIdLevel,\r\n \r\n ],\r\n };\r\n if (measureCount > 0) {\r\n let newColChildren: DataViewMatrixNode[] = _.map(oldMatrix.columns.root.children, (srcnode: DataViewMatrixNode) => {\r\n let dstnode: DataViewMatrixNode = { level: 1 };\r\n if (srcnode.levelSourceIndex)\r\n dstnode.levelSourceIndex = srcnode.levelSourceIndex;\r\n return dstnode;\r\n });\r\n\r\n for (let i = 0; i < newColumns.root.children.length; ++i)\r\n newColumns.root.children[i].children = newColChildren;\r\n\r\n newColumns.levels.push(oldMatrix.columns.levels[0]);\r\n }\r\n\r\n // unpivoted rows are the categories\r\n let newRows: DataViewHierarchy = {\r\n root: {\r\n children: _.map(categories, (s: GroupValue) => { return { level: 0, value: s.value, identity: s.identity }; }),\r\n childIdentityFields: categoryIdFields,\r\n },\r\n levels: [\r\n categoryIdLevel,\r\n ],\r\n };\r\n\r\n // put values into rows\r\n if (measureCount > 0) {\r\n for (let i = 0; i < categories.length; ++i) {\r\n let row = newRows.root.children[i];\r\n let rowValues: DataViewMatrixNodeValues = {};\r\n\r\n for (let j = 0; j < series.length; ++j) {\r\n let mvalues = matrixValues[i][j];\r\n for (let k = 0; k < measureCount; ++k) {\r\n let l = j * measureCount + k;\r\n rowValues[l] = !mvalues\r\n ? ( k === 0 ? { value: null } : { value: null, valueSourceIndex: k } )\r\n : mvalues[k];\r\n }\r\n }\r\n\r\n row.values = rowValues;\r\n }\r\n }\r\n\r\n let newMatrix: DataViewMatrix = {\r\n rows: newRows,\r\n columns: newColumns,\r\n valueSources: oldMatrix.valueSources,\r\n };\r\n\r\n return newMatrix;\r\n }\r\n\r\n /** build a categorical data view from an unpivoted matrix. */\r\n function categoricalFromUnpivotedMatrix(matrix: DataViewMatrix, columnMetadata: DataViewMetadataColumn[]): DataViewCategorical {\r\n let seriesCount = matrix.columns.root.children.length;\r\n let measureMetadata = matrix.valueSources;\r\n let measureCount = measureMetadata.length;\r\n\r\n // create categories from rows\r\n let categories: DataViewCategoryColumn[] = [\r\n {\r\n source: matrix.rows.levels[0].sources[0],\r\n values: _.map(matrix.rows.root.children, x => x.value),\r\n identity: _.map(matrix.rows.root.children, x => x.identity),\r\n identityFields: matrix.rows.root.childIdentityFields,\r\n },\r\n ];\r\n\r\n // create grouped values\r\n let groups: DataViewValueColumnGroup[] = [];\r\n for (let j = 0; j < seriesCount; ++j) {\r\n let seriesColumn = matrix.columns.root.children[j];\r\n let group: DataViewValueColumnGroup = {\r\n values: [],\r\n identity: seriesColumn.identity,\r\n name: seriesColumn.value || null,\r\n };\r\n\r\n groups.push(group);\r\n\r\n for (let k = 0; k < measureCount; ++k) {\r\n let valueColumnMetadataSrc = measureMetadata[k];\r\n let valueColumnMetadataDst: DataViewMetadataColumn = <DataViewMetadataColumn>{};\r\n for (let key in valueColumnMetadataSrc)\r\n valueColumnMetadataDst[key] = valueColumnMetadataSrc[key];\r\n valueColumnMetadataDst.groupName = group.name;\r\n\r\n columnMetadata.push(valueColumnMetadataDst);\r\n\r\n let valueColumn: DataViewValueColumn = {\r\n source: valueColumnMetadataDst,\r\n values: [],\r\n identity: group.identity,\r\n };\r\n\r\n group.values.push(valueColumn);\r\n\r\n // grab measure values in the group from across rows of matrix\r\n let index = k + j * measureCount;\r\n\r\n for (let categoryNode of matrix.rows.root.children) {\r\n let value = categoryNode.values[index].value;\r\n\r\n valueColumn.values.push(value);\r\n }\r\n }\r\n }\r\n\r\n // and now ungrouped\r\n let values: DataViewValueColumns = <DataViewValueColumns>[];\r\n for (let group of groups) {\r\n for (let k = 0; k < measureCount; ++k) {\r\n values.push(group.values[k]);\r\n }\r\n }\r\n\r\n values.grouped = () => groups;\r\n values.identityFields = matrix.columns.root.childIdentityFields;\r\n values.source = matrix.columns.levels[0].sources[0];\r\n\r\n // final assembly\r\n let categorical: DataViewCategorical = {\r\n categories: categories,\r\n values: values,\r\n };\r\n\r\n return categorical;\r\n }\r\n }\r\n}\r\n","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.data {\r\n import inherit = Prototype.inherit;\r\n import inheritSingle = Prototype.inheritSingle;\r\n import ArrayExtensions = jsCommon.ArrayExtensions;\r\n import EnumExtensions = jsCommon.EnumExtensions;\r\n import INumberDictionary = jsCommon.INumberDictionary;\r\n\r\n export interface DataViewTransformApplyOptions {\r\n prototype: DataView;\r\n objectDescriptors: DataViewObjectDescriptors;\r\n dataViewMappings?: DataViewMapping[];\r\n transforms: DataViewTransformActions;\r\n colorAllocatorFactory: IColorAllocatorFactory;\r\n dataRoles: VisualDataRole[];\r\n }\r\n\r\n /** Describes the Transform actions to be done to a prototype DataView. */\r\n export interface DataViewTransformActions {\r\n /** Describes transform metadata for each semantic query select item, as the arrays align, by index. */\r\n selects?: DataViewSelectTransform[];\r\n\r\n /** Describes the DataViewObject definitions. */\r\n objects?: DataViewObjectDefinitions;\r\n\r\n /** Describes the splitting of a single input DataView into multiple DataViews. */\r\n splits?: DataViewSplitTransform[];\r\n\r\n /** Describes the order of selects (referenced by query index) in each role. */\r\n projectionOrdering?: DataViewProjectionOrdering;\r\n }\r\n\r\n export interface DataViewSelectTransform {\r\n displayName?: string;\r\n queryName?: string;\r\n format?: string;\r\n type?: ValueType;\r\n roles?: { [roleName: string]: boolean };\r\n kpi?: DataViewKpiColumnMetadata;\r\n sort?: SortDirection;\r\n expr?: SQExpr;\r\n\r\n /** Describes the default value applied to a column, if any. */\r\n defaultValue?: DefaultValueDefinition;\r\n }\r\n\r\n export interface DataViewSplitTransform {\r\n selects: INumberDictionary<boolean>;\r\n }\r\n\r\n export interface DataViewProjectionOrdering {\r\n [roleName: string]: number[];\r\n }\r\n\r\n export interface MatrixTransformationContext {\r\n rowHierarchyRewritten: boolean;\r\n columnHierarchyRewritten: boolean;\r\n hierarchyTreesRewritten: boolean;\r\n }\r\n\r\n interface ValueRewrite<T> {\r\n from: T;\r\n to: T;\r\n }\r\n\r\n interface NumberToNumberMapping {\r\n [position: number]: number;\r\n }\r\n\r\n const enum CategoricalDataViewTransformation {\r\n None,\r\n Pivot,\r\n SelfCrossJoin,\r\n }\r\n\r\n const enum StandardDataViewKinds {\r\n None = 0,\r\n Categorical = 1,\r\n Matrix = 1 << 1,\r\n Single = 1 << 2,\r\n Table = 1 << 3,\r\n Tree = 1 << 4,\r\n }\r\n\r\n // TODO: refactor & focus DataViewTransform into a service with well-defined dependencies.\r\n export module DataViewTransform {\r\n export function apply(options: DataViewTransformApplyOptions): DataView[] {\r\n debug.assertValue(options, 'options');\r\n\r\n // TODO: Flow a context object through to capture errors/warnings about what happens here for better diagnosability.\r\n\r\n let prototype = options.prototype,\r\n objectDescriptors = options.objectDescriptors,\r\n dataViewMappings = options.dataViewMappings,\r\n transforms = options.transforms,\r\n colorAllocatorFactory = options.colorAllocatorFactory,\r\n dataRoles = options.dataRoles;\r\n\r\n if (!prototype)\r\n return transformEmptyDataView(objectDescriptors, transforms, colorAllocatorFactory);\r\n\r\n if (!transforms)\r\n return [prototype];\r\n\r\n // unpivot result if query was pivoted\r\n prototype = DataViewPivotCategoricalToPrimaryGroups.unpivotResult(prototype, transforms.selects, dataViewMappings);\r\n\r\n let splits = transforms.splits;\r\n if (_.isEmpty(splits)) {\r\n return [transformDataView(prototype, objectDescriptors, dataViewMappings, transforms, colorAllocatorFactory, dataRoles)];\r\n }\r\n\r\n let transformedDataviews: DataView[] = [];\r\n for (let split of splits) {\r\n let transformed = transformDataView(prototype, objectDescriptors, dataViewMappings, transforms, colorAllocatorFactory, dataRoles, split.selects);\r\n transformedDataviews.push(transformed);\r\n }\r\n\r\n return transformedDataviews;\r\n }\r\n\r\n function transformEmptyDataView(objectDescriptors: DataViewObjectDescriptors, transforms: DataViewTransformActions, colorAllocatorFactory: IColorAllocatorFactory): DataView[] {\r\n if (transforms && transforms.objects) {\r\n let emptyDataView: DataView = {\r\n metadata: {\r\n columns: [],\r\n }\r\n };\r\n\r\n transformObjects(\r\n emptyDataView,\r\n StandardDataViewKinds.None,\r\n objectDescriptors,\r\n transforms.objects,\r\n transforms.selects,\r\n colorAllocatorFactory);\r\n\r\n return [emptyDataView];\r\n }\r\n\r\n return [];\r\n }\r\n\r\n function transformDataView(\r\n prototype: DataView,\r\n objectDescriptors: DataViewObjectDescriptors,\r\n roleMappings: DataViewMapping[],\r\n transforms: DataViewTransformActions,\r\n colorAllocatorFactory: IColorAllocatorFactory,\r\n dataRoles: VisualDataRole[],\r\n selectsToInclude?: INumberDictionary<boolean>): DataView {\r\n debug.assertValue(prototype, 'prototype');\r\n\r\n let targetKinds = getTargetKinds(roleMappings);\r\n let transformed = inherit(prototype);\r\n transformed.metadata = inherit(prototype.metadata);\r\n\r\n transformed = transformSelects(transformed, roleMappings, transforms.selects, transforms.projectionOrdering, selectsToInclude);\r\n transformObjects(transformed, targetKinds, objectDescriptors, transforms.objects, transforms.selects, colorAllocatorFactory);\r\n\r\n DataViewNormalizeValues.apply({\r\n dataview: transformed,\r\n dataViewMappings: roleMappings,\r\n dataRoles: dataRoles,\r\n });\r\n\r\n return transformed;\r\n }\r\n\r\n function getTargetKinds(roleMappings: DataViewMapping[]): StandardDataViewKinds {\r\n debug.assertAnyValue(roleMappings, 'roleMappings');\r\n\r\n if (!roleMappings)\r\n return StandardDataViewKinds.None;\r\n\r\n let result = StandardDataViewKinds.None;\r\n for (let roleMapping of roleMappings) {\r\n if (roleMapping.categorical)\r\n result |= StandardDataViewKinds.Categorical;\r\n if (roleMapping.matrix)\r\n result |= StandardDataViewKinds.Matrix;\r\n if (roleMapping.single)\r\n result |= StandardDataViewKinds.Single;\r\n if (roleMapping.table)\r\n result |= StandardDataViewKinds.Table;\r\n if (roleMapping.tree)\r\n result |= StandardDataViewKinds.Tree;\r\n }\r\n return result;\r\n }\r\n\r\n function transformSelects(\r\n dataView: DataView,\r\n roleMappings: DataViewMapping[],\r\n selectTransforms: DataViewSelectTransform[],\r\n projectionOrdering?: DataViewProjectionOrdering,\r\n selectsToInclude?: INumberDictionary<boolean>): DataView {\r\n\r\n let columnRewrites: ValueRewrite<DataViewMetadataColumn>[] = [];\r\n if (selectTransforms) {\r\n dataView.metadata.columns = applyTransformsToColumns(\r\n dataView.metadata.columns,\r\n selectTransforms,\r\n columnRewrites);\r\n }\r\n \r\n // NOTE: no rewrites necessary for Tree (it doesn't reference the columns)\r\n if (dataView.categorical) {\r\n dataView.categorical = applyRewritesToCategorical(dataView.categorical, columnRewrites, selectsToInclude);\r\n\r\n // NOTE: This is slightly DSR-specific.\r\n dataView = pivotIfNecessary(dataView, roleMappings);\r\n }\r\n\r\n if (dataView.matrix) {\r\n let matrixTransformationContext: MatrixTransformationContext = {\r\n rowHierarchyRewritten: false,\r\n columnHierarchyRewritten: false,\r\n hierarchyTreesRewritten: false\r\n };\r\n dataView.matrix = applyRewritesToMatrix(dataView.matrix, columnRewrites, roleMappings, projectionOrdering, matrixTransformationContext);\r\n\r\n if (shouldPivotMatrix(dataView.matrix, roleMappings))\r\n DataViewPivotMatrix.apply(dataView.matrix, matrixTransformationContext);\r\n }\r\n\r\n if (dataView.table)\r\n dataView.table = applyRewritesToTable(dataView.table, columnRewrites, roleMappings, projectionOrdering);\r\n\r\n return dataView;\r\n }\r\n\r\n function applyTransformsToColumns(\r\n prototypeColumns: DataViewMetadataColumn[],\r\n selects: DataViewSelectTransform[],\r\n rewrites: ValueRewrite<DataViewMetadataColumn>[]): DataViewMetadataColumn[] {\r\n debug.assertValue(prototypeColumns, 'columns');\r\n\r\n if (!selects)\r\n return prototypeColumns;\r\n\r\n //column may contain undefined entries\r\n let columns = inherit(prototypeColumns);\r\n\r\n for (let i = 0, len = prototypeColumns.length; i < len; i++) {\r\n let prototypeColumn = prototypeColumns[i];\r\n let select = selects[prototypeColumn.index];\r\n if (!select)\r\n continue;\r\n\r\n let column: DataViewMetadataColumn = columns[i] = inherit(prototypeColumn);\r\n\r\n if (select.roles)\r\n column.roles = select.roles;\r\n if (select.type)\r\n column.type = select.type;\r\n column.format = getFormatForColumn(select, column);\r\n\r\n if (select.displayName)\r\n column.displayName = select.displayName;\r\n if (select.queryName)\r\n column.queryName = select.queryName;\r\n if (select.kpi)\r\n column.kpi = select.kpi;\r\n if (select.sort)\r\n column.sort = select.sort;\r\n\r\n rewrites.push({\r\n from: prototypeColumn,\r\n to: column,\r\n });\r\n }\r\n\r\n return columns;\r\n }\r\n\r\n /**\r\n * Get the column format. Order of precendence is:\r\n * 1. Select format\r\n * 2. Column format\r\n */\r\n function getFormatForColumn(select: DataViewSelectTransform, column: DataViewMetadataColumn): string {\r\n // TODO: we already copied the select.Format to column.format, we probably don't need this check\r\n return select.format || column.format;\r\n }\r\n\r\n /**\r\n * \r\n * \r\n * Note: Exported for testability\r\n */\r\n export function upgradeSettingsToObjects(settings: VisualElementSettings, objectDefns?: DataViewObjectDefinitions): DataViewObjectDefinitions {\r\n if (!settings)\r\n return;\r\n\r\n if (!objectDefns)\r\n objectDefns = {};\r\n\r\n for (let propertyKey in settings) {\r\n let propertyValue = settings[propertyKey],\r\n upgradedPropertyKey: string = propertyKey,\r\n upgradedPropertyValue = propertyValue,\r\n objectName: string = 'general';\r\n\r\n switch (propertyKey) {\r\n case 'hasScalarCategoryAxis':\r\n // hasScalarCategoryAxis -> categoryAxis.axisType\r\n objectName = 'categoryAxis';\r\n upgradedPropertyKey = 'axisType';\r\n upgradedPropertyValue = SQExprBuilder.text(propertyValue ? 'Scalar' : 'Categorical');\r\n break;\r\n\r\n case 'Totals':\r\n // Totals -> general.totals\r\n upgradedPropertyKey = 'totals';\r\n upgradedPropertyValue = SQExprBuilder.boolean(!!propertyValue);\r\n break;\r\n\r\n case 'textboxSettings':\r\n // textboxSettings.paragraphs -> general.paragraphs\r\n upgradedPropertyKey = 'paragraphs';\r\n if (propertyValue && propertyValue.paragraphs)\r\n upgradedPropertyValue = propertyValue.paragraphs;\r\n break;\r\n\r\n case 'VisualType1':\r\n // VisualType1 -> general.visualType1\r\n upgradedPropertyKey = 'visualType1';\r\n upgradedPropertyValue = SQExprBuilder.text(propertyValue);\r\n break;\r\n\r\n case 'VisualType2':\r\n // VisualType2 -> general.visualType2\r\n upgradedPropertyKey = 'visualType2';\r\n upgradedPropertyValue = SQExprBuilder.text(propertyValue);\r\n break;\r\n\r\n case 'imageVisualSettings':\r\n // imageVisualSettings.imageUrl -> general.imageUrl\r\n upgradedPropertyKey = 'imageUrl';\r\n if (propertyValue && propertyValue.imageUrl)\r\n upgradedPropertyValue = SQExprBuilder.text(propertyValue.imageUrl);\r\n break;\r\n\r\n default:\r\n // Ignore all other properties.\r\n continue;\r\n }\r\n\r\n setObjectDefinition(objectDefns, objectName, upgradedPropertyKey, upgradedPropertyValue);\r\n }\r\n\r\n return objectDefns;\r\n }\r\n\r\n function setObjectDefinition(objects: DataViewObjectDefinitions, objectName: string, propertyName: string, value: any): void {\r\n debug.assertValue(objects, 'objects');\r\n debug.assertValue(objectName, 'objectName');\r\n debug.assertValue(propertyName, 'propertyName');\r\n\r\n let objectContainer: DataViewObjectDefinition[] = objects[objectName];\r\n if (objectContainer === undefined)\r\n objectContainer = objects[objectName] = [];\r\n\r\n let object: DataViewObjectDefinition = objectContainer[0];\r\n if (object === undefined)\r\n object = objectContainer[0] = { properties: {} };\r\n\r\n object.properties[propertyName] = value;\r\n }\r\n\r\n function applyRewritesToCategorical(prototype: DataViewCategorical, columnRewrites: ValueRewrite<DataViewMetadataColumn>[], selectsToInclude?: INumberDictionary<boolean>): DataViewCategorical {\r\n debug.assertValue(prototype, 'prototype');\r\n debug.assertValue(columnRewrites, 'columnRewrites');\r\n\r\n let categorical = inherit(prototype);\r\n\r\n function override(value: { source?: DataViewMetadataColumn }) {\r\n let rewrittenSource = findOverride(value.source, columnRewrites);\r\n if (rewrittenSource) {\r\n let rewritten = inherit(value);\r\n rewritten.source = rewrittenSource;\r\n return rewritten;\r\n }\r\n }\r\n\r\n let categories = Prototype.overrideArray(prototype.categories, override);\r\n if (categories)\r\n categorical.categories = categories;\r\n\r\n let values = Prototype.overrideArray(prototype.values, override);\r\n\r\n if (values) {\r\n if (selectsToInclude) {\r\n for (let i = values.length - 1; i >= 0; i--) {\r\n if (!selectsToInclude[values[i].source.index])\r\n values.splice(i, 1);\r\n }\r\n }\r\n\r\n if (values.source) {\r\n if (selectsToInclude && !selectsToInclude[values.source.index]) {\r\n values.source = undefined;\r\n }\r\n else {\r\n let rewrittenValuesSource = findOverride(values.source, columnRewrites);\r\n if (rewrittenValuesSource)\r\n values.source = rewrittenValuesSource;\r\n }\r\n }\r\n\r\n categorical.values = values;\r\n setGrouped(values);\r\n }\r\n\r\n return categorical;\r\n }\r\n\r\n function applyRewritesToTable(\r\n prototype: DataViewTable,\r\n columnRewrites: ValueRewrite<DataViewMetadataColumn>[],\r\n roleMappings: DataViewMapping[],\r\n projectionOrdering: DataViewProjectionOrdering): DataViewTable {\r\n debug.assertValue(prototype, 'prototype');\r\n debug.assertValue(columnRewrites, 'columnRewrites');\r\n\r\n // Don't perform this potentially expensive transform unless we actually have a table. \r\n // When we switch to lazy per-visual DataView creation, we'll be able to remove this check.\r\n if (!roleMappings || roleMappings.length !== 1 || !roleMappings[0].table)\r\n return prototype;\r\n\r\n let table = inherit(prototype);\r\n\r\n // Copy the rewritten columns into the table view\r\n let override = (metadata: DataViewMetadataColumn) => findOverride(metadata, columnRewrites);\r\n let columns = Prototype.overrideArray(prototype.columns, override);\r\n if (columns)\r\n table.columns = columns;\r\n\r\n if (!projectionOrdering)\r\n return table;\r\n\r\n let newToOldPositions = createTableColumnPositionMapping(projectionOrdering, columnRewrites);\r\n if (!newToOldPositions)\r\n return table;\r\n\r\n // Reorder the columns\r\n let columnsClone = columns.slice(0);\r\n let keys = Object.keys(newToOldPositions);\r\n for (let i = 0, len = keys.length; i < len; i++) {\r\n let sourceColumn = columnsClone[newToOldPositions[keys[i]]];\r\n\r\n // In the case we've hit the end of our columns array, but still have position reordering keys,\r\n // there is a duplicate column so we will need to add a new column for the duplicate data\r\n if (i === columns.length)\r\n columns.push(sourceColumn);\r\n else {\r\n debug.assert(i < columns.length, 'The column index is out of range for reordering.');\r\n columns[i] = sourceColumn;\r\n }\r\n }\r\n \r\n // Reorder the rows\r\n let rows = Prototype.overrideArray(table.rows,\r\n (row: any[]) => {\r\n let newRow: any[] = [];\r\n for (let i = 0, len = keys.length; i < len; ++i)\r\n newRow[i] = row[newToOldPositions[keys[i]]];\r\n\r\n return newRow;\r\n });\r\n\r\n if (rows)\r\n table.rows = rows;\r\n\r\n return table;\r\n }\r\n\r\n /** Creates a mapping of new position to original position. */\r\n function createTableColumnPositionMapping(\r\n projectionOrdering: DataViewProjectionOrdering,\r\n columnRewrites: ValueRewrite<DataViewMetadataColumn>[]): NumberToNumberMapping {\r\n let roles = Object.keys(projectionOrdering);\r\n\r\n // If we have more than one role then the ordering of columns between roles is ambiguous, so don't reorder anything.\r\n if (roles.length !== 1)\r\n return;\r\n\r\n let role = roles[0],\r\n originalOrder = _.map(columnRewrites, (rewrite: ValueRewrite<DataViewMetadataColumn>) => rewrite.from.index),\r\n newOrder = projectionOrdering[role];\r\n\r\n // Optimization: avoid rewriting the table if all columns are in their default positions.\r\n if (ArrayExtensions.sequenceEqual(originalOrder, newOrder, (x: number, y: number) => x === y))\r\n return;\r\n\r\n return createOrderMapping(originalOrder, newOrder);\r\n }\r\n\r\n function applyRewritesToMatrix(\r\n prototype: DataViewMatrix,\r\n columnRewrites: ValueRewrite<DataViewMetadataColumn>[],\r\n roleMappings: DataViewMapping[],\r\n projectionOrdering: DataViewProjectionOrdering,\r\n context: MatrixTransformationContext): DataViewMatrix {\r\n debug.assertValue(prototype, 'prototype');\r\n debug.assertValue(columnRewrites, 'columnRewrites');\r\n\r\n // Don't perform this potentially expensive transform unless we actually have a matrix. \r\n // When we switch to lazy per-visual DataView creation, we'll be able to remove this check.\r\n if (!roleMappings || roleMappings.length < 1 || !(roleMappings[0].matrix || (roleMappings[1] && roleMappings[1].matrix)))\r\n return prototype;\r\n\r\n let matrixMapping = roleMappings[0].matrix || roleMappings[1].matrix;\r\n let matrix = inherit(prototype);\r\n\r\n function override(metadata: DataViewMetadataColumn) {\r\n return findOverride(metadata, columnRewrites);\r\n }\r\n\r\n function overrideHierarchy(hierarchy: DataViewHierarchy): DataViewHierarchy {\r\n let rewrittenHierarchy: DataViewHierarchy = null;\r\n\r\n let newLevels = Prototype.overrideArray(\r\n hierarchy.levels,\r\n (level: DataViewHierarchyLevel) => {\r\n let newLevel: DataViewHierarchyLevel = null;\r\n let levelSources = Prototype.overrideArray(level.sources, override);\r\n if (levelSources)\r\n newLevel = ensureRewritten<DataViewHierarchyLevel>(newLevel, level, h => h.sources = levelSources);\r\n\r\n return newLevel;\r\n });\r\n if (newLevels)\r\n rewrittenHierarchy = ensureRewritten<DataViewHierarchy>(rewrittenHierarchy, hierarchy, r => r.levels = newLevels);\r\n\r\n return rewrittenHierarchy;\r\n }\r\n\r\n let rows = overrideHierarchy(matrix.rows);\r\n if (rows) {\r\n matrix.rows = rows;\r\n context.rowHierarchyRewritten = true;\r\n }\r\n\r\n let columns = overrideHierarchy(matrix.columns);\r\n if (columns) {\r\n matrix.columns = columns;\r\n context.columnHierarchyRewritten = true;\r\n }\r\n\r\n let valueSources = Prototype.overrideArray(matrix.valueSources, override);\r\n if (valueSources) {\r\n matrix.valueSources = valueSources;\r\n\r\n // Only need to reorder if we have more than one value source, and they are all bound to the same role\r\n let matrixValues = <DataViewRoleForMapping>matrixMapping.values;\r\n if (projectionOrdering && valueSources.length > 1 && matrixValues && matrixValues.for) {\r\n let columnLevels = columns.levels.length;\r\n if (columnLevels > 0) {\r\n let newToOldPositions = createMatrixValuesPositionMapping(matrixValues, projectionOrdering, valueSources, columnRewrites);\r\n if (newToOldPositions) {\r\n let keys = Object.keys(newToOldPositions);\r\n let numKeys = keys.length;\r\n\r\n // Reorder the value columns\r\n columns.root = DataViewPivotMatrix.cloneTree(columns.root);\r\n if (columnLevels === 1)\r\n reorderChildNodes(columns.root, newToOldPositions);\r\n else\r\n forEachNodeAtLevel(columns.root, columnLevels - 2, (node: DataViewMatrixNode) => reorderChildNodes(node, newToOldPositions));\r\n\r\n // Reorder the value rows\r\n matrix.rows.root = DataViewPivotMatrix.cloneTreeExecuteOnLeaf(matrix.rows.root, (node: DataViewMatrixNode) => {\r\n\r\n if (!node.values)\r\n return;\r\n\r\n let newValues: { [id: number]: DataViewTreeNodeValue } = {};\r\n\r\n let iterations = Object.keys(node.values).length / numKeys;\r\n for (let i = 0, len = iterations; i < len; i++) {\r\n let offset = i * numKeys;\r\n for (let keysIndex = 0; keysIndex < numKeys; keysIndex++)\r\n newValues[offset + keysIndex] = node.values[offset + newToOldPositions[keys[keysIndex]]];\r\n }\r\n\r\n node.values = newValues;\r\n });\r\n\r\n context.hierarchyTreesRewritten = true;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return matrix;\r\n }\r\n\r\n function reorderChildNodes(node: DataViewMatrixNode, newToOldPositions: NumberToNumberMapping): void {\r\n let keys = Object.keys(newToOldPositions);\r\n let numKeys = keys.length;\r\n let children = node.children;\r\n\r\n let childrenClone = children.slice(0);\r\n for (let i = 0, len = numKeys; i < len; i++) {\r\n let sourceColumn = childrenClone[newToOldPositions[keys[i]]];\r\n\r\n // In the case we've hit the end of our columns array, but still have position reordering keys,\r\n // there is a duplicate column so we will need to add a new column for the duplicate data\r\n if (i === children.length)\r\n children.push(sourceColumn);\r\n else {\r\n debug.assert(i < children.length, 'The column index is out of range for reordering.');\r\n children[i] = sourceColumn;\r\n }\r\n }\r\n }\r\n\r\n /** Creates a mapping of new position to original position. */\r\n function createMatrixValuesPositionMapping(\r\n matrixValues: DataViewRoleForMapping,\r\n projectionOrdering: DataViewProjectionOrdering,\r\n valueSources: DataViewMetadataColumn[],\r\n columnRewrites: ValueRewrite<DataViewMetadataColumn>[]): NumberToNumberMapping {\r\n\r\n let role = matrixValues.for.in;\r\n\r\n function matchValueSource(columnRewrite: ValueRewrite<DataViewMetadataColumn>) {\r\n for (let i = 0, len = valueSources.length; i < len; i++) {\r\n let valueSource = valueSources[i];\r\n if (valueSource === columnRewrite.to)\r\n return columnRewrite;\r\n }\r\n }\r\n\r\n let valueRewrites: ValueRewrite<DataViewMetadataColumn>[] = [];\r\n for (let i = 0, len = columnRewrites.length; i < len; i++) {\r\n let columnRewrite = columnRewrites[i];\r\n if (matchValueSource(columnRewrite))\r\n valueRewrites.push(columnRewrite);\r\n }\r\n\r\n let newOrder = projectionOrdering[role];\r\n let originalOrder = _.map(valueRewrites, (rewrite: ValueRewrite<DataViewMetadataColumn>) => rewrite.from.index);\r\n\r\n // Optimization: avoid rewriting the matrix if all leaf nodes are in their default positions.\r\n if (ArrayExtensions.sequenceEqual(originalOrder, newOrder, (x: number, y: number) => x === y))\r\n return;\r\n\r\n return createOrderMapping(originalOrder, newOrder);\r\n }\r\n\r\n function createOrderMapping(originalOrder: number[], newOrder: number[]): NumberToNumberMapping {\r\n let mapping: NumberToNumberMapping = {};\r\n for (let i = 0, len = newOrder.length; i < len; ++i) {\r\n let newPosition = newOrder[i];\r\n mapping[i] = originalOrder.indexOf(newPosition);\r\n }\r\n\r\n return mapping;\r\n }\r\n\r\n function forEachNodeAtLevel(node: DataViewMatrixNode, targetLevel: number, callback: (node: DataViewMatrixNode) => void): void {\r\n if (node.level === targetLevel) {\r\n callback(node);\r\n return;\r\n }\r\n\r\n let children = node.children;\r\n if (children && children.length > 0) {\r\n for (let i = 0, ilen = children.length; i < ilen; i++)\r\n forEachNodeAtLevel(children[i], targetLevel, callback);\r\n }\r\n }\r\n\r\n function findOverride(source: DataViewMetadataColumn, columnRewrites: ValueRewrite<DataViewMetadataColumn>[]): DataViewMetadataColumn {\r\n for (let i = 0, len = columnRewrites.length; i < len; i++) {\r\n let columnRewrite = columnRewrites[i];\r\n if (columnRewrite.from === source)\r\n return columnRewrite.to;\r\n }\r\n }\r\n\r\n function ensureRewritten<T>(rewritten: T, prototype: T, callback?: (rewritten: T) => void): T {\r\n if (!rewritten)\r\n rewritten = inherit(prototype);\r\n\r\n if (callback)\r\n callback(rewritten);\r\n\r\n return rewritten;\r\n }\r\n\r\n function transformObjects(\r\n dataView: DataView,\r\n targetDataViewKinds: StandardDataViewKinds,\r\n objectDescriptors: DataViewObjectDescriptors,\r\n objectDefinitions: DataViewObjectDefinitions,\r\n selectTransforms: DataViewSelectTransform[],\r\n colorAllocatorFactory: IColorAllocatorFactory): void {\r\n debug.assertValue(dataView, 'dataView');\r\n debug.assertValue(targetDataViewKinds, 'targetDataViewKinds');\r\n debug.assertAnyValue(objectDescriptors, 'objectDescriptors');\r\n debug.assertAnyValue(objectDefinitions, 'objectDefinitions');\r\n debug.assertAnyValue(selectTransforms, 'selectTransforms');\r\n debug.assertValue(colorAllocatorFactory, 'colorAllocatorFactory');\r\n\r\n if (!objectDescriptors)\r\n return;\r\n\r\n let objectsForAllSelectors = DataViewObjectEvaluationUtils.groupObjectsBySelector(objectDefinitions);\r\n DataViewObjectEvaluationUtils.addImplicitObjects(objectsForAllSelectors, objectDescriptors, dataView.metadata.columns, selectTransforms);\r\n\r\n let metadataOnce = objectsForAllSelectors.metadataOnce;\r\n let dataObjects = objectsForAllSelectors.data;\r\n if (metadataOnce)\r\n evaluateMetadataObjects(dataView, selectTransforms, objectDescriptors, metadataOnce.objects, dataObjects, colorAllocatorFactory);\r\n\r\n let metadataObjects = objectsForAllSelectors.metadata;\r\n if (metadataObjects) {\r\n for (let i = 0, len = metadataObjects.length; i < len; i++) {\r\n let metadataObject = metadataObjects[i];\r\n evaluateMetadataRepetition(dataView, selectTransforms, objectDescriptors, metadataObject.selector, metadataObject.objects);\r\n }\r\n }\r\n\r\n for (let i = 0, len = dataObjects.length; i < len; i++) {\r\n let dataObject = dataObjects[i];\r\n evaluateDataRepetition(dataView, targetDataViewKinds, objectDescriptors, dataObject.selector, dataObject.rules, dataObject.objects);\r\n }\r\n\r\n let userDefined = objectsForAllSelectors.userDefined;\r\n if (userDefined) {\r\n // TODO: We only handle user defined objects at the metadata level, but should be able to support them with arbitrary repetition.\r\n evaluateUserDefinedObjects(dataView, selectTransforms, objectDescriptors, userDefined);\r\n }\r\n }\r\n\r\n function evaluateUserDefinedObjects(\r\n dataView: DataView,\r\n selectTransforms: DataViewSelectTransform[],\r\n objectDescriptors: DataViewObjectDescriptors,\r\n objectDefns: DataViewObjectDefinitionsForSelector[]): void {\r\n debug.assertValue(dataView, 'dataView');\r\n debug.assertAnyValue(selectTransforms, 'selectTransforms');\r\n debug.assertValue(objectDescriptors, 'objectDescriptors');\r\n debug.assertValue(objectDefns, 'objectDefns');\r\n\r\n let dataViewObjects: DataViewObjects = dataView.metadata.objects;\r\n if (!dataViewObjects) {\r\n dataViewObjects = dataView.metadata.objects = {};\r\n }\r\n let evalContext = createStaticEvalContext(dataView, selectTransforms);\r\n\r\n for (let objectDefn of objectDefns) {\r\n let id = objectDefn.selector.id;\r\n\r\n let objects = DataViewObjectEvaluationUtils.evaluateDataViewObjects(evalContext, objectDescriptors, objectDefn.objects);\r\n\r\n for (let objectName in objects) {\r\n let object = <DataViewObject>objects[objectName];\r\n\r\n let map = <DataViewObjectMap>dataViewObjects[objectName];\r\n if (!map)\r\n map = dataViewObjects[objectName] = [];\r\n debug.assert(DataViewObjects.isUserDefined(map), 'expected DataViewObjectMap');\r\n\r\n // NOTE: We do not check for duplicate ids.\r\n map.push({ id: id, object: object });\r\n }\r\n }\r\n }\r\n\r\n /** Evaluates and sets properties on the DataView metadata. */\r\n function evaluateMetadataObjects(\r\n dataView: DataView,\r\n selectTransforms: DataViewSelectTransform[],\r\n objectDescriptors: DataViewObjectDescriptors,\r\n objectDefns: DataViewNamedObjectDefinition[],\r\n dataObjects: DataViewObjectDefinitionsForSelectorWithRule[],\r\n colorAllocatorFactory: IColorAllocatorFactory): void {\r\n debug.assertValue(dataView, 'dataView');\r\n debug.assertAnyValue(selectTransforms, 'selectTransforms');\r\n debug.assertValue(objectDescriptors, 'objectDescriptors');\r\n debug.assertValue(objectDefns, 'objectDefns');\r\n debug.assertValue(dataObjects, 'dataObjects');\r\n debug.assertValue(colorAllocatorFactory, 'colorAllocatorFactory');\r\n\r\n let evalContext = createStaticEvalContext(dataView, selectTransforms);\r\n let objects = DataViewObjectEvaluationUtils.evaluateDataViewObjects(evalContext, objectDescriptors, objectDefns);\r\n if (objects) {\r\n dataView.metadata.objects = objects;\r\n\r\n for (let objectName in objects) {\r\n let object = <DataViewObject>objects[objectName],\r\n objectDesc = objectDescriptors[objectName];\r\n\r\n for (let propertyName in object) {\r\n let propertyDesc = objectDesc.properties[propertyName],\r\n ruleDesc = propertyDesc.rule;\r\n if (!ruleDesc)\r\n continue;\r\n\r\n let definition = createRuleEvaluationInstance(\r\n dataView,\r\n colorAllocatorFactory,\r\n ruleDesc,\r\n objectName,\r\n object[propertyName],\r\n propertyDesc.type);\r\n if (!definition)\r\n continue;\r\n\r\n dataObjects.push(definition);\r\n }\r\n }\r\n }\r\n }\r\n\r\n function createRuleEvaluationInstance(\r\n dataView: DataView,\r\n colorAllocatorFactory: IColorAllocatorFactory,\r\n ruleDesc: DataViewObjectPropertyRuleDescriptor,\r\n objectName: string,\r\n propertyValue: DataViewPropertyValue,\r\n ruleType: StructuralTypeDescriptor): DataViewObjectDefinitionsForSelectorWithRule {\r\n debug.assertValue(dataView, 'dataView');\r\n debug.assertValue(colorAllocatorFactory, 'colorAllocatorFactory');\r\n debug.assertValue(ruleDesc, 'ruleDesc');\r\n debug.assertValue(propertyValue, 'propertyValue');\r\n debug.assertValue(ruleType, 'ruleType');\r\n\r\n let ruleOutput = ruleDesc.output;\r\n if (!ruleOutput)\r\n return;\r\n\r\n let selectorToCreate = findSelectorForRuleInput(dataView, ruleOutput.selector);\r\n if (!selectorToCreate)\r\n return;\r\n\r\n if (ruleType.fillRule)\r\n return createRuleEvaluationInstanceFillRule(dataView, colorAllocatorFactory, ruleDesc, selectorToCreate, objectName, <FillRule>propertyValue);\r\n\r\n if (ruleType.filter)\r\n return createRuleEvaluationInstanceFilter(dataView, ruleDesc, selectorToCreate, objectName, <SemanticFilter>propertyValue);\r\n }\r\n\r\n function createRuleEvaluationInstanceFillRule(\r\n dataView: DataView,\r\n colorAllocatorFactory: IColorAllocatorFactory,\r\n ruleDesc: DataViewObjectPropertyRuleDescriptor,\r\n selectorToCreate: Selector,\r\n objectName: string,\r\n propertyValue: FillRule): DataViewObjectDefinitionsForSelectorWithRule {\r\n debug.assertValue(dataView, 'dataView');\r\n debug.assertValue(colorAllocatorFactory, 'colorAllocatorFactory');\r\n debug.assertValue(ruleDesc, 'ruleDesc');\r\n debug.assertValue(selectorToCreate, 'selectorToCreate');\r\n debug.assertValue(propertyValue, 'propertyValue');\r\n\r\n let colorAllocator: IColorAllocator;\r\n if (propertyValue.linearGradient2)\r\n colorAllocator = createColorAllocatorLinearGradient2(dataView, colorAllocatorFactory, ruleDesc, propertyValue, propertyValue.linearGradient2);\r\n else if (propertyValue.linearGradient3)\r\n colorAllocator = createColorAllocatorLinearGradient3(dataView, colorAllocatorFactory, ruleDesc, propertyValue, propertyValue.linearGradient3);\r\n\r\n if (!colorAllocator)\r\n return;\r\n\r\n let rule = new ColorRuleEvaluation(ruleDesc.inputRole, colorAllocator);\r\n let fillRuleProperties: DataViewObjectPropertyDefinitions = {};\r\n fillRuleProperties[ruleDesc.output.property] = {\r\n solid: { color: rule }\r\n };\r\n\r\n return {\r\n selector: selectorToCreate,\r\n rules: [rule],\r\n objects: [{\r\n name: objectName,\r\n properties: fillRuleProperties,\r\n }]\r\n };\r\n }\r\n\r\n function createColorAllocatorLinearGradient2(\r\n dataView: DataView,\r\n colorAllocatorFactory: IColorAllocatorFactory,\r\n ruleDesc: DataViewObjectPropertyRuleDescriptor,\r\n propertyValueFillRule: FillRule,\r\n linearGradient2: LinearGradient2): IColorAllocator {\r\n debug.assertValue(dataView, 'dataView');\r\n debug.assertValue(colorAllocatorFactory, 'colorAllocatorFactory');\r\n debug.assertValue(ruleDesc, 'ruleDesc');\r\n debug.assertValue(linearGradient2, 'linearGradient2');\r\n\r\n linearGradient2 = propertyValueFillRule.linearGradient2;\r\n if (linearGradient2.min.value === undefined ||\r\n linearGradient2.max.value === undefined) {\r\n let inputRange = findRuleInputColumnNumberRange(dataView, ruleDesc.inputRole);\r\n if (!inputRange)\r\n return;\r\n\r\n if (linearGradient2.min.value === undefined)\r\n linearGradient2.min.value = inputRange.min;\r\n if (linearGradient2.max.value === undefined)\r\n linearGradient2.max.value = inputRange.max;\r\n }\r\n\r\n return colorAllocatorFactory.linearGradient2(propertyValueFillRule.linearGradient2);\r\n }\r\n\r\n function createColorAllocatorLinearGradient3(\r\n dataView: DataView,\r\n colorAllocatorFactory: IColorAllocatorFactory,\r\n ruleDesc: DataViewObjectPropertyRuleDescriptor,\r\n propertyValueFillRule: FillRule,\r\n linearGradient3: LinearGradient3): IColorAllocator {\r\n debug.assertValue(dataView, 'dataView');\r\n debug.assertValue(colorAllocatorFactory, 'colorAllocatorFactory');\r\n debug.assertValue(ruleDesc, 'ruleDesc');\r\n debug.assertValue(linearGradient3, 'linearGradient3');\r\n let splitScales: boolean = undefined;\r\n linearGradient3 = propertyValueFillRule.linearGradient3;\r\n if (linearGradient3.min.value === undefined ||\r\n linearGradient3.mid.value === undefined ||\r\n linearGradient3.max.value === undefined) {\r\n let inputRange = findRuleInputColumnNumberRange(dataView, ruleDesc.inputRole);\r\n if (!inputRange)\r\n return;\r\n\r\n splitScales =\r\n linearGradient3.min.value === undefined &&\r\n linearGradient3.max.value === undefined &&\r\n linearGradient3.mid.value !== undefined;\r\n\r\n if (linearGradient3.min.value === undefined) {\r\n linearGradient3.min.value = inputRange.min;\r\n }\r\n if (linearGradient3.max.value === undefined) {\r\n linearGradient3.max.value = inputRange.max;\r\n }\r\n if (linearGradient3.mid.value === undefined) {\r\n let midValue: number = (linearGradient3.max.value + linearGradient3.min.value) / 2;\r\n linearGradient3.mid.value = midValue;\r\n }\r\n }\r\n\r\n return colorAllocatorFactory.linearGradient3(propertyValueFillRule.linearGradient3, splitScales);\r\n }\r\n\r\n function createRuleEvaluationInstanceFilter(\r\n dataView: DataView,\r\n ruleDesc: DataViewObjectPropertyRuleDescriptor,\r\n selectorToCreate: Selector,\r\n objectName: string,\r\n propertyValue: SemanticFilter): DataViewObjectDefinitionsForSelectorWithRule {\r\n debug.assertValue(dataView, 'dataView');\r\n debug.assertValue(ruleDesc, 'ruleDesc');\r\n debug.assertValue(selectorToCreate, 'selectorToCreate');\r\n debug.assertValue(propertyValue, 'propertyValue');\r\n\r\n // NOTE: This is not right -- we ought to discover the keys from an IN operator expression to avoid additional dependencies.\r\n if (!dataView.categorical || !dataView.categorical.categories || dataView.categorical.categories.length !== 1)\r\n return;\r\n let identityFields = dataView.categorical.categories[0].identityFields;\r\n if (!identityFields)\r\n return;\r\n\r\n let scopeIds = SQExprConverter.asScopeIdsContainer(propertyValue, <SQExpr[]>identityFields);\r\n if (!scopeIds)\r\n return;\r\n\r\n let rule = new FilterRuleEvaluation(scopeIds);\r\n let properties: DataViewObjectPropertyDefinitions = {};\r\n properties[ruleDesc.output.property] = rule;\r\n\r\n return {\r\n selector: selectorToCreate,\r\n rules: [rule],\r\n objects: [{\r\n name: objectName,\r\n properties: properties,\r\n }]\r\n };\r\n }\r\n\r\n function evaluateDataRepetition(\r\n dataView: DataView,\r\n targetDataViewKinds: StandardDataViewKinds,\r\n objectDescriptors: DataViewObjectDescriptors,\r\n selector: Selector,\r\n rules: RuleEvaluation[],\r\n objectDefns: DataViewNamedObjectDefinition[]): void {\r\n debug.assertValue(dataView, 'dataView');\r\n debug.assertValue(targetDataViewKinds, 'targetDataViewKinds');\r\n debug.assertValue(objectDescriptors, 'objectDescriptors');\r\n debug.assertValue(selector, 'selector');\r\n debug.assertAnyValue(rules, 'rules');\r\n debug.assertValue(objectDefns, 'objectDefns');\r\n\r\n let containsWildcard = Selector.containsWildcard(selector);\r\n\r\n let dataViewCategorical = dataView.categorical;\r\n if (dataViewCategorical && EnumExtensions.hasFlag(targetDataViewKinds, StandardDataViewKinds.Categorical)) {\r\n // 1) Match against categories\r\n evaluateDataRepetitionCategoricalCategory(dataViewCategorical, objectDescriptors, selector, rules, containsWildcard, objectDefns);\r\n\r\n // 2) Match against valueGrouping\r\n evaluateDataRepetitionCategoricalValueGrouping(dataViewCategorical, objectDescriptors, selector, rules, containsWildcard, objectDefns);\r\n\r\n // Consider capturing diagnostics for unmatched selectors to help debugging.\r\n }\r\n\r\n let dataViewMatrix = dataView.matrix;\r\n if (dataViewMatrix && EnumExtensions.hasFlag(targetDataViewKinds, StandardDataViewKinds.Matrix)) {\r\n let rewrittenMatrix = evaluateDataRepetitionMatrix(dataViewMatrix, objectDescriptors, selector, rules, containsWildcard, objectDefns);\r\n if (rewrittenMatrix)\r\n dataView.matrix = rewrittenMatrix;\r\n \r\n // Consider capturing diagnostics for unmatched selectors to help debugging.\r\n }\r\n }\r\n\r\n function evaluateDataRepetitionCategoricalCategory(\r\n dataViewCategorical: DataViewCategorical,\r\n objectDescriptors: DataViewObjectDescriptors,\r\n selector: Selector,\r\n rules: RuleEvaluation[],\r\n containsWildcard: boolean,\r\n objectDefns: DataViewNamedObjectDefinition[]): boolean {\r\n debug.assertValue(dataViewCategorical, 'dataViewCategorical');\r\n debug.assertValue(objectDescriptors, 'objectDescriptors');\r\n debug.assertValue(selector, 'selector');\r\n debug.assertAnyValue(rules, 'rules');\r\n debug.assertValue(containsWildcard, 'containsWildcard');\r\n debug.assertValue(objectDefns, 'objectDefns');\r\n\r\n if (!dataViewCategorical.categories || dataViewCategorical.categories.length === 0)\r\n return;\r\n\r\n let targetColumn = findSelectedCategoricalColumn(dataViewCategorical, selector);\r\n if (!targetColumn)\r\n return;\r\n\r\n let identities = targetColumn.identities,\r\n foundMatch: boolean,\r\n evalContext = createCategoricalEvalContext(dataViewCategorical, identities);\r\n\r\n if (!identities)\r\n return;\r\n\r\n debug.assert(targetColumn.column.values.length === identities.length, 'Column length mismatch');\r\n\r\n for (let i = 0, len = identities.length; i < len; i++) {\r\n let identity = identities[i];\r\n\r\n if (containsWildcard || Selector.matchesData(selector, [identity])) {\r\n evalContext.setCurrentRowIndex(i);\r\n\r\n let objects = DataViewObjectEvaluationUtils.evaluateDataViewObjects(evalContext, objectDescriptors, objectDefns);\r\n if (objects) {\r\n // TODO: This mutates the DataView -- the assumption is that prototypal inheritance has already occurred. We should\r\n // revisit this, likely when we do lazy evaluation of DataView.\r\n if (!targetColumn.column.objects) {\r\n targetColumn.column.objects = [];\r\n targetColumn.column.objects.length = len;\r\n }\r\n targetColumn.column.objects[i] = objects;\r\n }\r\n\r\n if (!containsWildcard)\r\n return true;\r\n\r\n foundMatch = true;\r\n }\r\n }\r\n\r\n return foundMatch;\r\n }\r\n\r\n function evaluateDataRepetitionCategoricalValueGrouping(\r\n dataViewCategorical: DataViewCategorical,\r\n objectDescriptors: DataViewObjectDescriptors,\r\n selector: Selector,\r\n rules: RuleEvaluation[],\r\n containsWildcard: boolean,\r\n objectDefns: DataViewNamedObjectDefinition[]): boolean {\r\n debug.assertValue(dataViewCategorical, 'dataViewCategorical');\r\n debug.assertValue(objectDescriptors, 'objectDescriptors');\r\n debug.assertValue(selector, 'selector');\r\n debug.assertAnyValue(rules, 'rules');\r\n debug.assertValue(containsWildcard, 'containsWildcard');\r\n debug.assertValue(objectDefns, 'objectDefns');\r\n\r\n let dataViewCategoricalValues = dataViewCategorical.values;\r\n if (!dataViewCategoricalValues || !dataViewCategoricalValues.identityFields)\r\n return;\r\n\r\n if (!Selector.matchesKeys(selector, <SQExpr[][]>[dataViewCategoricalValues.identityFields]))\r\n return;\r\n\r\n let valuesGrouped = dataViewCategoricalValues.grouped();\r\n if (!valuesGrouped)\r\n return;\r\n\r\n // NOTE: We do not set the evalContext row index below because iteration is over value groups (i.e., columns, no rows).\r\n // This should be enhanced in the future.\r\n let evalContext = createCategoricalEvalContext(dataViewCategorical);\r\n\r\n let foundMatch: boolean;\r\n for (let i = 0, len = valuesGrouped.length; i < len; i++) {\r\n let valueGroup = valuesGrouped[i];\r\n let selectorMetadata = selector.metadata;\r\n let valuesInGroup = valueGroup.values;\r\n if (containsWildcard || Selector.matchesData(selector, [valueGroup.identity])) {\r\n let objects = DataViewObjectEvaluationUtils.evaluateDataViewObjects(evalContext, objectDescriptors, objectDefns);\r\n if (objects) {\r\n // TODO: This mutates the DataView -- the assumption is that prototypal inheritance has already occurred. We should\r\n // revisit this, likely when we do lazy evaluation of DataView.\r\n\r\n if (selectorMetadata) {\r\n for (let j = 0, jlen = valuesInGroup.length; j < jlen; j++) {\r\n let valueColumn = valuesInGroup[j],\r\n valueSource = valueColumn.source;\r\n if (valueSource.queryName === selectorMetadata) {\r\n let valueSourceOverwrite = Prototype.inherit(valueSource);\r\n valueSourceOverwrite.objects = objects;\r\n valueColumn.source = valueSourceOverwrite;\r\n\r\n foundMatch = true;\r\n break;\r\n }\r\n }\r\n }\r\n else {\r\n valueGroup.objects = objects;\r\n setGrouped(dataViewCategoricalValues, valuesGrouped);\r\n\r\n foundMatch = true;\r\n }\r\n }\r\n\r\n if (!containsWildcard)\r\n return true;\r\n }\r\n }\r\n\r\n return foundMatch;\r\n }\r\n\r\n function evaluateDataRepetitionMatrix(\r\n dataViewMatrix: DataViewMatrix,\r\n objectDescriptors: DataViewObjectDescriptors,\r\n selector: Selector,\r\n rules: RuleEvaluation[],\r\n containsWildcard: boolean,\r\n objectDefns: DataViewNamedObjectDefinition[]): DataViewMatrix {\r\n\r\n let evalContext = createMatrixEvalContext(dataViewMatrix);\r\n let rewrittenRows = evaluateDataRepetitionMatrixHierarchy(evalContext, dataViewMatrix.rows, objectDescriptors, selector, rules, containsWildcard, objectDefns);\r\n let rewrittenCols = evaluateDataRepetitionMatrixHierarchy(evalContext, dataViewMatrix.columns, objectDescriptors, selector, rules, containsWildcard, objectDefns);\r\n\r\n if (rewrittenRows || rewrittenCols) {\r\n let rewrittenMatrix = inheritSingle(dataViewMatrix);\r\n\r\n if (rewrittenRows)\r\n rewrittenMatrix.rows = rewrittenRows;\r\n if (rewrittenCols)\r\n rewrittenMatrix.columns = rewrittenCols;\r\n\r\n return rewrittenMatrix;\r\n }\r\n }\r\n\r\n function evaluateDataRepetitionMatrixHierarchy(\r\n evalContext: IEvalContext,\r\n dataViewMatrixHierarchy: DataViewHierarchy,\r\n objectDescriptors: DataViewObjectDescriptors,\r\n selector: Selector,\r\n rules: RuleEvaluation[],\r\n containsWildcard: boolean,\r\n objectDefns: DataViewNamedObjectDefinition[]): DataViewHierarchy {\r\n debug.assertAnyValue(dataViewMatrixHierarchy, 'dataViewMatrixHierarchy');\r\n debug.assertValue(objectDescriptors, 'objectDescriptors');\r\n debug.assertValue(selector, 'selector');\r\n debug.assertAnyValue(rules, 'rules');\r\n debug.assertValue(objectDefns, 'objectDefns');\r\n\r\n if (!dataViewMatrixHierarchy)\r\n return;\r\n\r\n let root = dataViewMatrixHierarchy.root;\r\n if (!root)\r\n return;\r\n\r\n let rewrittenRoot = evaluateDataRepetitionMatrixNode(evalContext, root, objectDescriptors, selector, rules, containsWildcard, objectDefns);\r\n if (rewrittenRoot) {\r\n let rewrittenHierarchy = inheritSingle(dataViewMatrixHierarchy);\r\n rewrittenHierarchy.root = rewrittenRoot;\r\n\r\n return rewrittenHierarchy;\r\n }\r\n }\r\n\r\n function evaluateDataRepetitionMatrixNode(\r\n evalContext: IEvalContext,\r\n dataViewNode: DataViewMatrixNode,\r\n objectDescriptors: DataViewObjectDescriptors,\r\n selector: Selector,\r\n rules: RuleEvaluation[],\r\n containsWildcard: boolean,\r\n objectDefns: DataViewNamedObjectDefinition[]): DataViewMatrixNode {\r\n debug.assertValue(evalContext, 'evalContext');\r\n debug.assertValue(dataViewNode, 'dataViewNode');\r\n debug.assertValue(objectDescriptors, 'objectDescriptors');\r\n debug.assertValue(selector, 'selector');\r\n debug.assertAnyValue(rules, 'rules');\r\n debug.assertValue(objectDefns, 'objectDefns');\r\n\r\n let childNodes = dataViewNode.children;\r\n if (!childNodes)\r\n return;\r\n\r\n let rewrittenNode: DataViewMatrixNode;\r\n let shouldSearchChildren: boolean;\r\n let childIdentityFields = dataViewNode.childIdentityFields;\r\n if (childIdentityFields) {\r\n // NOTE: selector matching in matrix currently only considers the current node, and does not consider parents as part of the match.\r\n shouldSearchChildren = Selector.matchesKeys(selector, <SQExpr[][]>[childIdentityFields]);\r\n }\r\n\r\n for (let i = 0, len = childNodes.length; i < len; i++) {\r\n let childNode = childNodes[i],\r\n identity = childNode.identity,\r\n rewrittenChildNode: DataViewMatrixNode = null;\r\n\r\n if (shouldSearchChildren) {\r\n if (containsWildcard || Selector.matchesData(selector, [identity])) {\r\n // TODO: Need to initialize context for rule-based properties. Rule-based properties\r\n // (such as fillRule/gradients) are not currently implemented.\r\n\r\n let objects = DataViewObjectEvaluationUtils.evaluateDataViewObjects(evalContext, objectDescriptors, objectDefns);\r\n if (objects) {\r\n rewrittenChildNode = inheritSingle(childNode);\r\n rewrittenChildNode.objects = objects;\r\n }\r\n }\r\n }\r\n else {\r\n rewrittenChildNode = evaluateDataRepetitionMatrixNode(\r\n evalContext,\r\n childNode,\r\n objectDescriptors,\r\n selector,\r\n rules,\r\n containsWildcard,\r\n objectDefns);\r\n }\r\n\r\n if (rewrittenChildNode) {\r\n if (!rewrittenNode)\r\n rewrittenNode = inheritNodeAndChildren(dataViewNode);\r\n rewrittenNode.children[i] = rewrittenChildNode;\r\n\r\n if (!containsWildcard) {\r\n // NOTE: once we find a match for a non-wildcard selector, stop looking.\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return rewrittenNode;\r\n }\r\n\r\n function inheritNodeAndChildren(node: DataViewMatrixNode): DataViewMatrixNode {\r\n if (Object.getPrototypeOf(node) !== Object.prototype) {\r\n return node;\r\n }\r\n\r\n let inherited = inheritSingle(node);\r\n inherited.children = inherit(node.children);\r\n return inherited;\r\n }\r\n\r\n function evaluateMetadataRepetition(\r\n dataView: DataView,\r\n selectTransforms: DataViewSelectTransform[],\r\n objectDescriptors: DataViewObjectDescriptors,\r\n selector: Selector,\r\n objectDefns: DataViewNamedObjectDefinition[]): void {\r\n debug.assertValue(dataView, 'dataView');\r\n debug.assertAnyValue(selectTransforms, 'selectTransforms');\r\n debug.assertValue(objectDescriptors, 'objectDescriptors');\r\n debug.assertValue(selector, 'selector');\r\n debug.assertValue(objectDefns, 'objectDefns');\r\n\r\n // TODO: This mutates the DataView -- the assumption is that prototypal inheritance has already occurred. We should\r\n // revisit this, likely when we do lazy evaluation of DataView.\r\n let columns = dataView.metadata.columns,\r\n metadataId = selector.metadata,\r\n evalContext = createStaticEvalContext(dataView, selectTransforms);\r\n for (let i = 0, len = columns.length; i < len; i++) {\r\n let column = columns[i];\r\n if (column.queryName === metadataId) {\r\n let objects = DataViewObjectEvaluationUtils.evaluateDataViewObjects(evalContext, objectDescriptors, objectDefns);\r\n if (objects)\r\n column.objects = objects;\r\n }\r\n }\r\n }\r\n\r\n /** Attempts to find a column that can possibly match the selector. */\r\n function findSelectedCategoricalColumn(dataViewCategorical: DataViewCategorical, selector: Selector) {\r\n debug.assertValue(dataViewCategorical.categories[0], 'dataViewCategorical.categories[0]');\r\n\r\n let categoricalColumn = dataViewCategorical.categories[0];\r\n if (!categoricalColumn.identityFields)\r\n return;\r\n if (!Selector.matchesKeys(selector, <SQExpr[][]>[categoricalColumn.identityFields]))\r\n return;\r\n\r\n let identities = categoricalColumn.identity,\r\n targetColumn: DataViewCategoricalColumn = categoricalColumn;\r\n\r\n let selectedMetadataId = selector.metadata;\r\n if (selectedMetadataId) {\r\n let valueColumns = dataViewCategorical.values;\r\n if (valueColumns) {\r\n for (let i = 0, len = valueColumns.length; i < len; i++) {\r\n let valueColumn = valueColumns[i];\r\n if (valueColumn.source.queryName === selectedMetadataId) {\r\n targetColumn = valueColumn;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return {\r\n column: targetColumn,\r\n identities: identities,\r\n };\r\n }\r\n\r\n function findSelectorForRuleInput(dataView: DataView, selectorRoles: string[]): Selector {\r\n debug.assertValue(dataView, 'dataView');\r\n debug.assertValue(selectorRoles, 'selectorRoles');\r\n\r\n if (selectorRoles.length !== 1)\r\n return;\r\n\r\n let dataViewCategorical = dataView.categorical;\r\n if (!dataViewCategorical)\r\n return;\r\n\r\n let categories = dataViewCategorical.categories;\r\n if (!categories || categories.length !== 1)\r\n return;\r\n\r\n let categoryColumn = categories[0],\r\n categoryRoles = categoryColumn.source.roles,\r\n categoryIdentityFields = categoryColumn.identityFields;\r\n if (!categoryRoles || !categoryIdentityFields || !categoryRoles[selectorRoles[0]])\r\n return;\r\n\r\n return { data: [DataViewScopeWildcard.fromExprs(<SQExpr[]>categoryIdentityFields)] };\r\n }\r\n\r\n /** Attempts to find the value range for the single column with the given inputRole. */\r\n function findRuleInputColumnNumberRange(dataView: DataView, inputRole: string): NumberRange {\r\n debug.assertValue(dataView, 'dataView');\r\n debug.assertValue(inputRole, 'inputRole');\r\n\r\n // NOTE: This implementation currently only supports categorical DataView, becuase that's the\r\n // only scenario that has custom colors, as of this writing. This would be rewritten to be more generic\r\n // as required, when needed.\r\n let dataViewCategorical = dataView.categorical;\r\n if (!dataViewCategorical)\r\n return;\r\n\r\n let values = dataViewCategorical.values;\r\n if (!values)\r\n return;\r\n\r\n for (let i = 0, len = values.length; i < len; i++) {\r\n let valueCol = values[i],\r\n valueColRoles = valueCol.source.roles;\r\n\r\n if (!valueColRoles || !valueColRoles[inputRole])\r\n continue;\r\n\r\n let min = valueCol.min;\r\n if (min === undefined)\r\n min = valueCol.minLocal;\r\n if (min === undefined)\r\n continue;\r\n\r\n let max = valueCol.max;\r\n if (max === undefined)\r\n max = valueCol.maxLocal;\r\n if (max === undefined)\r\n continue;\r\n\r\n return { min: min, max: max };\r\n }\r\n }\r\n\r\n export function createTransformActions(\r\n queryMetadata: QueryMetadata,\r\n visualElements: VisualElement[],\r\n objectDescs: DataViewObjectDescriptors,\r\n objectDefns: DataViewObjectDefinitions): DataViewTransformActions {\r\n debug.assertAnyValue(queryMetadata, 'queryMetadata');\r\n debug.assertAnyValue(visualElements, 'visualElements');\r\n debug.assertAnyValue(objectDescs, 'objectDescs');\r\n debug.assertAnyValue(objectDefns, 'objectDefns');\r\n\r\n if ((!queryMetadata || _.isEmpty(queryMetadata.Select)) &&\r\n _.isEmpty(visualElements) &&\r\n !objectDefns)\r\n return;\r\n\r\n let transforms: DataViewTransformActions = {};\r\n if (queryMetadata) {\r\n let querySelects = queryMetadata.Select;\r\n if (querySelects) {\r\n let transformSelects: DataViewSelectTransform[] = transforms.selects = [];\r\n for (let i = 0, len = querySelects.length; i < len; i++) {\r\n let selectMetadata = querySelects[i],\r\n selectTransform = toTransformSelect(selectMetadata, i);\r\n transformSelects.push(selectTransform);\r\n\r\n if (selectTransform.format && objectDescs) {\r\n debug.assert(!!selectTransform.queryName, 'selectTransform.queryName should be defined (or defaulted).');\r\n\r\n let formatStringProp = DataViewObjectDescriptors.findFormatString(objectDescs);\r\n if (formatStringProp) {\r\n // Select Format strings are migrated into objects\r\n if (!objectDefns)\r\n objectDefns = {};\r\n\r\n DataViewObjectDefinitions.ensure(\r\n objectDefns,\r\n formatStringProp.objectName,\r\n { metadata: selectTransform.queryName })\r\n .properties[formatStringProp.propertyName] = SQExprBuilder.text(selectTransform.format);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (visualElements) {\r\n let visualElementsLength = visualElements.length;\r\n if (visualElementsLength > 1)\r\n transforms.splits = [];\r\n\r\n for (let i = 0; i < visualElementsLength; i++) {\r\n let visualElement = visualElements[i];\r\n\r\n if (visualElement.Settings && i === 0)\r\n objectDefns = upgradeSettingsToObjects(visualElement.Settings, objectDefns);\r\n\r\n if (visualElement.DataRoles) {\r\n if (!transforms.selects)\r\n transforms.selects = [];\r\n if (!transforms.projectionOrdering)\r\n transforms.projectionOrdering = {};\r\n\r\n populateDataRoles(visualElement.DataRoles, transforms.selects, transforms.projectionOrdering);\r\n }\r\n\r\n if (transforms.splits)\r\n transforms.splits.push(populateSplit(visualElement.DataRoles));\r\n }\r\n }\r\n\r\n if (objectDefns)\r\n transforms.objects = objectDefns;\r\n\r\n return transforms;\r\n }\r\n\r\n function toTransformSelect(select: SelectMetadata, index: number): DataViewSelectTransform {\r\n debug.assertValue(select, 'select');\r\n\r\n let result: DataViewSelectTransform = {};\r\n\r\n if (select.Restatement)\r\n result.displayName = select.Restatement;\r\n\r\n if (select.Name)\r\n result.queryName = select.Name;\r\n else if (!result.queryName)\r\n result.queryName = '$select' + index;\r\n\r\n if (select.Format)\r\n result.format = select.Format;\r\n\r\n if (select.Type) {\r\n result.type = describeDataType(select.Type, ConceptualDataCategory[select.DataCategory]);\r\n }\r\n\r\n if (select.kpi) {\r\n result.kpi = select.kpi;\r\n }\r\n\r\n if (select.kpiStatusGraphic) {\r\n result.kpi = {\r\n graphic: select.kpiStatusGraphic\r\n };\r\n }\r\n\r\n return result;\r\n }\r\n\r\n function describeDataType(type?: SemanticType, category?: string): ValueType {\r\n type = (type || SemanticType.None);\r\n\r\n let primitiveType = PrimitiveType.Null;\r\n switch (type) {\r\n case SemanticType.String:\r\n primitiveType = PrimitiveType.Text;\r\n break;\r\n case SemanticType.Number:\r\n primitiveType = PrimitiveType.Double;\r\n break;\r\n case SemanticType.Integer:\r\n primitiveType = PrimitiveType.Integer;\r\n break;\r\n case SemanticType.Boolean:\r\n primitiveType = PrimitiveType.Boolean;\r\n break;\r\n case SemanticType.Date:\r\n primitiveType = PrimitiveType.Date;\r\n break;\r\n case SemanticType.DateTime:\r\n primitiveType = PrimitiveType.DateTime;\r\n break;\r\n case SemanticType.Time:\r\n primitiveType = PrimitiveType.Time;\r\n break;\r\n case SemanticType.Year:\r\n primitiveType = PrimitiveType.Integer;\r\n debug.assert(!category || category === 'Year', 'Unexpected category for Year type.');\r\n category = 'Year';\r\n break;\r\n case SemanticType.Month:\r\n primitiveType = PrimitiveType.Integer;\r\n debug.assert(!category || category === 'Month', 'Unexpected category for Month type.');\r\n category = 'Month';\r\n break;\r\n }\r\n\r\n return ValueType.fromPrimitiveTypeAndCategory(primitiveType, category);\r\n }\r\n\r\n function populateDataRoles(\r\n roles: DataRole[],\r\n selects: DataViewSelectTransform[],\r\n projectionOrdering: DataViewProjectionOrdering): void {\r\n debug.assertValue(roles, 'roles');\r\n debug.assertValue(selects, 'selects');\r\n debug.assertValue(projectionOrdering, 'projectionOrdering');\r\n\r\n for (let i = 0, len = roles.length; i < len; i++) {\r\n let role = roles[i],\r\n roleProjection = role.Projection,\r\n roleName = role.Name;\r\n\r\n // Update the select\r\n let select = selects[roleProjection];\r\n if (select === undefined) {\r\n fillArray(selects, roleProjection);\r\n select = selects[roleProjection] = {};\r\n }\r\n\r\n let selectRoles = select.roles;\r\n if (select.roles === undefined)\r\n selectRoles = select.roles = {};\r\n\r\n selectRoles[roleName] = true;\r\n\r\n // Update the projectionOrdering\r\n let projectionOrderingForRole = projectionOrdering[roleName];\r\n if (projectionOrderingForRole === undefined)\r\n projectionOrderingForRole = projectionOrdering[roleName] = [];\r\n projectionOrderingForRole.push(roleProjection);\r\n }\r\n }\r\n\r\n function fillArray(selects: DataViewSelectTransform[], length: number): void {\r\n debug.assertValue(selects, 'selects');\r\n debug.assertValue(length, 'length');\r\n\r\n for (let i = selects.length; i < length; i++)\r\n selects[i] = {};\r\n }\r\n\r\n function populateSplit(roles: DataRole[]): DataViewSplitTransform {\r\n debug.assertAnyValue(roles, 'roles');\r\n\r\n let selects: INumberDictionary<boolean> = {};\r\n let split: DataViewSplitTransform = {\r\n selects: selects\r\n };\r\n\r\n if (roles) {\r\n for (let i = 0, len = roles.length; i < len; i++) {\r\n let role = roles[i];\r\n selects[role.Projection] = true;\r\n }\r\n }\r\n\r\n return split;\r\n }\r\n\r\n export function createValueColumns(\r\n values: DataViewValueColumn[] = [],\r\n valueIdentityFields?: SQExpr[],\r\n source?: DataViewMetadataColumn): DataViewValueColumns {\r\n let result = <DataViewValueColumns>values;\r\n setGrouped(<DataViewValueColumns>values);\r\n\r\n if (valueIdentityFields)\r\n result.identityFields = valueIdentityFields;\r\n\r\n if (source)\r\n result.source = source;\r\n\r\n return result;\r\n }\r\n\r\n function setGrouped(values: DataViewValueColumns, groupedResult?: DataViewValueColumnGroup[]): void {\r\n values.grouped = groupedResult\r\n ? () => groupedResult\r\n : () => groupValues(values);\r\n }\r\n\r\n /** Group together the values with a common identity. */\r\n function groupValues(values: DataViewValueColumn[]): DataViewValueColumnGroup[] {\r\n debug.assertValue(values, 'values');\r\n\r\n let groups: DataViewValueColumnGroup[] = [],\r\n currentGroup: DataViewValueColumnGroup;\r\n\r\n for (let i = 0, len = values.length; i < len; i++) {\r\n let value = values[i];\r\n\r\n if (!currentGroup || currentGroup.identity !== value.identity) {\r\n currentGroup = {\r\n values: []\r\n };\r\n\r\n if (value.identity) {\r\n currentGroup.identity = value.identity;\r\n\r\n let source = value.source;\r\n\r\n // allow null, which will be formatted as (Blank).\r\n if (source.groupName !== undefined)\r\n currentGroup.name = source.groupName;\r\n else if (source.displayName)\r\n currentGroup.name = source.displayName;\r\n }\r\n\r\n groups.push(currentGroup);\r\n }\r\n\r\n currentGroup.values.push(value);\r\n }\r\n\r\n return groups;\r\n }\r\n\r\n function pivotIfNecessary(dataView: DataView, dataViewMappings: DataViewMapping[]): DataView {\r\n debug.assertValue(dataView, 'dataView');\r\n\r\n let transformedDataView: DataView;\r\n switch (determineCategoricalTransformation(dataView.categorical, dataViewMappings)) {\r\n case CategoricalDataViewTransformation.Pivot:\r\n transformedDataView = DataViewPivotCategorical.apply(dataView);\r\n break;\r\n\r\n case CategoricalDataViewTransformation.SelfCrossJoin:\r\n transformedDataView = DataViewSelfCrossJoin.apply(dataView);\r\n break;\r\n }\r\n\r\n return transformedDataView || dataView;\r\n }\r\n\r\n function determineCategoricalTransformation(categorical: DataViewCategorical, dataViewMappings: DataViewMapping[]): CategoricalDataViewTransformation {\r\n if (!categorical || _.isEmpty(dataViewMappings))\r\n return;\r\n\r\n let categories = categorical.categories;\r\n if (!categories || categories.length !== 1)\r\n return;\r\n\r\n let values = categorical.values;\r\n if (_.isEmpty(values))\r\n return;\r\n\r\n if (values.grouped().some(vg => !!vg.identity))\r\n return;\r\n\r\n // If we made it here, the DataView has a single category and no valueGrouping.\r\n let categoryRoles = categories[0].source.roles;\r\n\r\n for (let i = 0, len = dataViewMappings.length; i < len; i++) {\r\n let roleMappingCategorical = dataViewMappings[i].categorical;\r\n if (!roleMappingCategorical)\r\n continue;\r\n\r\n if (!hasRolesGrouped(categoryRoles, <DataViewGroupedRoleMapping>roleMappingCategorical.values))\r\n continue;\r\n\r\n // If we made it here, the DataView's single category has the value grouping role.\r\n let categoriesMapping = roleMappingCategorical.categories;\r\n let hasCategoryRole =\r\n hasRolesBind(categoryRoles, <DataViewRoleBindMappingWithReduction>categoriesMapping) ||\r\n hasRolesFor(categoryRoles, <DataViewRoleForMappingWithReduction>categoriesMapping);\r\n\r\n if (hasCategoryRole)\r\n return CategoricalDataViewTransformation.SelfCrossJoin;\r\n\r\n return CategoricalDataViewTransformation.Pivot;\r\n }\r\n }\r\n\r\n function shouldPivotMatrix(matrix: DataViewMatrix, dataViewMappings: DataViewMapping[]): boolean {\r\n if (!matrix || _.isEmpty(dataViewMappings))\r\n return;\r\n\r\n let rowLevels = matrix.rows.levels;\r\n if (rowLevels.length < 1)\r\n return;\r\n\r\n let rows = matrix.rows.root.children;\r\n if (!rows || rows.length === 0)\r\n return;\r\n\r\n let rowRoles = rowLevels[0].sources[0].roles;\r\n\r\n for (let i = 0, len = dataViewMappings.length; i < len; i++) {\r\n let roleMappingMatrix = dataViewMappings[i].matrix;\r\n if (!roleMappingMatrix)\r\n continue;\r\n\r\n if (!hasRolesFor(rowRoles, <DataViewRoleForMappingWithReduction>roleMappingMatrix.rows) &&\r\n hasRolesFor(rowRoles, <DataViewRoleForMappingWithReduction>roleMappingMatrix.columns)) {\r\n return true;\r\n }\r\n }\r\n }\r\n\r\n function hasRolesBind(roles: { [name: string]: boolean }, roleMapping: DataViewRoleBindMappingWithReduction): boolean {\r\n if (roles && roleMapping && roleMapping.bind)\r\n return roles[roleMapping.bind.to];\r\n }\r\n\r\n function hasRolesFor(roles: { [name: string]: boolean }, roleMapping: DataViewRoleForMappingWithReduction): boolean {\r\n if (roles && roleMapping && roleMapping.for)\r\n return roles[roleMapping.for.in];\r\n }\r\n\r\n function hasRolesGrouped(roles: { [name: string]: boolean }, roleMapping: DataViewGroupedRoleMapping): boolean {\r\n if (roles && roleMapping && roleMapping.group)\r\n return roles[roleMapping.group.by];\r\n }\r\n }\r\n}\r\n","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved.\r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n *\r\n * The above copyright notice and this permission notice shall be included in\r\n * all copies or substantial portions of the Software.\r\n *\r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.data {\r\n import inheritSingle = Prototype.inheritSingle;\r\n\r\n export interface DataViewNormalizeValuesApplyOptions {\r\n dataview: DataView;\r\n dataViewMappings: DataViewMapping[];\r\n dataRoles: VisualDataRole[];\r\n }\r\n\r\n export interface IMetadataColumnFilter {\r\n (columnIndex: number): boolean;\r\n }\r\n\r\n export interface IColumnValueFilter {\r\n (value: any): boolean;\r\n }\r\n\r\n export interface IValueFilter {\r\n (columnIndex: number, value: any): boolean;\r\n }\r\n\r\n export module DataViewNormalizeValues {\r\n export function apply(options: DataViewNormalizeValuesApplyOptions): void {\r\n debug.assertValue(options, 'options');\r\n\r\n let rolesToNormalize = _.filter(options.dataRoles, role => !_.isEmpty(role.requiredTypes));\r\n\r\n filterVariantMeasures(options.dataview, options.dataViewMappings, rolesToNormalize);\r\n }\r\n\r\n export function filterVariantMeasures(dataview: DataView, dataViewMappings: DataViewMapping[], rolesToNormalize: VisualDataRole[]): void {\r\n debug.assertValue(dataview, 'dataview');\r\n\r\n // Don't perform this unless we actually have dataViewMappings and variant measures to suppress\r\n // When we switch to lazy per-visual DataView creation, we'll be able to remove this check.\r\n if (_.isEmpty(dataViewMappings) || _.isEmpty(rolesToNormalize))\r\n return;\r\n\r\n let columnFilter = generateMetadataColumnFilter(dataview.metadata.columns, rolesToNormalize);\r\n let valueFilter = generateValueFilter(dataview.metadata.columns, rolesToNormalize);\r\n\r\n let usedMappings = {};\r\n for (let dataViewMapping of dataViewMappings) {\r\n // Get dataview specified in mappings which are also in dataview\r\n for (let dataViewMappingProp in dataViewMapping) {\r\n if (dataview[dataViewMappingProp] != null)\r\n usedMappings[dataViewMappingProp] = true;\r\n }\r\n }\r\n\r\n if (usedMappings['categorical'])\r\n filterVariantMeasuresCategorical(dataview.categorical, columnFilter, valueFilter);\r\n if (usedMappings['table'])\r\n filterVariantMeasuresTable(dataview.table, columnFilter, valueFilter);\r\n if (usedMappings['tree'])\r\n filterVariantMeasuresTreeNode(dataview.tree.root, columnFilter, valueFilter);\r\n if (usedMappings['matrix'])\r\n filterVariantMeasuresMatrix(dataview.matrix, columnFilter, valueFilter);\r\n if (usedMappings['single'])\r\n filterVariantMeasuresSingle(dataview, dataViewMappings, rolesToNormalize, valueFilter);\r\n }\r\n\r\n export function generateMetadataColumnFilter(columns: DataViewMetadataColumn[], rolesToNormalize: VisualDataRole[]): IMetadataColumnFilter {\r\n if (!columns || !rolesToNormalize)\r\n return () => false;\r\n\r\n let columnsToNormalize = {};\r\n for (let column of columns) {\r\n let roles = column.roles;\r\n if (!roles)\r\n continue;\r\n for (let role of rolesToNormalize) {\r\n if (!roles[role.name])\r\n continue;\r\n columnsToNormalize[column.index] = true;\r\n break;\r\n }\r\n }\r\n\r\n return (columnIndex: number) => {\r\n if (isNaN(columnIndex))\r\n return false;\r\n\r\n return !!columnsToNormalize[columnIndex];\r\n };\r\n }\r\n\r\n export function generateValueFilter(columns: DataViewMetadataColumn[], rolesToNormalize: VisualDataRole[]): IValueFilter {\r\n if (!columns || !rolesToNormalize)\r\n return () => true;\r\n\r\n let columnValueFilters: IColumnValueFilter[] = [];\r\n\r\n // Build columnValueFilters based on role requiredTypes\r\n for (let column of columns) {\r\n let columnValueFilter = generateColumnValueFilter(column, rolesToNormalize);\r\n\r\n if (columnValueFilter)\r\n columnValueFilters[column.index] = columnValueFilter;\r\n }\r\n\r\n return <IValueFilter>(columnIndex: number, value: any) => {\r\n if (columnValueFilters[columnIndex])\r\n return columnValueFilters[columnIndex](value);\r\n\r\n return true;\r\n };\r\n }\r\n\r\n function generateColumnValueFilter(column: DataViewMetadataColumn, rolesToNormalize: VisualDataRole[]): IColumnValueFilter {\r\n let requiredTypes = getColumnRequiredTypes(column, rolesToNormalize);\r\n\r\n if (_.isEmpty(requiredTypes))\r\n return;\r\n\r\n return (value: any): boolean => {\r\n return doesValueMatchTypes(value, requiredTypes);\r\n };\r\n }\r\n\r\n export function getColumnRequiredTypes(column: DataViewMetadataColumn, rolesToNormalize: VisualDataRole[]): ValueType[] {\r\n let requiredTypes = [];\r\n let columnRoles = column && column.roles;\r\n\r\n if (!columnRoles)\r\n return requiredTypes;\r\n\r\n for (let role of rolesToNormalize) {\r\n if (!columnRoles[role.name])\r\n continue;\r\n for (let typeDescriptor of role.requiredTypes) {\r\n let type = ValueType.fromDescriptor(typeDescriptor);\r\n requiredTypes.push(type);\r\n }\r\n }\r\n\r\n return requiredTypes;\r\n }\r\n\r\n function filterVariantMeasuresCategorical(dataview: DataViewCategorical, columnFilter: IMetadataColumnFilter, valueFilter: IValueFilter): void {\r\n let values = dataview && dataview.values;\r\n if (!values)\r\n return;\r\n\r\n let valuesGrouped = values.grouped();\r\n if (!valuesGrouped)\r\n return;\r\n\r\n for (let valueGroup of valuesGrouped) {\r\n let valuesInGroup = valueGroup.values;\r\n for (let valueColumn of valuesInGroup) {\r\n let columnIndex = valueColumn.source.index;\r\n if (!columnFilter(columnIndex))\r\n continue;\r\n\r\n for (let i = 0, ilen = valueColumn.values.length; i < ilen; i++) {\r\n valueColumn.values = normalizeVariant(valueColumn.values, i, columnIndex, valueFilter);\r\n }\r\n }\r\n }\r\n }\r\n\r\n function filterVariantMeasuresTable(dataview: DataViewTable, columnFilter: IMetadataColumnFilter, valueFilter: IValueFilter): void {\r\n let columns = dataview && dataview.columns;\r\n\r\n if (!columns)\r\n return;\r\n\r\n let filteredColumns = [];\r\n for (let column of columns) {\r\n if (columnFilter(column.index))\r\n filteredColumns.push(column.index);\r\n }\r\n\r\n let rows = dataview.rows;\r\n for (let i = 0, ilen = rows.length; i < ilen; i++) {\r\n for (let index of filteredColumns) {\r\n rows[i] = normalizeVariant(rows[i], index, index, valueFilter);\r\n }\r\n }\r\n }\r\n\r\n function filterVariantMeasuresTreeNode(node: DataViewTreeNode, columnFilter: IMetadataColumnFilter, valueFilter: IValueFilter): void {\r\n if (node.values) {\r\n for (let valueSourceIndex in node.values) {\r\n // key in node.values corresponds to valueSourceIndex\r\n if (columnFilter(valueSourceIndex)) {\r\n if (typeof (node.values[valueSourceIndex]) === 'object' && ('value' in node.values[valueSourceIndex]))\r\n node.values[valueSourceIndex] = normalizeVariant(node.values[valueSourceIndex], 'value', valueSourceIndex, valueFilter);\r\n else\r\n node.values = normalizeVariant(node.values, valueSourceIndex, valueSourceIndex, valueFilter);\r\n }\r\n }\r\n }\r\n else if (node.children) {\r\n for (let child of node.children) {\r\n filterVariantMeasuresTreeNode(child, columnFilter, valueFilter);\r\n }\r\n }\r\n }\r\n\r\n function filterVariantMeasuresMatrix(dataview: DataViewMatrix, columnFilter: IMetadataColumnFilter, valueFilter: IValueFilter): void {\r\n let root = dataview && dataview.rows && dataview.rows.root;\r\n\r\n if (!root)\r\n return;\r\n\r\n // Convert dataview.valueSources index to match dataview.metadata.columns\r\n let adjustedColumnFilter = (index) => {\r\n index = toMetadataColumnIndex(dataview.valueSources, index);\r\n return index ? columnFilter(index) : false;\r\n };\r\n\r\n let adjustedValueFilter = (index, value) => {\r\n index = toMetadataColumnIndex(dataview.valueSources, index);\r\n return index ? valueFilter(index, value) : true;\r\n };\r\n\r\n // Recurse into rows.children\r\n // e.g. rows.children -> .children -> .children.values\r\n filterVariantMeasuresTreeNode(root, adjustedColumnFilter, adjustedValueFilter);\r\n }\r\n\r\n function filterVariantMeasuresSingle(dataview: DataView, dataViewMappings: DataViewMapping[], rolesToNormalize: VisualDataRole[], valueFilter: IValueFilter): void {\r\n if (!dataview.single)\r\n return;\r\n\r\n let roleNames: string[] = [];\r\n for (let role of rolesToNormalize) {\r\n if (role.name)\r\n roleNames.push(role.name);\r\n }\r\n\r\n let columns = dataview.metadata.columns;\r\n for (let dataViewMapping of dataViewMappings) {\r\n let roleName = dataViewMapping.single.role;\r\n if (roleNames.indexOf(roleName) !== -1) {\r\n let column = firstColumnByRoleName(columns, roleName);\r\n if (column)\r\n dataview.single = normalizeVariant(dataview.single, 'value', column.index, valueFilter);\r\n return;\r\n }\r\n }\r\n }\r\n\r\n export function normalizeVariant<T>(object: T, key: string|number, columnIndex: number, valueFilter: IValueFilter): T {\r\n if (!object)\r\n return;\r\n\r\n let value = object[key];\r\n if (value !== null && !valueFilter(columnIndex, value)) {\r\n object = inheritSingle(object);\r\n object[key] = null;\r\n }\r\n\r\n return object;\r\n }\r\n\r\n function doesValueMatchTypes<T>(value: T, types: ValueType[]): boolean {\r\n for (let type of types) {\r\n if (type.numeric || type.integer)\r\n return typeof (value) === 'number';\r\n }\r\n\r\n return false;\r\n }\r\n\r\n function toMetadataColumnIndex(valueSources: DataViewMetadataColumn[], valueSourceIndex: number): number {\r\n let valueSource = valueSources[valueSourceIndex];\r\n return valueSource && valueSource.index;\r\n }\r\n\r\n function firstColumnByRoleName(columns: DataViewMetadataColumn[], roleName: string): DataViewMetadataColumn {\r\n for (let column of columns) {\r\n let columnRoles = column && column.roles;\r\n if (columnRoles && columnRoles[roleName])\r\n return column;\r\n }\r\n }\r\n }\r\n}\r\n","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"_references.ts\"/>\r\n\r\nmodule powerbi.data {\r\n import IStringResourceProvider = jsCommon.IStringResourceProvider;\r\n\r\n export function createDisplayNameGetter(displayNameKey: string): (IStringResourceProvider) => string {\r\n return (resourceProvider: IStringResourceProvider) => resourceProvider.get(displayNameKey);\r\n }\r\n\r\n export function getDisplayName(displayNameGetter: data.DisplayNameGetter, resourceProvider: jsCommon.IStringResourceProvider): string {\r\n if (typeof displayNameGetter === 'function')\r\n return displayNameGetter(resourceProvider);\r\n\r\n if (typeof displayNameGetter === 'string')\r\n return displayNameGetter;\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.data {\r\n /** Represents a data reader. */\r\n export interface IDataReader {\r\n /** Executes a query, with a promise of completion. The response object should be compatible with the transform implementation. */\r\n execute?(options: DataReaderExecutionOptions): RejectablePromise2<DataReaderData, IClientError>;\r\n\r\n /** Transforms the given data into a DataView. When this function is not specified, the data is put on a property on the DataView. */\r\n transform?(obj: DataReaderData): DataReaderTransformResult;\r\n\r\n /** Stops all future communication and reject and pending communication */\r\n stopCommunication?(): void;\r\n\r\n /** Resumes communication which enables future requests */\r\n resumeCommunication?(): void;\r\n\r\n /** Clear cache */\r\n clearCache?(dataSource: DataReaderDataSource): void;\r\n\r\n /** rewriteCacheEntries */\r\n rewriteCacheEntries?(dataSource: DataReaderDataSource, rewriter: DataReaderCacheRewriter): void;\r\n\r\n /** Sets the result into the local cache */\r\n setLocalCacheResult?(options: DataReaderExecutionOptions, dataAsObject: DataReaderData): void;\r\n }\r\n\r\n /** Represents a query generator. */\r\n export interface IQueryGenerator {\r\n /** Query generation function to convert a (prototype) SemanticQuery to a runnable query command. */\r\n execute(options: QueryGeneratorOptions): QueryGeneratorResult;\r\n }\r\n\r\n export interface IFederatedConceptualSchemaReader {\r\n /** Executes a request for conceptual schema with a promise of completion. */\r\n execute(options: FederatedConceptualSchemaReaderOptions): IPromise<FederatedConceptualSchemaResponse>;\r\n\r\n /** Transforms the given data into a FederatedConceptualSchema. */\r\n transform(obj: FederatedConceptualSchemaResponse): SchemaReaderTransformResult;\r\n }\r\n\r\n /** Represents a custom data reader plugin, to be registered in the powerbi.data.plugins object. */\r\n export interface IDataReaderPlugin {\r\n /** The name of this plugin. */\r\n name: string;\r\n \r\n /** Factory method for the IDataReader. */\r\n reader(hostServices: IDataReaderHostServices): IDataReader;\r\n\r\n /** Factory method for the IQueryGenerator. */\r\n queryGenerator?(): IQueryGenerator;\r\n\r\n /** Factory method for the IFederatedConceptualSchemaReader. */\r\n schemaReader?(hostServices: IDataReaderHostServices): IFederatedConceptualSchemaReader;\r\n }\r\n\r\n export interface QueryGeneratorOptions {\r\n query: SemanticQuery;\r\n mappings: CompiledDataViewMapping[];\r\n additionalProjections?: AdditionalQueryProjection[];\r\n highlightFilter?: SemanticFilter;\r\n restartToken?: RestartToken;\r\n }\r\n\r\n export interface AdditionalQueryProjection {\r\n queryName: string;\r\n selector: Selector;\r\n }\r\n\r\n export interface QueryGeneratorResult {\r\n command: DataReaderQueryCommand;\r\n splits?: DataViewSplitTransform[];\r\n }\r\n\r\n export interface DataReaderTransformResult {\r\n dataView?: DataView;\r\n restartToken?: RestartToken;\r\n error?: IClientError;\r\n warning?: IClientWarning;\r\n }\r\n\r\n export interface RestartToken {\r\n // This interface is intentionally empty, as plugins define their own data structure.\r\n }\r\n\r\n export interface DataReaderQueryCommand {\r\n // This interface is intentionally empty, as plugins define their own data structure.\r\n }\r\n\r\n /** Represents a query command defined by an IDataReader. */\r\n export interface DataReaderCommand {\r\n // This interface is intentionally empty, as plugins define their own data structure.\r\n }\r\n\r\n /** Represents a data source defined by an IDataReader. */\r\n export interface DataReaderDataSource {\r\n // This interface is intentionally empty, as plugins define their own data structure.\r\n }\r\n\r\n /** Represents arbitrary data defined by an IDataReader. */\r\n export interface DataReaderData {\r\n // This interface is intentionally empty, as plugins define their own data structure.\r\n }\r\n\r\n /** Represents cacheRewriter that will rewrite the cache of reader as defined by an IDataReader. */\r\n export interface DataReaderCacheRewriter {\r\n // This interface is intentionally empty, as plugins define their own data structure.\r\n }\r\n\r\n export interface DataReaderExecutionOptions {\r\n dataSource?: DataReaderDataSource;\r\n command: DataReaderCommand;\r\n allowCache?: boolean;\r\n cacheResponseOnServer?: boolean;\r\n }\r\n\r\n export interface FederatedConceptualSchemaReaderOptions {\r\n dataSources: ConceptualSchemaReaderDataSource[];\r\n }\r\n\r\n export interface ConceptualSchemaReaderDataSource {\r\n id: number;\r\n\r\n /** Specifies the name used in Semantic Queries to reference this DataSource. */\r\n name: string;\r\n }\r\n\r\n export interface FederatedConceptualSchemaResponse {\r\n data: FederatedConceptualSchemaData;\r\n }\r\n\r\n export interface FederatedConceptualSchemaData {\r\n // This interface is intentionally empty, as plugins define their own data structure.\r\n }\r\n\r\n export interface SchemaReaderTransformResult {\r\n schema: FederatedConceptualSchema;\r\n error?: SchemaReaderError;\r\n }\r\n\r\n // Defect 5858607, consider removing serviceError and only have IClientError to be more consistent with IDataProxy.\r\n export interface SchemaReaderError {\r\n requestId?: string;\r\n serviceError?: ServiceError;\r\n clientError: IClientError;\r\n }\r\n\r\n export interface IDataReaderHostServices {\r\n promiseFactory(): IPromiseFactory;\r\n }\r\n}\r\n","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"_references.ts\"/>\r\n\r\nmodule powerbi {\r\n\r\n /** Enumeration of DateTimeUnits */\r\n export enum DateTimeUnit {\r\n Year,\r\n Month,\r\n Week,\r\n Day,\r\n Hour,\r\n Minute,\r\n Second,\r\n Millisecond,\r\n }\r\n\r\n export interface IFormattingService {\r\n /** \r\n * Formats the value using provided format expression and culture\r\n * @param value - value to be formatted and converted to string.\r\n * @param format - format to be applied. If undefined or empty then generic format is used. \r\n */\r\n formatValue(value: any, format?: string): string;\r\n\r\n /** \r\n * Replaces the indexed format tokens (for example {0:c2}) in the format string with the localized formatted arguments.\r\n * @param formatWithIndexedTokens - format string with a set of indexed format tokens.\r\n * @param args - array of values which should replace the tokens in the format string.\r\n * @param culture - localization culture. If undefined then the current culture is used.\r\n */\r\n format(formatWithIndexedTokens: string, args: any[], culture?: string): string;\r\n\r\n /** Gets a value indicating whether the specified format a standard numeric format specifier. */\r\n isStandardNumberFormat(format: string): boolean;\r\n\r\n /** Performs a custom format with a value override. Typically used for custom formats showing scaled values. */\r\n formatNumberWithCustomOverride(value: number, format: string, nonScientificOverrideFormat: string): string;\r\n\r\n /** Gets the format string to use for dates in particular units. */\r\n dateFormatString(unit: DateTimeUnit): string;\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../../_references.ts\"/>\r\n\r\nmodule powerbi.data {\r\n /** Represents common expression patterns for 'field' expressions such as columns, column aggregates, measures, etc. */\r\n export interface FieldExprPattern {\r\n column?: FieldExprColumnPattern;\r\n columnAggr?: FieldExprColumnAggrPattern;\r\n columnHierarchyLevelVariation?: FieldExprColumnHierarchyLevelVariation;\r\n entityAggr?: FieldExprEntityAggrPattern;\r\n hierarchyLevel?: FieldExprHierarchyLevelPattern;\r\n hierarchy?: FieldExprHierarchyPattern;\r\n measure?: FieldExprMeasurePattern;\r\n }\r\n\r\n export interface FieldExprEntityItemPattern {\r\n schema: string;\r\n entity: string;\r\n entityVar?: string;\r\n }\r\n\r\n export interface FieldExprPropertyPattern extends FieldExprEntityItemPattern {\r\n name: string;\r\n }\r\n\r\n export type FieldExprColumnPattern = FieldExprPropertyPattern;\r\n\r\n export interface FieldExprColumnAggrPattern extends FieldExprColumnPattern {\r\n aggregate: QueryAggregateFunction;\r\n }\r\n\r\n export module SQExprBuilder {\r\n export function fieldExpr(fieldExpr: FieldExprPattern): SQExpr {\r\n return wrapColumnAggr(fieldExpr)\r\n || wrapColumn(fieldExpr)\r\n || wrapMeasure(fieldExpr)\r\n || wrapHierarchyLevel(fieldExpr)\r\n || wrapHierarchy(fieldExpr)\r\n || wrapEntityAggr(fieldExpr)\r\n || wrapPropertyVariationSource(fieldExpr)\r\n || wrapEntity(fieldExpr);\r\n }\r\n\r\n function wrapColumnAggr(fieldExpr: FieldExprPattern): SQExpr {\r\n let aggr = fieldExpr.columnAggr;\r\n if (aggr) {\r\n let entityExpr = wrapEntity(fieldExpr.columnAggr);\r\n return aggregate(columnRef(entityExpr, aggr.name), aggr.aggregate);\r\n }\r\n }\r\n\r\n function wrapHierarchyLevel(fieldExpr: FieldExprPattern): SQExpr {\r\n let hierarchyLevelPattern = fieldExpr.hierarchyLevel;\r\n if (hierarchyLevelPattern) {\r\n let hierarchyExpr = hierarchy(wrapEntity(hierarchyLevelPattern), hierarchyLevelPattern.name);\r\n return hierarchyLevel(hierarchyExpr, hierarchyLevelPattern.level);\r\n }\r\n }\r\n\r\n function wrapHierarchy(fieldExpr: FieldExprPattern): SQExpr {\r\n let hierarchyExprPattern = fieldExpr.hierarchy;\r\n if (hierarchyExprPattern) {\r\n let entityExpr = wrapEntity(hierarchyExprPattern);\r\n return hierarchy(entityExpr, hierarchyExprPattern.name);\r\n }\r\n }\r\n\r\n function wrapPropertyVariationSource(fieldExpr: FieldExprPattern): SQExpr {\r\n let variation = fieldExpr.columnHierarchyLevelVariation;\r\n if (variation) {\r\n let entitiyExpr = wrapEntity(variation.source);\r\n return propertyVariationSource(entitiyExpr, variation.source.name, variation.level.name);\r\n }\r\n }\r\n\r\n function wrapColumn(fieldExpr: FieldExprPattern): SQExpr {\r\n let column = fieldExpr.column;\r\n if (column) {\r\n let entityExpr = wrapEntity(fieldExpr.column);\r\n return columnRef(entityExpr, column.name);\r\n }\r\n }\r\n\r\n function wrapMeasure(fieldExpr: FieldExprPattern): SQExpr {\r\n let measure = fieldExpr.measure;\r\n if (measure) {\r\n let entityExpr = wrapEntity(fieldExpr.measure);\r\n return measureRef(entityExpr, measure.name);\r\n }\r\n }\r\n\r\n function wrapEntityAggr(fieldExpr: FieldExprPattern): SQExpr {\r\n let entityAggregate = fieldExpr.entityAggr;\r\n\r\n if (entityAggregate) {\r\n let entityExpr = wrapEntity(fieldExpr.entityAggr);\r\n return aggregate(entityExpr, entityAggregate.aggregate);\r\n }\r\n }\r\n\r\n function wrapEntity(fieldExpr: FieldExprPattern): SQExpr {\r\n let fieldExprEntityItemPattern = FieldExprPattern.toFieldExprEntityItemPattern(fieldExpr);\r\n return entity(fieldExprEntityItemPattern.schema, fieldExprEntityItemPattern.entity, fieldExprEntityItemPattern.entityVar);\r\n }\r\n }\r\n\r\n export interface FieldExprColumnHierarchyLevelVariation {\r\n source: FieldExprColumnPattern;\r\n level: FieldExprHierarchyLevelPattern;\r\n variationName: string;\r\n }\r\n\r\n export interface FieldExprEntityAggrPattern extends FieldExprEntityItemPattern {\r\n aggregate: QueryAggregateFunction;\r\n }\r\n\r\n export interface FieldExprHierarchyLevelPattern extends FieldExprEntityItemPattern {\r\n level: string;\r\n name: string;\r\n }\r\n\r\n export interface FieldExprHierarchyPattern extends FieldExprEntityItemPattern {\r\n name: string;\r\n }\r\n export type FieldExprMeasurePattern = FieldExprPropertyPattern;\r\n\r\n export module SQExprConverter {\r\n export function asFieldPattern(sqExpr: SQExpr): FieldExprPattern {\r\n // TODO: adding entity to the FieldExprPattern\r\n if (sqExpr instanceof data.SQEntityExpr) {\r\n return {\r\n entity: sqExpr.entity,\r\n schema: sqExpr.schema,\r\n };\r\n }\r\n\r\n return sqExpr.accept(FieldExprPatternBuilder.instance);\r\n }\r\n }\r\n\r\n interface FieldExprSourceVariationPattern {\r\n column: FieldExprColumnPattern;\r\n variationName: string;\r\n }\r\n\r\n interface SourceExprPattern {\r\n entity?: FieldExprEntityItemPattern;\r\n\r\n // TODO: Change FieldExprHierarchyPattern to FieldExprHierarchyLevelPattern\r\n hierarchy?: FieldExprHierarchyPattern;\r\n variation?: FieldExprSourceVariationPattern;\r\n }\r\n\r\n interface HierarchySourceExprPattern {\r\n hierarchy: FieldExprHierarchyPattern;\r\n variation?: FieldExprSourceVariationPattern;\r\n }\r\n\r\n class FieldExprPatternBuilder extends DefaultSQExprVisitor<FieldExprPattern> {\r\n public static instance: FieldExprPatternBuilder = new FieldExprPatternBuilder();\r\n\r\n public visitColumnRef(expr: SQColumnRefExpr): FieldExprPattern {\r\n let sourceRef = expr.source.accept(SourceExprPatternBuilder.instance);\r\n if (!sourceRef)\r\n return;\r\n\r\n if (sourceRef.entity) {\r\n let columnRef = <FieldExprColumnPattern>sourceRef.entity;\r\n columnRef.name = expr.ref;\r\n\r\n return { column: columnRef };\r\n }\r\n }\r\n\r\n public visitMeasureRef(expr: SQMeasureRefExpr): FieldExprPattern {\r\n let sourceRef = expr.source.accept(SourceExprPatternBuilder.instance);\r\n if (!sourceRef)\r\n return;\r\n\r\n if (sourceRef.entity) {\r\n let measureRef = <FieldExprMeasurePattern>sourceRef.entity;\r\n measureRef.name = expr.ref;\r\n\r\n return { measure: measureRef };\r\n }\r\n }\r\n\r\n public visitAggr(expr: SQAggregationExpr): FieldExprPattern {\r\n let fieldPattern: FieldExprPattern = expr.arg.accept(this);\r\n if (fieldPattern && fieldPattern.column) {\r\n let argAggr = <FieldExprColumnAggrPattern>fieldPattern.column;\r\n argAggr.aggregate = expr.func;\r\n return { columnAggr: argAggr };\r\n } else if (fieldPattern && fieldPattern.columnAggr) {\r\n let argAggr = <FieldExprColumnAggrPattern>fieldPattern.columnAggr;\r\n argAggr.aggregate = expr.func;\r\n return { columnAggr: argAggr };\r\n }\r\n\r\n let sourcePattern = expr.arg.accept(SourceExprPatternBuilder.instance);\r\n if (sourcePattern && sourcePattern.entity) {\r\n let argAggr = <FieldExprEntityAggrPattern>sourcePattern.entity;\r\n argAggr.aggregate = expr.func;\r\n\r\n return { entityAggr: argAggr };\r\n }\r\n }\r\n\r\n public visitHierarchy(expr: SQHierarchyExpr): FieldExprPattern {\r\n let sourcePattern = expr.arg.accept(SourceExprPatternBuilder.instance);\r\n\r\n if (sourcePattern && sourcePattern.entity) {\r\n let hierarchyRef = <FieldExprHierarchyPattern>(sourcePattern.entity);\r\n hierarchyRef.name = expr.hierarchy;\r\n return { hierarchy: hierarchyRef };\r\n }\r\n }\r\n\r\n public visitHierarchyLevel(expr: SQHierarchyLevelExpr): FieldExprPattern {\r\n let hierarchySourceExprPattern: HierarchySourceExprPattern = expr.arg.accept(HierarchyExprPatternBuiler.instance);\r\n if (!hierarchySourceExprPattern)\r\n return;\r\n\r\n let hierarchyLevel: FieldExprHierarchyLevelPattern;\r\n if (hierarchySourceExprPattern.hierarchy) {\r\n hierarchyLevel = {\r\n entity: hierarchySourceExprPattern.hierarchy.entity,\r\n schema: hierarchySourceExprPattern.hierarchy.schema,\r\n name: hierarchySourceExprPattern.hierarchy.name,\r\n level: expr.level,\r\n };\r\n }\r\n\r\n if (hierarchySourceExprPattern.variation) {\r\n return {\r\n columnHierarchyLevelVariation: {\r\n source: {\r\n entity: hierarchySourceExprPattern.variation.column.entity,\r\n schema: hierarchySourceExprPattern.variation.column.schema,\r\n name: hierarchySourceExprPattern.variation.column.name,\r\n },\r\n level: hierarchyLevel,\r\n variationName: hierarchySourceExprPattern.variation.variationName,\r\n }\r\n };\r\n }\r\n\r\n return { hierarchyLevel: hierarchyLevel };\r\n }\r\n }\r\n\r\n class SourceExprPatternBuilder extends DefaultSQExprVisitor<SourceExprPattern> {\r\n public static instance: SourceExprPatternBuilder = new SourceExprPatternBuilder();\r\n\r\n public visitEntity(expr: SQEntityExpr): SourceExprPattern {\r\n let entityRef: FieldExprEntityItemPattern = {\r\n schema: expr.schema,\r\n entity: expr.entity\r\n };\r\n if (expr.variable)\r\n entityRef.entityVar = expr.variable;\r\n\r\n return { entity: entityRef };\r\n }\r\n\r\n public visitPropertyVariationSource(expr: SQPropertyVariationSourceExpr): SourceExprPattern {\r\n let entityExpr = <SQEntityExpr>expr.arg;\r\n\r\n if (entityExpr instanceof SQEntityExpr) {\r\n let propertyVariationSource: FieldExprColumnPattern = {\r\n schema: entityExpr.schema,\r\n entity: entityExpr.entity,\r\n name: expr.property,\r\n };\r\n\r\n if (entityExpr.variable)\r\n propertyVariationSource.entityVar = entityExpr.variable;\r\n\r\n return {\r\n variation: {\r\n column: propertyVariationSource,\r\n variationName: expr.name,\r\n }\r\n };\r\n }\r\n }\r\n }\r\n\r\n class HierarchyExprPatternBuiler extends DefaultSQExprVisitor<HierarchySourceExprPattern> {\r\n public static instance: HierarchyExprPatternBuiler = new HierarchyExprPatternBuiler();\r\n\r\n public visitHierarchy(expr: SQHierarchyExpr): HierarchySourceExprPattern {\r\n let exprPattern = expr.arg.accept(SourceExprPatternBuilder.instance);\r\n let hierarchyRef: FieldExprHierarchyPattern;\r\n let variationRef: FieldExprSourceVariationPattern;\r\n\r\n if (exprPattern.variation) {\r\n hierarchyRef = {\r\n name: expr.hierarchy,\r\n schema: exprPattern.variation.column.schema,\r\n entity: exprPattern.variation.column.entity,\r\n };\r\n variationRef = exprPattern.variation;\r\n }\r\n else\r\n hierarchyRef = {\r\n name: expr.hierarchy,\r\n schema: exprPattern.entity.schema,\r\n entity: exprPattern.entity.entity,\r\n };\r\n\r\n return {\r\n hierarchy: hierarchyRef,\r\n variation: variationRef\r\n };\r\n }\r\n }\r\n\r\n export module FieldExprPattern {\r\n export function hasFieldExprName(fieldExpr: FieldExprPattern): boolean {\r\n return (fieldExpr.column ||\r\n fieldExpr.columnAggr ||\r\n fieldExpr.measure) !== undefined;\r\n }\r\n\r\n export function getPropertyName(fieldExpr: FieldExprPattern): string {\r\n let column = (fieldExpr.column ||\r\n fieldExpr.columnAggr ||\r\n fieldExpr.measure ||\r\n fieldExpr.hierarchy);\r\n\r\n if (column)\r\n return column.name;\r\n }\r\n\r\n export function getColumnRef(fieldExpr: FieldExprPattern): FieldExprPropertyPattern {\r\n if (fieldExpr.columnHierarchyLevelVariation)\r\n return fieldExpr.columnHierarchyLevelVariation.source;\r\n\r\n return fieldExpr.column || fieldExpr.measure || fieldExpr.columnAggr;\r\n }\r\n\r\n export function getFieldExprName(fieldExpr: FieldExprPattern): string {\r\n let name = getPropertyName(fieldExpr);\r\n\r\n if (name)\r\n return name;\r\n\r\n // In case it is an entity\r\n return toFieldExprEntityItemPattern(fieldExpr).entity;\r\n }\r\n\r\n export function toFieldExprEntityItemPattern(fieldExpr: FieldExprPattern): FieldExprEntityItemPattern {\r\n let field = <FieldExprEntityItemPattern>(fieldExpr.column ||\r\n fieldExpr.columnAggr ||\r\n fieldExpr.entityAggr ||\r\n fieldExpr.hierarchy ||\r\n fieldExpr.hierarchyLevel ||\r\n fieldExpr.measure ||\r\n (fieldExpr.columnHierarchyLevelVariation && fieldExpr.columnHierarchyLevelVariation.source) ||\r\n fieldExpr); // fieldExpr for entity\r\n\r\n return {\r\n schema: field.schema,\r\n entity: field.entity,\r\n entityVar: field.entityVar,\r\n };\r\n }\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi {\r\n export module DataViewAnalysis {\r\n import ArrayExtensions = jsCommon.ArrayExtensions;\r\n import QueryProjectionsByRole = powerbi.data.QueryProjectionsByRole;\r\n\r\n export interface ValidateAndReshapeResult {\r\n dataView?: DataView;\r\n isValid: boolean;\r\n }\r\n\r\n export interface RoleKindByQueryRef {\r\n [queryRef: string]: VisualDataRoleKind;\r\n }\r\n\r\n /** Reshapes the data view to match the provided schema if possible. If not, returns null */\r\n export function validateAndReshape(dataView: DataView, dataViewMappings: DataViewMapping[]): ValidateAndReshapeResult {\r\n if (!dataViewMappings || dataViewMappings.length === 0)\r\n return { dataView: dataView, isValid: true }; \r\n\r\n if (dataView) {\r\n for (let dataViewMapping of dataViewMappings) {\r\n // Keep the original when possible.\r\n if (supports(dataView, dataViewMapping))\r\n return { dataView: dataView, isValid: true };\r\n\r\n if (dataViewMapping.categorical && dataView.categorical)\r\n return reshapeCategorical(dataView, dataViewMapping);\r\n\r\n if (dataViewMapping.tree && dataView.tree)\r\n return reshapeTree(dataView, dataViewMapping.tree);\r\n\r\n if (dataViewMapping.single && dataView.single)\r\n return reshapeSingle(dataView, dataViewMapping.single);\r\n\r\n if (dataViewMapping.table && dataView.table)\r\n return reshapeTable(dataView, dataViewMapping.table);\r\n }\r\n }\r\n else if (ScriptResultUtil.findScriptResult(dataViewMappings)) {\r\n // Currently, PBI Service treats R Script Visuals as static images.\r\n // This causes validation to fail, since in PBI service no DataView is generated, but there are DataViewMappings,\r\n // to support the PBI Desktop scenario.\r\n // This code will be removed once PBI Service fully supports R Script Visuals.\r\n // VSTS: 6217994 - [R Viz] Remove temporary DataViewAnalysis validation workaround of static R Script Visual mappings\r\n return { dataView: dataView, isValid: true };\r\n }\r\n\r\n return { isValid: false };\r\n }\r\n\r\n function reshapeCategorical(dataView: DataView, dataViewMapping: DataViewMapping): ValidateAndReshapeResult {\r\n debug.assertValue(dataViewMapping, 'dataViewMapping');\r\n\r\n //The functionality that used to compare categorical.values.length to schema.values doesn't apply any more, we don't want to use the same logic for re-shaping.\r\n let categoryRoleMapping = dataViewMapping.categorical;\r\n let categorical = dataView.categorical;\r\n if (!categorical)\r\n return { isValid: false };\r\n\r\n let rowCount;\r\n if (categoryRoleMapping.rowCount) {\r\n rowCount = categoryRoleMapping.rowCount.supported;\r\n if (rowCount && rowCount.max) {\r\n let updated: DataViewCategorical;\r\n let categories = categorical.categories;\r\n let maxRowCount = rowCount.max;\r\n let originalLength = undefined;\r\n if (categories) {\r\n for (let i = 0, len = categories.length; i < len; i++) {\r\n let category = categories[i];\r\n originalLength = category.values.length;\r\n if (maxRowCount !== undefined && originalLength > maxRowCount) {\r\n\r\n // Row count too large: Trim it to fit.\r\n let updatedCategories = ArrayExtensions.range(category.values, 0, maxRowCount - 1);\r\n\r\n updated = updated || { categories: [] };\r\n updated.categories.push({\r\n source: category.source,\r\n values: updatedCategories\r\n });\r\n }\r\n }\r\n }\r\n\r\n if (categorical.values && categorical.values.length > 0 && maxRowCount) {\r\n if (!originalLength)\r\n originalLength = categorical.values[0].values.length;\r\n\r\n if (maxRowCount !== undefined && originalLength > maxRowCount) {\r\n updated = updated || {};\r\n updated.values = data.DataViewTransform.createValueColumns();\r\n\r\n for (let i = 0, len = categorical.values.length; i < len; i++) {\r\n let column = categorical.values[i],\r\n updatedColumn: DataViewValueColumn = {\r\n source: column.source,\r\n values: ArrayExtensions.range(column.values, 0, maxRowCount - 1)\r\n };\r\n\r\n if (column.min !== undefined)\r\n updatedColumn.min = column.min;\r\n if (column.max !== undefined)\r\n updatedColumn.max = column.max;\r\n if (column.subtotal !== undefined)\r\n updatedColumn.subtotal = column.subtotal;\r\n\r\n updated.values.push(updatedColumn);\r\n }\r\n }\r\n }\r\n\r\n if (updated) {\r\n dataView = {\r\n metadata: dataView.metadata,\r\n categorical: updated,\r\n };\r\n }\r\n }\r\n }\r\n\r\n if (supportsCategorical(dataView, dataViewMapping))\r\n return { dataView: dataView, isValid: true };\r\n\r\n return null;\r\n }\r\n\r\n function reshapeSingle(dataView: DataView, singleRoleMapping: DataViewSingleMapping): ValidateAndReshapeResult {\r\n debug.assertValue(dataView, 'dataView');\r\n debug.assertValue(singleRoleMapping, 'singleRoleMapping');\r\n\r\n if (dataView.single)\r\n return { dataView: dataView, isValid: true };\r\n\r\n return { isValid: false };\r\n }\r\n\r\n function reshapeTree(dataView: DataView, treeRoleMapping: DataViewTreeMapping): ValidateAndReshapeResult {\r\n debug.assertValue(dataView, 'dataView');\r\n debug.assertValue(treeRoleMapping, 'treeRoleMapping');\r\n\r\n // TODO: Need to implement the reshaping of Tree\r\n let metadata = dataView.metadata;\r\n if (conformsToRange(countGroups(metadata.columns), treeRoleMapping.depth) /*&& conforms(countMeasures(metadata.columns), treeRoleMapping.aggregates)*/)\r\n return { dataView: dataView, isValid: true };\r\n\r\n return { isValid: false };\r\n }\r\n\r\n function reshapeTable(dataView: DataView, tableRoleMapping: DataViewTableMapping): ValidateAndReshapeResult {\r\n debug.assertValue(dataView, 'dataView');\r\n debug.assertValue(tableRoleMapping, 'tableRoleMapping');\r\n\r\n if (dataView.table)\r\n return { dataView: dataView, isValid: true };\r\n\r\n return { isValid: false };\r\n }\r\n\r\n export function countGroups(columns: DataViewMetadataColumn[]): number {\r\n let count = 0;\r\n\r\n for (let i = 0, len = columns.length; i < len; i++) {\r\n if (!columns[i].isMeasure)\r\n ++count;\r\n }\r\n\r\n return count;\r\n }\r\n\r\n export function countMeasures(columns: DataViewMetadataColumn[]): number {\r\n let count = 0;\r\n\r\n for (let i = 0, len = columns.length; i < len; i++) {\r\n if (columns[i].isMeasure)\r\n ++count;\r\n }\r\n\r\n return count;\r\n }\r\n\r\n /** Indicates whether the dataView conforms to the specified schema. */\r\n export function supports(dataView: DataView, roleMapping: DataViewMapping, usePreferredDataViewSchema?: boolean): boolean {\r\n if (!roleMapping || !dataView)\r\n return false;\r\n\r\n if (roleMapping.scriptResult && !supportsScriptResult(dataView.scriptResult, roleMapping.scriptResult))\r\n return false;\r\n\r\n if (roleMapping.categorical && !supportsCategorical(dataView, roleMapping.categorical, usePreferredDataViewSchema))\r\n return false;\r\n\r\n if (roleMapping.tree && !supportsTree(dataView, roleMapping.tree))\r\n return false;\r\n\r\n if (roleMapping.single && !supportsSingle(dataView.single, roleMapping.single))\r\n return false;\r\n\r\n if (roleMapping.table && !supportsTable(dataView.table, roleMapping.table, usePreferredDataViewSchema))\r\n return false;\r\n\r\n return true;\r\n }\r\n\r\n function supportsCategorical(dataView: DataView, categoryRoleMapping: DataViewCategoricalMapping, usePreferredDataViewSchema?: boolean): boolean {\r\n debug.assertValue(categoryRoleMapping, 'categoryRoleMapping');\r\n\r\n let dataViewCategorical = dataView.categorical;\r\n if (!dataViewCategorical)\r\n return false;\r\n\r\n // TODO: Disabling this implementation isn't right.\r\n //if (!conforms(countMeasures(dataView.metadata.columns), categoryRoleMapping.values.roles.length))\r\n // return false;\r\n\r\n if (categoryRoleMapping.rowCount) {\r\n let rowCount = categoryRoleMapping.rowCount.supported;\r\n if (usePreferredDataViewSchema && categoryRoleMapping.rowCount.preferred)\r\n rowCount = categoryRoleMapping.rowCount.preferred;\r\n\r\n if (rowCount) {\r\n let len: number = 0;\r\n if (dataViewCategorical.values && dataViewCategorical.values.length)\r\n len = dataViewCategorical.values[0].values.length;\r\n else if (dataViewCategorical.categories && dataViewCategorical.categories.length)\r\n len = dataViewCategorical.categories[0].values.length;\r\n\r\n if (!conformsToRange(len, rowCount))\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n function supportsSingle(dataViewSingle: DataViewSingle, singleRoleMapping: DataViewSingleMapping): boolean {\r\n debug.assertValue(singleRoleMapping, 'singleRoleMapping');\r\n\r\n if (!dataViewSingle)\r\n return false;\r\n\r\n return true;\r\n }\r\n\r\n function supportsTree(dataView: DataView, treeRoleMapping: DataViewTreeMapping): boolean {\r\n debug.assertValue(treeRoleMapping, 'treeRoleMapping');\r\n\r\n let metadata = dataView.metadata;\r\n return conformsToRange(countGroups(metadata.columns), treeRoleMapping.depth);\r\n }\r\n\r\n function supportsTable(dataViewTable: DataViewTable, tableRoleMapping: DataViewTableMapping, usePreferredDataViewSchema?: boolean): boolean {\r\n debug.assertValue(tableRoleMapping, 'tableRoleMapping');\r\n\r\n if (!dataViewTable)\r\n return false;\r\n\r\n if (tableRoleMapping.rowCount) {\r\n let rowCount = tableRoleMapping.rowCount.supported;\r\n if (usePreferredDataViewSchema && tableRoleMapping.rowCount.preferred)\r\n rowCount = tableRoleMapping.rowCount.preferred;\r\n\r\n if (rowCount) {\r\n let len: number = 0;\r\n if (dataViewTable.rows && dataViewTable.rows.length)\r\n len = dataViewTable.rows.length;\r\n\r\n if (!conformsToRange(len, rowCount))\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n function supportsScriptResult(dataView: DataViewScriptResultData, scriptResultRoleMapping: DataViewScriptResultMapping): boolean {\r\n debug.assertValue(scriptResultRoleMapping, 'scriptResultRoleMapping');\r\n\r\n if (!dataView)\r\n return false;\r\n\r\n if (!dataView.imageBase64)\r\n return false;\r\n\r\n return true;\r\n }\r\n\r\n /** Determines whether the value conforms to the range in the role condition */\r\n export function conformsToRange(value: number, roleCondition: RoleCondition, ignoreMin?: boolean): boolean {\r\n debug.assertValue(value, 'value');\r\n\r\n if (!roleCondition)\r\n return value === 0;\r\n\r\n if (!ignoreMin && roleCondition.min !== undefined && roleCondition.min > value)\r\n return false;\r\n\r\n if (roleCondition.max !== undefined && roleCondition.max < value)\r\n return false;\r\n\r\n return true;\r\n }\r\n\r\n /** Determines whether the role conforms to the kind in the roleCondition */\r\n function conformsToKind(roleCondition: RoleCondition, roleName: string, projections: QueryProjectionsByRole, roleKindByQueryRef: RoleKindByQueryRef): boolean {\r\n if (!roleCondition || roleCondition.kind === undefined) {\r\n return true;\r\n }\r\n let expectedKind = roleCondition.kind;\r\n let roleCollection = projections[roleName];\r\n if (roleCollection) {\r\n let roleProjections = roleCollection.all();\r\n for (let roleProjection of roleProjections) {\r\n if (roleKindByQueryRef[roleProjection.queryRef] !== expectedKind)\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n /** Determines the appropriate DataViewMappings for the projections. */\r\n export function chooseDataViewMappings(projections: QueryProjectionsByRole, mappings: DataViewMapping[], roleKindByQueryRef: RoleKindByQueryRef): DataViewMapping[] {\r\n debug.assertValue(projections, 'projections');\r\n debug.assertValue(mappings, 'mappings');\r\n\r\n let supportedMappings: DataViewMapping[] = [];\r\n\r\n for (let i = 0, len = mappings.length; i < len; i++) {\r\n let mapping = mappings[i],\r\n mappingConditions = mapping.conditions;\r\n\r\n if (mappingConditions && mappingConditions.length) {\r\n for (let j = 0, jlen = mappingConditions.length; j < jlen; j++) {\r\n let condition = mappingConditions[j];\r\n if (matchesCondition(projections, condition, roleKindByQueryRef)) {\r\n supportedMappings.push(mapping);\r\n break;\r\n }\r\n }\r\n }\r\n else {\r\n supportedMappings.push(mapping);\r\n }\r\n }\r\n\r\n return ArrayExtensions.emptyToNull(supportedMappings);\r\n }\r\n\r\n function matchesCondition(projections: QueryProjectionsByRole, condition: DataViewMappingCondition, roleKindByQueryRef: RoleKindByQueryRef): boolean {\r\n debug.assertValue(projections, 'projections');\r\n debug.assertValue(condition, 'condition');\r\n\r\n let conditionRoles = Object.keys(condition);\r\n for (let i = 0, len = conditionRoles.length; i < len; i++) {\r\n let roleName: string = conditionRoles[i],\r\n isDrillable = projections[roleName] && projections[roleName].activeProjectionQueryRef != null,\r\n roleCondition = condition[roleName];\r\n\r\n let roleCount = getPropertyCount(roleName, projections, isDrillable);\r\n if (!conformsToRange(roleCount, roleCondition) || !conformsToKind(roleCondition, roleName, projections, roleKindByQueryRef))\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n export function getPropertyCount(roleName: string, projections: QueryProjectionsByRole, useActiveIfAvailable?: boolean): number {\r\n debug.assertValue(roleName, 'roleName');\r\n debug.assertValue(projections, 'projections');\r\n\r\n let projectionsForRole = projections[roleName];\r\n if (projectionsForRole) {\r\n if (useActiveIfAvailable)\r\n return 1;\r\n return projectionsForRole.all().length;\r\n }\r\n\r\n return 0;\r\n }\r\n\r\n export function hasSameCategoryIdentity(dataView1: DataView, dataView2: DataView): boolean {\r\n if (dataView1\r\n && dataView2\r\n && dataView1.categorical\r\n && dataView2.categorical) {\r\n let dv1Categories = dataView1.categorical.categories;\r\n let dv2Categories = dataView2.categorical.categories;\r\n if (dv1Categories\r\n && dv2Categories\r\n && dv1Categories.length === dv2Categories.length) {\r\n for (let i = 0, len = dv1Categories.length; i < len; i++) {\r\n let dv1Identity = dv1Categories[i].identity;\r\n let dv2Identity = dv2Categories[i].identity;\r\n\r\n let dv1Length = getLengthOptional(dv1Identity);\r\n if (dv1Length !== getLengthOptional(dv2Identity))\r\n return false;\r\n\r\n for (let j = 0; j < dv1Length; j++) {\r\n if (!DataViewScopeIdentity.equals(dv1Identity[j], dv2Identity[j]))\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n function getLengthOptional(identity: DataViewScopeIdentity[]): number {\r\n if (identity)\r\n return identity.length;\r\n\r\n return 0;\r\n }\r\n\r\n export function areMetadataColumnsEquivalent(column1: DataViewMetadataColumn, column2: DataViewMetadataColumn): boolean {\r\n if (!column1 && !column2)\r\n return true;\r\n\r\n if (!column1 || !column2)\r\n return false;\r\n\r\n if (column1.displayName !== column2.displayName)\r\n return false;\r\n\r\n if (column1.queryName !== column2.queryName)\r\n return false;\r\n\r\n if (column1.isMeasure !== column2.isMeasure)\r\n return false;\r\n\r\n if (column1.type !== column2.type)\r\n return false;\r\n\r\n if (column1.sort !== column2.sort)\r\n return false;\r\n\r\n return true;\r\n }\r\n\r\n /* Returns true if the metadata columns at the same positions in the array are equivalent. */\r\n export function isMetadataEquivalent(metadata1: DataViewMetadata, metadata2: DataViewMetadata): boolean {\r\n if (!metadata1 && !metadata2)\r\n return true;\r\n\r\n if (!metadata1 || !metadata2)\r\n return false;\r\n\r\n let previousColumnsLength = metadata1.columns.length;\r\n let newColumnsLength = metadata2.columns.length;\r\n\r\n if (previousColumnsLength !== newColumnsLength)\r\n return false;\r\n\r\n for (let i: number = 0; i < newColumnsLength; i++) {\r\n if (!DataViewAnalysis.areMetadataColumnsEquivalent(metadata1.columns[i], metadata2.columns[i]))\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi {\r\n\r\n export module DataViewScopeIdentity {\r\n /** Compares the two DataViewScopeIdentity values for equality. */\r\n export function equals(x: DataViewScopeIdentity, y: DataViewScopeIdentity, ignoreCase?: boolean): boolean {\r\n // Normalize falsy to null\r\n x = x || null;\r\n y = y || null;\r\n\r\n if (x === y)\r\n return true;\r\n\r\n if (!x !== !y)\r\n return false;\r\n\r\n debug.assertValue(x, 'x');\r\n debug.assertValue(y, 'y');\r\n\r\n return data.SQExpr.equals(<data.SQExpr>x.expr, <data.SQExpr>y.expr, ignoreCase);\r\n }\r\n\r\n export function filterFromIdentity(identities: DataViewScopeIdentity[], isNot?: boolean): data.SemanticFilter {\r\n if (_.isEmpty(identities))\r\n return;\r\n \r\n let exprs: data.SQExpr[] = [];\r\n for (let identity of identities) {\r\n exprs.push(<data.SQExpr>identity.expr);\r\n }\r\n\r\n return filterFromExprs(exprs, isNot);\r\n }\r\n\r\n export function filterFromExprs(orExprs: data.SQExpr[], isNot?: boolean): data.SemanticFilter {\r\n if (_.isEmpty(orExprs))\r\n return;\r\n\r\n let resultExpr: data.SQExpr;\r\n for (let orExpr of orExprs) {\r\n let inExpr = data.ScopeIdentityExtractor.getInExpr(orExpr);\r\n if (resultExpr)\r\n resultExpr = data.SQExprBuilder.or(resultExpr, inExpr);\r\n else\r\n resultExpr = inExpr || orExpr;\r\n }\r\n \r\n if (resultExpr) {\r\n if (isNot)\r\n resultExpr = powerbi.data.SQExprBuilder.not(resultExpr);\r\n }\r\n\r\n return powerbi.data.SemanticFilter.fromSQExpr(resultExpr);\r\n }\r\n }\r\n\r\n export module data {\r\n import Lazy = jsCommon.Lazy;\r\n\r\n export function createDataViewScopeIdentity(expr: SQExpr): DataViewScopeIdentity {\r\n return new DataViewScopeIdentityImpl(expr);\r\n }\r\n\r\n class DataViewScopeIdentityImpl implements DataViewScopeIdentity {\r\n private _expr: SQExpr;\r\n private _key: Lazy<string>;\r\n\r\n public constructor(expr: SQExpr) {\r\n debug.assertValue(expr, 'expr');\r\n\r\n this._expr = expr;\r\n this._key = new Lazy(() => SQExprShortSerializer.serialize(expr));\r\n }\r\n\r\n public get expr(): SQExpr {\r\n return this._expr;\r\n }\r\n\r\n public get key(): string {\r\n return this._key.getValue();\r\n }\r\n }\r\n }\r\n}\r\n","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.data {\r\n import Lazy = jsCommon.Lazy;\r\n\r\n export module DataViewScopeWildcard {\r\n export function matches(wildcard: DataViewScopeWildcard, instance: DataViewScopeIdentity): boolean {\r\n let instanceExprs = ScopeIdentityExtractor.getKeys(<SQExpr>instance.expr);\r\n if (!instanceExprs)\r\n return false;\r\n\r\n return SQExprUtils.sequenceEqual(<SQExpr[]>wildcard.exprs, instanceExprs);\r\n }\r\n\r\n export function fromExprs(exprs: SQExpr[]): DataViewScopeWildcard {\r\n return new DataViewScopeWildcardImpl(exprs);\r\n }\r\n\r\n class DataViewScopeWildcardImpl implements DataViewScopeWildcard {\r\n private _exprs: SQExpr[];\r\n private _key: Lazy<string>;\r\n\r\n public constructor(exprs: SQExpr[]) {\r\n debug.assertValue(exprs, 'exprs');\r\n\r\n this._exprs = exprs;\r\n this._key = new Lazy(() => SQExprShortSerializer.serializeArray(exprs));\r\n }\r\n\r\n public get exprs(): SQExpr[] {\r\n return this._exprs;\r\n }\r\n\r\n public get key(): string {\r\n return this._key.getValue();\r\n }\r\n }\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../../_references.ts\"/>\r\n\r\nmodule powerbi.data {\r\n /** Responsible for providing specific values to be used by expression and rule evaluation. */\r\n export interface IEvalContext {\r\n getExprValue(expr: SQExpr): PrimitiveValue;\r\n getRoleValue(roleName: string): PrimitiveValue;\r\n getCurrentIdentity(): DataViewScopeIdentity;\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../../_references.ts\"/>\r\n\r\nmodule powerbi.data {\r\n export interface ICategoricalEvalContext extends IEvalContext {\r\n setCurrentRowIndex(index: number): void;\r\n }\r\n\r\n export function createCategoricalEvalContext(\r\n dataViewCategorical: DataViewCategorical,\r\n identities?: DataViewScopeIdentity[]): ICategoricalEvalContext {\r\n return new CategoricalEvalContext(dataViewCategorical, identities);\r\n }\r\n\r\n class CategoricalEvalContext implements ICategoricalEvalContext {\r\n private dataView: DataViewCategorical;\r\n private identities: DataViewScopeIdentity[];\r\n private columnsByRole: { [name: string]: DataViewCategoricalColumn };\r\n private index: number;\r\n\r\n constructor(dataView: DataViewCategorical, identities?: DataViewScopeIdentity[]) {\r\n debug.assertValue(dataView, 'dataView');\r\n debug.assertAnyValue(identities, 'identities');\r\n\r\n this.dataView = dataView;\r\n this.identities = identities;\r\n this.columnsByRole = {};\r\n }\r\n\r\n public getCurrentIdentity(): DataViewScopeIdentity {\r\n let identities = this.identities,\r\n index = this.index;\r\n\r\n if (identities && index != null)\r\n return identities[index];\r\n }\r\n\r\n public getExprValue(expr: SQExpr): PrimitiveValue {\r\n return;\r\n }\r\n\r\n public getRoleValue(roleName: string): PrimitiveValue {\r\n let columnsByRole = this.columnsByRole;\r\n let column = columnsByRole[roleName];\r\n if (!column)\r\n column = columnsByRole[roleName] = findRuleInputColumn(this.dataView, roleName);\r\n \r\n if (!column)\r\n return;\r\n\r\n let index = this.index;\r\n if (index != null)\r\n return column.values[this.index];\r\n }\r\n\r\n public setCurrentRowIndex(index: number): void {\r\n debug.assertValue(index, 'index');\r\n\r\n this.index = index;\r\n }\r\n }\r\n\r\n function findRuleInputColumn(dataViewCategorical: DataViewCategorical, inputRole: string): DataViewCategoricalColumn {\r\n debug.assertValue(dataViewCategorical, 'dataViewCategorical');\r\n\r\n return findRuleInputInColumns(dataViewCategorical.values, inputRole) ||\r\n findRuleInputInColumns(dataViewCategorical.categories, inputRole);\r\n }\r\n\r\n function findRuleInputInColumns(columns: DataViewCategoricalColumn[], inputRole: string): DataViewCategoricalColumn {\r\n debug.assertAnyValue(columns, 'columns');\r\n\r\n if (!columns)\r\n return;\r\n\r\n for (let column of columns) {\r\n let roles = column.source.roles;\r\n if (!roles || !roles[inputRole])\r\n continue;\r\n\r\n return column;\r\n }\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../../_references.ts\"/>\r\n\r\nmodule powerbi.data {\r\n export class RuleEvaluation {\r\n // NOTE: even though this class has no behaviour, we still use a class to facilitate instanceof checks.\r\n\r\n public evaluate(evalContext: IEvalContext): any {\r\n debug.assertFail('Abstract method RuleEvaluation.evaluate not implemented.');\r\n }\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../../_references.ts\"/>\r\n\r\nmodule powerbi.data {\r\n export class ColorRuleEvaluation extends RuleEvaluation {\r\n private inputRole: string;\r\n private allocator: IColorAllocator;\r\n\r\n constructor(inputRole: string, allocator: IColorAllocator) {\r\n debug.assertValue(inputRole, 'inputRole');\r\n debug.assertValue(allocator, 'allocator');\r\n\r\n super();\r\n this.inputRole = inputRole;\r\n this.allocator = allocator;\r\n }\r\n\r\n public evaluate(evalContext: IEvalContext): any {\r\n debug.assertValue(evalContext, 'evalContext');\r\n\r\n let value: any = evalContext.getRoleValue(this.inputRole);\r\n if (value !== undefined)\r\n return this.allocator.color(value);\r\n }\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../../_references.ts\"/>\r\n\r\nmodule powerbi.data {\r\n export class FilterRuleEvaluation extends RuleEvaluation {\r\n private selection: FilterValueScopeIdsContainer;\r\n\r\n constructor(scopeIds: FilterValueScopeIdsContainer) {\r\n debug.assertValue(scopeIds, 'scopeIds');\r\n\r\n super();\r\n this.selection = scopeIds;\r\n }\r\n\r\n public evaluate(evalContext: IEvalContext): any {\r\n debug.assertValue(evalContext, 'evalContext');\r\n\r\n let currentScopeId = evalContext.getCurrentIdentity(),\r\n selectedScopeIds = this.selection.scopeIds;\r\n for (let i = 0, len = selectedScopeIds.length; i < len; i++) {\r\n if (DataViewScopeIdentity.equals(currentScopeId, selectedScopeIds[i]))\r\n return !this.selection.isNot;\r\n }\r\n }\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi {\r\n import ArrayNamedItems = jsCommon.ArrayNamedItems;\r\n import StringExtensions = jsCommon.StringExtensions;\r\n import FederatedConceptualSchema = powerbi.data.FederatedConceptualSchema;\r\n import DefaultSQExprVisitor = powerbi.data.DefaultSQExprVisitor;\r\n import SQEntityExpr = powerbi.data.SQEntityExpr;\r\n import SQExprConverter = powerbi.data.SQExprConverter;\r\n import SQAggregationExpr = powerbi.data.SQAggregationExpr;\r\n import SQColumnRefExpr = powerbi.data.SQColumnRefExpr;\r\n import SQMeasureRefExpr = powerbi.data.SQMeasureRefExpr;\r\n import SQPropRefExpr = powerbi.data.SQPropRefExpr;\r\n import SQHierarchyLevelExpr = powerbi.data.SQHierarchyLevelExpr;\r\n import SQHierarchyExpr = powerbi.data.SQHierarchyExpr;\r\n import FieldExprPattern = powerbi.data.FieldExprPattern;\r\n import QueryProjectionsByRole = data.QueryProjectionsByRole;\r\n\r\n export interface ScriptResult {\r\n source: string;\r\n provider: string;\r\n }\r\n\r\n export module ScriptResultUtil {\r\n\r\n export function findScriptResult(dataViewMappings: DataViewMapping[]| data.CompiledDataViewMapping[]): DataViewScriptResultMapping | data.CompiledDataViewScriptResultMapping {\r\n if (dataViewMappings && dataViewMappings.length === 1) {\r\n return dataViewMappings[0].scriptResult;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n export function extractScriptResult(dataViewMappings: data.CompiledDataViewMapping[]): ScriptResult {\r\n let scriptResult = findScriptResult(dataViewMappings);\r\n if (scriptResult) {\r\n let objects = dataViewMappings[0].metadata.objects;\r\n let source: string = DataViewObjects.getValue<string>(objects, scriptResult.script.source);\r\n let provider: string = DataViewObjects.getValue<string>(objects, scriptResult.script.provider);\r\n return {\r\n source: source,\r\n provider: provider\r\n };\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n export function extractScriptResultFromVisualConfig(dataViewMappings: DataViewMapping[], objects: powerbi.data.DataViewObjectDefinitions): ScriptResult {\r\n let scriptResult = findScriptResult(dataViewMappings);\r\n if (scriptResult && objects) {\r\n let scriptSource= <data.SQConstantExpr>data.DataViewObjectDefinitions.getValue(objects, scriptResult.script.source, null);\r\n let provider = <data.SQConstantExpr>data.DataViewObjectDefinitions.getValue(objects, scriptResult.script.provider, null);\r\n return {\r\n source: scriptSource ? scriptSource.value : null,\r\n provider: provider ? provider.value : null\r\n };\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n export function getScriptInput(projections: QueryProjectionsByRole, selects: ArrayNamedItems<data.NamedSQExpr>, schema: FederatedConceptualSchema): data.ScriptInput {\r\n let scriptInput: data.ScriptInput = {\r\n VariableName: \"dataset\",\r\n Columns: []\r\n };\r\n\r\n // Go over all the projections, and create an input column according to the order\r\n // of the projections (including duplicate expressions)\r\n if (projections && selects && !_.isEmpty(selects)) {\r\n let scriptInputColumnNames: string[] = [];\r\n let scriptInputColumns: data.ScriptInputColumn[] = [];\r\n for (let role in projections) {\r\n for (let projection of projections[role].all()) {\r\n let select = selects.withName(projection.queryRef);\r\n if (select) {\r\n let scriptInputColumn = <data.ScriptInputColumn>{\r\n QueryName: select.name,\r\n Name: select.expr.accept(new ScriptInputColumnNameVisitor(schema))\r\n };\r\n\r\n scriptInputColumns.push(scriptInputColumn);\r\n scriptInputColumnNames.push(scriptInputColumn.Name);\r\n }\r\n }\r\n }\r\n\r\n // Make sure the names of the columns are unique\r\n scriptInputColumnNames = StringExtensions.ensureUniqueNames(scriptInputColumnNames);\r\n\r\n // Update the names of the columns\r\n for (let i = 0; i < scriptInputColumnNames.length; i++) {\r\n let scriptInputColumn = scriptInputColumns[i];\r\n scriptInputColumn.Name = scriptInputColumnNames[i];\r\n }\r\n\r\n scriptInput.Columns = scriptInputColumns;\r\n }\r\n\r\n return scriptInput;\r\n }\r\n\r\n class ScriptInputColumnNameVisitor extends DefaultSQExprVisitor<string>\r\n {\r\n private federatedSchema: FederatedConceptualSchema;\r\n\r\n constructor(federatedSchema: FederatedConceptualSchema) {\r\n super();\r\n this.federatedSchema = federatedSchema;\r\n }\r\n\r\n public visitEntity(expr: SQEntityExpr): string {\r\n return expr.entity;\r\n }\r\n\r\n public visitColumnRef(expr: SQColumnRefExpr): string {\r\n return ScriptInputColumnNameVisitor.getNameForProperty(expr, this.federatedSchema);\r\n }\r\n\r\n public visitMeasureRef(expr: SQMeasureRefExpr): string {\r\n return ScriptInputColumnNameVisitor.getNameForProperty(expr, this.federatedSchema);\r\n }\r\n\r\n public visitAggr(expr: SQAggregationExpr): string {\r\n return ScriptInputColumnNameVisitor.getNameForAggregate(expr, this.federatedSchema);\r\n }\r\n\r\n public visitHierarchy(expr: SQHierarchyExpr): string {\r\n return ScriptInputColumnNameVisitor.getNameForHierarchy(expr, this.federatedSchema);\r\n }\r\n\r\n public visitHierarchyLevel(expr: SQHierarchyLevelExpr): string {\r\n return ScriptInputColumnNameVisitor.getNameForHierarchyLevel(expr, this.federatedSchema);\r\n }\r\n\r\n public static getNameForProperty(expr: SQPropRefExpr, federatedSchema: FederatedConceptualSchema): string {\r\n debug.assertValue(expr, 'expr');\r\n\r\n let fieldExpr = SQExprConverter.asFieldPattern(expr);\r\n let fieldExprItem = fieldExpr.column || fieldExpr.measure;\r\n\r\n let schema = federatedSchema.schema(fieldExprItem.schema),\r\n property = schema.findProperty(fieldExprItem.entity, fieldExprItem.name);\r\n\r\n if (property)\r\n return property.name;\r\n }\r\n\r\n public static getNameForAggregate(expr: SQAggregationExpr, federatedSchema: FederatedConceptualSchema): string {\r\n debug.assertValue(expr, 'expr');\r\n\r\n let field = SQExprConverter.asFieldPattern(expr);\r\n let fieldAggregate = field.columnAggr || field.entityAggr;\r\n let entity = federatedSchema\r\n .schema(fieldAggregate.schema)\r\n .entities\r\n .withName(fieldAggregate.entity);\r\n\r\n if (!entity)\r\n return;\r\n\r\n let backingProperty = entity.properties.withName(FieldExprPattern.getFieldExprName(field));\r\n\r\n return backingProperty.name;\r\n }\r\n\r\n public static getNameForHierarchy(expr: SQHierarchyExpr, federatedScheam: FederatedConceptualSchema): string {\r\n let fieldExpr = SQExprConverter.asFieldPattern(expr);\r\n let fieldExprItem = fieldExpr.hierarchy;\r\n\r\n if (fieldExprItem) {\r\n let schema = federatedScheam.schema(fieldExprItem.schema),\r\n hierarchy = schema.findHierarchy(fieldExprItem.entity, fieldExprItem.name);\r\n\r\n if (hierarchy)\r\n return hierarchy.name;\r\n }\r\n }\r\n\r\n public static getNameForHierarchyLevel(expr: SQHierarchyLevelExpr, federatedScheam: FederatedConceptualSchema): string {\r\n debug.assertValue(expr, 'expr');\r\n\r\n let field = SQExprConverter.asFieldPattern(expr);\r\n if (field.columnHierarchyLevelVariation) {\r\n return ScriptInputColumnNameVisitor.getVariationLevelName(expr, federatedScheam);\r\n }\r\n\r\n /*Hierarchies are not supported yet*/\r\n }\r\n\r\n private static getVariationLevelName(expr: SQHierarchyLevelExpr, federatedSchema: FederatedConceptualSchema): string {\r\n debug.assertValue(expr, 'expr');\r\n\r\n let field = SQExprConverter.asFieldPattern(expr);\r\n let fieldEntity = FieldExprPattern.toFieldExprEntityItemPattern(field);\r\n\r\n if (field.columnHierarchyLevelVariation) {\r\n let prop = federatedSchema.schema(fieldEntity.schema).findProperty(fieldEntity.entity, field.columnHierarchyLevelVariation.source.name);\r\n if (!prop)\r\n return;\r\n\r\n let variations = prop.column.variations;\r\n for (let variation of variations)\r\n if (variation.name === field.columnHierarchyLevelVariation.variationName)\r\n for (let level of variation.defaultHierarchy.levels)\r\n if (level.name === field.columnHierarchyLevelVariation.level.level)\r\n return level.column.name;\r\n }\r\n }\r\n }\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.data.segmentation {\r\n\r\n export interface DataViewTableSegment extends DataViewTable {\r\n /** \r\n * Index of the last item that had a merge flag in the underlying data.\r\n * We assume merge flags are not random but adjacent to each other. \r\n */\r\n lastMergeIndex?: number;\r\n }\r\n\r\n export interface DataViewTreeSegmentNode extends DataViewTreeNode {\r\n /** Indicates whether the node is a duplicate of a node from a previous segment. */\r\n isMerge?: boolean;\r\n }\r\n\r\n export interface DataViewCategoricalSegment extends DataViewCategorical {\r\n /** \r\n * Index of the last item that had a merge flag in the underlying data.\r\n * We assume merge flags are not random but adjacent to each other. \r\n */\r\n lastMergeIndex?: number;\r\n }\r\n\r\n export interface DataViewMatrixSegmentNode extends DataViewMatrixNode {\r\n /**\r\n * Index of the last item that had a merge flag in the underlying data.\r\n * We assume merge flags are not random but adjacent to each other. \r\n */\r\n isMerge?: boolean;\r\n }\r\n\r\n export module DataViewMerger {\r\n\r\n export function mergeDataViews(source: DataView, segment: DataView): void {\r\n\r\n if (!DataViewAnalysis.isMetadataEquivalent(source.metadata, segment.metadata)) {\r\n debug.assertFail(\"Cannot merge data views with different metadata columns\");\r\n }\r\n\r\n // The last segment is complete. We mark the source as complete.\r\n if (!segment.metadata.segment)\r\n delete source.metadata.segment;\r\n\r\n if (source.table && segment.table)\r\n mergeTables(source.table, <DataViewTableSegment>segment.table);\r\n\r\n if (source.categorical && segment.categorical)\r\n mergeCategorical(source.categorical, <DataViewCategoricalSegment>segment.categorical);\r\n\r\n // Tree cannot support subtotals hence we can get into situations\r\n // where a node has no children in one segment and more than 1 child\r\n // in another segment.\r\n if (source.tree && segment.tree)\r\n mergeTreeNodes(source.tree.root, segment.tree.root, true /*allowDifferentStructure*/);\r\n\r\n if (source.matrix && segment.matrix)\r\n mergeTreeNodes(source.matrix.rows.root, segment.matrix.rows.root, false /*allowDifferentStructure*/);\r\n }\r\n\r\n /** Note: Public for testability */\r\n export function mergeTables(source: DataViewTable, segment: DataViewTableSegment): void {\r\n debug.assertValue(source, 'source');\r\n debug.assertValue(segment, 'segment');\r\n\r\n if (segment.rows.length === 0)\r\n return;\r\n\r\n merge(source.rows, segment.rows, segment.lastMergeIndex + 1);\r\n }\r\n\r\n /**\r\n * Merge categories values and identities\r\n * \r\n * Note: Public for testability \r\n */\r\n export function mergeCategorical(source: DataViewCategorical, segment: DataViewCategoricalSegment): void {\r\n debug.assertValue(source, 'source');\r\n debug.assertValue(segment, 'segment');\r\n\r\n // Merge categories values and identities\r\n if (source.categories && segment.categories) {\r\n let segmentCategoriesLength = segment.categories.length;\r\n debug.assert(source.categories.length === segmentCategoriesLength, \"Source and segment categories have different lengths.\");\r\n\r\n for (let categoryIndex: number = 0; categoryIndex < segmentCategoriesLength; categoryIndex++) {\r\n let segmentCategory = segment.categories[categoryIndex];\r\n let sourceCategory = source.categories[categoryIndex];\r\n\r\n debug.assert(DataViewAnalysis.areMetadataColumnsEquivalent(sourceCategory.source, segmentCategory.source), \"Source and segment category have different sources.\");\r\n\r\n if (!sourceCategory.values && segmentCategory.values) {\r\n sourceCategory.values = [];\r\n debug.assert(!sourceCategory.identity, \"Source category is missing values but has identities.\");\r\n }\r\n\r\n if (segmentCategory.values) {\r\n merge(sourceCategory.values, segmentCategory.values, segment.lastMergeIndex + 1);\r\n }\r\n\r\n if (!sourceCategory.identity && segmentCategory.identity) {\r\n sourceCategory.identity = [];\r\n }\r\n\r\n if (segmentCategory.identity) {\r\n merge(sourceCategory.identity, segmentCategory.identity, segment.lastMergeIndex + 1);\r\n }\r\n }\r\n }\r\n\r\n // Merge values for each value column\r\n if (source.values && segment.values) {\r\n let segmentValuesLength = segment.values.length;\r\n debug.assert(source.values.length === segmentValuesLength, \"Source and segment values have different lengths.\");\r\n\r\n for (let valueIndex: number = 0; valueIndex < segmentValuesLength; valueIndex++) {\r\n let segmentValue = segment.values[valueIndex];\r\n let sourceValue = source.values[valueIndex];\r\n\r\n debug.assert(jsCommon.JsonComparer.equals(sourceValue.source, segmentValue.source), \"Source and segment value have different sources.\");\r\n\r\n if (!sourceValue.values && segmentValue.values) {\r\n sourceValue.values = [];\r\n }\r\n\r\n if (segmentValue.values) {\r\n merge(sourceValue.values, segmentValue.values, segment.lastMergeIndex + 1);\r\n }\r\n\r\n if (segmentValue.highlights) {\r\n merge(sourceValue.highlights, segmentValue.highlights, segment.lastMergeIndex + 1);\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Merges the segment array starting at the specified index into the source array \r\n * and returns the segment slice that wasn't merged.\r\n * The segment array is spliced up to specified index in the process.\r\n */\r\n function merge(source: any[], segment: any[], index?: number): any[] {\r\n if (index >= segment.length)\r\n return segment;\r\n\r\n let result: any[] = [];\r\n if (index !== undefined)\r\n result = segment.splice(0, index);\r\n\r\n Array.prototype.push.apply(source, segment);\r\n\r\n return result;\r\n }\r\n\r\n /** Note: Public for testability */\r\n export function mergeTreeNodes(sourceRoot: DataViewTreeNode, segmentRoot: DataViewTreeNode, allowDifferentStructure: boolean): void {\r\n debug.assertValue(sourceRoot, 'sourceRoot');\r\n debug.assertValue(segmentRoot, 'segmentRoot');\r\n\r\n if (!segmentRoot.children || segmentRoot.children.length === 0)\r\n return;\r\n\r\n if (allowDifferentStructure && (!sourceRoot.children || sourceRoot.children.length === 0)) {\r\n sourceRoot.children = segmentRoot.children;\r\n return;\r\n }\r\n\r\n debug.assert(sourceRoot.children && sourceRoot.children.length >= 0,\r\n \"Source tree has different structure than segment.\");\r\n\r\n let firstAppendIndex = findFirstAppendIndex(segmentRoot.children);\r\n let lastSourceChild = sourceRoot.children[sourceRoot.children.length - 1];\r\n let mergedChildren = merge(sourceRoot.children, segmentRoot.children, firstAppendIndex);\r\n\r\n if (mergedChildren.length > 0)\r\n mergeTreeNodes(lastSourceChild, mergedChildren[mergedChildren.length - 1], allowDifferentStructure);\r\n }\r\n\r\n function findFirstAppendIndex(children: DataViewTreeNode[]): number {\r\n if (children.length === 0)\r\n return 0;\r\n\r\n let i: number = 0;\r\n for (; i < children.length; i++) {\r\n let childSegment: DataViewTreeSegmentNode = <DataViewTreeSegmentNode>children[i];\r\n if (!childSegment.isMerge)\r\n break;\r\n }\r\n\r\n return i;\r\n }\r\n }\r\n} ","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.data {\r\n import ArrayExtensions = jsCommon.ArrayExtensions;\r\n\r\n /** Rewrites an expression tree, including all descendant nodes. */\r\n export class SQExprRewriter implements ISQExprVisitor<SQExpr> {\r\n public visitColumnRef(expr: SQColumnRefExpr): SQExpr {\r\n let origArg = expr.source,\r\n rewrittenArg = origArg.accept(this);\r\n\r\n if (origArg === rewrittenArg)\r\n return expr;\r\n\r\n return new SQColumnRefExpr(rewrittenArg, expr.ref);\r\n }\r\n\r\n public visitMeasureRef(expr: SQMeasureRefExpr): SQExpr {\r\n let origArg = expr.source,\r\n rewrittenArg = origArg.accept(this);\r\n\r\n if (origArg === rewrittenArg)\r\n return expr;\r\n\r\n return new SQMeasureRefExpr(rewrittenArg, expr.ref);\r\n }\r\n\r\n public visitAggr(expr: SQAggregationExpr): SQExpr {\r\n let origArg = expr.arg,\r\n rewrittenArg = origArg.accept(this);\r\n\r\n if (origArg === rewrittenArg)\r\n return expr;\r\n\r\n return new SQAggregationExpr(rewrittenArg, expr.func);\r\n }\r\n\r\n public visitHierarchy(expr: SQHierarchyExpr): SQExpr {\r\n let origArg = expr.arg,\r\n rewrittenArg = origArg.accept(this);\r\n\r\n if (origArg === rewrittenArg)\r\n return expr;\r\n\r\n return new SQHierarchyExpr(rewrittenArg, expr.hierarchy);\r\n }\r\n\r\n public visitHierarchyLevel(expr: SQHierarchyLevelExpr): SQExpr {\r\n let origArg = expr.arg,\r\n rewrittenArg = origArg.accept(this);\r\n\r\n if (origArg === rewrittenArg)\r\n return expr;\r\n\r\n return new SQHierarchyLevelExpr(rewrittenArg, expr.level);\r\n }\r\n\r\n public visitPropertyVariationSource(expr: SQPropertyVariationSourceExpr): SQExpr {\r\n let origArg = expr.arg,\r\n rewrittenArg = origArg.accept(this);\r\n\r\n if (origArg === rewrittenArg)\r\n return expr;\r\n\r\n return new SQPropertyVariationSourceExpr(rewrittenArg, expr.name, expr.property);\r\n }\r\n\r\n public visitEntity(expr: SQEntityExpr): SQExpr {\r\n return expr;\r\n }\r\n\r\n public visitAnd(orig: SQAndExpr): SQExpr {\r\n let origLeft = orig.left,\r\n rewrittenLeft = origLeft.accept(this),\r\n origRight = orig.right,\r\n rewrittenRight = origRight.accept(this);\r\n\r\n if (origLeft === rewrittenLeft && origRight === rewrittenRight)\r\n return orig;\r\n\r\n return new SQAndExpr(rewrittenLeft, rewrittenRight);\r\n }\r\n\r\n public visitBetween(orig: SQBetweenExpr): SQExpr {\r\n let origArg = orig.arg,\r\n rewrittenArg = origArg.accept(this),\r\n origLower = orig.lower,\r\n rewrittenLower = origLower.accept(this),\r\n origUpper = orig.upper,\r\n rewrittenUpper = origUpper.accept(this);\r\n\r\n if (origArg === rewrittenArg && origLower === rewrittenLower && origUpper === rewrittenUpper)\r\n return orig;\r\n\r\n return new SQBetweenExpr(rewrittenArg, rewrittenLower, rewrittenUpper);\r\n }\r\n\r\n public visitIn(orig: SQInExpr): SQExpr {\r\n let origArgs = orig.args,\r\n rewrittenArgs = this.rewriteAll(origArgs),\r\n origValues: SQExpr[][] = orig.values,\r\n rewrittenValues: SQExpr[][];\r\n\r\n for (let i = 0, len = origValues.length; i < len; i++) {\r\n let origValueTuple = origValues[i],\r\n rewrittenValueTuple = this.rewriteAll(origValueTuple);\r\n\r\n if (origValueTuple !== rewrittenValueTuple && !rewrittenValues)\r\n rewrittenValues = ArrayExtensions.take(origValues, i);\r\n\r\n if (rewrittenValues)\r\n rewrittenValues.push(rewrittenValueTuple);\r\n }\r\n\r\n if (origArgs === rewrittenArgs && !rewrittenValues)\r\n return orig;\r\n\r\n return new SQInExpr(rewrittenArgs, rewrittenValues || origValues);\r\n }\r\n\r\n private rewriteAll(origExprs: SQExpr[]): SQExpr[]{\r\n debug.assertValue(origExprs, 'origExprs');\r\n\r\n let rewrittenResult: SQExpr[];\r\n for (let i = 0, len = origExprs.length; i < len; i++) {\r\n let origExpr = origExprs[i],\r\n rewrittenExpr = origExpr.accept(this);\r\n\r\n if (origExpr !== rewrittenExpr && !rewrittenResult)\r\n rewrittenResult = ArrayExtensions.take(origExprs, i);\r\n\r\n if (rewrittenResult)\r\n rewrittenResult.push(rewrittenExpr);\r\n }\r\n\r\n return rewrittenResult || origExprs;\r\n }\r\n\r\n public visitOr(orig: SQOrExpr): SQExpr {\r\n let origLeft = orig.left,\r\n rewrittenLeft = origLeft.accept(this),\r\n origRight = orig.right,\r\n rewrittenRight = origRight.accept(this);\r\n\r\n if (origLeft === rewrittenLeft && origRight === rewrittenRight)\r\n return orig;\r\n\r\n return new SQOrExpr(rewrittenLeft, rewrittenRight);\r\n }\r\n\r\n public visitCompare(orig: SQCompareExpr): SQExpr {\r\n let origLeft = orig.left,\r\n rewrittenLeft = origLeft.accept(this),\r\n origRight = orig.right,\r\n rewrittenRight = origRight.accept(this);\r\n\r\n if (origLeft === rewrittenLeft && origRight === rewrittenRight)\r\n return orig;\r\n\r\n return new SQCompareExpr(orig.kind, rewrittenLeft, rewrittenRight);\r\n }\r\n\r\n public visitContains(orig: SQContainsExpr): SQExpr {\r\n let origLeft = orig.left,\r\n rewrittenLeft = origLeft.accept(this),\r\n origRight = orig.right,\r\n rewrittenRight = origRight.accept(this);\r\n\r\n if (origLeft === rewrittenLeft && origRight === rewrittenRight)\r\n return orig;\r\n\r\n return new SQContainsExpr(rewrittenLeft, rewrittenRight);\r\n }\r\n\r\n public visitExists(orig: SQExistsExpr): SQExpr {\r\n let origArg = orig.arg,\r\n rewrittenArg = origArg.accept(this);\r\n\r\n if (origArg === rewrittenArg)\r\n return orig;\r\n\r\n return new SQExistsExpr(rewrittenArg);\r\n }\r\n\r\n public visitNot(orig: SQNotExpr): SQExpr {\r\n let origArg = orig.arg,\r\n rewrittenArg = origArg.accept(this);\r\n\r\n if (origArg === rewrittenArg)\r\n return orig;\r\n\r\n return new SQNotExpr(rewrittenArg);\r\n }\r\n\r\n public visitStartsWith(orig: SQStartsWithExpr): SQExpr {\r\n let origLeft = orig.left,\r\n rewrittenLeft = origLeft.accept(this),\r\n origRight = orig.right,\r\n rewrittenRight = origRight.accept(this);\r\n\r\n if (origLeft === rewrittenLeft && origRight === rewrittenRight)\r\n return orig;\r\n\r\n return new SQStartsWithExpr(rewrittenLeft, rewrittenRight);\r\n }\r\n\r\n public visitConstant(expr: SQConstantExpr): SQExpr {\r\n return expr;\r\n }\r\n\r\n public visitDateSpan(orig: SQDateSpanExpr): SQExpr {\r\n let origArg = orig.arg,\r\n rewrittenArg = origArg.accept(this);\r\n\r\n if (origArg === rewrittenArg)\r\n return orig;\r\n\r\n return new SQDateSpanExpr(orig.unit, rewrittenArg);\r\n }\r\n\r\n public visitDateAdd(orig: SQDateAddExpr): SQExpr {\r\n let origArg = orig.arg,\r\n rewrittenArg = origArg.accept(this);\r\n\r\n if (origArg === rewrittenArg)\r\n return orig;\r\n\r\n return new SQDateAddExpr(orig.unit, orig.amount, rewrittenArg);\r\n }\r\n\r\n public visitNow(orig: SQNowExpr): SQExpr {\r\n return orig;\r\n }\r\n\r\n public visitDefaultValue(orig: SQDefaultValueExpr): SQExpr {\r\n return orig;\r\n }\r\n\r\n public visitAnyValue(orig: SQAnyValueExpr): SQExpr {\r\n return orig;\r\n }\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../../_references.ts\"/>\r\n\r\nmodule powerbi.data {\r\n /** Responsible for writing equality comparisons against a field to an SQInExpr. */\r\n export module EqualsToInRewriter {\r\n export function run(expr: SQExpr): SQExpr {\r\n debug.assertValue(expr, 'expr');\r\n\r\n return expr.accept(new Rewriter());\r\n }\r\n\r\n class Rewriter extends SQExprRewriter {\r\n private current: InBuilder;\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n public visitCompare(expr: SQCompareExpr): SQExpr {\r\n if (expr.kind !== QueryComparisonKind.Equal)\r\n return this.visitUnsupported(expr);\r\n if (!this.isSupported(expr.left) || !this.isSupported(expr.right))\r\n return this.visitUnsupported(expr);\r\n\r\n let leftIsComparand = this.isComparand(expr.left);\r\n let rightIsComparand = this.isComparand(expr.right);\r\n if (leftIsComparand === rightIsComparand)\r\n return this.visitUnsupported(expr);\r\n\r\n let operand: SQExpr = leftIsComparand\r\n ? expr.left\r\n : expr.right;\r\n let value: SQExpr = leftIsComparand\r\n ? expr.right\r\n : expr.left;\r\n\r\n let current = this.current;\r\n if (!current) {\r\n return SQExprBuilder.inExpr([operand], [[value]]);\r\n }\r\n\r\n current.add(operand, value);\r\n\r\n return expr;\r\n }\r\n\r\n public visitOr(expr: SQOrExpr): SQExpr {\r\n if (!this.isSupported(expr.left) || !this.isSupported(expr.right))\r\n return this.visitUnsupported(expr);\r\n\r\n let current: InBuilder;\r\n if (!this.current) {\r\n current = this.current = new InBuilder();\r\n }\r\n\r\n expr.left.accept(this);\r\n expr.right.accept(this);\r\n\r\n if (current) {\r\n this.current = null;\r\n return current.complete() || expr;\r\n }\r\n\r\n return expr;\r\n }\r\n\r\n public visitAnd(expr: SQAndExpr): SQExpr {\r\n if (!this.isSupported(expr.left) || !this.isSupported(expr.right))\r\n return this.visitUnsupported(expr);\r\n\r\n let current = this.current;\r\n if (current) {\r\n // NOTE: Composite keys are not supported by this algorithm.\r\n current.cancel();\r\n return expr;\r\n }\r\n\r\n return super.visitAnd(expr);\r\n }\r\n\r\n private visitUnsupported(expr: SQExpr): SQExpr {\r\n let current = this.current;\r\n if (current)\r\n current.cancel();\r\n\r\n return expr;\r\n }\r\n\r\n private isSupported(expr: SQExpr): boolean {\r\n debug.assertValue(expr, 'expr');\r\n\r\n return expr instanceof SQCompareExpr\r\n || expr instanceof SQColumnRefExpr\r\n || expr instanceof SQConstantExpr\r\n || expr instanceof SQHierarchyLevelExpr\r\n || expr instanceof SQOrExpr\r\n || expr instanceof SQAndExpr;\r\n }\r\n\r\n private isComparand(expr: SQExpr): boolean {\r\n return expr instanceof SQColumnRefExpr\r\n || expr instanceof SQHierarchyLevelExpr;\r\n }\r\n }\r\n\r\n class InBuilder {\r\n private operand: SQExpr;\r\n private values: SQExpr[];\r\n private cancelled: boolean;\r\n\r\n public add(operand: SQExpr, value: SQExpr): void {\r\n debug.assertValue(operand, 'operand');\r\n debug.assertValue(value, 'value');\r\n\r\n if (this.cancelled)\r\n return;\r\n\r\n if (this.operand && !SQExpr.equals(operand, this.operand)) {\r\n this.cancel();\r\n return;\r\n }\r\n\r\n this.operand = operand;\r\n\r\n let values = this.values;\r\n if (!values)\r\n values = this.values = [];\r\n\r\n values.push(value);\r\n }\r\n\r\n public cancel(): void {\r\n this.cancelled = true;\r\n }\r\n\r\n public complete(): SQInExpr {\r\n if (this.cancelled || !this.operand)\r\n return;\r\n\r\n return SQExprBuilder.inExpr([this.operand], _.map(this.values, v => [v]));\r\n }\r\n }\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../../_references.ts\"/>\r\n\r\nmodule powerbi.data {\r\n\r\n export interface FilterValueScopeIdsContainer {\r\n isNot: boolean;\r\n scopeIds: DataViewScopeIdentity[];\r\n }\r\n\r\n export module SQExprConverter {\r\n export function asScopeIdsContainer(filter: SemanticFilter, fieldSQExprs: SQExpr[]): FilterValueScopeIdsContainer {\r\n debug.assertValue(filter, 'filter');\r\n debug.assertValue(fieldSQExprs, 'fieldSQExprs');\r\n debug.assert(fieldSQExprs.length > 0, 'There should be at least 1 field expression.');\r\n\r\n let filterItems = filter.conditions();\r\n debug.assert(filterItems.length === 1, 'There should be exactly 1 filter expression.');\r\n let filterItem = filterItems[0];\r\n if (filterItem) {\r\n let visitor = new FilterScopeIdsCollectorVisitor(fieldSQExprs);\r\n if (filterItem.accept(visitor))\r\n return visitor.getResult();\r\n }\r\n }\r\n\r\n /** Gets a comparand value from the given DataViewScopeIdentity. */\r\n export function getFirstComparandValue(identity: DataViewScopeIdentity): any {\r\n debug.assertValue(identity, 'identity');\r\n\r\n let comparandExpr = (<SQExpr>identity.expr).accept(new FindComparandVisitor());\r\n if (comparandExpr)\r\n return comparandExpr.value;\r\n }\r\n }\r\n\r\n /** Collect filter values from simple semantic filter that is similar to 'is any of' or 'is not any of', getResult() returns a collection of scopeIds.**/\r\n class FilterScopeIdsCollectorVisitor extends DefaultSQExprVisitor<boolean>{\r\n private isRoot: boolean;\r\n private isNot: boolean;\r\n private keyExprsCount: number;\r\n private valueExprs: SQExpr[];\r\n private fieldExprs: SQExpr[];\r\n\r\n constructor(fieldSQExprs:SQExpr[]) {\r\n super();\r\n this.isRoot = true;\r\n this.isNot = false;\r\n this.keyExprsCount = null;\r\n this.valueExprs = [];\r\n\r\n // Need to drop the entitylet before create the scopeIdentity. The ScopeIdentity created on the client is used to\r\n // compare the ScopeIdentity came from the server. But server doesn't have the entity variable concept, so we will\r\n // need to drop it in order to use JsonComparer.\r\n this.fieldExprs = [];\r\n for (let field of fieldSQExprs) {\r\n this.fieldExprs.push(SQExprBuilder.removeEntityVariables(field));\r\n }\r\n }\r\n\r\n public getResult(): FilterValueScopeIdsContainer {\r\n debug.assert(this.fieldExprs.length > 0, 'fieldExprs has at least one fieldExpr'); \r\n\r\n let valueExprs = this.valueExprs,\r\n scopeIds: DataViewScopeIdentity[] = [];\r\n let valueCount: number = this.keyExprsCount || 1;\r\n\r\n for (let startIndex = 0, endIndex = valueCount, len = valueExprs.length; startIndex < len && endIndex <= len;) {\r\n let values = valueExprs.slice(startIndex, endIndex);\r\n let scopeId = FilterScopeIdsCollectorVisitor.getScopeIdentity(this.fieldExprs, values);\r\n\r\n if (!jsCommon.ArrayExtensions.isInArray(scopeIds, scopeId, DataViewScopeIdentity.equals))\r\n scopeIds.push(scopeId);\r\n\r\n startIndex += valueCount;\r\n endIndex += valueCount;\r\n }\r\n\r\n return {\r\n isNot: this.isNot,\r\n scopeIds: scopeIds,\r\n };\r\n }\r\n\r\n private static getScopeIdentity(fieldExprs: SQExpr[], valueExprs: SQExpr[]): DataViewScopeIdentity {\r\n debug.assert(valueExprs.length > 0, 'valueExprs has at least one valueExpr');\r\n debug.assert(valueExprs.length === fieldExprs.length, 'fieldExpr and valueExpr count should match');\r\n\r\n let compoundSQExpr: SQExpr;\r\n for (let i = 0, len = fieldExprs.length; i < len; i++) {\r\n let equalsExpr = SQExprBuilder.equal(fieldExprs[i], valueExprs[i]);\r\n if (!compoundSQExpr)\r\n compoundSQExpr = equalsExpr;\r\n else\r\n compoundSQExpr = SQExprBuilder.and(compoundSQExpr, equalsExpr);\r\n }\r\n\r\n return createDataViewScopeIdentity(compoundSQExpr);\r\n }\r\n\r\n public visitOr(expr: SQOrExpr): boolean {\r\n if (this.keyExprsCount !== null)\r\n return this.unsupportedSQExpr();\r\n\r\n this.isRoot = false;\r\n return expr.left.accept(this) && expr.right.accept(this);\r\n }\r\n\r\n public visitNot(expr: SQNotExpr): boolean {\r\n if (!this.isRoot)\r\n return this.unsupportedSQExpr();\r\n\r\n this.isNot = true;\r\n return expr.arg.accept(this);\r\n }\r\n\r\n public visitConstant(expr: SQConstantExpr): boolean {\r\n if (this.isRoot && expr.type.primitiveType === PrimitiveType.Null)\r\n return this.unsupportedSQExpr();\r\n\r\n this.valueExprs.push(expr); \r\n return true;\r\n }\r\n\r\n public visitCompare(expr: SQCompareExpr): boolean {\r\n if (this.keyExprsCount !== null)\r\n return this.unsupportedSQExpr();\r\n\r\n this.isRoot = false;\r\n\r\n if (expr.kind !== QueryComparisonKind.Equal)\r\n return this.unsupportedSQExpr();\r\n\r\n return expr.left.accept(this) && expr.right.accept(this);\r\n }\r\n\r\n public visitIn(expr: SQInExpr): boolean {\r\n this.keyExprsCount = 0;\r\n let result: boolean;\r\n this.isRoot = false;\r\n for (let arg of expr.args) {\r\n result = arg.accept(this);\r\n if (!result)\r\n return this.unsupportedSQExpr();\r\n\r\n this.keyExprsCount++;\r\n }\r\n\r\n if (this.keyExprsCount !== this.fieldExprs.length)\r\n return this.unsupportedSQExpr();\r\n\r\n let values = expr.values;\r\n for (let valueTuple of values) {\r\n let jlen = valueTuple.length;\r\n debug.assert(jlen === this.keyExprsCount, \"keys count and values count should match\");\r\n\r\n for (let value of valueTuple) {\r\n result = value.accept(this);\r\n if (!result)\r\n return this.unsupportedSQExpr();\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n\r\n public visitColumnRef(expr: SQColumnRefExpr): boolean {\r\n if (this.isRoot)\r\n return this.unsupportedSQExpr();\r\n\r\n let fixedExpr = SQExprBuilder.removeEntityVariables(expr);\r\n if (this.keyExprsCount !== null)\r\n return SQExpr.equals(this.fieldExprs[this.keyExprsCount], fixedExpr);\r\n\r\n return SQExpr.equals(this.fieldExprs[0], fixedExpr);\r\n }\r\n\r\n public visitDefaultValue(expr: SQDefaultValueExpr): boolean {\r\n if (this.isRoot || this.keyExprsCount !== null)\r\n return this.unsupportedSQExpr();\r\n\r\n this.valueExprs.push(expr);\r\n return true;\r\n }\r\n\r\n public visitAnyValue(expr: SQAnyValueExpr): boolean {\r\n if (this.isRoot || this.keyExprsCount !== null)\r\n return this.unsupportedSQExpr();\r\n\r\n this.valueExprs.push(expr);\r\n return true;\r\n }\r\n\r\n public visitDefault(expr: SQExpr): boolean {\r\n return this.unsupportedSQExpr();\r\n }\r\n\r\n private unsupportedSQExpr(): boolean {\r\n return false;\r\n }\r\n }\r\n\r\n class FindComparandVisitor extends DefaultSQExprVisitor<SQConstantExpr> {\r\n public visitAnd(expr: SQAndExpr): SQConstantExpr {\r\n return expr.left.accept(this) || expr.right.accept(this);\r\n }\r\n\r\n public visitCompare(expr: SQCompareExpr): SQConstantExpr {\r\n if (expr.kind === QueryComparisonKind.Equal) {\r\n if (expr.right instanceof SQConstantExpr)\r\n return <SQConstantExpr>expr.right;\r\n if (expr.left instanceof SQConstantExpr)\r\n return <SQConstantExpr>expr.left;\r\n }\r\n }\r\n }\r\n}\r\n","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../../_references.ts\"/>\r\n\r\nmodule powerbi.data {\r\n import ArrayExtensions = jsCommon.ArrayExtensions;\r\n\r\n /** Recognizes DataViewScopeIdentity expression trees to extract comparison keys. */\r\n export module ScopeIdentityExtractor {\r\n export function getKeys(expr: SQExpr): SQExpr[] {\r\n let extractor = new ScopeIdExtractorImpl();\r\n expr.accept(extractor);\r\n\r\n if (extractor.malformed)\r\n return null;\r\n\r\n return ArrayExtensions.emptyToNull(extractor.keys);\r\n }\r\n\r\n export function getInExpr(expr: SQExpr): SQInExpr{\r\n let extractor = new ScopeIdExtractorImpl();\r\n expr.accept(extractor);\r\n\r\n if (extractor.malformed)\r\n return;\r\n \r\n let keys = ArrayExtensions.emptyToNull(extractor.keys);\r\n let keyValues = ArrayExtensions.emptyToNull(extractor.values);\r\n\r\n if (keys && keyValues)\r\n return data.SQExprBuilder.inExpr(keys, [keyValues]);\r\n }\r\n\r\n /**\r\n * Recognizes expressions of the form:\r\n * 1) Equals(ColRef, Constant)\r\n * 2) And(Equals(ColRef1, Constant1), Equals(ColRef2, Constant2))\r\n * or And(And(Equals(ColRef1, Constant1), Equals(ColRef2, Constant2)), Equals(ColRef3, Constant3)) etc..\r\n */\r\n class ScopeIdExtractorImpl extends DefaultSQExprVisitor<void> {\r\n public keys: SQExpr[] = [];\r\n public values: SQConstantExpr[] = [];\r\n public malformed: boolean;\r\n\r\n public visitAnd(expr: SQAndExpr): void {\r\n expr.left.accept(this);\r\n expr.right.accept(this);\r\n }\r\n\r\n public visitCompare(expr: SQCompareExpr): void {\r\n if (expr.kind !== QueryComparisonKind.Equal) {\r\n this.visitDefault(expr);\r\n return;\r\n }\r\n debug.assert(expr.left instanceof SQExpr && expr.right instanceof SQConstantExpr, 'invalid compare expr operands');\r\n expr.left.accept(this);\r\n expr.right.accept(this);\r\n }\r\n\r\n public visitColumnRef(expr: SQColumnRefExpr): void {\r\n this.keys.push(expr);\r\n }\r\n\r\n public visitHierarchyLevel(expr: SQHierarchyLevelExpr): void {\r\n this.keys.push(expr);\r\n }\r\n\r\n public visitConstant(expr: SQConstantExpr): void {\r\n this.values.push(expr);\r\n }\r\n\r\n public visitDefault(expr: SQExpr): void {\r\n this.malformed = true;\r\n }\r\n }\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.data {\r\n export module PrimitiveValueEncoding {\r\n const SingleQuoteRegex = /'/g;\r\n\r\n export function decimal(value: number): string {\r\n debug.assertValue(value, 'value');\r\n\r\n return value + 'M';\r\n }\r\n\r\n export function double(value: number): string {\r\n debug.assertValue(value, 'value');\r\n\r\n return value + 'D';\r\n }\r\n\r\n export function integer(value: number): string {\r\n debug.assertValue(value, 'value');\r\n\r\n return value + 'L';\r\n }\r\n\r\n export function dateTime(value: Date): string {\r\n debug.assertValue(value, 'value');\r\n\r\n // Currently, server doesn't support timezone. All date time data on the server don't have time zone information.\r\n // So, when we construct a dateTime object on the client, we will need to ignor user's time zone and force it to be UTC time.\r\n // When we subtract the timeZone offset, the date time object will remain the same value as you entered but dropped the local timeZone.\r\n let date = new Date(value.getTime() - (value.getTimezoneOffset() * 60000));\r\n let dateTimeString = date.toISOString();\r\n\r\n // If it ends with Z, we want to get rid of it, because with trailing Z, it will assume the dateTime is UTC, but we don't want any timeZone information, so\r\n // we will drop it.\r\n // Also, we need to add Prefix and Suffix to match the dsr value format for dateTime object.\r\n if (jsCommon.StringExtensions.endsWith(dateTimeString, 'Z'))\r\n dateTimeString = dateTimeString.substr(0, dateTimeString.length - 1);\r\n return \"datetime'\" + dateTimeString + \"'\";\r\n }\r\n\r\n export function text(value: string): string {\r\n debug.assertValue(value, 'value');\r\n\r\n return \"'\" + value.replace(SingleQuoteRegex, \"''\") + \"'\";\r\n }\r\n\r\n export function nullEncoding(): string {\r\n return 'null';\r\n }\r\n\r\n export function boolean(value: boolean): string {\r\n return value ? 'true' : 'false';\r\n }\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.data {\r\n\r\n export module SQHierarchyExprUtils {\r\n export function getConceptualHierarchy(sqExpr: SQExpr, federatedSchema: FederatedConceptualSchema): ConceptualHierarchy {\r\n if (sqExpr instanceof SQHierarchyExpr) {\r\n let hierarchy = <SQHierarchyExpr>sqExpr;\r\n\r\n if (sqExpr.arg instanceof SQEntityExpr) {\r\n let entityExpr = <SQEntityExpr>sqExpr.arg;\r\n return federatedSchema\r\n .schema(entityExpr.schema)\r\n .findHierarchy(entityExpr.entity, hierarchy.hierarchy);\r\n } else if (sqExpr.arg instanceof SQPropertyVariationSourceExpr) {\r\n let variationExpr = <SQPropertyVariationSourceExpr>sqExpr.arg;\r\n let sourceEntityExpr = <SQEntityExpr>variationExpr.arg;\r\n return federatedSchema\r\n .schema(sourceEntityExpr.schema)\r\n .findHierarchyByVariation(sourceEntityExpr.entity, variationExpr.property, variationExpr.name, hierarchy.hierarchy);\r\n }\r\n }\r\n }\r\n\r\n export function expandExpr(schema: FederatedConceptualSchema, expr: SQExpr, suppressHierarchyLevelExpansion?: boolean): SQExpr | SQExpr[] {\r\n return SQExprHierarchyToHierarchyLevelConverter.convert(expr, schema) ||\r\n SQExprVariationConverter.expand(expr, schema) ||\r\n // If we are calling expandExpr from suppressHierarchyLevelExpansion, we should not expand the hierarchylevels\r\n (!suppressHierarchyLevelExpansion && SQExprHierarchyLevelConverter.expand(expr, schema)) ||\r\n expr;\r\n }\r\n\r\n export function isHierarchyOrVariation(schema: FederatedConceptualSchema, expr: SQExpr): boolean {\r\n if (expr instanceof SQHierarchyExpr || expr instanceof SQHierarchyLevelExpr)\r\n return true;\r\n\r\n let conceptualProperty = expr.getConceptualProperty(schema);\r\n if (conceptualProperty) {\r\n let column = conceptualProperty.column;\r\n if (column && column.variations && column.variations.length > 0)\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n // Return column reference expression for hierarchy level expression.\r\n export function getSourceVariationExpr(hierarchyLevelExpr: data.SQHierarchyLevelExpr): SQColumnRefExpr {\r\n let fieldExprPattern: data.FieldExprPattern = data.SQExprConverter.asFieldPattern(hierarchyLevelExpr);\r\n if (fieldExprPattern.columnHierarchyLevelVariation) {\r\n let entity: data.SQExpr = SQExprBuilder.entity(fieldExprPattern.columnHierarchyLevelVariation.source.schema, fieldExprPattern.columnHierarchyLevelVariation.source.entity);\r\n\r\n return SQExprBuilder.columnRef(entity, fieldExprPattern.columnHierarchyLevelVariation.source.name);\r\n }\r\n }\r\n\r\n // Return hierarchy expression for hierarchy level expression.\r\n export function getSourceHierarchy(hierarchyLevelExpr: data.SQHierarchyLevelExpr): SQHierarchyExpr {\r\n let fieldExprPattern: data.FieldExprPattern = data.SQExprConverter.asFieldPattern(hierarchyLevelExpr);\r\n let hierarchyLevel = fieldExprPattern.hierarchyLevel;\r\n if (hierarchyLevel) {\r\n let entity: data.SQExpr = SQExprBuilder.entity(hierarchyLevel.schema, hierarchyLevel.entity, hierarchyLevel.entityVar);\r\n return SQExprBuilder.hierarchy(entity, hierarchyLevel.name);\r\n }\r\n }\r\n\r\n export function getHierarchySourceAsVariationSource(hierarchyLevelExpr: SQHierarchyLevelExpr): SQPropertyVariationSourceExpr {\r\n\r\n // Make sure the hierarchy level source is a hierarchy\r\n if (!(hierarchyLevelExpr.arg instanceof SQHierarchyExpr))\r\n return;\r\n \r\n // Check if the hierarchy source if a variation\r\n let hierarchyRef = <SQHierarchyExpr>hierarchyLevelExpr.arg;\r\n if (hierarchyRef.arg instanceof SQPropertyVariationSourceExpr)\r\n return <SQPropertyVariationSourceExpr>hierarchyRef.arg;\r\n }\r\n\r\n /**\r\n * Returns true if firstExpr and secondExpr are levels in the same hierarchy and firstExpr is before secondExpr in allLevels.\r\n */\r\n export function areHierarchyLevelsOrdered(allLevels: SQHierarchyLevelExpr[], firstExpr: SQExpr, secondExpr: SQExpr): boolean {\r\n\r\n // Validate that both items hierarchy levels\r\n if (!(firstExpr instanceof SQHierarchyLevelExpr) || !(secondExpr instanceof SQHierarchyLevelExpr))\r\n return false;\r\n\r\n let firstLevel = <SQHierarchyLevelExpr>firstExpr;\r\n let secondLevel = <SQHierarchyLevelExpr>secondExpr;\r\n\r\n // Validate that both items belong to the same hierarchy\r\n if (!SQExpr.equals(firstLevel.arg, secondLevel.arg))\r\n return false;\r\n\r\n // Determine the order\r\n let firstIndex = SQExprUtils.indexOfExpr(allLevels, firstLevel);\r\n let secondIndex = SQExprUtils.indexOfExpr(allLevels, secondLevel);\r\n\r\n return firstIndex !== -1 && secondIndex !== -1 && firstIndex < secondIndex;\r\n }\r\n\r\n /**\r\n * Given an ordered set of levels and an ordered subset of those levels, returns the index where\r\n * expr should be inserted into the subset to maintain the correct order.\r\n */\r\n export function getInsertionIndex(allLevels: SQHierarchyLevelExpr[], orderedSubsetOfLevels: SQHierarchyLevelExpr[], expr: SQHierarchyLevelExpr): number {\r\n\r\n let insertIndex = 0;\r\n\r\n // Loop through the supplied levels until the insertion would no longer be in the correct order\r\n while (insertIndex < orderedSubsetOfLevels.length &&\r\n areHierarchyLevelsOrdered(allLevels, orderedSubsetOfLevels[insertIndex], expr)) {\r\n insertIndex++;\r\n }\r\n\r\n return insertIndex;\r\n }\r\n }\r\n\r\n export module SQExprHierarchyToHierarchyLevelConverter {\r\n export function convert(sqExpr: SQExpr, federatedSchema: FederatedConceptualSchema): SQExpr[] {\r\n debug.assertValue(sqExpr, 'sqExpr');\r\n debug.assertValue(federatedSchema, 'federatedSchema');\r\n\r\n if (sqExpr instanceof SQHierarchyExpr) {\r\n let hierarchyExpr = <SQHierarchyExpr>sqExpr;\r\n\r\n let conceptualHierarchy = SQHierarchyExprUtils.getConceptualHierarchy(hierarchyExpr, federatedSchema);\r\n if (conceptualHierarchy)\r\n return _.map(conceptualHierarchy.levels, hierarchyLevel => SQExprBuilder.hierarchyLevel(sqExpr, hierarchyLevel.name));\r\n }\r\n }\r\n }\r\n\r\n module SQExprHierarchyLevelConverter {\r\n export function expand(expr: SQExpr, schema: FederatedConceptualSchema): SQExpr[] {\r\n debug.assertValue(expr, 'sqExpr');\r\n debug.assertValue(schema, 'federatedSchema');\r\n let exprs: SQExpr[] = [];\r\n\r\n if (expr instanceof SQHierarchyLevelExpr) {\r\n let fieldExpr = SQExprConverter.asFieldPattern(expr);\r\n if (fieldExpr.hierarchyLevel) {\r\n let fieldExprItem = FieldExprPattern.toFieldExprEntityItemPattern(fieldExpr);\r\n let hierarchy = schema\r\n .schema(fieldExprItem.schema)\r\n .findHierarchy(fieldExprItem.entity, fieldExpr.hierarchyLevel.name);\r\n\r\n if (hierarchy) {\r\n let hierarchyLevels = hierarchy.levels;\r\n for (let hierarchyLevel of hierarchyLevels) {\r\n if (hierarchyLevel.name === fieldExpr.hierarchyLevel.level) {\r\n exprs.push(expr);\r\n break;\r\n }\r\n else\r\n exprs.push(\r\n SQExprBuilder.hierarchyLevel(\r\n SQExprBuilder.hierarchy(\r\n SQExprBuilder.entity(fieldExprItem.schema, fieldExprItem.entity, fieldExprItem.entityVar),\r\n hierarchy.name),\r\n hierarchyLevel.name)\r\n );\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (!_.isEmpty(exprs))\r\n return exprs;\r\n }\r\n }\r\n\r\n module SQExprVariationConverter {\r\n export function expand(expr: SQExpr, schema: FederatedConceptualSchema): SQExpr[] {\r\n debug.assertValue(expr, 'sqExpr');\r\n debug.assertValue(schema, 'federatedSchema');\r\n\r\n let exprs: SQExpr[];\r\n let conceptualProperty = expr.getConceptualProperty(schema);\r\n\r\n if (conceptualProperty) {\r\n let column = conceptualProperty.column;\r\n if (column && column.variations && column.variations.length > 0) {\r\n let variations = column.variations;\r\n\r\n // for SU11, we support only one variation\r\n debug.assert(variations.length === 1, \"variations.length\");\r\n let variation = variations[0];\r\n\r\n let fieldExpr = SQExprConverter.asFieldPattern(expr);\r\n let fieldExprItem = FieldExprPattern.toFieldExprEntityItemPattern(fieldExpr);\r\n\r\n exprs = [];\r\n if (variation.defaultHierarchy) {\r\n let hierarchyExpr = SQExprBuilder.hierarchy(\r\n SQExprBuilder.propertyVariationSource(\r\n SQExprBuilder.entity(fieldExprItem.schema, fieldExprItem.entity, fieldExprItem.entityVar),\r\n variation.name, conceptualProperty.name),\r\n variation.defaultHierarchy.name);\r\n\r\n for (let level of variation.defaultHierarchy.levels)\r\n exprs.push(SQExprBuilder.hierarchyLevel(hierarchyExpr, level.name));\r\n }\r\n }\r\n }\r\n\r\n return exprs;\r\n }\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n//// <reference path=\"../_references.ts\"/>\r\nmodule powerbi.data {\r\n // A group can consist of either a single expression, or a collection of hierarchy expressions\r\n export interface SQExprGroup {\r\n expr: SQExpr;\r\n children: SQHierarchyLevelExpr[];\r\n\r\n /** Index of expression in the query. */\r\n selectQueryIndex: number;\r\n };\r\n\r\n export module SQExprGroupUtils {\r\n /** Group all projections. Eacch group can consist of either a single property, or a collection of hierarchy items. */\r\n export function groupExprs(schema: FederatedConceptualSchema, exprs: SQExpr[]): SQExprGroup[] {\r\n let groups: SQExprGroup[] = [];\r\n for (let i = 0, len = exprs.length; i < len; i++) {\r\n let expr = exprs[i];\r\n debug.assertValue(expr, \"Expression not found\");\r\n\r\n if (!(expr instanceof SQHierarchyLevelExpr)) {\r\n groups.push({ expr: expr, children: null, selectQueryIndex: i });\r\n }\r\n else {\r\n addChildToGroup(schema, groups, expr, i);\r\n }\r\n }\r\n\r\n return groups;\r\n }\r\n\r\n function addChildToGroup(\r\n schema: FederatedConceptualSchema,\r\n groups: SQExprGroup[],\r\n expr: SQHierarchyLevelExpr,\r\n selectQueryIndex: number): void {\r\n\r\n // shouldAddExpressionToNewGroup is used to control whether we should add the passed expr to \r\n // a new Group or to the last Group\r\n let shouldAddExpressionToNewGroup = true;\r\n let exprSource = SQHierarchyExprUtils.getSourceVariationExpr(expr) || SQHierarchyExprUtils.getSourceHierarchy(expr);\r\n let lastGroup = _.last(groups);\r\n\r\n // The relevant group is always the last added. If it has the same source hierarchy,\r\n // and is properly ordered within that hierarchy, we will need to add to this group.\r\n if (lastGroup && lastGroup.children && SQExpr.equals(lastGroup.expr, exprSource)) {\r\n let expandedExpr = SQHierarchyExprUtils.expandExpr(schema, expr.arg);\r\n if (expandedExpr instanceof Array) {\r\n let allHierarchyLevels = <SQHierarchyLevelExpr[]>expandedExpr;\r\n shouldAddExpressionToNewGroup = !SQHierarchyExprUtils.areHierarchyLevelsOrdered(allHierarchyLevels, _.last(lastGroup.children), expr);\r\n }\r\n }\r\n\r\n if (shouldAddExpressionToNewGroup)\r\n // Use the Sourcevariation as the expression for the group.\r\n groups.push({ expr: exprSource, children: [expr], selectQueryIndex: selectQueryIndex });\r\n else {\r\n debug.assertValue(lastGroup, 'There should be a group to add the variation to');\r\n debug.assertValue(lastGroup.children, 'The group should have children to add the variation to');\r\n lastGroup.children.push(expr);\r\n }\r\n }\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.data {\r\n import StringExtensions = jsCommon.StringExtensions;\r\n\r\n /** Represents an immutable expression within a SemanticQuery. */\r\n export /*abstract*/ class SQExpr implements ISQExpr {\r\n constructor() {\r\n }\r\n\r\n public static equals(x: SQExpr, y: SQExpr, ignoreCase?: boolean): boolean {\r\n return SQExprEqualityVisitor.run(x, y, ignoreCase);\r\n }\r\n\r\n public validate(schema: FederatedConceptualSchema, errors?: SQExprValidationError[]): SQExprValidationError[] {\r\n let validator = new SQExprValidationVisitor(schema, errors);\r\n this.accept(validator);\r\n return validator.errors;\r\n }\r\n\r\n public accept<T, TArg>(visitor: ISQExprVisitorWithArg<T, TArg>, arg?: TArg): T {\r\n debug.assertFail('abstract method');\r\n return;\r\n }\r\n\r\n public getMetadata(federatedSchema: FederatedConceptualSchema): SQExprMetadata {\r\n debug.assertValue(federatedSchema, 'federatedSchema');\r\n\r\n let field = SQExprConverter.asFieldPattern(this);\r\n if (!field)\r\n return;\r\n\r\n if (field.column || field.columnAggr || field.measure)\r\n return this.getMetadataForProperty(field, federatedSchema);\r\n\r\n if (field.hierarchyLevel)\r\n return this.getMetadataForHierarchyLevel(field, federatedSchema);\r\n\r\n if (field.columnHierarchyLevelVariation)\r\n return this.getMetadataForVariation(field, federatedSchema);\r\n\r\n return SQExpr.getMetadataForEntity(field, federatedSchema);\r\n }\r\n\r\n public getDefaultAggregate(federatedSchema: FederatedConceptualSchema, forceAggregation: boolean = false): QueryAggregateFunction {\r\n debug.assertValue(federatedSchema, 'federatedSchema');\r\n\r\n let property = this.getConceptualProperty(federatedSchema);\r\n if (!property)\r\n return;\r\n\r\n let aggregate: QueryAggregateFunction;\r\n\r\n if (property && property.kind === ConceptualPropertyKind.Column) {\r\n let propertyDefaultAggregate = property.column ? property.column.defaultAggregate : null;\r\n\r\n if ((property.type.integer || property.type.numeric) &&\r\n propertyDefaultAggregate !== ConceptualDefaultAggregate.None) {\r\n aggregate = defaultAggregateToQueryAggregateFunction(propertyDefaultAggregate);\r\n if (aggregate === undefined)\r\n aggregate = defaultAggregateForDataType(property.type);\r\n }\r\n\r\n // If we haven't found an appropriate aggregate, and want to force aggregation anyway, \r\n // aggregate on CountNonNull.\r\n if (aggregate === undefined && forceAggregation) {\r\n aggregate = QueryAggregateFunction.CountNonNull;\r\n }\r\n }\r\n\r\n return aggregate;\r\n }\r\n\r\n /** Return the SQExpr[] of group on columns if it has group on keys otherwise return the SQExpr of the column.*/\r\n public getKeyColumns(schema: FederatedConceptualSchema): SQExpr[] {\r\n let columnRefExpr = SQExprColumnRefInfoVisitor.getColumnRefSQExpr(schema, this);\r\n if (!columnRefExpr)\r\n return;\r\n\r\n let keySQExprs: SQExpr[] = [];\r\n let keys = this.getPropertyKeys(schema);\r\n if (keys && keys.length > 0) {\r\n for (let i = 0, len = keys.length; i < len; i++) {\r\n keySQExprs.push(SQExprBuilder.columnRef(columnRefExpr.source, keys[i].name));\r\n }\r\n }\r\n else\r\n keySQExprs.push(columnRefExpr);\r\n\r\n return keySQExprs;\r\n }\r\n\r\n /** Returns a value indicating whether the expression would group on keys other than itself.*/\r\n public hasGroupOnKeys(schema: FederatedConceptualSchema): boolean {\r\n let columnRefExpr = SQExprColumnRefInfoVisitor.getColumnRefSQExpr(schema, this);\r\n if (!columnRefExpr)\r\n return;\r\n let keys = this.getPropertyKeys(schema);\r\n\r\n if (!keys || keys.length < 1)\r\n return false;\r\n\r\n if (keys.length > 1)\r\n return true;\r\n\r\n let keySqExpr = SQExprBuilder.columnRef(columnRefExpr.source, keys[0].name);\r\n return !SQExpr.equals(keySqExpr, this);\r\n }\r\n\r\n private getPropertyKeys(schema: FederatedConceptualSchema): jsCommon.ArrayNamedItems<ConceptualProperty> {\r\n let property = this.getConceptualProperty(schema) || this.getHierarchyLevelConceptualProperty(schema);\r\n if (!property)\r\n return;\r\n\r\n return property.column ? property.column.keys : undefined;\r\n }\r\n\r\n public getConceptualProperty(federatedSchema: FederatedConceptualSchema): ConceptualProperty {\r\n let field = SQExprConverter.asFieldPattern(this);\r\n if (!field)\r\n return;\r\n\r\n let fieldExprItem = FieldExprPattern.toFieldExprEntityItemPattern(field);\r\n let propertyName = FieldExprPattern.getPropertyName(field);\r\n\r\n if (propertyName)\r\n return federatedSchema\r\n .schema(fieldExprItem.schema)\r\n .findProperty(fieldExprItem.entity, propertyName);\r\n }\r\n\r\n public getTargetEntityForVariation(federatedSchema: FederatedConceptualSchema, variationName: string): string {\r\n let property = this.getConceptualProperty(federatedSchema);\r\n if (property && property.column && !_.isEmpty(property.column.variations)) {\r\n let variations = property.column.variations;\r\n for (let variation of variations)\r\n if (variation.name === variationName)\r\n return variation.navigationProperty.targetEntity.name;\r\n }\r\n }\r\n\r\n private getHierarchyLevelConceptualProperty(federatedSchema: FederatedConceptualSchema): ConceptualProperty {\r\n let field = SQExprConverter.asFieldPattern(this);\r\n if (!field)\r\n return;\r\n\r\n if (field.hierarchyLevel) {\r\n let fieldExprItem = FieldExprPattern.toFieldExprEntityItemPattern(field);\r\n let hierarchy = federatedSchema\r\n .schema(fieldExprItem.schema)\r\n .findHierarchy(fieldExprItem.entity, field.hierarchyLevel.name);\r\n\r\n if (hierarchy) {\r\n let hierarchyLevel = hierarchy.levels.withName(field.hierarchyLevel.level);\r\n return hierarchyLevel.column;\r\n }\r\n }\r\n }\r\n\r\n private getMetadataForVariation(field: data.FieldExprPattern, federatedSchema: FederatedConceptualSchema): SQExprMetadata {\r\n debug.assertValue(field, 'field');\r\n debug.assertValue(federatedSchema, 'federatedSchema');\r\n\r\n let columnHierarchyLevelVariation = field.columnHierarchyLevelVariation;\r\n let fieldExprItem = FieldExprPattern.toFieldExprEntityItemPattern(field);\r\n let sourceProperty = federatedSchema\r\n .schema(fieldExprItem.schema)\r\n .findProperty(fieldExprItem.entity, columnHierarchyLevelVariation.source.name);\r\n\r\n if (sourceProperty && sourceProperty.column && sourceProperty.column.variations) {\r\n for (let variation of sourceProperty.column.variations) {\r\n if (variation.defaultHierarchy && variation.defaultHierarchy.levels) {\r\n for (let level of variation.defaultHierarchy.levels) {\r\n if (level.name === columnHierarchyLevelVariation.level.level) {\r\n let property = level.column;\r\n return {\r\n kind: (property.kind === ConceptualPropertyKind.Measure) ? FieldKind.Measure : FieldKind.Column,\r\n type: property.type,\r\n format: property.format,\r\n idOnEntityKey: property.column ? property.column.idOnEntityKey : false,\r\n defaultAggregate: property.column ? property.column.defaultAggregate : null\r\n };\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n private getMetadataForHierarchyLevel(field: FieldExprPattern, federatedSchema: FederatedConceptualSchema): SQExprMetadata {\r\n debug.assertValue(field, 'field');\r\n debug.assertValue(federatedSchema, 'federatedSchema');\r\n\r\n let property = this.getHierarchyLevelConceptualProperty(federatedSchema);\r\n if (!property)\r\n return;\r\n\r\n return this.getPropertyMetadata(field, property);\r\n }\r\n\r\n private getPropertyMetadata(field: FieldExprPattern, property: ConceptualProperty): SQExprMetadata {\r\n let format = property.format;\r\n let type = property.type;\r\n let columnAggregate = field.columnAggr;\r\n\r\n if (columnAggregate) {\r\n switch (columnAggregate.aggregate) {\r\n case QueryAggregateFunction.Count:\r\n case QueryAggregateFunction.CountNonNull:\r\n type = ValueType.fromExtendedType(ExtendedType.Integer);\r\n format = undefined;\r\n break;\r\n case QueryAggregateFunction.Avg:\r\n if (type.integer)\r\n type = ValueType.fromExtendedType(ExtendedType.Double);\r\n break;\r\n }\r\n }\r\n\r\n return {\r\n kind: (property.kind === ConceptualPropertyKind.Measure || (columnAggregate && columnAggregate.aggregate !== undefined)) ? FieldKind.Measure : FieldKind.Column,\r\n type: type,\r\n format: format,\r\n idOnEntityKey: property.column ? property.column.idOnEntityKey : false,\r\n aggregate: columnAggregate ? columnAggregate.aggregate : undefined,\r\n defaultAggregate: property.column ? property.column.defaultAggregate : null\r\n };\r\n }\r\n\r\n private getMetadataForProperty(field: FieldExprPattern, federatedSchema: FederatedConceptualSchema): SQExprMetadata {\r\n debug.assertValue(field, 'field');\r\n debug.assertValue(federatedSchema, 'federatedSchema');\r\n\r\n let property = this.getConceptualProperty(federatedSchema);\r\n if (!property)\r\n return;\r\n\r\n return this.getPropertyMetadata(field, property);\r\n }\r\n\r\n private static getMetadataForEntity(field: FieldExprPattern, federatedSchema: FederatedConceptualSchema): SQExprMetadata {\r\n debug.assertValue(field, 'field');\r\n debug.assertValue(federatedSchema, 'federatedSchema');\r\n\r\n let fieldExprItem = FieldExprPattern.toFieldExprEntityItemPattern(field);\r\n let entity = federatedSchema\r\n .schema(fieldExprItem.schema)\r\n .entities\r\n .withName(fieldExprItem.entity);\r\n\r\n if (!entity)\r\n return;\r\n \r\n // We only support count and countnonnull for entity.\r\n if (field.entityAggr) {\r\n switch (field.entityAggr.aggregate) {\r\n case QueryAggregateFunction.Count:\r\n case QueryAggregateFunction.CountNonNull:\r\n return {\r\n kind: FieldKind.Measure,\r\n type: ValueType.fromExtendedType(ExtendedType.Integer),\r\n format: undefined,\r\n idOnEntityKey: false,\r\n aggregate: field.entityAggr.aggregate\r\n };\r\n }\r\n }\r\n }\r\n }\r\n\r\n export interface SQExprMetadata {\r\n kind: FieldKind;\r\n type: ValueType;\r\n format?: string;\r\n idOnEntityKey?: boolean;\r\n aggregate?: QueryAggregateFunction;\r\n defaultAggregate?: ConceptualDefaultAggregate;\r\n }\r\n\r\n export const enum FieldKind {\r\n /** Indicates the field references a column, which evaluates to a distinct set of values (e.g., Year, Name, SalesQuantity, etc.). */\r\n Column,\r\n\r\n /** Indicates the field references a measure, which evaluates to a single value (e.g., SalesYTD, Sum(Sales), etc.). */\r\n Measure,\r\n }\r\n\r\n /** Note: Exported for testability */\r\n export function defaultAggregateForDataType(type: ValueType): QueryAggregateFunction {\r\n if (type.integer || type.numeric)\r\n return QueryAggregateFunction.Sum;\r\n\r\n return QueryAggregateFunction.Count;\r\n }\r\n\r\n /** Note: Exported for testability */\r\n export function defaultAggregateToQueryAggregateFunction(aggregate: ConceptualDefaultAggregate): QueryAggregateFunction {\r\n switch (aggregate) {\r\n case ConceptualDefaultAggregate.Average:\r\n return QueryAggregateFunction.Avg;\r\n case ConceptualDefaultAggregate.Count:\r\n return QueryAggregateFunction.CountNonNull;\r\n case ConceptualDefaultAggregate.DistinctCount:\r\n return QueryAggregateFunction.Count;\r\n case ConceptualDefaultAggregate.Max:\r\n return QueryAggregateFunction.Max;\r\n case ConceptualDefaultAggregate.Min:\r\n return QueryAggregateFunction.Min;\r\n case ConceptualDefaultAggregate.Sum:\r\n return QueryAggregateFunction.Sum;\r\n default:\r\n return;\r\n }\r\n }\r\n\r\n export class SQEntityExpr extends SQExpr {\r\n public schema: string;\r\n public entity: string;\r\n public variable: string;\r\n\r\n constructor(schema: string, entity: string, variable?: string) {\r\n debug.assertValue(entity, 'entity');\r\n\r\n super();\r\n this.schema = schema;\r\n this.entity = entity;\r\n if (variable)\r\n this.variable = variable;\r\n }\r\n\r\n public accept<T, TArg>(visitor: ISQExprVisitorWithArg<T, TArg>, arg?: TArg): T {\r\n return visitor.visitEntity(this, arg);\r\n }\r\n }\r\n\r\n export /*abstract*/ class SQPropRefExpr extends SQExpr {\r\n public ref: string;\r\n public source: SQExpr;\r\n\r\n constructor(source: SQExpr, ref: string) {\r\n debug.assertValue(source, 'source');\r\n debug.assertValue(ref, 'ref');\r\n\r\n super();\r\n this.source = source;\r\n this.ref = ref;\r\n }\r\n }\r\n\r\n export class SQColumnRefExpr extends SQPropRefExpr {\r\n constructor(source: SQExpr, ref: string) {\r\n super(source, ref);\r\n }\r\n\r\n public accept<T, TArg>(visitor: ISQExprVisitorWithArg<T, TArg>, arg?: TArg): T {\r\n return visitor.visitColumnRef(this, arg);\r\n }\r\n }\r\n\r\n export class SQMeasureRefExpr extends SQPropRefExpr {\r\n constructor(source: SQExpr, ref: string) {\r\n super(source, ref);\r\n }\r\n\r\n public accept<T, TArg>(visitor: ISQExprVisitorWithArg<T, TArg>, arg?: TArg): T {\r\n return visitor.visitMeasureRef(this, arg);\r\n }\r\n }\r\n\r\n export class SQAggregationExpr extends SQExpr {\r\n public arg: SQExpr;\r\n public func: QueryAggregateFunction;\r\n\r\n constructor(arg: SQExpr, func: QueryAggregateFunction) {\r\n debug.assertValue(arg, 'arg');\r\n debug.assertValue(func, 'func');\r\n\r\n super();\r\n this.arg = arg;\r\n this.func = func;\r\n }\r\n\r\n public accept<T, TArg>(visitor: ISQExprVisitorWithArg<T, TArg>, arg?: TArg): T {\r\n return visitor.visitAggr(this, arg);\r\n }\r\n }\r\n\r\n export class SQPropertyVariationSourceExpr extends SQExpr {\r\n public arg: SQExpr;\r\n public name: string;\r\n public property: string;\r\n\r\n constructor(arg: SQExpr, name: string, property: string) {\r\n debug.assertValue(arg, 'arg');\r\n debug.assertValue(name, 'name');\r\n debug.assertValue(property, 'property');\r\n\r\n super();\r\n this.arg = arg;\r\n this.name = name;\r\n this.property = property;\r\n }\r\n\r\n public accept<T, TArg>(visitor: ISQExprVisitorWithArg<T, TArg>, arg?: TArg): T {\r\n return visitor.visitPropertyVariationSource(this, arg);\r\n }\r\n }\r\n\r\n export class SQHierarchyExpr extends SQExpr {\r\n public arg: SQExpr;\r\n public hierarchy: string;\r\n\r\n constructor(arg: SQExpr, hierarchy: string) {\r\n debug.assertValue(arg, 'arg');\r\n debug.assertValue(hierarchy, 'hierarchy');\r\n\r\n super();\r\n this.arg = arg;\r\n this.hierarchy = hierarchy;\r\n }\r\n\r\n public accept<T, TArg>(visitor: ISQExprVisitorWithArg<T, TArg>, arg?: TArg): T {\r\n return visitor.visitHierarchy(this, arg);\r\n }\r\n }\r\n\r\n export class SQHierarchyLevelExpr extends SQExpr {\r\n public arg: SQExpr;\r\n public level: string;\r\n\r\n constructor(arg: SQExpr, level: string) {\r\n debug.assertValue(arg, 'arg');\r\n debug.assertValue(level, 'level');\r\n\r\n super();\r\n this.arg = arg;\r\n this.level = level;\r\n }\r\n\r\n public accept<T, TArg>(visitor: ISQExprVisitorWithArg<T, TArg>, arg?: TArg): T {\r\n return visitor.visitHierarchyLevel(this, arg);\r\n }\r\n }\r\n\r\n export class SQAndExpr extends SQExpr {\r\n left: SQExpr;\r\n right: SQExpr;\r\n\r\n constructor(left: SQExpr, right: SQExpr) {\r\n debug.assertValue(left, 'left');\r\n debug.assertValue(right, 'right');\r\n\r\n super();\r\n this.left = left;\r\n this.right = right;\r\n }\r\n\r\n public accept<T, TArg>(visitor: ISQExprVisitorWithArg<T, TArg>, arg?: TArg): T {\r\n return visitor.visitAnd(this, arg);\r\n }\r\n }\r\n\r\n export class SQBetweenExpr extends SQExpr {\r\n arg: SQExpr;\r\n lower: SQExpr;\r\n upper: SQExpr;\r\n\r\n constructor(arg: SQExpr, lower: SQExpr, upper: SQExpr) {\r\n debug.assertValue(arg, 'arg');\r\n debug.assertValue(lower, 'lower');\r\n debug.assertValue(upper, 'upper');\r\n\r\n super();\r\n this.arg = arg;\r\n this.lower = lower;\r\n this.upper = upper;\r\n }\r\n\r\n public accept<T, TArg>(visitor: ISQExprVisitorWithArg<T, TArg>, arg?: TArg): T {\r\n return visitor.visitBetween(this, arg);\r\n }\r\n }\r\n\r\n export class SQInExpr extends SQExpr {\r\n args: SQExpr[];\r\n values: SQExpr[][];\r\n\r\n constructor(args: SQExpr[], values: SQExpr[][]) {\r\n debug.assertValue(args, 'args');\r\n debug.assertValue(values, 'values');\r\n\r\n super();\r\n this.args = args;\r\n this.values = values;\r\n }\r\n\r\n public accept<T, TArg>(visitor: ISQExprVisitorWithArg<T, TArg>, arg?: TArg): T {\r\n return visitor.visitIn(this, arg);\r\n }\r\n }\r\n\r\n export class SQOrExpr extends SQExpr {\r\n left: SQExpr;\r\n right: SQExpr;\r\n\r\n constructor(left: SQExpr, right: SQExpr) {\r\n debug.assertValue(left, 'left');\r\n debug.assertValue(right, 'right');\r\n\r\n super();\r\n this.left = left;\r\n this.right = right;\r\n }\r\n\r\n public accept<T, TArg>(visitor: ISQExprVisitorWithArg<T, TArg>, arg?: TArg): T {\r\n return visitor.visitOr(this, arg);\r\n }\r\n }\r\n\r\n export class SQCompareExpr extends SQExpr {\r\n kind: QueryComparisonKind;\r\n left: SQExpr;\r\n right: SQExpr;\r\n\r\n constructor(kind: QueryComparisonKind, left: SQExpr, right: SQExpr) {\r\n debug.assertValue(kind, 'kind');\r\n debug.assertValue(left, 'left');\r\n debug.assertValue(right, 'right');\r\n\r\n super();\r\n this.kind = kind;\r\n this.left = left;\r\n this.right = right;\r\n }\r\n\r\n public accept<T, TArg>(visitor: ISQExprVisitorWithArg<T, TArg>, arg?: TArg): T {\r\n return visitor.visitCompare(this, arg);\r\n }\r\n }\r\n\r\n export class SQContainsExpr extends SQExpr {\r\n left: SQExpr;\r\n right: SQExpr;\r\n\r\n constructor(left: SQExpr, right: SQExpr) {\r\n debug.assertValue(left, 'left');\r\n debug.assertValue(right, 'right');\r\n\r\n super();\r\n this.left = left;\r\n this.right = right;\r\n }\r\n\r\n public accept<T, TArg>(visitor: ISQExprVisitorWithArg<T, TArg>, arg?: TArg): T {\r\n return visitor.visitContains(this, arg);\r\n }\r\n }\r\n\r\n export class SQStartsWithExpr extends SQExpr {\r\n left: SQExpr;\r\n right: SQExpr;\r\n\r\n constructor(left: SQExpr, right: SQExpr) {\r\n debug.assertValue(left, 'left');\r\n debug.assertValue(right, 'right');\r\n\r\n super();\r\n this.left = left;\r\n this.right = right;\r\n }\r\n\r\n public accept<T, TArg>(visitor: ISQExprVisitorWithArg<T, TArg>, arg?: TArg): T {\r\n return visitor.visitStartsWith(this, arg);\r\n }\r\n }\r\n\r\n export class SQExistsExpr extends SQExpr {\r\n arg: SQExpr;\r\n\r\n constructor(arg: SQExpr) {\r\n debug.assertValue(arg, 'arg');\r\n\r\n super();\r\n this.arg = arg;\r\n }\r\n\r\n public accept<T, TArg>(visitor: ISQExprVisitorWithArg<T, TArg>, arg?: TArg): T {\r\n return visitor.visitExists(this, arg);\r\n }\r\n }\r\n\r\n export class SQNotExpr extends SQExpr {\r\n arg: SQExpr;\r\n\r\n constructor(arg: SQExpr) {\r\n debug.assertValue(arg, 'arg');\r\n\r\n super();\r\n this.arg = arg;\r\n }\r\n\r\n public accept<T, TArg>(visitor: ISQExprVisitorWithArg<T, TArg>, arg?: TArg): T {\r\n return visitor.visitNot(this, arg);\r\n }\r\n }\r\n\r\n export class SQConstantExpr extends SQExpr implements ISQConstantExpr {\r\n public type: ValueType;\r\n\r\n /** The native JavaScript representation of the value. */\r\n public value: any;\r\n\r\n /** The string encoded, lossless representation of the value. */\r\n public valueEncoded: string;\r\n\r\n constructor(type: ValueType, value: any, valueEncoded: string) {\r\n debug.assertValue(type, 'type');\r\n\r\n super();\r\n this.type = type;\r\n this.value = value;\r\n this.valueEncoded = valueEncoded;\r\n }\r\n\r\n public accept<T, TArg>(visitor: ISQExprVisitorWithArg<T, TArg>, arg?: TArg): T {\r\n return visitor.visitConstant(this, arg);\r\n }\r\n\r\n public getMetadata(federatedSchema: FederatedConceptualSchema): SQExprMetadata {\r\n debug.assertValue(federatedSchema, 'federatedSchema');\r\n\r\n return {\r\n // Returning Measure as the kind for a SQConstantExpr is slightly ambiguous allowing the return object to conform to SQEXprMetadata.\r\n // A getType or similiar function in the future would be more appropriate. \r\n kind: FieldKind.Measure,\r\n type: this.type,\r\n };\r\n }\r\n }\r\n\r\n export class SQDateSpanExpr extends SQExpr {\r\n public unit: TimeUnit;\r\n public arg: SQExpr;\r\n\r\n constructor(unit: TimeUnit, arg: SQExpr) {\r\n debug.assertValue(unit, 'unit');\r\n debug.assertValue(arg, 'arg');\r\n\r\n super();\r\n this.unit = unit;\r\n this.arg = arg;\r\n }\r\n\r\n public accept<T, TArg>(visitor: ISQExprVisitorWithArg<T, TArg>, arg?: TArg): T {\r\n return visitor.visitDateSpan(this, arg);\r\n }\r\n }\r\n\r\n export class SQDateAddExpr extends SQExpr {\r\n public unit: TimeUnit;\r\n public amount: number;\r\n public arg: SQExpr;\r\n\r\n constructor(unit: TimeUnit, amount: number, arg: SQExpr) {\r\n debug.assertValue(unit, 'unit');\r\n debug.assertValue(amount, 'amount');\r\n debug.assertValue(arg, 'arg');\r\n\r\n super();\r\n this.unit = unit;\r\n this.arg = arg;\r\n this.amount = amount;\r\n }\r\n\r\n public accept<T, TArg>(visitor: ISQExprVisitorWithArg<T, TArg>, arg?: TArg): T {\r\n return visitor.visitDateAdd(this, arg);\r\n }\r\n }\r\n\r\n export class SQNowExpr extends SQExpr {\r\n public accept<T, TArg>(visitor: ISQExprVisitorWithArg<T, TArg>, arg?: TArg): T {\r\n return visitor.visitNow(this, arg);\r\n }\r\n }\r\n\r\n export class SQDefaultValueExpr extends SQExpr {\r\n public accept<T, TArg>(visitor: ISQExprVisitorWithArg<T, TArg>, arg?: TArg): T {\r\n return visitor.visitDefaultValue(this, arg);\r\n }\r\n }\r\n\r\n export class SQAnyValueExpr extends SQExpr {\r\n public accept<T, TArg>(visitor: ISQExprVisitorWithArg<T, TArg>, arg?: TArg): T {\r\n return visitor.visitAnyValue(this, arg);\r\n }\r\n }\r\n\r\n /** Provides utilities for creating & manipulating expressions. */\r\n export module SQExprBuilder {\r\n export function entity(schema: string, entity: string, variable?: string): SQEntityExpr {\r\n return new SQEntityExpr(schema, entity, variable);\r\n }\r\n\r\n export function columnRef(source: SQExpr, prop: string): SQColumnRefExpr {\r\n return new SQColumnRefExpr(source, prop);\r\n }\r\n\r\n export function measureRef(source: SQExpr, prop: string): SQMeasureRefExpr {\r\n return new SQMeasureRefExpr(source, prop);\r\n }\r\n\r\n export function aggregate(source: SQExpr, aggregate: QueryAggregateFunction): SQAggregationExpr {\r\n return new SQAggregationExpr(source, aggregate);\r\n }\r\n\r\n export function hierarchy(source: SQExpr, hierarchy: string): SQHierarchyExpr {\r\n return new SQHierarchyExpr(source, hierarchy);\r\n }\r\n\r\n export function propertyVariationSource(source: SQExpr, name: string, property: string): SQPropertyVariationSourceExpr {\r\n return new SQPropertyVariationSourceExpr(source, name, property);\r\n }\r\n\r\n export function hierarchyLevel(source: SQExpr, level: string): SQHierarchyLevelExpr {\r\n return new SQHierarchyLevelExpr(source, level);\r\n }\r\n\r\n export function and(left: SQExpr, right: SQExpr): SQExpr {\r\n if (!left)\r\n return right;\r\n if (!right)\r\n return left;\r\n\r\n return new SQAndExpr(left, right);\r\n }\r\n\r\n export function between(arg: SQExpr, lower: SQExpr, upper: SQExpr): SQBetweenExpr {\r\n return new SQBetweenExpr(arg, lower, upper);\r\n }\r\n\r\n export function inExpr(args: SQExpr[], values: SQExpr[][]): SQInExpr {\r\n return new SQInExpr(args, values);\r\n }\r\n\r\n export function or(left: SQExpr, right: SQExpr): SQExpr {\r\n if (!left)\r\n return right;\r\n if (!right)\r\n return left;\r\n if (left instanceof SQInExpr && right instanceof SQInExpr) {\r\n let inExpr = tryUseInExprs(<SQInExpr>left, <SQInExpr>right);\r\n if (inExpr)\r\n return inExpr;\r\n }\r\n\r\n return new SQOrExpr(left, right);\r\n }\r\n\r\n function tryUseInExprs(left: SQInExpr, right: SQInExpr): SQInExpr {\r\n if (!left.args || !right.args)\r\n return;\r\n\r\n let leftArgLen = left.args.length;\r\n let rightArgLen = right.args.length;\r\n if (leftArgLen !== rightArgLen)\r\n return;\r\n\r\n for (let i = 0; i < leftArgLen; ++i) {\r\n if (!SQExpr.equals(left.args[i], right.args[i]))\r\n return;\r\n }\r\n\r\n let combinedValues = left.values.concat(right.values);\r\n return SQExprBuilder.inExpr(left.args, combinedValues);\r\n }\r\n\r\n export function compare(kind: QueryComparisonKind, left: SQExpr, right: SQExpr): SQCompareExpr {\r\n return new SQCompareExpr(kind, left, right);\r\n }\r\n\r\n export function contains(left: SQExpr, right: SQExpr): SQContainsExpr {\r\n return new SQContainsExpr(left, right);\r\n }\r\n\r\n export function exists(arg: SQExpr): SQExistsExpr {\r\n return new SQExistsExpr(arg);\r\n }\r\n\r\n export function equal(left: SQExpr, right: SQExpr): SQCompareExpr {\r\n return compare(QueryComparisonKind.Equal, left, right);\r\n }\r\n\r\n export function not(arg: SQExpr): SQNotExpr {\r\n return new SQNotExpr(arg);\r\n }\r\n\r\n export function startsWith(left: SQExpr, right: SQExpr): SQStartsWithExpr {\r\n return new SQStartsWithExpr(left, right);\r\n }\r\n\r\n export function nullConstant(): SQConstantExpr {\r\n return new SQConstantExpr(\r\n ValueType.fromExtendedType(ExtendedType.Null),\r\n null,\r\n PrimitiveValueEncoding.nullEncoding());\r\n }\r\n\r\n export function now(): SQNowExpr {\r\n return new SQNowExpr();\r\n }\r\n\r\n export function defaultValue(): SQDefaultValueExpr {\r\n return new SQDefaultValueExpr();\r\n }\r\n\r\n export function anyValue(): SQAnyValueExpr {\r\n return new SQAnyValueExpr();\r\n }\r\n\r\n export function boolean(value: boolean): SQConstantExpr {\r\n return new SQConstantExpr(\r\n ValueType.fromExtendedType(ExtendedType.Boolean),\r\n value,\r\n PrimitiveValueEncoding.boolean(value));\r\n }\r\n\r\n export function dateAdd(unit: TimeUnit, amount: number, arg: SQExpr): SQDateAddExpr {\r\n return new SQDateAddExpr(unit, amount, arg);\r\n }\r\n\r\n export function dateTime(value: Date, valueEncoded?: string): SQConstantExpr {\r\n if (valueEncoded === undefined)\r\n valueEncoded = PrimitiveValueEncoding.dateTime(value);\r\n\r\n return new SQConstantExpr(ValueType.fromExtendedType(ExtendedType.DateTime), value, valueEncoded);\r\n }\r\n\r\n export function dateSpan(unit: TimeUnit, arg: SQExpr): SQDateSpanExpr {\r\n return new SQDateSpanExpr(unit, arg);\r\n }\r\n\r\n export function decimal(value: number, valueEncoded?: string): SQConstantExpr {\r\n if (valueEncoded === undefined)\r\n valueEncoded = PrimitiveValueEncoding.decimal(value);\r\n\r\n return new SQConstantExpr(ValueType.fromExtendedType(ExtendedType.Decimal), value, valueEncoded);\r\n }\r\n\r\n export function double(value: number, valueEncoded?: string): SQConstantExpr {\r\n if (valueEncoded === undefined)\r\n valueEncoded = PrimitiveValueEncoding.double(value);\r\n\r\n return new SQConstantExpr(ValueType.fromExtendedType(ExtendedType.Double), value, valueEncoded);\r\n }\r\n\r\n export function integer(value: number, valueEncoded?: string): SQConstantExpr {\r\n if (valueEncoded === undefined)\r\n valueEncoded = PrimitiveValueEncoding.integer(value);\r\n\r\n return new SQConstantExpr(ValueType.fromExtendedType(ExtendedType.Integer), value, valueEncoded);\r\n }\r\n\r\n export function text(value: string, valueEncoded?: string): SQConstantExpr {\r\n debug.assert(!valueEncoded || valueEncoded === PrimitiveValueEncoding.text(value), 'Incorrect encoded value specified.');\r\n\r\n return new SQConstantExpr(\r\n ValueType.fromExtendedType(ExtendedType.Text),\r\n value,\r\n valueEncoded || PrimitiveValueEncoding.text(value));\r\n }\r\n\r\n /** Returns an SQExpr that evaluates to the constant value. */\r\n export function typedConstant(value: PrimitiveValue, type: ValueTypeDescriptor): SQConstantExpr {\r\n if (value == null)\r\n return nullConstant();\r\n\r\n if (_.isBoolean(value)) {\r\n return boolean(<boolean>value);\r\n }\r\n\r\n if (_.isString(value)) {\r\n return text(<string>value);\r\n }\r\n\r\n if (_.isNumber(value)) {\r\n if (type.integer && Double.isInteger(<number>value))\r\n return integer(<number>value);\r\n\r\n return double(<number>value);\r\n }\r\n\r\n if (value instanceof Date) {\r\n return dateTime(value);\r\n }\r\n }\r\n\r\n export function setAggregate(expr: SQExpr, aggregate: QueryAggregateFunction): SQExpr {\r\n return SQExprChangeAggregateRewriter.rewrite(expr, aggregate);\r\n }\r\n\r\n export function removeAggregate(expr: SQExpr): SQExpr {\r\n return SQExprRemoveAggregateRewriter.rewrite(expr);\r\n }\r\n\r\n export function removeEntityVariables(expr: SQExpr): SQExpr {\r\n return SQExprRemoveEntityVariablesRewriter.rewrite(expr);\r\n }\r\n\r\n export function createExprWithAggregate(\r\n expr: SQExpr,\r\n schema: FederatedConceptualSchema,\r\n aggregateNonNumericFields: boolean,\r\n preferredAggregate?: QueryAggregateFunction): SQExpr {\r\n\r\n debug.assertValue(expr, 'expr');\r\n debug.assertValue(expr, 'schema');\r\n\r\n let aggregate: QueryAggregateFunction;\r\n if (preferredAggregate != null && SQExprUtils.isSupportedAggregate(expr, schema, preferredAggregate)) {\r\n aggregate = preferredAggregate;\r\n }\r\n else {\r\n aggregate = expr.getDefaultAggregate(schema, aggregateNonNumericFields);\r\n }\r\n if (aggregate !== undefined)\r\n expr = SQExprBuilder.aggregate(expr, aggregate);\r\n\r\n return expr;\r\n }\r\n }\r\n\r\n /** Provides utilities for obtaining information about expressions. */\r\n export module SQExprInfo {\r\n export function getAggregate(expr: SQExpr): QueryAggregateFunction {\r\n return SQExprAggregateInfoVisitor.getAggregate(expr);\r\n }\r\n }\r\n\r\n class SQExprEqualityVisitor implements ISQExprVisitorWithArg<boolean, SQExpr> {\r\n private static instance: SQExprEqualityVisitor = new SQExprEqualityVisitor(/* ignoreCase */ false);\r\n private static ignoreCaseInstance: SQExprEqualityVisitor = new SQExprEqualityVisitor(true);\r\n private ignoreCase: boolean;\r\n\r\n public static run(x: SQExpr, y: SQExpr, ignoreCase?: boolean): boolean {\r\n // Normalize falsy to null\r\n x = x || null;\r\n y = y || null;\r\n\r\n if (x === y)\r\n return true;\r\n\r\n if (!x !== !y)\r\n return false;\r\n\r\n debug.assertValue(x, 'x');\r\n debug.assertValue(y, 'y');\r\n if (ignoreCase)\r\n return x.accept(SQExprEqualityVisitor.ignoreCaseInstance, y);\r\n\r\n return x.accept(SQExprEqualityVisitor.instance, y);\r\n }\r\n\r\n constructor(ignoreCase: boolean) {\r\n this.ignoreCase = ignoreCase;\r\n }\r\n\r\n public visitColumnRef(expr: SQColumnRefExpr, comparand: SQColumnRefExpr): boolean {\r\n return comparand instanceof SQColumnRefExpr &&\r\n expr.ref === (<SQColumnRefExpr>comparand).ref &&\r\n this.equals(expr.source, (<SQColumnRefExpr>comparand).source);\r\n }\r\n\r\n public visitMeasureRef(expr: SQMeasureRefExpr, comparand: SQMeasureRefExpr): boolean {\r\n return comparand instanceof SQMeasureRefExpr &&\r\n expr.ref === (<SQMeasureRefExpr>comparand).ref &&\r\n this.equals(expr.source, (<SQMeasureRefExpr>comparand).source);\r\n }\r\n\r\n public visitAggr(expr: SQAggregationExpr, comparand: SQExpr): boolean {\r\n return comparand instanceof SQAggregationExpr &&\r\n expr.func === (<SQAggregationExpr>comparand).func &&\r\n this.equals(expr.arg, (<SQAggregationExpr>comparand).arg);\r\n }\r\n\r\n public visitHierarchy(expr: SQHierarchyExpr, comparand: SQHierarchyExpr): boolean {\r\n return comparand instanceof SQHierarchyExpr &&\r\n expr.hierarchy === comparand.hierarchy &&\r\n this.equals(expr.arg, comparand.arg);\r\n }\r\n\r\n public visitHierarchyLevel(expr: SQHierarchyLevelExpr, comparand: SQHierarchyLevelExpr): boolean {\r\n return comparand instanceof SQHierarchyLevelExpr &&\r\n expr.level === comparand.level &&\r\n this.equals(expr.arg, comparand.arg);\r\n }\r\n\r\n public visitPropertyVariationSource(expr: SQPropertyVariationSourceExpr, comparand: SQPropertyVariationSourceExpr): boolean {\r\n return comparand instanceof SQPropertyVariationSourceExpr &&\r\n expr.name === comparand.name &&\r\n expr.property === comparand.property &&\r\n this.equals(expr.arg, comparand.arg);\r\n }\r\n\r\n public visitBetween(expr: SQBetweenExpr, comparand: SQExpr): boolean {\r\n return comparand instanceof SQBetweenExpr &&\r\n this.equals(expr.arg, (<SQBetweenExpr>comparand).arg) &&\r\n this.equals(expr.lower, (<SQBetweenExpr>comparand).lower) &&\r\n this.equals(expr.upper, (<SQBetweenExpr>comparand).upper);\r\n }\r\n\r\n public visitIn(expr: SQInExpr, comparand: SQExpr): boolean {\r\n if (!(comparand instanceof SQInExpr) || !this.equalsAll(expr.args, (<SQInExpr>comparand).args))\r\n return false;\r\n\r\n let values = expr.values,\r\n compareValues = (<SQInExpr>comparand).values;\r\n if (values.length !== compareValues.length)\r\n return false;\r\n\r\n for (let i = 0, len = values.length; i < len; i++) {\r\n if (!this.equalsAll(values[i], compareValues[i]))\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n public visitEntity(expr: SQEntityExpr, comparand: SQExpr): boolean {\r\n return comparand instanceof SQEntityExpr &&\r\n expr.schema === (<SQEntityExpr>comparand).schema &&\r\n expr.entity === (<SQEntityExpr>comparand).entity &&\r\n this.optionalEqual(expr.variable, (<SQEntityExpr>comparand).variable);\r\n }\r\n\r\n public visitAnd(expr: SQAndExpr, comparand: SQExpr): boolean {\r\n return comparand instanceof SQAndExpr &&\r\n this.equals(expr.left, (<SQAndExpr>comparand).left) &&\r\n this.equals(expr.right, (<SQAndExpr>comparand).right);\r\n }\r\n\r\n public visitOr(expr: SQOrExpr, comparand: SQExpr): boolean {\r\n return comparand instanceof SQOrExpr &&\r\n this.equals(expr.left, (<SQOrExpr>comparand).left) &&\r\n this.equals(expr.right, (<SQOrExpr>comparand).right);\r\n }\r\n\r\n public visitCompare(expr: SQCompareExpr, comparand: SQExpr): boolean {\r\n return comparand instanceof SQCompareExpr &&\r\n expr.kind === (<SQCompareExpr>comparand).kind &&\r\n this.equals(expr.left, (<SQCompareExpr>comparand).left) &&\r\n this.equals(expr.right, (<SQCompareExpr>comparand).right);\r\n }\r\n\r\n public visitContains(expr: SQContainsExpr, comparand: SQExpr): boolean {\r\n return comparand instanceof SQContainsExpr &&\r\n this.equals(expr.left, (<SQContainsExpr>comparand).left) &&\r\n this.equals(expr.right, (<SQContainsExpr>comparand).right);\r\n }\r\n\r\n public visitDateSpan(expr: SQDateSpanExpr, comparand: SQExpr): boolean {\r\n return comparand instanceof SQDateSpanExpr &&\r\n expr.unit === (<SQDateSpanExpr>comparand).unit &&\r\n this.equals(expr.arg, (<SQDateSpanExpr>comparand).arg);\r\n }\r\n\r\n public visitDateAdd(expr: SQDateAddExpr, comparand: SQExpr): boolean {\r\n return comparand instanceof SQDateAddExpr &&\r\n expr.unit === (<SQDateAddExpr>comparand).unit &&\r\n expr.amount === (<SQDateAddExpr>comparand).amount &&\r\n this.equals(expr.arg, (<SQDateAddExpr>comparand).arg);\r\n }\r\n\r\n public visitExists(expr: SQExistsExpr, comparand: SQExpr): boolean {\r\n return comparand instanceof SQExistsExpr &&\r\n this.equals(expr.arg, (<SQExistsExpr>comparand).arg);\r\n }\r\n\r\n public visitNot(expr: SQNotExpr, comparand: SQExpr): boolean {\r\n return comparand instanceof SQNotExpr &&\r\n this.equals(expr.arg, (<SQNotExpr>comparand).arg);\r\n }\r\n\r\n public visitNow(expr: SQNowExpr, comparand: SQExpr): boolean {\r\n return comparand instanceof SQNowExpr;\r\n }\r\n\r\n public visitDefaultValue(expr: SQDefaultValueExpr, comparand: SQExpr): boolean {\r\n return comparand instanceof SQDefaultValueExpr;\r\n }\r\n\r\n public visitAnyValue(expr: SQAnyValueExpr, comparand: SQExpr): boolean {\r\n return comparand instanceof SQAnyValueExpr;\r\n }\r\n\r\n public visitStartsWith(expr: SQStartsWithExpr, comparand: SQExpr): boolean {\r\n return comparand instanceof SQStartsWithExpr &&\r\n this.equals(expr.left, (<SQStartsWithExpr>comparand).left) &&\r\n this.equals(expr.right, (<SQStartsWithExpr>comparand).right);\r\n }\r\n\r\n public visitConstant(expr: SQConstantExpr, comparand: SQExpr): boolean {\r\n if (comparand instanceof SQConstantExpr && expr.type === (<SQConstantExpr>comparand).type)\r\n return expr.type.text && this.ignoreCase ?\r\n StringExtensions.equalIgnoreCase(expr.valueEncoded, (<SQConstantExpr>comparand).valueEncoded) :\r\n expr.valueEncoded === (<SQConstantExpr>comparand).valueEncoded;\r\n\r\n return false;\r\n }\r\n\r\n private optionalEqual(x: string, y: string) {\r\n // Only check equality if both values are specified.\r\n if (x && y)\r\n return x === y;\r\n\r\n return true;\r\n }\r\n\r\n private equals(x: SQExpr, y: SQExpr): boolean {\r\n return x.accept(this, y);\r\n }\r\n\r\n private equalsAll(x: SQExpr[], y: SQExpr[]): boolean {\r\n let len = x.length;\r\n if (len !== y.length)\r\n return false;\r\n\r\n for (let i = 0; i < len; i++) {\r\n if (!this.equals(x[i], y[i]))\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n }\r\n\r\n /** Rewrites a root-level expression. */\r\n class SQExprRootRewriter extends DefaultSQExprVisitor<SQExpr> {\r\n public visitDefault(expr: SQExpr): SQExpr {\r\n return expr;\r\n }\r\n }\r\n\r\n export const enum SQExprValidationError {\r\n invalidAggregateFunction,\r\n invalidSchemaReference,\r\n invalidEntityReference,\r\n invalidColumnReference,\r\n invalidMeasureReference,\r\n invalidLeftOperandType,\r\n invalidRightOperandType,\r\n invalidValueType,\r\n }\r\n\r\n export class SQExprValidationVisitor extends SQExprRewriter {\r\n public errors: SQExprValidationError[];\r\n private schema: FederatedConceptualSchema;\r\n\r\n constructor(schema: FederatedConceptualSchema, errors?: SQExprValidationError[]) {\r\n debug.assertValue(schema, 'schema');\r\n\r\n super();\r\n this.schema = schema;\r\n if (errors)\r\n this.errors = errors;\r\n }\r\n\r\n public visitIn(expr: SQInExpr): SQExpr {\r\n let inExpr = <SQInExpr>super.visitIn(expr);\r\n let args = inExpr.args;\r\n let values = inExpr.values;\r\n for (let valueTuple of values) {\r\n debug.assert(valueTuple.length === args.length, 'args and value tuple are not the same length');\r\n for (let i = 0, len = valueTuple.length; i < len; ++i)\r\n this.validateCompatibleType(args[i], valueTuple[i]);\r\n }\r\n\r\n return inExpr;\r\n }\r\n\r\n public visitCompare(expr: SQCompareExpr): SQExpr {\r\n let compareExpr = <SQCompareExpr>super.visitCompare(expr);\r\n this.validateCompatibleType(compareExpr.left, compareExpr.right);\r\n\r\n return compareExpr;\r\n }\r\n\r\n public visitColumnRef(expr: SQColumnRefExpr): SQExpr {\r\n let fieldExpr = SQExprConverter.asFieldPattern(expr);\r\n if (fieldExpr) {\r\n let fieldExprItem = FieldExprPattern.toFieldExprEntityItemPattern(fieldExpr);\r\n let entity = this.validateEntity(fieldExprItem.schema, fieldExprItem.entity);\r\n if (entity) {\r\n let prop = entity.properties.withName(fieldExpr.column.name);\r\n if (!prop ||\r\n prop.kind !== ConceptualPropertyKind.Column ||\r\n !this.isQueryable(fieldExpr))\r\n this.register(SQExprValidationError.invalidColumnReference);\r\n }\r\n }\r\n return expr;\r\n }\r\n\r\n public visitMeasureRef(expr: SQMeasureRefExpr): SQExpr {\r\n let fieldExpr = SQExprConverter.asFieldPattern(expr);\r\n if (fieldExpr) {\r\n let fieldExprItem = FieldExprPattern.toFieldExprEntityItemPattern(fieldExpr);\r\n let entity = this.validateEntity(fieldExprItem.schema, fieldExprItem.entity);\r\n if (entity) {\r\n let prop = entity.properties.withName(fieldExpr.measure.name);\r\n if (!prop ||\r\n prop.kind !== ConceptualPropertyKind.Measure ||\r\n !this.isQueryable(fieldExpr))\r\n this.register(SQExprValidationError.invalidMeasureReference);\r\n }\r\n }\r\n return expr;\r\n }\r\n\r\n public visitAggr(expr: SQAggregationExpr): SQExpr {\r\n let aggregateExpr = <SQAggregationExpr>super.visitAggr(expr);\r\n\r\n let columnRefExpr = SQExprColumnRefInfoVisitor.getColumnRefSQExpr(this.schema, aggregateExpr.arg);\r\n if (columnRefExpr) {\r\n let supportedFuncs = SQExprUtils.getSupportedAggregates(columnRefExpr, this.schema);\r\n if (supportedFuncs.indexOf(expr.func) < 0)\r\n this.register(SQExprValidationError.invalidAggregateFunction);\r\n }\r\n\r\n return aggregateExpr;\r\n }\r\n\r\n public visitEntity(expr: SQEntityExpr): SQExpr {\r\n this.validateEntity(expr.schema, expr.entity);\r\n return expr;\r\n }\r\n\r\n public visitContains(expr: SQContainsExpr): SQExpr {\r\n let left = expr.left;\r\n let right = expr.right;\r\n\r\n if (!(left instanceof SQColumnRefExpr))\r\n this.register(SQExprValidationError.invalidLeftOperandType);\r\n else {\r\n this.visitColumnRef(<SQColumnRefExpr>left);\r\n if (!(right instanceof SQConstantExpr) || !(<SQConstantExpr>right).type.text)\r\n this.register(SQExprValidationError.invalidRightOperandType);\r\n else\r\n this.validateCompatibleType(left, right);\r\n }\r\n\r\n return expr;\r\n }\r\n\r\n public visitStartsWith(expr: SQContainsExpr): SQExpr {\r\n let left = expr.left;\r\n let right = expr.right;\r\n\r\n if (!(left instanceof SQColumnRefExpr))\r\n this.register(SQExprValidationError.invalidLeftOperandType);\r\n else {\r\n this.visitColumnRef(<SQColumnRefExpr>left);\r\n if (!(right instanceof SQConstantExpr) || !(<SQConstantExpr>right).type.text)\r\n this.register(SQExprValidationError.invalidRightOperandType);\r\n else\r\n this.validateCompatibleType(left, right);\r\n }\r\n\r\n return expr;\r\n }\r\n\r\n private validateCompatibleType(left: SQExpr, right: SQExpr): void {\r\n let leftMetadata = left.getMetadata(this.schema),\r\n leftType = leftMetadata && leftMetadata.type,\r\n rightMetadata = right.getMetadata(this.schema),\r\n rightType = rightMetadata && rightMetadata.type;\r\n\r\n if (leftType && rightType && !leftType.isCompatibleFrom(rightType))\r\n this.register(SQExprValidationError.invalidValueType);\r\n }\r\n\r\n private validateEntity(schemaName: string, entityName: string): ConceptualEntity {\r\n let schema = this.schema.schema(schemaName);\r\n if (schema) {\r\n let entity = schema.entities.withName(entityName);\r\n if (entity)\r\n return entity;\r\n\r\n this.register(SQExprValidationError.invalidEntityReference);\r\n }\r\n else {\r\n this.register(SQExprValidationError.invalidSchemaReference);\r\n }\r\n }\r\n\r\n private register(error: SQExprValidationError) {\r\n if (!this.errors)\r\n this.errors = [];\r\n this.errors.push(error);\r\n }\r\n\r\n private isQueryable(fieldExpr: FieldExprPattern): boolean {\r\n let fieldExprItem = FieldExprPattern.toFieldExprEntityItemPattern(fieldExpr);\r\n if (fieldExpr.hierarchyLevel) {\r\n let hierarchyLevelConceptualProperty = SQHierarchyExprUtils.getConceptualHierarchyLevelFromExpr(this.schema, fieldExpr);\r\n return hierarchyLevelConceptualProperty && hierarchyLevelConceptualProperty.column.queryable !== ConceptualQueryableState.Error;\r\n }\r\n\r\n return this.schema.schema(fieldExprItem.schema).findProperty(fieldExprItem.entity, FieldExprPattern.getPropertyName(fieldExpr)).queryable !== ConceptualQueryableState.Error;\r\n }\r\n }\r\n\r\n /** Returns an expression's aggregate function, or undefined if it doesn't have one. */\r\n class SQExprAggregateInfoVisitor extends DefaultSQExprVisitor<QueryAggregateFunction> {\r\n public visitAggr(expr: SQAggregationExpr): QueryAggregateFunction {\r\n return expr.func;\r\n }\r\n\r\n public visitDefault(expr: SQExpr): QueryAggregateFunction {\r\n return;\r\n }\r\n\r\n public static getAggregate(expr: SQExpr): QueryAggregateFunction {\r\n let visitor = new SQExprAggregateInfoVisitor();\r\n return expr.accept(visitor);\r\n }\r\n }\r\n\r\n module SQHierarchyExprUtils {\r\n export function getConceptualHierarchyLevelFromExpr(\r\n conceptualSchema: FederatedConceptualSchema,\r\n fieldExpr: FieldExprPattern): ConceptualHierarchyLevel {\r\n let fieldExprItem = FieldExprPattern.toFieldExprEntityItemPattern(fieldExpr);\r\n if (fieldExpr.hierarchyLevel)\r\n return SQHierarchyExprUtils.getConceptualHierarchyLevel(\r\n conceptualSchema,\r\n fieldExprItem.schema,\r\n fieldExprItem.entity,\r\n fieldExpr.hierarchyLevel.name,\r\n fieldExpr.hierarchyLevel.level);\r\n }\r\n\r\n export function getConceptualHierarchyLevel(\r\n conceptualSchema: FederatedConceptualSchema,\r\n schemaName: string,\r\n entity: string,\r\n hierarchy: string,\r\n hierarchyLevel: string): ConceptualHierarchyLevel {\r\n\r\n let schema = conceptualSchema.schema(schemaName);\r\n let hierarchyLevelColumn = schema.findHierarchy(entity, hierarchy);\r\n if (hierarchyLevelColumn) {\r\n return hierarchyLevelColumn.levels.withName(hierarchyLevel);\r\n }\r\n }\r\n }\r\n\r\n /** Returns a SQExprColumnRef expression or undefined.*/\r\n class SQExprColumnRefInfoVisitor extends DefaultSQExprVisitor<SQColumnRefExpr> {\r\n private schema: FederatedConceptualSchema;\r\n\r\n constructor(schema: FederatedConceptualSchema) {\r\n super();\r\n this.schema = schema;\r\n }\r\n\r\n public visitColumnRef(expr: SQColumnRefExpr): SQColumnRefExpr {\r\n return expr;\r\n }\r\n\r\n public visitHierarchyLevel(expr: SQHierarchyLevelExpr): SQColumnRefExpr {\r\n let ref: string = expr.level;\r\n let hierarchy = <SQHierarchyExpr>(expr.arg);\r\n let sourceExpr: SQColumnRefExpr = hierarchy.accept(this);\r\n\r\n if (hierarchy && hierarchy.arg instanceof SQPropertyVariationSourceExpr) {\r\n let propertyVariationSource = <SQPropertyVariationSourceExpr>hierarchy.arg;\r\n let targetEntity = sourceExpr.getTargetEntityForVariation(this.schema, propertyVariationSource.name);\r\n\r\n if (sourceExpr && targetEntity) {\r\n let schemaName = (<SQEntityExpr>(sourceExpr.source)).schema;\r\n let targetEntityExpr = SQExprBuilder.entity(schemaName, targetEntity);\r\n let schemaHierarchy = this.schema.schema(schemaName).findHierarchy(targetEntity, hierarchy.hierarchy);\r\n\r\n if (schemaHierarchy) {\r\n for (let level of schemaHierarchy.levels)\r\n if (level.name === ref)\r\n return new SQColumnRefExpr(targetEntityExpr, level.column.name);\r\n }\r\n }\r\n }\r\n else {\r\n let entityExpr = <SQEntityExpr>(hierarchy.arg);\r\n let hierarchyLevelRef = SQHierarchyExprUtils.getConceptualHierarchyLevel(this.schema,\r\n entityExpr.schema,\r\n entityExpr.entity,\r\n hierarchy.hierarchy,\r\n expr.level);\r\n\r\n if (hierarchyLevelRef)\r\n return new SQColumnRefExpr(hierarchy.arg, hierarchyLevelRef.column.name);\r\n }\r\n }\r\n\r\n public visitHierarchy(expr: SQHierarchyExpr): SQColumnRefExpr {\r\n return expr.arg.accept(this);\r\n }\r\n\r\n public visitPropertyVariationSource(expr: SQPropertyVariationSourceExpr): SQColumnRefExpr {\r\n let propertyName = expr.property;\r\n return new SQColumnRefExpr(expr.arg, propertyName);\r\n }\r\n\r\n public visitDefault(expr: SQExpr): SQColumnRefExpr {\r\n return;\r\n }\r\n\r\n public static getColumnRefSQExpr(schema: FederatedConceptualSchema, expr: SQExpr): SQColumnRefExpr {\r\n let visitor = new SQExprColumnRefInfoVisitor(schema);\r\n return expr.accept(visitor);\r\n }\r\n }\r\n\r\n class SQExprChangeAggregateRewriter extends SQExprRootRewriter {\r\n private func: QueryAggregateFunction;\r\n\r\n constructor(func: QueryAggregateFunction) {\r\n debug.assertValue(func, 'func');\r\n\r\n super();\r\n this.func = func;\r\n }\r\n\r\n public visitAggr(expr: SQAggregationExpr): SQExpr {\r\n if (expr.func === this.func)\r\n return expr;\r\n\r\n return new SQAggregationExpr(expr.arg, this.func);\r\n }\r\n\r\n public visitColumnRef(expr: SQColumnRefExpr): SQExpr {\r\n return new SQAggregationExpr(expr, this.func);\r\n }\r\n\r\n public static rewrite(expr: SQExpr, func: QueryAggregateFunction): SQExpr {\r\n debug.assertValue(expr, 'expr');\r\n debug.assertValue(func, 'func');\r\n\r\n let rewriter = new SQExprChangeAggregateRewriter(func);\r\n return expr.accept(rewriter);\r\n }\r\n }\r\n\r\n class SQExprRemoveAggregateRewriter extends SQExprRootRewriter {\r\n private static instance: SQExprRemoveAggregateRewriter = new SQExprRemoveAggregateRewriter();\r\n\r\n public visitAggr(expr: SQAggregationExpr): SQExpr {\r\n return expr.arg;\r\n }\r\n\r\n public static rewrite(expr: SQExpr): SQExpr {\r\n debug.assertValue(expr, 'expr');\r\n\r\n return expr.accept(SQExprRemoveAggregateRewriter.instance);\r\n }\r\n }\r\n\r\n class SQExprRemoveEntityVariablesRewriter extends SQExprRewriter {\r\n private static instance: SQExprRemoveEntityVariablesRewriter = new SQExprRemoveEntityVariablesRewriter();\r\n\r\n public visitEntity(expr: SQEntityExpr): SQExpr {\r\n if (expr.variable)\r\n return SQExprBuilder.entity(expr.schema, expr.entity);\r\n\r\n return expr;\r\n }\r\n\r\n public static rewrite(expr: SQExpr): SQExpr {\r\n debug.assertValue(expr, 'expr');\r\n\r\n return expr.accept(SQExprRemoveEntityVariablesRewriter.instance);\r\n }\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.data {\r\n import StringExtensions = jsCommon.StringExtensions;\r\n\r\n export module SQExprUtils {\r\n /** Returns an array of supported aggregates for a given expr and role. */\r\n export function getSupportedAggregates(\r\n expr: SQExpr,\r\n schema: FederatedConceptualSchema): QueryAggregateFunction[] {\r\n let emptyList: QueryAggregateFunction[] = [];\r\n\r\n let metadata = getMetadataForUnderlyingType(expr, schema);\r\n\r\n // don't use expr.validate as validate will be using this function and we end up in a recursive loop\r\n if (!metadata)\r\n return emptyList;\r\n\r\n let valueType = metadata.type,\r\n fieldKind = metadata.kind,\r\n isPropertyIdentity = metadata.idOnEntityKey,\r\n Agg = QueryAggregateFunction; // alias\r\n\r\n if (!valueType)\r\n return emptyList;\r\n\r\n // Cannot aggregate on model measures\r\n if (fieldKind === FieldKind.Measure)\r\n return emptyList;\r\n\r\n if (valueType.numeric || valueType.integer) {\r\n let aggregates = [Agg.Sum, Agg.Avg, Agg.Min, Agg.Max, Agg.Count, Agg.CountNonNull, Agg.StandardDeviation, Agg.Variance];\r\n let fieldExpr = SQExprConverter.asFieldPattern(expr);\r\n let fieldExprItem = FieldExprPattern.toFieldExprEntityItemPattern(fieldExpr);\r\n\r\n let currentSchema = schema.schema(fieldExprItem.schema);\r\n if (currentSchema.capabilities.supportsMedian)\r\n aggregates.push(Agg.Median);\r\n return aggregates;\r\n } else if (valueType.text || valueType.bool || valueType.dateTime) {\r\n if (isPropertyIdentity)\r\n return [Agg.CountNonNull];\r\n return [Agg.Count, Agg.CountNonNull];\r\n }\r\n\r\n debug.assertFail(\"Unexpected expr or role.\");\r\n return emptyList;\r\n }\r\n\r\n export function isSupportedAggregate(\r\n expr: SQExpr,\r\n schema: FederatedConceptualSchema,\r\n aggregate: QueryAggregateFunction): boolean {\r\n let supportedAggregates = getSupportedAggregates(expr, schema);\r\n return _.contains(supportedAggregates, aggregate);\r\n }\r\n\r\n export function indexOfExpr(items: SQExpr[], searchElement: SQExpr): number {\r\n debug.assertValue(items, 'items');\r\n debug.assertValue(searchElement, 'searchElement');\r\n\r\n for (let i = 0, len = items.length; i < len; i++) {\r\n if (SQExpr.equals(items[i], searchElement))\r\n return i;\r\n }\r\n return -1;\r\n }\r\n\r\n export function sequenceEqual(x: SQExpr[], y: SQExpr[]): boolean {\r\n debug.assertValue(x, 'x');\r\n debug.assertValue(y, 'y');\r\n\r\n let len = x.length;\r\n if (len !== y.length)\r\n return false;\r\n\r\n for (let i = 0; i < len; i++) {\r\n if (!SQExpr.equals(x[i], y[i]))\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n export function uniqueName(namedItems: NamedSQExpr[], expr: SQExpr): string {\r\n debug.assertValue(namedItems, 'namedItems');\r\n\r\n // Determine all names\r\n let names: { [name: string]: boolean } = {};\r\n for (let i = 0, len = namedItems.length; i < len; i++)\r\n names[namedItems[i].name] = true;\r\n\r\n return StringExtensions.findUniqueName(names, defaultName(expr));\r\n }\r\n\r\n /** Generates a default expression name */\r\n export function defaultName(expr: SQExpr, fallback: string = 'select'): string {\r\n if (!expr)\r\n return fallback;\r\n\r\n return expr.accept(SQExprDefaultNameGenerator.instance, fallback);\r\n }\r\n\r\n /** Gets a value indicating whether the expr is a model measure or an aggregate. */\r\n export function isMeasure(expr: SQExpr): boolean {\r\n debug.assertValue(expr, 'expr');\r\n\r\n return expr.accept(IsMeasureVisitor.instance);\r\n }\r\n\r\n /** Gets a value indicating whether the expr is an AnyValue or equals comparison to AnyValue*/\r\n export function isAnyValue(expr: SQExpr): boolean {\r\n debug.assertValue(expr, 'expr');\r\n\r\n return expr.accept(IsAnyValueVisitor.instance);\r\n }\r\n\r\n /** Gets a value indicating whether the expr is a DefaultValue or equals comparison to DefaultValue*/\r\n export function isDefaultValue(expr: SQExpr): boolean {\r\n debug.assertValue(expr, 'expr');\r\n\r\n return expr.accept(IsDefaultValueVisitor.instance);\r\n }\r\n\r\n export function discourageAggregation(expr: SQExpr, schema: FederatedConceptualSchema): boolean {\r\n let capabilities = getSchemaCapabilities(expr, schema);\r\n return capabilities && capabilities.discourageQueryAggregateUsage;\r\n }\r\n\r\n export function getSchemaCapabilities(expr: SQExpr, schema: FederatedConceptualSchema): ConceptualCapabilities {\r\n debug.assertValue(expr, 'expr');\r\n debug.assertValue(schema, 'schema');\r\n\r\n let field = SQExprConverter.asFieldPattern(expr);\r\n if (!field)\r\n return;\r\n\r\n let fieldExprItem = FieldExprPattern.toFieldExprEntityItemPattern(field);\r\n let conceptualSchema = schema.schema(fieldExprItem.schema);\r\n if (conceptualSchema)\r\n return conceptualSchema.capabilities;\r\n }\r\n\r\n export function getKpiStatus(expr: SQExpr, schema: FederatedConceptualSchema): SQExpr {\r\n let kpi = getKpiStatusProperty(expr, schema);\r\n if (kpi) {\r\n let measureExpr = SQExprConverter.asFieldPattern(expr).measure;\r\n if (measureExpr) {\r\n return SQExprBuilder.fieldExpr({\r\n measure: {\r\n schema: measureExpr.schema,\r\n entity: measureExpr.entity,\r\n name: kpi.name,\r\n }\r\n });\r\n }\r\n }\r\n }\r\n\r\n export function getKpiMetadata(expr: SQExpr, schema: FederatedConceptualSchema): DataViewKpiColumnMetadata {\r\n let property = expr.getConceptualProperty(schema);\r\n if (!property)\r\n return;\r\n\r\n if (property.measure && property.measure.kpi)\r\n return property.measure.kpi.statusMetadata;\r\n\r\n let kpiStatusProperty = getKpiStatusProperty(expr, schema);\r\n if (kpiStatusProperty)\r\n return kpiStatusProperty.kpi.measure.kpi.statusMetadata;\r\n }\r\n\r\n function getKpiStatusProperty(expr: SQExpr, schema: FederatedConceptualSchema): ConceptualProperty {\r\n let property = expr.getConceptualProperty(schema);\r\n if (!property)\r\n return;\r\n\r\n let kpi = property.kpi;\r\n if (kpi && kpi.measure.kpi.status === property)\r\n return property;\r\n }\r\n\r\n function getMetadataForUnderlyingType(expr: SQExpr, schema: FederatedConceptualSchema): SQExprMetadata {\r\n // Unwrap the aggregate (if the expr has one), and look at the underlying type.\r\n let metadata = SQExprBuilder.removeAggregate(expr).getMetadata(schema);\r\n\r\n if (!metadata)\r\n metadata = expr.getMetadata(schema);\r\n\r\n return metadata;\r\n }\r\n\r\n export function getDefaultValue(fieldSQExpr: SQExpr, schema: FederatedConceptualSchema): SQConstantExpr {\r\n if (!fieldSQExpr || !schema)\r\n return;\r\n\r\n let sqField = SQExprConverter.asFieldPattern(fieldSQExpr);\r\n if (!sqField)\r\n return;\r\n\r\n let column: FieldExprPropertyPattern = sqField.column;\r\n\r\n if (column) {\r\n if (schema.schema(column.schema) && sqField.column.name) {\r\n let property = schema.schema(column.schema).findProperty(column.entity, sqField.column.name);\r\n\r\n if (property && property.column)\r\n return property.column.defaultValue;\r\n }\r\n }\r\n else {\r\n let hierarchyLevelField: FieldExprHierarchyLevelPattern = sqField.hierarchyLevel;\r\n if (hierarchyLevelField) {\r\n let fieldExprItem = FieldExprPattern.toFieldExprEntityItemPattern(sqField);\r\n let schemaName = fieldExprItem.schema;\r\n if (schema.schema(schemaName)) {\r\n let hierarchy = schema.schema(schemaName)\r\n .findHierarchy(fieldExprItem.entity, hierarchyLevelField.name);\r\n\r\n if (hierarchy) {\r\n let hierarchyLevel: ConceptualHierarchyLevel = hierarchy.levels.withName(hierarchyLevelField.level);\r\n if (hierarchyLevel && hierarchyLevel.column && hierarchyLevel.column.column)\r\n return hierarchyLevel.column.column.defaultValue;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n export function getDefaultValues(fieldSQExprs: SQExpr[], schema: FederatedConceptualSchema): SQConstantExpr[] {\r\n if (_.isEmpty(fieldSQExprs) || !schema)\r\n return;\r\n let result: SQConstantExpr[] = [];\r\n for (let sqExpr of fieldSQExprs) {\r\n let defaultValue = getDefaultValue(sqExpr, schema);\r\n if (defaultValue)\r\n result.push(defaultValue);\r\n }\r\n return result;\r\n }\r\n\r\n /** Return compare or and expression for key value pairs. */\r\n export function getDataViewScopeIdentityComparisonExpr(fieldsExpr: SQExpr[], values: SQConstantExpr[]): SQExpr {\r\n debug.assert(fieldsExpr.length === values.length, \"fileds and values need to be the same size\");\r\n\r\n let compareExprs: SQCompareExpr[] = [];\r\n for (let i = 0; i < fieldsExpr.length; i++) {\r\n compareExprs.push(SQExprBuilder.compare(QueryComparisonKind.Equal, fieldsExpr[i], values[i]));\r\n }\r\n\r\n if (_.isEmpty(compareExprs))\r\n return;\r\n\r\n let resultExpr: SQExpr;\r\n for (let compareExpr of compareExprs) {\r\n resultExpr = SQExprBuilder.and(resultExpr, compareExpr);\r\n }\r\n\r\n return resultExpr;\r\n }\r\n\r\n export function getActiveTablesNames(queryDefn: data.SemanticQuery): string[] {\r\n let tables: string[] = [];\r\n if (queryDefn) {\r\n let selectedItems = queryDefn.from();\r\n if (selectedItems !== undefined) {\r\n for (let key of selectedItems.keys()) {\r\n let entityObj = selectedItems.entity(key);\r\n if (tables.indexOf(entityObj.entity) < 0)\r\n tables.push(entityObj.entity);\r\n }\r\n }\r\n }\r\n return tables;\r\n }\r\n\r\n class SQExprDefaultNameGenerator extends DefaultSQExprVisitorWithArg<string, string> {\r\n public static instance: SQExprDefaultNameGenerator = new SQExprDefaultNameGenerator();\r\n\r\n public visitEntity(expr: SQEntityExpr): string {\r\n return expr.entity;\r\n }\r\n\r\n public visitColumnRef(expr: SQColumnRefExpr): string {\r\n return expr.source.accept(this) + '.' + expr.ref;\r\n }\r\n\r\n public visitMeasureRef(expr: SQMeasureRefExpr, fallback: string): string {\r\n return expr.source.accept(this) + '.' + expr.ref;\r\n }\r\n\r\n public visitAggr(expr: SQAggregationExpr, fallback: string): string {\r\n return QueryAggregateFunction[expr.func] + '(' + expr.arg.accept(this) + ')';\r\n }\r\n\r\n public visitConstant(expr: SQConstantExpr): string {\r\n return 'const';\r\n }\r\n\r\n public visitDefault(expr: SQExpr, fallback: string): string {\r\n return fallback || 'expr';\r\n }\r\n }\r\n\r\n class IsMeasureVisitor extends DefaultSQExprVisitor<boolean> {\r\n public static instance: IsMeasureVisitor = new IsMeasureVisitor();\r\n\r\n public visitMeasureRef(expr: SQMeasureRefExpr): boolean {\r\n return true;\r\n }\r\n\r\n public visitAggr(expr: SQAggregationExpr): boolean {\r\n return true;\r\n }\r\n\r\n public visitDefault(expr: SQExpr): boolean {\r\n return false;\r\n }\r\n }\r\n\r\n class IsDefaultValueVisitor extends DefaultSQExprVisitor<boolean> {\r\n public static instance: IsDefaultValueVisitor = new IsDefaultValueVisitor();\r\n\r\n public visitCompare(expr: SQCompareExpr): boolean {\r\n if (expr.kind !== QueryComparisonKind.Equal)\r\n return false;\r\n\r\n return expr.right.accept(this);\r\n }\r\n\r\n public visitAnd(expr: SQAndExpr): boolean {\r\n return expr.left.accept(this) && expr.right.accept(this);\r\n }\r\n\r\n public visitDefaultValue(expr: SQDefaultValueExpr): boolean {\r\n return true;\r\n }\r\n\r\n public visitDefault(expr: SQExpr): boolean {\r\n return false;\r\n }\r\n }\r\n\r\n class IsAnyValueVisitor extends DefaultSQExprVisitor<boolean> {\r\n public static instance: IsAnyValueVisitor = new IsAnyValueVisitor();\r\n\r\n public visitCompare(expr: SQCompareExpr): boolean {\r\n if (expr.kind !== QueryComparisonKind.Equal)\r\n return false;\r\n\r\n return expr.right.accept(this);\r\n }\r\n\r\n public visitAnd(expr: SQAndExpr): boolean {\r\n return expr.left.accept(this) && expr.right.accept(this);\r\n }\r\n\r\n public visitAnyValue(expr: SQAnyValueExpr): boolean {\r\n return true;\r\n }\r\n\r\n public visitDefault(expr: SQExpr): boolean {\r\n return false;\r\n }\r\n }\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.data {\r\n\r\n export class SemanticQueryRewriter {\r\n private exprRewriter: ISQExprVisitor<SQExpr>;\r\n\r\n constructor(exprRewriter: ISQExprVisitor<SQExpr>) {\r\n this.exprRewriter = exprRewriter;\r\n }\r\n\r\n public rewriteFrom(fromValue: SQFrom): SQFrom {\r\n let fromContents: { [name: string]: SQFromEntitySource } = {};\r\n let originalFrom = fromValue,\r\n originalFromKeys = originalFrom.keys();\r\n for (let i = 0, len = originalFromKeys.length; i < len; i++) {\r\n let keyName = originalFromKeys[i],\r\n originalEntityRef = originalFrom.entity(keyName),\r\n originalEntityExpr = SQExprBuilder.entity(originalEntityRef.schema, originalEntityRef.entity, keyName),\r\n updatedEntityExpr = <SQEntityExpr>originalEntityExpr.accept(this.exprRewriter);\r\n \r\n fromContents[keyName] = {\r\n schema: updatedEntityExpr.schema,\r\n entity: updatedEntityExpr.entity,\r\n };\r\n }\r\n return new SQFrom(fromContents);\r\n }\r\n\r\n public rewriteSelect(selectItems: NamedSQExpr[], from: SQFrom): NamedSQExpr[]{\r\n debug.assertValue(selectItems, 'selectItems');\r\n debug.assertValue(from, 'from');\r\n\r\n let select: NamedSQExpr[] = [];\r\n for (let i = 0, len = selectItems.length; i < len; i++) {\r\n let item = selectItems[i];\r\n select.push({\r\n name: item.name,\r\n expr: SQExprRewriterWithSourceRenames.rewrite(item.expr.accept(this.exprRewriter), from)\r\n });\r\n }\r\n\r\n return select;\r\n }\r\n\r\n public rewriteOrderBy(orderByItems: SQSortDefinition[], from: SQFrom): SQSortDefinition[]{\r\n debug.assertAnyValue(orderByItems, 'orderByItems');\r\n debug.assertValue(from, 'from');\r\n\r\n if (_.isEmpty(orderByItems))\r\n return;\r\n\r\n let orderBy: SQSortDefinition[] = [];\r\n for (let i = 0, len = orderByItems.length; i < len; i++) {\r\n let item = orderByItems[i],\r\n updatedExpr = SQExprRewriterWithSourceRenames.rewrite(item.expr.accept(this.exprRewriter), from);\r\n orderBy.push({\r\n direction: item.direction,\r\n expr: updatedExpr,\r\n });\r\n }\r\n\r\n return orderBy;\r\n }\r\n\r\n public rewriteWhere(whereItems: SQFilter[], from: SQFrom): SQFilter[]{\r\n debug.assertAnyValue(whereItems, 'whereItems');\r\n debug.assertValue(from, 'from');\r\n\r\n if (_.isEmpty(whereItems))\r\n return;\r\n\r\n let where: SQFilter[] = [];\r\n for (let i = 0, len = whereItems.length; i < len; i++) {\r\n let originalWhere = whereItems[i];\r\n\r\n let updatedWhere: SQFilter = {\r\n condition: SQExprRewriterWithSourceRenames.rewrite(originalWhere.condition.accept(this.exprRewriter), from),\r\n };\r\n\r\n if (originalWhere.target)\r\n updatedWhere.target = _.map(originalWhere.target, e => SQExprRewriterWithSourceRenames.rewrite(e.accept(this.exprRewriter), from));\r\n\r\n where.push(updatedWhere);\r\n }\r\n\r\n return where;\r\n }\r\n }\r\n} ","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.data {\r\n import ArrayExtensions = jsCommon.ArrayExtensions;\r\n import ArrayNamedItems = jsCommon.ArrayNamedItems;\r\n\r\n export interface NamedSQExpr {\r\n name: string;\r\n expr: SQExpr;\r\n }\r\n\r\n export interface SQFilter {\r\n target?: SQExpr[];\r\n condition: SQExpr;\r\n }\r\n\r\n /** Represents an entity reference in SemanticQuery from. */\r\n export interface SQFromEntitySource {\r\n entity: string;\r\n schema: string;\r\n }\r\n\r\n /** Represents a sort over an expression. */\r\n export interface SQSortDefinition {\r\n expr: SQExpr;\r\n direction: SortDirection;\r\n }\r\n\r\n export interface QueryFromEnsureEntityResult {\r\n name: string;\r\n new?: boolean;\r\n }\r\n\r\n export interface SQSourceRenames {\r\n [from: string]: string;\r\n }\r\n\r\n /**\r\n * Represents a semantic query that is:\r\n * 1) Round-trippable with a JSON QueryDefinition.\r\n * 2) Immutable\r\n * 3) Long-lived and does not have strong references to a conceptual model (only names).\r\n */\r\n export class SemanticQuery {\r\n private static empty: SemanticQuery;\r\n private fromValue: SQFrom;\r\n private whereItems: SQFilter[];\r\n private orderByItems: SQSortDefinition[];\r\n private selectItems: NamedSQExpr[];\r\n\r\n constructor(from, where, orderBy, select: NamedSQExpr[]) {\r\n debug.assertValue(from, 'from');\r\n debug.assertValue(select, 'select');\r\n\r\n this.fromValue = from;\r\n this.whereItems = where;\r\n this.orderByItems = orderBy;\r\n this.selectItems = select;\r\n }\r\n\r\n public static create(): SemanticQuery {\r\n if (!SemanticQuery.empty)\r\n SemanticQuery.empty = new SemanticQuery(new SQFrom(), null, null, []);\r\n\r\n return SemanticQuery.empty;\r\n }\r\n\r\n private static createWithTrimmedFrom(\r\n from: SQFrom,\r\n where: SQFilter[],\r\n orderBy: SQSortDefinition[],\r\n select: NamedSQExpr[]): SemanticQuery {\r\n\r\n let unreferencedKeyFinder = new UnreferencedKeyFinder(from.keys());\r\n\r\n // Where\r\n if (where) {\r\n for (let i = 0, len = where.length; i < len; i++) {\r\n let filter = where[i];\r\n\r\n filter.condition.accept(unreferencedKeyFinder);\r\n\r\n let filterTarget = filter.target;\r\n if (filterTarget) {\r\n for (let j = 0, jlen = filterTarget.length; j < jlen; j++)\r\n if (filterTarget[j])\r\n filterTarget[j].accept(unreferencedKeyFinder);\r\n }\r\n }\r\n }\r\n\r\n // OrderBy\r\n if (orderBy) {\r\n for (let i = 0, len = orderBy.length; i < len; i++)\r\n orderBy[i].expr.accept(unreferencedKeyFinder);\r\n }\r\n\r\n // Select\r\n for (let i = 0, len = select.length; i < len; i++)\r\n select[i].expr.accept(unreferencedKeyFinder);\r\n\r\n let unreferencedKeys = unreferencedKeyFinder.result();\r\n for (let i = 0, len = unreferencedKeys.length; i < len; i++)\r\n from.remove(unreferencedKeys[i]);\r\n\r\n return new SemanticQuery(from, where, orderBy, select);\r\n }\r\n\r\n public from(): SQFrom {\r\n return this.fromValue.clone();\r\n }\r\n\r\n /** Returns a query equivalent to this, with the specified selected items. */\r\n select(values: NamedSQExpr[]): SemanticQuery;\r\n /** Gets the items being selected in this query. */\r\n select(): ArrayNamedItems<NamedSQExpr>;\r\n public select(values?: NamedSQExpr[]): any {\r\n if (arguments.length === 0)\r\n return this.getSelect();\r\n\r\n return this.setSelect(values);\r\n }\r\n\r\n private getSelect(): ArrayNamedItems<NamedSQExpr> {\r\n return ArrayExtensions.extendWithName<NamedSQExpr>(_.map(this.selectItems, s => {\r\n return {\r\n name: s.name,\r\n expr: s.expr,\r\n };\r\n }));\r\n }\r\n\r\n private setSelect(values: NamedSQExpr[]): SemanticQuery {\r\n let selectItems: NamedSQExpr[] = [],\r\n from = this.fromValue.clone();\r\n\r\n for (let i = 0, len = values.length; i < len; i++) {\r\n let value = values[i];\r\n selectItems.push({\r\n name: value.name,\r\n expr: SQExprRewriterWithSourceRenames.rewrite(value.expr, from)\r\n });\r\n }\r\n\r\n return SemanticQuery.createWithTrimmedFrom(from, this.whereItems, this.orderByItems, selectItems);\r\n }\r\n\r\n /** Removes the given expression from the select. */\r\n public removeSelect(expr: SQExpr): SemanticQuery {\r\n debug.assertValue(expr, 'expr');\r\n\r\n let originalItems = this.selectItems,\r\n selectItems: NamedSQExpr[] = [];\r\n for (let i = 0, len = originalItems.length; i < len; i++) {\r\n let originalExpr = originalItems[i];\r\n if (SQExpr.equals(originalExpr.expr, expr))\r\n continue;\r\n\r\n selectItems.push(originalExpr);\r\n }\r\n\r\n return SemanticQuery.createWithTrimmedFrom(this.fromValue.clone(), this.whereItems, this.orderByItems, selectItems);\r\n }\r\n\r\n /** Removes the given expression from order by. */\r\n public removeOrderBy(expr: SQExpr): SemanticQuery {\r\n let sorts = this.orderBy();\r\n for (let i = sorts.length - 1; i >= 0; i--) {\r\n if (SQExpr.equals(sorts[i].expr, expr))\r\n sorts.splice(i, 1);\r\n }\r\n\r\n return SemanticQuery.createWithTrimmedFrom(this.fromValue.clone(), this.whereItems, sorts, this.selectItems);\r\n }\r\n\r\n public selectNameOf(expr: SQExpr): string {\r\n let index = SQExprUtils.indexOfExpr(_.map(this.selectItems, s => s.expr), expr);\r\n if (index >= 0)\r\n return this.selectItems[index].name;\r\n }\r\n\r\n public setSelectAt(index: number, expr: SQExpr): SemanticQuery {\r\n debug.assertValue(expr, 'expr');\r\n\r\n if (index >= this.selectItems.length)\r\n return;\r\n\r\n let select = this.select(),\r\n from = this.fromValue.clone(),\r\n originalName = select[index].name;\r\n select[index] = {\r\n name: originalName,\r\n expr: SQExprRewriterWithSourceRenames.rewrite(expr, from)\r\n };\r\n\r\n return SemanticQuery.createWithTrimmedFrom(from, this.whereItems, this.orderByItems, select);\r\n }\r\n\r\n /** Adds a the expression to the select clause. */\r\n public addSelect(expr: SQExpr): SemanticQuery {\r\n debug.assertValue(expr, 'expr');\r\n\r\n let selectItems = this.select(),\r\n from = this.fromValue.clone();\r\n selectItems.push({\r\n name: SQExprUtils.uniqueName(selectItems, expr),\r\n expr: SQExprRewriterWithSourceRenames.rewrite(expr, from)\r\n });\r\n\r\n return SemanticQuery.createWithTrimmedFrom(from, this.whereItems, this.orderByItems, selectItems);\r\n }\r\n\r\n /** Gets or sets the sorting for this query. */\r\n orderBy(values: SQSortDefinition[]): SemanticQuery;\r\n orderBy(): SQSortDefinition[];\r\n\r\n public orderBy(values?: SQSortDefinition[]): any {\r\n if (arguments.length === 0)\r\n return this.getOrderBy();\r\n\r\n return this.setOrderBy(values);\r\n }\r\n\r\n private getOrderBy(): SQSortDefinition[] {\r\n let result: SQSortDefinition[] = [];\r\n\r\n let orderBy = this.orderByItems;\r\n if (orderBy) {\r\n for (let i = 0, len = orderBy.length; i < len; i++) {\r\n let clause = orderBy[i];\r\n\r\n result.push({\r\n expr: clause.expr,\r\n direction: clause.direction,\r\n });\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n\r\n private setOrderBy(values: SQSortDefinition[]): SemanticQuery {\r\n debug.assertValue(values, 'values');\r\n\r\n let updatedOrderBy: SQSortDefinition[] = [],\r\n from = this.fromValue.clone();\r\n for (let i = 0, len = values.length; i < len; i++) {\r\n let clause = values[i];\r\n updatedOrderBy.push({\r\n expr: SQExprRewriterWithSourceRenames.rewrite(clause.expr, from),\r\n direction: clause.direction,\r\n });\r\n }\r\n\r\n return SemanticQuery.createWithTrimmedFrom(from, this.whereItems, updatedOrderBy, this.selectItems);\r\n }\r\n\r\n /** Gets or sets the filters for this query. */\r\n where(values: SQFilter[]): SemanticQuery;\r\n where(): SQFilter[];\r\n\r\n public where(values?: SQFilter[]): any {\r\n if (arguments.length === 0)\r\n return this.getWhere();\r\n\r\n return this.setWhere(values);\r\n }\r\n\r\n private getWhere(): SQFilter[] {\r\n let result: SQFilter[] = [];\r\n\r\n let whereItems = this.whereItems;\r\n if (whereItems) {\r\n for (let i = 0, len = whereItems.length; i < len; i++)\r\n result.push(whereItems[i]);\r\n }\r\n\r\n return result;\r\n }\r\n\r\n private setWhere(values: SQFilter[]): SemanticQuery {\r\n debug.assertValue(values, 'values');\r\n\r\n let updatedWhere: SQFilter[] = [],\r\n from = this.fromValue.clone();\r\n for (let i = 0, len = values.length; i < len; i++) {\r\n let filter = values[i];\r\n let updatedFilter: SQFilter = {\r\n condition: SQExprRewriterWithSourceRenames.rewrite(filter.condition, from),\r\n };\r\n\r\n let filterTarget = filter.target;\r\n if (filterTarget) {\r\n updatedFilter.target = [];\r\n for (let j = 0, jlen = filterTarget.length; j < jlen; j++)\r\n if (filterTarget[j]) {\r\n let updatedTarget = SQExprRewriterWithSourceRenames.rewrite(filterTarget[j], from);\r\n updatedFilter.target.push(updatedTarget);\r\n }\r\n }\r\n\r\n updatedWhere.push(updatedFilter);\r\n }\r\n\r\n return SemanticQuery.createWithTrimmedFrom(from, updatedWhere, this.orderByItems, this.selectItems);\r\n }\r\n\r\n public addWhere(filter: SemanticFilter): SemanticQuery {\r\n debug.assertValue(filter, 'filter');\r\n\r\n let updatedWhere: SQFilter[] = this.where(),\r\n incomingWhere: SQFilter[] = filter.where(),\r\n from = this.fromValue.clone();\r\n\r\n for (let i = 0, len = incomingWhere.length; i < len; i++) {\r\n let clause = incomingWhere[i];\r\n\r\n let updatedClause: SQFilter = {\r\n condition: SQExprRewriterWithSourceRenames.rewrite(clause.condition, from),\r\n };\r\n\r\n if (clause.target)\r\n updatedClause.target = _.map(clause.target, t => SQExprRewriterWithSourceRenames.rewrite(t, from));\r\n\r\n updatedWhere.push(updatedClause);\r\n }\r\n\r\n return SemanticQuery.createWithTrimmedFrom(from, updatedWhere, this.orderByItems, this.selectItems);\r\n }\r\n\r\n public rewrite(exprRewriter: ISQExprVisitor<SQExpr>): SemanticQuery {\r\n let rewriter = new SemanticQueryRewriter(exprRewriter);\r\n let from = rewriter.rewriteFrom(this.fromValue);\r\n let where = rewriter.rewriteWhere(this.whereItems, from);\r\n let orderBy = rewriter.rewriteOrderBy(this.orderByItems, from);\r\n let select = rewriter.rewriteSelect(this.selectItems, from);\r\n\r\n return SemanticQuery.createWithTrimmedFrom(from, where, orderBy, select);\r\n }\r\n }\r\n\r\n /** Represents a semantic filter condition. Round-trippable with a JSON FilterDefinition. Instances of this class are immutable. */\r\n export class SemanticFilter implements ISemanticFilter {\r\n private fromValue: SQFrom;\r\n private whereItems: SQFilter[];\r\n\r\n constructor(from: SQFrom, where: SQFilter[]) {\r\n debug.assertValue(from, 'from');\r\n debug.assertValue(where, 'where');\r\n\r\n this.fromValue = from;\r\n this.whereItems = where;\r\n }\r\n\r\n public static fromSQExpr(contract: SQExpr): SemanticFilter {\r\n debug.assertValue(contract, 'contract');\r\n\r\n let from = new SQFrom();\r\n\r\n let rewrittenContract = SQExprRewriterWithSourceRenames.rewrite(contract, from);\r\n // DEVNOTE targets of some filters are visual specific and will get resolved only during query generation.\r\n // Thus not setting a target here.\r\n let where: SQFilter[] = [{\r\n condition: rewrittenContract\r\n }];\r\n\r\n return new SemanticFilter(from, where);\r\n }\r\n\r\n public static getDefaultValueFilter(fieldSQExprs: SQExpr | SQExpr[]): SemanticFilter {\r\n return SemanticFilter.getDataViewScopeIdentityComparisonFilters(fieldSQExprs, SQExprBuilder.defaultValue());\r\n }\r\n\r\n public static getAnyValueFilter(fieldSQExprs: SQExpr | SQExpr[]): SemanticFilter {\r\n return SemanticFilter.getDataViewScopeIdentityComparisonFilters(fieldSQExprs, SQExprBuilder.anyValue());\r\n }\r\n\r\n private static getDataViewScopeIdentityComparisonFilters(fieldSQExprs: SQExpr | SQExpr[], value: SQExpr): SemanticFilter {\r\n debug.assertValue(fieldSQExprs, 'fieldSQExprs');\r\n debug.assertValue(value, 'value');\r\n\r\n if (fieldSQExprs instanceof Array) {\r\n let values: SQConstantExpr[] = Array.apply(null, Array(fieldSQExprs.length)).map(() => { return value; });\r\n return SemanticFilter.fromSQExpr(SQExprUtils.getDataViewScopeIdentityComparisonExpr(<SQExpr[]>fieldSQExprs, values));\r\n }\r\n\r\n return SemanticFilter.fromSQExpr(SQExprBuilder.equal(<SQExpr>fieldSQExprs, value));\r\n }\r\n\r\n public from(): SQFrom {\r\n return this.fromValue.clone();\r\n }\r\n\r\n public conditions(): SQExpr[] {\r\n let expressions: SQExpr[] = [];\r\n\r\n let where = this.whereItems;\r\n for (let i = 0, len = where.length; i < len; i++) {\r\n let filter = where[i];\r\n expressions.push(filter.condition);\r\n }\r\n return expressions;\r\n }\r\n\r\n public where(): SQFilter[] {\r\n let result: SQFilter[] = [];\r\n\r\n let whereItems = this.whereItems;\r\n for (let i = 0, len = whereItems.length; i < len; i++)\r\n result.push(whereItems[i]);\r\n\r\n return result;\r\n }\r\n\r\n public rewrite(exprRewriter: ISQExprVisitor<SQExpr>): SemanticFilter {\r\n let rewriter = new SemanticQueryRewriter(exprRewriter);\r\n let from = rewriter.rewriteFrom(this.fromValue);\r\n let where = rewriter.rewriteWhere(this.whereItems, from);\r\n\r\n return new SemanticFilter(from, where);\r\n }\r\n\r\n public validate(schema: FederatedConceptualSchema, errors?: SQExprValidationError[]): SQExprValidationError[] {\r\n let validator = new SQExprValidationVisitor(schema, errors);\r\n this.rewrite(validator);\r\n return validator.errors;\r\n }\r\n\r\n /** Merges a list of SemanticFilters into one. */\r\n public static merge(filters: SemanticFilter[]): SemanticFilter {\r\n if (_.isEmpty(filters))\r\n return null;\r\n\r\n if (filters.length === 1)\r\n return filters[0];\r\n\r\n let firstFilter = filters[0];\r\n let from = firstFilter.from(),\r\n where: SQFilter[] = ArrayExtensions.take(firstFilter.whereItems, firstFilter.whereItems.length);\r\n\r\n for (let i = 1, len = filters.length; i < len; i++)\r\n SemanticFilter.applyFilter(filters[i], from, where);\r\n\r\n return new SemanticFilter(from, where);\r\n }\r\n\r\n public static isDefaultFilter(filter: SemanticFilter): boolean {\r\n if (!filter || filter.where().length !== 1)\r\n return false;\r\n\r\n return SQExprUtils.isDefaultValue(filter.where()[0].condition);\r\n }\r\n\r\n public static isAnyFilter(filter: SemanticFilter): boolean {\r\n if (!filter || filter.where().length !== 1)\r\n return false;\r\n\r\n return SQExprUtils.isAnyValue(filter.where()[0].condition);\r\n }\r\n\r\n public static isSameFilter(leftFilter: SemanticFilter, rightFilter: SemanticFilter): boolean {\r\n if (jsCommon.JsonComparer.equals<SemanticFilter>(leftFilter, rightFilter)) {\r\n return !((SemanticFilter.isDefaultFilter(leftFilter) && SemanticFilter.isAnyFilter(rightFilter))\r\n || (SemanticFilter.isAnyFilter(leftFilter) && SemanticFilter.isDefaultFilter(rightFilter)));\r\n }\r\n return false;\r\n }\r\n\r\n private static applyFilter(filter: SemanticFilter, from: SQFrom, where: SQFilter[]): void {\r\n debug.assertValue(filter, 'filter');\r\n debug.assertValue(from, 'from');\r\n debug.assertValue(where, 'where');\r\n\r\n // Where\r\n let filterWhereItems = filter.whereItems;\r\n for (let i = 0; i < filterWhereItems.length; i++) {\r\n let filterWhereItem = filterWhereItems[i];\r\n\r\n let updatedWhereItem: SQFilter = {\r\n condition: SQExprRewriterWithSourceRenames.rewrite(filterWhereItem.condition, from),\r\n };\r\n\r\n if (filterWhereItem.target)\r\n updatedWhereItem.target = _.map(filterWhereItem.target, e => SQExprRewriterWithSourceRenames.rewrite(e, from));\r\n\r\n where.push(updatedWhereItem);\r\n }\r\n }\r\n }\r\n\r\n /** Represents a SemanticQuery/SemanticFilter from clause. */\r\n export class SQFrom {\r\n private items: { [name: string]: SQFromEntitySource };\r\n\r\n constructor(items?: { [name: string]: SQFromEntitySource }) {\r\n this.items = items || {};\r\n }\r\n\r\n public keys(): string[] {\r\n return Object.keys(this.items);\r\n }\r\n\r\n public entity(key: string): SQFromEntitySource {\r\n return this.items[key];\r\n }\r\n\r\n public ensureEntity(entity: SQFromEntitySource, desiredVariableName?: string): QueryFromEnsureEntityResult {\r\n debug.assertValue(entity, 'entity');\r\n\r\n // 1) Reuse a reference to the entity among the already referenced\r\n let keys = this.keys();\r\n for (let i = 0, len = keys.length; i < len; i++) {\r\n let key = keys[i],\r\n item = this.items[key];\r\n if (item && entity.entity === item.entity && entity.schema === item.schema)\r\n return { name: key };\r\n }\r\n\r\n // 2) Add a reference to the entity\r\n let candidateName = desiredVariableName || this.candidateName(entity.entity),\r\n uniqueName: string = candidateName,\r\n i = 2;\r\n while (this.items[uniqueName]) {\r\n uniqueName = candidateName + i++;\r\n }\r\n\r\n this.items[uniqueName] = entity;\r\n return { name: uniqueName, new: true };\r\n }\r\n\r\n public remove(key: string): void {\r\n delete this.items[key];\r\n }\r\n\r\n /** Converts the entity name into a short reference name. Follows the Semantic Query convention of a short name. */\r\n private candidateName(ref: string): string {\r\n debug.assertValue(ref, 'ref');\r\n\r\n let idx = ref.lastIndexOf('.');\r\n if (idx >= 0 && (idx !== ref.length - 1))\r\n ref = ref.substr(idx + 1);\r\n\r\n return ref.substring(0, 1).toLowerCase();\r\n }\r\n\r\n public clone(): SQFrom {\r\n // NOTE: consider deprecating this method and instead making QueryFrom be CopyOnWrite (currently we proactively clone).\r\n let cloned = new SQFrom();\r\n\r\n // NOTE: we use extend rather than prototypical inheritance on items because we use Object.keys.\r\n $.extend(cloned.items, this.items);\r\n\r\n return cloned;\r\n }\r\n }\r\n\r\n export class SQExprRewriterWithSourceRenames extends SQExprRewriter {\r\n private renames: SQSourceRenames;\r\n\r\n constructor(renames: SQSourceRenames) {\r\n debug.assertValue(renames, 'renames');\r\n\r\n super();\r\n this.renames = renames;\r\n }\r\n\r\n public visitEntity(expr: SQEntityExpr): SQExpr {\r\n let updatedName = this.renames[expr.entity];\r\n\r\n if (updatedName)\r\n return new SQEntityExpr(expr.schema, expr.entity, updatedName);\r\n\r\n return super.visitEntity(expr);\r\n }\r\n\r\n public rewriteFilter(filter: SQFilter): SQFilter {\r\n debug.assertValue(filter, 'filter');\r\n\r\n let updatedTargets = undefined;\r\n if (filter.target)\r\n updatedTargets = this.rewriteArray(filter.target);\r\n\r\n let updatedCondition = filter.condition.accept(this);\r\n\r\n if (filter.condition === updatedCondition && filter.target === updatedTargets)\r\n return filter;\r\n\r\n let updatedFilter: SQFilter = {\r\n condition: updatedCondition,\r\n };\r\n\r\n if (updatedTargets)\r\n updatedFilter.target = updatedTargets;\r\n\r\n return updatedFilter;\r\n }\r\n\r\n public rewriteArray(exprs: SQExpr[]): SQExpr[] {\r\n debug.assertValue(exprs, 'exprs');\r\n\r\n let updatedExprs: SQExpr[];\r\n\r\n for (let i = 0, len = exprs.length; i < len; i++) {\r\n let expr = exprs[i],\r\n rewrittenExpr = expr.accept(this);\r\n\r\n if (expr !== rewrittenExpr && !updatedExprs)\r\n updatedExprs = ArrayExtensions.take(exprs, i);\r\n\r\n if (updatedExprs)\r\n updatedExprs.push(rewrittenExpr);\r\n }\r\n\r\n return updatedExprs || exprs;\r\n }\r\n\r\n public static rewrite(expr: SQExpr, from: SQFrom): SQExpr {\r\n debug.assertValue(expr, 'expr');\r\n debug.assertValue(from, 'from');\r\n\r\n let renames = QuerySourceRenameDetector.run(expr, from);\r\n let rewriter = new SQExprRewriterWithSourceRenames(renames);\r\n return expr.accept(rewriter);\r\n }\r\n }\r\n\r\n /** Responsible for updating a QueryFrom based on SQExpr references. */\r\n class QuerySourceRenameDetector extends DefaultSQExprVisitorWithTraversal {\r\n private from: SQFrom;\r\n private renames: SQSourceRenames;\r\n\r\n public static run(expr: SQExpr, from: SQFrom): SQSourceRenames {\r\n let detector = new QuerySourceRenameDetector(from);\r\n expr.accept(detector);\r\n\r\n return detector.renames;\r\n }\r\n\r\n constructor(from: SQFrom) {\r\n debug.assertValue(from, 'from');\r\n super();\r\n\r\n this.from = from;\r\n this.renames = {};\r\n }\r\n\r\n public visitEntity(expr: SQEntityExpr): void {\r\n // TODO: Renames must take the schema into account, not just entity set name.\r\n let existingEntity = this.from.entity(expr.variable);\r\n if (existingEntity && existingEntity.schema === expr.schema && existingEntity.entity === expr.entity)\r\n return;\r\n\r\n let actualEntity = this.from.ensureEntity(\r\n {\r\n schema: expr.schema,\r\n entity: expr.entity,\r\n },\r\n expr.variable);\r\n\r\n this.renames[expr.entity] = actualEntity.name;\r\n }\r\n }\r\n\r\n /** Visitor for finding unreferenced sources. */\r\n class UnreferencedKeyFinder extends DefaultSQExprVisitorWithTraversal {\r\n private keys: string[];\r\n\r\n constructor(keys: string[]) {\r\n debug.assertValue(keys, 'keys');\r\n\r\n super();\r\n this.keys = keys;\r\n }\r\n\r\n public visitEntity(expr: SQEntityExpr): void {\r\n let index = this.keys.indexOf(expr.variable);\r\n if (index >= 0)\r\n this.keys.splice(index, 1);\r\n }\r\n\r\n public result(): string[] {\r\n return this.keys;\r\n }\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\nmodule powerbi.data {\r\n import DataViewTransform = powerbi.data.DataViewTransform;\r\n import SQExprBuilder = powerbi.data.SQExprBuilder;\r\n\r\n /** Utility for creating a DataView from columns of data. */\r\n export interface IDataViewBuilderCategorical {\r\n withCategory(options: DataViewBuilderCategoryColumnOptions): IDataViewBuilderCategorical;\r\n withCategories(categories: DataViewCategoryColumn[]): IDataViewBuilderCategorical;\r\n withValues(options: DataViewBuilderValuesOptions): IDataViewBuilderCategorical;\r\n withGroupedValues(options: DataViewBuilderGroupedValuesOptions): IDataViewBuilderCategorical;\r\n\r\n build(): DataView;\r\n }\r\n\r\n export interface DataViewBuilderColumnOptions {\r\n source: DataViewMetadataColumn;\r\n }\r\n\r\n export interface DataViewBuilderCategoryColumnOptions extends DataViewBuilderColumnOptions {\r\n values: PrimitiveValue[];\r\n identityFrom: DataViewBuilderColumnIdentitySource;\r\n }\r\n\r\n export interface DataViewBuilderValuesOptions {\r\n columns: DataViewBuilderValuesColumnOptions[];\r\n }\r\n\r\n export interface DataViewBuilderGroupedValuesOptions {\r\n groupColumn: DataViewBuilderCategoryColumnOptions;\r\n valueColumns: DataViewBuilderColumnOptions[];\r\n data: DataViewBuilderSeriesData[][];\r\n }\r\n\r\n /** Indicates the source set of identities. */\r\n export interface DataViewBuilderColumnIdentitySource {\r\n fields: SQExpr[];\r\n identities?: DataViewScopeIdentity[];\r\n }\r\n\r\n export interface DataViewBuilderValuesColumnOptions extends DataViewBuilderColumnOptions, DataViewBuilderSeriesData {\r\n }\r\n\r\n export interface DataViewBuilderSeriesData {\r\n values: PrimitiveValue[];\r\n highlights?: PrimitiveValue[];\r\n\r\n /** Client-computed maximum value for a column. */\r\n maxLocal?: any;\r\n\r\n /** Client-computed maximum value for a column. */\r\n minLocal?: any;\r\n }\r\n\r\n export function createCategoricalDataViewBuilder(): IDataViewBuilderCategorical {\r\n return new CategoricalDataViewBuilder();\r\n }\r\n\r\n interface ColumnMetadata {\r\n column: DataViewMetadataColumn;\r\n identityFrom: DataViewBuilderColumnIdentitySource;\r\n values: PrimitiveValue[];\r\n }\r\n\r\n class CategoricalDataViewBuilder implements IDataViewBuilderCategorical {\r\n private categories: DataViewCategoryColumn[];\r\n private measureColumns: DataViewMetadataColumn[];\r\n private hasDynamicSeries: boolean;\r\n private dynamicSeriesMetadata: ColumnMetadata;\r\n private columnIndex: number;\r\n private data: DataViewBuilderValuesColumnOptions[]| DataViewBuilderSeriesData[][];\r\n\r\n constructor() {\r\n this.categories = [];\r\n this.measureColumns = [];\r\n this.columnIndex = 0;\r\n }\r\n\r\n public withCategory(options: DataViewBuilderCategoryColumnOptions): IDataViewBuilderCategorical {\r\n let categoryValues = options.values,\r\n identityFrom = options.identityFrom,\r\n type = options.source.type;\r\n\r\n let categoryColumn: DataViewCategoryColumn = {\r\n source: options.source,\r\n identityFields: options.identityFrom.fields,\r\n identity: options.identityFrom.identities || [],\r\n values: categoryValues,\r\n };\r\n\r\n if (!options.identityFrom.identities) {\r\n for (let categoryIndex = 0, categoryLength = categoryValues.length; categoryIndex < categoryLength; categoryIndex++) {\r\n categoryColumn.identity.push(\r\n getScopeIdentity(identityFrom, categoryIndex, categoryValues[categoryIndex], type));\r\n }\r\n }\r\n\r\n if (!this.categories)\r\n this.categories = [];\r\n\r\n this.categories.push(categoryColumn);\r\n\r\n return this;\r\n }\r\n\r\n public withCategories(categories: DataViewCategoryColumn[]): IDataViewBuilderCategorical {\r\n if (_.isEmpty(this.categories))\r\n this.categories = categories;\r\n else\r\n Array.prototype.push.apply(this.categories, categories);\r\n\r\n return this;\r\n }\r\n\r\n public withValues(options: DataViewBuilderValuesOptions): IDataViewBuilderCategorical {\r\n debug.assertValue(options, 'options');\r\n\r\n let columns = options.columns;\r\n debug.assertValue(columns, 'columns');\r\n\r\n for (let column of columns) {\r\n this.measureColumns.push(column.source);\r\n }\r\n\r\n this.data = columns;\r\n\r\n return this;\r\n }\r\n\r\n public withGroupedValues(options: DataViewBuilderGroupedValuesOptions): IDataViewBuilderCategorical {\r\n debug.assertValue(options, 'options');\r\n\r\n this.hasDynamicSeries = true;\r\n\r\n let groupColumn = options.groupColumn;\r\n debug.assertValue(groupColumn, 'groupColumn');\r\n\r\n this.dynamicSeriesMetadata = {\r\n column: groupColumn.source,\r\n identityFrom: groupColumn.identityFrom,\r\n values: groupColumn.values,\r\n };\r\n\r\n let valueColumns = options.valueColumns;\r\n for (let valueColumn of valueColumns) {\r\n this.measureColumns.push(valueColumn.source);\r\n }\r\n\r\n this.data = options.data;\r\n\r\n return this;\r\n }\r\n\r\n private fillData(dataViewValues: DataViewValueColumns, groups: DataViewMetadataColumn[]) {\r\n let categoryColumn = _.first(this.categories);\r\n let categoryLength = (categoryColumn && categoryColumn.values) ? categoryColumn.values.length : 1;\r\n\r\n if (this.hasDynamicSeries) {\r\n // Dynamic series\r\n let data = <DataViewBuilderSeriesData[][]>this.data;\r\n for (let seriesIndex = 0; seriesIndex < this.dynamicSeriesMetadata.values.length; seriesIndex++) {\r\n let seriesMeasures = data[seriesIndex];\r\n debug.assert(seriesMeasures.length === this.measureColumns.length, 'seriesMeasures.length === this.measureColumns.length');\r\n\r\n for (let measureIndex = 0, measuresLen = this.measureColumns.length; measureIndex < measuresLen; measureIndex++) {\r\n let groupIndex = seriesIndex * measuresLen + measureIndex;\r\n\r\n applySeriesData(dataViewValues[groupIndex], seriesMeasures[measureIndex], categoryLength);\r\n }\r\n }\r\n }\r\n else {\r\n // Static series\r\n let data = <DataViewBuilderValuesColumnOptions[]>this.data;\r\n for (let measureIndex = 0, measuresLen = this.measureColumns.length; measureIndex < measuresLen; measureIndex++) {\r\n applySeriesData(dataViewValues[measureIndex], data[measureIndex], categoryLength);\r\n }\r\n }\r\n }\r\n\r\n public build(): DataView {\r\n let metadataColumns: DataViewMetadataColumn[] = [];\r\n let categorical: DataViewCategorical = {};\r\n let groups: DataViewMetadataColumn[];\r\n\r\n let categoryMetadata = this.categories;\r\n let dynamicSeriesMetadata = this.dynamicSeriesMetadata;\r\n\r\n // --- Build metadata columns and value groups ---\r\n for (let columnMetadata of categoryMetadata) {\r\n pushIfNotExists(metadataColumns, columnMetadata.source);\r\n }\r\n\r\n if (this.hasDynamicSeries) {\r\n pushIfNotExists(metadataColumns, dynamicSeriesMetadata.column);\r\n }\r\n\r\n if (this.hasDynamicSeries) {\r\n // Dynamic series\r\n categorical.values = DataViewTransform.createValueColumns([], dynamicSeriesMetadata.identityFrom.fields, dynamicSeriesMetadata.column);\r\n\r\n let measures = this.measureColumns;\r\n groups = [];\r\n\r\n // For each series value we will make one column per measure\r\n let seriesValues = dynamicSeriesMetadata.values;\r\n for (let seriesIndex = 0; seriesIndex < seriesValues.length; seriesIndex++) {\r\n let seriesValue = seriesValues[seriesIndex];\r\n let seriesIdentity = getScopeIdentity(dynamicSeriesMetadata.identityFrom, seriesIndex, seriesValue, dynamicSeriesMetadata.column.type);\r\n\r\n for (let measure of measures) {\r\n let column = _.clone(measure);\r\n column.groupName = <string>seriesValue;\r\n groups.push(column);\r\n\r\n pushIfNotExists(metadataColumns, column);\r\n categorical.values.push({\r\n source: column,\r\n values: [],\r\n identity: seriesIdentity,\r\n });\r\n }\r\n }\r\n }\r\n else {\r\n // Static series / no series\r\n categorical.values = DataViewTransform.createValueColumns();\r\n groups = this.measureColumns;\r\n for (let measure of groups) {\r\n let column = measure;\r\n pushIfNotExists(metadataColumns, column);\r\n categorical.values.push({\r\n source: column,\r\n values: [],\r\n });\r\n }\r\n }\r\n\r\n let categories = this.categories;\r\n if (!_.isEmpty(categories))\r\n categorical.categories = categories;\r\n\r\n // --- Fill in data point values ---\r\n this.fillData(categorical.values, groups);\r\n\r\n return {\r\n metadata: {\r\n columns: metadataColumns,\r\n },\r\n categorical: categorical,\r\n };\r\n }\r\n }\r\n\r\n function getScopeIdentity(\r\n source: DataViewBuilderColumnIdentitySource,\r\n index: number,\r\n value: PrimitiveValue,\r\n valueType: ValueTypeDescriptor): DataViewScopeIdentity {\r\n let identities = source.identities;\r\n if (identities) {\r\n return identities[index];\r\n }\r\n\r\n debug.assert(source.fields && source.fields.length === 1, 'Inferring identity, expect exactly one field.');\r\n\r\n return createDataViewScopeIdentity(\r\n SQExprBuilder.equal(\r\n source.fields[0],\r\n SQExprBuilder.typedConstant(value, valueType)));\r\n }\r\n\r\n function pushIfNotExists(items: DataViewMetadataColumn[], itemToAdd: DataViewMetadataColumn): void {\r\n if (_.contains(items, itemToAdd))\r\n return;\r\n\r\n items.push(itemToAdd);\r\n }\r\n\r\n function applySeriesData(target: DataViewValueColumn, source: DataViewBuilderSeriesData, categoryLength: number): void {\r\n debug.assertValue(target, 'target');\r\n debug.assertValue(source, 'source');\r\n debug.assertValue(categoryLength, 'categoryLength');\r\n\r\n let values = source.values;\r\n debug.assert(categoryLength === values.length, 'categoryLength === values.length');\r\n\r\n target.values = values;\r\n\r\n let highlights = source.highlights;\r\n if (highlights) {\r\n debug.assert(categoryLength === highlights.length, 'categoryLength === highlights.length');\r\n\r\n target.highlights = highlights;\r\n }\r\n\r\n if (source.minLocal !== undefined)\r\n target.minLocal = source.minLocal;\r\n\r\n if (source.maxLocal !== undefined)\r\n target.maxLocal = source.maxLocal;\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../../_references.ts\"/>\r\n\r\nmodule powerbi.data {\r\n import SQExpr = powerbi.data.SQExpr;\r\n\r\n export function createStaticEvalContext(): IEvalContext;\r\n export function createStaticEvalContext(dataView: DataView, selectTransforms: DataViewSelectTransform[]): IEvalContext;\r\n export function createStaticEvalContext(dataView?: DataView, selectTransforms?: DataViewSelectTransform[]): IEvalContext {\r\n return new StaticEvalContext(dataView || { metadata: { columns: [] } }, selectTransforms);\r\n }\r\n\r\n /**\r\n * Represents an eval context over a potentially empty DataView. Only static repetition data view objects\r\n * are supported.\r\n */\r\n class StaticEvalContext implements IEvalContext {\r\n private dataView: DataView;\r\n private selectTransforms: DataViewSelectTransform[];\r\n\r\n constructor(dataView: DataView, selectTransforms: DataViewSelectTransform[]) {\r\n debug.assertValue(dataView, 'dataView');\r\n debug.assertAnyValue(selectTransforms, 'selectTransforms');\r\n\r\n this.dataView = dataView;\r\n this.selectTransforms = selectTransforms;\r\n }\r\n\r\n public getExprValue(expr: SQExpr): PrimitiveValue {\r\n let dataView = this.dataView,\r\n selectTransforms = this.selectTransforms;\r\n if (dataView && dataView.table && selectTransforms)\r\n return getExprValue(expr, selectTransforms, dataView.table);\r\n }\r\n\r\n public getCurrentIdentity(): DataViewScopeIdentity {\r\n return;\r\n }\r\n\r\n public getRoleValue(roleName: string): PrimitiveValue {\r\n return;\r\n }\r\n }\r\n\r\n function getExprValue(expr: SQExpr, selectTransforms: DataViewSelectTransform[], table: DataViewTable): PrimitiveValue {\r\n debug.assertValue(expr, 'expr');\r\n debug.assertValue(selectTransforms, 'selectTransforms');\r\n debug.assertValue(table, 'table');\r\n\r\n let rows = table.rows;\r\n if (rows && rows.length !== 1)\r\n return;\r\n\r\n let cols = table.columns;\r\n for (let selectIdx = 0, selectLen = selectTransforms.length; selectIdx < selectLen; selectIdx++) {\r\n let selectTransform = selectTransforms[selectIdx];\r\n if (!SQExpr.equals(selectTransform.expr, expr) || !selectTransform.queryName)\r\n continue;\r\n\r\n for (let colIdx = 0, colLen = cols.length; colIdx < colLen; colIdx++) {\r\n if (selectIdx !== cols[colIdx].index)\r\n continue;\r\n\r\n return rows[0][colIdx];\r\n }\r\n }\r\n\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../../_references.ts\"/>\r\n\r\nmodule powerbi.data {\r\n export function createMatrixEvalContext(dataViewMatrix: DataViewMatrix): IEvalContext {\r\n // NOTE: Matrix context-sensitive evaluation is not yet implemented.\r\n return createStaticEvalContext();\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved.\r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n *\r\n * The above copyright notice and this permission notice shall be included in\r\n * all copies or substantial portions of the Software.\r\n *\r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi {\r\n\r\n import StringExtensions = jsCommon.StringExtensions;\r\n import Formatting = jsCommon.Formatting;\r\n import RegExpExtensions = jsCommon.RegExpExtensions;\r\n\r\n /** Culture interfaces. These match the Globalize library interfaces intentionally. */\r\n export interface Culture {\r\n name: string;\r\n calendar: Calendar;\r\n calendars: CalendarDictionary;\r\n numberFormat: NumberFormatInfo;\r\n }\r\n\r\n export interface Calendar {\r\n patterns: any;\r\n firstDay: number;\r\n }\r\n\r\n export interface CalendarDictionary {\r\n [key: string]: Calendar;\r\n }\r\n\r\n export interface NumberFormatInfo {\r\n decimals: number;\r\n groupSizes: number[];\r\n negativeInfinity: string;\r\n positiveInfinity: string;\r\n }\r\n\r\n /** Formatting Encoder */\r\n module FormattingEncoder {\r\n export function preserveEscaped(format: string, specialChars: string): string {\r\n // Unicode U+E000 - U+F8FF is a private area and so we can use the chars from the range to encode the escaped sequences\r\n let length = specialChars.length;\r\n for (let i = 0; i < length; i++) {\r\n let oldText = \"\\\\\" + specialChars[i];\r\n let newText = String.fromCharCode(0xE000 + i);\r\n format = StringExtensions.replaceAll(format, oldText, newText);\r\n }\r\n return format;\r\n }\r\n\r\n export function restoreEscaped(format: string, specialChars: string): string {\r\n // After formatting is complete we should restore the encoded escaped chars into the unescaped chars\r\n let length = specialChars.length;\r\n for (let i = 0; i < length; i++) {\r\n let oldText = String.fromCharCode(0xE000 + i);\r\n let newText = specialChars[i];\r\n format = StringExtensions.replaceAll(format, oldText, newText);\r\n }\r\n return StringExtensions.replaceAll(format, \"\\\\\", \"\");\r\n }\r\n\r\n export function preserveLiterals(format: string, literals: string[]): string {\r\n // Unicode U+E000 - U+F8FF is a private area and so we can use the chars from the range to encode the escaped sequences\r\n format = StringExtensions.replaceAll(format, \"\\\"\", \"'\");\r\n for (let i = 0; ; i++) {\r\n let fromIndex = format.indexOf(\"'\");\r\n if (fromIndex < 0) {\r\n break;\r\n }\r\n let toIndex = format.indexOf(\"'\", fromIndex + 1);\r\n if (toIndex < 0) {\r\n break;\r\n }\r\n let literal = format.substring(fromIndex, toIndex + 1);\r\n literals.push(literal.substring(1, toIndex - fromIndex));\r\n let token = String.fromCharCode(0xE100 + i);\r\n format = format.replace(literal, token);\r\n }\r\n return format;\r\n }\r\n\r\n export function restoreLiterals(format: string, literals: string[]): string {\r\n let count = literals.length;\r\n for (let i = 0; i < count; i++) {\r\n let token = String.fromCharCode(0xE100 + i);\r\n let literal = literals[i];\r\n format = format.replace(token, literal);\r\n }\r\n return format;\r\n }\r\n }\r\n\r\n const IndexedTokensRegex = /({{)|(}})|{(\\d+[^}]*)}/g;\r\n const ZeroPlaceholder = '0';\r\n const DigitPlaceholder = '#';\r\n const ExponentialFormatChar = 'E';\r\n const NumericPlaceholders = [ZeroPlaceholder, DigitPlaceholder];\r\n const NumericPlaceholderRegex = new RegExp(NumericPlaceholders.join('|'), 'g');\r\n\r\n /** Formatting Service */\r\n class FormattingService implements IFormattingService {\r\n\r\n _currentCultureSelector: string;\r\n _currentCulture: Culture;\r\n _dateTimeScaleFormatInfo: DateTimeScaleFormatInfo;\r\n\r\n public formatValue(value: any, format?: string, culture?: string): string {\r\n // Handle special cases\r\n if (value === undefined || value === null) {\r\n return '';\r\n }\r\n let gculture = this.getCulture(culture);\r\n\r\n if (DateTimeFormat.canFormat(value)) {\r\n // Dates\r\n return DateTimeFormat.format(value, format, gculture);\r\n } else if (NumberFormat.canFormat(value)) {\r\n // Numbers\r\n return NumberFormat.format(value, format, gculture);\r\n } else {\r\n // Other data types - return as string\r\n return value.toString();\r\n }\r\n }\r\n\r\n public format(formatWithIndexedTokens: string, args: any[], culture?: string): string {\r\n if (!formatWithIndexedTokens) {\r\n return \"\";\r\n }\r\n let result = formatWithIndexedTokens.replace(IndexedTokensRegex, (match: string, left: string, right: string, argToken: string) => {\r\n if (left) {\r\n return \"{\";\r\n } else if (right) {\r\n return \"}\";\r\n } else {\r\n let parts = argToken.split(\":\");\r\n let argIndex = parseInt(parts[0], 10);\r\n let argFormat = parts[1];\r\n return this.formatValue(args[argIndex], argFormat, culture);\r\n }\r\n return \"\";\r\n });\r\n\r\n return result;\r\n }\r\n\r\n public isStandardNumberFormat(format: string): boolean {\r\n return NumberFormat.isStandardFormat(format);\r\n }\r\n\r\n public formatNumberWithCustomOverride(value: number, format: string, nonScientificOverrideFormat: string, culture?: string): string {\r\n let gculture = this.getCulture(culture);\r\n\r\n return NumberFormat.formatWithCustomOverride(value, format, nonScientificOverrideFormat, gculture);\r\n }\r\n\r\n public dateFormatString(unit: DateTimeUnit): string {\r\n return this._dateTimeScaleFormatInfo.getFormatString(unit);\r\n }\r\n\r\n /**\r\n * Sets the current localization culture\r\n * @param cultureSelector - name of a culture: \"en\", \"en-UK\", \"fr-FR\" etc. (See National Language Support (NLS) for full lists. Use \"default\" for invariant culture).\r\n */\r\n private setCurrentCulture(cultureSelector: string): void {\r\n if (this._currentCultureSelector !== cultureSelector) {\r\n this._currentCulture = this.getCulture(cultureSelector);\r\n this._currentCultureSelector = cultureSelector;\r\n this._dateTimeScaleFormatInfo = new DateTimeScaleFormatInfo(this._currentCulture);\r\n }\r\n }\r\n\r\n /**\r\n * Gets the culture assotiated with the specified cultureSelector (\"en\", \"en-US\", \"fr-FR\" etc).\r\n * @param cultureSelector - name of a culture: \"en\", \"en-UK\", \"fr-FR\" etc. (See National Language Support (NLS) for full lists. Use \"default\" for invariant culture).\r\n * Exposing this function for testability of unsupported cultures\r\n */\r\n public getCulture(cultureSelector?: string): Culture {\r\n if (cultureSelector == null) {\r\n if (this._currentCulture == null) {\r\n this.initialize();\r\n }\r\n return this._currentCulture;\r\n } else {\r\n let culture = Globalize.findClosestCulture(cultureSelector);\r\n if (!culture)\r\n culture = Globalize.culture(\"en-US\");\r\n return culture;\r\n }\r\n }\r\n\r\n /** By default the Globalization module initializes to the culture/calendar provided in the language/culture URL params */\r\n private initialize() {\r\n let cultureName = this.getUrlParam(\"language\") || window[\"cultureInfo\"] || window.navigator.userLanguage || window.navigator[\"language\"] || Globalize.culture().name;\r\n this.setCurrentCulture(cultureName);\r\n let calendarName = this.getUrlParam(\"calendar\");\r\n if (calendarName) {\r\n let culture = this._currentCulture;\r\n let c = culture.calendars[calendarName];\r\n if (c) {\r\n culture.calendar = c;\r\n }\r\n }\r\n }\r\n\r\n private getUrlParam(name: string): string {\r\n let param = window.location.search.match(RegExp(\"[?&]\" + name + \"=([^&]*)\"));\r\n return param ? param[1] : undefined;\r\n }\r\n }\r\n\r\n /**\r\n * DateTimeFormat module contains the static methods for formatting the DateTimes.\r\n * It extends the JQuery.Globalize functionality to support complete set of .NET\r\n * formatting expressions for dates.\r\n */\r\n module DateTimeFormat {\r\n\r\n let _currentCachedFormat: string;\r\n let _currentCachedProcessedFormat: string;\r\n\r\n /** Evaluates if the value can be formatted using the NumberFormat */\r\n export function canFormat(value: any) {\r\n let result = value instanceof Date;\r\n return result;\r\n }\r\n\r\n /** Formats the date using provided format and culture */\r\n export function format(value: Date, format: string, culture: Culture): string {\r\n format = format || \"G\";\r\n let isStandard = format.length === 1;\r\n try {\r\n if (isStandard) {\r\n return formatDateStandard(value, format, culture);\r\n } else {\r\n return formatDateCustom(value, format, culture);\r\n }\r\n } catch (e) {\r\n return formatDateStandard(value, \"G\", culture);\r\n }\r\n }\r\n\r\n /** Formats the date using standard format expression */\r\n function formatDateStandard(value: Date, format: string, culture: Culture) {\r\n // In order to provide parity with .NET we have to support additional set of DateTime patterns.\r\n let patterns = culture.calendar.patterns;\r\n // Extend supported set of patterns\r\n ensurePatterns(culture.calendar);\r\n // Handle extended set of formats\r\n let output = Formatting.findDateFormat(value, format, culture.name);\r\n if (output.format.length === 1)\r\n format = patterns[output.format];\r\n else\r\n format = output.format;\r\n //need to revisit when globalization is enabled\r\n culture = Globalize.culture(\"en-US\");\r\n return Globalize.format(output.value, format, culture);\r\n }\r\n\r\n /** Formats the date using custom format expression */\r\n function formatDateCustom(value: Date, format: string, culture: Culture): string {\r\n let result: string;\r\n let literals: string[] = [];\r\n format = FormattingEncoder.preserveEscaped(format, \"\\\\dfFghHKmstyz:/%'\\\"\");\r\n format = FormattingEncoder.preserveLiterals(format, literals);\r\n format = StringExtensions.replaceAll(format, \"\\\"\", \"'\");\r\n if (format.indexOf(\"F\") > -1) {\r\n // F is not supported so we need to replace the F with f based on the milliseconds\r\n // Replace all sequences of F longer than 3 with \"FFF\"\r\n format = StringExtensions.replaceAll(format, \"FFFF\", \"FFF\");\r\n // Based on milliseconds update the format to use fff\r\n let milliseconds = value.getMilliseconds();\r\n if (milliseconds % 10 >= 1) {\r\n format = StringExtensions.replaceAll(format, \"FFF\", \"fff\");\r\n }\r\n format = StringExtensions.replaceAll(format, \"FFF\", \"FF\");\r\n if ((milliseconds % 100) / 10 >= 1) {\r\n format = StringExtensions.replaceAll(format, \"FF\", \"ff\");\r\n }\r\n format = StringExtensions.replaceAll(format, \"FF\", \"F\");\r\n if ((milliseconds % 1000) / 100 >= 1) {\r\n format = StringExtensions.replaceAll(format, \"F\", \"f\");\r\n }\r\n format = StringExtensions.replaceAll(format, \"F\", \"\");\r\n if (format === \"\" || format === \"%\")\r\n return \"\";\r\n }\r\n format = processCustomDateTimeFormat(format);\r\n result = Globalize.format(value, format, culture);\r\n result = localize(result, culture.calendar);\r\n result = FormattingEncoder.restoreLiterals(result, literals);\r\n result = FormattingEncoder.restoreEscaped(result, \"\\\\dfFghHKmstyz:/%'\\\"\");\r\n return result;\r\n }\r\n\r\n /** Translates unsupported .NET custom format expressions to the custom expressions supported by JQuery.Globalize */\r\n function processCustomDateTimeFormat(format: string): string {\r\n if (format === _currentCachedFormat) {\r\n return _currentCachedProcessedFormat;\r\n }\r\n _currentCachedFormat = format;\r\n format = Formatting.fixDateTimeFormat(format);\r\n _currentCachedProcessedFormat = format;\r\n return format;\r\n }\r\n\r\n /** Localizes the time separator symbol */\r\n function localize(value: string, dictionary: any): string {\r\n let timeSeparator = dictionary[\":\"];\r\n if (timeSeparator === \":\") {\r\n return value;\r\n }\r\n let result = \"\";\r\n let count = value.length;\r\n for (let i = 0; i < count; i++) {\r\n let char = value.charAt(i);\r\n switch (char) {\r\n case \":\":\r\n result += timeSeparator;\r\n break;\r\n default:\r\n result += char;\r\n break;\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n function ensurePatterns(calendar: GlobalizeCalendar) {\r\n let patterns = calendar.patterns;\r\n if (patterns[\"g\"] === undefined) {\r\n patterns[\"g\"] = patterns[\"f\"].replace(patterns[\"D\"], patterns[\"d\"]); // Generic: Short date, short time\r\n patterns[\"G\"] = patterns[\"F\"].replace(patterns[\"D\"], patterns[\"d\"]); // Generic: Short date, long time\r\n }\r\n }\r\n\r\n }\r\n\r\n /**\r\n * NumberFormat module contains the static methods for formatting the numbers.\r\n * It extends the JQuery.Globalize functionality to support complete set of .NET\r\n * formatting expressions for numeric types including custom formats.\r\n */\r\n export module NumberFormat {\r\n\r\n const NonScientificFormatRegex = /^\\{.+\\}.*/;\r\n const NumericalPlaceHolderRegex = /\\{.+\\}/;\r\n const ScientificFormatRegex = /e[+-]*[0#]+/i;\r\n const StandardFormatRegex = /^[a-z]\\d{0,2}$/i; // a letter + up to 2 digits for precision specifier\r\n const TrailingZerosRegex = /0+$/;\r\n const DecimalFormatRegex = /\\.([0#]*)/g;\r\n const NumericFormatRegex = /[0#,\\.]+[0,#]*/g;\r\n const LastNumericPlaceholderRegex = /(0|#)([^(0|#)]*)$/;\r\n const DecimalFormatCharacter = '.';\r\n\r\n export const NumberFormatComponentsDelimeter = ';';\r\n\r\n export interface NumericFormatMetadata {\r\n format: string;\r\n hasEscapes: boolean;\r\n hasQuotes: boolean;\r\n hasE: boolean;\r\n hasCommas: boolean;\r\n hasDots: boolean;\r\n hasPercent: boolean;\r\n hasPermile: boolean;\r\n precision: number;\r\n scale: number;\r\n }\r\n\r\n export interface NumberFormatComponents {\r\n hasNegative: boolean;\r\n positive: string;\r\n negative: string;\r\n zero: string;\r\n }\r\n\r\n function getNonScientificFormatWithPrecision(baseFormat: string, numericFormat: string): string {\r\n if (!numericFormat || baseFormat === undefined)\r\n return baseFormat;\r\n\r\n let newFormat = \"{0:\" + numericFormat + \"}\";\r\n\r\n return baseFormat.replace(\"{0}\", newFormat);\r\n }\r\n\r\n export function getNumericFormat(value: number, baseFormat: string): string {\r\n if (baseFormat == null)\r\n return baseFormat;\r\n\r\n if (hasFormatComponents(baseFormat)) {\r\n let {positive, negative, zero} = NumberFormat.getComponents(baseFormat);\r\n\r\n if (value > 0)\r\n return getNumericFormatFromComponent(value, positive);\r\n else if (value === 0)\r\n return getNumericFormatFromComponent(value, zero);\r\n\r\n return getNumericFormatFromComponent(value, negative);\r\n }\r\n\r\n return getNumericFormatFromComponent(value, baseFormat);\r\n }\r\n\r\n function getNumericFormatFromComponent(value: number, format: string): string {\r\n let match = RegExpExtensions.run(NumericFormatRegex, format);\r\n if (match)\r\n return match[0];\r\n\r\n return format;\r\n }\r\n\r\n export function addDecimalsToFormat(baseFormat: string, decimals: number, trailingZeros: boolean): string {\r\n if (decimals == null)\r\n return baseFormat;\r\n\r\n // Default format string\r\n if (baseFormat == null)\r\n baseFormat = ZeroPlaceholder;\r\n\r\n if (hasFormatComponents(baseFormat)) {\r\n let {positive, negative, zero} = NumberFormat.getComponents(baseFormat);\r\n let formats = [positive, negative, zero];\r\n for (let i = 0; i < formats.length; i++) {\r\n // Update format in formats array\r\n formats[i] = addDecimalsToFormatComponent(formats[i], decimals, trailingZeros);\r\n }\r\n\r\n return formats.join(NumberFormat.NumberFormatComponentsDelimeter);\r\n }\r\n\r\n return addDecimalsToFormatComponent(baseFormat, decimals, trailingZeros);\r\n }\r\n\r\n function addDecimalsToFormatComponent(format: string, decimals: number, trailingZeros: boolean): string {\r\n decimals = Math.abs(decimals);\r\n\r\n if (decimals >= 0) {\r\n let placeholder = trailingZeros ? ZeroPlaceholder : DigitPlaceholder;\r\n let decimalPlaceholders = StringExtensions.repeat(placeholder, Math.abs(decimals));\r\n\r\n let match = RegExpExtensions.run(DecimalFormatRegex, format);\r\n if (match) {\r\n let beforeDecimal = format.substr(0, match.index);\r\n let formatDecimal = format.substr(match.index + 1, match[1].length);\r\n let afterDecimal = format.substr(match.index + match[0].length);\r\n\r\n if (trailingZeros)\r\n // Use explicit decimals argument as placeholders\r\n formatDecimal = decimalPlaceholders;\r\n else {\r\n let decimalChange = decimalPlaceholders.length - formatDecimal.length;\r\n if (decimalChange > 0)\r\n // Append decimalPlaceholders to existing decimal portion of format string\r\n formatDecimal = formatDecimal + decimalPlaceholders.slice(-decimalChange);\r\n else if (decimalChange < 0)\r\n // Remove decimals from formatDecimal\r\n formatDecimal = formatDecimal.slice(0, decimalChange);\r\n }\r\n\r\n if (formatDecimal.length > 0)\r\n formatDecimal = DecimalFormatCharacter + formatDecimal;\r\n\r\n return beforeDecimal + formatDecimal + afterDecimal;\r\n }\r\n else if (decimalPlaceholders.length > 0)\r\n // Replace last numeric placeholder with decimal portion\r\n return format.replace(LastNumericPlaceholderRegex, '$1' + DecimalFormatCharacter + decimalPlaceholders);\r\n }\r\n\r\n return format;\r\n }\r\n\r\n export function hasFormatComponents(format: string): boolean {\r\n return format.indexOf(NumberFormat.NumberFormatComponentsDelimeter) !== -1;\r\n }\r\n\r\n export function getComponents(format: string): NumberFormatComponents {\r\n let signFormat: NumberFormatComponents = {\r\n hasNegative: false,\r\n positive: format,\r\n negative: format,\r\n zero: format,\r\n };\r\n\r\n let signSpecificFormats = format.split(NumberFormatComponentsDelimeter);\r\n let formatCount = signSpecificFormats.length;\r\n debug.assert(!(formatCount > 3), 'format string should be of form positive[;negative;zero]');\r\n\r\n if (formatCount > 1) {\r\n signFormat.hasNegative = true;\r\n\r\n signFormat.positive = signFormat.zero = signSpecificFormats[0];\r\n signFormat.negative = signSpecificFormats[1];\r\n\r\n if (formatCount > 2)\r\n signFormat.zero = signSpecificFormats[2];\r\n }\r\n\r\n return signFormat;\r\n }\r\n\r\n let _lastCustomFormatMeta: NumericFormatMetadata;\r\n\r\n /** Evaluates if the value can be formatted using the NumberFormat */\r\n export function canFormat(value: any) {\r\n let result = typeof (value) === \"number\";\r\n return result;\r\n }\r\n\r\n export function isStandardFormat(format: string): boolean {\r\n debug.assertValue(format, 'format');\r\n return StandardFormatRegex.test(format);\r\n }\r\n\r\n /** Formats the number using specified format expression and culture */\r\n export function format(\r\n value: number,\r\n format: string,\r\n culture: Culture): string {\r\n format = format || \"G\";\r\n try {\r\n if (isStandardFormat(format))\r\n return formatNumberStandard(value, format, culture);\r\n\r\n return formatNumberCustom(value, format, culture);\r\n } catch (e) {\r\n return Globalize.format(value, undefined, culture);\r\n }\r\n }\r\n\r\n /** Performs a custom format with a value override. Typically used for custom formats showing scaled values. */\r\n export function formatWithCustomOverride(\r\n value: number,\r\n format: string,\r\n nonScientificOverrideFormat: string,\r\n culture: Culture): string {\r\n debug.assertValue(value, 'value');\r\n debug.assertValue(format, 'format');\r\n debug.assertValue(nonScientificOverrideFormat, 'nonScientificOverrideFormat');\r\n debug.assertValue(culture, 'culture');\r\n debug.assert(!isStandardFormat(format), 'Standard format');\r\n\r\n return formatNumberCustom(value, format, culture, nonScientificOverrideFormat);\r\n }\r\n\r\n /** Formats the number using standard format expression */\r\n function formatNumberStandard(value: number, format: string, culture: Culture): string {\r\n let result: string;\r\n let precision = <number>(format.length > 1 ? parseInt(format.substr(1, format.length - 1), 10) : undefined);\r\n let numberFormatInfo = culture.numberFormat;\r\n let formatChar = format.charAt(0);\r\n switch (formatChar) {\r\n case \"e\":\r\n case \"E\":\r\n if (precision === undefined) {\r\n precision = 6;\r\n }\r\n let mantissaDecimalDigits = StringExtensions.repeat(\"0\", precision);\r\n format = \"0.\" + mantissaDecimalDigits + formatChar + \"+000\";\r\n result = formatNumberCustom(value, format, culture);\r\n break;\r\n case \"f\":\r\n case \"F\":\r\n result = precision !== undefined ? value.toFixed(precision) : value.toFixed(numberFormatInfo.decimals);\r\n result = localize(result, numberFormatInfo);\r\n break;\r\n case \"g\":\r\n case \"G\":\r\n let abs = Math.abs(value);\r\n if (abs === 0 || (1E-4 <= abs && abs < 1E15)) {\r\n // For the range of 0.0001 to 1,000,000,000,000,000 - use the normal form\r\n result = precision !== undefined ? value.toPrecision(precision) : value.toString();\r\n } else {\r\n // Otherwise use exponential\r\n result = precision !== undefined ? value.toExponential(precision) : value.toExponential();\r\n result = result.replace(\"e\", \"E\");\r\n }\r\n result = localize(result, numberFormatInfo);\r\n break;\r\n case \"r\":\r\n case \"R\":\r\n result = value.toString();\r\n result = localize(result, numberFormatInfo);\r\n break;\r\n case \"x\":\r\n case \"X\":\r\n result = value.toString(16);\r\n if (formatChar === \"X\") {\r\n result = result.toUpperCase();\r\n }\r\n if (precision !== undefined) {\r\n let actualPrecision = result.length;\r\n let isNegative = value < 0;\r\n if (isNegative) {\r\n actualPrecision--;\r\n }\r\n let paddingZerosCount = precision - actualPrecision;\r\n let paddingZeros = undefined;\r\n if (paddingZerosCount > 0) {\r\n paddingZeros = StringExtensions.repeat(\"0\", paddingZerosCount);\r\n }\r\n if (isNegative) {\r\n result = \"-\" + paddingZeros + result.substr(1);\r\n } else {\r\n result = paddingZeros + result;\r\n }\r\n }\r\n result = localize(result, numberFormatInfo);\r\n break;\r\n default:\r\n result = Globalize.format(value, format, culture);\r\n }\r\n return result;\r\n }\r\n\r\n /** Formats the number using custom format expression */\r\n function formatNumberCustom(\r\n value: number,\r\n format: string,\r\n culture: Culture,\r\n nonScientificOverrideFormat?: string): string {\r\n let result: string;\r\n let numberFormatInfo = culture.numberFormat;\r\n if (isFinite(value)) {\r\n // Split format by positive[;negative;zero] pattern\r\n let formatComponents = getComponents(format);\r\n\r\n // Pick a format based on the sign of value\r\n if (value > 0) {\r\n format = formatComponents.positive;\r\n } else if (value === 0) {\r\n format = formatComponents.zero;\r\n } else {\r\n format = formatComponents.negative;\r\n }\r\n\r\n // Normalize value if we have an explicit negative format\r\n if (formatComponents.hasNegative)\r\n value = Math.abs(value);\r\n\r\n // Get format metadata\r\n let formatMeta = getCustomFormatMetadata(format, true /*calculatePrecision*/);\r\n\r\n // Preserve literals and escaped chars\r\n if (formatMeta.hasEscapes) {\r\n format = FormattingEncoder.preserveEscaped(format, \"\\\\0#.,%‰\");\r\n }\r\n let literals: string[] = [];\r\n if (formatMeta.hasQuotes) {\r\n format = FormattingEncoder.preserveLiterals(format, literals);\r\n }\r\n\r\n // Scientific format\r\n if (formatMeta.hasE && !nonScientificOverrideFormat) {\r\n let scientificMatch = RegExpExtensions.run(ScientificFormatRegex, format);\r\n if (scientificMatch) {\r\n // Case 2.1. Scientific custom format\r\n let formatM = format.substr(0, scientificMatch.index);\r\n let formatE = format.substr(scientificMatch.index + 2); // E(+|-)\r\n let precision = getCustomFormatPrecision(formatM, formatMeta);\r\n let scale = getCustomFormatScale(formatM, formatMeta);\r\n if (scale !== 1) {\r\n value = value * scale;\r\n }\r\n let s = value.toExponential(precision);\r\n let indexOfE = s.indexOf(\"e\");\r\n let mantissa = s.substr(0, indexOfE);\r\n let exp = s.substr(indexOfE + 1);\r\n let resultM = fuseNumberWithCustomFormat(mantissa, formatM, numberFormatInfo);\r\n let resultE = fuseNumberWithCustomFormat(exp, formatE, numberFormatInfo);\r\n if (resultE.charAt(0) === \"+\" && scientificMatch[0].charAt(1) !== \"+\") {\r\n resultE = resultE.substr(1);\r\n }\r\n let e = scientificMatch[0].charAt(0);\r\n result = resultM + e + resultE;\r\n }\r\n }\r\n\r\n // Non scientific format\r\n if (result === undefined) {\r\n let valueFormatted: string;\r\n let isValueGlobalized: boolean = false;\r\n let precision = getCustomFormatPrecision(format, formatMeta);\r\n let scale = getCustomFormatScale(format, formatMeta);\r\n\r\n if (scale !== 1)\r\n value = value * scale;\r\n\r\n // Rounding\r\n value = parseFloat(toNonScientific(value, precision));\r\n\r\n if (nonScientificOverrideFormat) {\r\n // Get numeric format from format string\r\n let numericFormat = NumberFormat.getNumericFormat(value, format);\r\n\r\n // Add separators and decimalFormat to nonScientificFormat\r\n nonScientificOverrideFormat = getNonScientificFormatWithPrecision(nonScientificOverrideFormat, numericFormat);\r\n\r\n // Format the value\r\n valueFormatted = formattingService.format(nonScientificOverrideFormat, [value], culture.name);\r\n isValueGlobalized = true;\r\n }\r\n else\r\n valueFormatted = toNonScientific(value, precision);\r\n\r\n result = fuseNumberWithCustomFormat(valueFormatted, format, numberFormatInfo, nonScientificOverrideFormat, isValueGlobalized);\r\n }\r\n if (formatMeta.hasQuotes) {\r\n result = FormattingEncoder.restoreLiterals(result, literals);\r\n }\r\n if (formatMeta.hasEscapes) {\r\n result = FormattingEncoder.restoreEscaped(result, \"\\\\0#.,%‰\");\r\n }\r\n\r\n _lastCustomFormatMeta = formatMeta;\r\n } else {\r\n return Globalize.format(value, undefined);\r\n }\r\n return result;\r\n }\r\n\r\n /** Returns string with the fixed point respresentation of the number */\r\n function toNonScientific(value: number, precision: number): string {\r\n let result = \"\";\r\n let precisionZeros = 0;\r\n // Double precision numbers support actual 15-16 decimal digits of precision.\r\n if (precision > 16) {\r\n precisionZeros = precision - 16;\r\n precision = 16;\r\n }\r\n let digitsBeforeDecimalPoint = Double.log10(Math.abs(value));\r\n if (digitsBeforeDecimalPoint < 16) {\r\n if (digitsBeforeDecimalPoint > 0) {\r\n let maxPrecision = 16 - digitsBeforeDecimalPoint;\r\n if (precision > maxPrecision) {\r\n precisionZeros += precision - maxPrecision;\r\n precision = maxPrecision;\r\n }\r\n }\r\n result = value.toFixed(precision);\r\n } else if (digitsBeforeDecimalPoint === 16) {\r\n result = value.toFixed(0);\r\n precisionZeros += precision;\r\n if (precisionZeros > 0) {\r\n result += \".\";\r\n }\r\n } else { // digitsBeforeDecimalPoint > 16\r\n // Different browsers have different implementations of the toFixed().\r\n // In IE it returns fixed format no matter what's the number. In FF and Chrome the method returns exponential format for numbers greater than 1E21.\r\n // So we need to check for range and convert the to exponential with the max precision.\r\n // Then we convert exponential string to fixed by removing the dot and padding with \"power\" zeros.\r\n result = value.toExponential(15);\r\n let indexOfE = result.indexOf(\"e\");\r\n if (indexOfE > 0) {\r\n let indexOfDot = result.indexOf(\".\");\r\n let mantissa = result.substr(0, indexOfE);\r\n let exp = result.substr(indexOfE + 1);\r\n let powerZeros = parseInt(exp, 10) - (mantissa.length - indexOfDot - 1);\r\n result = mantissa.replace(\".\", \"\") + StringExtensions.repeat(\"0\", powerZeros);\r\n if (precision > 0) {\r\n result = result + \".\" + StringExtensions.repeat(\"0\", precision);\r\n }\r\n }\r\n }\r\n if (precisionZeros > 0) {\r\n result = result + StringExtensions.repeat(\"0\", precisionZeros);\r\n }\r\n return result;\r\n }\r\n\r\n /**\r\n * Returns the formatMetadata of the format\r\n * When calculating precision and scale, if format string of\r\n * positive[;negative;zero] => positive format will be used\r\n * @param (required) format - format string\r\n * @param (optional) calculatePrecision - calculate precision of positive format\r\n * @param (optional) calculateScale - calculate scale of positive format\r\n */\r\n export function getCustomFormatMetadata(format: string, calculatePrecision?: boolean, calculateScale?: boolean): NumericFormatMetadata {\r\n if (_lastCustomFormatMeta !== undefined && format === _lastCustomFormatMeta.format) {\r\n return _lastCustomFormatMeta;\r\n }\r\n\r\n let result = {\r\n format: format,\r\n hasEscapes: false,\r\n hasQuotes: false,\r\n hasE: false,\r\n hasCommas: false,\r\n hasDots: false,\r\n hasPercent: false,\r\n hasPermile: false,\r\n precision: undefined,\r\n scale: undefined,\r\n };\r\n\r\n for (let i = 0, length = format.length; i < length; i++) {\r\n let c = format.charAt(i);\r\n switch (c) {\r\n case \"\\\\\":\r\n result.hasEscapes = true;\r\n break;\r\n case \"'\":\r\n case \"\\\"\":\r\n result.hasQuotes = true;\r\n break;\r\n case \"e\":\r\n case \"E\":\r\n result.hasE = true;\r\n break;\r\n case \",\":\r\n result.hasCommas = true;\r\n break;\r\n case \".\":\r\n result.hasDots = true;\r\n break;\r\n case \"%\":\r\n result.hasPercent = true;\r\n break;\r\n case \"‰\":\r\n result.hasPermile = true;\r\n break;\r\n }\r\n }\r\n\r\n // Use positive format for calculating these values\r\n let formatComponents = getComponents(format);\r\n\r\n if (calculatePrecision)\r\n result.precision = getCustomFormatPrecision(formatComponents.positive, result);\r\n if (calculateScale)\r\n result.scale = getCustomFormatScale(formatComponents.positive, result);\r\n\r\n return result;\r\n }\r\n\r\n /** Returns the decimal precision of format based on the number of # and 0 chars after the decimal point\r\n * Important: The input format string needs to be split to the appropriate pos/neg/zero portion to work correctly */\r\n function getCustomFormatPrecision(format: string, formatMeta: NumericFormatMetadata): number {\r\n if (formatMeta.precision > -1) {\r\n return formatMeta.precision;\r\n }\r\n let result = 0;\r\n if (formatMeta.hasDots) {\r\n let dotIndex = format.indexOf(\".\");\r\n if (dotIndex > -1) {\r\n let count = format.length;\r\n for (let i = dotIndex; i < count; i++) {\r\n let char = format.charAt(i);\r\n if (char.match(NumericPlaceholderRegex))\r\n result++;\r\n // 0.00E+0 :: Break before counting 0 in\r\n // exponential portion of format string\r\n if (char === ExponentialFormatChar)\r\n break;\r\n }\r\n result = Math.min(19, result);\r\n }\r\n }\r\n\r\n formatMeta.precision = result;\r\n return result;\r\n }\r\n\r\n /** Returns the scale factor of the format based on the \"%\" and scaling \",\" chars in the format */\r\n function getCustomFormatScale(format: string, formatMeta: NumericFormatMetadata): number {\r\n if (formatMeta.scale > -1) {\r\n return formatMeta.scale;\r\n }\r\n let result = 1;\r\n if (formatMeta.hasPercent && format.indexOf(\"%\") > -1) {\r\n result = result * 100;\r\n }\r\n if (formatMeta.hasPermile && format.indexOf(\"‰\") > -1) {\r\n result = result * 1000;\r\n }\r\n if (formatMeta.hasCommas) {\r\n let dotIndex = format.indexOf(\".\");\r\n if (dotIndex === -1) {\r\n dotIndex = format.length;\r\n }\r\n for (let i = dotIndex - 1; i > -1; i--) {\r\n let char = format.charAt(i);\r\n if (char === \",\") {\r\n result = result / 1000;\r\n } else {\r\n break;\r\n }\r\n }\r\n }\r\n formatMeta.scale = result;\r\n return result;\r\n }\r\n\r\n function fuseNumberWithCustomFormat(value: string, format: string, numberFormatInfo: GlobalizeNumberFormat, nonScientificOverrideFormat?: string, isValueGlobalized?: boolean): string {\r\n let suppressModifyValue = !!nonScientificOverrideFormat;\r\n let formatParts = format.split(\".\", 2);\r\n if (formatParts.length === 2) {\r\n let wholeFormat = formatParts[0];\r\n let fractionFormat = formatParts[1];\r\n let displayUnit = \"\";\r\n\r\n // Remove display unit from value before splitting on \".\" as localized display units sometimes end with \".\"\r\n if (nonScientificOverrideFormat) {\r\n debug.assert(NonScientificFormatRegex.test(nonScientificOverrideFormat), \"Number should always precede the display unit\");\r\n displayUnit = nonScientificOverrideFormat.replace(NumericalPlaceHolderRegex, \"\");\r\n value = value.replace(displayUnit, \"\");\r\n }\r\n\r\n let globalizedDecimalSeparator = numberFormatInfo[\".\"];\r\n let decimalSeparator = isValueGlobalized ? globalizedDecimalSeparator : \".\";\r\n let valueParts = value.split(decimalSeparator, 2);\r\n let wholeValue = valueParts.length === 1 ? valueParts[0] + displayUnit : valueParts[0];\r\n let fractionValue = valueParts.length === 2 ? valueParts[1] + displayUnit : \"\";\r\n fractionValue = fractionValue.replace(TrailingZerosRegex, \"\");\r\n\r\n let wholeFormattedValue = fuseNumberWithCustomFormatLeft(wholeValue, wholeFormat, numberFormatInfo, suppressModifyValue);\r\n let fractionFormattedValue = fuseNumberWithCustomFormatRight(fractionValue, fractionFormat, suppressModifyValue);\r\n\r\n if (fractionFormattedValue.fmtOnly || fractionFormattedValue.value === \"\")\r\n return wholeFormattedValue + fractionFormattedValue.value;\r\n\r\n return wholeFormattedValue + globalizedDecimalSeparator + fractionFormattedValue.value;\r\n }\r\n return fuseNumberWithCustomFormatLeft(value, format, numberFormatInfo, suppressModifyValue);\r\n }\r\n\r\n function fuseNumberWithCustomFormatLeft(value: string, format: string, numberFormatInfo: GlobalizeNumberFormat, suppressModifyValue?: boolean): string {\r\n let groupSymbolIndex = format.indexOf(\",\");\r\n let enableGroups = groupSymbolIndex > -1 && groupSymbolIndex < Math.max(format.lastIndexOf(\"0\"), format.lastIndexOf(\"#\")) && numberFormatInfo[\",\"];\r\n let groupDigitCount = 0;\r\n let groupIndex = 0;\r\n let groupSizes = numberFormatInfo.groupSizes || [3];\r\n let groupSize = groupSizes[0];\r\n let groupSeparator = numberFormatInfo[\",\"];\r\n let sign = \"\";\r\n let firstChar = value.charAt(0);\r\n if (firstChar === \"+\" || firstChar === \"-\") {\r\n sign = numberFormatInfo[firstChar];\r\n value = value.substr(1);\r\n }\r\n let isZero = value === \"0\";\r\n let result = \"\";\r\n let leftBuffer = \"\";\r\n let vi = value.length - 1;\r\n let fmtOnly = true;\r\n // Iterate through format chars and replace 0 and # with the digits from the value string\r\n for (let fi = format.length - 1; fi > -1; fi--) {\r\n let formatChar = format.charAt(fi);\r\n switch (formatChar) {\r\n case ZeroPlaceholder:\r\n case DigitPlaceholder:\r\n fmtOnly = false;\r\n if (leftBuffer !== \"\") {\r\n result = leftBuffer + result;\r\n leftBuffer = \"\";\r\n }\r\n if (!suppressModifyValue) {\r\n if (vi > -1 || formatChar === ZeroPlaceholder) {\r\n if (enableGroups) {\r\n // If the groups are enabled we'll need to keep track of the current group index and periodically insert group separator,\r\n if (groupDigitCount === groupSize) {\r\n result = groupSeparator + result;\r\n groupIndex++;\r\n if (groupIndex < groupSizes.length) {\r\n groupSize = groupSizes[groupIndex];\r\n }\r\n groupDigitCount = 1;\r\n } else {\r\n groupDigitCount++;\r\n }\r\n }\r\n }\r\n if (vi > -1) {\r\n if (isZero && formatChar === DigitPlaceholder) {\r\n // Special case - if we need to format a zero value and the # symbol is used - we don't copy it into the result)\r\n } else {\r\n result = value.charAt(vi) + result;\r\n }\r\n vi--;\r\n } else if (formatChar !== DigitPlaceholder) {\r\n result = formatChar + result;\r\n }\r\n }\r\n break;\r\n case \",\":\r\n // We should skip all the , chars\r\n break;\r\n default:\r\n leftBuffer = formatChar + leftBuffer;\r\n break;\r\n }\r\n }\r\n\r\n // If the value didn't fit into the number of zeros provided in the format then we should insert the missing part of the value into the result\r\n if (!suppressModifyValue) {\r\n if (vi > -1 && result !== \"\") {\r\n if (enableGroups) {\r\n while (vi > -1) {\r\n if (groupDigitCount === groupSize) {\r\n result = groupSeparator + result;\r\n groupIndex++;\r\n if (groupIndex < groupSizes.length) {\r\n groupSize = groupSizes[groupIndex];\r\n }\r\n groupDigitCount = 1;\r\n } else {\r\n groupDigitCount++;\r\n }\r\n result = value.charAt(vi) + result;\r\n vi--;\r\n }\r\n } else {\r\n result = value.substr(0, vi + 1) + result;\r\n }\r\n }\r\n // Insert sign in front of the leftBuffer and result\r\n return sign + leftBuffer + result;\r\n }\r\n\r\n if (fmtOnly)\r\n // If the format doesn't specify any digits to be displayed, then just return the format we've parsed up until now.\r\n return sign + leftBuffer + result;\r\n\r\n return sign + leftBuffer + value + result;\r\n }\r\n\r\n function fuseNumberWithCustomFormatRight(value: string, format: string, suppressModifyValue?: boolean): { value: string; fmtOnly?: boolean } {\r\n let vi = 0;\r\n let fCount = format.length;\r\n let vCount = value.length;\r\n\r\n if (suppressModifyValue) {\r\n debug.assert(fCount > 0, \"Empty formatting string\");\r\n\r\n let lastChar = format.charAt(fCount - 1);\r\n if (!lastChar.match(NumericPlaceholderRegex))\r\n return {\r\n value: value + lastChar,\r\n fmtOnly: value === \"\",\r\n };\r\n\r\n return {\r\n value: value,\r\n fmtOnly: value === \"\",\r\n };\r\n }\r\n\r\n let result = \"\",\r\n fmtOnly: boolean = true;\r\n for (let fi = 0; fi < fCount; fi++) {\r\n let formatChar = format.charAt(fi);\r\n if (vi < vCount) {\r\n switch (formatChar) {\r\n case ZeroPlaceholder:\r\n case DigitPlaceholder:\r\n result += value[vi++];\r\n fmtOnly = false;\r\n break;\r\n default:\r\n result += formatChar;\r\n }\r\n } else {\r\n if (formatChar !== DigitPlaceholder) {\r\n result += formatChar;\r\n fmtOnly = fmtOnly && (formatChar !== ZeroPlaceholder);\r\n }\r\n }\r\n }\r\n\r\n return {\r\n value: result,\r\n fmtOnly: fmtOnly,\r\n };\r\n }\r\n\r\n function localize(value: string, dictionary: any): string {\r\n let plus = dictionary[\"+\"];\r\n let minus = dictionary[\"-\"];\r\n let dot = dictionary[\".\"];\r\n let comma = dictionary[\",\"];\r\n if (plus === \"+\" && minus === \"-\" && dot === \".\" && comma === \",\") {\r\n return value;\r\n }\r\n let count = value.length;\r\n let result = \"\";\r\n for (let i = 0; i < count; i++) {\r\n let char = value.charAt(i);\r\n switch (char) {\r\n case \"+\":\r\n result = result + plus;\r\n break;\r\n case \"-\":\r\n result = result + minus;\r\n break;\r\n case \".\":\r\n result = result + dot;\r\n break;\r\n case \",\":\r\n result = result + comma;\r\n break;\r\n default:\r\n result = result + char;\r\n break;\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n }\r\n\r\n /** DateTimeScaleFormatInfo is used to calculate and keep the Date formats used for different units supported by the DateTimeScaleModel */\r\n class DateTimeScaleFormatInfo {\r\n\r\n // Fields\r\n public YearPattern: string;\r\n public MonthPattern: string;\r\n public DayPattern: string;\r\n public HourPattern: string;\r\n public MinutePattern: string;\r\n public SecondPattern: string;\r\n public MillisecondPattern: string;\r\n\r\n // Constructor\r\n /**\r\n * Creates new instance of the DateTimeScaleFormatInfo class.\r\n * @param culture - culture which calendar info is going to be used to derive the formats.\r\n */\r\n constructor(culture: Culture) {\r\n let calendar: Calendar = culture.calendar;\r\n let patterns: any = calendar.patterns;\r\n let monthAbbreviations: any = calendar[\"months\"][\"namesAbbr\"];\r\n let cultureHasMonthAbbr: boolean = monthAbbreviations && monthAbbreviations[0];\r\n let yearMonthPattern: string = patterns[\"Y\"];\r\n let monthDayPattern: string = patterns[\"M\"];\r\n let fullPattern: string = patterns[\"f\"];\r\n let longTimePattern: string = patterns[\"T\"];\r\n let shortTimePattern: string = patterns[\"t\"];\r\n let separator: string = fullPattern.indexOf(\",\") > -1 ? \", \" : \" \";\r\n\r\n let hasYearSymbol: boolean = yearMonthPattern.indexOf(\"yyyy'\") === 0 && yearMonthPattern.length > 6 && yearMonthPattern[6] === '\\'';\r\n this.YearPattern = hasYearSymbol ? yearMonthPattern.substr(0, 7) : \"yyyy\";\r\n\r\n let yearPos: number = fullPattern.indexOf(\"yy\");\r\n let monthPos: number = fullPattern.indexOf(\"MMMM\");\r\n this.MonthPattern = cultureHasMonthAbbr && monthPos > -1 ? (yearPos > monthPos ? \"MMM yyyy\" : \"yyyy MMM\") : yearMonthPattern;\r\n\r\n this.DayPattern = cultureHasMonthAbbr ? monthDayPattern.replace(\"MMMM\", \"MMM\") : monthDayPattern;\r\n\r\n let minutePos: number = fullPattern.indexOf(\"mm\");\r\n let pmPos: number = fullPattern.indexOf(\"tt\");\r\n let shortHourPattern: string = pmPos > -1 ? shortTimePattern.replace(\":mm \", \"\") : shortTimePattern;\r\n this.HourPattern = yearPos < minutePos ? this.DayPattern + separator + shortHourPattern : shortHourPattern + separator + this.DayPattern;\r\n\r\n this.MinutePattern = shortTimePattern;\r\n\r\n this.SecondPattern = longTimePattern;\r\n\r\n this.MillisecondPattern = longTimePattern.replace(\"ss\", \"ss.fff\");\r\n\r\n // Special cases\r\n switch (culture.name) {\r\n case \"fi-FI\":\r\n this.DayPattern = this.DayPattern.replace(\"'ta'\", \"\"); // Fix for finish 'ta' suffix for month names.\r\n this.HourPattern = this.HourPattern.replace(\"'ta'\", \"\");\r\n break;\r\n }\r\n }\r\n\r\n // Methods\r\n\r\n /**\r\n * Returns the format string of the provided DateTimeUnit.\r\n * @param unit - date or time unit\r\n */\r\n public getFormatString(unit: DateTimeUnit): string {\r\n switch (unit) {\r\n case DateTimeUnit.Year:\r\n return this.YearPattern;\r\n case DateTimeUnit.Month:\r\n return this.MonthPattern;\r\n case DateTimeUnit.Week:\r\n case DateTimeUnit.Day:\r\n return this.DayPattern;\r\n case DateTimeUnit.Hour:\r\n return this.HourPattern;\r\n case DateTimeUnit.Minute:\r\n return this.MinutePattern;\r\n case DateTimeUnit.Second:\r\n return this.SecondPattern;\r\n case DateTimeUnit.Millisecond:\r\n return this.MillisecondPattern;\r\n }\r\n\r\n debug.assertFail('Unexpected unit: ' + unit);\r\n }\r\n }\r\n\r\n export var formattingService: IFormattingService = new FormattingService();\r\n}\r\n","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../../_references.ts\"/>\r\n\r\nmodule powerbi.data {\r\n /** Serializes SQExpr in a form optimized in-memory comparison, but not intended for storage on disk. */\r\n export module SQExprShortSerializer {\r\n export function serialize(expr: SQExpr): string {\r\n return JSON.stringify(expr.accept(SQExprSerializer.instance));\r\n }\r\n\r\n export function serializeArray(exprs: SQExpr[]): string {\r\n let str = '[';\r\n for (let i = 0, len = exprs.length; i < len; i++) {\r\n if (i > 0)\r\n str += ',';\r\n str += SQExprShortSerializer.serialize(exprs[i]);\r\n }\r\n return str + ']';\r\n }\r\n\r\n /** Responsible for serializing an SQExpr into a comparable string. */\r\n class SQExprSerializer extends DefaultSQExprVisitor<{}> {\r\n public static instance: SQExprSerializer = new SQExprSerializer();\r\n\r\n public visitColumnRef(expr: SQColumnRefExpr): {} {\r\n return {\r\n col: {\r\n s: expr.source.accept(this),\r\n r: expr.ref,\r\n }\r\n };\r\n }\r\n\r\n public visitMeasureRef(expr: SQMeasureRefExpr): {} {\r\n return {\r\n measure: {\r\n s: expr.source.accept(this),\r\n r: expr.ref,\r\n }\r\n };\r\n }\r\n\r\n public visitAggr(expr: SQAggregationExpr): {} {\r\n return {\r\n agg: {\r\n a: expr.arg.accept(this),\r\n f: expr.func,\r\n }\r\n };\r\n }\r\n\r\n public visitEntity(expr: SQEntityExpr): {} {\r\n debug.assertValue(expr, 'expr');\r\n debug.assertValue(expr.entity, 'expr.entity');\r\n\r\n return {\r\n e: expr.entity\r\n };\r\n }\r\n\r\n public visitAnd(expr: SQAndExpr): {} {\r\n debug.assertValue(expr, 'expr');\r\n\r\n return {\r\n and: {\r\n l: expr.left.accept(this),\r\n r: expr.right.accept(this),\r\n }\r\n };\r\n }\r\n\r\n public visitCompare(expr: SQCompareExpr): {} {\r\n debug.assertValue(expr, 'expr');\r\n\r\n return {\r\n comp: {\r\n k: expr.kind,\r\n l: expr.left.accept(this),\r\n r: expr.right.accept(this),\r\n }\r\n };\r\n }\r\n\r\n public visitConstant(expr: SQConstantExpr): {} {\r\n debug.assertValue(expr, 'expr');\r\n\r\n return {\r\n const: {\r\n t: expr.type.primitiveType,\r\n v: expr.value,\r\n }\r\n };\r\n }\r\n\r\n public visitDefault(expr: SQExpr): {} {\r\n debug.assertFail('Unexpected expression type found in DataViewScopeIdentity.');\r\n\r\n return;\r\n }\r\n }\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"typedefs/typedefs.ts\"/>\r\n/// <reference path=\"typedefs/typedefs.obj.ts\"/>\r\n\r\n/// <reference path=\"semanticQuery\\sqExprVisitor.ts\"/>\r\n/// <reference path=\"types\\enumType.ts\"/>\r\n/// <reference path=\"types\\fill.ts\"/>\r\n/// <reference path=\"types\\fillRule.ts\"/>\r\n/// <reference path=\"types\\image.ts\"/>\r\n/// <reference path=\"types\\paragraphs.ts\"/>\r\n/// <reference path=\"types\\structuralType.ts\"/>\r\n/// <reference path=\"types\\valueType.ts\"/>\r\n/// <reference path=\"contracts\\conceptualSchema.ts\"/>\r\n/// <reference path=\"contracts\\dataShapeBinding.ts\"/>\r\n/// <reference path=\"contracts\\dataShapeBindingDataReduction.ts\"/>\r\n/// <reference path=\"contracts\\federatedConceptualSchema.ts\"/>\r\n/// <reference path=\"contracts\\selector.ts\"/>\r\n/// <reference path=\"contracts\\query.ts\"/>\r\n/// <reference path=\"contracts\\queryProjection.ts\"/>\r\n/// <reference path=\"contracts\\visualData.ts\"/>\r\n/// <reference path=\"dataView\\colorAllocator.ts\"/>\r\n/// <reference path=\"dataView\\compiledDataViewMapping.ts\"/>\r\n/// <reference path=\"dataView\\dataViewObjectDefinition.ts\"/>\r\n/// <reference path=\"dataView\\dataViewObjectDescriptor.ts\"/>\r\n/// <reference path=\"dataView\\dataViewObjectEvaluationUtils.ts\"/>\r\n/// <reference path=\"dataView\\dataViewObjectEvaluator.ts\"/>\r\n/// <reference path=\"dataView\\dataViewObject.ts\"/>\r\n/// <reference path=\"dataView\\dataViewPivotCategorical.ts\"/>\r\n/// <reference path=\"dataView\\dataViewPivotMatrix.ts\"/>\r\n/// <reference path=\"dataView\\dataViewSelfCrossJoin.ts\"/>\r\n/// <reference path=\"dataView\\dataViewPivotCategoricalToPrimaryGroups.ts\"/>\r\n/// <reference path=\"dataView\\dataViewTransform.ts\"/>\r\n/// <reference path=\"dataView\\dataViewNormalizeValues.ts\"/>\r\n/// <reference path=\"displayNameGetter.ts\"/>\r\n/// <reference path=\"dataReader/dataReader.ts\"/>\r\n/// <reference path=\"iFormattingService.ts\"/>\r\n/// <reference path=\"semanticQuery\\exprPatterns\\fieldExprPattern.ts\"/>\r\n/// <reference path=\"dataView\\dataViewAnalysis.ts\"/>\r\n/// <reference path=\"dataView\\dataViewScopeIdentity.ts\"/>\r\n/// <reference path=\"dataView\\dataViewScopeWildcard.ts\"/>\r\n/// <reference path=\"dataView\\dataViewSelfCrossJoin.ts\"/>\r\n/// <reference path=\"dataView\\dataViewTransform.ts\"/>\r\n/// <reference path=\"dataView\\rules\\evalContext.ts\"/>\r\n/// <reference path=\"dataView\\rules\\categoricalEvalContext.ts\"/>\r\n/// <reference path=\"dataView\\rules\\ruleEvaluation.ts\"/>\r\n/// <reference path=\"dataView\\rules\\colorRuleEvaluation.ts\"/>\r\n/// <reference path=\"dataView\\rules\\filterRuleEvaluation.ts\"/>\r\n/// <reference path=\"dataView\\scriptResultUtil.ts\"/>\r\n/// <reference path=\"segmentation\\dataViewMerger.ts\"/>\r\n/// <reference path=\"semanticQuery\\sqExprRewriter.ts\"/>\r\n/// <reference path=\"semanticQuery\\exprPatterns\\equalsToInRewriter.ts\"/>\r\n/// <reference path=\"semanticQuery\\exprPatterns\\filterScopeIdsCollector.ts\"/>\r\n/// <reference path=\"semanticQuery\\exprPatterns\\scopeIdentityExtractor.ts\"/>\r\n/// <reference path=\"semanticQuery\\primitiveValueEncoding.ts\"/>\r\n/// <reference path=\"semanticQuery\\sqHierarchyExprUtils.ts\"/>\r\n/// <reference path=\"semanticQuery\\sqExprGroupUtils.ts\"/>\r\n/// <reference path=\"semanticQuery\\sqExpr.ts\"/>\r\n/// <reference path=\"semanticQuery\\sqExprUtils.ts\"/>\r\n/// <reference path=\"semanticQuery\\semanticQueryRewriter.ts\"/>\r\n/// <reference path=\"semanticQuery\\semanticQuery.ts\"/>\r\n/// <reference path=\"dataView\\dataViewBuilder.ts\"/>\r\n/// <reference path=\"dataView\\rules\\staticEvalContext.ts\"/>\r\n/// <reference path=\"dataView\\rules\\matrixEvalContext.ts\"/>\r\n/// <reference path=\"services\\formattingService.ts\"/>\r\n/// <reference path=\"services\\serialization\\sqExprShortSerializer.ts\"/>\r\n\r\n","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n///<reference path=\"../../Typedefs/d3/d3.d.ts\"/>\r\n///<reference path=\"../../Typedefs/jquery-visible/jquery-visible.d.ts\"/>\r\n///<reference path=\"../../Typedefs/jquery/jquery.d.ts\"/>\r\n///<reference path=\"../../Typedefs/microsoftMaps/Microsoft.Maps.d.ts\" />\r\n///<reference path=\"../../Typedefs/moment/moment.d.ts\"/>\r\n///<reference path=\"../../Typedefs/velocity/velocity-animate.d.ts\"/>\r\n///<reference path=\"../../Typedefs/lodash/lodash.d.ts\"/>\r\n///<reference path=\"../../Typedefs/quill/quill.d.ts\"/>\r\n///<reference path=\"../../Typedefs/ie/ie.d.ts\"/>\r\n///<reference path=\"../../Typedefs/noUiSlider/noUiSlider.d.ts\"/>\r\n///<reference path=\"../../Typedefs/jquery.scrollbar/jquery.scrollbar.d.ts\"/>\r\n","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n///<reference path=\"../../VisualsContracts/obj/VisualsContracts.d.ts\"/>\r\n///<reference path=\"../../VisualsCommon/obj/VisualsCommon.d.ts\"/>\r\n///<reference path=\"../../VisualsData/obj/VisualsData.d.ts\"/>\r\n","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n export interface IPoint {\r\n x: number;\r\n y: number;\r\n }\r\n\r\n export class Point implements IPoint {\r\n public x: number;\r\n public y: number;\r\n\r\n constructor(x?: number, y?: number) {\r\n this.x = x || 0;\r\n this.y = y || 0;\r\n }\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n\r\n export class Rect implements IRect {\r\n // Fields\r\n public left: number;\r\n public top: number;\r\n public width: number;\r\n public height: number;\r\n\r\n // Constructor\r\n constructor(left?: number, top?: number, width?: number, height?: number) {\r\n this.left = left || 0;\r\n this.top = top || 0;\r\n this.width = width || 0;\r\n this.height = height || 0;\r\n }\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n import ClassAndSelector = jsCommon.CssConstants.ClassAndSelector;\r\n import createClassAndSelector = jsCommon.CssConstants.createClassAndSelector;\r\n import PixelConverter = jsCommon.PixelConverter;\r\n\r\n export enum LegendIcon {\r\n Box,\r\n Circle,\r\n Line\r\n }\r\n\r\n export enum LegendPosition {\r\n Top,\r\n Bottom,\r\n Right,\r\n Left,\r\n None,\r\n TopCenter,\r\n BottomCenter,\r\n RightCenter,\r\n LeftCenter, \r\n }\r\n\r\n export interface LegendPosition2D {\r\n textPosition?: Point;\r\n glyphPosition?: Point;\r\n }\r\n\r\n export interface LegendDataPoint extends SelectableDataPoint, LegendPosition2D {\r\n label: string;\r\n color: string;\r\n icon: LegendIcon;\r\n category?: string;\r\n measure?: any;\r\n iconOnlyOnLabel?: boolean;\r\n tooltip?: string;\r\n }\r\n\r\n export interface LegendData {\r\n title?: string;\r\n dataPoints: LegendDataPoint[];\r\n grouped?: boolean;\r\n labelColor?: string;\r\n fontSize?: number;\r\n }\r\n\r\n export const legendProps = {\r\n show: 'show',\r\n position: 'position',\r\n titleText: 'titleText',\r\n showTitle: 'showTitle',\r\n labelColor: 'labelColor',\r\n fontSize: 'fontSize',\r\n };\r\n\r\n export function createLegend(legendParentElement: JQuery,\r\n interactive: boolean,\r\n interactivityService: IInteractivityService,\r\n isScrollable: boolean = false,\r\n legendPosition: LegendPosition = LegendPosition.Top): ILegend {\r\n if (interactive) return new CartesianChartInteractiveLegend(legendParentElement);\r\n else return new SVGLegend(legendParentElement, legendPosition, interactivityService, isScrollable);\r\n }\r\n\r\n export interface ILegend {\r\n getMargins(): IViewport;\r\n\r\n isVisible(): boolean;\r\n changeOrientation(orientation: LegendPosition): void;\r\n getOrientation(): LegendPosition;\r\n drawLegend(data: LegendData, viewport: IViewport);\r\n /**\r\n * Reset the legend by clearing it\r\n */\r\n reset(): void;\r\n }\r\n\r\n export module Legend {\r\n export function isLeft(orientation: LegendPosition): boolean {\r\n switch (orientation) {\r\n case LegendPosition.Left:\r\n case LegendPosition.LeftCenter:\r\n return true;\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n export function isTop(orientation: LegendPosition): boolean {\r\n switch (orientation) {\r\n case LegendPosition.Top:\r\n case LegendPosition.TopCenter:\r\n return true;\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n export function positionChartArea(chartArea: D3.Selection, legend: ILegend): void {\r\n let legendMargins = legend.getMargins();\r\n let legendOrientation = legend.getOrientation();\r\n chartArea.style({\r\n 'left': Legend.isLeft(legendOrientation) ? legendMargins.width + 'px' : null,\r\n 'top': Legend.isTop(legendOrientation) ? legendMargins.height + 'px' : null,\r\n });\r\n }\r\n }\r\n\r\n interface TitleLayout {\r\n x: number;\r\n y: number;\r\n text: string;\r\n width: number;\r\n }\r\n\r\n const enum NavigationArrowType {\r\n Increase,\r\n Decrease\r\n }\r\n\r\n interface NavigationArrow {\r\n x: number;\r\n y: number;\r\n path: string;\r\n rotateTransform: string;\r\n type: NavigationArrowType;\r\n }\r\n\r\n interface LegendLayout {\r\n numberOfItems: number;\r\n title: TitleLayout;\r\n navigationArrows: NavigationArrow[];\r\n }\r\n\r\n export class SVGLegend implements ILegend {\r\n private orientation: LegendPosition;\r\n private viewport: IViewport;\r\n private parentViewport: IViewport;\r\n private svg: D3.Selection;\r\n private group: D3.Selection;\r\n private clearCatcher: D3.Selection;\r\n private element: JQuery;\r\n private interactivityService: IInteractivityService;\r\n private legendDataStartIndex = 0;\r\n private arrowPosWindow = 1;\r\n private data: LegendData;\r\n private isScrollable: boolean;\r\n\r\n private lastCalculatedWidth = 0;\r\n private visibleLegendWidth = 0;\r\n private visibleLegendHeight = 0;\r\n private legendFontSizeMarginDifference = 0;\r\n private legendFontSizeMarginValue = 0;\r\n\r\n public static DefaultFontSizeInPt = 8;\r\n private static LegendIconRadius = 5;\r\n private static MaxTextLength = 60;\r\n private static MaxTitleLength = 80;\r\n private static TextAndIconPadding = 5;\r\n private static TitlePadding = 15;\r\n private static LegendEdgeMariginWidth = 10;\r\n private static LegendMaxWidthFactor = 0.3;\r\n private static TopLegendHeight = 24;\r\n private static DefaultTextMargin = PixelConverter.fromPointToPixel(SVGLegend.DefaultFontSizeInPt);\r\n private static DefaultMaxLegendFactor = SVGLegend.MaxTitleLength / SVGLegend.DefaultTextMargin;\r\n \r\n // Navigation Arrow constants\r\n private static LegendArrowOffset = 10;\r\n private static LegendArrowHeight = 15;\r\n private static LegendArrowWidth = 7.5;\r\n private static LegendArrowTranslateY = 3.5;\r\n\r\n private static DefaultFontFamily = 'wf_segoe-ui_normal';\r\n private static DefaultTitleFontFamily = 'wf_segoe-ui_Semibold';\r\n\r\n private static LegendItem: ClassAndSelector = createClassAndSelector('legendItem');\r\n private static LegendText: ClassAndSelector = createClassAndSelector('legendText');\r\n private static LegendIcon: ClassAndSelector = createClassAndSelector('legendIcon');\r\n private static LegendTitle: ClassAndSelector = createClassAndSelector('legendTitle');\r\n private static NavigationArrow: ClassAndSelector = createClassAndSelector('navArrow');\r\n\r\n constructor(\r\n element: JQuery,\r\n legendPosition: LegendPosition,\r\n interactivityService: IInteractivityService,\r\n isScrollable: boolean) {\r\n\r\n this.svg = d3.select(element.get(0)).append('svg').style('position', 'absolute');\r\n this.svg.style('display', 'inherit');\r\n this.svg.classed('legend', true);\r\n if (interactivityService)\r\n this.clearCatcher = appendClearCatcher(this.svg);\r\n this.group = this.svg.append('g').attr('id', 'legendGroup');\r\n this.interactivityService = interactivityService;\r\n this.isScrollable = isScrollable;\r\n this.element = element;\r\n this.changeOrientation(legendPosition);\r\n this.parentViewport = { height: 0, width: 0 };\r\n this.calculateViewport();\r\n this.updateLayout();\r\n }\r\n\r\n private updateLayout() {\r\n let legendViewport = this.viewport;\r\n let orientation = this.orientation;\r\n this.svg.attr({\r\n 'height': legendViewport.height || (orientation === LegendPosition.None ? 0 : this.parentViewport.height),\r\n 'width': legendViewport.width || (orientation === LegendPosition.None ? 0 : this.parentViewport.width)\r\n });\r\n\r\n let isRight = orientation === LegendPosition.Right || orientation === LegendPosition.RightCenter;\r\n let isBottom = orientation === LegendPosition.Bottom || orientation === LegendPosition.BottomCenter;\r\n this.svg.style({\r\n 'left': isRight ? (this.parentViewport.width - legendViewport.width) + 'px' : null,\r\n 'top': isBottom ? (this.parentViewport.height - legendViewport.height) + 'px' : null,\r\n });\r\n }\r\n\r\n private calculateViewport(): void {\r\n switch (this.orientation) {\r\n case LegendPosition.Top:\r\n case LegendPosition.Bottom:\r\n case LegendPosition.TopCenter:\r\n case LegendPosition.BottomCenter:\r\n let pixelHeight = PixelConverter.fromPointToPixel(this.data && this.data.fontSize ? this.data.fontSize : SVGLegend.DefaultFontSizeInPt);\r\n let fontHeightSize = SVGLegend.TopLegendHeight + (pixelHeight - SVGLegend.DefaultFontSizeInPt);\r\n this.viewport = { height: fontHeightSize, width: 0 };\r\n return;\r\n case LegendPosition.Right:\r\n case LegendPosition.Left:\r\n case LegendPosition.RightCenter:\r\n case LegendPosition.LeftCenter:\r\n let width = this.lastCalculatedWidth ? this.lastCalculatedWidth : this.parentViewport.width * SVGLegend.LegendMaxWidthFactor;\r\n this.viewport = { height: 0, width: width };\r\n return;\r\n\r\n case LegendPosition.None:\r\n this.viewport = { height: 0, width: 0 };\r\n }\r\n }\r\n\r\n public getMargins(): IViewport {\r\n return this.viewport;\r\n }\r\n\r\n public isVisible(): boolean {\r\n return this.orientation !== LegendPosition.None;\r\n }\r\n\r\n public changeOrientation(orientation: LegendPosition): void {\r\n if (orientation) {\r\n this.orientation = orientation;\r\n } else {\r\n this.orientation = LegendPosition.Top;\r\n }\r\n this.svg.attr('orientation', orientation);\r\n }\r\n\r\n public getOrientation(): LegendPosition {\r\n return this.orientation;\r\n }\r\n\r\n public drawLegend(data: LegendData, viewport: IViewport): void {\r\n // clone because we modify legend item label with ellipsis if it is truncated\r\n let clonedData = Prototype.inherit(data);\r\n let newDataPoints: LegendDataPoint[] = [];\r\n for (let dp of data.dataPoints) {\r\n newDataPoints.push(Prototype.inherit(dp));\r\n }\r\n clonedData.dataPoints = newDataPoints;\r\n\r\n this.setTooltipToLegendItems(clonedData);\r\n this.drawLegendInternal(clonedData, viewport, true /* perform auto width */);\r\n }\r\n\r\n public drawLegendInternal(data: LegendData, viewport: IViewport, autoWidth: boolean): void {\r\n this.parentViewport = viewport;\r\n this.data = data;\r\n\r\n if (this.interactivityService)\r\n this.interactivityService.applySelectionStateToData(data.dataPoints);\r\n\r\n if (data.dataPoints.length === 0) {\r\n this.changeOrientation(LegendPosition.None);\r\n }\r\n\r\n if (this.getOrientation() === LegendPosition.None) {\r\n data.dataPoints = [];\r\n }\r\n\r\n // Adding back the workaround for Legend Left/Right position for Map\r\n let mapControl = this.element.children(\".mapControl\");\r\n if (mapControl.length > 0 && !this.isTopOrBottom(this.orientation)) {\r\n mapControl.css(\"display\", \"inline-block\");\r\n }\r\n\r\n this.calculateViewport();\r\n\r\n let layout = this.calculateLayout(data, autoWidth);\r\n let titleLayout = layout.title;\r\n let titleData = titleLayout ? [titleLayout] : [];\r\n let hasSelection = this.interactivityService && powerbi.visuals.dataHasSelection(data.dataPoints);\r\n\r\n let group = this.group;\r\n\r\n //transform the wrapping group if position is centered\r\n if (this.isCentered(this.orientation)) {\r\n let centerOffset = 0;\r\n if (this.isTopOrBottom(this.orientation)) {\r\n centerOffset = Math.max(0, (this.parentViewport.width - this.visibleLegendWidth) / 2);\r\n group.attr('transform', SVGUtil.translate(centerOffset, 0));\r\n }\r\n else {\r\n centerOffset = Math.max((this.parentViewport.height - this.visibleLegendHeight) / 2);\r\n group.attr('transform', SVGUtil.translate(0, centerOffset));\r\n }\r\n }\r\n else {\r\n group.attr('transform', null);\r\n }\r\n\r\n let legendTitle = group\r\n .selectAll(SVGLegend.LegendTitle.selector)\r\n .data(titleData);\r\n\r\n legendTitle.enter()\r\n .append('text')\r\n .classed(SVGLegend.LegendTitle.class, true);\r\n\r\n legendTitle\r\n .style({\r\n 'fill': data.labelColor,\r\n 'font-size': PixelConverter.fromPoint(data.fontSize),\r\n 'font-family': SVGLegend.DefaultTitleFontFamily\r\n })\r\n .text((d: TitleLayout) => d.text)\r\n .attr({\r\n 'x': (d: TitleLayout) => d.x,\r\n 'y': (d: TitleLayout) => d.y\r\n })\r\n .append('title').text(data.title);\r\n\r\n legendTitle.exit().remove();\r\n\r\n let virtualizedDataPoints = data.dataPoints.slice(this.legendDataStartIndex, this.legendDataStartIndex + layout.numberOfItems);\r\n\r\n let legendItems = group\r\n .selectAll(SVGLegend.LegendItem.selector)\r\n .data(virtualizedDataPoints, (d: LegendDataPoint) => d.identity.getKey());\r\n\r\n let itemsEnter = legendItems.enter()\r\n .append('g')\r\n .classed(SVGLegend.LegendItem.class, true);\r\n\r\n itemsEnter\r\n .append('circle')\r\n .classed(SVGLegend.LegendIcon.class, true);\r\n\r\n itemsEnter\r\n .append('text')\r\n .classed(SVGLegend.LegendText.class, true);\r\n\r\n itemsEnter\r\n .append('title')\r\n .text((d: LegendDataPoint) => d.tooltip);\r\n\r\n itemsEnter\r\n .style({\r\n 'font-family': SVGLegend.DefaultFontFamily\r\n });\r\n\r\n legendItems\r\n .select(SVGLegend.LegendIcon.selector)\r\n .attr({\r\n 'cx': (d: LegendDataPoint, i) => d.glyphPosition.x,\r\n 'cy': (d: LegendDataPoint) => d.glyphPosition.y,\r\n 'r': SVGLegend.LegendIconRadius,\r\n })\r\n .style({\r\n 'fill': (d: LegendDataPoint) => {\r\n if (hasSelection && !d.selected)\r\n return LegendBehavior.dimmedLegendColor;\r\n else\r\n return d.color;\r\n }\r\n });\r\n\r\n legendItems\r\n .select('title')\r\n .text((d: LegendDataPoint) => d.tooltip);\r\n\r\n legendItems\r\n .select(SVGLegend.LegendText.selector)\r\n .attr({\r\n 'x': (d: LegendDataPoint) => d.textPosition.x,\r\n 'y': (d: LegendDataPoint) => d.textPosition.y,\r\n })\r\n .text((d: LegendDataPoint) => d.label)\r\n .style('fill', data.labelColor)\r\n .style('font-size', PixelConverter.fromPoint(data.fontSize));\r\n\r\n if (this.interactivityService) {\r\n let iconsSelection = legendItems.select(SVGLegend.LegendIcon.selector);\r\n let behaviorOptions: LegendBehaviorOptions = {\r\n legendItems: legendItems,\r\n legendIcons: iconsSelection,\r\n clearCatcher: this.clearCatcher,\r\n };\r\n\r\n this.interactivityService.bind(data.dataPoints, new LegendBehavior(), behaviorOptions, { isLegend: true });\r\n }\r\n\r\n legendItems.exit().remove();\r\n\r\n this.drawNavigationArrows(layout.navigationArrows);\r\n\r\n this.updateLayout();\r\n }\r\n\r\n private normalizePosition(points: any[]): void {\r\n if (this.legendDataStartIndex >= points.length) {\r\n this.legendDataStartIndex = points.length - 1;\r\n }\r\n\r\n if (this.legendDataStartIndex < 0) {\r\n this.legendDataStartIndex = 0;\r\n }\r\n }\r\n\r\n private calculateTitleLayout(title: string): TitleLayout {\r\n let width = 0;\r\n let hasTitle = !_.isEmpty(title);\r\n\r\n if (hasTitle) {\r\n let isHorizontal = this.isTopOrBottom(this.orientation);\r\n let maxMeasureLength: number;\r\n\r\n if (isHorizontal) {\r\n let fontSizeMargin = this.legendFontSizeMarginValue > SVGLegend.DefaultTextMargin ? SVGLegend.TextAndIconPadding + this.legendFontSizeMarginDifference : SVGLegend.TextAndIconPadding;\r\n let fixedHorizontalIconShift = SVGLegend.TextAndIconPadding + SVGLegend.LegendIconRadius;\r\n let fixedHorizontalTextShift = SVGLegend.LegendIconRadius + fontSizeMargin + fixedHorizontalIconShift;\r\n maxMeasureLength = this.parentViewport.width * SVGLegend.LegendMaxWidthFactor - fixedHorizontalTextShift - SVGLegend.LegendEdgeMariginWidth;\r\n }\r\n else {\r\n maxMeasureLength = this.legendFontSizeMarginValue < SVGLegend.DefaultTextMargin ? SVGLegend.MaxTitleLength :\r\n SVGLegend.MaxTitleLength + (SVGLegend.DefaultMaxLegendFactor * this.legendFontSizeMarginDifference);\r\n }\r\n\r\n let textProperties = SVGLegend.getTextProperties(true, title, this.data.fontSize);\r\n let text = title;\r\n width = TextMeasurementService.measureSvgTextWidth(textProperties);\r\n\r\n if (width > maxMeasureLength) {\r\n text = TextMeasurementService.getTailoredTextOrDefault(textProperties, maxMeasureLength);\r\n width = maxMeasureLength;\r\n };\r\n\r\n if (isHorizontal)\r\n width += SVGLegend.TitlePadding;\r\n\r\n return {\r\n x: 0,\r\n y: 0,\r\n text: text,\r\n width: width,\r\n };\r\n }\r\n return null;\r\n\r\n }\r\n /** Performs layout offline for optimal perfomance */\r\n private calculateLayout(data: LegendData, autoWidth: boolean): LegendLayout {\r\n let dataPoints = data.dataPoints;\r\n if (data.dataPoints.length === 0) {\r\n return {\r\n startIndex: null,\r\n numberOfItems: 0,\r\n title: null,\r\n navigationArrows: []\r\n };\r\n }\r\n\r\n this.legendFontSizeMarginValue = PixelConverter.fromPointToPixel(this.data && this.data.fontSize !== undefined ? this.data.fontSize : SVGLegend.DefaultFontSizeInPt);\r\n this.legendFontSizeMarginDifference = (this.legendFontSizeMarginValue - SVGLegend.DefaultTextMargin);\r\n\r\n this.normalizePosition(dataPoints);\r\n if (this.legendDataStartIndex < dataPoints.length) {\r\n dataPoints = dataPoints.slice(this.legendDataStartIndex);\r\n }\r\n\r\n let title = this.calculateTitleLayout(data.title);\r\n\r\n let navArrows: NavigationArrow[];\r\n let numberOfItems: number;\r\n if (this.isTopOrBottom(this.orientation)) {\r\n navArrows = this.isScrollable ? this.calculateHorizontalNavigationArrowsLayout(title) : [];\r\n numberOfItems = this.calculateHorizontalLayout(dataPoints, title, navArrows);\r\n }\r\n else {\r\n navArrows = this.isScrollable ? this.calculateVerticalNavigationArrowsLayout(title) : [];\r\n numberOfItems = this.calculateVerticalLayout(dataPoints, title, navArrows, autoWidth);\r\n }\r\n return {\r\n numberOfItems: numberOfItems,\r\n title: title,\r\n navigationArrows: navArrows\r\n };\r\n }\r\n\r\n private updateNavigationArrowLayout(navigationArrows: NavigationArrow[], remainingDataLength, visibleDataLength) {\r\n if (this.legendDataStartIndex === 0) {\r\n navigationArrows.shift();\r\n }\r\n\r\n let lastWindow = this.arrowPosWindow;\r\n this.arrowPosWindow = visibleDataLength;\r\n\r\n if (navigationArrows && navigationArrows.length > 0 && this.arrowPosWindow === remainingDataLength) {\r\n this.arrowPosWindow = lastWindow;\r\n navigationArrows.length = navigationArrows.length - 1;\r\n }\r\n }\r\n\r\n private calculateHorizontalNavigationArrowsLayout(title: TitleLayout): NavigationArrow[] {\r\n let height = SVGLegend.LegendArrowHeight;\r\n let width = SVGLegend.LegendArrowWidth;\r\n let translateY = SVGLegend.LegendArrowTranslateY;\r\n\r\n let data: NavigationArrow[] = [];\r\n let rightShift = title ? title.x + title.width : 0;\r\n let arrowLeft = SVGUtil.createArrow(width, height, 180 /*angle*/);\r\n let arrowRight = SVGUtil.createArrow(width, height, 0 /*angle*/);\r\n\r\n data.push({\r\n x: rightShift,\r\n y: translateY,\r\n path: arrowLeft.path,\r\n rotateTransform: arrowLeft.transform,\r\n type: NavigationArrowType.Decrease\r\n });\r\n\r\n data.push({\r\n x: this.parentViewport.width - width,\r\n y: translateY,\r\n path: arrowRight.path,\r\n rotateTransform: arrowRight.transform,\r\n type: NavigationArrowType.Increase\r\n });\r\n\r\n return data;\r\n }\r\n\r\n private calculateVerticalNavigationArrowsLayout(title: TitleLayout): NavigationArrow[] {\r\n let height = SVGLegend.LegendArrowHeight;\r\n let width = SVGLegend.LegendArrowWidth;\r\n\r\n let data: NavigationArrow[] = [];\r\n let rightShift = 40;\r\n let arrowTop = SVGUtil.createArrow(width, height, 270 /*angle*/);\r\n let arrowBottom = SVGUtil.createArrow(width, height, 90 /*angle*/);\r\n\r\n data.push({\r\n x: rightShift,\r\n y: height + SVGLegend.LegendArrowOffset / 2,\r\n path: arrowTop.path,\r\n rotateTransform: arrowTop.transform,\r\n type: NavigationArrowType.Decrease\r\n });\r\n\r\n data.push({\r\n x: rightShift,\r\n y: this.parentViewport.height - height,\r\n path: arrowBottom.path,\r\n rotateTransform: arrowBottom.transform,\r\n type: NavigationArrowType.Increase\r\n });\r\n\r\n return data;\r\n }\r\n\r\n private calculateHorizontalLayout(dataPoints: LegendDataPoint[], title: TitleLayout, navigationArrows: NavigationArrow[]): number {\r\n debug.assertValue(navigationArrows, 'navigationArrows');\r\n let HorizontalTextShift = 4;\r\n let HorizontalIconShift = 11;\r\n let fontSizeBiggerThenDefault = this.legendFontSizeMarginDifference > 0;\r\n let fontSizeMargin = fontSizeBiggerThenDefault ? SVGLegend.TextAndIconPadding + this.legendFontSizeMarginDifference : SVGLegend.TextAndIconPadding;\r\n let fixedTextShift = SVGLegend.LegendIconRadius + fontSizeMargin + HorizontalTextShift;\r\n let fixedIconShift = HorizontalIconShift + (fontSizeBiggerThenDefault ? this.legendFontSizeMarginDifference : 0);\r\n let totalSpaceOccupiedThusFar = 0;\r\n let iconTotalItemPadding = SVGLegend.LegendIconRadius * 2 + fontSizeMargin * 3;\r\n let numberOfItems: number = dataPoints.length;\r\n\r\n if (title) {\r\n totalSpaceOccupiedThusFar = title.width;\r\n title.y = fixedTextShift;\r\n }\r\n\r\n if (this.legendDataStartIndex > 0) {\r\n totalSpaceOccupiedThusFar += SVGLegend.LegendArrowOffset;\r\n }\r\n\r\n // This bit expands the max lengh if there are only a few items\r\n // so longer labels can potentially get more space, and not be\r\n // ellipsed. \r\n let dataPointsLength = dataPoints.length;\r\n let parentWidth = this.parentViewport.width;\r\n let maxTextLength = dataPointsLength > 0\r\n ? (((parentWidth - totalSpaceOccupiedThusFar) - (iconTotalItemPadding * dataPointsLength)) / dataPointsLength) | 0\r\n : 0;\r\n maxTextLength = maxTextLength > SVGLegend.MaxTextLength ? maxTextLength : SVGLegend.MaxTextLength;\r\n\r\n for (let i = 0; i < dataPointsLength; i++) {\r\n let dp = dataPoints[i];\r\n\r\n dp.glyphPosition = {\r\n x: totalSpaceOccupiedThusFar + SVGLegend.LegendIconRadius,\r\n y: fixedIconShift\r\n };\r\n\r\n dp.textPosition = {\r\n x: totalSpaceOccupiedThusFar + fixedTextShift,\r\n y: fixedTextShift\r\n };\r\n\r\n let textProperties = SVGLegend.getTextProperties(false, dp.label, this.data.fontSize);\r\n\r\n let width = TextMeasurementService.measureSvgTextWidth(textProperties);\r\n let spaceTakenByItem = 0;\r\n if (width < maxTextLength) {\r\n spaceTakenByItem = iconTotalItemPadding + width;\r\n } else {\r\n let text = TextMeasurementService.getTailoredTextOrDefault(\r\n textProperties,\r\n maxTextLength);\r\n dp.label = text;\r\n spaceTakenByItem = iconTotalItemPadding + maxTextLength;\r\n }\r\n\r\n totalSpaceOccupiedThusFar += spaceTakenByItem;\r\n\r\n if (totalSpaceOccupiedThusFar > parentWidth) {\r\n numberOfItems = i;\r\n break;\r\n }\r\n }\r\n\r\n this.visibleLegendWidth = totalSpaceOccupiedThusFar;\r\n\r\n this.updateNavigationArrowLayout(navigationArrows, dataPointsLength, numberOfItems);\r\n\r\n return numberOfItems;\r\n }\r\n\r\n private calculateVerticalLayout(\r\n dataPoints: LegendDataPoint[],\r\n title: TitleLayout,\r\n navigationArrows: NavigationArrow[],\r\n autoWidth: boolean): number {\r\n let fontSizeBiggerThenDefault = this.legendFontSizeMarginDifference > 0;\r\n let fontFactor = fontSizeBiggerThenDefault ? this.legendFontSizeMarginDifference : 0;\r\n let verticalLegendHeight = 20 + fontFactor;\r\n let spaceNeededByTitle = 15 + (fontFactor * 1.3);\r\n let totalSpaceOccupiedThusFar = verticalLegendHeight;\r\n let extraShiftForTextAlignmentToIcon = 4 + (fontFactor * 1.3);\r\n let fixedHorizontalIconShift = SVGLegend.TextAndIconPadding + SVGLegend.LegendIconRadius;\r\n let fixedHorizontalTextShift = SVGLegend.LegendIconRadius + SVGLegend.TextAndIconPadding + fixedHorizontalIconShift;\r\n let maxHorizontalSpaceAvaliable = autoWidth\r\n ? this.parentViewport.width * SVGLegend.LegendMaxWidthFactor\r\n - fixedHorizontalTextShift - SVGLegend.LegendEdgeMariginWidth\r\n : this.lastCalculatedWidth\r\n - fixedHorizontalTextShift - SVGLegend.LegendEdgeMariginWidth;\r\n let numberOfItems: number = dataPoints.length;\r\n\r\n let maxHorizontalSpaceUsed = 0;\r\n let parentHeight = this.parentViewport.height;\r\n\r\n if (title) {\r\n totalSpaceOccupiedThusFar += spaceNeededByTitle;\r\n title.x = SVGLegend.TextAndIconPadding;\r\n title.y = spaceNeededByTitle;\r\n maxHorizontalSpaceUsed = title.width || 0;\r\n }\r\n\r\n if (this.legendDataStartIndex > 0)\r\n totalSpaceOccupiedThusFar += SVGLegend.LegendArrowOffset;\r\n\r\n let dataPointsLength = dataPoints.length;\r\n for (let i = 0; i < dataPointsLength; i++) {\r\n let dp = dataPoints[i];\r\n\r\n dp.glyphPosition = {\r\n x: fixedHorizontalIconShift,\r\n y: totalSpaceOccupiedThusFar + fontFactor\r\n };\r\n\r\n dp.textPosition = {\r\n x: fixedHorizontalTextShift,\r\n y: totalSpaceOccupiedThusFar + extraShiftForTextAlignmentToIcon\r\n };\r\n\r\n let textProperties = SVGLegend.getTextProperties(false, dp.label, this.data.fontSize);\r\n\r\n // TODO: [PERF] Get rid of this extra measurement, and modify\r\n // getTailoredTextToReturnWidth + Text\r\n let width = TextMeasurementService.measureSvgTextWidth(textProperties);\r\n if (width > maxHorizontalSpaceUsed) {\r\n maxHorizontalSpaceUsed = width;\r\n }\r\n\r\n if (width > maxHorizontalSpaceAvaliable) {\r\n let text = TextMeasurementService.getTailoredTextOrDefault(\r\n textProperties,\r\n maxHorizontalSpaceAvaliable);\r\n dp.label = text;\r\n }\r\n\r\n totalSpaceOccupiedThusFar += verticalLegendHeight;\r\n\r\n if (totalSpaceOccupiedThusFar > parentHeight) {\r\n numberOfItems = i;\r\n break;\r\n }\r\n }\r\n\r\n if (autoWidth) {\r\n if (maxHorizontalSpaceUsed < maxHorizontalSpaceAvaliable) {\r\n this.lastCalculatedWidth = this.viewport.width = Math.ceil(maxHorizontalSpaceUsed + fixedHorizontalTextShift + SVGLegend.LegendEdgeMariginWidth);\r\n } else {\r\n this.lastCalculatedWidth = this.viewport.width = Math.ceil(this.parentViewport.width * SVGLegend.LegendMaxWidthFactor);\r\n }\r\n }\r\n else {\r\n this.viewport.width = this.lastCalculatedWidth;\r\n }\r\n\r\n this.visibleLegendHeight = totalSpaceOccupiedThusFar;\r\n\r\n navigationArrows.forEach(d => d.x = this.lastCalculatedWidth / 2);\r\n this.updateNavigationArrowLayout(navigationArrows, dataPointsLength, numberOfItems);\r\n\r\n return numberOfItems;\r\n }\r\n\r\n private drawNavigationArrows(layout: NavigationArrow[]) {\r\n let arrows = this.group.selectAll(SVGLegend.NavigationArrow.selector)\r\n .data(layout);\r\n\r\n arrows\r\n .enter()\r\n .append('g')\r\n .on('click', (d: NavigationArrow) => {\r\n let pos = this.legendDataStartIndex;\r\n this.legendDataStartIndex = d.type === NavigationArrowType.Increase\r\n ? pos + this.arrowPosWindow : pos - this.arrowPosWindow;\r\n this.drawLegendInternal(this.data, this.parentViewport, false);\r\n })\r\n .classed(SVGLegend.NavigationArrow.class, true)\r\n .append('path');\r\n\r\n arrows\r\n .attr('transform', (d: NavigationArrow) => SVGUtil.translate(d.x, d.y))\r\n .select('path')\r\n .attr({\r\n 'd': (d: NavigationArrow) => d.path,\r\n 'transform': (d: NavigationArrow) => d.rotateTransform\r\n });\r\n\r\n arrows.exit().remove();\r\n }\r\n\r\n private isTopOrBottom(orientation: LegendPosition) {\r\n switch (orientation) {\r\n case LegendPosition.Top:\r\n case LegendPosition.Bottom:\r\n case LegendPosition.BottomCenter:\r\n case LegendPosition.TopCenter:\r\n return true;\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n private isCentered(orientation: LegendPosition): boolean {\r\n switch (orientation) {\r\n case LegendPosition.BottomCenter:\r\n case LegendPosition.LeftCenter:\r\n case LegendPosition.RightCenter:\r\n case LegendPosition.TopCenter:\r\n return true;\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n public reset(): void {\r\n // Intentionally left blank. \r\n }\r\n\r\n private static getTextProperties(isTitle: boolean, text?: string, fontSize?: number): TextProperties {\r\n return {\r\n text: text,\r\n fontFamily: isTitle ? SVGLegend.DefaultTitleFontFamily : SVGLegend.DefaultFontFamily,\r\n fontSize: PixelConverter.fromPoint(fontSize || SVGLegend.DefaultFontSizeInPt)\r\n };\r\n }\r\n\r\n private setTooltipToLegendItems(data: LegendData) {\r\n //we save the values to tooltip before cut\r\n for (let dataPoint of data.dataPoints) {\r\n dataPoint.tooltip = dataPoint.label;\r\n }\r\n }\r\n }\r\n\r\n class CartesianChartInteractiveLegend implements ILegend {\r\n private static LegendHeight = 70;\r\n private static LegendContainerClass = 'interactive-legend';\r\n private static LegendContainerSelector = '.interactive-legend';\r\n private static LegendTitleClass = 'title';\r\n private static LegendItem = 'item';\r\n private static legendPlaceSelector = '\\u25A0';\r\n private static legendIconClass = 'icon';\r\n private static legendColorCss = 'color';\r\n private static legendItemNameClass = 'itemName';\r\n private static legendItemMeasureClass = 'itemMeasure';\r\n private legendContainerParent: D3.Selection;\r\n private legendContainerDiv: D3.Selection;\r\n\r\n constructor(element: JQuery) {\r\n this.legendContainerParent = d3.select(element.get(0));\r\n }\r\n \r\n public getMargins(): IViewport {\r\n return {\r\n height: CartesianChartInteractiveLegend.LegendHeight,\r\n width: 0\r\n };\r\n }\r\n\r\n public drawLegend(legendData: LegendData) {\r\n debug.assertValue(legendData, 'legendData');\r\n let data = legendData.dataPoints;\r\n debug.assertValue(data, 'dataPoints');\r\n if (data.length < 1) return;\r\n\r\n let legendContainerDiv = this.legendContainerParent.select(CartesianChartInteractiveLegend.LegendContainerSelector);\r\n if (legendContainerDiv.empty()) {\r\n if (!data.length) return;\r\n let divToPrepend = $('<div></div>')\r\n .height(this.getMargins().height)\r\n .addClass(CartesianChartInteractiveLegend.LegendContainerClass);\r\n // Prepending, as legend should always be on topmost visual.\r\n $(this.legendContainerParent[0]).prepend(divToPrepend);\r\n legendContainerDiv = d3.select(divToPrepend.get(0));\r\n }\r\n this.legendContainerDiv = legendContainerDiv;\r\n\r\n // Construct the legend title and items.\r\n this.drawTitle(data);\r\n this.drawLegendItems(data);\r\n }\r\n\r\n public reset(): void {\r\n if (this.legendContainerDiv) {\r\n this.legendContainerDiv.remove();\r\n this.legendContainerDiv = null;\r\n }\r\n }\r\n\r\n public isVisible(): boolean {\r\n return true;\r\n }\r\n\r\n public changeOrientation(orientation: LegendPosition) {\r\n // Not supported\r\n }\r\n\r\n public getOrientation(): LegendPosition {\r\n return LegendPosition.Top;\r\n }\r\n\r\n /**\r\n * Draw the legend title\r\n */\r\n private drawTitle(data: LegendDataPoint[]): void {\r\n debug.assert(data && data.length > 0, 'data is null or empty');\r\n let titleDiv: D3.Selection = this.legendContainerDiv.selectAll('div.' + CartesianChartInteractiveLegend.LegendTitleClass);\r\n let item: D3.UpdateSelection = titleDiv.data([data[0]]);\r\n\r\n // Enter\r\n let itemEnter: D3.EnterSelection = item.enter();\r\n let titleDivEnter: D3.Selection = itemEnter.append('div').attr('class', CartesianChartInteractiveLegend.LegendTitleClass);\r\n titleDivEnter\r\n .filter((d: LegendDataPoint) => d.iconOnlyOnLabel)\r\n .append('span')\r\n .attr('class', CartesianChartInteractiveLegend.legendIconClass)\r\n .html(CartesianChartInteractiveLegend.legendPlaceSelector);\r\n titleDivEnter.append('span');\r\n\r\n // Update\r\n item.filter((d: LegendDataPoint) => d.iconOnlyOnLabel)\r\n .select('span.' + CartesianChartInteractiveLegend.legendIconClass)\r\n .style(CartesianChartInteractiveLegend.legendColorCss, (d: LegendDataPoint) => d.color);\r\n item.select('span:last-child').text((d: LegendDataPoint) => d.category);\r\n }\r\n\r\n /**\r\n * Draw the legend items\r\n */\r\n private drawLegendItems(data: LegendDataPoint[]): void {\r\n // Add Mesaures - the items of the category in the legend\r\n this.ensureLegendTableCreated();\r\n let dataPointsMatrix: LegendDataPoint[][] = CartesianChartInteractiveLegend.splitArrayToOddEven(data);\r\n let legendItemsContainer: D3.UpdateSelection = this.legendContainerDiv.select('tbody').selectAll('tr').data(dataPointsMatrix);\r\n\r\n // trs is table rows. \r\n // there are two table rows.\r\n // the order of insertion to the legend table is:\r\n // Even data points got inserted into the 1st line\r\n // Odd data points got inserted into the 2nd line\r\n // ----------------------------\r\n // | value0 | value 2 | value 4\r\n // ----------------------------\r\n // | value1 | value 3 | \r\n // ----------------------------\r\n // \r\n\r\n // Enter\r\n let legendItemsEnter: D3.EnterSelection = legendItemsContainer.enter();\r\n let rowEnter: D3.Selection = legendItemsEnter.append('tr');\r\n let cellEnter: D3.Selection = rowEnter.selectAll('td')\r\n .data((d: LegendDataPoint[]) => d, (d: LegendDataPoint) => d.label)\r\n .enter()\r\n .append('td').attr('class', CartesianChartInteractiveLegend.LegendItem);\r\n let cellSpanEnter: D3.Selection = cellEnter.append('span');\r\n cellSpanEnter.filter((d: LegendDataPoint) => !d.iconOnlyOnLabel)\r\n .append('span')\r\n .html(CartesianChartInteractiveLegend.legendPlaceSelector)\r\n .attr('class', CartesianChartInteractiveLegend.legendIconClass)\r\n .attr('white-space', 'nowrap');\r\n cellSpanEnter.append('span').attr('class', CartesianChartInteractiveLegend.legendItemNameClass);\r\n cellSpanEnter.append('span').attr('class', CartesianChartInteractiveLegend.legendItemMeasureClass);\r\n\r\n // Update\r\n let legendCells: D3.UpdateSelection = legendItemsContainer.selectAll('td').data((d: LegendDataPoint[]) => d, (d: LegendDataPoint) => d.label);\r\n legendCells.select('span.' + CartesianChartInteractiveLegend.legendItemNameClass).html((d: LegendDataPoint) => powerbi.visuals.TextUtil.removeBreakingSpaces(d.label));\r\n legendCells.select('span.' + CartesianChartInteractiveLegend.legendItemMeasureClass).html((d: LegendDataPoint) => '&nbsp;' + d.measure);\r\n legendCells.select('span.' + CartesianChartInteractiveLegend.legendIconClass).style('color', (d: LegendDataPoint) => d.color);\r\n\r\n // Exit\r\n legendCells.exit().remove();\r\n }\r\n\r\n /**\r\n * Ensure legend table is created and set horizontal pan gestures on it\r\n */\r\n private ensureLegendTableCreated(): void {\r\n if (this.legendContainerDiv.select('div table').empty()) {\r\n let legendTable: D3.Selection = this.legendContainerDiv.append('div').append('table');\r\n legendTable.style('table-layout', 'fixed').append('tbody');\r\n // Setup Pan Gestures of the legend\r\n this.setPanGestureOnLegend(legendTable);\r\n }\r\n }\r\n\r\n /**\r\n * Set Horizontal Pan gesture for the legend\r\n */\r\n private setPanGestureOnLegend(legendTable: D3.Selection): void {\r\n let viewportWidth: number = $(this.legendContainerDiv.select('div:nth-child(2)')[0]).width();\r\n let xscale: D3.Scale.LinearScale = d3.scale.linear().domain([0, viewportWidth]).range([0, viewportWidth]);\r\n let zoom: D3.Behavior.Zoom = d3.behavior.zoom()\r\n .scaleExtent([1, 1]) // disable scaling\r\n .x(xscale)\r\n .on(\"zoom\", () => {\r\n // horizontal pan is valid only in case the legend items width are bigger than the viewport width\r\n if ($(legendTable[0]).width() > viewportWidth) {\r\n let t: number[] = zoom.translate();\r\n let tx: number = t[0];\r\n let ty: number = t[1];\r\n tx = Math.min(tx, 0);\r\n tx = Math.max(tx, viewportWidth - $(legendTable[0]).width());\r\n zoom.translate([tx, ty]);\r\n legendTable.style(\"-ms-transform\", () => { /* IE 9 */\r\n return SVGUtil.translateXWithPixels(tx);\r\n });\r\n legendTable.style(\"-webkit-transform\", () => { /* Safari */\r\n return SVGUtil.translateXWithPixels(tx);\r\n });\r\n legendTable.style(\"transform\", () => {\r\n return SVGUtil.translateXWithPixels(tx);\r\n });\r\n }\r\n });\r\n if (this.legendContainerDiv) {\r\n this.legendContainerDiv.call(zoom);\r\n } else {\r\n legendTable.call(zoom);\r\n }\r\n }\r\n\r\n /**\r\n * Split legend data points array into odd and even arrays\r\n * Even array will be the legend first line and Odd array will be the 2nd legend line \r\n */\r\n private static splitArrayToOddEven(data: LegendDataPoint[]): LegendDataPoint[][] {\r\n let oddData: LegendDataPoint[] = [];\r\n let evenData: LegendDataPoint[] = [];\r\n for (let i = 0; i < data.length; ++i) {\r\n if (i % 2 === 0) {\r\n evenData.push(data[i]);\r\n }\r\n else {\r\n oddData.push(data[i]);\r\n }\r\n }\r\n return [evenData, oddData];\r\n }\r\n }\r\n\r\n export module LegendData {\r\n\r\n export var DefaultLegendLabelFillColor: string = '#666666';\r\n\r\n export function update(legendData: LegendData, legendObject: DataViewObject): void {\r\n debug.assertValue(legendData, 'legendData');\r\n debug.assertValue(legendObject, 'legendObject');\r\n\r\n if (legendObject[legendProps.show] == null) {\r\n legendObject[legendProps.show] = true;\r\n }\r\n\r\n if (legendObject[legendProps.show] === false)\r\n legendData.dataPoints = [];\r\n\r\n if (legendObject[legendProps.show] === true && legendObject[legendProps.position] == null)\r\n legendObject[legendProps.position] = legendPosition.top;\r\n\r\n if (legendObject[legendProps.fontSize] !== undefined)\r\n legendData.fontSize = <number>legendObject[legendProps.fontSize];\r\n\r\n if (legendObject[legendProps.labelColor] !== undefined) {\r\n\r\n let fillColor = <Fill>legendObject[legendProps.labelColor];\r\n\r\n if (fillColor != null) {\r\n legendData.labelColor = fillColor.solid.color;\r\n }\r\n }\r\n\r\n if (legendObject[legendProps.showTitle] === false)\r\n legendData.title = \"\";\r\n else if (legendObject[legendProps.titleText] !== undefined) {\r\n legendData.title = <string>legendObject[legendProps.titleText];\r\n }\r\n }\r\n }\r\n}","/*\r\n* Power BI Visualizations\r\n*\r\n* Copyright (c) Microsoft Corporation\r\n* All rights reserved. \r\n* MIT License\r\n*\r\n* Permission is hereby granted, free of charge, to any person obtaining a copy\r\n* of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n* in the Software without restriction, including without limitation the rights\r\n* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n* copies of the Software, and to permit persons to whom the Software is\r\n* furnished to do so, subject to the following conditions:\r\n* \r\n* The above copyright notice and this permission notice shall be included in \r\n* all copies or substantial portions of the Software.\r\n* \r\n* THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n* THE SOFTWARE.\r\n*/\r\n\r\n///<reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n export module axisScale {\r\n export const linear: string = 'linear';\r\n export const log: string = 'log'; \r\n\r\n export const type: IEnumType = createEnumType([\r\n { value: linear, displayName: resources => resources.get('Visual_Axis_Linear') },\r\n { value: log, displayName: resources => resources.get('Visual_Axis_Log') } \r\n ]);\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n export module axisStyle {\r\n export const showBoth: string = 'showBoth';\r\n export const showTitleOnly: string = 'showTitleOnly';\r\n export const showUnitOnly: string = 'showUnitOnly';\r\n\r\n export const type: IEnumType = createEnumType([\r\n { value: showTitleOnly, displayName: resources => resources.get('Visual_Axis_ShowTitleOnly') },\r\n { value: showUnitOnly, displayName: resources => resources.get('Visual_Axis_ShowUnitOnly') },\r\n { value: showBoth, displayName: resources => resources.get('Visual_Axis_ShowBoth') }\r\n ]);\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n export module axisType {\r\n export const scalar: string = 'Scalar';\r\n export const categorical: string = 'Categorical'; \r\n export const both: string = 'Both';\r\n\r\n export const type: IEnumType = createEnumType([\r\n { value: scalar, displayName: resources => resources.get('Visual_Axis_Scalar') },\r\n { value: categorical, displayName: resources => resources.get('Visual_Axis_Categorical') },\r\n ]);\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n export module basicShapeType {\r\n export const rectangle: string = 'rectangle';\r\n export const oval: string = 'oval';\r\n export const line: string = 'line';\r\n export const arrow: string = 'arrow';\r\n export const triangle: string = 'triangle';\r\n\r\n export const type: IEnumType = createEnumType([\r\n { value: rectangle, displayName: 'rectangle' },\r\n { value: oval, displayName: 'oval' },\r\n { value: line, displayName: 'line' },\r\n { value: arrow, displayName: 'arrow' },\r\n { value: triangle, displayName: 'triangle' }\r\n ]);\r\n }\r\n}\r\n","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n export module imageScalingType {\r\n export const normal: string = 'Normal';\r\n export const fit: string = 'Fit';\r\n export const fill: string = 'Fill';\r\n\r\n export const type: IEnumType = createEnumType([\r\n { value: normal, displayName: resources => resources.get('Visual_ImageScalingType_Normal') },\r\n { value: fit, displayName: resources => resources.get('Visual_ImageScalingType_Fit') },\r\n { value: fill, displayName: resources => resources.get('Visual_ImageScalingType_Fill') },\r\n ]);\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n\r\n export module labelPosition {\r\n\r\n export const insideEnd: string = 'InsideEnd';\r\n export const insideCenter: string = 'InsideCenter';\r\n export const outsideEnd: string = 'OutsideEnd';\r\n export const insideBase: string = 'InsideBase';\r\n\r\n export const type: IEnumType = createEnumType([\r\n { value: insideEnd, displayName: resources => resources.get('Visual_LabelPosition_InsideEnd') },\r\n { value: outsideEnd, displayName: resources => resources.get('Visual_LabelPosition_OutsideEnd') },\r\n { value: insideCenter, displayName: resources => resources.get('Visual_LabelPosition_InsideCenter') },\r\n { value: insideBase, displayName: resources => resources.get('Visual_LabelPosition_InsideBase') },\r\n ]);\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n export module labelStyle {\r\n export const category: string = 'Category';\r\n export const data: string = 'Data';\r\n export const both: string = 'Both';\r\n\r\n export const type: IEnumType = createEnumType([\r\n { value: category, displayName: resources => resources.get('Visual_LabelStyle_Category') },\r\n { value: data, displayName: resources => resources.get('Visual_LabelStyle_DataValue') },\r\n { value: both, displayName: resources => resources.get('Visual_LabelStyle_Both') },\r\n ]);\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n export module legendPosition {\r\n export const top: string = 'Top';\r\n export const bottom: string = 'Bottom';\r\n export const left: string = 'Left';\r\n export const right: string = 'Right';\r\n export const topCenter: string = 'TopCenter';\r\n export const bottomCenter: string = 'BottomCenter';\r\n export const leftCenter: string = 'LeftCenter';\r\n export const rightCenter: string = 'RightCenter';\r\n\r\n export const type: IEnumType = createEnumType([\r\n { value: top, displayName: resources => resources.get('Visual_LegendPosition_Top') },\r\n { value: bottom, displayName: resources => resources.get('Visual_LegendPosition_Bottom') },\r\n { value: left, displayName: resources => resources.get('Visual_LegendPosition_Left') },\r\n { value: right, displayName: resources => resources.get('Visual_LegendPosition_Right') },\r\n { value: topCenter, displayName: resources => resources.get('Visual_LegendPosition_TopCenter') },\r\n { value: bottomCenter, displayName: resources => resources.get('Visual_LegendPosition_BottomCenter') },\r\n { value: leftCenter, displayName: resources => resources.get('Visual_LegendPosition_LeftCenter') },\r\n { value: rightCenter, displayName: resources => resources.get('Visual_LegendPosition_RightCenter') },\r\n ]);\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n export module kpiDirection {\r\n export const positive: string = 'Positive';\r\n export const negative: string = 'Negative';\r\n\r\n export const type: IEnumType = createEnumType([\r\n { value: positive, displayName: resources => resources.get('Visual_KPI_Direction_Positive') },\r\n { value: negative, displayName: resources => resources.get('Visual_KPI_Direction_Negative') }\r\n ]);\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n export module lineStyle {\r\n export const dashed: string = 'dashed';\r\n export const solid: string = 'solid';\r\n export const dotted: string = 'dotted';\r\n\r\n export const type: IEnumType = createEnumType([\r\n { value: dashed, displayName: resources => resources.get('Visual_LineStyle_Dashed') },\r\n { value: solid, displayName: resources => resources.get('Visual_LineStyle_Solid') },\r\n { value: dotted, displayName: resources => resources.get('Visual_LineStyle_Dotted') }\r\n ]);\r\n }\r\n}"," /*\r\n* Power BI Visualizations\r\n*\r\n* Copyright (c) Microsoft Corporation\r\n* All rights reserved. \r\n* MIT License\r\n*\r\n* Permission is hereby granted, free of charge, to any person obtaining a copy\r\n* of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n* in the Software without restriction, including without limitation the rights\r\n* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n* copies of the Software, and to permit persons to whom the Software is\r\n* furnished to do so, subject to the following conditions:\r\n* \r\n* The above copyright notice and this permission notice shall be included in \r\n* all copies or substantial portions of the Software.\r\n* \r\n* THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n* THE SOFTWARE.\r\n*/\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n export module outline {\r\n export const none: string = 'None';\r\n export const bottomOnly: string = 'BottomOnly';\r\n export const topOnly: string = 'TopOnly';\r\n export const leftOnly: string = 'LeftOnly';\r\n export const rightOnly: string = 'RightOnly';\r\n export const topBottom: string = 'TopBottom';\r\n export const leftRight: string = 'LeftRight';\r\n export const frame: string = 'Frame';\r\n\r\n export const type: IEnumType = createEnumType([\r\n { value: none, displayName: resources => resources.get('Visual_Outline_none') },\r\n { value: bottomOnly, displayName: resources => resources.get('Visual_Outline_bottom_only') },\r\n { value: topOnly, displayName: resources => resources.get('Visual_Outline_top_only') },\r\n { value: leftOnly, displayName: resources => resources.get('Visual_Outline_LeftOnly') },\r\n { value: rightOnly, displayName: resources => resources.get('Visual_Outline_RightOnly') },\r\n { value: topBottom, displayName: resources => resources.get('Visual_Outline_top_Bottom') },\r\n { value: leftRight, displayName: resources => resources.get('Visual_Outline_leftRight') },\r\n { value: frame, displayName: resources => resources.get('Visual_Outline_frame') }\r\n ]);\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n export module referenceLinePosition {\r\n export const back: string = 'back';\r\n export const front: string = 'front';\r\n\r\n export const type: IEnumType = createEnumType([\r\n { value: back, displayName: resources => resources.get('Visual_Reference_Line_Behind') },\r\n { value: front, displayName: resources => resources.get('Visual_Reference_Line_InFront') },\r\n ]);\r\n }\r\n\r\n export module referenceLineDataLabelHorizontalPosition {\r\n export const left: string = 'left';\r\n export const right: string = 'right';\r\n\r\n export const type: IEnumType = createEnumType([\r\n { value: left, displayName: resources => resources.get('Visual_Reference_Line_Data_Label_Left') },\r\n { value: right, displayName: resources => resources.get('Visual_Reference_Line_Data_Label_Right') },\r\n ]);\r\n }\r\n\r\n export module referenceLineDataLabelVerticalPosition {\r\n export const above: string = 'above';\r\n export const under: string = 'under';\r\n\r\n export const type: IEnumType = createEnumType([\r\n { value: above, displayName: resources => resources.get('Visual_Reference_Line_Data_Label_Above') },\r\n { value: under, displayName: resources => resources.get('Visual_Reference_Line_Data_Label_Under') },\r\n ]);\r\n }\r\n}","/*\r\n* Power BI Visualizations\r\n*\r\n* Copyright (c) Microsoft Corporation\r\n* All rights reserved. \r\n* MIT License\r\n*\r\n* Permission is hereby granted, free of charge, to any person obtaining a copy\r\n* of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n* in the Software without restriction, including without limitation the rights\r\n* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n* copies of the Software, and to permit persons to whom the Software is\r\n* furnished to do so, subject to the following conditions:\r\n* \r\n* The above copyright notice and this permission notice shall be included in \r\n* all copies or substantial portions of the Software.\r\n* \r\n* THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n* THE SOFTWARE.\r\n*/\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n export module slicerOrientation {\r\n export const enum Orientation {\r\n Vertical,\r\n Horizontal\r\n }\r\n\r\n export const type: IEnumType = createEnumType([\r\n { value: Orientation.Vertical, displayName: resources => resources.get('Slicer_Orientation_Vertical') },\r\n { value: Orientation.Horizontal, displayName: resources => resources.get('Slicer_Orientation_Horizontal') },\r\n ]);\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n export module yAxisPosition {\r\n export const left: string = 'Left';\r\n export const right: string = 'Right'; \r\n \r\n export const type: IEnumType = createEnumType([\r\n { value: left, displayName: resources => resources.get('Visual_yAxis_Left') },\r\n { value: right, displayName: resources => resources.get('Visual_yAxis_Right') },\r\n ]);\r\n }\r\n}"," /*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n export module AnimatorCommon {\r\n export const MinervaAnimationDuration = 250;\r\n\r\n export function GetAnimationDuration(animator: IGenericAnimator, suppressAnimations: boolean) {\r\n return (suppressAnimations || !animator) ? 0 : animator.getDuration();\r\n }\r\n }\r\n\r\n export interface IAnimatorOptions {\r\n duration?: number;\r\n }\r\n\r\n export interface IAnimationOptions {\r\n interactivityService: IInteractivityService;\r\n }\r\n\r\n export interface IAnimationResult {\r\n failed: boolean;\r\n }\r\n\r\n export interface IAnimator<T extends IAnimatorOptions, U extends IAnimationOptions, V extends IAnimationResult> {\r\n getDuration(): number;\r\n animate(options: U): V;\r\n }\r\n\r\n export type IGenericAnimator = IAnimator<IAnimatorOptions, IAnimationOptions, IAnimationResult>;\r\n\r\n /** \r\n * We just need to have a non-null animator to allow axis animations in cartesianChart.\r\n * Note: Use this temporarily for Line/Scatter until we add more animations (MinervaPlugins only).\r\n */\r\n export class BaseAnimator<T extends IAnimatorOptions, U extends IAnimationOptions, V extends IAnimationResult> implements IAnimator<T, U, V> {\r\n protected animationDuration: number;\r\n\r\n constructor(options?: T) {\r\n if (options && options.duration) {\r\n this.animationDuration = options.duration;\r\n }\r\n\r\n this.animationDuration = this.animationDuration >= 0 ? this.animationDuration : AnimatorCommon.MinervaAnimationDuration;\r\n }\r\n\r\n public getDuration(): number {\r\n return this.animationDuration;\r\n }\r\n\r\n public animate(options: U): V {\r\n return null;\r\n }\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n import ClassAndSelector = jsCommon.CssConstants.ClassAndSelector;\r\n\r\n export interface ColumnChartAnimationOptions extends IAnimationOptions {\r\n viewModel: ColumnChartData;\r\n series: D3.UpdateSelection;\r\n layout: IColumnLayout;\r\n itemCS: ClassAndSelector;\r\n mainGraphicsContext: D3.Selection;\r\n viewPort: IViewport;\r\n }\r\n\r\n export interface ColumnChartAnimationResult extends IAnimationResult {\r\n shapes: D3.UpdateSelection;\r\n }\r\n\r\n export type IColumnChartAnimator = IAnimator<IAnimatorOptions, ColumnChartAnimationOptions, ColumnChartAnimationResult>;\r\n\r\n export class WebColumnChartAnimator extends BaseAnimator<IAnimatorOptions, ColumnChartAnimationOptions, ColumnChartAnimationResult> implements IColumnChartAnimator {\r\n private previousViewModel: ColumnChartData;\r\n\r\n constructor(options?: IAnimatorOptions) {\r\n super(options);\r\n }\r\n\r\n public animate(options: ColumnChartAnimationOptions): ColumnChartAnimationResult {\r\n let result: ColumnChartAnimationResult = {\r\n failed: true,\r\n shapes: null,\r\n };\r\n\r\n let viewModel = options.viewModel;\r\n let previousViewModel = this.previousViewModel;\r\n\r\n if (!previousViewModel) {\r\n // This is the initial drawing of the chart, which has no special animation for now.\r\n }\r\n else if (viewModel.hasHighlights && !previousViewModel.hasHighlights) {\r\n result = this.animateNormalToHighlighted(options);\r\n }\r\n else if (viewModel.hasHighlights && previousViewModel.hasHighlights) {\r\n result = this.animateHighlightedToHighlighted(options);\r\n }\r\n else if (!viewModel.hasHighlights && previousViewModel.hasHighlights) {\r\n result = this.animateHighlightedToNormal(options);\r\n }\r\n\r\n this.previousViewModel = viewModel;\r\n return result;\r\n }\r\n\r\n private animateNormalToHighlighted(options: ColumnChartAnimationOptions): ColumnChartAnimationResult {\r\n let data = options.viewModel;\r\n let itemCS = options.itemCS;\r\n let shapeSelection = options.series.selectAll(itemCS.selector);\r\n let shapes = shapeSelection.data((d: ColumnChartSeries) => d.data, (d: ColumnChartDataPoint) => d.key);\r\n let hasHighlights = data.hasHighlights;\r\n\r\n shapes\r\n .enter()\r\n .append('rect')\r\n .attr(\"class\", (d: ColumnChartDataPoint) => itemCS.class.concat(d.highlight ? \" highlight\" : \"\"))\r\n .attr(options.layout.shapeLayoutWithoutHighlights); // Start out at the non-highlight layout\r\n\r\n shapes\r\n .style(\"fill\", (d: ColumnChartDataPoint) => d.color)\r\n .style(\"fill-opacity\", (d: ColumnChartDataPoint) => ColumnUtil.getFillOpacity(d.selected, d.highlight, false, hasHighlights))\r\n .transition()\r\n .duration(this.animationDuration)\r\n .attr(options.layout.shapeLayout);\r\n\r\n shapes\r\n .exit()\r\n .remove();\r\n\r\n return {\r\n failed: false,\r\n shapes: shapes,\r\n };\r\n }\r\n\r\n private animateHighlightedToHighlighted(options: ColumnChartAnimationOptions): ColumnChartAnimationResult {\r\n let shapes = this.animateDefaultShapes(options.viewModel, options.series, options.layout, options.itemCS);\r\n\r\n return {\r\n failed: false,\r\n shapes: shapes,\r\n };\r\n }\r\n\r\n private animateHighlightedToNormal(options: ColumnChartAnimationOptions): ColumnChartAnimationResult {\r\n let itemCS = options.itemCS;\r\n let shapeSelection = options.series.selectAll(itemCS.selector);\r\n let shapes = shapeSelection.data((d: ColumnChartSeries) => d.data, (d: ColumnChartDataPoint) => d.key);\r\n let hasSelection = options.interactivityService && options.interactivityService.hasSelection();\r\n\r\n shapes\r\n .enter()\r\n .append('rect')\r\n .attr(\"class\", (d: ColumnChartDataPoint) => itemCS.class.concat(d.highlight ? \" highlight\" : \"\"));\r\n\r\n shapes\r\n .style(\"fill\", (d: ColumnChartDataPoint) => d.color)\r\n .style(\"fill-opacity\", (d: ColumnChartDataPoint) => ColumnUtil.getFillOpacity(d.selected, d.highlight, d.selected, !d.selected))\r\n .transition()\r\n .duration(this.animationDuration)\r\n .attr(options.layout.shapeLayout)\r\n .transition()\r\n .duration(0)\r\n .delay(this.animationDuration)\r\n .style(\"fill-opacity\", (d: ColumnChartDataPoint) => ColumnUtil.getFillOpacity(d.selected, d.highlight, hasSelection, false));\r\n\r\n shapes\r\n .exit()\r\n .transition()\r\n .duration(this.animationDuration)\r\n .attr(hasSelection ? options.layout.zeroShapeLayout : options.layout.shapeLayoutWithoutHighlights)\r\n .remove();\r\n\r\n return {\r\n failed: false,\r\n shapes: shapes,\r\n };\r\n }\r\n\r\n private animateDefaultShapes(data: ColumnChartData, series: D3.UpdateSelection, layout: IColumnLayout, itemCS: ClassAndSelector): D3.UpdateSelection {\r\n let shapeSelection = series.selectAll(itemCS.selector);\r\n let shapes = shapeSelection.data((d: ColumnChartSeries) => d.data, (d: ColumnChartDataPoint) => d.key);\r\n\r\n shapes\r\n .enter()\r\n .append('rect')\r\n .attr(\"class\", (d: ColumnChartDataPoint) => itemCS.class.concat(d.highlight ? \" highlight\" : \"\"));\r\n\r\n shapes\r\n .style(\"fill\", (d: ColumnChartDataPoint) => d.color)\r\n .style(\"fill-opacity\", (d: ColumnChartDataPoint) => ColumnUtil.getFillOpacity(d.selected, d.highlight, false, data.hasHighlights))\r\n .transition()\r\n .duration(this.animationDuration)\r\n .attr(layout.shapeLayout);\r\n\r\n shapes\r\n .exit()\r\n .remove();\r\n\r\n return shapes;\r\n }\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n export interface DonutChartAnimationOptions extends IAnimationOptions {\r\n viewModel: DonutData;\r\n graphicsContext: D3.Selection;\r\n labelGraphicsContext: D3.Selection;\r\n colors: IDataColorPalette;\r\n layout: DonutLayout;\r\n sliceWidthRatio: number;\r\n radius: number;\r\n viewport: IViewport;\r\n innerArcRadiusRatio: number;\r\n labels: Label[];\r\n }\r\n\r\n export interface DonutChartAnimationResult extends IAnimationResult {\r\n shapes: D3.UpdateSelection;\r\n highlightShapes: D3.UpdateSelection;\r\n }\r\n\r\n export type IDonutChartAnimator = IAnimator<IAnimatorOptions, DonutChartAnimationOptions, DonutChartAnimationResult>;\r\n\r\n export class WebDonutChartAnimator extends BaseAnimator<IAnimatorOptions, DonutChartAnimationOptions, DonutChartAnimationResult> implements IDonutChartAnimator {\r\n private previousViewModel: DonutData;\r\n\r\n constructor(options?: IAnimatorOptions) {\r\n super(options);\r\n }\r\n\r\n public animate(options: DonutChartAnimationOptions): DonutChartAnimationResult {\r\n let result: DonutChartAnimationResult = {\r\n failed: true,\r\n shapes: null,\r\n highlightShapes: null,\r\n };\r\n\r\n let viewModel = options.viewModel;\r\n let previousViewModel = this.previousViewModel;\r\n\r\n if (!previousViewModel) {\r\n // This is the initial drawing of the chart, which has no special animation for now.\r\n }\r\n else if (viewModel.hasHighlights && !previousViewModel.hasHighlights) {\r\n result = this.animateNormalToHighlighted(options);\r\n }\r\n else if (viewModel.hasHighlights && previousViewModel.hasHighlights) {\r\n result = this.animateHighlightedToHighlighted(options);\r\n }\r\n else if (!viewModel.hasHighlights && previousViewModel.hasHighlights) {\r\n result = this.animateHighlightedToNormal(options);\r\n }\r\n\r\n this.previousViewModel = viewModel;\r\n return result;\r\n }\r\n\r\n private animateNormalToHighlighted(options: DonutChartAnimationOptions): DonutChartAnimationResult {\r\n let shapes = this.animateDefaultShapes(options);\r\n\r\n let highlightShapes = options.graphicsContext.select('.slices')\r\n .selectAll('path.slice-highlight')\r\n .data(options.viewModel.dataPoints.filter((value: DonutArcDescriptor) => value.data.highlightRatio != null), (d: DonutArcDescriptor) => d.data.identity.getKey());\r\n\r\n highlightShapes.enter()\r\n .insert('path')\r\n .classed('slice-highlight', true)\r\n .each(function (d) { this._current = d; });\r\n\r\n DonutChart.isSingleColor(options.viewModel.dataPoints.filter((value: DonutArcDescriptor) => value.data.highlightRatio != null));\r\n\r\n highlightShapes\r\n .style('fill', (d: DonutArcDescriptor) => d.data.color ? d.data.color : options.colors.getNewColorScale().getColor(d.data.identity.getKey()).value)\r\n .style('fill-opacity', (d: DonutArcDescriptor) => ColumnUtil.getFillOpacity(d.data.selected, true, false, options.viewModel.hasHighlights))\r\n .style(\"stroke-dasharray\", (d: DonutArcDescriptor) => DonutChart.drawStrokeForDonutChart(options.radius, options.innerArcRadiusRatio, d, options.sliceWidthRatio, d.data.highlightRatio))\r\n .style(\"stroke-width\", (d: DonutArcDescriptor) => d.data.highlightRatio === 0 ? 0 : d.data.strokeWidth)\r\n .attr(options.layout.shapeLayout) // Start at the non-highlight layout, then transition to the highlight layout.\r\n .transition()\r\n .duration(this.animationDuration)\r\n .attr(options.layout.highlightShapeLayout);\r\n\r\n highlightShapes.exit()\r\n .remove();\r\n\r\n NewDataLabelUtils.drawDefaultLabels(options.labelGraphicsContext, options.labels, false, true);\r\n NewDataLabelUtils.drawLabelLeaderLines(options.labelGraphicsContext, options.labels);\r\n\r\n return {\r\n failed: false,\r\n shapes: shapes,\r\n highlightShapes: highlightShapes,\r\n };\r\n }\r\n\r\n private animateHighlightedToHighlighted(options: DonutChartAnimationOptions): DonutChartAnimationResult {\r\n let shapes = this.animateDefaultShapes(options);\r\n\r\n let highlightShapes = this.animateDefaultHighlightShapes(options);\r\n NewDataLabelUtils.drawDefaultLabels(options.labelGraphicsContext, options.labels, false, true);\r\n NewDataLabelUtils.drawLabelLeaderLines(options.labelGraphicsContext, options.labels);\r\n\r\n return {\r\n failed: false,\r\n shapes: shapes,\r\n highlightShapes: highlightShapes,\r\n };\r\n }\r\n\r\n private animateHighlightedToNormal(options: DonutChartAnimationOptions): DonutChartAnimationResult {\r\n let hasSelection = options.interactivityService && options.interactivityService.hasSelection();\r\n let duration = this.animationDuration;\r\n\r\n let shapes = options.graphicsContext.select('.slices')\r\n .selectAll('path.slice')\r\n .data(options.viewModel.dataPoints, (d: DonutArcDescriptor) => d.data.identity.getKey());\r\n\r\n shapes.enter()\r\n .insert('path')\r\n .classed('slice', true)\r\n .each(function (d) { this._current = d; });\r\n\r\n DonutChart.isSingleColor(options.viewModel.dataPoints);\r\n\r\n // For any slice that is selected we want to keep showing it as dimmed (partially highlighted). After the highlight animation\r\n // finishes we will set the opacity based on the selection state.\r\n shapes\r\n .style('fill', (d: DonutArcDescriptor) => d.data.color ? d.data.color : options.colors.getNewColorScale().getColor(d.data.identity.getKey()).value)\r\n .style('fill-opacity', (d: DonutArcDescriptor) => ColumnUtil.getFillOpacity(d.data.selected, false, d.data.selected, !d.data.selected))\r\n .style(\"stroke-dasharray\", (d: DonutArcDescriptor) => DonutChart.drawStrokeForDonutChart(options.radius, options.innerArcRadiusRatio, d, options.sliceWidthRatio))\r\n .style(\"stroke-width\", (d: DonutArcDescriptor) => d.data.strokeWidth)\r\n .transition()\r\n .duration(duration)\r\n .attr(options.layout.shapeLayout)\r\n .transition()\r\n .duration(0)\r\n .delay(duration)\r\n .style(\"fill-opacity\", (d: DonutArcDescriptor) => ColumnUtil.getFillOpacity(d.data.selected, false, hasSelection, false));;\r\n\r\n shapes.exit()\r\n .remove();\r\n\r\n let highlightShapes = options.graphicsContext.select('.slices')\r\n .selectAll('path.slice-highlight')\r\n .data(options.viewModel.dataPoints.filter((value: DonutArcDescriptor) => value.data.highlightRatio != null), (d: DonutArcDescriptor) => d.data.identity.getKey());\r\n\r\n highlightShapes.enter()\r\n .insert('path')\r\n .classed('slice-highlight', true)\r\n .each(function (d) { this._current = d; });\r\n\r\n DonutChart.isSingleColor(options.viewModel.dataPoints.filter((value: DonutArcDescriptor) => value.data.highlightRatio != null));\r\n\r\n highlightShapes\r\n .style('fill', (d: DonutArcDescriptor) => d.data.color ? d.data.color : options.colors.getNewColorScale().getColor(d.data.identity.getKey()).value)\r\n .style('fill-opacity', (d: DonutArcDescriptor) => ColumnUtil.getFillOpacity(false, true, false, true))\r\n .style(\"stroke-dasharray\", (d: DonutArcDescriptor) => DonutChart.drawStrokeForDonutChart(options.radius, options.innerArcRadiusRatio, d, options.sliceWidthRatio, d.data.highlightRatio))\r\n .style(\"stroke-width\", (d: DonutArcDescriptor) => d.data.highlightRatio === 0 ? 0 : d.data.strokeWidth)\r\n .transition()\r\n .duration(duration)\r\n .attr(hasSelection ? options.layout.zeroShapeLayout : options.layout.shapeLayout) // Transition to the non-highlight layout\r\n .remove();\r\n\r\n highlightShapes.exit()\r\n .remove();\r\n\r\n NewDataLabelUtils.drawDefaultLabels(options.labelGraphicsContext, options.labels, false, true);\r\n NewDataLabelUtils.drawLabelLeaderLines(options.labelGraphicsContext, options.labels);\r\n\r\n return {\r\n failed: false,\r\n shapes: shapes,\r\n highlightShapes: highlightShapes,\r\n };\r\n }\r\n\r\n private animateDefaultShapes(options: DonutChartAnimationOptions): D3.UpdateSelection {\r\n let shapes = options.graphicsContext.select('.slices')\r\n .selectAll('path.slice')\r\n .data(options.viewModel.dataPoints, (d: DonutArcDescriptor) => d.data.identity.getKey());\r\n\r\n shapes.enter()\r\n .insert('path')\r\n .classed('slice', true)\r\n .each(function (d) { this._current = d; });\r\n\r\n DonutChart.isSingleColor(options.viewModel.dataPoints);\r\n\r\n shapes\r\n .style('fill', (d: DonutArcDescriptor) => d.data.color ? d.data.color : options.colors.getNewColorScale().getColor(d.data.identity.getKey()).value)\r\n .style('fill-opacity', (d: DonutArcDescriptor) => ColumnUtil.getFillOpacity(d.data.selected, false, false, options.viewModel.hasHighlights))\r\n .style(\"stroke-dasharray\", (d: DonutArcDescriptor) => DonutChart.drawStrokeForDonutChart(options.radius, options.innerArcRadiusRatio, d, options.sliceWidthRatio))\r\n .style(\"stroke-width\", (d: DonutArcDescriptor) => d.data.strokeWidth)\r\n .transition()\r\n .duration(this.animationDuration)\r\n .attr(options.layout.shapeLayout);\r\n\r\n shapes.exit()\r\n .remove();\r\n\r\n return shapes;\r\n }\r\n\r\n private animateDefaultHighlightShapes(options: DonutChartAnimationOptions): D3.UpdateSelection {\r\n let highlightShapes = options.graphicsContext.select('.slices')\r\n .selectAll('path.slice-highlight')\r\n .data(options.viewModel.dataPoints.filter((value: DonutArcDescriptor) => value.data.highlightRatio != null), (d: DonutArcDescriptor) => d.data.identity.getKey());\r\n\r\n highlightShapes.enter()\r\n .insert('path')\r\n .classed('slice-highlight', true)\r\n .each(function (d) { this._current = d; });\r\n\r\n DonutChart.isSingleColor(options.viewModel.dataPoints.filter((value: DonutArcDescriptor) => value.data.highlightRatio != null));\r\n\r\n highlightShapes\r\n .style('fill', (d: DonutArcDescriptor) => d.data.color ? d.data.color : options.colors.getNewColorScale().getColor(d.data.identity.getKey()).value)\r\n .style('fill-opacity', (d: DonutArcDescriptor) => ColumnUtil.getFillOpacity(d.data.selected, true, false, options.viewModel.hasHighlights))\r\n .style(\"stroke-dasharray\", (d: DonutArcDescriptor) => DonutChart.drawStrokeForDonutChart(options.radius, options.innerArcRadiusRatio, d, options.sliceWidthRatio, d.data.highlightRatio))\r\n .style(\"stroke-width\", (d: DonutArcDescriptor) => d.data.highlightRatio === 0 ? 0 : d.data.strokeWidth)\r\n .transition()\r\n .duration(this.animationDuration)\r\n .attr(options.layout.highlightShapeLayout);\r\n\r\n highlightShapes.exit()\r\n .remove();\r\n\r\n return highlightShapes;\r\n }\r\n }\r\n} "," /*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n export interface FunnelAnimationOptions extends IAnimationOptions{\r\n viewModel: FunnelData;\r\n layout: IFunnelLayout;\r\n axisGraphicsContext: D3.Selection;\r\n shapeGraphicsContext: D3.Selection;\r\n percentGraphicsContext: D3.Selection;\r\n labelGraphicsContext: D3.Selection;\r\n axisOptions: FunnelAxisOptions;\r\n slicesWithoutHighlights: FunnelSlice[];\r\n labelLayout: ILabelLayout; \r\n isHidingPercentBars: boolean;\r\n visualInitOptions: VisualInitOptions;\r\n }\r\n\r\n export interface FunnelAnimationResult extends IAnimationResult {\r\n shapes: D3.UpdateSelection;\r\n dataLabels: D3.UpdateSelection;\r\n }\r\n\r\n export type IFunnelAnimator = IAnimator<IAnimatorOptions, FunnelAnimationOptions, FunnelAnimationResult>;\r\n\r\n export class WebFunnelAnimator extends BaseAnimator<IAnimatorOptions, FunnelAnimationOptions, FunnelAnimationResult> implements IFunnelAnimator {\r\n private previousViewModel: FunnelData;\r\n\r\n constructor(options?: IAnimatorOptions) {\r\n super(options);\r\n }\r\n\r\n public animate(options: FunnelAnimationOptions): FunnelAnimationResult {\r\n let result: FunnelAnimationResult = {\r\n failed: true,\r\n shapes: null,\r\n dataLabels: null,\r\n };\r\n\r\n let viewModel = options.viewModel;\r\n let previousViewModel = this.previousViewModel;\r\n\r\n if (!previousViewModel) {\r\n // This is the initial drawing of the chart, which has no special animation for now.\r\n }\r\n else if (viewModel.hasHighlights && !previousViewModel.hasHighlights) {\r\n result = this.animateNormalToHighlighted(options);\r\n }\r\n else if (viewModel.hasHighlights && previousViewModel.hasHighlights) {\r\n result = this.animateHighlightedToHighlighted(options);\r\n }\r\n else if (!viewModel.hasHighlights && previousViewModel.hasHighlights) {\r\n result = this.animateHighlightedToNormal(options);\r\n }\r\n\r\n this.previousViewModel = viewModel;\r\n return result;\r\n }\r\n\r\n private animateNormalToHighlighted(options: FunnelAnimationOptions): FunnelAnimationResult {\r\n let data = options.viewModel;\r\n let layout = options.layout;\r\n let hasHighlights = true;\r\n let hasSelection = false;\r\n\r\n this.animateDefaultAxis(options.axisGraphicsContext, options.axisOptions, options.isHidingPercentBars);\r\n\r\n let shapes = options.shapeGraphicsContext.selectAll(FunnelChart.Selectors.funnel.bars.selector).data(data.slices, (d: FunnelSlice) => d.key);\r\n\r\n shapes.enter()\r\n .append('rect')\r\n .attr(\"class\", (d: FunnelSlice) => d.highlight ? FunnelChart.FunnelBarHighlightClass : FunnelChart.Selectors.funnel.bars.class)\r\n .attr(layout.shapeLayoutWithoutHighlights); // Start by laying out all rectangles ignoring highlights\r\n\r\n shapes\r\n .style(\"fill\", (d: FunnelSlice) => d.color)\r\n .style(\"fill-opacity\", (d: FunnelSlice) => ColumnUtil.getFillOpacity(d.selected, d.highlight, hasSelection, hasHighlights))\r\n .transition()\r\n .duration(this.animationDuration)\r\n .attr(layout.shapeLayout); // Then transition to the layout that uses highlights\r\n\r\n shapes.exit().remove();\r\n\r\n this.animatePercentBars(options);\r\n\r\n let dataLabels: D3.UpdateSelection = this.animateDefaultDataLabels(options);\r\n\r\n return {\r\n failed: false,\r\n shapes: shapes,\r\n dataLabels: dataLabels,\r\n };\r\n }\r\n\r\n private animateHighlightedToHighlighted(options: FunnelAnimationOptions): FunnelAnimationResult {\r\n let data = options.viewModel;\r\n let layout = options.layout;\r\n\r\n this.animateDefaultAxis(options.axisGraphicsContext, options.axisOptions, options.isHidingPercentBars);\r\n\r\n // Simply animate to the new shapes.\r\n let shapes = this.animateDefaultShapes(data, data.slices, options.shapeGraphicsContext, layout);\r\n this.animatePercentBars(options);\r\n let dataLabels: D3.UpdateSelection = this.animateDefaultDataLabels(options);\r\n\r\n return {\r\n failed: false,\r\n shapes: shapes,\r\n dataLabels: dataLabels,\r\n };\r\n }\r\n\r\n private animateHighlightedToNormal(options: FunnelAnimationOptions): FunnelAnimationResult {\r\n let data = options.viewModel;\r\n let layout = options.layout;\r\n let hasSelection = options.interactivityService ? options.interactivityService.hasSelection() : false;\r\n\r\n this.animateDefaultAxis(options.axisGraphicsContext, options.axisOptions, options.isHidingPercentBars);\r\n\r\n let shapes = options.shapeGraphicsContext.selectAll(FunnelChart.Selectors.funnel.bars.selector).data(data.slices, (d: FunnelSlice) => d.key);\r\n\r\n shapes.enter()\r\n .append('rect')\r\n .attr(\"class\", (d: FunnelSlice) => d.highlight ? FunnelChart.FunnelBarHighlightClass : FunnelChart.Selectors.funnel.bars.class);\r\n\r\n shapes\r\n .style(\"fill\",(d: FunnelSlice) => d.color)\r\n .style(\"fill-opacity\", (d: FunnelSlice) => ColumnUtil.getFillOpacity(d.selected, d.highlight, hasSelection, !d.selected))\r\n .transition()\r\n .duration(this.animationDuration)\r\n .attr(layout.shapeLayoutWithoutHighlights) // Transition to layout without highlights\r\n .transition()\r\n .duration(0)\r\n .delay(this.animationDuration)\r\n .style(\"fill-opacity\", (d: FunnelSlice) => ColumnUtil.getFillOpacity(d.selected, d.highlight, hasSelection, false));\r\n\r\n let exitShapes = shapes.exit();\r\n\r\n exitShapes\r\n .transition()\r\n .duration(this.animationDuration)\r\n .attr(hasSelection ? layout.zeroShapeLayout : layout.shapeLayoutWithoutHighlights) // Transition to layout without highlights\r\n .remove();\r\n\r\n this.animatePercentBars(options);\r\n\r\n let dataLabels: D3.UpdateSelection = this.animateDefaultDataLabels(options);\r\n\r\n return {\r\n failed: false,\r\n shapes: shapes,\r\n dataLabels: dataLabels,\r\n };\r\n }\r\n\r\n private animateDefaultAxis(graphicsContext: D3.Selection, axisOptions: FunnelAxisOptions, isHidingPercentBars: boolean): void {\r\n let xScaleForAxis = d3.scale.ordinal()\r\n .domain(axisOptions.categoryLabels)\r\n .rangeBands([axisOptions.rangeStart, axisOptions.rangeEnd], axisOptions.barToSpaceRatio, isHidingPercentBars ? axisOptions.barToSpaceRatio : FunnelChart.PercentBarToBarRatio);\r\n let xAxis = d3.svg.axis()\r\n .scale(xScaleForAxis)\r\n .orient(\"right\")\r\n .tickPadding(FunnelChart.TickPadding)\r\n .innerTickSize(FunnelChart.InnerTickSize);\r\n graphicsContext.classed('axis', true)\r\n .transition()\r\n .duration(this.animationDuration)\r\n .attr('transform', SVGUtil.translate(0, axisOptions.margin.top))\r\n .call(xAxis);\r\n }\r\n\r\n private animateDefaultShapes(data: FunnelData, slices: FunnelSlice[], graphicsContext: D3.Selection, layout: IFunnelLayout): D3.UpdateSelection {\r\n let hasHighlights = data.hasHighlights;\r\n let shapes = graphicsContext.selectAll(FunnelChart.Selectors.funnel.bars.selector).data(slices, (d: FunnelSlice) => d.key);\r\n\r\n shapes.enter()\r\n .append('rect')\r\n .attr(\"class\", (d: FunnelSlice) => d.highlight ? FunnelChart.FunnelBarHighlightClass : FunnelChart.Selectors.funnel.bars.class);\r\n\r\n shapes\r\n .style(\"fill\", (d: FunnelSlice) => d.color)\r\n .style(\"fill-opacity\", d => (d: FunnelSlice) => ColumnUtil.getFillOpacity(d.selected, d.highlight, false, hasHighlights))\r\n .transition()\r\n .duration(this.animationDuration)\r\n .attr(layout.shapeLayout);\r\n\r\n shapes.exit().remove();\r\n\r\n return shapes;\r\n }\r\n\r\n private animateDefaultDataLabels(options: FunnelAnimationOptions): D3.UpdateSelection {\r\n let dataLabels: D3.UpdateSelection;\r\n\r\n if (options.viewModel.dataLabelsSettings.show && options.viewModel.canShowDataLabels) {\r\n dataLabels = dataLabelUtils.drawDefaultLabelsForFunnelChart(options.viewModel.slices, options.labelGraphicsContext, options.labelLayout, true, this.animationDuration);\r\n }\r\n else {\r\n dataLabelUtils.cleanDataLabels(options.labelGraphicsContext);\r\n }\r\n\r\n return dataLabels;\r\n }\r\n\r\n private animatePercentBars(options: FunnelAnimationOptions): void {\r\n let data: FunnelData = options.viewModel;\r\n let isHidingPercentBars: boolean = options.isHidingPercentBars;\r\n\r\n if (isHidingPercentBars || !data.slices || (data.hasHighlights ? data.slices.length / 2 : data.slices.length) < 2) {\r\n // TODO: call percentBarComponents with flag with empty data to clear drawing smoothly\r\n this.animatePercentBarComponents([], options);\r\n return;\r\n }\r\n\r\n let slices = [data.slices[data.hasHighlights ? 1 : 0], data.slices[data.slices.length - 1]];\r\n let baseline = FunnelChart.getFunnelSliceValue(slices[0]);\r\n\r\n if (baseline <= 0) {\r\n // TODO: call percentBarComponents with flag with empty data to clear drawing smoothly\r\n this.animatePercentBarComponents([], options);\r\n return;\r\n }\r\n\r\n let percentData = slices.map((slice, i) => <FunnelPercent>{\r\n value: FunnelChart.getFunnelSliceValue(slice),\r\n percent: i === 0 ? 1 : FunnelChart.getFunnelSliceValue(slice) / baseline,\r\n isTop: i === 0,\r\n });\r\n\r\n this.animatePercentBarComponents(percentData, options);\r\n }\r\n\r\n private animateToFunnelPercent(context: D3.Selection, targetData: FunnelPercent[], layout: any): D3.Transition.Transition {\r\n return context\r\n .data(targetData)\r\n .transition()\r\n .duration(this.animationDuration)\r\n .attr(layout);\r\n }\r\n\r\n private animatePercentBarComponents(data: FunnelPercent[], options: FunnelAnimationOptions) {\r\n let graphicsContext: D3.Selection = options.percentGraphicsContext;\r\n let layout: IFunnelLayout = options.layout;\r\n let zeroData: FunnelPercent[] = [\r\n { percent: 0, value: 0, isTop: true },\r\n { percent: 0, value: 0, isTop: false },\r\n ];\r\n\r\n // Main line\r\n let mainLine: D3.UpdateSelection = graphicsContext.selectAll(FunnelChart.Selectors.percentBar.mainLine.selector).data(data);\r\n\r\n this.animateToFunnelPercent(mainLine.exit(), zeroData, layout.percentBarLayout.mainLine)\r\n .remove();\r\n\r\n mainLine.enter()\r\n .append('line')\r\n .classed(FunnelChart.Selectors.percentBar.mainLine.class, true)\r\n .data(zeroData)\r\n .attr(layout.percentBarLayout.mainLine);\r\n\r\n this.animateToFunnelPercent(mainLine, data, layout.percentBarLayout.mainLine);\r\n\r\n // Left tick\r\n let leftTick: D3.UpdateSelection = graphicsContext.selectAll(FunnelChart.Selectors.percentBar.leftTick.selector).data(data);\r\n\r\n this.animateToFunnelPercent(leftTick.exit(), zeroData, layout.percentBarLayout.leftTick)\r\n .remove();\r\n \r\n leftTick.enter()\r\n .append('line')\r\n .classed(FunnelChart.Selectors.percentBar.leftTick.class, true)\r\n .data(zeroData)\r\n .attr(layout.percentBarLayout.leftTick);\r\n\r\n this.animateToFunnelPercent(leftTick, data, layout.percentBarLayout.leftTick);\r\n\r\n // Right tick\r\n let rightTick: D3.UpdateSelection = graphicsContext.selectAll(FunnelChart.Selectors.percentBar.rightTick.selector).data(data);\r\n \r\n this.animateToFunnelPercent(rightTick.exit(), zeroData, layout.percentBarLayout.rightTick)\r\n .remove();\r\n\r\n rightTick.enter()\r\n .append('line')\r\n .classed(FunnelChart.Selectors.percentBar.rightTick.class, true)\r\n .data(zeroData)\r\n .attr(layout.percentBarLayout.rightTick);\r\n\r\n this.animateToFunnelPercent(rightTick, data, layout.percentBarLayout.rightTick);\r\n\r\n // Text\r\n let text: D3.UpdateSelection = graphicsContext.selectAll(FunnelChart.Selectors.percentBar.text.selector).data(data);\r\n \r\n this.animateToFunnelPercent(text.exit(), zeroData, layout.percentBarLayout.text)\r\n .remove();\r\n\r\n text.enter()\r\n .append('text')\r\n .classed(FunnelChart.Selectors.percentBar.text.class, true)\r\n .data(zeroData)\r\n .attr(layout.percentBarLayout.text);\r\n\r\n this.animateToFunnelPercent(text, data, layout.percentBarLayout.text)\r\n .text((fp: FunnelPercent) => {\r\n return formattingService.formatValue(fp.percent, valueFormatter.getLocalizedString(\"Percentage1\"));\r\n });\r\n\r\n SVGUtil.flushAllD3TransitionsIfNeeded(options.visualInitOptions);\r\n }\r\n }\r\n}"," /*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n export interface TreemapAnimationOptions extends IAnimationOptions {\r\n viewModel: TreemapData;\r\n nodes: D3.Layout.GraphNode[];\r\n highlightNodes: D3.Layout.GraphNode[];\r\n majorLabeledNodes: D3.Layout.GraphNode[];\r\n minorLabeledNodes: D3.Layout.GraphNode[];\r\n shapeGraphicsContext: D3.Selection;\r\n labelGraphicsContext: D3.Selection;\r\n layout: ITreemapLayout;\r\n labelSettings: VisualDataLabelsSettings;\r\n }\r\n\r\n export interface TreemapAnimationResult extends IAnimationResult {\r\n shapes: D3.UpdateSelection;\r\n highlightShapes: D3.UpdateSelection;\r\n majorLabels: D3.UpdateSelection;\r\n minorLabels: D3.UpdateSelection;\r\n }\r\n\r\n export type ITreemapAnimator = IAnimator<IAnimatorOptions, TreemapAnimationOptions, TreemapAnimationResult>;\r\n\r\n export class WebTreemapAnimator extends BaseAnimator<IAnimatorOptions, TreemapAnimationOptions, TreemapAnimationResult> implements ITreemapAnimator {\r\n previousViewModel: TreemapData;\r\n\r\n constructor(options?: IAnimatorOptions) {\r\n super(options);\r\n }\r\n\r\n public animate(options: TreemapAnimationOptions): TreemapAnimationResult {\r\n let result: TreemapAnimationResult = {\r\n failed: true,\r\n shapes: null,\r\n highlightShapes: null,\r\n majorLabels: null,\r\n minorLabels: null,\r\n };\r\n\r\n let viewModel = options.viewModel;\r\n let previousViewModel = this.previousViewModel;\r\n\r\n if (!previousViewModel) {\r\n // This is the initial drawing of the chart, which has no special animation for now.\r\n }\r\n else if (viewModel.hasHighlights && !previousViewModel.hasHighlights) {\r\n result = this.animateNormalToHighlighted(options);\r\n }\r\n else if (viewModel.hasHighlights && previousViewModel.hasHighlights) {\r\n result = this.animateHighlightedToHighlighted(options);\r\n }\r\n else if (!viewModel.hasHighlights && previousViewModel.hasHighlights) {\r\n result = this.animateHighlightedToNormal(options);\r\n }\r\n\r\n this.previousViewModel = viewModel;\r\n return result;\r\n }\r\n\r\n private animateNormalToHighlighted(options: TreemapAnimationOptions): TreemapAnimationResult {\r\n let hasSelection = false;\r\n let hasHighlights = true;\r\n\r\n let shapes = this.animateDefaultShapes(options.shapeGraphicsContext, options.nodes, hasSelection, hasHighlights, options.layout);\r\n\r\n let highlightShapes = options.shapeGraphicsContext.selectAll('.' + Treemap.HighlightNodeClassName)\r\n .data(options.highlightNodes, (d: TreemapNode) => d.key + \"highlight\");\r\n\r\n highlightShapes.enter().append('rect')\r\n .attr('class', options.layout.highlightShapeClass)\r\n .attr(options.layout.shapeLayout); // Start using the normal shape layout\r\n\r\n highlightShapes\r\n .style(\"fill\", (d: TreemapNode) => Treemap.getFill(d, true))\r\n .style(\"fill-opacity\", (d: TreemapNode) => Treemap.getFillOpacity(d, hasSelection, hasHighlights, true))\r\n .transition()\r\n .duration(this.animationDuration)\r\n .attr(options.layout.highlightShapeLayout); // Animate to the highlighted positions\r\n\r\n highlightShapes.exit().remove();\r\n\r\n let majorLabels = this.animateDefaultMajorLabels(options.labelGraphicsContext, options.majorLabeledNodes, options.labelSettings, options.layout);\r\n let minorLabels = this.animateDefaultMinorLabels(options.labelGraphicsContext, options.minorLabeledNodes, options.labelSettings, options.layout);\r\n\r\n return {\r\n failed: false,\r\n shapes: shapes,\r\n highlightShapes: highlightShapes,\r\n majorLabels: majorLabels,\r\n minorLabels: minorLabels,\r\n };\r\n }\r\n\r\n private animateHighlightedToHighlighted(options: TreemapAnimationOptions): TreemapAnimationResult {\r\n let hasSelection = false;\r\n let hasHighlights = true;\r\n\r\n let shapes = this.animateDefaultShapes(options.shapeGraphicsContext, options.nodes, hasSelection, hasHighlights, options.layout);\r\n\r\n options.shapeGraphicsContext.selectAll('.' + Treemap.HighlightNodeClassName)\r\n .data(options.highlightNodes, (d: TreemapNode) => d.key + \"highlight\");\r\n\r\n let highlightShapes = this.animateDefaultHighlightShapes(options.shapeGraphicsContext, options.highlightNodes, hasSelection, hasHighlights, options.layout);\r\n \r\n let majorLabels = this.animateDefaultMajorLabels(options.labelGraphicsContext, options.majorLabeledNodes, options.labelSettings, options.layout);\r\n let minorLabels = this.animateDefaultMinorLabels(options.labelGraphicsContext, options.minorLabeledNodes, options.labelSettings, options.layout);\r\n\r\n return {\r\n failed: false,\r\n shapes: shapes,\r\n highlightShapes: highlightShapes,\r\n majorLabels: majorLabels,\r\n minorLabels: minorLabels,\r\n };\r\n }\r\n\r\n private animateHighlightedToNormal(options: TreemapAnimationOptions): TreemapAnimationResult {\r\n let hasSelection = options.interactivityService ? options.interactivityService.hasSelection() : false;\r\n\r\n let shapes = options.shapeGraphicsContext.selectAll('.' + Treemap.TreemapNodeClassName)\r\n .data(options.nodes, (d: TreemapNode) => d.key);\r\n\r\n shapes.enter().append('rect')\r\n .attr('class', options.layout.shapeClass);\r\n\r\n shapes\r\n .transition()\r\n .duration(this.animationDuration)\r\n .style(\"fill\", (d: TreemapNode) => Treemap.getFill(d, false))\r\n .style(\"fill-opacity\", (d: TreemapNode) => ColumnUtil.getFillOpacity(d.selected, false, d.selected, !d.selected))\r\n .attr(options.layout.shapeLayout)\r\n .transition()\r\n .duration(0)\r\n .delay(this.animationDuration)\r\n .style(\"fill-opacity\", (d: TreemapNode) => ColumnUtil.getFillOpacity(d.selected, false, hasSelection, false));\r\n\r\n shapes.exit().remove();\r\n\r\n let highlightShapes = options.shapeGraphicsContext.selectAll('.' + Treemap.HighlightNodeClassName)\r\n .data(options.nodes, (d: TreemapNode) => d.key + \"highlight\");\r\n\r\n highlightShapes.enter().append('rect')\r\n .attr('class', options.layout.highlightShapeClass);\r\n\r\n highlightShapes\r\n .style(\"fill\", (d: TreemapNode) => Treemap.getFill(d, true))\r\n .style(\"fill-opacity\", (d: TreemapNode) => ColumnUtil.getFillOpacity(d.selected, true, d.selected, !d.selected))\r\n .transition()\r\n .duration(this.animationDuration)\r\n .attr(hasSelection ? options.layout.zeroShapeLayout : options.layout.shapeLayout) // Animate to the normal shape layout or zero shape layout depending on whether we have a selection or not\r\n .remove();\r\n\r\n highlightShapes.exit().remove();\r\n\r\n let majorLabels = this.animateDefaultMajorLabels(options.labelGraphicsContext, options.majorLabeledNodes, options.labelSettings, options.layout);\r\n let minorLabels = this.animateDefaultMinorLabels(options.labelGraphicsContext, options.minorLabeledNodes, options.labelSettings, options.layout);\r\n\r\n return {\r\n failed: false,\r\n shapes: shapes,\r\n highlightShapes: highlightShapes,\r\n majorLabels: majorLabels,\r\n minorLabels: minorLabels,\r\n };\r\n }\r\n\r\n private animateDefaultShapes(context: D3.Selection, nodes: D3.Layout.GraphNode[], hasSelection: boolean, hasHighlights: boolean, layout: ITreemapLayout): D3.UpdateSelection {\r\n let isHighlightShape = false;\r\n let shapes = context.selectAll('.' + Treemap.TreemapNodeClassName)\r\n .data(nodes, (d: TreemapNode) => d.key);\r\n\r\n shapes.enter().append('rect')\r\n .attr('class', layout.shapeClass);\r\n\r\n shapes\r\n .transition()\r\n .duration(this.animationDuration)\r\n .style(\"fill\", (d: TreemapNode) => Treemap.getFill(d, isHighlightShape))\r\n .style(\"fill-opacity\", (d: TreemapNode) => Treemap.getFillOpacity(d, hasSelection, hasHighlights, isHighlightShape))\r\n .attr(layout.shapeLayout);\r\n\r\n shapes.exit().remove();\r\n\r\n return shapes;\r\n }\r\n\r\n private animateDefaultHighlightShapes(context: D3.Selection, nodes: D3.Layout.GraphNode[], hasSelection: boolean, hasHighlights: boolean, layout: ITreemapLayout): D3.UpdateSelection {\r\n let isHighlightShape = true;\r\n let highlightShapes = context.selectAll('.' + Treemap.HighlightNodeClassName)\r\n .data(nodes, (d) => d.key + \"highlight\");\r\n\r\n highlightShapes.enter().append('rect')\r\n .attr('class', layout.highlightShapeClass);\r\n\r\n highlightShapes\r\n .transition()\r\n .duration(this.animationDuration)\r\n .style(\"fill\", (d: TreemapNode) => Treemap.getFill(d, isHighlightShape))\r\n .style(\"fill-opacity\", (d: TreemapNode) => Treemap.getFillOpacity(d, hasSelection, hasHighlights, isHighlightShape))\r\n .attr(layout.highlightShapeLayout);\r\n\r\n highlightShapes.exit().remove();\r\n return highlightShapes;\r\n }\r\n\r\n private animateDefaultMajorLabels(context: D3.Selection, nodes: D3.Layout.GraphNode[], labelSettings: VisualDataLabelsSettings, layout: ITreemapLayout): D3.UpdateSelection {\r\n let labels = context\r\n .selectAll('.' + Treemap.MajorLabelClassName)\r\n .data(nodes, (d: TreemapNode) => d.key);\r\n\r\n labels.enter().append('text')\r\n .attr('class', layout.majorLabelClass);\r\n\r\n labels\r\n .text(layout.majorLabelText)\r\n .style('fill', () => labelSettings.labelColor)\r\n .transition()\r\n .duration(this.animationDuration)\r\n .attr(layout.majorLabelLayout);\r\n\r\n labels.exit().remove();\r\n\r\n return labels;\r\n }\r\n\r\n private animateDefaultMinorLabels(context: D3.Selection, nodes: D3.Layout.GraphNode[], labelSettings: VisualDataLabelsSettings, layout: ITreemapLayout): D3.UpdateSelection {\r\n let labels = context\r\n .selectAll('.' + Treemap.MinorLabelClassName)\r\n .data(nodes, (d: TreemapNode) => d.key);\r\n\r\n labels.enter().append('text')\r\n .attr('class', layout.minorLabelClass);\r\n\r\n labels\r\n .text(layout.minorLabelText)\r\n .style('fill', () => labelSettings.labelColor)\r\n .transition()\r\n .duration(this.animationDuration)\r\n .attr(layout.minorLabelLayout);\r\n\r\n labels.exit().remove();\r\n\r\n return labels;\r\n }\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n export const animatedTextObjectDescs: data.DataViewObjectDescriptors = {\r\n general: {\r\n properties: {\r\n formatString: {\r\n type: { formatting: { formatString: true } },\r\n },\r\n },\r\n }\r\n };\r\n\r\n export const animatedNumberCapabilities: VisualCapabilities = {\r\n objects: animatedTextObjectDescs,\r\n dataViewMappings: [{\r\n single: { role: \"Values\" }\r\n }],\r\n supportsSelection: false,\r\n };\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n export const basicShapeCapabilities: VisualCapabilities = {\r\n objects: {\r\n line: {\r\n displayName: data.createDisplayNameGetter('Visual_BasicShape_Line'),\r\n properties: {\r\n lineColor: {\r\n displayName: data.createDisplayNameGetter('Visual_BasicShape_LineColor'),\r\n type: { fill: { solid: { color: true } } }\r\n },\r\n transparency: {\r\n displayName: data.createDisplayNameGetter('Visual_Background_Transparency'),\r\n description: data.createDisplayNameGetter('Visual_Background_TransparencyDescription'),\r\n type: { numeric: true }\r\n },\r\n weight: {\r\n displayName: data.createDisplayNameGetter('Visual_BasicShape_Weight'),\r\n type: { numeric: true }\r\n },\r\n roundEdge: {\r\n displayName: data.createDisplayNameGetter('Visual_BasicShape_RoundEdges'),\r\n type: { numeric: true }\r\n }\r\n }\r\n },\r\n fill: {\r\n displayName: data.createDisplayNameGetter('Visual_Fill'),\r\n properties: {\r\n show: {\r\n displayName: data.createDisplayNameGetter('Visual_Show'),\r\n type: { bool: true }\r\n },\r\n fillColor: {\r\n displayName: data.createDisplayNameGetter('Visual_BasicShape_FillColor'),\r\n type: { fill: { solid: { color: true } } }\r\n },\r\n transparency: {\r\n displayName: data.createDisplayNameGetter('Visual_Background_Transparency'),\r\n description: data.createDisplayNameGetter('Visual_Background_TransparencyDescription'),\r\n type: { numeric: true }\r\n },\r\n }\r\n },\r\n rotation: {\r\n displayName: data.createDisplayNameGetter('Visual_BasicShape_Rotate'),\r\n properties: {\r\n angle: {\r\n displayName: data.createDisplayNameGetter('Visual_BasicShape_Rotate'),\r\n type: { numeric: true }\r\n }\r\n }\r\n },\r\n general: {\r\n properties: {\r\n shapeType: {\r\n type: { text: true }\r\n }\r\n }\r\n }\r\n },\r\n suppressDefaultTitle: true,\r\n suppressDefaultPadding: true,\r\n canRotate: false,\r\n supportsSelection: false,\r\n };\r\n\r\n export const basicShapeProps = {\r\n general: {\r\n shapeType: <DataViewObjectPropertyIdentifier>{ objectName: 'general', propertyName: 'shapeType' },\r\n },\r\n line: {\r\n transparency: <DataViewObjectPropertyIdentifier>{ objectName: 'line', propertyName: 'transparency' },\r\n weight: <DataViewObjectPropertyIdentifier>{ objectName: 'line', propertyName: 'weight' },\r\n roundEdge: <DataViewObjectPropertyIdentifier>{ objectName: 'line', propertyName: 'roundEdge' },\r\n lineColor: <DataViewObjectPropertyIdentifier>{ objectName: 'line', propertyName: 'lineColor' }\r\n },\r\n fill: {\r\n transparency: <DataViewObjectPropertyIdentifier>{ objectName: 'fill', propertyName: 'transparency' },\r\n fillColor: <DataViewObjectPropertyIdentifier>{ objectName: 'fill', propertyName: 'fillColor' },\r\n show: <DataViewObjectPropertyIdentifier>{ objectName: 'fill', propertyName: 'show' }\r\n },\r\n rotation: {\r\n angle: <DataViewObjectPropertyIdentifier>{ objectName: 'rotation', propertyName: 'angle' }\r\n }\r\n };\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n export function getColumnChartCapabilities(transposeAxes: boolean = false): VisualCapabilities {\r\n return {\r\n dataRoles: [\r\n {\r\n name: 'Category',\r\n kind: VisualDataRoleKind.Grouping,\r\n displayName: data.createDisplayNameGetter('Role_DisplayName_Axis'),\r\n description: data.createDisplayNameGetter('Role_DisplayName_AxisDescription')\r\n }, {\r\n name: 'Series',\r\n kind: VisualDataRoleKind.Grouping,\r\n displayName: data.createDisplayNameGetter('Role_DisplayName_Legend'),\r\n description: data.createDisplayNameGetter('Role_DisplayName_LegendDescription')\r\n }, {\r\n name: 'Y',\r\n kind: VisualDataRoleKind.Measure,\r\n displayName: data.createDisplayNameGetter('Role_DisplayName_Value'),\r\n requiredTypes: [{ numeric: true }, { integer: true }],\r\n }, {\r\n name: 'Gradient',\r\n kind: VisualDataRoleKind.Measure,\r\n displayName: data.createDisplayNameGetter('Role_DisplayName_Gradient'),\r\n description: data.createDisplayNameGetter('Role_DisplayName_GradientDescription'),\r\n requiredTypes: [{ numeric: true }, { integer: true }],\r\n }\r\n ],\r\n objects: {\r\n general: {\r\n displayName: data.createDisplayNameGetter('Visual_General'),\r\n properties: {\r\n formatString: {\r\n type: { formatting: { formatString: true } },\r\n },\r\n },\r\n },\r\n legend: {\r\n displayName: data.createDisplayNameGetter('Visual_Legend'),\r\n description: data.createDisplayNameGetter('Visual_LegendDescription'),\r\n properties: {\r\n show: {\r\n displayName: data.createDisplayNameGetter('Visual_Show'),\r\n type: { bool: true }\r\n },\r\n position: {\r\n displayName: data.createDisplayNameGetter('Visual_LegendPosition'),\r\n description: data.createDisplayNameGetter('Visual_LegendPositionDescription'),\r\n type: { enumeration: legendPosition.type },\r\n },\r\n showTitle: {\r\n displayName: data.createDisplayNameGetter('Visual_LegendShowTitle'),\r\n description: data.createDisplayNameGetter('Visual_LegendShowTitleDescription'),\r\n type: { bool: true }\r\n },\r\n titleText: {\r\n displayName: data.createDisplayNameGetter('Visual_LegendName'),\r\n description: data.createDisplayNameGetter('Visual_LegendNameDescription'),\r\n type: { text: true },\r\n suppressFormatPainterCopy: true\r\n },\r\n labelColor: {\r\n displayName: data.createDisplayNameGetter('Visual_LegendTitleColor'),\r\n type: { fill: { solid: { color: true } } }\r\n },\r\n fontSize: {\r\n displayName: data.createDisplayNameGetter('Visual_TextSize'),\r\n type: { formatting: { fontSize: true } }\r\n }\r\n }\r\n },\r\n categoryAxis: {\r\n displayName: transposeAxes ? data.createDisplayNameGetter('Visual_YAxis') : data.createDisplayNameGetter('Visual_XAxis'),\r\n properties: {\r\n show: {\r\n displayName: data.createDisplayNameGetter('Visual_Show'),\r\n type: { bool: true },\r\n },\r\n position: {\r\n displayName: data.createDisplayNameGetter('Visual_YAxis_Position'),\r\n description: data.createDisplayNameGetter('Visual_YAxis_PositionDescription'),\r\n type: { enumeration: yAxisPosition.type },\r\n },\r\n axisScale: {\r\n displayName: data.createDisplayNameGetter('Visual_Axis_Scale'),\r\n type: { enumeration: axisScale.type }\r\n },\r\n start: {\r\n displayName: data.createDisplayNameGetter('Visual_Axis_Start'),\r\n description: data.createDisplayNameGetter('Visual_Axis_StartDescription'),\r\n type: { numeric: true },\r\n placeHolderText: data.createDisplayNameGetter('Visual_Precision_Auto'),\r\n suppressFormatPainterCopy: true,\r\n },\r\n end: {\r\n displayName: data.createDisplayNameGetter('Visual_Axis_End'),\r\n description: data.createDisplayNameGetter('Visual_Axis_EndDescription'),\r\n placeHolderText: data.createDisplayNameGetter('Visual_Precision_Auto'),\r\n type: { numeric: true },\r\n suppressFormatPainterCopy: true,\r\n },\r\n axisType: {\r\n displayName: data.createDisplayNameGetter('Visual_Axis_Type'),\r\n type: { enumeration: axisType.type },\r\n },\r\n showAxisTitle: {\r\n displayName: data.createDisplayNameGetter('Visual_Axis_Title'),\r\n description: transposeAxes ? data.createDisplayNameGetter('Visual_Axis_YTitleDescription') : data.createDisplayNameGetter('Visual_Axis_XTitleDescription'),\r\n type: { bool: true }\r\n },\r\n axisStyle: {\r\n displayName: data.createDisplayNameGetter('Visual_Axis_Style'),\r\n type: { enumeration: axisStyle.type }\r\n },\r\n labelColor: {\r\n displayName: data.createDisplayNameGetter('Visual_Axis_LabelColor'),\r\n type: { fill: { solid: { color: true } } }\r\n },\r\n labelDisplayUnits: {\r\n displayName: data.createDisplayNameGetter('Visual_DisplayUnits'),\r\n type: { formatting: { labelDisplayUnits: true } },\r\n },\r\n labelPrecision: {\r\n displayName: data.createDisplayNameGetter('Visual_Precision'),\r\n placeHolderText: data.createDisplayNameGetter('Visual_DisplayUnits_Auto'),\r\n type: { numeric: true },\r\n },\r\n }\r\n },\r\n valueAxis: {\r\n displayName: transposeAxes ? data.createDisplayNameGetter('Visual_XAxis') : data.createDisplayNameGetter('Visual_YAxis'),\r\n properties: {\r\n show: {\r\n displayName: data.createDisplayNameGetter('Visual_Show'),\r\n type: { bool: true },\r\n },\r\n position: {\r\n displayName: data.createDisplayNameGetter('Visual_YAxis_Position'),\r\n description: data.createDisplayNameGetter('Visual_YAxis_PositionDescription'),\r\n type: { enumeration: yAxisPosition.type },\r\n },\r\n axisScale: {\r\n displayName: data.createDisplayNameGetter('Visual_Axis_Scale'),\r\n type: { enumeration: axisScale.type }\r\n },\r\n start: {\r\n displayName: data.createDisplayNameGetter('Visual_Axis_Start'),\r\n description: data.createDisplayNameGetter('Visual_Axis_StartDescription'),\r\n type: { numeric: true },\r\n placeHolderText: data.createDisplayNameGetter('Visual_Precision_Auto'),\r\n suppressFormatPainterCopy: true,\r\n },\r\n end: {\r\n displayName: data.createDisplayNameGetter('Visual_Axis_End'),\r\n description: data.createDisplayNameGetter('Visual_Axis_EndDescription'),\r\n type: { numeric: true },\r\n placeHolderText: data.createDisplayNameGetter('Visual_Precision_Auto'),\r\n suppressFormatPainterCopy: true,\r\n },\r\n intersection: {\r\n displayName: data.createDisplayNameGetter('Visual_Axis_Intersection'),\r\n type: { numeric: true },\r\n placeHolderText: data.createDisplayNameGetter('Visual_Precision_Auto'),\r\n },\r\n showAxisTitle: {\r\n displayName: data.createDisplayNameGetter('Visual_Axis_Title'),\r\n description: transposeAxes ? data.createDisplayNameGetter('Visual_Axis_YTitleDescription') : data.createDisplayNameGetter('Visual_Axis_XTitleDescription'),\r\n type: { bool: true }\r\n },\r\n axisStyle: {\r\n displayName: data.createDisplayNameGetter('Visual_Axis_Style'),\r\n type: { enumeration: axisStyle.type }\r\n },\r\n labelColor: {\r\n displayName: data.createDisplayNameGetter('Visual_Axis_LabelColor'),\r\n type: { fill: { solid: { color: true } } }\r\n },\r\n labelDisplayUnits: {\r\n displayName: data.createDisplayNameGetter('Visual_DisplayUnits'),\r\n type: { formatting: { labelDisplayUnits: true } },\r\n },\r\n labelPrecision: {\r\n displayName: data.createDisplayNameGetter('Visual_Precision'),\r\n placeHolderText: data.createDisplayNameGetter('Visual_DisplayUnits_Auto'),\r\n type: { numeric: true },\r\n },\r\n\r\n }\r\n },\r\n y1AxisReferenceLine: {\r\n displayName: data.createDisplayNameGetter('Visual_Reference_Line'),\r\n description: data.createDisplayNameGetter('Visual_Reference_Line_Description'),\r\n properties: {\r\n show: {\r\n displayName: data.createDisplayNameGetter('Visual_Show'),\r\n type: { bool: true }\r\n },\r\n value: {\r\n displayName: data.createDisplayNameGetter('Visual_Reference_Line_Value'),\r\n description: data.createDisplayNameGetter('Visual_Reference_Line_Value_Description'),\r\n type: { numeric: true }\r\n },\r\n lineColor: {\r\n displayName: data.createDisplayNameGetter('Visual_Reference_Line_Color'),\r\n description: data.createDisplayNameGetter('Visual_Reference_Line_Color_Description'),\r\n type: { fill: { solid: { color: true } } }\r\n },\r\n transparency: {\r\n displayName: data.createDisplayNameGetter('Visual_Reference_Line_Transparency'),\r\n description: data.createDisplayNameGetter('Visual_Reference_Line_Transparency_Description'),\r\n type: { numeric: true }\r\n },\r\n style: {\r\n displayName: data.createDisplayNameGetter('Visual_Reference_Line_Style'),\r\n description: data.createDisplayNameGetter('Visual_Reference_Line_Style_Description'),\r\n type: { enumeration: lineStyle.type }\r\n },\r\n position: {\r\n displayName: data.createDisplayNameGetter('Visual_Reference_Line_Arrange'),\r\n description: data.createDisplayNameGetter('Visual_Reference_Line_Arrange_Description'),\r\n type: { enumeration: referenceLinePosition.type }\r\n },\r\n dataLabelShow: {\r\n displayName: data.createDisplayNameGetter(\"Visual_Reference_Line_Data_Label\"),\r\n description: data.createDisplayNameGetter('Visual_Reference_Line_Data_Label_Show_Description'),\r\n type: { bool: true }\r\n },\r\n dataLabelColor: {\r\n displayName: data.createDisplayNameGetter(\"Visual_Reference_Line_Data_Label_Color\"),\r\n description: data.createDisplayNameGetter('Visual_Reference_Line_Data_Label_Color_Description'),\r\n type: { fill: { solid: { color: true } } }\r\n },\r\n dataLabelDecimalPoints: {\r\n displayName: data.createDisplayNameGetter(\"Visual_Reference_Line_Data_Decimal_Points\"),\r\n placeHolderText: data.createDisplayNameGetter('Visual_Precision_Auto'),\r\n type: { numeric: true }\r\n },\r\n dataLabelHorizontalPosition: {\r\n displayName: data.createDisplayNameGetter(\"Visual_Reference_Line_Data_Horizontal_Position\"),\r\n description: data.createDisplayNameGetter('Visual_Reference_Line_Data_Label_Horizontal_Position_Description'),\r\n type: { enumeration: referenceLineDataLabelHorizontalPosition.type }\r\n },\r\n dataLabelVerticalPosition: {\r\n displayName: data.createDisplayNameGetter(\"Visual_Reference_Line_Data_Vertical_Position\"),\r\n description: data.createDisplayNameGetter('Visual_Reference_Line_Data_Label_Vertical_Position_Description'),\r\n type: { enumeration: referenceLineDataLabelVerticalPosition.type }\r\n },\r\n },\r\n },\r\n dataPoint: {\r\n displayName: data.createDisplayNameGetter('Visual_DataPoint'),\r\n description: data.createDisplayNameGetter('Visual_DataPointDescription'),\r\n properties: {\r\n defaultColor: {\r\n displayName: data.createDisplayNameGetter('Visual_DefaultColor'),\r\n type: { fill: { solid: { color: true } } }\r\n },\r\n showAllDataPoints: {\r\n displayName: data.createDisplayNameGetter('Visual_DataPoint_Show_All'),\r\n type: { bool: true }\r\n },\r\n fill: {\r\n displayName: data.createDisplayNameGetter('Visual_Fill'),\r\n type: { fill: { solid: { color: true } } }\r\n },\r\n fillRule: {\r\n displayName: data.createDisplayNameGetter('Visual_Gradient'),\r\n type: { fillRule: {} },\r\n rule: {\r\n inputRole: 'Gradient',\r\n output: {\r\n property: 'fill',\r\n selector: ['Category'],\r\n },\r\n },\r\n }\r\n }\r\n }, \r\n labels: {\r\n displayName: data.createDisplayNameGetter('Visual_DataPointsLabels'),\r\n description: data.createDisplayNameGetter('Visual_DataPointsLabelsDescription'),\r\n properties: {\r\n show: {\r\n displayName: data.createDisplayNameGetter('Visual_Show'),\r\n type: { bool: true }\r\n },\r\n showSeries: {\r\n displayName: data.createDisplayNameGetter('Visual_Show'),\r\n type: { bool: true }\r\n },\r\n color: {\r\n displayName: data.createDisplayNameGetter('Visual_LabelsFill'),\r\n description: data.createDisplayNameGetter('Visual_LabelsFillDescription'),\r\n type: { fill: { solid: { color: true } } }\r\n },\r\n labelDisplayUnits: {\r\n displayName: data.createDisplayNameGetter('Visual_DisplayUnits'),\r\n description: data.createDisplayNameGetter('Visual_DisplayUnitsDescription'),\r\n type: { formatting: { labelDisplayUnits: true } },\r\n suppressFormatPainterCopy: true\r\n },\r\n labelPrecision: {\r\n displayName: data.createDisplayNameGetter('Visual_Precision'),\r\n description: data.createDisplayNameGetter('Visual_PrecisionDescription'),\r\n placeHolderText: data.createDisplayNameGetter('Visual_Precision_Auto'),\r\n type: { numeric: true },\r\n suppressFormatPainterCopy: true\r\n },\r\n showAll: {\r\n displayName: data.createDisplayNameGetter('Visual_LabelSeriesShowAll'), \r\n type: { bool: true } \r\n },\r\n fontSize: {\r\n displayName: data.createDisplayNameGetter('Visual_TextSize'),\r\n type: { formatting: { fontSize: true } }\r\n },\r\n },\r\n },\r\n plotArea: {\r\n displayName: data.createDisplayNameGetter('Visual_Plot'),\r\n //description: data.createDisplayNameGetter('Visual_PlotDescription'),\r\n properties: {\r\n transparency: {\r\n displayName: data.createDisplayNameGetter('Visual_Background_Transparency'),\r\n type: { numeric: true },\r\n },\r\n image: {\r\n type: { image: {} },\r\n },\r\n },\r\n },\r\n },\r\n dataViewMappings: [{\r\n conditions: [\r\n { 'Category': { max: 1 }, 'Series': { max: 0 }, 'Gradient': { max: 0 } },\r\n { 'Category': { max: 1 }, 'Series': { min: 1, max: 1 }, 'Y': { max: 1 }, 'Gradient': { max: 0 } },\r\n { 'Category': { max: 1 }, 'Series': { max: 0 }, 'Y': { min: 0, max: 1 }, 'Gradient': { max: 1 } },\r\n ],\r\n categorical: {\r\n categories: {\r\n for: { in: 'Category' },\r\n dataReductionAlgorithm: { top: {} }\r\n },\r\n values: {\r\n group: {\r\n by: 'Series',\r\n select: [{ for: { in: 'Y' } }, { bind: { to: 'Gradient' } }],\r\n dataReductionAlgorithm: { top: {} }\r\n }\r\n },\r\n rowCount: { preferred: { min: 2 }, supported: { min: 0 } }\r\n },\r\n }],\r\n supportsHighlight: true,\r\n sorting: {\r\n default: {},\r\n },\r\n drilldown: {\r\n roles: ['Category']\r\n },\r\n };\r\n }\r\n\r\n export const columnChartProps = {\r\n dataPoint: {\r\n defaultColor: <DataViewObjectPropertyIdentifier>{ objectName: 'dataPoint', propertyName: 'defaultColor' },\r\n fill: <DataViewObjectPropertyIdentifier>{ objectName: 'dataPoint', propertyName: 'fill' },\r\n showAllDataPoints: <DataViewObjectPropertyIdentifier>{ objectName: 'dataPoint', propertyName: 'showAllDataPoints' },\r\n },\r\n general: {\r\n formatString: <DataViewObjectPropertyIdentifier>{ objectName: 'general', propertyName: 'formatString' },\r\n },\r\n categoryAxis: {\r\n axisType: <DataViewObjectPropertyIdentifier>{ objectName: 'categoryAxis', propertyName: 'axisType' },\r\n },\r\n legend: {\r\n labelColor: <DataViewObjectPropertyIdentifier>{ objectName: 'legend', propertyName: 'labelColor' },\r\n },\r\n plotArea: {\r\n image: <DataViewObjectPropertyIdentifier>{ objectName: 'plotArea', propertyName: 'image' },\r\n transparency: <DataViewObjectPropertyIdentifier>{ objectName: 'plotArea', propertyName: 'transparency' },\r\n },\r\n };\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n export const comboChartCapabilities: VisualCapabilities = {\r\n dataRoles: [\r\n {\r\n name: 'Category',\r\n kind: VisualDataRoleKind.Grouping,\r\n displayName: data.createDisplayNameGetter('Role_ComboChart_Category'),\r\n description: data.createDisplayNameGetter('Role_ComboChart_CategoryDescription')\r\n }, {\r\n name: 'Series',\r\n kind: VisualDataRoleKind.Grouping,\r\n displayName: data.createDisplayNameGetter('Role_ComboChart_Series'),\r\n }, {\r\n name: 'Y',\r\n kind: VisualDataRoleKind.Measure,\r\n displayName: data.createDisplayNameGetter('Role_ComboChart_Y'),\r\n description: data.createDisplayNameGetter('Role_ComboChart_YDescription'),\r\n requiredTypes: [{ numeric: true }, { integer: true }],\r\n }, {\r\n name: 'Y2',\r\n kind: VisualDataRoleKind.Measure,\r\n displayName: data.createDisplayNameGetter('Role_ComboChart_Y2'),\r\n description: data.createDisplayNameGetter('Role_ComboChart_Y2Description'),\r\n requiredTypes: [{ numeric: true }, { integer: true }],\r\n },\r\n ],\r\n objects: {\r\n general: {\r\n properties: {\r\n formatString: {\r\n type: { formatting: { formatString: true } },\r\n },\r\n visualType1: {\r\n type: { text: true }\r\n },\r\n visualType2: {\r\n type: { text: true }\r\n },\r\n },\r\n },\r\n legend: {\r\n displayName: data.createDisplayNameGetter('Visual_Legend'),\r\n description: data.createDisplayNameGetter('Visual_LegendDescription'),\r\n properties: {\r\n show: {\r\n displayName: data.createDisplayNameGetter('Visual_Show'),\r\n type: { bool: true }\r\n },\r\n position: {\r\n displayName: data.createDisplayNameGetter('Visual_LegendPosition'),\r\n description: data.createDisplayNameGetter('Visual_LegendPositionDescription'),\r\n type: { enumeration: legendPosition.type }\r\n },\r\n showTitle: {\r\n displayName: data.createDisplayNameGetter('Visual_LegendShowTitle'),\r\n description: data.createDisplayNameGetter('Visual_LegendShowTitleDescription'),\r\n type: { bool: true }\r\n },\r\n titleText: {\r\n displayName: data.createDisplayNameGetter('Visual_LegendName'),\r\n description: data.createDisplayNameGetter('Visual_LegendNameDescription'),\r\n type: { text: true },\r\n suppressFormatPainterCopy: true\r\n },\r\n labelColor: {\r\n displayName: data.createDisplayNameGetter('Visual_LegendTitleColor'),\r\n type: { fill: { solid: { color: true } } }\r\n },\r\n fontSize: {\r\n displayName: data.createDisplayNameGetter('Visual_TextSize'),\r\n type: { formatting: { fontSize: true } }\r\n }\r\n }\r\n },\r\n categoryAxis: {\r\n displayName: data.createDisplayNameGetter('Visual_XAxis'),\r\n properties: {\r\n show: {\r\n displayName: data.createDisplayNameGetter('Visual_Show'),\r\n type: { bool: true },\r\n },\r\n axisScale: {\r\n displayName: data.createDisplayNameGetter('Visual_Axis_Scale'),\r\n type: { enumeration: axisScale.type }\r\n },\r\n start: {\r\n displayName: data.createDisplayNameGetter('Visual_Axis_Start'),\r\n description: data.createDisplayNameGetter('Visual_Axis_StartDescription'),\r\n type: { numeric: true },\r\n suppressFormatPainterCopy: true,\r\n },\r\n end: {\r\n displayName: data.createDisplayNameGetter('Visual_Axis_End'),\r\n description: data.createDisplayNameGetter('Visual_Axis_EndDescription'),\r\n type: { numeric: true },\r\n suppressFormatPainterCopy: true,\r\n },\r\n axisType: {\r\n displayName: data.createDisplayNameGetter('Visual_Axis_Type'),\r\n type: { enumeration: axisType.type },\r\n },\r\n showAxisTitle: {\r\n displayName: data.createDisplayNameGetter('Visual_Axis_Title'),\r\n description: data.createDisplayNameGetter('Visual_Axis_XTitleDescription'),\r\n type: { bool: true }\r\n },\r\n axisStyle: {\r\n displayName: data.createDisplayNameGetter('Visual_Axis_Style'),\r\n type: { enumeration: axisStyle.type }\r\n },\r\n labelDisplayUnits: {\r\n displayName: data.createDisplayNameGetter('Visual_DisplayUnits'),\r\n type: { formatting: { labelDisplayUnits: true } },\r\n },\r\n labelPrecision: {\r\n displayName: data.createDisplayNameGetter('Visual_Precision'),\r\n placeHolderText: data.createDisplayNameGetter('Visual_Precision_Auto'),\r\n type: { numeric: true },\r\n }\r\n }\r\n },\r\n valueAxis: {\r\n displayName: data.createDisplayNameGetter('Visual_YAxis'),\r\n properties: {\r\n show: {\r\n displayName: data.createDisplayNameGetter('Visual_Show'),\r\n type: { bool: true },\r\n },\r\n axisLabel: {\r\n displayName: data.createDisplayNameGetter('Visual_YAxis_ColumnTitle'),\r\n type: { none: true },\r\n },\r\n position: {\r\n displayName: data.createDisplayNameGetter('Visual_YAxis_Position'),\r\n type: { enumeration: yAxisPosition.type },\r\n },\r\n axisScale: {\r\n displayName: data.createDisplayNameGetter('Visual_Axis_Scale'),\r\n type: { enumeration: axisScale.type }\r\n },\r\n start: {\r\n displayName: data.createDisplayNameGetter('Visual_Axis_Start'),\r\n description: data.createDisplayNameGetter('Visual_Axis_StartDescription'),\r\n type: { numeric: true },\r\n suppressFormatPainterCopy: true,\r\n },\r\n end: {\r\n displayName: data.createDisplayNameGetter('Visual_Axis_End'),\r\n description: data.createDisplayNameGetter('Visual_Axis_EndDescription'),\r\n type: { numeric: true },\r\n suppressFormatPainterCopy: true,\r\n },\r\n showAxisTitle: {\r\n displayName: data.createDisplayNameGetter('Visual_Axis_Title'),\r\n description: data.createDisplayNameGetter('Visual_Axis_YTitleDescription'),\r\n type: { bool: true }\r\n },\r\n axisStyle: {\r\n displayName: data.createDisplayNameGetter('Visual_Axis_Style'),\r\n type: { enumeration: axisStyle.type }\r\n },\r\n labelDisplayUnits: {\r\n displayName: data.createDisplayNameGetter('Visual_DisplayUnits'),\r\n type: { formatting: { labelDisplayUnits: true } },\r\n },\r\n labelPrecision: {\r\n displayName: data.createDisplayNameGetter('Visual_Precision'),\r\n placeHolderText: data.createDisplayNameGetter('Visual_Precision_Auto'),\r\n type: { numeric: true },\r\n },\r\n secShow: {\r\n displayName: data.createDisplayNameGetter('Visual_YAxis_ShowSecondary'),\r\n type: { bool: true },\r\n },\r\n secAxisLabel: {\r\n displayName: data.createDisplayNameGetter('Visual_YAxis_LineTitle'),\r\n type: { none: true },\r\n },\r\n secPosition: {\r\n displayName: data.createDisplayNameGetter('Visual_YAxis_Position'),\r\n type: { enumeration: yAxisPosition.type },\r\n },\r\n secAxisScale: {\r\n displayName: data.createDisplayNameGetter('Visual_Axis_Scale'),\r\n type: { enumeration: axisScale.type },\r\n },\r\n secStart: {\r\n displayName: data.createDisplayNameGetter('Visual_Axis_Start'),\r\n description: data.createDisplayNameGetter('Visual_Axis_StartDescription'),\r\n type: { numeric: true },\r\n },\r\n secEnd: {\r\n displayName: data.createDisplayNameGetter('Visual_Axis_End'),\r\n description: data.createDisplayNameGetter('Visual_Axis_EndDescription'),\r\n type: { numeric: true },\r\n },\r\n secShowAxisTitle: {\r\n displayName: data.createDisplayNameGetter('Visual_Axis_Title'),\r\n description: data.createDisplayNameGetter('Visual_Axis_YTitleDescription'),\r\n type: { bool: true },\r\n },\r\n secAxisStyle: {\r\n displayName: data.createDisplayNameGetter('Visual_Axis_Style'),\r\n type: { enumeration: axisStyle.type },\r\n },\r\n secLabelDisplayUnits: {\r\n displayName: data.createDisplayNameGetter('Visual_DisplayUnits'),\r\n type: { formatting: { labelDisplayUnits: true } },\r\n },\r\n secLabelPrecision: {\r\n displayName: data.createDisplayNameGetter('Visual_Precision'),\r\n placeHolderText: data.createDisplayNameGetter('Visual_Precision_Auto'),\r\n type: { numeric: true },\r\n }\r\n }\r\n },\r\n dataPoint: {\r\n displayName: data.createDisplayNameGetter('Visual_DataPoint'),\r\n description: data.createDisplayNameGetter('Visual_DataPointDescription'),\r\n properties: {\r\n defaultColor: {\r\n displayName: data.createDisplayNameGetter('Visual_DefaultColor'),\r\n type: { fill: { solid: { color: true } } }\r\n },\r\n showAllDataPoints: {\r\n displayName: data.createDisplayNameGetter('Visual_DataPoint_Show_All'),\r\n type: { bool: true }\r\n },\r\n fill: {\r\n displayName: data.createDisplayNameGetter('Visual_Fill'),\r\n type: { fill: { solid: { color: true } } }\r\n },\r\n fillRule: {\r\n displayName: data.createDisplayNameGetter('Visual_Gradient'),\r\n type: { fillRule: {} },\r\n rule: {\r\n inputRole: 'Gradient',\r\n output: {\r\n property: 'fill',\r\n selector: ['Category'],\r\n },\r\n },\r\n }\r\n }\r\n },\r\n labels: {\r\n displayName: data.createDisplayNameGetter('Visual_DataPointsLabels'),\r\n description: data.createDisplayNameGetter('Visual_DataPointsLabelsDescription'),\r\n properties: {\r\n show: {\r\n displayName: data.createDisplayNameGetter('Visual_Show'),\r\n type: { bool: true }\r\n },\r\n color: {\r\n displayName: data.createDisplayNameGetter('Visual_LabelsFill'),\r\n description: data.createDisplayNameGetter('Visual_LabelsFillDescription'),\r\n type: { fill: { solid: { color: true } } }\r\n },\r\n labelDisplayUnits: {\r\n displayName: data.createDisplayNameGetter('Visual_DisplayUnits'),\r\n description: data.createDisplayNameGetter('Visual_DisplayUnitsDescription'),\r\n type: { formatting: { labelDisplayUnits: true } },\r\n suppressFormatPainterCopy: true,\r\n },\r\n labelPrecision: {\r\n displayName: data.createDisplayNameGetter('Visual_Precision'),\r\n description: data.createDisplayNameGetter('Visual_PrecisionDescription'),\r\n placeHolderText: data.createDisplayNameGetter('Visual_Precision_Auto'),\r\n type: { numeric: true },\r\n suppressFormatPainterCopy: true,\r\n },\r\n fontSize: {\r\n displayName: data.createDisplayNameGetter('Visual_TextSize'),\r\n type: { formatting: { fontSize: true } }\r\n },\r\n },\r\n },\r\n },\r\n dataViewMappings: [\r\n {\r\n conditions: [\r\n { 'Category': { max: 1 }, 'Series': { max: 0 } },\r\n { 'Category': { max: 1 }, 'Series': { min: 1, max: 1 }, 'Y': { max: 1 } },\r\n ],\r\n categorical: {\r\n categories: {\r\n for: { in: 'Category' },\r\n dataReductionAlgorithm: { top: {} }\r\n },\r\n values: {\r\n group: {\r\n by: 'Series',\r\n select: [\r\n { for: { in: 'Y' } }\r\n ],\r\n dataReductionAlgorithm: { top: {} }\r\n }\r\n },\r\n rowCount: { preferred: { min: 2 }, supported: { min: 0 } }\r\n }\r\n }, {\r\n conditions: [\r\n { 'Category': { max: 1 }, 'Series': { max: 0 }, 'Y2': { min: 1 } },\r\n { 'Category': { max: 1 }, 'Series': { min: 1, max: 1 }, 'Y': { max: 1 }, 'Y2': { min: 1 } },\r\n ],\r\n categorical: {\r\n categories: {\r\n for: { in: 'Category' },\r\n dataReductionAlgorithm: { top: {} }\r\n },\r\n values: {\r\n select: [\r\n { for: { in: 'Y2' } }\r\n ],\r\n dataReductionAlgorithm: { top: {} }\r\n },\r\n rowCount: { preferred: { min: 2 }, supported: { min: 0 } }\r\n },\r\n }\r\n ],\r\n supportsHighlight: true,\r\n sorting: {\r\n default: {},\r\n },\r\n drilldown: {\r\n roles: ['Category']\r\n },\r\n };\r\n\r\n export const comboChartProps = {\r\n general: {\r\n formatString: <DataViewObjectPropertyIdentifier>{ objectName: 'general', propertyName: 'formatString' },\r\n },\r\n valueAxis: {\r\n secShow: <DataViewObjectPropertyIdentifier>{ objectName: 'valueAxis', propertyName: 'secShow' },\r\n },\r\n legend: {\r\n labelColor: <DataViewObjectPropertyIdentifier>{ objectName: 'legend', propertyName: 'labelColor' },\r\n },\r\n };\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n export const donutChartCapabilities: VisualCapabilities = {\r\n dataRoles: [\r\n {\r\n name: 'Category',\r\n kind: VisualDataRoleKind.Grouping,\r\n displayName: data.createDisplayNameGetter('Role_DisplayName_Legend'),\r\n description: data.createDisplayNameGetter('Role_DisplayName_LegendDescription')\r\n }, {\r\n name: 'Series',\r\n kind: VisualDataRoleKind.Grouping,\r\n displayName: data.createDisplayNameGetter('Role_DisplayName_Details'),\r\n description: data.createDisplayNameGetter('Role_DisplayName_DetailsDonutChartDescription'),\r\n\r\n }, {\r\n name: 'Y',\r\n kind: VisualDataRoleKind.Measure,\r\n displayName: data.createDisplayNameGetter('Role_DisplayName_Values'),\r\n description: data.createDisplayNameGetter('Role_DisplayName_ValuesDescription'),\r\n requiredTypes: [{ numeric: true }, { integer: true }],\r\n }\r\n ],\r\n objects:{ \r\n general: {\r\n displayName: data.createDisplayNameGetter('Visual_General'),\r\n properties: {\r\n formatString: {\r\n type: { formatting: { formatString: true } },\r\n },\r\n },\r\n },\r\n legend: {\r\n displayName: data.createDisplayNameGetter('Visual_Legend'),\r\n description: data.createDisplayNameGetter('Visual_LegendDescription'),\r\n properties: {\r\n show: {\r\n displayName: data.createDisplayNameGetter('Visual_Show'),\r\n type: { bool: true }\r\n },\r\n position: {\r\n displayName: data.createDisplayNameGetter('Visual_LegendPosition'),\r\n description: data.createDisplayNameGetter('Visual_LegendPositionDescription'),\r\n type: { enumeration: legendPosition.type }\r\n },\r\n showTitle: {\r\n displayName: data.createDisplayNameGetter('Visual_LegendShowTitle'),\r\n description: data.createDisplayNameGetter('Visual_LegendShowTitleDescription'),\r\n type: { bool: true }\r\n },\r\n titleText: {\r\n displayName: data.createDisplayNameGetter('Visual_LegendName'),\r\n description: data.createDisplayNameGetter('Visual_LegendNameDescription'),\r\n type: { text: true },\r\n suppressFormatPainterCopy: true\r\n },\r\n labelColor: {\r\n displayName: data.createDisplayNameGetter('Visual_LegendTitleColor'),\r\n type: { fill: { solid: { color: true } } }\r\n },\r\n fontSize: {\r\n displayName: data.createDisplayNameGetter('Visual_TextSize'),\r\n type: { formatting: { fontSize: true } }\r\n }\r\n }\r\n },\r\n dataPoint: {\r\n displayName: data.createDisplayNameGetter('Visual_DataPoint'),\r\n description: data.createDisplayNameGetter('Visual_DataPointDescription'),\r\n properties: {\r\n defaultColor: {\r\n displayName: data.createDisplayNameGetter('Visual_DefaultColor'),\r\n type: { fill: { solid: { color: true } } }\r\n },\r\n showAllDataPoints: {\r\n displayName: data.createDisplayNameGetter('Visual_DataPoint_Show_All'),\r\n type: { bool: true }\r\n },\r\n fill: {\r\n displayName: data.createDisplayNameGetter('Visual_Fill'),\r\n type: { fill: { solid: { color: true } } }\r\n }\r\n }\r\n },\r\n labels: {\r\n displayName: data.createDisplayNameGetter('Visual_DetailLabels'),\r\n properties: {\r\n show: {\r\n type: { bool: true }\r\n },\r\n color: {\r\n displayName: data.createDisplayNameGetter('Visual_LabelsFill'),\r\n description: data.createDisplayNameGetter('Visual_LabelsFillDescription'),\r\n type: { fill: { solid: { color: true } } }\r\n },\r\n labelDisplayUnits: {\r\n displayName: data.createDisplayNameGetter('Visual_DisplayUnits'),\r\n description: data.createDisplayNameGetter('Visual_DisplayUnitsDescription'),\r\n type: { formatting: { labelDisplayUnits: true } },\r\n suppressFormatPainterCopy: true,\r\n },\r\n labelPrecision: {\r\n displayName: data.createDisplayNameGetter('Visual_Precision'),\r\n description: data.createDisplayNameGetter('Visual_PrecisionDescription'),\r\n placeHolderText: data.createDisplayNameGetter('Visual_Precision_Auto'),\r\n type: { numeric: true },\r\n suppressFormatPainterCopy: true,\r\n },\r\n fontSize: {\r\n displayName: data.createDisplayNameGetter('Visual_TextSize'),\r\n type: { formatting: { fontSize: true } },\r\n suppressFormatPainterCopy: true,\r\n },\r\n labelStyle: {\r\n displayName: data.createDisplayNameGetter('Visual_LabelStyle'),\r\n type: { enumeration: labelStyle.type }\r\n },\r\n },\r\n },\r\n },\r\n dataViewMappings: [{\r\n conditions: [\r\n { 'Category': { max: 1 }, 'Series': { max: 0 } },\r\n { 'Category': { max: 1 }, 'Series': { min: 1, max: 1 }, 'Y': { max: 1 } }\r\n ],\r\n categorical: {\r\n categories: {\r\n for: { in: 'Category' },\r\n dataReductionAlgorithm: { top: {} }\r\n },\r\n values: {\r\n group: {\r\n by: 'Series',\r\n select: [{ bind: { to: 'Y' } }],\r\n dataReductionAlgorithm: { top: {} }\r\n }\r\n },\r\n rowCount: { preferred: { min: 2 }, supported: { min: 1 } }\r\n },\r\n }],\r\n sorting: {\r\n default: {},\r\n },\r\n supportsHighlight: true,\r\n drilldown: {\r\n roles: ['Category']\r\n },\r\n };\r\n\r\n export const donutChartProps = {\r\n general: {\r\n formatString: <DataViewObjectPropertyIdentifier>{ objectName: 'general', propertyName: 'formatString' },\r\n },\r\n dataPoint: {\r\n defaultColor: <DataViewObjectPropertyIdentifier>{ objectName: 'dataPoint', propertyName: 'defaultColor' },\r\n fill: <DataViewObjectPropertyIdentifier>{ objectName: 'dataPoint', propertyName: 'fill' },\r\n showAllDataPoints: <DataViewObjectPropertyIdentifier>{ objectName: 'dataPoint', propertyName: 'showAllDataPoints' },\r\n },\r\n legend: {\r\n show: <DataViewObjectPropertyIdentifier>{ objectName: 'legend', propertyName: 'show' },\r\n position: <DataViewObjectPropertyIdentifier>{ objectName: 'legend', propertyName: 'position' },\r\n showTitle: <DataViewObjectPropertyIdentifier>{ objectName: 'legend', propertyName: 'showTitle' },\r\n titleText: <DataViewObjectPropertyIdentifier>{ objectName: 'legend', propertyName: 'titleText' },\r\n labelColor: <DataViewObjectPropertyIdentifier>{ objectName: 'legend', propertyName: 'labelColor' },\r\n }, \r\n };\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n // I support a categorical (ordinal) X with measure Y for a single series\r\n export const dataDotChartCapabilities: VisualCapabilities = {\r\n dataRoles: [\r\n {\r\n name: 'Category',\r\n kind: VisualDataRoleKind.Grouping,\r\n }, {\r\n name: 'Y',\r\n kind: VisualDataRoleKind.Measure,\r\n requiredTypes: [{ numeric: true }, { integer: true }],\r\n },\r\n ],\r\n objects: {\r\n general: {\r\n displayName: data.createDisplayNameGetter('Visual_General'),\r\n properties: {\r\n formatString: {\r\n type: { formatting: { formatString: true } },\r\n },\r\n },\r\n },\r\n },\r\n dataViewMappings: [{\r\n conditions: [\r\n { 'Category': { max: 1 }, 'Y': { max: 1 } }\r\n ],\r\n categorical: {\r\n categories: {\r\n for: { in: 'Category' },\r\n dataReductionAlgorithm: { top: {} }\r\n },\r\n values: {\r\n select: [{\r\n for: { in: 'Y' },\r\n dataReductionAlgorithm: { top: {} }\r\n }]\r\n },\r\n },\r\n }]\r\n };\r\n} ","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n export const filledMapCapabilities: VisualCapabilities = {\r\n dataRoles: [\r\n {\r\n name: 'Category',\r\n kind: VisualDataRoleKind.Grouping,\r\n displayName: data.createDisplayNameGetter('Role_DisplayName_Location'),\r\n description: data.createDisplayNameGetter('Role_DisplayName_LocationFilledMapDescription'),\r\n preferredTypes: [\r\n { geography: { address: true } },\r\n { geography: { city: true } },\r\n { geography: { continent: true } },\r\n { geography: { country: true } },\r\n { geography: { county: true } },\r\n { geography: { place: true } },\r\n { geography: { postalCode: true } },\r\n { geography: { region: true } },\r\n { geography: { stateOrProvince: true } },\r\n ],\r\n }, {\r\n name: 'Series',\r\n kind: VisualDataRoleKind.Grouping,\r\n displayName: data.createDisplayNameGetter('Role_DisplayName_Legend'),\r\n description: data.createDisplayNameGetter('Role_DisplayName_LegendDescription')\r\n }, {\r\n name: 'X',\r\n kind: VisualDataRoleKind.Measure,\r\n displayName: data.createDisplayNameGetter('Role_DisplayName_Longitude'),\r\n description: data.createDisplayNameGetter('Role_DisplayName_LongitudeFilledMapDescription'),\r\n preferredTypes: [\r\n { geography: { longitude: true } }\r\n ],\r\n }, {\r\n name: 'Y',\r\n kind: VisualDataRoleKind.Measure,\r\n displayName: data.createDisplayNameGetter('Role_DisplayName_Latitude'),\r\n description: data.createDisplayNameGetter('Role_DisplayName_LatitudeFilledMapDescription'),\r\n preferredTypes: [\r\n { geography: { latitude: true } }\r\n ],\r\n }, {\r\n name: 'Size',\r\n kind: VisualDataRoleKind.Measure,\r\n displayName: data.createDisplayNameGetter('Role_DisplayName_Values'),\r\n description: data.createDisplayNameGetter('Role_DisplayName_ValuesDescription'),\r\n requiredTypes: [{ numeric: true }, { integer: true }],\r\n }\r\n ],\r\n objects: {\r\n general: {\r\n displayName: data.createDisplayNameGetter('Visual_General'),\r\n properties: {\r\n formatString: {\r\n type: { formatting: { formatString: true } },\r\n },\r\n },\r\n },\r\n legend: {\r\n displayName: data.createDisplayNameGetter('Visual_Legend'),\r\n description: data.createDisplayNameGetter('Visual_LegendDescription'),\r\n properties: {\r\n show: {\r\n displayName: data.createDisplayNameGetter('Visual_Show'),\r\n type: { bool: true }\r\n },\r\n position: {\r\n displayName: data.createDisplayNameGetter('Visual_LegendPosition'),\r\n description: data.createDisplayNameGetter('Visual_LegendPositionDescription'),\r\n type: { formatting: { legendPosition: true } }\r\n },\r\n showTitle: {\r\n displayName: data.createDisplayNameGetter('Visual_LegendShowTitle'),\r\n description: data.createDisplayNameGetter('Visual_LegendShowTitleDescription'),\r\n type: { bool: true }\r\n },\r\n titleText: {\r\n displayName: data.createDisplayNameGetter('Visual_LegendName'),\r\n description: data.createDisplayNameGetter('Visual_LegendNameDescription'),\r\n type: { text: true }\r\n },\r\n fontSize: {\r\n displayName: data.createDisplayNameGetter('Visual_TextSize'),\r\n type: { formatting: { fontSize: true } }\r\n }\r\n }\r\n },\r\n dataPoint: {\r\n displayName: data.createDisplayNameGetter('Visual_DataPoint'),\r\n description: data.createDisplayNameGetter('Visual_DataPointDescription'),\r\n properties: {\r\n defaultColor: {\r\n displayName: data.createDisplayNameGetter('Visual_DefaultColor'),\r\n type: { fill: { solid: { color: true } } }\r\n },\r\n showAllDataPoints: {\r\n displayName: data.createDisplayNameGetter('Visual_DataPoint_Show_All'),\r\n type: { bool: true }\r\n },\r\n fill: {\r\n displayName: data.createDisplayNameGetter('Visual_Fill'),\r\n type: { fill: { solid: { color: true } } }\r\n },\r\n fillRule: {\r\n displayName: data.createDisplayNameGetter('Role_DisplayName_Values'),\r\n description: data.createDisplayNameGetter('Role_DisplayName_ValuesDescription'),\r\n type: { fillRule: {} },\r\n rule: {\r\n inputRole: 'Size',\r\n output: {\r\n property: 'fill',\r\n selector: ['Category'],\r\n },\r\n },\r\n }\r\n }\r\n },\r\n labels: {\r\n displayName: data.createDisplayNameGetter('Visual_DataPointsLabels'),\r\n properties: {\r\n show: {\r\n type: { bool: true }\r\n },\r\n color: {\r\n displayName: data.createDisplayNameGetter('Visual_LabelsFill'),\r\n type: { fill: { solid: { color: true } } }\r\n },\r\n labelDisplayUnits: {\r\n displayName: data.createDisplayNameGetter('Visual_DisplayUnits'),\r\n type: { formatting: { labelDisplayUnits: true } }\r\n },\r\n labelPrecision: {\r\n displayName: data.createDisplayNameGetter('Visual_Precision'),\r\n description: data.createDisplayNameGetter('Visual_PrecisionDescription'),\r\n placeHolderText: data.createDisplayNameGetter('Visual_Precision_Auto'),\r\n type: { numeric: true }\r\n },\r\n },\r\n },\r\n categoryLabels: {\r\n displayName: data.createDisplayNameGetter('Visual_CategoryLabels'),\r\n properties: {\r\n show: {\r\n type: { bool: true }\r\n },\r\n },\r\n }\r\n },\r\n dataViewMappings: [{\r\n conditions: [\r\n { 'Category': { max: 1 }, 'Series': { max: 1 }, 'X': { max: 1 }, 'Y': { max: 1 }, 'Size': { max: 1 } },\r\n { 'Category': { max: 1 }, 'Series': { max: 0 }, 'X': { max: 1 }, 'Y': { max: 1 }, 'Size': { max: 1 } }\r\n ],\r\n categorical: {\r\n categories: {\r\n for: { in: 'Category' },\r\n dataReductionAlgorithm: { top: {} }\r\n },\r\n values: {\r\n group: {\r\n by: 'Series',\r\n select: [\r\n { bind: { to: 'X' } },\r\n { bind: { to: 'Y' } },\r\n { bind: { to: 'Size' } },\r\n ],\r\n dataReductionAlgorithm: { top: {} }\r\n }\r\n },\r\n rowCount: { preferred: { min: 2 } }\r\n },\r\n }],\r\n sorting: {\r\n custom: {},\r\n },\r\n drilldown: {\r\n roles: ['Category']\r\n },\r\n };\r\n\r\n export const filledMapProps = {\r\n general: {\r\n formatString: <DataViewObjectPropertyIdentifier>{ objectName: 'general', propertyName: 'formatString' },\r\n },\r\n dataPoint: {\r\n defaultColor: <DataViewObjectPropertyIdentifier>{ objectName: 'dataPoint', propertyName: 'defaultColor' },\r\n fill: <DataViewObjectPropertyIdentifier>{ objectName: 'dataPoint', propertyName: 'fill' },\r\n showAllDataPoints: <DataViewObjectPropertyIdentifier>{ objectName: 'dataPoint', propertyName: 'showAllDataPoints' },\r\n },\r\n legend: {\r\n show: <DataViewObjectPropertyIdentifier>{ objectName: 'legend', propertyName: 'show' },\r\n position: <DataViewObjectPropertyIdentifier>{ objectName: 'legend', propertyName: 'position' },\r\n showTitle: <DataViewObjectPropertyIdentifier>{ objectName: 'legend', propertyName: 'showTitle' },\r\n titleText: <DataViewObjectPropertyIdentifier>{ objectName: 'legend', propertyName: 'titleText' },\r\n },\r\n labels: {\r\n show: <DataViewObjectPropertyIdentifier>{ objectName: 'labels', propertyName: 'show' },\r\n color: <DataViewObjectPropertyIdentifier>{ objectName: 'labels', propertyName: 'color' },\r\n labelDisplayUnits: <DataViewObjectPropertyIdentifier>{ objectName: 'labels', propertyName: 'labelDisplayUnits' },\r\n labelPrecision: <DataViewObjectPropertyIdentifier>{ objectName: 'labels', propertyName: 'labelPrecision' },\r\n },\r\n categoryLabels: {\r\n show: <DataViewObjectPropertyIdentifier>{ objectName: 'categoryLabels', propertyName: 'show' },\r\n }\r\n };\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n export const funnelChartCapabilities: VisualCapabilities = {\r\n dataRoles: [\r\n {\r\n name: 'Category',\r\n kind: VisualDataRoleKind.Grouping,\r\n displayName: data.createDisplayNameGetter('Role_DisplayName_Group'),\r\n description: data.createDisplayNameGetter('Role_DisplayName_GroupFunnelDescription')\r\n }, {\r\n name: 'Y',\r\n kind: VisualDataRoleKind.Measure,\r\n displayName: data.createDisplayNameGetter('Role_DisplayName_Values'),\r\n description: data.createDisplayNameGetter('Role_DisplayName_ValuesDescription'),\r\n requiredTypes: [{ numeric: true }, { integer: true }],\r\n }, {\r\n name: 'Gradient',\r\n kind: VisualDataRoleKind.Measure,\r\n displayName: data.createDisplayNameGetter('Role_DisplayName_Gradient'),\r\n description: data.createDisplayNameGetter('Role_DisplayName_GradientDescription'),\r\n requiredTypes: [{ numeric: true }, { integer: true }],\r\n }\r\n ],\r\n dataViewMappings: [{\r\n conditions: [\r\n // NOTE: Ordering of the roles prefers to add measures to Y before Gradient.\r\n { 'Category': { max: 0 }, 'Gradient': { max: 0 } },\r\n { 'Category': { max: 1 }, 'Y': { max: 1 }, 'Gradient': { max: 1 } },\r\n ],\r\n categorical: {\r\n categories: {\r\n for: { in: 'Category' },\r\n dataReductionAlgorithm: { top: {} }\r\n },\r\n values: {\r\n select: [{ for: { in: 'Y' } }, { bind: { to: 'Gradient' } }],\r\n dataReductionAlgorithm: { top: {} }\r\n },\r\n rowCount: { preferred: { min: 1 } }\r\n },\r\n }],\r\n objects: {\r\n general: {\r\n displayName: data.createDisplayNameGetter('Visual_General'),\r\n properties: {\r\n formatString: {\r\n type: { formatting: { formatString: true } },\r\n },\r\n },\r\n },\r\n dataPoint: {\r\n displayName: data.createDisplayNameGetter('Visual_DataPoint'),\r\n description: data.createDisplayNameGetter('Visual_DataPointDescription'),\r\n properties: {\r\n defaultColor: {\r\n displayName: data.createDisplayNameGetter('Visual_DefaultColor'),\r\n type: { fill: { solid: { color: true } } }\r\n },\r\n fill: {\r\n displayName: data.createDisplayNameGetter('Visual_Fill'),\r\n type: { fill: { solid: { color: true } } }\r\n },\r\n fillRule: {\r\n displayName: data.createDisplayNameGetter('Visual_Gradient'),\r\n type: { fillRule: {} },\r\n rule: {\r\n inputRole: 'Gradient',\r\n output: {\r\n property: 'fill',\r\n selector: ['Category'],\r\n },\r\n },\r\n }\r\n }\r\n },\r\n labels: {\r\n displayName: data.createDisplayNameGetter('Visual_DataPointsLabels'),\r\n description: data.createDisplayNameGetter('Visual_DataPointsLabelsDescription'),\r\n properties: {\r\n show: {\r\n displayName: data.createDisplayNameGetter('Visual_Show'),\r\n type: { bool: true }\r\n },\r\n color: {\r\n displayName: data.createDisplayNameGetter('Visual_LabelsFill'),\r\n description: data.createDisplayNameGetter('Visual_LabelsFillDescription'),\r\n type: { fill: { solid: { color: true } } }\r\n },\r\n labelPosition: {\r\n displayName: data.createDisplayNameGetter('Visual_Position'),\r\n type: { enumeration: labelPosition.type },\r\n suppressFormatPainterCopy: true,\r\n },\r\n labelDisplayUnits: {\r\n displayName: data.createDisplayNameGetter('Visual_DisplayUnits'),\r\n description: data.createDisplayNameGetter('Visual_DisplayUnitsDescription'),\r\n type: { formatting: { labelDisplayUnits: true } },\r\n suppressFormatPainterCopy: true,\r\n },\r\n labelPrecision: {\r\n displayName: data.createDisplayNameGetter('Visual_Precision'),\r\n description: data.createDisplayNameGetter('Visual_PrecisionDescription'),\r\n placeHolderText: data.createDisplayNameGetter('Visual_Precision_Auto'),\r\n type: { numeric: true },\r\n suppressFormatPainterCopy: true,\r\n },\r\n fontSize: {\r\n displayName: data.createDisplayNameGetter('Visual_TextSize'),\r\n type: { formatting: { fontSize: true } }\r\n },\r\n }\r\n },\r\n percentBarLabel: {\r\n displayName: data.createDisplayNameGetter('Visual_PercentBarLabel'),\r\n description: data.createDisplayNameGetter('Visual_PercentBarLabelDescription'),\r\n properties: {\r\n show: {\r\n displayName: data.createDisplayNameGetter('Visual_Show'),\r\n type: { bool: true }\r\n },\r\n color: {\r\n displayName: data.createDisplayNameGetter('Visual_LabelsFill'),\r\n description: data.createDisplayNameGetter('Visual_LabelsFillDescription'),\r\n type: { fill: { solid: { color: true } } }\r\n },\r\n fontSize: {\r\n displayName: data.createDisplayNameGetter('Visual_TextSize'),\r\n type: { formatting: { fontSize: true } }\r\n },\r\n }\r\n },\r\n },\r\n supportsHighlight: true,\r\n sorting: {\r\n default: {},\r\n },\r\n drilldown: {\r\n roles: ['Category']\r\n },\r\n };\r\n\r\n export const funnelChartProps = {\r\n general: {\r\n formatString: <DataViewObjectPropertyIdentifier>{ objectName: 'general', propertyName: 'formatString' },\r\n },\r\n dataPoint: {\r\n defaultColor: <DataViewObjectPropertyIdentifier>{ objectName: 'dataPoint', propertyName: 'defaultColor' },\r\n fill: <DataViewObjectPropertyIdentifier>{ objectName: 'dataPoint', propertyName: 'fill' },\r\n },\r\n };\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n export const gaugeRoleNames = {\r\n y: 'Y',\r\n minValue: 'MinValue',\r\n maxValue: 'MaxValue',\r\n targetValue: 'TargetValue'\r\n };\r\n\r\n export const gaugeCapabilities: VisualCapabilities = {\r\n dataRoles: [\r\n {\r\n name: gaugeRoleNames.y,\r\n kind: VisualDataRoleKind.Measure,\r\n displayName: data.createDisplayNameGetter('Role_DisplayName_Value'),\r\n description: data.createDisplayNameGetter('Role_DisplayName_ValueDescription'),\r\n requiredTypes: [{ numeric: true }, { integer: true }],\r\n }, {\r\n name: gaugeRoleNames.minValue,\r\n kind: VisualDataRoleKind.Measure,\r\n displayName: data.createDisplayNameGetter('Role_DisplayName_MinValue'),\r\n description: data.createDisplayNameGetter('Role_DisplayName_MinValueDescription'),\r\n requiredTypes: [{ numeric: true }, { integer: true }],\r\n }, {\r\n name: gaugeRoleNames.maxValue,\r\n kind: VisualDataRoleKind.Measure,\r\n displayName: data.createDisplayNameGetter('Role_DisplayName_MaxValue'),\r\n description: data.createDisplayNameGetter('Role_DisplayName_MaxValueDescription'),\r\n requiredTypes: [{ numeric: true }, { integer: true }],\r\n }, {\r\n name: gaugeRoleNames.targetValue,\r\n kind: VisualDataRoleKind.Measure,\r\n displayName: data.createDisplayNameGetter('Role_DisplayName_TargetValue'),\r\n description: data.createDisplayNameGetter('Role_DisplayName_TargetValueDescription'),\r\n requiredTypes: [{ numeric: true }, { integer: true }],\r\n }\r\n ],\r\n objects: {\r\n general: {\r\n properties: {\r\n formatString: {\r\n type: { formatting: { formatString: true } },\r\n },\r\n },\r\n },\r\n axis: {\r\n displayName: data.createDisplayNameGetter('Visual_Gauge_Axis'),\r\n properties: {\r\n min: {\r\n displayName: data.createDisplayNameGetter('Visual_Gauge_Axis_Min'),\r\n type: { numeric: true }\r\n },\r\n max: {\r\n displayName: data.createDisplayNameGetter('Visual_Gauge_Axis_Max'),\r\n type: { numeric: true }\r\n },\r\n target: {\r\n displayName: data.createDisplayNameGetter('Visual_Gauge_Axis_Target'),\r\n type: { numeric: true }\r\n },\r\n },\r\n },\r\n labels: {\r\n displayName: data.createDisplayNameGetter('Visual_DataPointsLabels'),\r\n properties: {\r\n show: {\r\n type: { bool: true }\r\n },\r\n color: {\r\n displayName: data.createDisplayNameGetter('Visual_LabelsFill'),\r\n type: { fill: { solid: { color: true } } }\r\n },\r\n labelDisplayUnits: {\r\n displayName: data.createDisplayNameGetter('Visual_DisplayUnits'),\r\n type: { formatting: { labelDisplayUnits: true } }\r\n },\r\n labelPrecision: {\r\n displayName: data.createDisplayNameGetter('Visual_Precision'),\r\n placeHolderText: data.createDisplayNameGetter('Visual_Precision_Auto'),\r\n type: { numeric: true }\r\n },\r\n fontSize: {\r\n displayName: data.createDisplayNameGetter('Visual_TextSize'),\r\n type: { formatting: { fontSize: true } }\r\n },\r\n },\r\n },\r\n calloutValue: {\r\n displayName: data.createDisplayNameGetter('Visual_Gauge_CalloutValue'),\r\n properties: {\r\n show: {\r\n type: { bool: true }\r\n },\r\n color: {\r\n displayName: data.createDisplayNameGetter('Visual_LabelsFill'),\r\n type: { fill: { solid: { color: true } } }\r\n },\r\n labelDisplayUnits: {\r\n displayName: data.createDisplayNameGetter('Visual_DisplayUnits'),\r\n type: { formatting: { labelDisplayUnits: true } }\r\n },\r\n labelPrecision: {\r\n displayName: data.createDisplayNameGetter('Visual_Precision'),\r\n placeHolderText: data.createDisplayNameGetter('Visual_Precision_Auto'),\r\n type: { numeric: true }\r\n },\r\n },\r\n },\r\n },\r\n dataViewMappings: [{\r\n conditions: [\r\n { 'Y': { max: 1 }, 'MinValue': { max: 1 }, 'MaxValue': { max: 1 }, 'TargetValue': { max: 1 } },\r\n ],\r\n categorical: {\r\n values: {\r\n select: [\r\n { bind: { to: 'Y' } },\r\n { bind: { to: 'MinValue' } },\r\n { bind: { to: 'MaxValue' } },\r\n { bind: { to: 'TargetValue' } },\r\n ]\r\n },\r\n },\r\n }],\r\n supportsSelection: false,\r\n };\r\n\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n export const imageVisualCapabilities: VisualCapabilities = {\r\n objects: {\r\n general: {\r\n properties: {\r\n imageUrl: {\r\n type: { misc: { imageUrl: true } }\r\n }\r\n }\r\n },\r\n imageScaling: {\r\n displayName: data.createDisplayNameGetter('Visual_Image_Scaling_Type'),\r\n properties: {\r\n imageScalingType: {\r\n displayName: data.createDisplayNameGetter('Visual_Image_Scaling_Type'),\r\n type: { enumeration: imageScalingType.type }\r\n },\r\n }\r\n },\r\n },\r\n suppressDefaultTitle: true,\r\n supportsSelection: false,\r\n };\r\n} ","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n export var scriptVisualCapabilities: VisualCapabilities = {\r\n dataRoles: [{\r\n name: 'Values',\r\n kind: VisualDataRoleKind.GroupingOrMeasure,\r\n displayName: data.createDisplayNameGetter('Role_DisplayName_Values'),\r\n }],\r\n dataViewMappings: [{\r\n scriptResult: {\r\n dataInput: {\r\n table: {\r\n rows: {\r\n for: {\r\n in: 'Values'\r\n },\r\n dataReductionAlgorithm: {\r\n top: {}\r\n }\r\n },\r\n },\r\n },\r\n script: {\r\n source: {\r\n objectName: 'script',\r\n propertyName: 'source'\r\n },\r\n provider: {\r\n objectName: 'script',\r\n propertyName: 'provider'\r\n },\r\n }\r\n }\r\n }],\r\n objects: {\r\n script: {\r\n properties: {\r\n provider: {\r\n type: { text: true }\r\n },\r\n source: {\r\n type: { scripting: { source: true }\r\n }\r\n },\r\n }\r\n },\r\n lastSavedImage: {\r\n properties: {\r\n imageUrl: {\r\n type: { misc: { imageUrl: true } }\r\n },\r\n viewportHeight: {\r\n type: { numeric: true }\r\n },\r\n viewportWidth: {\r\n type: { numeric: true }\r\n }\r\n }\r\n }\r\n },\r\n };\r\n} \r\n","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n export const lineChartCapabilities: VisualCapabilities = {\r\n dataRoles: [\r\n {\r\n name: 'Category',\r\n kind: VisualDataRoleKind.Grouping,\r\n displayName: data.createDisplayNameGetter('Role_DisplayName_Axis'),\r\n description: data.createDisplayNameGetter('Role_DisplayName_AxisDescription')\r\n }, {\r\n name: 'Series',\r\n kind: VisualDataRoleKind.Grouping,\r\n displayName: data.createDisplayNameGetter('Role_DisplayName_Legend'),\r\n description: data.createDisplayNameGetter('Role_DisplayName_LegendDescription')\r\n }, {\r\n name: 'Y',\r\n kind: VisualDataRoleKind.Measure,\r\n displayName: data.createDisplayNameGetter('Role_DisplayName_Values'),\r\n description: data.createDisplayNameGetter('Role_DisplayName_ValuesDescription'),\r\n requiredTypes: [{ numeric: true }, { integer: true }],\r\n },\r\n ],\r\n objects: {\r\n general: {\r\n displayName: data.createDisplayNameGetter('Visual_General'),\r\n properties: {\r\n formatString: {\r\n type: { formatting: { formatString: true } },\r\n },\r\n },\r\n },\r\n legend: {\r\n displayName: data.createDisplayNameGetter('Visual_Legend'),\r\n description: data.createDisplayNameGetter('Visual_LegendDescription'),\r\n properties: {\r\n show: {\r\n displayName: data.createDisplayNameGetter('Visual_Show'),\r\n type: { bool: true }\r\n },\r\n position: {\r\n displayName: data.createDisplayNameGetter('Visual_LegendPosition'),\r\n description: data.createDisplayNameGetter('Visual_LegendPositionDescription'),\r\n type: { enumeration: legendPosition.type }\r\n },\r\n showTitle: {\r\n displayName: data.createDisplayNameGetter('Visual_LegendShowTitle'),\r\n description: data.createDisplayNameGetter('Visual_LegendShowTitleDescription'),\r\n type: { bool: true }\r\n },\r\n titleText: {\r\n displayName: data.createDisplayNameGetter('Visual_LegendName'),\r\n description: data.createDisplayNameGetter('Visual_LegendNameDescription'),\r\n type: { text: true },\r\n suppressFormatPainterCopy: true\r\n },\r\n labelColor: {\r\n displayName: data.createDisplayNameGetter('Visual_LegendTitleColor'),\r\n type: { fill: { solid: { color: true } } }\r\n },\r\n fontSize: {\r\n displayName: data.createDisplayNameGetter('Visual_TextSize'),\r\n type: { formatting: { fontSize: true } }\r\n }\r\n }\r\n },\r\n dataPoint: {\r\n displayName: data.createDisplayNameGetter('Visual_DataPoint'),\r\n description: data.createDisplayNameGetter('Visual_DataPointDescription'),\r\n properties: {\r\n defaultColor: {\r\n displayName: data.createDisplayNameGetter('Visual_DefaultColor'),\r\n type: { fill: { solid: { color: true } } }\r\n },\r\n fill: {\r\n displayName: data.createDisplayNameGetter('Visual_Fill'),\r\n type: { fill: { solid: { color: true } } }\r\n }\r\n }\r\n }, \r\n categoryAxis: {\r\n displayName: data.createDisplayNameGetter('Visual_XAxis'),\r\n properties: {\r\n show: {\r\n displayName: data.createDisplayNameGetter('Visual_Show'),\r\n type: { bool: true },\r\n },\r\n axisScale: {\r\n displayName: data.createDisplayNameGetter('Visual_Axis_Scale'),\r\n type: { enumeration: axisScale.type }\r\n },\r\n start: {\r\n displayName: data.createDisplayNameGetter('Visual_Axis_Start'),\r\n description: data.createDisplayNameGetter('Visual_Axis_StartDescription'),\r\n type: { numeric: true },\r\n suppressFormatPainterCopy: true,\r\n },\r\n end: {\r\n displayName: data.createDisplayNameGetter('Visual_Axis_End'),\r\n description: data.createDisplayNameGetter('Visual_Axis_EndDescription'),\r\n type: { numeric: true },\r\n suppressFormatPainterCopy: true,\r\n },\r\n axisType: {\r\n displayName: data.createDisplayNameGetter('Visual_Axis_Type'),\r\n type: { enumeration: axisType.type },\r\n },\r\n showAxisTitle: {\r\n displayName: data.createDisplayNameGetter('Visual_Axis_Title'),\r\n description: data.createDisplayNameGetter('Visual_Axis_XTitleDescription'),\r\n type: { bool: true }\r\n },\r\n axisStyle: {\r\n displayName: data.createDisplayNameGetter('Visual_Axis_Style'),\r\n type: { enumeration: axisStyle.type }\r\n },\r\n labelColor: {\r\n displayName: data.createDisplayNameGetter('Visual_Axis_LabelColor'),\r\n type: { fill: { solid: { color: true } } }\r\n },\r\n labelDisplayUnits: {\r\n displayName: data.createDisplayNameGetter('Visual_DisplayUnits'),\r\n type: { formatting: { labelDisplayUnits: true } },\r\n },\r\n labelPrecision: {\r\n displayName: data.createDisplayNameGetter('Visual_Precision'),\r\n placeHolderText: data.createDisplayNameGetter('Visual_Precision_Auto'),\r\n type: { numeric: true },\r\n }\r\n }\r\n },\r\n valueAxis: {\r\n displayName: data.createDisplayNameGetter('Visual_YAxis'),\r\n properties: {\r\n show: {\r\n displayName: data.createDisplayNameGetter('Visual_Show'),\r\n type: { bool: true },\r\n },\r\n position: {\r\n displayName: data.createDisplayNameGetter('Visual_YAxis_Position'),\r\n description: data.createDisplayNameGetter('Visual_YAxis_PositionDescription'),\r\n type: { enumeration: yAxisPosition.type },\r\n },\r\n axisScale: {\r\n displayName: data.createDisplayNameGetter('Visual_Axis_Scale'),\r\n type: { enumeration: axisScale.type }\r\n },\r\n start: {\r\n displayName: data.createDisplayNameGetter('Visual_Axis_Start'),\r\n description: data.createDisplayNameGetter('Visual_Axis_StartDescription'),\r\n type: { numeric: true },\r\n suppressFormatPainterCopy: true,\r\n },\r\n end: {\r\n displayName: data.createDisplayNameGetter('Visual_Axis_End'),\r\n description: data.createDisplayNameGetter('Visual_Axis_EndDescription'),\r\n type: { numeric: true },\r\n suppressFormatPainterCopy: true,\r\n },\r\n showAxisTitle: {\r\n displayName: data.createDisplayNameGetter('Visual_Axis_Title'),\r\n description: data.createDisplayNameGetter('Visual_Axis_YTitleDescription'),\r\n type: { bool: true }\r\n },\r\n axisStyle: {\r\n displayName: data.createDisplayNameGetter('Visual_Axis_Style'),\r\n type: { enumeration: axisStyle.type }\r\n },\r\n labelColor: {\r\n displayName: data.createDisplayNameGetter('Visual_Axis_LabelColor'),\r\n type: { fill: { solid: { color: true } } }\r\n },\r\n labelDisplayUnits: {\r\n displayName: data.createDisplayNameGetter('Visual_DisplayUnits'),\r\n type: { formatting: { labelDisplayUnits: true } },\r\n },\r\n labelPrecision: {\r\n displayName: data.createDisplayNameGetter('Visual_Precision'),\r\n placeHolderText: data.createDisplayNameGetter('Visual_Precision_Auto'),\r\n type: { numeric: true },\r\n }\r\n }\r\n },\r\n y1AxisReferenceLine: {\r\n displayName: data.createDisplayNameGetter('Visual_Reference_Line'),\r\n description: data.createDisplayNameGetter('Visual_Reference_Line_Description'),\r\n properties: {\r\n show: {\r\n displayName: data.createDisplayNameGetter('Visual_Show'),\r\n type: { bool: true }\r\n },\r\n value: {\r\n displayName: data.createDisplayNameGetter('Visual_Reference_Line_Value'),\r\n description: data.createDisplayNameGetter('Visual_Reference_Line_Value_Description'),\r\n type: { numeric: true }\r\n },\r\n lineColor: {\r\n displayName: data.createDisplayNameGetter('Visual_Reference_Line_Color'),\r\n description: data.createDisplayNameGetter('Visual_Reference_Line_Color_Description'),\r\n type: { fill: { solid: { color: true } } }\r\n },\r\n transparency: {\r\n displayName: data.createDisplayNameGetter('Visual_Reference_Line_Transparency'),\r\n description: data.createDisplayNameGetter('Visual_Reference_Line_Transparency_Description'),\r\n type: { numeric: true }\r\n },\r\n style: {\r\n displayName: data.createDisplayNameGetter('Visual_Reference_Line_Style'),\r\n description: data.createDisplayNameGetter('Visual_Reference_Line_Style_Description'),\r\n type: { enumeration: lineStyle.type }\r\n },\r\n position: {\r\n displayName: data.createDisplayNameGetter('Visual_Reference_Line_Arrange'),\r\n description: data.createDisplayNameGetter('Visual_Reference_Line_Arrange_Description'),\r\n type: { enumeration: referenceLinePosition.type }\r\n },\r\n dataLabelShow: {\r\n displayName: data.createDisplayNameGetter(\"Visual_Reference_Line_Data_Label\"),\r\n description: data.createDisplayNameGetter('Visual_Reference_Line_Data_Label_Show_Description'),\r\n type: { bool: true }\r\n },\r\n dataLabelColor: {\r\n displayName: data.createDisplayNameGetter(\"Visual_Reference_Line_Data_Label_Color\"),\r\n description: data.createDisplayNameGetter('Visual_Reference_Line_Data_Label_Color_Description'),\r\n type: { fill: { solid: { color: true } } }\r\n },\r\n dataLabelDecimalPoints: {\r\n displayName: data.createDisplayNameGetter(\"Visual_Reference_Line_Data_Decimal_Points\"),\r\n placeHolderText: data.createDisplayNameGetter('Visual_Precision_Auto'),\r\n type: { numeric: true }\r\n },\r\n dataLabelHorizontalPosition: {\r\n displayName: data.createDisplayNameGetter(\"Visual_Reference_Line_Data_Horizontal_Position\"),\r\n description: data.createDisplayNameGetter('Visual_Reference_Line_Data_Label_Horizontal_Position_Description'),\r\n type: { enumeration: referenceLineDataLabelHorizontalPosition.type }\r\n },\r\n dataLabelVerticalPosition: {\r\n displayName: data.createDisplayNameGetter(\"Visual_Reference_Line_Data_Vertical_Position\"),\r\n description: data.createDisplayNameGetter('Visual_Reference_Line_Data_Label_Vertical_Position_Description'),\r\n type: { enumeration: referenceLineDataLabelVerticalPosition.type }\r\n },\r\n },\r\n },\r\n labels: {\r\n displayName: data.createDisplayNameGetter('Visual_DataPointsLabels'),\r\n description: data.createDisplayNameGetter('Visual_DataPointsLabelsDescription'),\r\n properties: {\r\n show: {\r\n displayName: data.createDisplayNameGetter('Visual_Show'),\r\n type: { bool: true }\r\n },\r\n showSeries: {\r\n displayName: data.createDisplayNameGetter('Visual_Show'),\r\n type: { bool: true }\r\n },\r\n color: {\r\n displayName: data.createDisplayNameGetter('Visual_LabelsFill'),\r\n description: data.createDisplayNameGetter('Visual_LabelsFillDescription'),\r\n type: { fill: { solid: { color: true } } }\r\n },\r\n labelDisplayUnits: {\r\n displayName: data.createDisplayNameGetter('Visual_DisplayUnits'),\r\n description: data.createDisplayNameGetter('Visual_DisplayUnitsDescription'),\r\n type: { formatting: { labelDisplayUnits: true } },\r\n suppressFormatPainterCopy: true,\r\n },\r\n labelPrecision: {\r\n displayName: data.createDisplayNameGetter('Visual_Precision'),\r\n description: data.createDisplayNameGetter('Visual_PrecisionDescription'),\r\n placeHolderText: data.createDisplayNameGetter('Visual_Precision_Auto'),\r\n type: { numeric: true },\r\n suppressFormatPainterCopy: true,\r\n },\r\n showAll: {\r\n displayName: data.createDisplayNameGetter('Visual_LabelSeriesShowAll'),\r\n type: { bool: true }\r\n },\r\n fontSize: {\r\n displayName: data.createDisplayNameGetter('Visual_TextSize'),\r\n type: { formatting: { fontSize: true } }\r\n },\r\n labelDensity: {\r\n displayName: data.createDisplayNameGetter('Visual_LabelDensity'),\r\n type: { formatting: { labelDensity: true } },\r\n },\r\n },\r\n },\r\n plotArea: {\r\n displayName: data.createDisplayNameGetter('Visual_Plot'),\r\n //description: data.createDisplayNameGetter('Visual_PlotDescription'),\r\n properties: {\r\n transparency: {\r\n displayName: data.createDisplayNameGetter('Visual_Background_Transparency'),\r\n type: { numeric: true },\r\n },\r\n image: {\r\n type: { image: {} },\r\n },\r\n },\r\n },\r\n },\r\n dataViewMappings: [{\r\n conditions: [\r\n { 'Category': { max: 1 }, 'Series': { max: 0 } },\r\n { 'Category': { max: 1 }, 'Series': { min: 1, max: 1 }, 'Y': { max: 1 } }\r\n ],\r\n categorical: {\r\n categories: {\r\n for: { in: 'Category' },\r\n dataReductionAlgorithm: { top: {} }\r\n },\r\n values: {\r\n group: {\r\n by: 'Series',\r\n select: [{ for: { in: 'Y' } }],\r\n dataReductionAlgorithm: { top: {} }\r\n }\r\n },\r\n },\r\n }],\r\n sorting: {\r\n default: {},\r\n },\r\n };\r\n\r\n export const lineChartProps = {\r\n general: {\r\n formatString: <DataViewObjectPropertyIdentifier>{ objectName: 'general', propertyName: 'formatString' },\r\n },\r\n dataPoint: {\r\n defaultColor: <DataViewObjectPropertyIdentifier>{ objectName: 'dataPoint', propertyName: 'defaultColor' },\r\n fill: <DataViewObjectPropertyIdentifier>{ objectName: 'dataPoint', propertyName: 'fill' },\r\n },\r\n categoryAxis: {\r\n axisType: <DataViewObjectPropertyIdentifier>{ objectName: 'categoryAxis', propertyName: 'axisType' },\r\n },\r\n legend: {\r\n labelColor: <DataViewObjectPropertyIdentifier>{ objectName: 'legend', propertyName: 'labelColor' },\r\n },\r\n labels: {\r\n labelDensity: <DataViewObjectPropertyIdentifier>{ objectName: 'labels', propertyName: 'labelDensity' },\r\n },\r\n plotArea: {\r\n image: <DataViewObjectPropertyIdentifier>{ objectName: 'plotArea', propertyName: 'image' },\r\n transparency: <DataViewObjectPropertyIdentifier>{ objectName: 'plotArea', propertyName: 'transparency' },\r\n },\r\n }; \r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n export const mapCapabilities: VisualCapabilities = {\r\n dataRoles: [\r\n {\r\n name: 'Category',\r\n kind: VisualDataRoleKind.Grouping,\r\n displayName: data.createDisplayNameGetter('Role_DisplayName_Location'),\r\n description: data.createDisplayNameGetter('Role_DisplayName_LocationMapDescription'),\r\n preferredTypes: [\r\n { geography: { address: true } },\r\n { geography: { city: true } },\r\n { geography: { continent: true } },\r\n { geography: { country: true } },\r\n { geography: { county: true } },\r\n { geography: { place: true } },\r\n { geography: { postalCode: true } },\r\n { geography: { region: true } },\r\n { geography: { stateOrProvince: true } },\r\n ],\r\n }, {\r\n name: 'Series',\r\n kind: VisualDataRoleKind.Grouping,\r\n displayName: data.createDisplayNameGetter('Role_DisplayName_Legend'),\r\n description: data.createDisplayNameGetter('Role_DisplayName_LegendDescription')\r\n }, {\r\n name: 'X',\r\n kind: VisualDataRoleKind.Measure,\r\n displayName: data.createDisplayNameGetter('Role_DisplayName_Longitude'),\r\n description: data.createDisplayNameGetter('Role_DisplayName_LongitudeMapDescription'),\r\n preferredTypes: [\r\n { geography: { longitude: true } }\r\n ],\r\n }, {\r\n name: 'Y',\r\n kind: VisualDataRoleKind.Measure,\r\n displayName: data.createDisplayNameGetter('Role_DisplayName_Latitude'),\r\n description: data.createDisplayNameGetter('Role_DisplayName_LatitudeMapDescription'),\r\n preferredTypes: [\r\n { geography: { latitude: true } }\r\n ],\r\n }, {\r\n name: 'Size',\r\n kind: VisualDataRoleKind.Measure,\r\n displayName: data.createDisplayNameGetter('Role_DisplayName_Values'),\r\n description: data.createDisplayNameGetter('Role_DisplayName_ValuesDescription'),\r\n requiredTypes: [{ numeric: true }, { integer: true }],\r\n }, {\r\n name: 'Gradient',\r\n kind: VisualDataRoleKind.Measure,\r\n displayName: data.createDisplayNameGetter('Role_DisplayName_Gradient'),\r\n description: data.createDisplayNameGetter('Role_DisplayName_GradientDescription'),\r\n requiredTypes: [{ numeric: true }, { integer: true }],\r\n }\r\n ],\r\n objects: {\r\n general: {\r\n displayName: data.createDisplayNameGetter('Visual_General'),\r\n properties: {\r\n formatString: {\r\n type: { formatting: { formatString: true } },\r\n },\r\n },\r\n },\r\n legend: {\r\n displayName: data.createDisplayNameGetter('Visual_Legend'),\r\n description: data.createDisplayNameGetter('Visual_LegendDescription'),\r\n properties: {\r\n show: {\r\n displayName: data.createDisplayNameGetter('Visual_Show'),\r\n type: { bool: true }\r\n },\r\n position: {\r\n displayName: data.createDisplayNameGetter('Visual_LegendPosition'),\r\n description: data.createDisplayNameGetter('Visual_LegendPositionDescription'),\r\n type: { enumeration: legendPosition.type }\r\n },\r\n showTitle: {\r\n displayName: data.createDisplayNameGetter('Visual_LegendShowTitle'),\r\n description: data.createDisplayNameGetter('Visual_LegendShowTitleDescription'),\r\n type: { bool: true }\r\n },\r\n titleText: {\r\n displayName: data.createDisplayNameGetter('Visual_LegendName'),\r\n description: data.createDisplayNameGetter('Visual_LegendNameDescription'),\r\n type: { text: true }\r\n },\r\n fontSize: {\r\n displayName: data.createDisplayNameGetter('Visual_TextSize'),\r\n type: { formatting: { fontSize: true } }\r\n }\r\n }\r\n },\r\n dataPoint: {\r\n displayName: data.createDisplayNameGetter('Visual_DataPoint'),\r\n description: data.createDisplayNameGetter('Visual_DataPointDescription'),\r\n properties: {\r\n defaultColor: {\r\n displayName: data.createDisplayNameGetter('Visual_DefaultColor'),\r\n type: { fill: { solid: { color: true } } }\r\n },\r\n showAllDataPoints: {\r\n displayName: data.createDisplayNameGetter('Visual_DataPoint_Show_All'),\r\n type: { bool: true }\r\n },\r\n fill: {\r\n displayName: data.createDisplayNameGetter('Visual_Fill'),\r\n type: { fill: { solid: { color: true } } }\r\n },\r\n fillRule: {\r\n displayName: data.createDisplayNameGetter('Visual_Gradient'),\r\n type: { fillRule: {} },\r\n rule: {\r\n inputRole: 'Gradient',\r\n output: {\r\n property: 'fill',\r\n selector: ['Category'],\r\n },\r\n },\r\n }\r\n }\r\n },\r\n categoryLabels: {\r\n displayName: data.createDisplayNameGetter('Visual_CategoryLabels'),\r\n description: data.createDisplayNameGetter('Visual_CategoryLabelsDescription'),\r\n properties: {\r\n show: {\r\n displayName: data.createDisplayNameGetter('Visual_Show'),\r\n type: { bool: true }\r\n },\r\n color: {\r\n displayName: data.createDisplayNameGetter('Visual_LabelsFill'),\r\n description: data.createDisplayNameGetter('Visual_LabelsFillDescription'),\r\n type: { fill: { solid: { color: true } } }\r\n },\r\n fontSize: {\r\n displayName: data.createDisplayNameGetter('Visual_TextSize'),\r\n type: { formatting: { fontSize: true } }\r\n },\r\n },\r\n },\r\n },\r\n dataViewMappings: [{\r\n conditions: [\r\n { 'Category': { max: 1 }, 'Series': { max: 1 }, 'X': { max: 1 }, 'Y': { max: 1 }, 'Size': { max: 1 }, 'Gradient': { max: 0 } },\r\n { 'Category': { max: 1 }, 'Series': { max: 0 }, 'X': { max: 1 }, 'Y': { max: 1 }, 'Size': { max: 1 }, 'Gradient': { max: 1 } }\r\n ],\r\n categorical: {\r\n categories: {\r\n for: { in: 'Category' },\r\n dataReductionAlgorithm: { top: {} }\r\n },\r\n values: {\r\n group: {\r\n by: 'Series',\r\n select: [\r\n { bind: { to: 'X' } },\r\n { bind: { to: 'Y' } },\r\n { bind: { to: 'Size' } },\r\n { bind: { to: 'Gradient' } },\r\n ],\r\n dataReductionAlgorithm: { top: {} }\r\n }\r\n },\r\n rowCount: { preferred: { min: 2 } }\r\n },\r\n }],\r\n sorting: {\r\n custom: {},\r\n },\r\n drilldown: {\r\n roles: ['Category']\r\n },\r\n };\r\n\r\n export const mapProps = {\r\n general: {\r\n formatString: <DataViewObjectPropertyIdentifier>{ objectName: 'general', propertyName: 'formatString' },\r\n },\r\n dataPoint: {\r\n defaultColor: <DataViewObjectPropertyIdentifier>{ objectName: 'dataPoint', propertyName: 'defaultColor' },\r\n fill: <DataViewObjectPropertyIdentifier>{ objectName: 'dataPoint', propertyName: 'fill' },\r\n showAllDataPoints: <DataViewObjectPropertyIdentifier>{ objectName: 'dataPoint', propertyName: 'showAllDataPoints' },\r\n },\r\n legend: {\r\n show: <DataViewObjectPropertyIdentifier>{ objectName: 'legend', propertyName: 'show' },\r\n position: <DataViewObjectPropertyIdentifier>{ objectName: 'legend', propertyName: 'position' },\r\n showTitle: <DataViewObjectPropertyIdentifier>{ objectName: 'legend', propertyName: 'showTitle' },\r\n titleText: <DataViewObjectPropertyIdentifier>{ objectName: 'legend', propertyName: 'titleText' },\r\n },\r\n };\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n export const multiRowCardCapabilities: VisualCapabilities = {\r\n dataRoles: [\r\n {\r\n name: 'Values',\r\n kind: VisualDataRoleKind.GroupingOrMeasure,\r\n displayName: data.createDisplayNameGetter('Role_DisplayName_Fields'),\r\n description: data.createDisplayNameGetter('Role_DisplayName_FieldsDescription')\r\n }\r\n ],\r\n objects: {\r\n general: {\r\n properties: {\r\n formatString: {\r\n type: { formatting: { formatString: true } },\r\n },\r\n },\r\n },\r\n cardTitle: {\r\n displayName: data.createDisplayNameGetter('Visual_CardTitle'),\r\n description: data.createDisplayNameGetter('Visual_CardTitleDescription'),\r\n properties: {\r\n color: {\r\n displayName: data.createDisplayNameGetter('Visual_LabelsFill'),\r\n description: data.createDisplayNameGetter('Visual_LabelsFillDescription'),\r\n type: { fill: { solid: { color: true } } }\r\n },\r\n fontSize: {\r\n displayName: data.createDisplayNameGetter('Visual_TextSize'),\r\n type: { formatting: { fontSize: true } }\r\n },\r\n }\r\n },\r\n dataLabels: {\r\n displayName: data.createDisplayNameGetter('Visual_DataPointsLabels'),\r\n description: data.createDisplayNameGetter('Visual_DataPointsLabelsDescription'),\r\n properties: {\r\n color: {\r\n displayName: data.createDisplayNameGetter('Visual_LabelsFill'),\r\n description: data.createDisplayNameGetter('Visual_LabelsFillDescription'),\r\n type: { fill: { solid: { color: true } } }\r\n },\r\n fontSize: {\r\n displayName: data.createDisplayNameGetter('Visual_TextSize'),\r\n type: { formatting: { fontSize: true } }\r\n },\r\n }\r\n },\r\n categoryLabels: {\r\n displayName: data.createDisplayNameGetter('Visual_CategoryLabels'),\r\n description: data.createDisplayNameGetter('Visual_CategoryLabelsDescription'),\r\n properties: {\r\n show: {\r\n displayName: data.createDisplayNameGetter('Visual_Show'),\r\n type: { bool: true }\r\n },\r\n color: {\r\n displayName: data.createDisplayNameGetter('Visual_LabelsFill'),\r\n description: data.createDisplayNameGetter('Visual_LabelsFillDescription'),\r\n type: { fill: { solid: { color: true } } }\r\n },\r\n fontSize: {\r\n displayName: data.createDisplayNameGetter('Visual_TextSize'),\r\n type: { formatting: { fontSize: true } }\r\n },\r\n }\r\n }\r\n },\r\n dataViewMappings: [{\r\n table: {\r\n rows: {\r\n for: { in: 'Values' },\r\n dataReductionAlgorithm: { window: {} }\r\n },\r\n rowCount: { preferred: { min: 1 } }\r\n },\r\n }],\r\n suppressDefaultTitle: true,\r\n supportsSelection: false,\r\n };\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n export const textboxCapabilities: VisualCapabilities = {\r\n objects: {\r\n general: {\r\n properties: {\r\n paragraphs: {\r\n type: { paragraphs: {} }\r\n }\r\n }\r\n }\r\n },\r\n suppressDefaultTitle: true,\r\n supportsSelection: false,\r\n };\r\n}","/*\r\n* Power BI Visualizations\r\n*\r\n* Copyright (c) Microsoft Corporation\r\n* All rights reserved. \r\n* MIT License\r\n*\r\n* Permission is hereby granted, free of charge, to any person obtaining a copy\r\n* of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n* in the Software without restriction, including without limitation the rights\r\n* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n* copies of the Software, and to permit persons to whom the Software is\r\n* furnished to do so, subject to the following conditions:\r\n* \r\n* The above copyright notice and this permission notice shall be included in \r\n* all copies or substantial portions of the Software.\r\n* \r\n* THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n* THE SOFTWARE.\r\n*/\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n export const cheerMeterCapabilities: VisualCapabilities = {\r\n dataRoles: [\r\n {\r\n name: 'Category',\r\n kind: VisualDataRoleKind.Grouping,\r\n },\r\n {\r\n name: 'Y',\r\n kind: VisualDataRoleKind.Measure,\r\n requiredTypes: [{ numeric: true }, { integer: true }],\r\n },\r\n ],\r\n dataViewMappings: [{\r\n categorical: {\r\n categories: {\r\n for: { in: 'Category' },\r\n },\r\n },\r\n }],\r\n dataPoint: {\r\n displayName: data.createDisplayNameGetter('Visual_DataPoint'),\r\n description: data.createDisplayNameGetter('Visual_DataPointDescription'),\r\n properties: {\r\n fill: {\r\n displayName: data.createDisplayNameGetter('Visual_Fill'),\r\n type: { fill: { solid: { color: true } } }\r\n },\r\n }\r\n },\r\n };\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n export const scatterChartCapabilities: VisualCapabilities = {\r\n dataRoles: [\r\n {\r\n name: 'Category',\r\n kind: VisualDataRoleKind.Grouping,\r\n displayName: data.createDisplayNameGetter('Role_DisplayName_Details'),\r\n description: data.createDisplayNameGetter('Role_DisplayName_DetailsScatterChartDescription'),\r\n }, {\r\n name: 'Series',\r\n kind: VisualDataRoleKind.Grouping,\r\n displayName: data.createDisplayNameGetter('Role_DisplayName_Legend'),\r\n description: data.createDisplayNameGetter('Role_DisplayName_LegendDescription')\r\n }, {\r\n name: 'X',\r\n kind: VisualDataRoleKind.Measure,\r\n displayName: data.createDisplayNameGetter('Role_DisplayName_X'),\r\n description: data.createDisplayNameGetter('Role_DisplayName_XScatterChartDescription'),\r\n requiredTypes: [{ numeric: true }, { integer: true }],\r\n }, {\r\n name: 'Y',\r\n kind: VisualDataRoleKind.Measure,\r\n displayName: data.createDisplayNameGetter('Role_DisplayName_Y'),\r\n description: data.createDisplayNameGetter('Role_DisplayName_YScatterChartDescription'),\r\n requiredTypes: [{ numeric: true }, { integer: true }],\r\n }, {\r\n name: 'Size',\r\n kind: VisualDataRoleKind.Measure,\r\n displayName: data.createDisplayNameGetter('Role_DisplayName_Size'),\r\n description: data.createDisplayNameGetter('Role_DisplayName_SizeDescription'),\r\n requiredTypes: [{ numeric: true }, { integer: true }],\r\n }, {\r\n name: 'Gradient',\r\n kind: VisualDataRoleKind.Measure,\r\n displayName: data.createDisplayNameGetter('Role_DisplayName_Gradient'),\r\n description: data.createDisplayNameGetter('Role_DisplayName_GradientDescription'),\r\n requiredTypes: [{ numeric: true }, { integer: true }],\r\n }, {\r\n name: 'Play',\r\n kind: VisualDataRoleKind.Grouping,\r\n displayName: 'Play Axis' //TODO: data.createDisplayNameGetter('Role_DisplayName_Play'),\r\n }\r\n ],\r\n objects: {\r\n dataPoint: {\r\n displayName: data.createDisplayNameGetter('Visual_DataPoint'),\r\n description: data.createDisplayNameGetter('Visual_DataPointDescription'),\r\n properties: {\r\n defaultColor: {\r\n displayName: data.createDisplayNameGetter('Visual_DefaultColor'),\r\n type: { fill: { solid: { color: true } } }\r\n },\r\n showAllDataPoints: {\r\n displayName: data.createDisplayNameGetter('Visual_DataPoint_Show_All'),\r\n type: { bool: true }\r\n },\r\n fill: {\r\n displayName: data.createDisplayNameGetter('Visual_Fill'),\r\n type: { fill: { solid: { color: true } } }\r\n },\r\n fillRule: {\r\n displayName: data.createDisplayNameGetter('Visual_Gradient'),\r\n type: { fillRule: {} },\r\n rule: {\r\n inputRole: 'Gradient',\r\n output: {\r\n property: 'fill',\r\n selector: ['Category'],\r\n },\r\n },\r\n }\r\n }\r\n },\r\n general: {\r\n displayName: data.createDisplayNameGetter('Visual_General'),\r\n properties: {\r\n formatString: {\r\n type: { formatting: { formatString: true } },\r\n },\r\n },\r\n },\r\n categoryAxis: {\r\n displayName: data.createDisplayNameGetter('Visual_XAxis'),\r\n properties: {\r\n show: {\r\n displayName: data.createDisplayNameGetter('Visual_Show'),\r\n type: { bool: true },\r\n },\r\n axisScale: {\r\n displayName: data.createDisplayNameGetter('Visual_Axis_Scale'),\r\n type: { enumeration: axisScale.type }\r\n },\r\n start: {\r\n displayName: data.createDisplayNameGetter('Visual_Axis_Start'),\r\n description: data.createDisplayNameGetter('Visual_Axis_StartDescription'),\r\n type: { numeric: true },\r\n suppressFormatPainterCopy: true,\r\n },\r\n end: {\r\n displayName: data.createDisplayNameGetter('Visual_Axis_End'),\r\n description: data.createDisplayNameGetter('Visual_Axis_EndDescription'),\r\n type: { numeric: true },\r\n suppressFormatPainterCopy: true,\r\n },\r\n showAxisTitle: {\r\n displayName: data.createDisplayNameGetter('Visual_Axis_Title'),\r\n description: data.createDisplayNameGetter('Visual_Axis_XTitleDescription'),\r\n type: { bool: true }\r\n },\r\n axisStyle: {\r\n displayName: data.createDisplayNameGetter('Visual_Axis_Style'),\r\n type: { enumeration: axisStyle.type }\r\n },\r\n labelColor: {\r\n displayName: data.createDisplayNameGetter('Visual_Axis_LabelColor'),\r\n type: { fill: { solid: { color: true } } }\r\n },\r\n labelDisplayUnits: {\r\n displayName: data.createDisplayNameGetter('Visual_DisplayUnits'),\r\n type: { formatting: { labelDisplayUnits: true } },\r\n },\r\n labelPrecision: {\r\n displayName: data.createDisplayNameGetter('Visual_Precision'),\r\n placeHolderText: data.createDisplayNameGetter('Visual_Precision_Auto'),\r\n type: { numeric: true },\r\n }\r\n }\r\n },\r\n valueAxis: {\r\n displayName: data.createDisplayNameGetter('Visual_YAxis'),\r\n properties: {\r\n show: {\r\n displayName: data.createDisplayNameGetter('Visual_Show'),\r\n type: { bool: true },\r\n },\r\n position: {\r\n displayName: data.createDisplayNameGetter('Visual_YAxis_Position'),\r\n description: data.createDisplayNameGetter('Visual_YAxis_PositionDescription'),\r\n type: { enumeration: yAxisPosition.type },\r\n },\r\n axisScale: {\r\n displayName: data.createDisplayNameGetter('Visual_Axis_Scale'),\r\n type: { enumeration: axisScale.type }\r\n },\r\n start: {\r\n displayName: data.createDisplayNameGetter('Visual_Axis_Start'),\r\n description: data.createDisplayNameGetter('Visual_Axis_StartDescription'),\r\n type: { numeric: true },\r\n suppressFormatPainterCopy: true,\r\n },\r\n end: {\r\n displayName: data.createDisplayNameGetter('Visual_Axis_End'),\r\n description: data.createDisplayNameGetter('Visual_Axis_EndDescription'),\r\n type: { numeric: true },\r\n suppressFormatPainterCopy: true,\r\n },\r\n showAxisTitle: {\r\n displayName: data.createDisplayNameGetter('Visual_Axis_Title'),\r\n description: data.createDisplayNameGetter('Visual_Axis_YTitleDescription'),\r\n type: { bool: true }\r\n },\r\n axisStyle: {\r\n displayName: data.createDisplayNameGetter('Visual_Axis_Style'),\r\n type: { enumeration: axisStyle.type }\r\n },\r\n labelColor: {\r\n displayName: data.createDisplayNameGetter('Visual_Axis_LabelColor'),\r\n type: { fill: { solid: { color: true } } }\r\n },\r\n labelDisplayUnits: {\r\n displayName: data.createDisplayNameGetter('Visual_DisplayUnits'),\r\n type: { formatting: { labelDisplayUnits: true } },\r\n },\r\n labelPrecision: {\r\n displayName: data.createDisplayNameGetter('Visual_Precision'),\r\n placeHolderText: data.createDisplayNameGetter('Visual_Precision_Auto'),\r\n type: { numeric: true },\r\n }\r\n }\r\n }, \r\n xAxisReferenceLine: {\r\n displayName: data.createDisplayNameGetter('Visual_Reference_Line_X'),\r\n description: data.createDisplayNameGetter('Visual_Reference_Line_Description'),\r\n properties: {\r\n show: {\r\n displayName: data.createDisplayNameGetter('Visual_Show'),\r\n type: { bool: true }\r\n },\r\n value: {\r\n displayName: data.createDisplayNameGetter('Visual_Reference_Line_Value'),\r\n description: data.createDisplayNameGetter('Visual_Reference_Line_Value_Description'),\r\n type: { numeric: true }\r\n },\r\n lineColor: {\r\n displayName: data.createDisplayNameGetter('Visual_Reference_Line_Color'),\r\n description: data.createDisplayNameGetter('Visual_Reference_Line_Color_Description'),\r\n type: { fill: { solid: { color: true } } }\r\n },\r\n transparency: {\r\n displayName: data.createDisplayNameGetter('Visual_Reference_Line_Transparency'),\r\n description: data.createDisplayNameGetter('Visual_Reference_Line_Transparency_Description'),\r\n type: { numeric: true }\r\n },\r\n style: {\r\n displayName: data.createDisplayNameGetter('Visual_Reference_Line_Style'),\r\n description: data.createDisplayNameGetter('Visual_Reference_Line_Style_Description'),\r\n type: { enumeration: lineStyle.type }\r\n },\r\n position: {\r\n displayName: data.createDisplayNameGetter('Visual_Reference_Line_Arrange'),\r\n description: data.createDisplayNameGetter('Visual_Reference_Line_Arrange_Description'),\r\n type: { enumeration: referenceLinePosition.type }\r\n },\r\n dataLabelShow: {\r\n displayName: data.createDisplayNameGetter(\"Visual_Reference_Line_Data_Label\"),\r\n description: data.createDisplayNameGetter('Visual_Reference_Line_Data_Label_Show_Description'),\r\n type: { bool: true }\r\n },\r\n dataLabelColor: {\r\n displayName: data.createDisplayNameGetter(\"Visual_Reference_Line_Data_Label_Color\"),\r\n description: data.createDisplayNameGetter('Visual_Reference_Line_Data_Label_Color_Description'),\r\n type: { fill: { solid: { color: true } } }\r\n },\r\n dataLabelDecimalPoints: {\r\n displayName: data.createDisplayNameGetter(\"Visual_Reference_Line_Data_Decimal_Points\"),\r\n placeHolderText: data.createDisplayNameGetter('Visual_Precision_Auto'),\r\n type: { numeric: true }\r\n },\r\n dataLabelHorizontalPosition: {\r\n displayName: data.createDisplayNameGetter(\"Visual_Reference_Line_Data_Horizontal_Position\"),\r\n description: data.createDisplayNameGetter('Visual_Reference_Line_Data_Label_Horizontal_Position_Description'),\r\n type: { enumeration: referenceLineDataLabelHorizontalPosition.type }\r\n },\r\n dataLabelVerticalPosition: {\r\n displayName: data.createDisplayNameGetter(\"Visual_Reference_Line_Data_Vertical_Position\"),\r\n description: data.createDisplayNameGetter('Visual_Reference_Line_Data_Label_Vertical_Position_Description'),\r\n type: { enumeration: referenceLineDataLabelVerticalPosition.type }\r\n },\r\n },\r\n },\r\n y1AxisReferenceLine: {\r\n displayName: data.createDisplayNameGetter('Visual_Reference_Line_Y'),\r\n description: data.createDisplayNameGetter('Visual_Reference_Line_Description'),\r\n properties: {\r\n show: {\r\n displayName: data.createDisplayNameGetter('Visual_Show'),\r\n type: { bool: true }\r\n },\r\n value: {\r\n displayName: data.createDisplayNameGetter('Visual_Reference_Line_Value'),\r\n description: data.createDisplayNameGetter('Visual_Reference_Line_Value_Description'), \r\n type: { numeric: true }\r\n },\r\n lineColor: {\r\n displayName: data.createDisplayNameGetter('Visual_Reference_Line_Color'),\r\n description: data.createDisplayNameGetter('Visual_Reference_Line_Color_Description'),\r\n type: { fill: { solid: { color: true } } }\r\n },\r\n transparency: {\r\n displayName: data.createDisplayNameGetter('Visual_Reference_Line_Transparency'),\r\n description: data.createDisplayNameGetter('Visual_Reference_Line_Transparency_Description'),\r\n type: { numeric: true }\r\n },\r\n style: {\r\n displayName: data.createDisplayNameGetter('Visual_Reference_Line_Style'),\r\n description: data.createDisplayNameGetter('Visual_Reference_Line_Style_Description'), \r\n type: { enumeration: lineStyle.type }\r\n },\r\n position: {\r\n displayName: data.createDisplayNameGetter('Visual_Reference_Line_Arrange'),\r\n description: data.createDisplayNameGetter('Visual_Reference_Line_Arrange_Description'), \r\n type: { enumeration: referenceLinePosition.type }\r\n },\r\n dataLabelShow: {\r\n displayName: data.createDisplayNameGetter(\"Visual_Reference_Line_Data_Label\"),\r\n description: data.createDisplayNameGetter('Visual_Reference_Line_Data_Label_Show_Description'),\r\n type: { bool: true }\r\n },\r\n dataLabelColor: {\r\n displayName: data.createDisplayNameGetter(\"Visual_Reference_Line_Data_Label_Color\"),\r\n description: data.createDisplayNameGetter('Visual_Reference_Line_Data_Label_Color_Description'),\r\n type: { fill: { solid: { color: true } } }\r\n },\r\n dataLabelDecimalPoints: {\r\n displayName: data.createDisplayNameGetter(\"Visual_Reference_Line_Data_Decimal_Points\"),\r\n placeHolderText: data.createDisplayNameGetter('Visual_Precision_Auto'),\r\n type: { numeric: true }\r\n },\r\n dataLabelHorizontalPosition: {\r\n displayName: data.createDisplayNameGetter(\"Visual_Reference_Line_Data_Horizontal_Position\"),\r\n description: data.createDisplayNameGetter('Visual_Reference_Line_Data_Label_Horizontal_Position_Description'),\r\n type: { enumeration: referenceLineDataLabelHorizontalPosition.type }\r\n },\r\n dataLabelVerticalPosition: {\r\n displayName: data.createDisplayNameGetter(\"Visual_Reference_Line_Data_Vertical_Position\"),\r\n description: data.createDisplayNameGetter('Visual_Reference_Line_Data_Label_Vertical_Position_Description'),\r\n type: { enumeration: referenceLineDataLabelVerticalPosition.type }\r\n },\r\n },\r\n },\r\n legend: {\r\n displayName: data.createDisplayNameGetter('Visual_Legend'),\r\n description: data.createDisplayNameGetter('Visual_LegendDescription'),\r\n properties: {\r\n show: {\r\n displayName: data.createDisplayNameGetter('Visual_Show'),\r\n type: { bool: true }\r\n },\r\n position: {\r\n displayName: data.createDisplayNameGetter('Visual_LegendPosition'),\r\n description: data.createDisplayNameGetter('Visual_LegendPositionDescription'),\r\n type: { enumeration: legendPosition.type }\r\n },\r\n showTitle: {\r\n displayName: data.createDisplayNameGetter('Visual_LegendShowTitle'),\r\n description: data.createDisplayNameGetter('Visual_LegendShowTitleDescription'),\r\n type: { bool: true }\r\n },\r\n titleText: {\r\n displayName: data.createDisplayNameGetter('Visual_LegendName'),\r\n description: data.createDisplayNameGetter('Visual_LegendNameDescription'),\r\n type: { text: true },\r\n suppressFormatPainterCopy: true\r\n },\r\n labelColor: {\r\n displayName: data.createDisplayNameGetter('Visual_LegendTitleColor'),\r\n type: { fill: { solid: { color: true } } }\r\n },\r\n fontSize: {\r\n displayName: data.createDisplayNameGetter('Visual_TextSize'),\r\n type: { formatting: { fontSize: true } }\r\n }\r\n }\r\n },\r\n categoryLabels: {\r\n displayName: data.createDisplayNameGetter('Visual_CategoryLabels'),\r\n description: data.createDisplayNameGetter('Visual_CategoryLabelsDescription'),\r\n properties: {\r\n show: {\r\n displayName: data.createDisplayNameGetter('Visual_Show'),\r\n type: { bool: true }\r\n },\r\n color: {\r\n displayName: data.createDisplayNameGetter('Visual_LabelsFill'),\r\n description: data.createDisplayNameGetter('Visual_LabelsFillDescription'),\r\n type: { fill: { solid: { color: true } } }\r\n },\r\n fontSize: {\r\n displayName: data.createDisplayNameGetter('Visual_TextSize'),\r\n type: { formatting: { fontSize: true } }\r\n },\r\n },\r\n },\r\n colorBorder: {\r\n displayName: data.createDisplayNameGetter('Visual_ColorBorder'),\r\n properties: {\r\n show: {\r\n displayName: data.createDisplayNameGetter('Visual_Show'),\r\n type: { bool: true }\r\n },\r\n },\r\n },\r\n fillPoint: {\r\n displayName: data.createDisplayNameGetter('Visual_FillPoint'),\r\n properties: {\r\n show: {\r\n displayName: data.createDisplayNameGetter('Visual_Fill'),\r\n type: { bool: true }\r\n },\r\n },\r\n },\r\n colorByCategory: {\r\n displayName: data.createDisplayNameGetter('Visual_ColorByCategory'),\r\n properties: {\r\n show: {\r\n displayName: data.createDisplayNameGetter('Visual_Show'),\r\n type: { bool: true }\r\n }\r\n }\r\n },\r\n currentFrameIndex: {\r\n properties: {\r\n index: {\r\n type: { numeric: true },\r\n }\r\n }\r\n },\r\n plotArea: {\r\n displayName: data.createDisplayNameGetter('Visual_Plot'),\r\n //description: data.createDisplayNameGetter('Visual_PlotDescription'),\r\n properties: {\r\n transparency: {\r\n displayName: data.createDisplayNameGetter('Visual_Background_Transparency'),\r\n type: { numeric: true },\r\n },\r\n image: {\r\n type: { image: {} },\r\n },\r\n },\r\n },\r\n },\r\n dataViewMappings: [{\r\n conditions: [\r\n { 'Category': { max: 1 }, 'Series': { max: 1 }, 'X': { max: 1 }, 'Y': { max: 1 }, 'Size': { max: 1 }, 'Gradient': { max: 0 }, 'Play': { max: 0 } },\r\n { 'Category': { max: 1 }, 'Series': { max: 0 }, 'X': { max: 1 }, 'Y': { max: 1 }, 'Size': { max: 1 }, 'Gradient': { max: 1 }, 'Play': { max: 0 } },\r\n ],\r\n categorical: {\r\n categories: {\r\n for: { in: 'Category' },\r\n dataReductionAlgorithm: { sample: {} }\r\n },\r\n values: {\r\n group: {\r\n by: 'Series',\r\n select: [\r\n { bind: { to: 'X' } },\r\n { bind: { to: 'Y' } },\r\n { bind: { to: 'Size' } },\r\n { bind: { to: 'Gradient' } },\r\n ],\r\n dataReductionAlgorithm: { top: {} }\r\n }\r\n },\r\n rowCount: { preferred: { min: 2 } }\r\n }\r\n }, {\r\n conditions: [\r\n { 'Category': { max: 1 }, 'Series': { max: 1 }, 'X': { max: 1 }, 'Y': { max: 1 }, 'Size': { max: 1 }, 'Gradient': { max: 0 }, 'Play': { min: 1, max: 1 } },\r\n { 'Category': { max: 1 }, 'Series': { max: 0 }, 'X': { max: 1 }, 'Y': { max: 1 }, 'Size': { max: 1 }, 'Gradient': { max: 1 }, 'Play': { min: 1, max: 1 } },\r\n ],\r\n // Long term: consider adding the 'name' concept and have this be a reference to the other dataViewMapping above.\r\n // Then we'd also move the splitting logic of Matrix->Categorical[] into DataViewTransform, and other visuals would benefit.\r\n matrix: {\r\n rows: {\r\n select: [\r\n { bind: { to: 'Play' } },\r\n { bind: { to: 'Category' } },\r\n ],\r\n /* Explicitly override the server data reduction to make it appropriate for matrix/play. */\r\n dataReductionAlgorithm: { bottom: { count: 5000 } }\r\n },\r\n columns: {\r\n for: { in: 'Series' },\r\n /* Explicitly override the server data reduction to make it appropriate for matrix/play. */\r\n dataReductionAlgorithm: { top: { count: 60 } }\r\n },\r\n values: {\r\n select: [\r\n { bind: { to: 'X' } },\r\n { bind: { to: 'Y' } },\r\n { bind: { to: 'Size' } },\r\n ]\r\n }\r\n }\r\n }],\r\n sorting: {\r\n custom: {},\r\n },\r\n drilldown: {\r\n roles: ['Category']\r\n },\r\n };\r\n\r\n export const scatterChartProps = {\r\n general: {\r\n formatString: <DataViewObjectPropertyIdentifier>{ objectName: 'general', propertyName: 'formatString' },\r\n },\r\n dataPoint: {\r\n defaultColor: <DataViewObjectPropertyIdentifier>{ objectName: 'dataPoint', propertyName: 'defaultColor' },\r\n fill: <DataViewObjectPropertyIdentifier>{ objectName: 'dataPoint', propertyName: 'fill' },\r\n },\r\n colorBorder: {\r\n show: <DataViewObjectPropertyIdentifier>{ objectName: 'colorBorder', propertyName: 'show' },\r\n },\r\n fillPoint: {\r\n show: <DataViewObjectPropertyIdentifier>{ objectName: 'fillPoint', propertyName: 'show' },\r\n },\r\n colorByCategory: {\r\n show: <DataViewObjectPropertyIdentifier>{ objectName: 'colorByCategory', propertyName: 'show' },\r\n },\r\n currentFrameIndex: {\r\n index: <DataViewObjectPropertyIdentifier>{ objectName: 'currentFrameIndex', propertyName: 'index' },\r\n },\r\n legend: {\r\n labelColor: <DataViewObjectPropertyIdentifier>{ objectName: 'legend', propertyName: 'labelColor' },\r\n },\r\n plotArea: {\r\n image: <DataViewObjectPropertyIdentifier>{ objectName: 'plotArea', propertyName: 'image' },\r\n transparency: <DataViewObjectPropertyIdentifier>{ objectName: 'plotArea', propertyName: 'transparency' },\r\n },\r\n };\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n export const slicerCapabilities: VisualCapabilities = {\r\n dataRoles: [\r\n {\r\n name: 'Values',\r\n kind: VisualDataRoleKind.Grouping,\r\n displayName: powerbi.data.createDisplayNameGetter('Role_DisplayName_Field'),\r\n description: data.createDisplayNameGetter('Role_DisplayName_FieldDescription')\r\n }\r\n ],\r\n objects: {\r\n general: {\r\n displayName: data.createDisplayNameGetter('Visual_General'),\r\n properties: {\r\n selected: {\r\n type: { bool: true }\r\n },\r\n filter: {\r\n type: { filter: {} },\r\n rule: {\r\n output: {\r\n property: 'selected',\r\n selector: ['Values'],\r\n }\r\n }\r\n },\r\n defaultValue: {\r\n type: { expression: { defaultValue: true } },\r\n },\r\n formatString: {\r\n type: { formatting: { formatString: true } },\r\n },\r\n outlineColor: {\r\n displayName: data.createDisplayNameGetter('Visual_OutlineColor'),\r\n type: { fill: { solid: { color: true } } }\r\n },\r\n outlineWeight: {\r\n displayName: data.createDisplayNameGetter('Visual_OutlineWeight'),\r\n type: { numeric: true }\r\n },\r\n orientation: {\r\n displayName: data.createDisplayNameGetter('Slicer_Orientation'),\r\n type: { enumeration: slicerOrientation.type }\r\n },\r\n count: {\r\n type: { integer: true }\r\n },\r\n },\r\n },\r\n selection: {\r\n displayName: data.createDisplayNameGetter('Visual_SelectionControls'),\r\n properties: {\r\n selectAllCheckboxEnabled: {\r\n displayName: data.createDisplayNameGetter('Visual_SelectAll'),\r\n type: { bool: true }\r\n },\r\n singleSelect: {\r\n displayName: data.createDisplayNameGetter('Visual_SingleSelect'),\r\n type: { bool: true }\r\n }\r\n },\r\n },\r\n header: {\r\n displayName: data.createDisplayNameGetter('Visual_Header'),\r\n properties: {\r\n show: {\r\n displayName: data.createDisplayNameGetter('Visual_Show'),\r\n type: { bool: true }\r\n },\r\n fontColor: {\r\n displayName: data.createDisplayNameGetter('Visual_FontColor'),\r\n type: { fill: { solid: { color: true } } }\r\n },\r\n background: {\r\n displayName: data.createDisplayNameGetter('Visual_Background'),\r\n type: { fill: { solid: { color: true } } }\r\n },\r\n outline: {\r\n displayName: data.createDisplayNameGetter('Visual_Outline'),\r\n type: { enumeration: outline.type }\r\n },\r\n textSize: {\r\n displayName: data.createDisplayNameGetter('Visual_TextSize'),\r\n type: { numeric: true }\r\n },\r\n }\r\n },\r\n items: {\r\n displayName: data.createDisplayNameGetter('Role_DisplayName_Items'),\r\n properties: {\r\n fontColor: {\r\n displayName: data.createDisplayNameGetter('Visual_FontColor'),\r\n type: { fill: { solid: { color: true } } }\r\n },\r\n background: {\r\n displayName: data.createDisplayNameGetter('Visual_Background'),\r\n type: { fill: { solid: { color: true } } }\r\n },\r\n outline: {\r\n displayName: data.createDisplayNameGetter('Visual_Outline'),\r\n type: { enumeration: outline.type }\r\n },\r\n textSize: {\r\n displayName: data.createDisplayNameGetter('Visual_TextSize'),\r\n type: { numeric: true }\r\n },\r\n }\r\n }\r\n },\r\n dataViewMappings: [{\r\n conditions: [{ 'Values': { max: 1 }, 'ValuesCount': { min: 0, max: 1 }, }],\r\n categorical: {\r\n categories: {\r\n for: { in: 'Values' },\r\n dataReductionAlgorithm: { window: {} }\r\n },\r\n includeEmptyGroups: true,\r\n }\r\n }],\r\n\r\n sorting: {\r\n default: {},\r\n },\r\n suppressDefaultTitle: true,\r\n disableSeeData: true,\r\n };\r\n\r\n // TODO: Generate these from above, defining twice just introduces potential for error\r\n export const slicerProps = {\r\n general: {\r\n outlineColor: <DataViewObjectPropertyIdentifier>{ objectName: 'general', propertyName: 'outlineColor' },\r\n outlineWeight: <DataViewObjectPropertyIdentifier>{ objectName: 'general', propertyName: 'outlineWeight' },\r\n orientation: <DataViewObjectPropertyIdentifier>{ objectName: 'general', propertyName: 'orientation' },\r\n count: <DataViewObjectPropertyIdentifier>{ objectName: 'general', propertyName: 'count' },\r\n },\r\n selection: {\r\n selectAllCheckboxEnabled: <DataViewObjectPropertyIdentifier>{ objectName: 'selection', propertyName: 'selectAllCheckboxEnabled' },\r\n singleSelect: <DataViewObjectPropertyIdentifier>{ objectName: 'selection', propertyName: 'singleSelect' }\r\n },\r\n header: {\r\n show: <DataViewObjectPropertyIdentifier>{ objectName: 'header', propertyName: 'show' },\r\n fontColor: <DataViewObjectPropertyIdentifier>{ objectName: 'header', propertyName: 'fontColor' },\r\n background: <DataViewObjectPropertyIdentifier>{ objectName: 'header', propertyName: 'background' },\r\n outline: <DataViewObjectPropertyIdentifier>{ objectName: 'header', propertyName: 'outline' },\r\n textSize: <DataViewObjectPropertyIdentifier>{ objectName: 'header', propertyName: 'textSize' },\r\n },\r\n items: {\r\n fontColor: <DataViewObjectPropertyIdentifier>{ objectName: 'items', propertyName: 'fontColor' },\r\n background: <DataViewObjectPropertyIdentifier>{ objectName: 'items', propertyName: 'background' },\r\n outline: <DataViewObjectPropertyIdentifier>{ objectName: 'items', propertyName: 'outline' },\r\n textSize: <DataViewObjectPropertyIdentifier>{ objectName: 'items', propertyName: 'textSize' },\r\n },\r\n selectedPropertyIdentifier: <DataViewObjectPropertyIdentifier>{ objectName: 'general', propertyName: 'selected' },\r\n filterPropertyIdentifier: <DataViewObjectPropertyIdentifier> { objectName: 'general', propertyName: 'filter' },\r\n formatString: <DataViewObjectPropertyIdentifier> { objectName: 'general', propertyName: 'formatString' },\r\n defaultValue: <DataViewObjectPropertyIdentifier>{ objectName: 'general', propertyName: 'defaultValue' },\r\n };\r\n\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n export const tableCapabilities: VisualCapabilities = {\r\n dataRoles: [{\r\n name: 'Values',\r\n kind: VisualDataRoleKind.GroupingOrMeasure,\r\n }],\r\n objects: {\r\n general: {\r\n displayName: data.createDisplayNameGetter('Visual_General'),\r\n properties: {\r\n formatString: {\r\n type: { formatting: { formatString: true } },\r\n },\r\n columnWidth: {\r\n type: { numeric: true }\r\n },\r\n totals: {\r\n type: { bool: true },\r\n displayName: data.createDisplayNameGetter('Visual_Totals')\r\n },\r\n autoSizeColumnWidth: {\r\n type: { bool: true },\r\n displayName: data.createDisplayNameGetter('Visual_Adjust_Column_Width')\r\n },\r\n textSize: {\r\n displayName: data.createDisplayNameGetter('Visual_TextSize'),\r\n type: { numeric: true }\r\n },\r\n outlineColor: {\r\n displayName: data.createDisplayNameGetter('Visual_OutlineColor'),\r\n type: { fill: { solid: { color: true } } }\r\n },\r\n outlineWeight: {\r\n displayName: data.createDisplayNameGetter('Visual_OutlineWeight'),\r\n type: { numeric: true }\r\n }\r\n },\r\n },\r\n columns:\r\n {\r\n displayName: data.createDisplayNameGetter('Role_DisplayName_Columns'),\r\n properties: {\r\n showSeparators: {\r\n displayName: data.createDisplayNameGetter('Tablix_Column_Separator'),\r\n type: { bool: true }\r\n },\r\n separatorColor: {\r\n displayName: data.createDisplayNameGetter('Visual_Fill'),\r\n type: { fill: { solid: { color: true } } }\r\n },\r\n columnSeparatorWeight: {\r\n displayName: data.createDisplayNameGetter('Visual_BasicShape_Weight'),\r\n type: { numeric: true }\r\n }\r\n }\r\n },\r\n header: {\r\n displayName: data.createDisplayNameGetter('Visual_Header'),\r\n properties: {\r\n fontColor: {\r\n displayName: data.createDisplayNameGetter('Visual_FontColor'),\r\n type: { fill: { solid: { color: true } } }\r\n },\r\n backgroundColor: {\r\n displayName: data.createDisplayNameGetter('Visual_Background'),\r\n type: { fill: { solid: { color: true } } }\r\n },\r\n outline: {\r\n displayName: data.createDisplayNameGetter('Visual_Outline'),\r\n type: { enumeration: outline.type }\r\n }\r\n },\r\n },\r\n rows: {\r\n displayName: data.createDisplayNameGetter('Role_DisplayName_Rows'),\r\n properties: {\r\n showSeparators: {\r\n displayName: data.createDisplayNameGetter('Tablix_Row_Separator'),\r\n type: { bool: true }\r\n },\r\n fontColor: {\r\n displayName: data.createDisplayNameGetter('Visual_FontColor'),\r\n type: { fill: { solid: { color: true } } }\r\n },\r\n backgroundColor: {\r\n displayName: data.createDisplayNameGetter('Visual_Background'),\r\n type: { fill: { solid: { color: true } } }\r\n },\r\n outline: {\r\n displayName: data.createDisplayNameGetter('Visual_Outline'),\r\n type: { enumeration: outline.type }\r\n }\r\n },\r\n },\r\n totals: {\r\n displayName: data.createDisplayNameGetter('Visual_Totals'),\r\n properties: {\r\n fontColor: {\r\n displayName: data.createDisplayNameGetter('Visual_FontColor'),\r\n type: { fill: { solid: { color: true } } }\r\n },\r\n backgroundColor: {\r\n displayName: data.createDisplayNameGetter('Visual_Background'),\r\n type: { fill: { solid: { color: true } } }\r\n },\r\n outline: {\r\n displayName: data.createDisplayNameGetter('Visual_Outline'),\r\n type: { enumeration: outline.type }\r\n }\r\n },\r\n }\r\n },\r\n dataViewMappings: [{\r\n table: {\r\n rows: {\r\n for: { in: 'Values' },\r\n dataReductionAlgorithm: { window: { count: 500 } }\r\n },\r\n rowCount: { preferred: { min: 1 } }\r\n },\r\n }],\r\n sorting: {\r\n custom: {},\r\n },\r\n suppressDefaultTitle: true,\r\n supportsSelection: false,\r\n disableSeeData: true,\r\n };\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n export const matrixRoleNames = {\r\n rows: 'Rows',\r\n columns: 'Columns',\r\n values: 'Values',\r\n };\r\n\r\n export const matrixCapabilities: VisualCapabilities = {\r\n dataRoles: [\r\n {\r\n name: matrixRoleNames.rows,\r\n kind: VisualDataRoleKind.Grouping,\r\n description: data.createDisplayNameGetter('Role_DisplayName_RowsDescription')\r\n }, {\r\n name: matrixRoleNames.columns,\r\n kind: VisualDataRoleKind.Grouping,\r\n description: data.createDisplayNameGetter('Role_DisplayName_ColumnsDescription')\r\n }, {\r\n name: matrixRoleNames.values,\r\n kind: VisualDataRoleKind.Measure\r\n }\r\n ],\r\n objects: {\r\n general: {\r\n displayName: data.createDisplayNameGetter('Visual_General'),\r\n properties: {\r\n formatString: {\r\n type: { formatting: { formatString: true } },\r\n },\r\n columnWidth: {\r\n type: { numeric: true }\r\n },\r\n rowSubtotals: {\r\n type: { bool: true },\r\n displayName: data.createDisplayNameGetter('Visual_TotalRow')\r\n },\r\n columnSubtotals: {\r\n type: { bool: true },\r\n displayName: data.createDisplayNameGetter('Visual_TotalColumn')\r\n },\r\n autoSizeColumnWidth: {\r\n type: { bool: true },\r\n displayName: data.createDisplayNameGetter('Visual_Adjust_Column_Width')\r\n },\r\n textSize: {\r\n displayName: data.createDisplayNameGetter('Visual_TextSize'),\r\n type: { numeric: true }\r\n },\r\n outlineColor: {\r\n displayName: data.createDisplayNameGetter('Visual_OutlineColor'),\r\n type: { fill: { solid: { color: true } } }\r\n },\r\n outlineWeight: {\r\n displayName: data.createDisplayNameGetter('Visual_OutlineWeight'),\r\n type: { numeric: true }\r\n }\r\n },\r\n },\r\n columns:\r\n {\r\n displayName: data.createDisplayNameGetter('Role_DisplayName_Columns'),\r\n properties: {\r\n showSeparators: {\r\n displayName: data.createDisplayNameGetter('Tablix_Column_Separator'),\r\n type: { bool: true }\r\n },\r\n separatorColor: {\r\n displayName: data.createDisplayNameGetter('Role_DisplayName_Color'),\r\n type: { fill: { solid: { color: true } } }\r\n },\r\n columnSeparatorWeight: {\r\n displayName: data.createDisplayNameGetter('Visual_BasicShape_Weight'),\r\n type: { numeric: true }\r\n }\r\n }\r\n },\r\n header: {\r\n displayName: data.createDisplayNameGetter('Visual_Header'),\r\n properties: {\r\n fontColor: {\r\n displayName: data.createDisplayNameGetter('Visual_FontColor'),\r\n type: { fill: { solid: { color: true } } }\r\n },\r\n backgroundColor: {\r\n displayName: data.createDisplayNameGetter('Visual_Background'),\r\n type: { fill: { solid: { color: true } } }\r\n },\r\n outline: {\r\n displayName: data.createDisplayNameGetter('Visual_Outline'),\r\n type: { enumeration: outline.type }\r\n }\r\n },\r\n },\r\n rows: {\r\n displayName: data.createDisplayNameGetter('Role_DisplayName_Rows'),\r\n properties: {\r\n showSeparators: {\r\n displayName: data.createDisplayNameGetter('Tablix_Row_Separator'),\r\n type: { bool: true }\r\n },\r\n fontColor: {\r\n displayName: data.createDisplayNameGetter('Visual_FontColor'),\r\n type: { fill: { solid: { color: true } } }\r\n },\r\n backgroundColor: {\r\n displayName: data.createDisplayNameGetter('Visual_Background'),\r\n type: { fill: { solid: { color: true } } }\r\n },\r\n outline: {\r\n displayName: data.createDisplayNameGetter('Visual_Outline'),\r\n type: { enumeration: outline.type }\r\n }\r\n },\r\n },\r\n values: {\r\n displayName: data.createDisplayNameGetter('Role_DisplayName_Values'),\r\n properties: {\r\n fontColor: {\r\n displayName: data.createDisplayNameGetter('Visual_FontColor'),\r\n type: { fill: { solid: { color: true } } }\r\n },\r\n backgroundColor: {\r\n displayName: data.createDisplayNameGetter('Visual_Background'),\r\n type: { fill: { solid: { color: true } } }\r\n },\r\n outline: {\r\n displayName: data.createDisplayNameGetter('Visual_Outline'),\r\n type: { enumeration: outline.type }\r\n }\r\n },\r\n },\r\n totals: {\r\n displayName: data.createDisplayNameGetter('Visual_Totals'),\r\n properties: {\r\n fontColor: {\r\n displayName: data.createDisplayNameGetter('Visual_FontColor'),\r\n type: { fill: { solid: { color: true } } }\r\n },\r\n backgroundColor: {\r\n displayName: data.createDisplayNameGetter('Visual_Background'),\r\n type: { fill: { solid: { color: true } } }\r\n },\r\n outline: {\r\n displayName: data.createDisplayNameGetter('Visual_Outline'),\r\n type: { enumeration: outline.type }\r\n },\r\n leadingSpace: {\r\n displayName: data.createDisplayNameGetter('Tablix_Total_LeadingSpace'),\r\n type: { numeric: true }\r\n }\r\n },\r\n }\r\n },\r\n dataViewMappings: [{\r\n conditions: [\r\n { 'Rows': { max: 0 }, 'Columns': { max: 0 }, 'Values': { min: 1 } },\r\n { 'Rows': { min: 1 }, 'Columns': { min: 0 }, 'Values': { min: 0 } },\r\n { 'Rows': { min: 0 }, 'Columns': { min: 1 }, 'Values': { min: 0 } }\r\n ],\r\n matrix: {\r\n rows: {\r\n for: { in: 'Rows' },\r\n /* Explicitly override the server data reduction to make it appropriate for matrix. */\r\n dataReductionAlgorithm: { window: { count: 500 } }\r\n },\r\n columns: {\r\n for: { in: 'Columns' },\r\n /* Explicitly override the server data reduction to make it appropriate for matrix. */\r\n dataReductionAlgorithm: { top: { count: 100 } }\r\n },\r\n values: {\r\n for: { in: 'Values' }\r\n }\r\n }\r\n }],\r\n filterMappings: {\r\n measureFilter: {\r\n targetRoles: [matrixRoleNames.rows]\r\n }\r\n },\r\n sorting: {\r\n custom: {},\r\n },\r\n suppressDefaultTitle: true,\r\n supportsSelection: false,\r\n disableSeeData: true,\r\n };\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n export const treemapCapabilities: VisualCapabilities = {\r\n dataRoles: [\r\n {\r\n name: 'Group',\r\n kind: VisualDataRoleKind.Grouping,\r\n displayName: data.createDisplayNameGetter('Role_DisplayName_Group'),\r\n description: data.createDisplayNameGetter('Role_DisplayName_GroupTreemapDescription')\r\n }, {\r\n name: 'Details',\r\n kind: VisualDataRoleKind.Grouping,\r\n displayName: data.createDisplayNameGetter('Role_DisplayName_Details'),\r\n }, {\r\n name: 'Values',\r\n kind: VisualDataRoleKind.Measure,\r\n displayName: data.createDisplayNameGetter('Role_DisplayName_Values'),\r\n description: data.createDisplayNameGetter('Role_DisplayName_ValuesDescription'),\r\n requiredTypes: [{ numeric: true }, { integer: true }],\r\n }, {\r\n name: 'Gradient',\r\n kind: VisualDataRoleKind.Measure,\r\n displayName: data.createDisplayNameGetter('Role_DisplayName_Gradient'),\r\n description: data.createDisplayNameGetter('Role_DisplayName_GradientDescription'),\r\n requiredTypes: [{ numeric: true }, { integer: true }],\r\n }\r\n ],\r\n objects: {\r\n general: {\r\n displayName: data.createDisplayNameGetter('Visual_General'),\r\n properties: {\r\n formatString: {\r\n type: { formatting: { formatString: true } },\r\n },\r\n },\r\n },\r\n legend: {\r\n displayName: data.createDisplayNameGetter('Visual_Legend'),\r\n description: data.createDisplayNameGetter('Visual_LegendDescription'),\r\n properties: {\r\n show: {\r\n displayName: data.createDisplayNameGetter('Visual_Show'),\r\n type: { bool: true }\r\n },\r\n position: {\r\n displayName: data.createDisplayNameGetter('Visual_LegendPosition'),\r\n description: data.createDisplayNameGetter('Visual_LegendPositionDescription'),\r\n type: { enumeration: legendPosition.type }\r\n },\r\n showTitle: {\r\n displayName: data.createDisplayNameGetter('Visual_LegendShowTitle'),\r\n description: data.createDisplayNameGetter('Visual_LegendShowTitleDescription'),\r\n type: { bool: true }\r\n },\r\n titleText: {\r\n displayName: data.createDisplayNameGetter('Visual_LegendName'),\r\n description: data.createDisplayNameGetter('Visual_LegendNameDescription'),\r\n type: { text: true }\r\n },\r\n labelColor: {\r\n displayName: data.createDisplayNameGetter('Visual_LegendTitleColor'),\r\n type: { fill: { solid: { color: true } } }\r\n },\r\n fontSize: {\r\n displayName: data.createDisplayNameGetter('Visual_TextSize'),\r\n type: { formatting: { fontSize: true } }\r\n }\r\n }\r\n },\r\n dataPoint: {\r\n displayName: data.createDisplayNameGetter('Visual_DataPoint'),\r\n description: data.createDisplayNameGetter('Visual_DataPointDescription'),\r\n properties: { \r\n fill: {\r\n type: { fill: { solid: { color: true } } }\r\n },\r\n fillRule: {\r\n displayName: data.createDisplayNameGetter('Visual_Gradient'),\r\n type: { fillRule: {} },\r\n rule: {\r\n inputRole: 'Gradient',\r\n output: {\r\n property: 'fill',\r\n selector: ['Group'],\r\n }\r\n }\r\n }\r\n }\r\n },\r\n labels: {\r\n displayName: data.createDisplayNameGetter('Visual_DataPointsLabels'),\r\n description: data.createDisplayNameGetter('Visual_DataPointsLabelsDescription'),\r\n properties: {\r\n show: {\r\n displayName: data.createDisplayNameGetter('Visual_Show'),\r\n type: { bool: true }\r\n },\r\n color: {\r\n displayName: data.createDisplayNameGetter('Visual_LabelsFill'),\r\n description: data.createDisplayNameGetter('Visual_LabelsFillDescription'),\r\n type: { fill: { solid: { color: true } } }\r\n },\r\n labelDisplayUnits: {\r\n displayName: data.createDisplayNameGetter('Visual_DisplayUnits'),\r\n description: data.createDisplayNameGetter('Visual_DisplayUnitsDescription'),\r\n type: { formatting: { labelDisplayUnits: true } }\r\n },\r\n labelPrecision: {\r\n displayName: data.createDisplayNameGetter('Visual_Precision'),\r\n description: data.createDisplayNameGetter('Visual_PrecisionDescription'),\r\n placeHolderText: data.createDisplayNameGetter('Visual_Precision_Auto'),\r\n type: { numeric: true }\r\n },\r\n }\r\n },\r\n categoryLabels: {\r\n displayName: data.createDisplayNameGetter('Visual_CategoryLabels'),\r\n description: data.createDisplayNameGetter('Visual_CategoryLabelsDescription'),\r\n properties: {\r\n show: {\r\n type: { bool: true }\r\n },\r\n },\r\n },\r\n },\r\n dataViewMappings: [{\r\n conditions: [\r\n { 'Group': { max: 1 }, 'Details': { max: 0 }, 'Gradient': { max: 1 } },\r\n { 'Group': { max: 1 }, 'Details': { min: 1, max: 1 }, 'Values': { max: 1 }, 'Gradient': { max: 0 } }\r\n ],\r\n categorical: {\r\n categories: {\r\n for: { in: 'Group' },\r\n dataReductionAlgorithm: { top: {} }\r\n },\r\n values: {\r\n group: {\r\n by: 'Details',\r\n select: [{ bind: { to: 'Values' } }, { bind: { to: 'Gradient' } }],\r\n dataReductionAlgorithm: { top: {} }\r\n }\r\n },\r\n rowCount: { preferred: { min: 2 } }\r\n }\r\n }],\r\n supportsHighlight: true,\r\n sorting: {\r\n custom: {},\r\n implicit: {\r\n clauses: [{ role: 'Values', direction: SortDirection.Descending }]\r\n },\r\n },\r\n drilldown: {\r\n roles: ['Group']\r\n },\r\n };\r\n \r\n export const treemapProps = {\r\n general: {\r\n formatString: <DataViewObjectPropertyIdentifier>{ objectName: 'general', propertyName: 'formatString' },\r\n },\r\n dataPoint: {\r\n fill: <DataViewObjectPropertyIdentifier>{ objectName: 'dataPoint', propertyName: 'fill' },\r\n },\r\n legend: {\r\n show: <DataViewObjectPropertyIdentifier>{ objectName: 'legend', propertyName: 'show' },\r\n position: <DataViewObjectPropertyIdentifier>{ objectName: 'legend', propertyName: 'position' },\r\n showTitle: <DataViewObjectPropertyIdentifier>{ objectName: 'legend', propertyName: 'showTitle' },\r\n titleText: <DataViewObjectPropertyIdentifier>{ objectName: 'legend', propertyName: 'titleText' },\r\n labelColor: <DataViewObjectPropertyIdentifier>{ objectName: 'legend', propertyName: 'labelColor' },\r\n },\r\n labels: {\r\n show: <DataViewObjectPropertyIdentifier>{ objectName: 'labels', propertyName: 'show' },\r\n color: <DataViewObjectPropertyIdentifier>{ objectName: 'labels', propertyName: 'color' },\r\n labelDisplayUnits: <DataViewObjectPropertyIdentifier>{ objectName: 'labels', propertyName: 'labelDisplayUnits' },\r\n labelPrecision: <DataViewObjectPropertyIdentifier>{ objectName: 'labels', propertyName: 'labelPrecision' },\r\n },\r\n categoryLabels: {\r\n show: <DataViewObjectPropertyIdentifier>{ objectName: 'categoryLabels', propertyName: 'show' },\r\n },\r\n };\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n export const cardCapabilities: VisualCapabilities = {\r\n dataRoles: [\r\n {\r\n name: 'Values',\r\n kind: VisualDataRoleKind.Measure,\r\n displayName: data.createDisplayNameGetter('Role_DisplayName_Fields'),\r\n description: data.createDisplayNameGetter('Role_DisplayName_FieldsDescription'),\r\n }\r\n ],\r\n objects: {\r\n general: {\r\n properties: {\r\n formatString: {\r\n type: { formatting: { formatString: true } },\r\n },\r\n },\r\n },\r\n labels: {\r\n displayName: data.createDisplayNameGetter('Visual_DataPointLabel'),\r\n properties: {\r\n color: {\r\n displayName: data.createDisplayNameGetter('Visual_LabelsFill'),\r\n description: data.createDisplayNameGetter('Visual_LabelsFillDescription'),\r\n type: { fill: { solid: { color: true } } }\r\n },\r\n labelDisplayUnits: {\r\n displayName: data.createDisplayNameGetter('Visual_DisplayUnits'),\r\n description: data.createDisplayNameGetter('Visual_DisplayUnitsDescription'),\r\n type: { formatting: { labelDisplayUnits: true } }\r\n },\r\n labelPrecision: {\r\n displayName: data.createDisplayNameGetter('Visual_Precision'),\r\n description: data.createDisplayNameGetter('Visual_PrecisionDescription'),\r\n placeHolderText: data.createDisplayNameGetter('Visual_Precision_Auto'),\r\n type: { numeric: true }\r\n },\r\n // NOTE: Consider adding a ValueType for fontSize.\r\n fontSize: {\r\n displayName: data.createDisplayNameGetter('Visual_TextSize'),\r\n type: { formatting: { fontSize: true } }\r\n },\r\n },\r\n },\r\n categoryLabels: {\r\n displayName: data.createDisplayNameGetter('Visual_CategoryLabel'),\r\n properties: {\r\n show: {\r\n displayName: data.createDisplayNameGetter('Visual_Show'),\r\n type: { bool: true }\r\n },\r\n color: {\r\n displayName: data.createDisplayNameGetter('Visual_LabelsFill'),\r\n type: { fill: { solid: { color: true } } }\r\n },\r\n // NOTE: Consider adding a ValueType for fontSize.\r\n fontSize: {\r\n displayName: data.createDisplayNameGetter('Visual_TextSize'),\r\n type: { formatting: { fontSize: true } }\r\n },\r\n },\r\n },\r\n wordWrap: {\r\n displayName: data.createDisplayNameGetter('Visual_WordWrap'),\r\n properties: {\r\n show: {\r\n displayName: data.createDisplayNameGetter('Visual_Show'),\r\n type: { bool: true }\r\n },\r\n },\r\n },\r\n },\r\n dataViewMappings: [{\r\n conditions: [\r\n { 'Values': { max: 1 } }\r\n ],\r\n single: { role: \"Values\" }\r\n }],\r\n suppressDefaultTitle: true,\r\n supportsSelection: false,\r\n };\r\n\r\n export var cardProps = {\r\n categoryLabels: {\r\n show: <DataViewObjectPropertyIdentifier>{ objectName: 'categoryLabels', propertyName: 'show' },\r\n color: <DataViewObjectPropertyIdentifier>{ objectName: 'categoryLabels', propertyName: 'color' },\r\n fontSize: <DataViewObjectPropertyIdentifier>{ objectName: 'categoryLabels', propertyName: 'fontSize' },\r\n },\r\n labels: {\r\n color: <DataViewObjectPropertyIdentifier>{ objectName: 'labels', propertyName: 'color' },\r\n labelPrecision: <DataViewObjectPropertyIdentifier>{ objectName: 'labels', propertyName: 'labelPrecision' },\r\n labelDisplayUnits: <DataViewObjectPropertyIdentifier>{ objectName: 'labels', propertyName: 'labelDisplayUnits' },\r\n fontSize: <DataViewObjectPropertyIdentifier>{ objectName: 'labels', propertyName: 'fontSize' },\r\n },\r\n wordWrap: {\r\n show: <DataViewObjectPropertyIdentifier>{ objectName: 'wordWrap', propertyName: 'show' },\r\n },\r\n };\r\n\r\n} \r\n","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n export const waterfallChartCapabilities: VisualCapabilities = {\r\n dataRoles: [\r\n {\r\n name: 'Category',\r\n kind: VisualDataRoleKind.Grouping,\r\n description: data.createDisplayNameGetter('Role_DisplayName_CategoryWaterfallDescription')\r\n }, {\r\n name: 'Y',\r\n kind: VisualDataRoleKind.Measure,\r\n requiredTypes: [{ numeric: true }, { integer: true }],\r\n }\r\n ],\r\n objects: {\r\n general: {\r\n displayName: data.createDisplayNameGetter('Visual_General'),\r\n properties: {\r\n formatString: {\r\n type: { formatting: { formatString: true } },\r\n },\r\n },\r\n },\r\n legend: {\r\n displayName: data.createDisplayNameGetter('Visual_Legend'),\r\n description: data.createDisplayNameGetter('Visual_LegendDescription'),\r\n properties: {\r\n show: {\r\n displayName: data.createDisplayNameGetter('Visual_Show'),\r\n type: { bool: true }\r\n },\r\n position: {\r\n displayName: data.createDisplayNameGetter('Visual_LegendPosition'),\r\n description: data.createDisplayNameGetter('Visual_LegendPositionDescription'),\r\n type: { enumeration: legendPosition.type }\r\n },\r\n showTitle: {\r\n displayName: data.createDisplayNameGetter('Visual_LegendShowTitle'),\r\n description: data.createDisplayNameGetter('Visual_LegendShowTitleDescription'),\r\n type: { bool: true }\r\n },\r\n titleText: {\r\n displayName: data.createDisplayNameGetter('Visual_LegendName'),\r\n description: data.createDisplayNameGetter('Visual_LegendNameDescription'),\r\n type: { text: true },\r\n suppressFormatPainterCopy: true,\r\n },\r\n labelColor: {\r\n displayName: data.createDisplayNameGetter('Visual_LegendTitleColor'),\r\n type: { fill: { solid: { color: true } } }\r\n },\r\n fontSize: {\r\n displayName: data.createDisplayNameGetter('Visual_TextSize'),\r\n type: { formatting: { fontSize: true } }\r\n },\r\n }\r\n },\r\n labels: {\r\n displayName: data.createDisplayNameGetter('Visual_DataPointsLabels'),\r\n description: data.createDisplayNameGetter('Visual_DataPointsLabelsDescription'),\r\n properties: {\r\n show: {\r\n displayName: data.createDisplayNameGetter('Visual_Show'),\r\n type: { bool: true },\r\n },\r\n color: {\r\n displayName: data.createDisplayNameGetter('Visual_LabelsFill'),\r\n description: data.createDisplayNameGetter('Visual_LabelsFillDescription'),\r\n type: { fill: { solid: { color: true } } }\r\n },\r\n labelDisplayUnits: {\r\n displayName: data.createDisplayNameGetter('Visual_DisplayUnits'),\r\n description: data.createDisplayNameGetter('Visual_DisplayUnitsDescription'),\r\n type: { formatting: { labelDisplayUnits: true } },\r\n suppressFormatPainterCopy: true,\r\n },\r\n labelPrecision: {\r\n displayName: data.createDisplayNameGetter('Visual_Precision'),\r\n description: data.createDisplayNameGetter('Visual_PrecisionDescription'),\r\n placeHolderText: data.createDisplayNameGetter('Visual_Precision_Auto'),\r\n type: { numeric: true },\r\n suppressFormatPainterCopy: true,\r\n },\r\n fontSize: {\r\n displayName: data.createDisplayNameGetter('Visual_TextSize'),\r\n type: { formatting: { fontSize: true } },\r\n },\r\n }\r\n },\r\n sentimentColors: {\r\n displayName: data.createDisplayNameGetter('Waterfall_SentimentColors'),\r\n properties: {\r\n increaseFill: {\r\n displayName: data.createDisplayNameGetter('Waterfall_IncreaseLabel'),\r\n type: { fill: { solid: { color: true } } }\r\n },\r\n decreaseFill: {\r\n displayName: data.createDisplayNameGetter('Waterfall_DecreaseLabel'),\r\n type: { fill: { solid: { color: true } } }\r\n },\r\n totalFill: {\r\n displayName: data.createDisplayNameGetter('Waterfall_TotalLabel'),\r\n type: { fill: { solid: { color: true } } }\r\n }\r\n },\r\n },\r\n categoryAxis: {\r\n displayName: data.createDisplayNameGetter('Visual_XAxis'),\r\n properties: {\r\n show: {\r\n displayName: data.createDisplayNameGetter('Visual_Show'),\r\n type: { bool: true },\r\n },\r\n showAxisTitle: {\r\n displayName: data.createDisplayNameGetter('Visual_Axis_Title'),\r\n description: data.createDisplayNameGetter('Visual_Axis_XTitleDescription'),\r\n type: { bool: true }\r\n },\r\n axisStyle: {\r\n displayName: data.createDisplayNameGetter('Visual_Axis_Style'),\r\n type: { enumeration: axisStyle.type },\r\n },\r\n labelColor: {\r\n displayName: data.createDisplayNameGetter('Visual_Axis_LabelColor'),\r\n type: { fill: { solid: { color: true } } }\r\n }\r\n }\r\n },\r\n valueAxis: {\r\n displayName: data.createDisplayNameGetter('Visual_YAxis'),\r\n properties: {\r\n show: {\r\n displayName: data.createDisplayNameGetter('Visual_Show'),\r\n type: { bool: true },\r\n },\r\n position: {\r\n displayName: data.createDisplayNameGetter('Visual_YAxis_Position'),\r\n description: data.createDisplayNameGetter('Visual_YAxis_PositionDescription'),\r\n type: { enumeration: yAxisPosition.type },\r\n },\r\n start: {\r\n displayName: data.createDisplayNameGetter('Visual_Axis_Start'),\r\n description: data.createDisplayNameGetter('Visual_Axis_StartDescription'),\r\n type: { numeric: true },\r\n suppressFormatPainterCopy: true,\r\n },\r\n end: {\r\n displayName: data.createDisplayNameGetter('Visual_Axis_End'),\r\n description: data.createDisplayNameGetter('Visual_Axis_EndDescription'),\r\n type: { numeric: true },\r\n suppressFormatPainterCopy: true,\r\n },\r\n showAxisTitle: {\r\n displayName: data.createDisplayNameGetter('Visual_Axis_Title'),\r\n description: data.createDisplayNameGetter('Visual_Axis_YTitleDescription'),\r\n type: { bool: true }\r\n },\r\n axisStyle: {\r\n displayName: data.createDisplayNameGetter('Visual_Axis_Style'),\r\n type: { enumeration: axisStyle.type }\r\n },\r\n labelColor: {\r\n displayName: data.createDisplayNameGetter('Visual_Axis_LabelColor'),\r\n type: { fill: { solid: { color: true } } }\r\n },\r\n labelDisplayUnits: {\r\n displayName: data.createDisplayNameGetter('Visual_DisplayUnits'),\r\n type: { formatting: { labelDisplayUnits: true } },\r\n },\r\n labelPrecision: {\r\n displayName: data.createDisplayNameGetter('Visual_Precision'),\r\n placeHolderText: data.createDisplayNameGetter('Visual_Precision_Auto'),\r\n type: { numeric: true },\r\n }\r\n }\r\n },\r\n y1AxisReferenceLine: {\r\n displayName: data.createDisplayNameGetter('Visual_Reference_Line'),\r\n description: data.createDisplayNameGetter('Visual_Reference_Line_Description'),\r\n properties: {\r\n show: {\r\n displayName: data.createDisplayNameGetter('Visual_Show'),\r\n type: { bool: true }\r\n },\r\n value: {\r\n displayName: data.createDisplayNameGetter('Visual_Reference_Line_Value'),\r\n description: data.createDisplayNameGetter('Visual_Reference_Line_Value_Description'),\r\n type: { numeric: true }\r\n },\r\n lineColor: {\r\n displayName: data.createDisplayNameGetter('Visual_Reference_Line_Color'),\r\n description: data.createDisplayNameGetter('Visual_Reference_Line_Color_Description'),\r\n type: { fill: { solid: { color: true } } }\r\n },\r\n transparency: {\r\n displayName: data.createDisplayNameGetter('Visual_Reference_Line_Transparency'),\r\n description: data.createDisplayNameGetter('Visual_Reference_Line_Transparency_Description'),\r\n type: { numeric: true }\r\n },\r\n style: {\r\n displayName: data.createDisplayNameGetter('Visual_Reference_Line_Style'),\r\n description: data.createDisplayNameGetter('Visual_Reference_Line_Style_Description'),\r\n type: { enumeration: lineStyle.type }\r\n },\r\n position: {\r\n displayName: data.createDisplayNameGetter('Visual_Reference_Line_Arrange'),\r\n description: data.createDisplayNameGetter('Visual_Reference_Line_Arrange_Description'),\r\n type: { enumeration: referenceLinePosition.type }\r\n },\r\n dataLabelShow: {\r\n displayName: data.createDisplayNameGetter(\"Visual_Reference_Line_Data_Label\"),\r\n description: data.createDisplayNameGetter('Visual_Reference_Line_Data_Label_Show_Description'),\r\n type: { bool: true }\r\n },\r\n dataLabelColor: {\r\n displayName: data.createDisplayNameGetter(\"Visual_Reference_Line_Data_Label_Color\"),\r\n description: data.createDisplayNameGetter('Visual_Reference_Line_Data_Label_Color_Description'),\r\n type: { fill: { solid: { color: true } } }\r\n },\r\n dataLabelDecimalPoints: {\r\n displayName: data.createDisplayNameGetter(\"Visual_Reference_Line_Data_Decimal_Points\"),\r\n placeHolderText: data.createDisplayNameGetter('Visual_Precision_Auto'),\r\n type: { numeric: true }\r\n },\r\n dataLabelHorizontalPosition: {\r\n displayName: data.createDisplayNameGetter(\"Visual_Reference_Line_Data_Horizontal_Position\"),\r\n description: data.createDisplayNameGetter('Visual_Reference_Line_Data_Label_Horizontal_Position_Description'),\r\n type: { enumeration: referenceLineDataLabelHorizontalPosition.type }\r\n },\r\n dataLabelVerticalPosition: {\r\n displayName: data.createDisplayNameGetter(\"Visual_Reference_Line_Data_Vertical_Position\"),\r\n description: data.createDisplayNameGetter('Visual_Reference_Line_Data_Label_Vertical_Position_Description'),\r\n type: { enumeration: referenceLineDataLabelVerticalPosition.type }\r\n },\r\n },\r\n },\r\n },\r\n dataViewMappings: [{\r\n conditions: [\r\n { 'Category': { max: 1 }, 'Y': { max: 1 } },\r\n ],\r\n categorical: {\r\n categories: {\r\n for: { in: 'Category' },\r\n dataReductionAlgorithm: { top: {} }\r\n },\r\n values: {\r\n select: [{ bind: { to: 'Y' } }]\r\n },\r\n },\r\n }],\r\n drilldown: {\r\n roles: ['Category']\r\n },\r\n };\r\n\r\n export const waterfallChartProps = {\r\n general: {\r\n formatString: <DataViewObjectPropertyIdentifier>{ objectName: 'general', propertyName: 'formatString' },\r\n },\r\n sentimentColors: {\r\n increaseFill: <DataViewObjectPropertyIdentifier>{ objectName: 'sentimentColors', propertyName: 'increaseFill' },\r\n decreaseFill: <DataViewObjectPropertyIdentifier>{ objectName: 'sentimentColors', propertyName: 'decreaseFill' },\r\n totalFill: <DataViewObjectPropertyIdentifier>{ objectName: 'sentimentColors', propertyName: 'totalFill' },\r\n },\r\n legend: {\r\n labelColor: <DataViewObjectPropertyIdentifier>{ objectName: 'legend', propertyName: 'labelColor' },\r\n },\r\n };\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n export const sunburstCapabilities: VisualCapabilities = {\r\n dataRoles: [\r\n {\r\n name: 'Nodes',\r\n kind: VisualDataRoleKind.Grouping,\r\n displayName: 'Groups'\r\n }, {\r\n name: 'Values',\r\n kind: VisualDataRoleKind.Measure,\r\n displayName: 'Values'\r\n }\r\n ],\r\n objects: {\r\n general: {\r\n displayName: data.createDisplayNameGetter('Visual_General'),\r\n properties: {\r\n formatString: {\r\n type: { formatting: { formatString: true } },\r\n },\r\n },\r\n },\r\n dataPoint: {\r\n displayName: data.createDisplayNameGetter('Visual_DataPoint'),\r\n description: data.createDisplayNameGetter('Visual_DataPointDescription'),\r\n properties: {\r\n fill: {\r\n type: { fill: { solid: { color: true } } }\r\n },\r\n fillRule: {\r\n displayName: data.createDisplayNameGetter('Visual_Gradient'),\r\n type: { fillRule: {} },\r\n rule: {\r\n inputRole: 'Gradient',\r\n output: {\r\n property: 'fill',\r\n selector: ['Group'],\r\n }\r\n }\r\n }\r\n }\r\n },\r\n labels: {\r\n displayName: data.createDisplayNameGetter('Visual_DataPointsLabels'),\r\n description: data.createDisplayNameGetter('Visual_DataPointsLabelsDescription'),\r\n properties: {\r\n show: {\r\n displayName: data.createDisplayNameGetter('Visual_Show'),\r\n type: { bool: true }\r\n },\r\n color: {\r\n displayName: data.createDisplayNameGetter('Visual_LabelsFill'),\r\n description: data.createDisplayNameGetter('Visual_LabelsFillDescription'),\r\n type: { fill: { solid: { color: true } } }\r\n },\r\n labelDisplayUnits: {\r\n displayName: data.createDisplayNameGetter('Visual_DisplayUnits'),\r\n description: data.createDisplayNameGetter('Visual_DisplayUnitsDescription'),\r\n type: { formatting: { labelDisplayUnits: true } }\r\n },\r\n labelPrecision: {\r\n displayName: data.createDisplayNameGetter('Visual_Precision'),\r\n description: data.createDisplayNameGetter('Visual_PrecisionDescription'),\r\n type: { numeric: true }\r\n },\r\n }\r\n },\r\n categoryLabels: {\r\n displayName: data.createDisplayNameGetter('Visual_CategoryLabels'),\r\n description: data.createDisplayNameGetter('Visual_CategoryLabelsDescription'),\r\n properties: {\r\n show: {\r\n type: { bool: true }\r\n },\r\n },\r\n },\r\n },\r\n dataViewMappings: [{\r\n conditions: [\r\n { 'Groups': { min: 0 }, 'Values': { max: 1 } },\r\n ],\r\n matrix: {\r\n rows: {\r\n for: { in: 'Nodes' },\r\n },\r\n values: {\r\n for: { in: 'Values' }\r\n },\r\n }\r\n }],\r\n supportsHighlight: true,\r\n sorting: {\r\n custom: {},\r\n implicit: {\r\n clauses: [{ role: 'Values', direction: SortDirection.Descending }]\r\n },\r\n },\r\n drilldown: {\r\n roles: ['Group']\r\n },\r\n };\r\n\r\n export const sunburstProps = {\r\n general: {\r\n formatString: <DataViewObjectPropertyIdentifier>{ objectName: 'general', propertyName: 'formatString' },\r\n },\r\n dataPoint: {\r\n fill: <DataViewObjectPropertyIdentifier>{ objectName: 'dataPoint', propertyName: 'fill' },\r\n },\r\n legend: {\r\n show: <DataViewObjectPropertyIdentifier>{ objectName: 'legend', propertyName: 'show' },\r\n position: <DataViewObjectPropertyIdentifier>{ objectName: 'legend', propertyName: 'position' },\r\n showTitle: <DataViewObjectPropertyIdentifier>{ objectName: 'legend', propertyName: 'showTitle' },\r\n titleText: <DataViewObjectPropertyIdentifier>{ objectName: 'legend', propertyName: 'titleText' },\r\n labelColor: <DataViewObjectPropertyIdentifier>{ objectName: 'legend', propertyName: 'labelColor' },\r\n },\r\n labels: {\r\n show: <DataViewObjectPropertyIdentifier>{ objectName: 'labels', propertyName: 'show' },\r\n color: <DataViewObjectPropertyIdentifier>{ objectName: 'labels', propertyName: 'color' },\r\n labelDisplayUnits: <DataViewObjectPropertyIdentifier>{ objectName: 'labels', propertyName: 'labelDisplayUnits' },\r\n labelPrecision: <DataViewObjectPropertyIdentifier>{ objectName: 'labels', propertyName: 'labelPrecision' },\r\n },\r\n categoryLabels: {\r\n show: <DataViewObjectPropertyIdentifier>{ objectName: 'categoryLabels', propertyName: 'show' },\r\n },\r\n };\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n export const KPIStatusWithHistoryCapabilities: VisualCapabilities = {\r\n dataRoles: [\r\n {\r\n name: 'Indicator',\r\n kind: VisualDataRoleKind.Measure,\r\n displayName: data.createDisplayNameGetter('Role_DisplayName_KPI_Indicator'),\r\n description: data.createDisplayNameGetter('Role_DisplayName_KPI_IndicatorDescription')\r\n }, {\r\n name: 'TrendLine',\r\n kind: VisualDataRoleKind.Grouping,\r\n displayName: data.createDisplayNameGetter('Role_DisplayName_KPI_TrendLine'),\r\n description: data.createDisplayNameGetter('Role_DisplayName_KPI_Trendline_Description')\r\n }, {\r\n name: 'Goal',\r\n kind: VisualDataRoleKind.Measure,\r\n displayName: data.createDisplayNameGetter('Role_DisplayName_KPI_Goal'),\r\n description: data.createDisplayNameGetter('Role_DisplayName_KPI_GoalDescription')\r\n }],\r\n dataViewMappings: [{\r\n conditions: [\r\n { 'Indicator': { max: 1 }, 'TrendLine': { max: 1 }, 'Goal': { max: 2 } },\r\n ],\r\n categorical: {\r\n categories: {\r\n for: { in: 'TrendLine' },\r\n dataReductionAlgorithm: { top: {} }\r\n },\r\n values: {\r\n select: [\r\n { bind: { to: 'Indicator' } },\r\n { bind: { to: 'Goal' } }\r\n ]\r\n }\r\n },\r\n }],\r\n objects: {\r\n general: {\r\n properties: {\r\n formatString: {\r\n type: { formatting: { formatString: true } },\r\n },\r\n },\r\n },\r\n indicator: {\r\n displayName: data.createDisplayNameGetter('Role_DisplayName_KPI_Indicator'),\r\n description: data.createDisplayNameGetter('Role_DisplayName_KPI_IndicatorDescription'),\r\n properties: {\r\n indicatorDisplayUnits: {\r\n displayName: data.createDisplayNameGetter('Visual_DisplayUnits'),\r\n description: data.createDisplayNameGetter('Visual_DisplayUnitsDescription'),\r\n type: { formatting: { labelDisplayUnits: true } }\r\n },\r\n indicatorPrecision: {\r\n displayName: data.createDisplayNameGetter('Visual_Precision'),\r\n description: data.createDisplayNameGetter('Visual_PrecisionDescription'),\r\n placeHolderText: data.createDisplayNameGetter('Visual_Precision_Auto'),\r\n type: { numeric: true }\r\n },\r\n kpiFormat: {\r\n displayName: data.createDisplayNameGetter('TaskPane_Format'),\r\n type: { text: true },\r\n },\r\n fontSize: {\r\n displayName: data.createDisplayNameGetter('Visual_TextSize'),\r\n type: { formatting: { fontSize: true } }\r\n }\r\n }\r\n },\r\n trendline: {\r\n displayName: data.createDisplayNameGetter('Role_DisplayName_KPI_TrendLine'),\r\n description: data.createDisplayNameGetter('Role_DisplayName_KPI_Trendline_Description'),\r\n properties: {\r\n show: {\r\n displayName: data.createDisplayNameGetter('Visual_Show'),\r\n type: { bool: true }\r\n }\r\n }\r\n },\r\n goals: {\r\n displayName: data.createDisplayNameGetter('Role_DisplayName_KPI_Goals'),\r\n description: data.createDisplayNameGetter('Role_DisplayName_KPI_GoalDescription'),\r\n properties: {\r\n showGoal: {\r\n displayName: data.createDisplayNameGetter('Role_DisplayName_KPI_Show_Goal'),\r\n type: { bool: true }\r\n },\r\n showDistance: {\r\n displayName: data.createDisplayNameGetter('Role_DisplayName_KPI_Show_Distance'),\r\n type: { bool: true }\r\n },\r\n }\r\n },\r\n status: {\r\n displayName: data.createDisplayNameGetter('Role_DisplayName_KPI_Status'),\r\n description: data.createDisplayNameGetter('Role_DisplayName_KPI_Status'),\r\n properties: {\r\n direction: {\r\n displayName: data.createDisplayNameGetter('Role_DisplayName_KPI_Direction'),\r\n description: data.createDisplayNameGetter('Role_DisplayName_KPI_Direction'),\r\n type: { enumeration: kpiDirection.type }\r\n }\r\n }\r\n }\r\n },\r\n };\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"_references.ts\"/>\r\n\r\nmodule powerbi.visuals.capabilities {\r\n // This file registers the built-in capabilities\r\n // Please use this file to register the capabilities in the plugins.ts/pluginsNotForOSS.ts\r\n\r\n export let animatedNumber = powerbi.visuals.animatedNumberCapabilities;\r\n\r\n export let areaChart = powerbi.visuals.lineChartCapabilities;\r\n\r\n export let barChart = powerbi.visuals.getColumnChartCapabilities(true);\r\n\r\n export let card = powerbi.visuals.cardCapabilities;\r\n\r\n export let multiRowCard = powerbi.visuals.multiRowCardCapabilities;\r\n\r\n export let clusteredBarChart = powerbi.visuals.getColumnChartCapabilities(true);\r\n\r\n export let clusteredColumnChart = powerbi.visuals.getColumnChartCapabilities();\r\n\r\n export let columnChart = powerbi.visuals.getColumnChartCapabilities();\r\n\r\n export let comboChart = powerbi.visuals.comboChartCapabilities;\r\n\r\n export let dataDotChart = powerbi.visuals.dataDotChartCapabilities;\r\n\r\n export let dataDotClusteredColumnComboChart = powerbi.visuals.comboChartCapabilities;\r\n\r\n export let dataDotStackedColumnComboChart = powerbi.visuals.comboChartCapabilities;\r\n\r\n export let donutChart = powerbi.visuals.donutChartCapabilities;\r\n\r\n export let funnel = powerbi.visuals.funnelChartCapabilities;\r\n\r\n export let gauge = powerbi.visuals.gaugeCapabilities;\r\n\r\n export let hundredPercentStackedBarChart = powerbi.visuals.getColumnChartCapabilities(true);\r\n\r\n export let hundredPercentStackedColumnChart = powerbi.visuals.getColumnChartCapabilities();\r\n\r\n export let image = powerbi.visuals.imageVisualCapabilities;\r\n\r\n export let lineChart = powerbi.visuals.lineChartCapabilities;\r\n\r\n export let lineStackedColumnComboChart = powerbi.visuals.comboChartCapabilities;\r\n\r\n export let lineClusteredColumnComboChart = powerbi.visuals.comboChartCapabilities;\r\n\r\n export let map = powerbi.visuals.mapCapabilities;\r\n\r\n export let filledMap = powerbi.visuals.filledMapCapabilities;\r\n\r\n export let treemap = powerbi.visuals.treemapCapabilities;\r\n\r\n export let pieChart = powerbi.visuals.donutChartCapabilities;\r\n\r\n export let scatterChart = powerbi.visuals.scatterChartCapabilities;\r\n\r\n export let table = powerbi.visuals.tableCapabilities;\r\n\r\n export let matrix = powerbi.visuals.matrixCapabilities;\r\n\r\n export let slicer = powerbi.visuals.slicerCapabilities;\r\n\r\n export let textbox = powerbi.visuals.textboxCapabilities;\r\n\r\n export let waterfallChart = powerbi.visuals.waterfallChartCapabilities;\r\n\r\n export let cheerMeter = powerbi.visuals.cheerMeterCapabilities;\r\n\r\n export let sunburst = powerbi.visuals.sunburstCapabilities;\r\n\r\n export let scriptVisual = powerbi.visuals.scriptVisualCapabilities;\r\n \r\n export let kpi = powerbi.visuals.KPIStatusWithHistoryCapabilities;\r\n}\r\n","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n export interface ColumnBehaviorOptions {\r\n datapoints: SelectableDataPoint[];\r\n bars: D3.Selection;\r\n mainGraphicsContext: D3.Selection;\r\n hasHighlights: boolean;\r\n viewport: IViewport;\r\n axisOptions: ColumnAxisOptions;\r\n showLabel: boolean;\r\n }\r\n\r\n export class ColumnChartWebBehavior implements IInteractiveBehavior {\r\n private options: ColumnBehaviorOptions;\r\n\r\n public bindEvents(options: ColumnBehaviorOptions, selectionHandler: ISelectionHandler) {\r\n this.options = options;\r\n let bars = options.bars;\r\n\r\n bars.on('click', (d: SelectableDataPoint, i: number) => {\r\n selectionHandler.handleSelection(d, d3.event.ctrlKey);\r\n });\r\n }\r\n\r\n public renderSelection(hasSelection: boolean) {\r\n let options = this.options;\r\n options.bars.style(\"fill-opacity\", (d: ColumnChartDataPoint) => ColumnUtil.getFillOpacity(d.selected, d.highlight, !d.highlight && hasSelection, !d.selected && options.hasHighlights));\r\n\r\n }\r\n }\r\n} ","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n export interface DataDotChartBehaviorOptions {\r\n dots: D3.Selection;\r\n dotLabels: D3.Selection;\r\n isPartOfCombo?: boolean;\r\n datapoints?: DataDotChartDataPoint[];\r\n }\r\n\r\n export class DataDotChartWebBehavior implements IInteractiveBehavior {\r\n private dots: D3.Selection;\r\n\r\n public bindEvents(options: DataDotChartBehaviorOptions, selectionHandler: ISelectionHandler): void {\r\n let dots = this.dots = options.dots;\r\n let dotLabels = options.dotLabels;\r\n\r\n dots.on('click', (d: SelectableDataPoint) => {\r\n selectionHandler.handleSelection(d, d3.event.ctrlKey);\r\n });\r\n\r\n if (dotLabels) {\r\n dotLabels.on('click', (d: SelectableDataPoint) => {\r\n selectionHandler.handleSelection(d, d3.event.ctrlKey);\r\n });\r\n }\r\n }\r\n\r\n public renderSelection(hasSelection: boolean): void {\r\n this.dots.style(\"fill-opacity\",(d: DataDotChartDataPoint) => ColumnUtil.getFillOpacity(d.selected, d.highlight, hasSelection, false));\r\n }\r\n }\r\n} ","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n export interface DonutBehaviorOptions {\r\n slices: D3.Selection;\r\n highlightSlices: D3.Selection;\r\n clearCatcher: D3.Selection;\r\n hasHighlights: boolean;\r\n allowDrilldown: boolean;\r\n visual: IVisual;\r\n }\r\n\r\n export class DonutChartWebBehavior implements IInteractiveBehavior {\r\n private slices: D3.Selection;\r\n private highlightSlices: D3.Selection;\r\n private hasHighlights: boolean;\r\n\r\n public bindEvents(options: DonutBehaviorOptions, selectionHandler: ISelectionHandler): void {\r\n let slices = this.slices = options.slices;\r\n let highlightSlices = this.highlightSlices = options.highlightSlices;\r\n let clearCatcher = options.clearCatcher;\r\n this.hasHighlights = options.hasHighlights;\r\n\r\n let clickHandler = (d: DonutArcDescriptor) => {\r\n selectionHandler.handleSelection(d.data, d3.event.ctrlKey);\r\n };\r\n\r\n slices.on('click', clickHandler);\r\n highlightSlices.on('click', clickHandler);\r\n\r\n clearCatcher.on('click', () => {\r\n selectionHandler.handleClearSelection();\r\n });\r\n }\r\n\r\n public renderSelection(hasSelection: boolean): void {\r\n let hasHighlights = this.hasHighlights;\r\n this.slices.style(\"fill-opacity\", (d: DonutArcDescriptor) => ColumnUtil.getFillOpacity(d.data.selected, false, hasSelection, hasHighlights && !d.data.selected));\r\n this.highlightSlices.style(\"fill-opacity\", (d: DonutArcDescriptor) => ColumnUtil.getFillOpacity(d.data.selected, true, false, hasHighlights));\r\n }\r\n }\r\n} ","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n export interface FunnelBehaviorOptions {\r\n bars: D3.Selection;\r\n interactors: D3.Selection;\r\n clearCatcher: D3.Selection;\r\n hasHighlights: boolean;\r\n }\r\n\r\n export class FunnelWebBehavior implements IInteractiveBehavior {\r\n private bars: D3.Selection;\r\n private interactors: D3.Selection;\r\n private hasHighlights: boolean;\r\n\r\n public bindEvents(options: FunnelBehaviorOptions, selectionHandler: ISelectionHandler): void {\r\n\r\n let bars = this.bars = options.bars;\r\n let interactors = this.interactors = options.interactors;\r\n let clearCatcher = options.clearCatcher;\r\n\r\n this.hasHighlights = options.hasHighlights;\r\n\r\n bars.on('click', (d: SelectableDataPoint, i: number) => {\r\n selectionHandler.handleSelection(d, d3.event.ctrlKey);\r\n });\r\n\r\n interactors.on('click', (d: SelectableDataPoint, i: number) => {\r\n selectionHandler.handleSelection(d, d3.event.ctrlKey);\r\n });\r\n\r\n clearCatcher.on('click', () => {\r\n selectionHandler.handleClearSelection();\r\n });\r\n }\r\n\r\n public renderSelection(hasSelection: boolean): void {\r\n let hasHighlights = this.hasHighlights;\r\n this.bars.style(\"fill-opacity\", (d: FunnelSlice) => ColumnUtil.getFillOpacity(d.selected, d.highlight, !d.highlight && hasSelection, !d.selected && hasHighlights));\r\n }\r\n }\r\n}\r\n","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n export interface LineChartBehaviorOptions {\r\n lines: D3.Selection;\r\n interactivityLines: D3.Selection;\r\n dots: D3.Selection;\r\n areas: D3.Selection;\r\n isPartOfCombo?: boolean;\r\n tooltipOverlay: D3.Selection;\r\n }\r\n\r\n export class LineChartWebBehavior implements IInteractiveBehavior {\r\n private lines: D3.Selection;\r\n private dots: D3.Selection;\r\n private areas: D3.Selection;\r\n private tooltipOverlay: D3.Selection;\r\n\r\n public bindEvents(options: LineChartBehaviorOptions, selectionHandler: ISelectionHandler): void {\r\n this.lines = options.lines;\r\n let interactivityLines = options.interactivityLines;\r\n let dots = this.dots = options.dots;\r\n let areas = this.areas = options.areas;\r\n let tooltipOverlay = this.tooltipOverlay = options.tooltipOverlay;\r\n\r\n let clickHandler = (d: SelectableDataPoint) => {\r\n selectionHandler.handleSelection(d, d3.event.ctrlKey);\r\n };\r\n\r\n interactivityLines.on('click', clickHandler);\r\n dots.on('click', clickHandler);\r\n if (areas)\r\n areas.on('click', clickHandler);\r\n\r\n if (tooltipOverlay)\r\n tooltipOverlay.on('click', () => selectionHandler.handleClearSelection());\r\n }\r\n\r\n public renderSelection(hasSelection: boolean) {\r\n this.lines.style(\"stroke-opacity\", (d: SelectableDataPoint) => ColumnUtil.getFillOpacity(d.selected, false, hasSelection, false));\r\n this.dots.style(\"fill-opacity\", (d: SelectableDataPoint) => ColumnUtil.getFillOpacity(d.selected, false, hasSelection, false));\r\n if (this.areas)\r\n this.areas.style(\"fill-opacity\", (d: SelectableDataPoint) => (hasSelection && !d.selected) ? LineChart.DimmedAreaFillOpacity : LineChart.AreaFillOpacity);\r\n }\r\n }\r\n} ","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n export interface MapBehaviorOptions {\r\n dataPoints: SelectableDataPoint[];\r\n bubbles?: D3.Selection;\r\n slices?: D3.Selection;\r\n shapes?: D3.Selection;\r\n clearCatcher: D3.Selection;\r\n }\r\n\r\n export class MapBehavior implements IInteractiveBehavior {\r\n private bubbles: D3.Selection;\r\n private slices: D3.Selection;\r\n private shapes: D3.Selection;\r\n private mapPointerEventsDisabled = false;\r\n private mapPointerTimeoutSet = false;\r\n private viewChangedSinceLastClearMouseDown = false;\r\n\r\n public bindEvents(options: MapBehaviorOptions, selectionHandler: ISelectionHandler): void {\r\n let bubbles = this.bubbles = options.bubbles;\r\n let slices = this.slices = options.slices;\r\n let shapes = this.shapes = options.shapes;\r\n let clearCatcher = options.clearCatcher;\r\n\r\n let clickHandler = (d: SelectableDataPoint) => {\r\n if (bubbles)\r\n bubbles.style(\"pointer-events\", \"all\");\r\n if (shapes)\r\n shapes.style(\"pointer-events\", \"all\");\r\n selectionHandler.handleSelection(d, d3.event.ctrlKey);\r\n };\r\n\r\n if (!this.mapPointerEventsDisabled) {\r\n if (bubbles)\r\n bubbles.style(\"pointer-events\", \"all\");\r\n if (slices)\r\n slices.style(\"pointer-events\", \"all\");\r\n if (shapes)\r\n shapes.style(\"pointer-events\", \"all\");\r\n }\r\n\r\n if (bubbles) {\r\n bubbles.on('click', clickHandler);\r\n bubbles.on('mousewheel', () => {\r\n if (!this.mapPointerEventsDisabled)\r\n bubbles.style(\"pointer-events\", \"none\");\r\n this.mapPointerEventsDisabled = true;\r\n if (!this.mapPointerTimeoutSet) {\r\n this.mapPointerTimeoutSet = true;\r\n setTimeout(() => {\r\n if (bubbles)\r\n bubbles.style(\"pointer-events\", \"all\");\r\n this.mapPointerEventsDisabled = false;\r\n this.mapPointerTimeoutSet = false;\r\n }, 200);\r\n }\r\n });\r\n }\r\n\r\n if (slices) {\r\n slices.on('click', (d) => {\r\n slices.style(\"pointer-events\", \"all\");\r\n this.mapPointerEventsDisabled = false;\r\n selectionHandler.handleSelection(d.data, d3.event.ctrlKey);\r\n });\r\n slices.on('mousewheel', () => {\r\n if (!this.mapPointerEventsDisabled)\r\n slices.style(\"pointer-events\", \"none\");\r\n this.mapPointerEventsDisabled = true;\r\n if (!this.mapPointerTimeoutSet) {\r\n this.mapPointerTimeoutSet = true;\r\n setTimeout(() => {\r\n if (slices)\r\n slices.style(\"pointer-events\", \"all\");\r\n this.mapPointerEventsDisabled = false;\r\n this.mapPointerTimeoutSet = false;\r\n }, 200);\r\n }\r\n });\r\n }\r\n\r\n if (shapes) {\r\n shapes.on('click', clickHandler);\r\n shapes.on('mousewheel', () => {\r\n if (!this.mapPointerEventsDisabled) {\r\n shapes.style(\"pointer-events\", \"none\");\r\n }\r\n this.mapPointerEventsDisabled = true;\r\n if (!this.mapPointerTimeoutSet) {\r\n this.mapPointerTimeoutSet = true;\r\n setTimeout(() => {\r\n if (shapes)\r\n shapes.style(\"pointer-events\", \"all\");\r\n this.mapPointerEventsDisabled = false;\r\n this.mapPointerTimeoutSet = false;\r\n }, 200);\r\n }\r\n });\r\n }\r\n\r\n clearCatcher.on('mouseup', () => {\r\n if (!this.viewChangedSinceLastClearMouseDown)\r\n selectionHandler.handleClearSelection();\r\n });\r\n\r\n clearCatcher.on('mousedown', () => {\r\n this.viewChangedSinceLastClearMouseDown = false;\r\n });\r\n }\r\n\r\n public renderSelection(hasSelection: boolean) {\r\n if (this.bubbles) {\r\n this.bubbles\r\n .style({\r\n 'fill-opacity': (d: MapBubble) => ColumnUtil.getFillOpacity(d.selected, false, hasSelection, false),\r\n 'stroke-opacity': (d: MapBubble) => ColumnUtil.getFillOpacity(d.selected, false, hasSelection, false),\r\n });\r\n }\r\n if (this.slices) {\r\n this.slices\r\n .style({\r\n \"fill-opacity\": (d) => ColumnUtil.getFillOpacity(d.data.selected, false, hasSelection, false),\r\n \"stroke-opacity\": (d) => ColumnUtil.getFillOpacity(d.data.selected, false, hasSelection, false),\r\n });\r\n }\r\n if (this.shapes) {\r\n this.shapes\r\n .style({\r\n \"fill-opacity\": (d) => ColumnUtil.getFillOpacity(d.selected, false, hasSelection, false),\r\n \"stroke-opacity\": (d) => ColumnUtil.getFillOpacity(d.selected, false, hasSelection, false),\r\n });\r\n }\r\n }\r\n\r\n public viewChanged() {\r\n this.viewChangedSinceLastClearMouseDown = true;\r\n }\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n import ClassAndSelector = jsCommon.CssConstants.ClassAndSelector;\r\n import createClassAndSelector = jsCommon.CssConstants.createClassAndSelector;\r\n\r\n export interface ScatterBehaviorOptions {\r\n dataPointsSelection: D3.Selection;\r\n data: ScatterChartData;\r\n plotContext: D3.Selection;\r\n playOptions?: PlayBehaviorOptions;\r\n }\r\n\r\n export interface ScatterMobileBehaviorOptions extends ScatterBehaviorOptions {\r\n host: ICartesianVisualHost;\r\n root: D3.Selection;\r\n background: D3.Selection;\r\n visualInitOptions: VisualInitOptions;\r\n xAxisProperties: IAxisProperties;\r\n yAxisProperties: IAxisProperties;\r\n }\r\n\r\n export class ScatterChartWebBehavior implements IInteractiveBehavior {\r\n private bubbles: D3.Selection;\r\n private shouldEnableFill: boolean;\r\n private colorBorder: boolean;\r\n private playOptions: PlayBehaviorOptions;\r\n\r\n public bindEvents(options: ScatterBehaviorOptions, selectionHandler: ISelectionHandler): void {\r\n let bubbles = this.bubbles = options.dataPointsSelection;\r\n let data = options.data;\r\n\r\n // If we are removing play-axis, remove the trace lines as well\r\n // TODO: revisit this design, I think ideally this is done when rendering scatter.\r\n if (this.playOptions\r\n && this.playOptions.traceLineRenderer\r\n && (!options.playOptions || !options.playOptions.traceLineRenderer)) {\r\n this.playOptions.traceLineRenderer.remove();\r\n }\r\n\r\n this.playOptions = options.playOptions;\r\n this.shouldEnableFill = (!data.sizeRange || !data.sizeRange.min) && data.fillPoint;\r\n this.colorBorder = data.colorBorder;\r\n\r\n bubbles.on('click', (d: SelectableDataPoint) => {\r\n selectionHandler.handleSelection(d, d3.event.ctrlKey);\r\n });\r\n }\r\n\r\n public renderSelection(hasSelection: boolean) {\r\n let shouldEnableFill = this.shouldEnableFill;\r\n let colorBorder = this.colorBorder;\r\n this.bubbles.style(\"fill-opacity\", (d: ScatterChartDataPoint) => (d.size != null || shouldEnableFill) ? ScatterChart.getBubbleOpacity(d, hasSelection) : 0);\r\n this.bubbles.style(\"stroke-opacity\", (d: ScatterChartDataPoint) => (d.size != null && colorBorder) ? 1 : ScatterChart.getBubbleOpacity(d, hasSelection));\r\n\r\n if (this.playOptions && this.bubbles) {\r\n let selectedPoints = this.bubbles.filter((d: SelectableDataPoint) => d.selected);\r\n let traceLineRenderer = this.playOptions.traceLineRenderer;\r\n if (selectedPoints && selectedPoints.data().length > 0 && traceLineRenderer != null) {\r\n traceLineRenderer.render(selectedPoints.data(), true);\r\n }\r\n else {\r\n traceLineRenderer.remove();\r\n }\r\n }\r\n }\r\n }\r\n\r\n export const enum DragType {\r\n Drag,\r\n DragEnd\r\n }\r\n\r\n interface MouseCoordinates {\r\n x: number;\r\n y: number;\r\n }\r\n\r\n export class ScatterChartMobileBehavior implements IInteractiveBehavior {\r\n private static CrosshairClassName = 'crosshair';\r\n private static ScatterChartCircleTagName = 'circle';\r\n private static DotClassName = 'dot';\r\n private static DotClassSelector = '.' + ScatterChartMobileBehavior.DotClassName;\r\n\r\n private static Horizontal: ClassAndSelector = createClassAndSelector('horizontal');\r\n private static Vertical: ClassAndSelector = createClassAndSelector('vertical');\r\n\r\n private host: ICartesianVisualHost;\r\n private mainGraphicsContext: D3.Selection;\r\n private data: ScatterChartData;\r\n private crosshair: D3.Selection;\r\n private crosshairHorizontal: D3.Selection;\r\n private crosshairVertical: D3.Selection;\r\n private lastDotIndex: number;\r\n private xAxisProperties: IAxisProperties;\r\n private yAxisProperties: IAxisProperties;\r\n\r\n public bindEvents(options: ScatterMobileBehaviorOptions, selectionHandler: ISelectionHandler): void {\r\n this.setOptions(options);\r\n\r\n if (!options.visualInitOptions || !options.visualInitOptions.interactivity.isInteractiveLegend) {\r\n // Don't bind events if we are not in interactiveLegend mode\r\n // This case happend when on mobile we show the whole dashboard in still not on focus\r\n return;\r\n }\r\n\r\n this.makeDataPointsSelectable(options.dataPointsSelection);\r\n this.makeRootSelectable(options.root);\r\n this.makeDragable(options.root);\r\n this.disableDefaultTouchInteractions(options.root);\r\n this.selectRoot();\r\n }\r\n\r\n public renderSelection(HasSelection: boolean): void { }\r\n\r\n public setSelectionHandler(selectionHandler: ISelectionHandler): void { }\r\n\r\n private makeDataPointsSelectable(...selection: D3.Selection[]): void {\r\n for (let i = 0, len = selection.length; i < len; i++) {\r\n var sel = selection[i];\r\n\r\n sel.on('click', (d: SelectableDataPoint, i: number) => {\r\n this.select(true, sel, d, i);\r\n });\r\n }\r\n }\r\n\r\n private makeRootSelectable(selection: D3.Selection): void {\r\n selection.on('click', (d: SelectableDataPoint, i: number) => {\r\n this.selectRoot();\r\n });\r\n }\r\n\r\n private makeDragable(...selection: D3.Selection[]): void {\r\n for (let i = 0, len = selection.length; i < len; i++) {\r\n let sel = selection[i];\r\n\r\n let drag = d3.behavior.drag()\r\n .on('drag', (d) => { this.drag(DragType.Drag); })\r\n .on('dragend', (d) => { this.drag(DragType.DragEnd); });\r\n\r\n sel.call(drag);\r\n }\r\n }\r\n\r\n private disableDefaultTouchInteractions(selection: D3.Selection): void {\r\n selection.style('touch-action', 'none');\r\n }\r\n\r\n public setOptions(options: ScatterMobileBehaviorOptions) {\r\n this.data = options.data;\r\n this.mainGraphicsContext = options.plotContext;\r\n this.xAxisProperties = options.xAxisProperties;\r\n this.yAxisProperties = options.yAxisProperties;\r\n this.host = options.host;\r\n }\r\n\r\n public select(hasSelection: boolean, datapoints: D3.Selection, dataPoint: SelectableDataPoint, index: number) {\r\n this.selectDotByIndex(index);\r\n }\r\n\r\n public selectRoot() {\r\n let marker = jsCommon.PerformanceUtil.create('selectRoot');\r\n this.onClick();\r\n marker.end();\r\n }\r\n\r\n public drag(t: DragType) {\r\n switch (t) {\r\n case DragType.Drag:\r\n this.onDrag();\r\n break;\r\n case DragType.DragEnd:\r\n this.onClick();\r\n break;\r\n default:\r\n debug.assertFail('Unknown Drag Type');\r\n }\r\n }\r\n\r\n private onDrag(): void {\r\n //find the current x and y position\r\n let xy = this.getMouseCoordinates();\r\n //move the crosshair to the current position\r\n this.moveCrosshairToXY(xy.x, xy.y);\r\n //update the style and the legend of the dots\r\n let selectedIndex = this.findClosestDotIndex(xy.x, xy.y);\r\n this.selectDot(selectedIndex);\r\n this.updateLegend(selectedIndex);\r\n }\r\n\r\n private onClick(): void {\r\n //find the current x and y position\r\n let xy = this.getMouseCoordinates();\r\n let selectedIndex = this.findClosestDotIndex(xy.x, xy.y);\r\n if (selectedIndex !== -1)\r\n this.selectDotByIndex(selectedIndex);\r\n }\r\n\r\n private getMouseCoordinates(): MouseCoordinates {\r\n let mainGfxContext = this.mainGraphicsContext;\r\n // select (0,0) in cartesian coordinates\r\n let x = 0;\r\n let y = parseInt(mainGfxContext.attr('height'), 10);\r\n y = y || 0;\r\n\r\n try {\r\n let mouse = d3.mouse(mainGfxContext.node());\r\n x = mouse[0];\r\n y = mouse[1];\r\n } catch(e){ \r\n }\r\n\r\n return { x: x, y: y, };\r\n }\r\n\r\n private selectDotByIndex(index: number): void {\r\n this.selectDot(index);\r\n this.moveCrosshairToIndexDot(index);\r\n this.updateLegend(index);\r\n }\r\n\r\n private selectDot(dotIndex: number): void {\r\n let root = this.mainGraphicsContext;\r\n\r\n root.selectAll(ScatterChartMobileBehavior.ScatterChartCircleTagName + ScatterChartMobileBehavior.DotClassSelector).classed({ selected: false, notSelected: true });\r\n root.selectAll(ScatterChartMobileBehavior.ScatterChartCircleTagName + ScatterChartMobileBehavior.DotClassSelector).filter((d, i) => {\r\n let dataPoints = this.data.dataPoints;\r\n debug.assert(dataPoints.length > dotIndex, \"dataPoints length:\" + dataPoints.length + \"is smaller than index:\" + dotIndex);\r\n let currentPoint: ScatterChartDataPoint = dataPoints[dotIndex];\r\n return (d.x === currentPoint.x) && (d.y === currentPoint.y);\r\n }).classed({ selected: true, notSelected: false });\r\n }\r\n\r\n private moveCrosshairToIndexDot(index: number): void {\r\n let dataPoints = this.data.dataPoints;\r\n let root = this.mainGraphicsContext;\r\n\r\n debug.assert(dataPoints.length > index, \"dataPoints length:\" + dataPoints.length + \"is smaller than index:\" + index);\r\n let x = this.xAxisProperties.scale(dataPoints[index].x);\r\n let y = this.yAxisProperties.scale(dataPoints[index].y);\r\n if (this.crosshair == null) {\r\n let width = +root.attr('width');\r\n let height = +root.attr('height');\r\n this.crosshair = this.drawCrosshair(root, x, y, width, height);\r\n this.crosshairHorizontal = this.crosshair.select(ScatterChartMobileBehavior.Horizontal.selector);\r\n this.crosshairVertical = this.crosshair.select(ScatterChartMobileBehavior.Vertical.selector);\r\n } else {\r\n this.moveCrosshairToXY(x, y);\r\n }\r\n }\r\n\r\n private moveCrosshairToXY(x: number, y: number): void {\r\n this.crosshairHorizontal.attr({ y1: y, y2: y });\r\n this.crosshairVertical.attr({ x1: x, x2: x });\r\n }\r\n\r\n private drawCrosshair(addTo: D3.Selection, x: number, y: number, width: number, height: number): D3.Selection {\r\n let crosshair = addTo.append(\"g\");\r\n crosshair.classed(ScatterChartMobileBehavior.CrosshairClassName, true);\r\n crosshair.append('line').classed(ScatterChartMobileBehavior.Horizontal.class, true).attr({ x1: 0, x2: width, y1: y, y2: y });\r\n crosshair.append('line').classed(ScatterChartMobileBehavior.Vertical.class, true).attr({ x1: x, x2: x, y1: height, y2: 0 });\r\n return crosshair;\r\n }\r\n\r\n private findClosestDotIndex(x: number, y: number): number {\r\n let selectedIndex = -1;\r\n let minDistance = Number.MAX_VALUE;\r\n let dataPoints = this.data.dataPoints;\r\n let xAxisPropertiesScale = this.xAxisProperties.scale;\r\n let yAxisPropertiesScale = this.yAxisProperties.scale;\r\n for (let i in dataPoints) {\r\n let currentPoint: ScatterChartDataPoint = dataPoints[i];\r\n let circleX = xAxisPropertiesScale(currentPoint.x);\r\n let circleY = yAxisPropertiesScale(currentPoint.y);\r\n let horizontalDistance = circleX - x;\r\n let verticalDistance = circleY - y;\r\n let distanceSqrd = (horizontalDistance * horizontalDistance) + (verticalDistance * verticalDistance);\r\n if (minDistance === Number.MAX_VALUE) {\r\n selectedIndex = i;\r\n minDistance = distanceSqrd;\r\n }\r\n else if (minDistance && minDistance > distanceSqrd) {\r\n selectedIndex = i;\r\n minDistance = distanceSqrd;\r\n }\r\n }\r\n return selectedIndex;\r\n }\r\n\r\n private updateLegend(dotIndex: number): void {\r\n if (this.lastDotIndex == null || this.lastDotIndex !== dotIndex) {//update the legend only if the data change.\r\n let legendItems = this.createLegendDataPoints(dotIndex);\r\n this.host.updateLegend(legendItems);\r\n this.lastDotIndex = dotIndex;\r\n }\r\n }\r\n\r\n private createLegendDataPoints(dotIndex: number): LegendData {\r\n let formatStringProp = scatterChartProps.general.formatString;\r\n let legendItems: LegendDataPoint[] = [];\r\n let data = this.data;\r\n debug.assert(data.dataPoints.length > dotIndex, \"dataPoints length:\" + data.dataPoints.length + \"is smaller than index:\" + dotIndex);\r\n let point = data.dataPoints[dotIndex];\r\n //set the title of the legend to be the category or radius or group or blank\r\n let blank = valueFormatter.format(null);\r\n let title = blank;\r\n let legendData = data.legendData;\r\n debug.assertValue(legendData, \"legendData\");\r\n debug.assertValue(legendData.dataPoints, \"legendData\");\r\n let legendDataPoints = legendData.dataPoints;\r\n if (point.category !== blank) {\r\n title = point.category;\r\n } else if (point.radius.sizeMeasure != null) {\r\n title = valueFormatter.format(point.radius.sizeMeasure.source.groupName);\r\n } else if (legendDataPoints.length >= dotIndex && legendDataPoints[dotIndex].label !== blank) {\r\n title = legendDataPoints[dotIndex].label;\r\n }\r\n\r\n if (data.xCol != null) {\r\n legendItems.push({\r\n category: title,\r\n color: point.fill,\r\n identity: SelectionIdBuilder.builder().withMeasure(data.xCol.queryName).createSelectionId(),\r\n selected: point.selected,\r\n icon: LegendIcon.Box,\r\n label: valueFormatter.format(this.data.axesLabels.x),\r\n measure: valueFormatter.format(point.x, valueFormatter.getFormatString(data.xCol, formatStringProp)),\r\n iconOnlyOnLabel: true,\r\n });\r\n }\r\n if (data.yCol != null) {\r\n legendItems.push({\r\n category: title,\r\n color: point.fill,\r\n identity: SelectionIdBuilder.builder().withMeasure(data.yCol.queryName).createSelectionId(),\r\n selected: point.selected,\r\n icon: LegendIcon.Box,\r\n label: valueFormatter.format(data.axesLabels.y),\r\n measure: valueFormatter.format(point.y, valueFormatter.getFormatString(data.yCol, formatStringProp)),\r\n iconOnlyOnLabel: true,\r\n });\r\n }\r\n if (data.size != null) {\r\n legendItems.push({\r\n category: title,\r\n color: point.fill,\r\n identity: SelectionIdBuilder.builder().withMeasure(data.size.queryName).createSelectionId(),\r\n selected: point.selected,\r\n icon: LegendIcon.Box,\r\n label: valueFormatter.format(data.size.displayName),\r\n measure: valueFormatter.format(point.radius.sizeMeasure.values[point.radius.index], valueFormatter.getFormatString(data.size, formatStringProp)),\r\n iconOnlyOnLabel: true\r\n });\r\n }\r\n\r\n return {dataPoints: legendItems };\r\n }\r\n }\r\n} ","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n export interface HorizontalSlicerBehaviorOptions extends SlicerBehaviorOptions {\r\n itemsContainer: D3.Selection;\r\n }\r\n\r\n export class HorizontalSlicerWebBehavior implements IInteractiveBehavior {\r\n private itemLabels: D3.Selection;\r\n private dataPoints: SlicerDataPoint[];\r\n private interactivityService: IInteractivityService;\r\n private slicerSettings: SlicerSettings;\r\n\r\n public bindEvents(options: HorizontalSlicerBehaviorOptions, selectionHandler: ISelectionHandler): void {\r\n this.itemLabels = options.itemLabels;\r\n this.dataPoints = options.dataPoints;\r\n this.interactivityService = options.interactivityService;\r\n this.slicerSettings = options.settings;\r\n\r\n SlicerWebBehavior.bindSlicerEvents(options.slicerContainer, this.itemLabels, options.clear, selectionHandler, this.slicerSettings, this.interactivityService);\r\n }\r\n\r\n public renderSelection(hasSelection: boolean): void {\r\n SlicerWebBehavior.setSelectionOnSlicerItems(this.itemLabels, this.itemLabels, hasSelection, this.interactivityService, this.slicerSettings);\r\n }\r\n }\r\n} ","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n export interface VerticalSlicerBehaviorOptions extends SlicerBehaviorOptions {\r\n itemContainers: D3.Selection;\r\n itemInputs: D3.Selection;\r\n }\r\n\r\n export class VerticalSlicerWebBehavior implements IInteractiveBehavior {\r\n private itemLabels: D3.Selection;\r\n private itemInputs: D3.Selection;\r\n private dataPoints: SlicerDataPoint[];\r\n private interactivityService: IInteractivityService;\r\n private settings: SlicerSettings;\r\n\r\n public bindEvents(options: VerticalSlicerBehaviorOptions, selectionHandler: ISelectionHandler): void {\r\n let slicers = options.itemContainers;\r\n\r\n this.itemLabels = options.itemLabels;\r\n this.itemInputs = options.itemInputs;\r\n this.dataPoints = options.dataPoints;\r\n this.interactivityService = options.interactivityService;\r\n this.settings = options.settings;\r\n\r\n SlicerWebBehavior.bindSlicerEvents(options.slicerContainer, slicers, options.clear, selectionHandler, this.settings, this.interactivityService);\r\n }\r\n\r\n public renderSelection(hasSelection: boolean): void {\r\n SlicerWebBehavior.setSelectionOnSlicerItems(this.itemInputs, this.itemLabels, hasSelection, this.interactivityService, this.settings);\r\n }\r\n }\r\n} ","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n import SlicerOrientation = slicerOrientation.Orientation;\r\n\r\n export interface SlicerOrientationBehaviorOptions {\r\n behaviorOptions: SlicerBehaviorOptions;\r\n orientation: slicerOrientation.Orientation;\r\n }\r\n\r\n export interface SlicerBehaviorOptions {\r\n slicerContainer: D3.Selection;\r\n itemLabels: D3.Selection;\r\n clear: D3.Selection;\r\n dataPoints: SlicerDataPoint[];\r\n interactivityService: IInteractivityService;\r\n settings: SlicerSettings;\r\n }\r\n\r\n export class SlicerWebBehavior implements IInteractiveBehavior {\r\n private behavior: IInteractiveBehavior;\r\n\r\n public bindEvents(options: SlicerOrientationBehaviorOptions, selectionHandler: ISelectionHandler): void {\r\n this.behavior = this.createWebBehavior(options);\r\n this.behavior.bindEvents(options.behaviorOptions, selectionHandler);\r\n }\r\n\r\n public renderSelection(hasSelection: boolean): void {\r\n this.behavior.renderSelection(hasSelection);\r\n }\r\n\r\n public static bindSlicerEvents(slicerContainer: D3.Selection, slicers: D3.Selection, slicerClear: D3.Selection, selectionHandler: ISelectionHandler, slicerSettings: SlicerSettings, interactivityService: IInteractivityService): void {\r\n SlicerWebBehavior.bindSlicerItemSelectionEvent(slicers, selectionHandler, slicerSettings, interactivityService);\r\n SlicerWebBehavior.bindSlicerClearEvent(slicerClear, selectionHandler);\r\n SlicerWebBehavior.styleSlicerContainer(slicerContainer, interactivityService);\r\n }\r\n\r\n public static setSelectionOnSlicerItems(selectableItems: D3.Selection, itemLabel: D3.Selection, hasSelection: boolean, interactivityService: IInteractivityService, slicerSettings: SlicerSettings): void {\r\n if (!hasSelection && !interactivityService.isSelectionModeInverted()) {\r\n selectableItems.filter('.selected').classed('selected', false);\r\n selectableItems.filter('.partiallySelected').classed('partiallySelected', false);\r\n let input = selectableItems.selectAll('input');\r\n if (input) {\r\n input.property('checked', false);\r\n }\r\n itemLabel.style('color', slicerSettings.slicerText.color);\r\n }\r\n else {\r\n SlicerWebBehavior.styleSlicerItems(selectableItems, hasSelection, interactivityService.isSelectionModeInverted());\r\n }\r\n }\r\n\r\n public static styleSlicerItems(slicerItems: D3.Selection, hasSelection: boolean, isSelectionInverted: boolean): void {\r\n slicerItems.each(function (d: SlicerDataPoint) {\r\n let slicerItem: HTMLElement = this;\r\n let shouldCheck: boolean = false;\r\n if (d.isSelectAllDataPoint) {\r\n if (hasSelection) {\r\n slicerItem.classList.add('partiallySelected');\r\n shouldCheck = false;\r\n }\r\n else {\r\n slicerItem.classList.remove('partiallySelected');\r\n shouldCheck = isSelectionInverted;\r\n }\r\n }\r\n else {\r\n shouldCheck = jsCommon.LogicExtensions.XOR(d.selected, isSelectionInverted);\r\n }\r\n \r\n if (shouldCheck)\r\n slicerItem.classList.add('selected');\r\n else\r\n slicerItem.classList.remove('selected');\r\n\r\n // Set input selected state to match selection\r\n let input = slicerItem.getElementsByTagName('input')[0];\r\n if (input)\r\n input.checked = shouldCheck;\r\n });\r\n }\r\n\r\n private static bindSlicerItemSelectionEvent(slicers: D3.Selection, selectionHandler: ISelectionHandler, slicerSettings: SlicerSettings, interactivityService: IInteractivityService): void {\r\n slicers.on(\"click\", (d: SlicerDataPoint) => {\r\n d3.event.preventDefault();\r\n if (d.isSelectAllDataPoint) {\r\n selectionHandler.toggleSelectionModeInversion();\r\n }\r\n else {\r\n selectionHandler.handleSelection(d, SlicerWebBehavior.isMultiSelect(d3.event, slicerSettings, interactivityService));\r\n }\r\n selectionHandler.persistSelectionFilter(slicerProps.filterPropertyIdentifier);\r\n });\r\n }\r\n\r\n private static bindSlicerClearEvent(slicerClear: D3.Selection, selectionHandler: ISelectionHandler): void {\r\n if (slicerClear) {\r\n slicerClear.on(\"click\", (d: SelectableDataPoint) => {\r\n selectionHandler.handleClearSelection();\r\n selectionHandler.persistSelectionFilter(slicerProps.filterPropertyIdentifier);\r\n });\r\n }\r\n }\r\n\r\n private static styleSlicerContainer(slicerContainer: D3.Selection, interactivityService: IInteractivityService) {\r\n let hasSelection = (interactivityService.hasSelection() && interactivityService.isDefaultValueEnabled() === undefined)\r\n || interactivityService.isDefaultValueEnabled() === false;\r\n slicerContainer.classed('hasSelection', hasSelection);\r\n }\r\n\r\n private static isMultiSelect(event: D3.D3Event, settings: SlicerSettings, interactivityService: IInteractivityService): boolean {\r\n // If selection is inverted, assume we're always in multi-select mode;\r\n // Also, Ctrl can be used to multi-select even in single-select mode.\r\n return interactivityService.isSelectionModeInverted()\r\n || !settings.selection.singleSelect\r\n || event.ctrlKey;\r\n }\r\n\r\n private createWebBehavior(options: SlicerOrientationBehaviorOptions): IInteractiveBehavior {\r\n let behavior: IInteractiveBehavior;\r\n let orientation = options.orientation;\r\n switch (orientation) {\r\n case SlicerOrientation.Horizontal:\r\n behavior = new HorizontalSlicerWebBehavior();\r\n break;\r\n\r\n case SlicerOrientation.Vertical:\r\n default:\r\n behavior = new VerticalSlicerWebBehavior();\r\n break;\r\n }\r\n return behavior;\r\n }\r\n }\r\n} ","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n export interface LegendBehaviorOptions {\r\n legendItems: D3.Selection;\r\n legendIcons: D3.Selection;\r\n clearCatcher: D3.Selection;\r\n }\r\n\r\n export class LegendBehavior implements IInteractiveBehavior {\r\n public static dimmedLegendColor = '#A6A6A6';\r\n private legendIcons;\r\n\r\n public bindEvents(options: LegendBehaviorOptions, selectionHandler: ISelectionHandler): void {\r\n let legendItems = options.legendItems;\r\n this.legendIcons = options.legendIcons;\r\n let clearCatcher = options.clearCatcher;\r\n\r\n legendItems.on('click', (d: LegendDataPoint) => {\r\n selectionHandler.handleSelection(d, d3.event.ctrlKey);\r\n });\r\n\r\n clearCatcher.on('click', () => {\r\n selectionHandler.handleClearSelection();\r\n });\r\n }\r\n\r\n public renderSelection(hasSelection: boolean): void {\r\n if (hasSelection) {\r\n this.legendIcons.style({\r\n 'fill': (d: LegendDataPoint) => {\r\n if (!d.selected)\r\n return LegendBehavior.dimmedLegendColor; \r\n else\r\n return d.color;\r\n }\r\n });\r\n }\r\n else {\r\n this.legendIcons.style({\r\n 'fill': (d: LegendDataPoint) => {\r\n return d.color;\r\n }\r\n });\r\n }\r\n }\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n export interface TreemapBehaviorOptions {\r\n shapes: D3.Selection;\r\n highlightShapes: D3.Selection;\r\n majorLabels: D3.Selection;\r\n minorLabels: D3.Selection;\r\n nodes: TreemapNode[];\r\n hasHighlights: boolean;\r\n }\r\n\r\n export class TreemapWebBehavior implements IInteractiveBehavior {\r\n private shapes: D3.Selection;\r\n private highlightShapes: D3.Selection;\r\n private hasHighlights: boolean;\r\n\r\n public bindEvents(options: TreemapBehaviorOptions, selectionHandler: ISelectionHandler): void {\r\n let shapes = this.shapes = options.shapes;\r\n let highlightShapes = this.highlightShapes = options.highlightShapes;\r\n let majorLabels = options.majorLabels;\r\n let minorLabels = options.minorLabels;\r\n this.hasHighlights = options.hasHighlights;\r\n\r\n let clickHandler = (d: TreemapNode) => {\r\n selectionHandler.handleSelection(d, d3.event.ctrlKey);\r\n };\r\n\r\n shapes.on('click', clickHandler);\r\n highlightShapes.on('click', clickHandler);\r\n if (majorLabels)\r\n majorLabels.on('click', clickHandler);\r\n if (minorLabels)\r\n minorLabels.on('click', clickHandler);\r\n }\r\n\r\n public renderSelection(hasSelection: boolean): void {\r\n let hasHighlights = this.hasHighlights;\r\n this.shapes\r\n .style(\"fill\", (d: TreemapNode) => Treemap.getFill(d, /* isHighlightRect */ false))\r\n .style(\"fill-opacity\", (d: TreemapNode) => Treemap.getFillOpacity(d, hasSelection, !d.selected && hasHighlights, /* isHighlightRect */ false));\r\n this.highlightShapes\r\n .style(\"fill\", (d: TreemapNode) => Treemap.getFill(d, /* isHighlightRect */ true))\r\n .style(\"fill-opacity\", (d: TreemapNode) => Treemap.getFillOpacity(d, hasSelection, !d.selected && hasHighlights, /* isHighlightRect */ true));\r\n }\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n export interface WaterfallChartBehaviorOptions {\r\n bars: D3.Selection;\r\n }\r\n\r\n export class WaterfallChartWebBehavior {\r\n private bars: D3.Selection;\r\n\r\n public bindEvents(options: WaterfallChartBehaviorOptions, selectionHandler: ISelectionHandler): void {\r\n let bars = this.bars = options.bars;\r\n\r\n bars.on('click', (d: WaterfallChartDataPoint) => {\r\n if (!d.isTotal) {\r\n selectionHandler.handleSelection(d, d3.event.ctrlKey);\r\n }\r\n });\r\n }\r\n\r\n public renderSelection(hasSelection: boolean): void {\r\n this.bars.style(\"fill-opacity\", (d: WaterfallChartDataPoint) => d.isTotal ? ColumnUtil.DefaultOpacity : ColumnUtil.getFillOpacity(d.selected, d.highlight, hasSelection, false));\r\n }\r\n }\r\n} ","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n export interface LabelsBehaviorOptions {\r\n labelItems: D3.Selection;\r\n }\r\n\r\n export class LabelsBehavior implements IInteractiveBehavior {\r\n public static DefaultLabelOpacity = 1;\r\n public static DimmedLabelOpacity = 0.6;\r\n private labelItems: D3.Selection;\r\n\r\n public bindEvents(options: LabelsBehaviorOptions, selectionHandler: ISelectionHandler): void {\r\n this.labelItems = options.labelItems;\r\n\r\n this.labelItems.on('click', (d: Label) => {\r\n selectionHandler.handleSelection(d, d3.event.ctrlKey);\r\n });\r\n }\r\n\r\n public renderSelection(hasSelection: boolean): void {\r\n if (hasSelection) {\r\n this.labelItems.style({\r\n 'opacity': (d: Label) => {\r\n if (!d.selected)\r\n return LabelsBehavior.DimmedLabelOpacity;\r\n else\r\n return LabelsBehavior.DefaultLabelOpacity;\r\n }\r\n });\r\n }\r\n else {\r\n this.labelItems.style({\r\n 'opacity': LabelsBehavior.DefaultLabelOpacity,\r\n });\r\n }\r\n }\r\n }\r\n}\r\n","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n export interface CartesianBehaviorOptions {\r\n layerOptions: any[];\r\n clearCatcher: D3.Selection;\r\n }\r\n\r\n export class CartesianChartBehavior implements IInteractiveBehavior {\r\n private behaviors: IInteractiveBehavior[];\r\n\r\n constructor(behaviors: IInteractiveBehavior[]) {\r\n this.behaviors = behaviors;\r\n }\r\n\r\n public bindEvents(options: CartesianBehaviorOptions, selectionHandler: ISelectionHandler): void {\r\n let behaviors = this.behaviors;\r\n for (let i = 0, ilen = behaviors.length; i < ilen; i++) {\r\n behaviors[i].bindEvents(options.layerOptions[i], selectionHandler);\r\n }\r\n\r\n options.clearCatcher.on('click', () => {\r\n selectionHandler.handleClearSelection();\r\n });\r\n }\r\n\r\n public renderSelection(hasSelection: boolean) {\r\n for (let behavior of this.behaviors) {\r\n behavior.renderSelection(hasSelection);\r\n }\r\n }\r\n }\r\n} ","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n\r\n export interface VisualConfig {\r\n\r\n visualType: string;\r\n\r\n projections: data.QueryProjectionsByRole[];\r\n \r\n /**\r\n * This is the one that has info like Total, Combochart viz types, legend settings, etc...\r\n * Each IVisual implementation, should simply cast this to whatever object they expect.\r\n */\r\n config?: any;\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n import ITextAsSVGMeasurer = powerbi.ITextAsSVGMeasurer;\r\n\r\n /**\r\n * Default ranges are for when we have a field chosen for the axis,\r\n * but no values are returned by the query.\r\n */\r\n export const fallBackDomain = [0, 10];\r\n export const fallbackDateDomain = [new Date(2014, 1, 1).getTime(), new Date(2015, 1, 1).getTime()];\r\n\r\n export interface IAxisProperties {\r\n /** \r\n * The D3 Scale object.\r\n */\r\n scale: D3.Scale.GenericScale<any>;\r\n /** \r\n * The D3 Axis object.\r\n */\r\n axis: D3.Svg.Axis;\r\n /**\r\n * An array of the tick values to display for this axis.\r\n */\r\n values: any[];\r\n /** \r\n * The ValueType of the column used for this axis.\r\n */\r\n axisType: ValueType;\r\n /**\r\n * A formatter with appropriate properties configured for this field.\r\n */\r\n formatter: IValueFormatter;\r\n /**\r\n * The axis title label.\r\n */\r\n axisLabel: string;\r\n /**\r\n * Cartesian axes are either a category or value axis.\r\n */\r\n isCategoryAxis: boolean; \r\n /** \r\n * (optional) The max width for category tick label values. used for ellipsis truncation / label rotation.\r\n */\r\n xLabelMaxWidth?: number;\r\n /** \r\n * (optional) The thickness of each category on the axis.\r\n */\r\n categoryThickness?: number;\r\n /** \r\n * (optional) The outer padding in pixels applied to the D3 scale.\r\n */\r\n outerPadding?: number;\r\n /** \r\n * (optional) Whether we are using a default domain.\r\n */\r\n usingDefaultDomain?: boolean;\r\n /** (optional) do default d3 axis labels fit? */\r\n willLabelsFit?: boolean;\r\n /** (optional) word break axis labels */\r\n willLabelsWordBreak?: boolean;\r\n /** \r\n * (optional) Whether log scale is possible on the current domain.\r\n */\r\n isLogScaleAllowed?: boolean;\r\n /** \r\n * (optional) Whether domain contains zero value and log scale is enabled.\r\n */\r\n hasDisallowedZeroInDomain?: boolean;\r\n /** (optional) The original data domain. Linear scales use .nice() to round to cleaner edge values. Keep the original data domain for later. */\r\n dataDomain?: number[];\r\n /** (optional) The D3 graphics context for this axis */\r\n graphicsContext?: D3.Selection;\r\n }\r\n\r\n export interface IMargin {\r\n top: number;\r\n bottom: number;\r\n left: number;\r\n right: number;\r\n }\r\n\r\n export interface CreateAxisOptions {\r\n /**\r\n * The dimension length for the axis, in pixels.\r\n */\r\n pixelSpan: number;\r\n /** \r\n * The data domain. [min, max] for a scalar axis, or [1...n] index array for ordinal.\r\n */\r\n dataDomain: number[];\r\n /** \r\n * The DataViewMetadataColumn will be used for dataType and tick value formatting.\r\n */\r\n metaDataColumn: DataViewMetadataColumn; //TODO: remove this, we should just be passing in the formatString and the ValueType, not this DataView-specific object\r\n /**\r\n * The format string.\r\n */\r\n formatString: string;\r\n /** \r\n * outerPadding to be applied to the axis.\r\n */\r\n outerPadding: number; \r\n /** \r\n * Indicates if this is the category axis.\r\n */\r\n isCategoryAxis?: boolean;\r\n /**\r\n * If true and the dataType is numeric or dateTime,\r\n * create a linear axis, else create an ordinal axis.\r\n */ \r\n isScalar?: boolean;\r\n /**\r\n * (optional) The scale is inverted for a vertical axis,\r\n * and different optimizations are made for tick labels.\r\n */\r\n isVertical?: boolean;\r\n /** \r\n * (optional) For visuals that do not need zero (e.g. column/bar) use tickInterval.\r\n */\r\n useTickIntervalForDisplayUnits?: boolean;\r\n /**\r\n * (optional) Combo charts can override the tick count to\r\n * align y1 and y2 grid lines.\r\n */\r\n forcedTickCount?: number;\r\n /** \r\n * (optional) Callback for looking up actual values from indices, \r\n * used when formatting tick labels. \r\n */\r\n getValueFn?: (index: number, type: ValueType) => any;\r\n /**\r\n * (optional) The width/height of each category on the axis.\r\n */\r\n categoryThickness?: number;\r\n /** (optional) the scale type of the axis. e.g. log, linear */\r\n scaleType?: string;\r\n /** (optional) user selected display units */\r\n axisDisplayUnits?: number;\r\n /** (optional) user selected precision */\r\n axisPrecision?: number;\r\n /** (optional) for 100 percent stacked charts, causes formatString override and minTickInterval adjustments */\r\n is100Pct?: boolean;\r\n /** (optional) sets clamping on the D3 scale, useful for drawing column chart rectangles as it simplifies the math during layout */\r\n shouldClamp?: boolean;\r\n }\r\n\r\n export interface CreateScaleResult {\r\n scale: D3.Scale.GenericScale<any>;\r\n bestTickCount: number;\r\n usingDefaultDomain?: boolean;\r\n }\r\n\r\n export module AxisHelper {\r\n let XLabelMaxAllowedOverflow = 35;\r\n let TextHeightConstant = 10;\r\n let MinTickCount = 2;\r\n let DefaultBestTickCount = 3;\r\n let LeftPadding = 10;\r\n\r\n export function getRecommendedNumberOfTicksForXAxis(availableWidth: number) {\r\n if (availableWidth < 250)\r\n return 3;\r\n if (availableWidth < 500)\r\n return 5;\r\n\r\n return 8;\r\n }\r\n\r\n export function getRecommendedNumberOfTicksForYAxis(availableWidth: number) {\r\n if (availableWidth < 150)\r\n return 3;\r\n if (availableWidth < 300)\r\n return 5;\r\n\r\n return 8;\r\n }\r\n\r\n /**\r\n * Get the best number of ticks based on minimum value, maximum value,\r\n * measure metadata and max tick count.\r\n * \r\n * @param min The minimum of the data domain.\r\n * @param max The maximum of the data domain.\r\n * @param valuesMetadata The measure metadata array.\r\n * @param maxTickCount The max count of intervals.\r\n * @param isDateTime - flag to show single tick when min is equal to max.\r\n */\r\n export function getBestNumberOfTicks(min: number, max: number, valuesMetadata: DataViewMetadataColumn[], maxTickCount: number, isDateTime?: boolean): number {\r\n debug.assert(maxTickCount >= 0, \"maxTickCount must be greater or equal to zero\");\r\n\r\n if (isNaN(min) || isNaN(max))\r\n return DefaultBestTickCount;\r\n\r\n debug.assert(min <= max, \"min value needs to be less or equal to max value\");\r\n\r\n if (maxTickCount <= 1 || (max <= 1 && min >= -1))\r\n return maxTickCount;\r\n\r\n if (min === max) {\r\n // datetime needs to only show one tick value in this case so formatting works correctly\r\n if (!!isDateTime)\r\n return 1;\r\n return DefaultBestTickCount;\r\n }\r\n\r\n if (hasNonIntegerData(valuesMetadata))\r\n return maxTickCount;\r\n\r\n // e.g. 5 - 2 + 1 = 4, => [2,3,4,5]\r\n return Math.min(max - min + 1, maxTickCount);\r\n }\r\n\r\n export function hasNonIntegerData(valuesMetadata: DataViewMetadataColumn[]): boolean {\r\n for (let i = 0, len = valuesMetadata.length; i < len; i++) {\r\n let currentMetadata = valuesMetadata[i];\r\n if (currentMetadata && currentMetadata.type && !currentMetadata.type.integer) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n export function getRecommendedTickValues(maxTicks: number,\r\n scale: D3.Scale.GenericScale<any>,\r\n axisType: ValueType,\r\n isScalar: boolean,\r\n minTickInterval?: number): any[]{\r\n\r\n if (!isScalar || isOrdinalScale(scale)) {\r\n return getRecommendedTickValuesForAnOrdinalRange(maxTicks, scale.domain());\r\n }\r\n else if (isDateTime(axisType)) {\r\n return getRecommendedTickValuesForADateTimeRange(maxTicks, scale.domain());\r\n }\r\n return getRecommendedTickValuesForAQuantitativeRange(maxTicks, scale, minTickInterval);\r\n }\r\n\r\n export function getRecommendedTickValuesForAnOrdinalRange(maxTicks: number, labels: string[]): string[] {\r\n let tickLabels: string[] = [];\r\n\r\n // return no ticks in this case\r\n if (maxTicks <= 0)\r\n return tickLabels;\r\n\r\n let len = labels.length;\r\n if (maxTicks > len)\r\n return labels;\r\n\r\n // TODO: Should we do ceil? this could result in more than maxTicks\r\n // e.g. maxTicks === 6, len === 10, 10 / 6=1.66, floor is 1.0, yielding 10 ticksValues.\r\n for (let i = 0, step = Math.floor(len / maxTicks); i < len; i += step) {\r\n tickLabels.push(labels[i]);\r\n }\r\n return tickLabels;\r\n }\r\n\r\n export function getRecommendedTickValuesForAQuantitativeRange(maxTicks: number, scale: D3.Scale.GenericScale<any>, minInterval?: number): number[] {\r\n let tickLabels: number[] = [];\r\n\r\n //if maxticks is zero return none\r\n if (maxTicks === 0)\r\n return tickLabels;\r\n\r\n let quantitiveScale = <D3.Scale.QuantitativeScale>scale;\r\n if (quantitiveScale.ticks) {\r\n tickLabels = quantitiveScale.ticks(maxTicks);\r\n if (tickLabels.length > maxTicks && maxTicks > 1)\r\n tickLabels = quantitiveScale.ticks(maxTicks - 1);\r\n if (tickLabels.length < MinTickCount) {\r\n tickLabels = quantitiveScale.ticks(maxTicks + 1);\r\n }\r\n tickLabels = createTrueZeroTickLabel(tickLabels);\r\n\r\n if (minInterval && tickLabels.length > 1) {\r\n let tickInterval = tickLabels[1] - tickLabels[0];\r\n while (tickInterval > 0 && tickInterval < minInterval) {\r\n for (let i = 1; i < tickLabels.length; i++) {\r\n tickLabels.splice(i, 1);\r\n }\r\n\r\n tickInterval = tickInterval * 2;\r\n }\r\n // keep at least two labels - the loop above may trim all but one if we have odd # of tick labels and dynamic range < minInterval\r\n if (tickLabels.length === 1) {\r\n tickLabels.push(tickLabels[0] + minInterval);\r\n }\r\n }\r\n return tickLabels;\r\n }\r\n\r\n debug.assertFail('must pass a quantitative scale to this method');\r\n \r\n return tickLabels;\r\n }\r\n\r\n /** \r\n * Round out very small zero tick values (e.g. -1e-33 becomes 0).\r\n * \r\n * @param ticks Array of numbers (from d3.scale.ticks([maxTicks])).\r\n * @param epsilon Max ratio of calculated tick interval which we will recognize as zero.\r\n * \r\n * e.g.\r\n * ticks = [-2, -1, 1e-10, 3, 4]; epsilon = 1e-5;\r\n * closeZero = 1e-5 * | 2 - 1 | = 1e-5\r\n * // Tick values <= 1e-5 replaced with 0\r\n * return [-2, -1, 0, 3, 4];\r\n */\r\n function createTrueZeroTickLabel(ticks: number[], epsilon: number = 1e-5): number[]{\r\n if (!ticks || ticks.length < 2)\r\n return ticks;\r\n\r\n let closeZero = epsilon * Math.abs(ticks[1] - ticks[0]);\r\n\r\n return ticks.map((tick) => Math.abs(tick) <= closeZero ? 0 : tick);\r\n }\r\n\r\n function getRecommendedTickValuesForADateTimeRange(maxTicks: number, dataDomain: number[]): number[] {\r\n let tickLabels: number[] = [];\r\n\r\n let dateTimeTickLabels = DateTimeSequence.calculate(new Date(dataDomain[0]), new Date(dataDomain[1]), maxTicks).sequence;\r\n tickLabels = dateTimeTickLabels.map(d => d.getTime());\r\n tickLabels = ensureValuesInRange(tickLabels, dataDomain[0], dataDomain[1]);\r\n return tickLabels;\r\n }\r\n\r\n export function normalizeLinearDomain(domain: NumberRange): NumberRange {\r\n if (isNaN(domain.min) || isNaN(domain.max)) {\r\n domain.min = fallBackDomain[0];\r\n domain.max = fallBackDomain[1];\r\n }\r\n else if (domain.min === 0 && domain.max === 0) {\r\n domain.max = fallBackDomain[1]; // default\r\n }\r\n else if (domain.min === domain.max) {\r\n // d3 linear scale will give zero tickValues if max === min, so extend a little\r\n domain.min = domain.min < 0 ? domain.min * 1.2 : domain.min * 0.8;\r\n domain.max = domain.max < 0 ? domain.max * 0.8 : domain.max * 1.2;\r\n }\r\n else {\r\n // Check that min is very small and is a negligable portion of the whole domain.\r\n // (fix floating pt precision bugs)\r\n // sometimes highlight value math causes small negative numbers which makes the axis add\r\n // a large tick interval instead of just rendering at zero.\r\n if (Math.abs(domain.min) < 0.0001 && domain.min / (domain.max - domain.min) < 0.0001) {\r\n domain.min = 0;\r\n }\r\n }\r\n\r\n return domain;\r\n }\r\n\r\n export function getMargin(availableWidth: number, availableHeight: number, xMargin: number, yMargin: number): IMargin {\r\n if (getRecommendedNumberOfTicksForXAxis(availableWidth - xMargin) === 0\r\n || getRecommendedNumberOfTicksForYAxis(availableHeight - yMargin) === 0) {\r\n return {\r\n top: 0,\r\n right: xMargin,\r\n bottom: yMargin,\r\n left: 0\r\n };\r\n }\r\n\r\n return {\r\n top: 20,\r\n right: 30,\r\n bottom: 40,\r\n left: 30\r\n };\r\n } \r\n\r\n // TODO: Put the parameters into one object\r\n export function getTickLabelMargins(\r\n viewport: IViewport,\r\n yMarginLimit: number,\r\n textWidthMeasurer: ITextAsSVGMeasurer,\r\n textHeightMeasurer: ITextAsSVGMeasurer,\r\n axes: CartesianAxisProperties,\r\n bottomMarginLimit: number,\r\n properties: TextProperties,\r\n scrollbarVisible?: boolean,\r\n showOnRight?: boolean,\r\n renderXAxis?: boolean,\r\n renderY1Axis?: boolean,\r\n renderY2Axis?: boolean) {\r\n\r\n debug.assertValue(axes, 'axes');\r\n let xAxisProperties: IAxisProperties = axes.x;\r\n let y1AxisProperties: IAxisProperties = axes.y1;\r\n let y2AxisProperties: IAxisProperties = axes.y2;\r\n\r\n debug.assertValue(viewport, 'viewport');\r\n debug.assertValue(textWidthMeasurer, 'textWidthMeasurer');\r\n debug.assertValue(textHeightMeasurer, 'textHeightMeasurer');\r\n debug.assertValue(xAxisProperties, 'xAxis');\r\n debug.assertValue(y1AxisProperties, 'yAxis');\r\n\r\n let xLabels = xAxisProperties.values;\r\n let y1Labels = y1AxisProperties.values;\r\n\r\n let leftOverflow = 0;\r\n let rightOverflow = 0;\r\n let maxWidthY1 = 0;\r\n let maxWidthY2 = 0;\r\n let xMax = 0; // bottom margin\r\n let ordinalLabelOffset = xAxisProperties.categoryThickness ? xAxisProperties.categoryThickness / 2 : 0;\r\n let scaleIsOrdinal = isOrdinalScale(xAxisProperties.scale);\r\n\r\n let xLabelOuterPadding = 0;\r\n if (xAxisProperties.outerPadding !== undefined) {\r\n xLabelOuterPadding = xAxisProperties.outerPadding;\r\n }\r\n else if (xAxisProperties.xLabelMaxWidth !== undefined) {\r\n xLabelOuterPadding = Math.max(0, (viewport.width - xAxisProperties.xLabelMaxWidth * xLabels.length) / 2);\r\n }\r\n\r\n if (getRecommendedNumberOfTicksForXAxis(viewport.width) !== 0\r\n || getRecommendedNumberOfTicksForYAxis(viewport.height) !== 0) {\r\n let rotation;\r\n if (scrollbarVisible)\r\n rotation = LabelLayoutStrategy.DefaultRotationWithScrollbar;\r\n else\r\n rotation = LabelLayoutStrategy.DefaultRotation; \r\n\r\n if (renderY1Axis) {\r\n for (let i = 0, len = y1Labels.length; i < len; i++) {\r\n properties.text = y1Labels[i];\r\n maxWidthY1 = Math.max(maxWidthY1, textWidthMeasurer(properties));\r\n }\r\n }\r\n\r\n if (y2AxisProperties && renderY2Axis) {\r\n let y2Labels = y2AxisProperties.values;\r\n for (let i = 0, len = y2Labels.length; i < len; i++) {\r\n properties.text = y2Labels[i];\r\n maxWidthY2 = Math.max(maxWidthY2, textWidthMeasurer(properties));\r\n }\r\n }\r\n\r\n let textHeight = textHeightMeasurer(properties);\r\n let maxNumLines = Math.floor(bottomMarginLimit / textHeight);\r\n let xScale = xAxisProperties.scale;\r\n let xDomain = xScale.domain();\r\n if (renderXAxis && xLabels.length > 0) {\r\n for (let i = 0, len = xLabels.length; i < len; i++) {\r\n // find the max height of the x-labels, perhaps rotated or wrapped\r\n let height: number;\r\n properties.text = xLabels[i];\r\n let width = textWidthMeasurer(properties);\r\n if (xAxisProperties.willLabelsWordBreak) {\r\n // Split label and count rows\r\n let wordBreaks = jsCommon.WordBreaker.splitByWidth(properties.text, properties, textWidthMeasurer, xAxisProperties.xLabelMaxWidth, maxNumLines);\r\n height = wordBreaks.length * textHeight;\r\n }\r\n else if (!xAxisProperties.willLabelsFit) {\r\n height = width * rotation.sine;\r\n width = width * rotation.cosine;\r\n }\r\n else {\r\n height = TextHeightConstant;\r\n }\r\n\r\n // calculate left and right overflow due to wide X labels\r\n // (Note: no right overflow when rotated)\r\n if (i === 0) {\r\n if (scaleIsOrdinal) {\r\n if (!xAxisProperties.willLabelsFit /*rotated text*/)\r\n leftOverflow = width - ordinalLabelOffset - xLabelOuterPadding;\r\n else\r\n leftOverflow = (width / 2) - ordinalLabelOffset - xLabelOuterPadding;\r\n leftOverflow = Math.max(leftOverflow, 0);\r\n }\r\n else if (xDomain.length > 1) {\r\n // Scalar - do some math\r\n let xPos = xScale(xDomain[0]);\r\n // xPos already incorporates xLabelOuterPadding, don't subtract it twice\r\n leftOverflow = (width / 2) - xPos;\r\n leftOverflow = Math.max(leftOverflow, 0);\r\n }\r\n } else if (i === len - 1 && (xAxisProperties.willLabelsFit || xAxisProperties.willLabelsWordBreak)) {\r\n // if we are rotating text (!willLabelsFit) there won't be any right overflow\r\n if (scaleIsOrdinal) {\r\n // assume this label is placed near the edge\r\n rightOverflow = (width / 2) - ordinalLabelOffset - xLabelOuterPadding;\r\n rightOverflow = Math.max(rightOverflow, 0);\r\n }\r\n else if (xDomain.length > 1) {\r\n // Scalar - do some math\r\n let xPos = xScale(xDomain[1]);\r\n // xPos already incorporates xLabelOuterPadding, don't subtract it twice\r\n rightOverflow = (width / 2) - (viewport.width - xPos);\r\n rightOverflow = Math.max(rightOverflow, 0);\r\n }\r\n }\r\n\r\n xMax = Math.max(xMax, height);\r\n }\r\n // trim any actual overflow to the limit\r\n leftOverflow = Math.min(leftOverflow, XLabelMaxAllowedOverflow);\r\n rightOverflow = Math.min(rightOverflow, XLabelMaxAllowedOverflow);\r\n }\r\n }\r\n\r\n let rightMargin = 0,\r\n leftMargin = 0,\r\n bottomMargin = Math.min(Math.ceil(xMax), bottomMarginLimit);\r\n\r\n if (showOnRight) {\r\n leftMargin = Math.min(Math.max(leftOverflow, maxWidthY2), yMarginLimit);\r\n rightMargin = Math.min(Math.max(rightOverflow, maxWidthY1), yMarginLimit);\r\n }\r\n else {\r\n leftMargin = Math.min(Math.max(leftOverflow, maxWidthY1), yMarginLimit);\r\n rightMargin = Math.min(Math.max(rightOverflow, maxWidthY2), yMarginLimit);\r\n }\r\n\r\n return {\r\n xMax: Math.ceil(bottomMargin),\r\n yLeft: Math.ceil(leftMargin),\r\n yRight: Math.ceil(rightMargin),\r\n };\r\n }\r\n\r\n export function columnDataTypeHasValue(dataType: ValueTypeDescriptor) {\r\n return dataType && (dataType.bool || dataType.numeric || dataType.text || dataType.dateTime);\r\n }\r\n\r\n export function createOrdinalType(): ValueType {\r\n return ValueType.fromDescriptor({ text: true });\r\n }\r\n\r\n export function isOrdinal(type: ValueTypeDescriptor): boolean {\r\n return !!(type && (type.text || type.bool));\r\n }\r\n\r\n export function isOrdinalScale(scale: any): boolean {\r\n return typeof scale.invert === 'undefined';\r\n }\r\n\r\n export function isDateTime(type: ValueTypeDescriptor): boolean {\r\n return !!(type && type.dateTime);\r\n }\r\n\r\n export function invertScale(scale: any, x) {\r\n if (isOrdinalScale(scale)) {\r\n return invertOrdinalScale(scale, x);\r\n }\r\n return scale.invert(x);\r\n }\r\n\r\n export function extent(scale: any): number[] {\r\n if (isOrdinalScale(scale)) {\r\n return scale.rangeExtent();\r\n }\r\n return scale.range();\r\n }\r\n\r\n export function invertOrdinalScale(scale: D3.Scale.OrdinalScale, x: number) {\r\n let leftEdges = scale.range();\r\n if (leftEdges.length < 2)\r\n return 0;\r\n\r\n let width = scale.rangeBand();\r\n let halfInnerPadding = (leftEdges[1] - leftEdges[0] - width) / 2;\r\n \r\n let j;\r\n for (j = 0; x > (leftEdges[j] + width + halfInnerPadding) && j < (leftEdges.length - 1); j++)\r\n ;\r\n return scale.domain()[j];\r\n }\r\n\r\n export function findClosestXAxisIndex(categoryValue: number, categoryAxisValues: CartesianDataPoint[]): number {\r\n let closestValueIndex: number = -1;\r\n let minDistance = Number.MAX_VALUE;\r\n for (let i in categoryAxisValues) {\r\n let distance = Math.abs(categoryValue - categoryAxisValues[i].categoryValue);\r\n if (distance < minDistance) {\r\n minDistance = distance;\r\n closestValueIndex = parseInt(i, 10);\r\n }\r\n }\r\n return closestValueIndex;\r\n }\r\n\r\n /** scale(value1) - scale(value2) with zero checking and min(+/-1, result) */\r\n export function diffScaled(\r\n scale: D3.Scale.GenericScale<any>,\r\n value1: any,\r\n value2: any): number {\r\n debug.assertValue(scale, 'scale');\r\n\r\n let value: number = scale(value1) - scale(value2);\r\n if (value === 0)\r\n return 0;\r\n\r\n if (value < 0)\r\n return Math.min(value, -1);\r\n return Math.max(value, 1);\r\n }\r\n\r\n export function createDomain(data: CartesianSeries[], axisType: ValueTypeDescriptor, isScalar: boolean, forcedScalarDomain: any[]): number[]{\r\n if (isScalar && !isOrdinal(axisType)) {\r\n let userMin, userMax;\r\n if (forcedScalarDomain && forcedScalarDomain.length === 2) {\r\n userMin = forcedScalarDomain[0];\r\n userMax = forcedScalarDomain[1];\r\n }\r\n return createScalarDomain(data, userMin, userMax, axisType);\r\n }\r\n\r\n return createOrdinalDomain(data);\r\n }\r\n\r\n export function ensureValuesInRange(values: number[], min: number, max: number): number[] {\r\n debug.assert(min <= max, \"min must be less or equal to max\");\r\n let filteredValues = values.filter(v => v >= min && v <= max);\r\n if (filteredValues.length < 2)\r\n filteredValues = [min, max];\r\n return filteredValues;\r\n }\r\n\r\n /**\r\n * Gets the ValueType of a category column, defaults to Text if the type is not present.\r\n */\r\n export function getCategoryValueType(metadataColumn: DataViewMetadataColumn, isScalar?: boolean): ValueType {\r\n if (metadataColumn && columnDataTypeHasValue(metadataColumn.type))\r\n return <ValueType>metadataColumn.type;\r\n\r\n if (isScalar) {\r\n return ValueType.fromDescriptor({ numeric: true });\r\n }\r\n \r\n return ValueType.fromDescriptor({ text: true });\r\n }\r\n\r\n /**\r\n * Create a D3 axis including scale. Can be vertical or horizontal, and either datetime, numeric, or text.\r\n * @param options The properties used to create the axis.\r\n */\r\n export function createAxis(options: CreateAxisOptions): IAxisProperties {\r\n let pixelSpan = options.pixelSpan,\r\n dataDomain = options.dataDomain,\r\n metaDataColumn = options.metaDataColumn,\r\n formatString = options.formatString,\r\n outerPadding = options.outerPadding || 0,\r\n isCategoryAxis = !!options.isCategoryAxis,\r\n isScalar = !!options.isScalar,\r\n isVertical = !!options.isVertical,\r\n useTickIntervalForDisplayUnits = !!options.useTickIntervalForDisplayUnits, // DEPRECATE: same meaning as isScalar?\r\n getValueFn = options.getValueFn,\r\n categoryThickness = options.categoryThickness,\r\n axisDisplayUnits = options.axisDisplayUnits,\r\n axisPrecision = options.axisPrecision,\r\n is100Pct = !!options.is100Pct;\r\n\r\n let dataType: ValueType = this.getCategoryValueType(metaDataColumn, isScalar);\r\n\r\n // Create the Scale\r\n let scaleResult: CreateScaleResult = this.createScale(options);\r\n let scale = scaleResult.scale;\r\n let bestTickCount = scaleResult.bestTickCount;\r\n let scaleDomain = scale.domain();\r\n let isLogScaleAllowed = AxisHelper.isLogScalePossible(dataDomain, dataType);\r\n\r\n // fix categoryThickness if scalar and the domain was adjusted when making the scale \"nice\"\r\n if (categoryThickness && isScalar && dataDomain && dataDomain.length === 2) {\r\n let oldSpan = dataDomain[1] - dataDomain[0];\r\n let newSpan = scaleDomain[1] - scaleDomain[0];\r\n if (oldSpan > 0 && newSpan > 0) {\r\n categoryThickness = categoryThickness * oldSpan / newSpan;\r\n }\r\n }\r\n\r\n // Prepare Tick Values for formatting\r\n let tickValues: any[];\r\n if (isScalar && bestTickCount === 1) {\r\n tickValues = [dataDomain[0]];\r\n }\r\n else {\r\n let minTickInterval = isScalar ? getMinTickValueInterval(formatString, dataType, is100Pct) : undefined;\r\n tickValues = getRecommendedTickValues(bestTickCount, scale, dataType, isScalar, minTickInterval);\r\n }\r\n\r\n if (options.scaleType && options.scaleType === axisScale.log && isLogScaleAllowed) {\r\n tickValues = tickValues.filter((d) => { return AxisHelper.powerOfTen(d); });\r\n }\r\n\r\n let formatter = createFormatter(\r\n scaleDomain,\r\n dataDomain,\r\n dataType,\r\n isScalar,\r\n formatString,\r\n bestTickCount,\r\n tickValues,\r\n getValueFn,\r\n useTickIntervalForDisplayUnits,\r\n axisDisplayUnits,\r\n axisPrecision);\r\n\r\n // sets default orientation only, cartesianChart will fix y2 for comboChart\r\n // tickSize(pixelSpan) is used to create gridLines\r\n let axis = d3.svg.axis()\r\n .scale(scale)\r\n .tickSize(6, 0)\r\n .orient(isVertical ? 'left' : 'bottom')\r\n .ticks(bestTickCount)\r\n .tickValues(tickValues);\r\n\r\n let formattedTickValues = [];\r\n if (metaDataColumn)\r\n formattedTickValues = formatAxisTickValues(axis, tickValues, formatter, dataType, getValueFn);\r\n\r\n let xLabelMaxWidth;\r\n // Use category layout of labels if specified, otherwise use scalar layout of labels\r\n if (!isScalar && categoryThickness) {\r\n xLabelMaxWidth = Math.max(1, categoryThickness - CartesianChart.TickLabelPadding * 2);\r\n }\r\n else {\r\n // When there are 0 or 1 ticks, then xLabelMaxWidth = pixelSpan \r\n // When there is > 1 ticks then we need to +1 so that their widths don't overlap\r\n // Example: 2 ticks are drawn at 33.33% and 66.66%, their width needs to be 33.33% so they don't overlap.\r\n let labelAreaCount = tickValues.length > 1 ? tickValues.length + 1 : tickValues.length;\r\n xLabelMaxWidth = labelAreaCount > 1 ? pixelSpan / labelAreaCount : pixelSpan;\r\n xLabelMaxWidth = Math.max(1, xLabelMaxWidth - CartesianChart.TickLabelPadding * 2);\r\n }\r\n\r\n return {\r\n scale: scale,\r\n axis: axis,\r\n formatter: formatter,\r\n values: formattedTickValues,\r\n axisType: dataType,\r\n axisLabel: null,\r\n isCategoryAxis: isCategoryAxis,\r\n xLabelMaxWidth: xLabelMaxWidth,\r\n categoryThickness: categoryThickness,\r\n outerPadding: outerPadding,\r\n usingDefaultDomain: scaleResult.usingDefaultDomain,\r\n isLogScaleAllowed: isLogScaleAllowed,\r\n dataDomain: dataDomain,\r\n };\r\n }\r\n\r\n export function createScale(options: CreateAxisOptions): CreateScaleResult {\r\n let pixelSpan = options.pixelSpan,\r\n dataDomain = options.dataDomain,\r\n metaDataColumn = options.metaDataColumn,\r\n outerPadding = options.outerPadding || 0,\r\n isScalar = !!options.isScalar,\r\n isVertical = !!options.isVertical,\r\n forcedTickCount = options.forcedTickCount,\r\n categoryThickness = options.categoryThickness,\r\n shouldClamp = !!options.shouldClamp;\r\n\r\n let dataType: ValueType = this.getCategoryValueType(metaDataColumn, isScalar);\r\n let maxTicks = isVertical ? getRecommendedNumberOfTicksForYAxis(pixelSpan) : getRecommendedNumberOfTicksForXAxis(pixelSpan);\r\n let scalarDomain = dataDomain ? dataDomain.slice() : null;\r\n let bestTickCount = maxTicks;\r\n let scale: D3.Scale.GenericScale<any>;\r\n let usingDefaultDomain = false;\r\n\r\n if (dataDomain == null || (dataDomain.length === 2 && dataDomain[0] == null && dataDomain[1] == null) || (dataDomain.length !== 2 && isScalar)) {\r\n usingDefaultDomain = true;\r\n\r\n if (dataType.dateTime)\r\n dataDomain = fallbackDateDomain;\r\n else if (!isOrdinal(dataType))\r\n dataDomain = fallBackDomain;\r\n else //ordinal\r\n dataDomain = [];\r\n\r\n if (isOrdinal(dataType)) {\r\n scale = createOrdinalScale(pixelSpan, dataDomain, categoryThickness ? outerPadding / categoryThickness : 0);\r\n }\r\n else {\r\n scale = createNumericalScale(options.scaleType, pixelSpan, dataDomain, dataType, outerPadding, bestTickCount);\r\n }\r\n }\r\n else {\r\n if (isScalar && dataDomain.length > 0) {\r\n bestTickCount = forcedTickCount !== undefined\r\n ? (maxTicks !== 0 ? forcedTickCount : 0)\r\n : AxisHelper.getBestNumberOfTicks(dataDomain[0], dataDomain[dataDomain.length - 1], [metaDataColumn], maxTicks, dataType.dateTime);\r\n let normalizedRange = AxisHelper.normalizeLinearDomain({ min: dataDomain[0], max: dataDomain[dataDomain.length - 1] });\r\n scalarDomain = [normalizedRange.min, normalizedRange.max];\r\n }\r\n\r\n if (isScalar && dataType.numeric && !dataType.dateTime) {\r\n scale = createNumericalScale(options.scaleType, pixelSpan, scalarDomain, dataType, outerPadding, bestTickCount, shouldClamp);\r\n }\r\n else if (isScalar && dataType.dateTime) {\r\n // Use of a linear scale, instead of a D3.time.scale, is intentional since we want\r\n // to control the formatting of the time values, since d3's implementation isn't\r\n // in accordance to our design.\r\n // scalarDomain: should already be in long-int time (via category.values[0].getTime())\r\n scale = createLinearScale(pixelSpan, scalarDomain, outerPadding, null, shouldClamp); // DO NOT PASS TICKCOUNT\r\n }\r\n else if (dataType.text || dataType.dateTime || dataType.numeric || dataType.bool) {\r\n scale = createOrdinalScale(pixelSpan, scalarDomain, categoryThickness ? outerPadding / categoryThickness : 0);\r\n bestTickCount = maxTicks === 0 ? 0\r\n : Math.min(\r\n scalarDomain.length,\r\n (pixelSpan - outerPadding * 2) / CartesianChart.MinOrdinalRectThickness);\r\n }\r\n else {\r\n debug.assertFail('unsupported dataType, something other than text or numeric');\r\n }\r\n }\r\n\r\n // vertical ordinal axis (e.g. categorical bar chart) does not need to reverse\r\n if (isVertical && isScalar) {\r\n scale.range(scale.range().reverse());\r\n }\r\n\r\n ColumnUtil.normalizeInfinityInScale(scale);\r\n\r\n return {\r\n scale: scale,\r\n bestTickCount: bestTickCount,\r\n usingDefaultDomain: usingDefaultDomain,\r\n };\r\n }\r\n\r\n export function createFormatter(\r\n scaleDomain: any[],\r\n dataDomain: any[],\r\n dataType,\r\n isScalar: boolean,\r\n formatString: string,\r\n bestTickCount: number,\r\n tickValues: any[],\r\n getValueFn: any,\r\n useTickIntervalForDisplayUnits: boolean = false,\r\n axisDisplayUnits?: number,\r\n axisPrecision?: number): IValueFormatter {\r\n\r\n let formatter: IValueFormatter;\r\n if (dataType.dateTime) {\r\n if (isScalar) {\r\n let value = new Date(scaleDomain[0]);\r\n let value2 = new Date(scaleDomain[1]);\r\n // datetime with only one value needs to pass the same value\r\n // (from the original dataDomain value, not the adjusted scaleDomain)\r\n // so formatting works correctly.\r\n if (bestTickCount === 1)\r\n value = value2 = new Date(dataDomain[0]);\r\n // this will ignore the formatString and create one based on the smallest non-zero portion of the values supplied.\r\n formatter = valueFormatter.create({\r\n format: formatString,\r\n value: value,\r\n value2: value2,\r\n tickCount: bestTickCount,\r\n });\r\n }\r\n else {\r\n // Use the model formatString for ordinal datetime\r\n formatter = valueFormatter.createDefaultFormatter(formatString, true);\r\n }\r\n }\r\n else {\r\n if (getValueFn == null && !isScalar) {\r\n debug.assertFail('getValueFn must be supplied for ordinal tickValues');\r\n }\r\n if (useTickIntervalForDisplayUnits && isScalar && tickValues.length > 1) {\r\n let value1 = axisDisplayUnits ? axisDisplayUnits : tickValues[1] - tickValues[0];\r\n\r\n let options: ValueFormatterOptions = {\r\n format: formatString,\r\n value: value1,\r\n value2: 0, //force tickInterval or display unit to be used\r\n allowFormatBeautification: true,\r\n };\r\n\r\n if (axisPrecision)\r\n options.precision = axisPrecision;\r\n else\r\n options.detectAxisPrecision = true;\r\n\r\n formatter = valueFormatter.create(options);\r\n }\r\n else {\r\n // do not use display units, just the basic value formatter\r\n // datetime is handled above, so we are ordinal and either boolean, numeric, or text.\r\n formatter = valueFormatter.createDefaultFormatter(formatString, true);\r\n }\r\n }\r\n\r\n return formatter;\r\n }\r\n \r\n /**\r\n * Format the linear tick labels or the category labels.\r\n */\r\n function formatAxisTickValues(\r\n axis: D3.Svg.Axis,\r\n tickValues: any[],\r\n formatter: IValueFormatter,\r\n dataType: ValueType,\r\n getValueFn?: (index: number, type: ValueType) => any) {\r\n\r\n let formattedTickValues = [];\r\n\r\n if (!getValueFn)\r\n getValueFn = data => data;\r\n\r\n if (formatter) {\r\n axis.tickFormat(d => formatter.format(getValueFn(d, dataType)));\r\n formattedTickValues = tickValues.map(d => formatter.format(getValueFn(d, dataType)));\r\n }\r\n else {\r\n formattedTickValues = tickValues.map((d) => getValueFn(d, dataType));\r\n }\r\n\r\n return formattedTickValues;\r\n }\r\n\r\n export function getMinTickValueInterval(formatString: string, columnType: ValueType, is100Pct?: boolean): number {\r\n let isCustomFormat = formatString && !powerbi.NumberFormat.isStandardFormat(formatString);\r\n if (isCustomFormat) {\r\n let precision = powerbi.NumberFormat.getCustomFormatMetadata(formatString, true /*calculatePrecision*/).precision;\r\n if (formatString.indexOf('%') > -1)\r\n precision += 2; //percent values are multiplied by 100 during formatting\r\n return Math.pow(10, -precision);\r\n }\r\n else if (is100Pct)\r\n return 0.01;\r\n else if (columnType.integer)\r\n return 1;\r\n\r\n return 0;\r\n }\r\n\r\n function createScalarDomain(data: CartesianSeries[], userMin: DataViewPropertyValue, userMax: DataViewPropertyValue, axisType: ValueTypeDescriptor): number[] {\r\n debug.assertValue(data, 'data');\r\n if (data.length === 0) {\r\n return null;\r\n }\r\n\r\n let defaultMinX = <number>d3.min(data,(kv) => { return d3.min(kv.data, d => { return d.categoryValue; }); });\r\n let defaultMaxX = <number>d3.max(data,(kv) => { return d3.max(kv.data, d => { return d.categoryValue; }); });\r\n\r\n return combineDomain([userMin, userMax], [defaultMinX, defaultMaxX]);\r\n }\r\n\r\n /**\r\n * Creates a [min,max] from your Cartiesian data values.\r\n * \r\n * @param data The series array of CartesianDataPoints.\r\n * @param includeZero Columns and bars includeZero, line and scatter do not.\r\n */\r\n export function createValueDomain(data: CartesianSeries[], includeZero: boolean): number[] {\r\n debug.assertValue(data, 'data');\r\n if (data.length === 0)\r\n return null;\r\n\r\n let minY = <number>d3.min(data,(kv) => { return d3.min(kv.data, d => { return d.value; }); });\r\n let maxY = <number>d3.max(data,(kv) => { return d3.max(kv.data, d => { return d.value; }); });\r\n\r\n if (includeZero)\r\n return [Math.min(minY, 0), Math.max(maxY, 0)];\r\n return [minY, maxY];\r\n }\r\n\r\n function createOrdinalDomain(data: CartesianSeries[]): number[]{\r\n if (_.isEmpty(data))\r\n return [];\r\n\r\n return data[0].data.map(d => d.categoryIndex);\r\n }\r\n\r\n export module LabelLayoutStrategy {\r\n export function willLabelsFit(\r\n axisProperties: IAxisProperties,\r\n availableWidth: number,\r\n textMeasurer: ITextAsSVGMeasurer,\r\n properties: TextProperties) {\r\n\r\n let labels = axisProperties.values;\r\n if (labels.length === 0)\r\n return false;\r\n\r\n let labelMaxWidth = axisProperties.xLabelMaxWidth !== undefined\r\n ? axisProperties.xLabelMaxWidth\r\n : availableWidth / labels.length;\r\n\r\n return !labels.some(d => {\r\n properties.text = d;\r\n return textMeasurer(properties) > labelMaxWidth;\r\n });\r\n }\r\n\r\n export function willLabelsWordBreak(\r\n axisProperties: IAxisProperties,\r\n margin: IMargin,\r\n availableWidth: number,\r\n textWidthMeasurer: ITextAsSVGMeasurer,\r\n textHeightMeasurer: ITextAsSVGMeasurer,\r\n textTruncator: (properties: TextProperties, maxWidth: number) => string,\r\n properties: TextProperties) {\r\n let labels = axisProperties.values;\r\n let labelMaxWidth = axisProperties.xLabelMaxWidth !== undefined\r\n ? axisProperties.xLabelMaxWidth\r\n : availableWidth / labels.length;\r\n let maxRotatedLength = margin.bottom / DefaultRotation.sine;\r\n let height = textHeightMeasurer(properties);\r\n let maxNumLines = Math.max(1, Math.floor(margin.bottom / height)); // TODO: not taking axis label into account\r\n\r\n if (labels.length === 0)\r\n return false;\r\n\r\n // If no break character and exceeds max width, word breaking will not work, return false\r\n let mustRotate = labels.some(label => {\r\n // Detect must rotate and return immediately\r\n properties.text = label;\r\n return !jsCommon.WordBreaker.hasBreakers(label) && textWidthMeasurer(properties) > labelMaxWidth;\r\n });\r\n if (mustRotate)\r\n return false;\r\n\r\n let moreWordBreakChars = labels.filter((label, index: number) => {\r\n // ...otherwise compare rotation versus word breaking\r\n let allowedLengthProjectedOnXAxis =\r\n // Left margin is the width of Y axis.\r\n margin.left\r\n // There could be a padding before the first category.\r\n + axisProperties.outerPadding\r\n // Align the rotated text's top right corner to the middle of the corresponding category first.\r\n + axisProperties.categoryThickness * (index + 0.5)\r\n // Subtracting the left padding space from the allowed length\r\n - LeftPadding;\r\n let allowedLength = allowedLengthProjectedOnXAxis / DefaultRotation.cosine;\r\n let rotatedLength = Math.min(allowedLength, maxRotatedLength);\r\n \r\n // Which shows more characters? Rotated or maxNumLines truncated to labelMaxWidth?\r\n let wordBreakChars = jsCommon.WordBreaker.splitByWidth(label, properties, textWidthMeasurer, labelMaxWidth, maxNumLines, textTruncator).join('');\r\n properties.text = label;\r\n let rotateChars = textTruncator(properties, rotatedLength);\r\n\r\n return TextUtil.removeEllipses(wordBreakChars).length >= TextUtil.removeEllipses(rotateChars).length;\r\n });\r\n\r\n // If majority show more with word rotated, use word break strategy\r\n return moreWordBreakChars.length > Math.floor(labels.length / 2);\r\n }\r\n\r\n export const DefaultRotation = {\r\n sine: Math.sin(Math.PI * (35 / 180)),\r\n cosine: Math.cos(Math.PI * (35 / 180)),\r\n tangent: Math.tan(Math.PI * (35 / 180)),\r\n transform: 'rotate(-35)',\r\n dy: '-0.5em',\r\n };\r\n\r\n export const DefaultRotationWithScrollbar = {\r\n sine: Math.sin(Math.PI * (90 / 180)),\r\n cosine: Math.cos(Math.PI * (90 / 180)),\r\n tangent: Math.tan(Math.PI * (90 / 180)),\r\n transform: 'rotate(-90)',\r\n dy: '-0.8em',\r\n };\r\n\r\n export function rotate(\r\n text: D3.Selection,\r\n maxBottomMargin: number,\r\n svgEllipsis: (textElement: SVGTextElement, maxWidth: number) => void,\r\n needRotate: boolean,\r\n needEllipsis: boolean,\r\n axisProperties: IAxisProperties,\r\n margin: IMargin,\r\n scrollbarVisible: boolean) {\r\n\r\n let rotatedLength;\r\n let defaultRotation: any;\r\n\r\n if (scrollbarVisible) \r\n defaultRotation = DefaultRotationWithScrollbar; \r\n else\r\n defaultRotation = DefaultRotation;\r\n\r\n if (needRotate) {\r\n rotatedLength = maxBottomMargin / defaultRotation.sine;\r\n }\r\n\r\n text.each(function () {\r\n let text = d3.select(this);\r\n if (needRotate) {\r\n let textContentIndex = axisProperties.values.indexOf(this.textContent);\r\n let allowedLengthProjectedOnXAxis =\r\n // Left margin is the width of Y axis.\r\n margin.left\r\n // There could be a padding before the first category.\r\n + axisProperties.outerPadding\r\n // Align the rotated text's top right corner to the middle of the corresponding category first.\r\n + axisProperties.categoryThickness * (textContentIndex + 0.5);\r\n\r\n // Subtracting the left padding space from the allowed length.\r\n if (!scrollbarVisible)\r\n allowedLengthProjectedOnXAxis -= LeftPadding;\r\n\r\n // Truncate if scrollbar is visible or rotatedLength exceeds allowedLength\r\n let allowedLength = allowedLengthProjectedOnXAxis / defaultRotation.cosine;\r\n if (scrollbarVisible || needEllipsis || (allowedLength < rotatedLength)) {\r\n svgEllipsis(text[0][0], Math.min(allowedLength, rotatedLength));\r\n }\r\n\r\n text.style('text-anchor', 'end')\r\n .attr({\r\n 'dx': '-0.5em',\r\n 'dy': defaultRotation.dy,\r\n 'transform': defaultRotation.transform\r\n });\r\n } else {\r\n text.style('text-anchor', 'middle')\r\n .attr(\r\n {\r\n 'dx': '0em',\r\n 'dy': '1em',\r\n 'transform': 'rotate(0)'\r\n });\r\n }\r\n });\r\n }\r\n\r\n export function wordBreak(\r\n text: D3.Selection,\r\n axisProperties: IAxisProperties,\r\n maxHeight: number\r\n ) {\r\n let allowedLength = axisProperties.xLabelMaxWidth;\r\n\r\n text.each(function () {\r\n let node = d3.select(this);\r\n\r\n // Reset style of text node\r\n node\r\n .style('text-anchor', 'middle')\r\n .attr({\r\n 'dx': '0em',\r\n 'dy': '1em',\r\n 'transform': 'rotate(0)'\r\n });\r\n\r\n TextMeasurementService.wordBreak(this, allowedLength, maxHeight);\r\n });\r\n }\r\n\r\n export function clip(text: D3.Selection, availableWidth: number, svgEllipsis: (textElement: SVGTextElement, maxWidth: number) => void) {\r\n if (text.size() === 0)\r\n return;\r\n\r\n text.each(function () {\r\n let text = d3.select(this);\r\n svgEllipsis(text[0][0], availableWidth);\r\n });\r\n }\r\n }\r\n\r\n export function createOrdinalScale(pixelSpan: number, dataDomain: any[], outerPaddingRatio: number = 0): D3.Scale.OrdinalScale {\r\n debug.assert(outerPaddingRatio >= 0 && outerPaddingRatio < 4, 'outerPaddingRatio should be a value between zero and four');\r\n let scale = d3.scale.ordinal()\r\n /* Avoid using rangeRoundBands here as it is adding some extra padding to the axis*/\r\n .rangeBands([0, pixelSpan], CartesianChart.InnerPaddingRatio, outerPaddingRatio)\r\n .domain(dataDomain);\r\n return scale;\r\n }\r\n\r\n export function isLogScalePossible(domain: any[], axisType?: ValueType): boolean {\r\n if (domain == null)\r\n return false;\r\n if (isDateTime(axisType))\r\n return false;\r\n\r\n return (domain[0] > 0 && domain[1] > 0) || (domain[0] < 0 && domain[1] < 0);//doman must exclude 0\r\n }\r\n\r\n //this function can return different scales e.g. log, linear\r\n // NOTE: export only for testing, do not access directly\r\n export function createNumericalScale(\r\n axisScaleType: string,\r\n pixelSpan: number,\r\n dataDomain: any[],\r\n dataType: ValueType,\r\n outerPadding: number = 0,\r\n niceCount?: number,\r\n shouldClamp?: boolean): D3.Scale.GenericScale<any> {\r\n \r\n if (axisScaleType === axisScale.log && isLogScalePossible(dataDomain,dataType)) {\r\n return createLogScale(pixelSpan, dataDomain, outerPadding, niceCount);\r\n }\r\n else {\r\n return createLinearScale(pixelSpan, dataDomain, outerPadding, niceCount, shouldClamp);\r\n } \r\n }\r\n\r\n function createLogScale(pixelSpan: number, dataDomain: any[], outerPadding: number = 0, niceCount?: number): D3.Scale.LinearScale {\r\n debug.assert(isLogScalePossible(dataDomain), \"dataDomain cannot include 0\");\r\n let scale = d3.scale.log()\r\n .range([outerPadding, pixelSpan - outerPadding])\r\n .domain([dataDomain[0], dataDomain[1]])\r\n .clamp(true);\r\n \r\n if (niceCount) {\r\n scale.nice(niceCount);\r\n }\r\n\r\n return scale;\r\n }\r\n\r\n // NOTE: export only for testing, do not access directly\r\n export function createLinearScale(pixelSpan: number, dataDomain: any[], outerPadding: number = 0, niceCount?: number, shouldClamp?: boolean): D3.Scale.LinearScale {\r\n let scale = d3.scale.linear()\r\n .range([outerPadding, pixelSpan - outerPadding])\r\n .domain([dataDomain[0], dataDomain[1]])\r\n .clamp(shouldClamp);\r\n // .nice(undefined) still modifies the scale boundaries, and for datetime this messes things up.\r\n // we use millisecond ticks since epoch for datetime, so we don't want any \"nice\" with numbers like 17398203392.\r\n if (niceCount) {\r\n scale.nice(niceCount);\r\n }\r\n return scale;\r\n }\r\n \r\n export function getRangeForColumn(sizeColumn: DataViewValueColumn): NumberRange {\r\n let result: NumberRange = {};\r\n if (sizeColumn) {\r\n result.min = sizeColumn.min == null\r\n ? sizeColumn.minLocal == null ? d3.min(sizeColumn.values) : sizeColumn.minLocal\r\n : sizeColumn.min;\r\n result.max = sizeColumn.max == null\r\n ? sizeColumn.maxLocal == null ? d3.max(sizeColumn.values) : sizeColumn.maxLocal\r\n : sizeColumn.max;\r\n }\r\n return result;\r\n }\r\n \r\n /**\r\n * Set customized domain, but don't change when nothing is set\r\n */\r\n export function applyCustomizedDomain(customizedDomain, forcedDomain: any[]): any[] {\r\n let domain: any[] = [undefined, undefined];\r\n\r\n if (forcedDomain && forcedDomain.length === 2) {\r\n domain = [forcedDomain[0], forcedDomain[1]];\r\n }\r\n\r\n if (customizedDomain && customizedDomain.length === 2) {\r\n if (customizedDomain[0] != null) {\r\n domain[0] = customizedDomain[0];\r\n }\r\n if (customizedDomain[1] != null) {\r\n domain[1] = customizedDomain[1];\r\n }\r\n }\r\n\r\n if (domain[0] == null && domain[1] == null) {\r\n return forcedDomain;//return untouched object\r\n }\r\n\r\n //do extra check to see if the user input was valid with the merged axis values.\r\n if (domain[0] != null && domain[1] != null) {\r\n if (domain[0] > domain[1]) {\r\n return forcedDomain;\r\n }\r\n }\r\n\r\n return domain;\r\n }\r\n \r\n /**\r\n * Combine the forced domain with the actual domain if one of the values was set.\r\n */\r\n export function combineDomain(forcedDomain: any[], domain: any[]): any[] {\r\n let combinedDomain: any[] = domain ? [domain[0], domain[1]] : [];\r\n if (forcedDomain && forcedDomain.length === 2) {\r\n if (forcedDomain[0] != null) {\r\n combinedDomain[0] = forcedDomain[0];\r\n }\r\n if (forcedDomain[1] != null) {\r\n combinedDomain[1] = forcedDomain[1];\r\n }\r\n if (combinedDomain[0] > combinedDomain[1]) {\r\n combinedDomain = domain;//this is invalid, so take the original domain\r\n }\r\n }\r\n return combinedDomain;\r\n }\r\n\r\n export function createAxisLabel(properties: DataViewObject, label: string, unitType: string, y2: boolean = false): string {\r\n let propertyName = y2 ? 'secAxisStyle' : 'axisStyle';\r\n if (!properties || !properties[propertyName]) {\r\n return label;\r\n }\r\n\r\n let modifiedLabel;\r\n if (properties[propertyName] === axisStyle.showBoth) {\r\n modifiedLabel = label + ' (' + unitType + ')';//todo: localize\r\n }\r\n else if (properties[propertyName] === axisStyle.showUnitOnly) {\r\n modifiedLabel = unitType;\r\n }\r\n else {\r\n modifiedLabel = label;\r\n }\r\n return modifiedLabel;\r\n }\r\n\r\n export function scaleShouldClamp(combinedDomain: any[], domain: any[]): boolean {\r\n if (!combinedDomain || !domain || combinedDomain.length < 2 || domain.length < 2)\r\n return false;\r\n //when the start or end is different, clamp it\r\n return combinedDomain[0] !== domain[0] || combinedDomain[1] !== domain[1];\r\n }\r\n\r\n export function normalizeNonFiniteNumber(value: number): number {\r\n if (isNaN(value))\r\n return null;\r\n else if (value === Number.POSITIVE_INFINITY)\r\n return Number.MAX_VALUE;\r\n else if (value === Number.NEGATIVE_INFINITY)\r\n return -Number.MAX_VALUE;\r\n\r\n return value;\r\n }\r\n\r\n export function powerOfTen(d:any): boolean {\r\n return d / Math.pow(10, Math.ceil(Math.log(d) / Math.LN10 - 1e-12)) === 1;\r\n }\r\n }\r\n}","/*\r\n* Power BI Visualizations\r\n*\r\n* Copyright (c) Microsoft Corporation\r\n* All rights reserved. \r\n* MIT License\r\n*\r\n* Permission is hereby granted, free of charge, to any person obtaining a copy\r\n* of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n* in the Software without restriction, including without limitation the rights\r\n* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n* copies of the Software, and to permit persons to whom the Software is\r\n* furnished to do so, subject to the following conditions:\r\n* \r\n* The above copyright notice and this permission notice shall be included in \r\n* all copies or substantial portions of the Software.\r\n* \r\n* THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n* THE SOFTWARE.\r\n*/\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\nmodule powerbi.visuals {\r\n export module ShapeFactory {\r\n\r\n export module ShapeFactoryConsts {\r\n export const PaddingConstRatio: number = 0.01;\r\n export const TrianglePaddingConstRatio: number = 0.15;\r\n export const TriangleEndPaddingConstRatio: number = 0.85;\r\n export const ShapeConstRatio: number = 1.0 - (ShapeFactoryConsts.PaddingConstRatio * 2);\r\n export const SmallPaddingConstValue: number = 10;\r\n export const OvalRadiusConst: number = 2;\r\n export const OvalRadiusConstPadding: number = 0.2;\r\n export const ArrowLeftHeadPoint: Point = { x : 0.05, y : 0.42 };\r\n export const ArrowMiddleHeadPoint: Point = { x: 0.5, y: 0.016 };\r\n export const ArrowRightHeadPoint: Point = { x: 0.95, y: 0.42 };\r\n export const ArrowRightMiddleHeadPoint: Point = { x: 0.764, y: 0.42 };\r\n export const ArrowBottomRightPoint: Point = { x: 0.764, y: 0.993 }; \r\n export const ArrowBottomLeftPoint: Point = { x: 0.246, y: 0.993 };\r\n export const ArrowLeftMiddleHeadPoint: Point = { x: 0.246, y: 0.42 };\r\n }\r\n\r\n /** this function creates a rectangle svg */\r\n export function createRectangle(data: BasicShapeData, viewportHeight: number, viewportWidth: number, selectedElement: D3.Selection, degrees: number): void {\r\n let x = (viewportWidth * ShapeFactoryConsts.PaddingConstRatio) + (data.lineWeight / 2);\r\n let y = (viewportHeight * ShapeFactoryConsts.PaddingConstRatio) + (data.lineWeight / 2);\r\n let width = (viewportWidth * ShapeFactoryConsts.ShapeConstRatio) - (data.lineWeight);\r\n let height = (viewportHeight * ShapeFactoryConsts.ShapeConstRatio) - (data.lineWeight);\r\n let attrs = { x: x, y: y, width: width, height: height, rx: data.roundEdge, ry: data.roundEdge };\r\n let scale = getScale(width, height, degrees);\r\n\r\n createShape(data, viewportHeight, viewportWidth, selectedElement, degrees, scale, 'rect', attrs);\r\n }\r\n\r\n /** this function creates a oval svg */\r\n export function createOval(data: BasicShapeData, viewportHeight: number, viewportWidth: number, selectedElement: D3.Selection, degrees: number): void {\r\n let widthForCircle = (viewportWidth / ShapeFactoryConsts.OvalRadiusConst).toString();\r\n let heightForCircle = (viewportHeight / ShapeFactoryConsts.OvalRadiusConst).toString();\r\n let radiusXForCircle = ((viewportWidth / (ShapeFactoryConsts.OvalRadiusConst + ShapeFactoryConsts.OvalRadiusConstPadding)) - data.lineWeight);\r\n let radiusYForCircle = ((viewportHeight / (ShapeFactoryConsts.OvalRadiusConst + ShapeFactoryConsts.OvalRadiusConstPadding))- data.lineWeight);\r\n let attrs = { cx: widthForCircle, cy: heightForCircle, rx: radiusXForCircle, ry: radiusYForCircle };\r\n\r\n let scale = getScale(viewportWidth, viewportHeight, degrees);\r\n\r\n createShape(data, viewportHeight, viewportWidth, selectedElement, degrees, scale, 'ellipse', attrs);\r\n }\r\n\r\n /** this function creates a line svg */\r\n export function createLine(data: BasicShapeData, viewportHeight: number, viewportWidth: number, selectedElement: D3.Selection, degrees: number): void {\r\n let x1, y1, x2, y2;\r\n let width = (viewportWidth - ShapeFactoryConsts.SmallPaddingConstValue) - ShapeFactoryConsts.SmallPaddingConstValue;\r\n let height = (viewportHeight - ShapeFactoryConsts.SmallPaddingConstValue) - ShapeFactoryConsts.SmallPaddingConstValue;\r\n\r\n let ratio;\r\n if (degrees <= 45) {\r\n ratio = degrees / 90;\r\n\r\n x1 = viewportWidth / 2 + width * ratio;\r\n y1 = ShapeFactoryConsts.SmallPaddingConstValue;\r\n x2 = viewportWidth / 2 - width * ratio;\r\n y2 = (viewportHeight - ShapeFactoryConsts.SmallPaddingConstValue);\r\n } else if (degrees <= 135) {\r\n ratio = (degrees - 45) / 90;\r\n\r\n x1 = (viewportWidth - ShapeFactoryConsts.SmallPaddingConstValue);\r\n y1 = ShapeFactoryConsts.SmallPaddingConstValue + height * ratio;\r\n x2 = ShapeFactoryConsts.SmallPaddingConstValue;\r\n y2 = (viewportHeight - ShapeFactoryConsts.SmallPaddingConstValue) - height * ratio;\r\n } else if (degrees <= 225) {\r\n ratio = (degrees - 135) / 90;\r\n\r\n x1 = (viewportWidth - ShapeFactoryConsts.SmallPaddingConstValue) - width * ratio;\r\n y1 = (viewportHeight - ShapeFactoryConsts.SmallPaddingConstValue);\r\n x2 = ShapeFactoryConsts.SmallPaddingConstValue + width * ratio;\r\n y2 = ShapeFactoryConsts.SmallPaddingConstValue;\r\n } else if (degrees <= 315) {\r\n ratio = (degrees - 225) / 90;\r\n\r\n x1 = ShapeFactoryConsts.SmallPaddingConstValue;\r\n y1 = (viewportHeight - ShapeFactoryConsts.SmallPaddingConstValue) - height * ratio;\r\n x2 = (viewportWidth - ShapeFactoryConsts.SmallPaddingConstValue);\r\n y2 = ShapeFactoryConsts.SmallPaddingConstValue + height * ratio;\r\n } else if (degrees <= 360) {\r\n ratio = (degrees - 315) / 90;\r\n\r\n x1 = ShapeFactoryConsts.SmallPaddingConstValue + width * ratio;\r\n y1 = ShapeFactoryConsts.SmallPaddingConstValue;\r\n x2 = (viewportWidth - ShapeFactoryConsts.SmallPaddingConstValue) - width * ratio;\r\n y2 = (viewportHeight - ShapeFactoryConsts.SmallPaddingConstValue);\r\n }\r\n\r\n // create the inner path with the wanted shape\r\n selectedElement\r\n .append('svg')\r\n .attr({\r\n width: viewportWidth,\r\n height: viewportHeight\r\n })\r\n .append('line')\r\n .attr({\r\n x1: x1,\r\n y1: y1,\r\n x2: x2,\r\n y2: y2,\r\n })\r\n .style({\r\n 'vector-effect': 'non-scaling-stroke',\r\n 'stroke-width': data.lineWeight + 'px',\r\n 'stroke-opacity': data.lineTransparency / 100,\r\n 'stroke': data.lineColor\r\n });\r\n }\r\n\r\n /** this function creates a arrow svg */\r\n export function createUpArrow(data: BasicShapeData, viewportHeight: number, viewportWidth: number, selectedElement: D3.Selection, degrees: number): void {\r\n let lineWeight = data.lineWeight;\r\n let viewportHeightWeight = viewportHeight - lineWeight;\r\n let viewportWidthWeight = viewportWidth - lineWeight;\r\n\r\n let arrowPoints = [\r\n { 'x': (viewportWidthWeight * ShapeFactoryConsts.ArrowLeftHeadPoint.x).toString(), 'y': (viewportHeightWeight * ShapeFactoryConsts.ArrowLeftHeadPoint.y).toString() },\r\n { 'x': (viewportWidthWeight * ShapeFactoryConsts.ArrowMiddleHeadPoint.x).toString(), 'y': (viewportHeightWeight * ShapeFactoryConsts.ArrowMiddleHeadPoint.y).toString() },\r\n { 'x': (viewportWidthWeight * ShapeFactoryConsts.ArrowRightHeadPoint.x).toString(), 'y': (viewportHeightWeight * ShapeFactoryConsts.ArrowRightHeadPoint.y).toString() },\r\n { 'x': (viewportWidthWeight * ShapeFactoryConsts.ArrowRightMiddleHeadPoint.x).toString(), 'y': (viewportHeightWeight * ShapeFactoryConsts.ArrowRightMiddleHeadPoint.y).toString() },\r\n { 'x': (viewportWidthWeight * ShapeFactoryConsts.ArrowBottomRightPoint.x).toString(), 'y': (viewportHeightWeight * ShapeFactoryConsts.ArrowBottomRightPoint.y).toString() },\r\n { 'x': (viewportWidthWeight * ShapeFactoryConsts.ArrowBottomLeftPoint.x).toString(), 'y': (viewportHeightWeight * ShapeFactoryConsts.ArrowBottomLeftPoint.y).toString() },\r\n { 'x': (viewportWidthWeight * ShapeFactoryConsts.ArrowLeftMiddleHeadPoint.x).toString(), 'y': (viewportHeightWeight * ShapeFactoryConsts.ArrowLeftMiddleHeadPoint.y).toString() },\r\n ];\r\n\r\n // create the inner path with the wanted shape\r\n createPathFromArray(data, arrowPoints, selectedElement, viewportHeight, viewportWidth, degrees);\r\n }\r\n\r\n /** this function creates a triangle svg */\r\n export function createTriangle(data: BasicShapeData, viewportHeight: number, viewportWidth: number, selectedElement: D3.Selection, degrees: number): void {\r\n let lineWeight = data.lineWeight;\r\n // remove the basic line weight\r\n if (lineWeight > 3) {\r\n lineWeight -= 3;\r\n }\r\n\r\n let firstPointX = ((viewportWidth + lineWeight) * ShapeFactoryConsts.TrianglePaddingConstRatio);\r\n let firstPointY = (viewportHeight - ShapeFactoryConsts.SmallPaddingConstValue - lineWeight) < 0 ?\r\n (viewportHeight - ShapeFactoryConsts.SmallPaddingConstValue) : (viewportHeight - ShapeFactoryConsts.SmallPaddingConstValue - lineWeight);\r\n let secondPointY = ((viewportHeight + lineWeight) * ShapeFactoryConsts.TrianglePaddingConstRatio);\r\n let thirdPointX = ((viewportWidth - lineWeight) * ShapeFactoryConsts.TriangleEndPaddingConstRatio) < 0 ?\r\n (viewportWidth * ShapeFactoryConsts.TriangleEndPaddingConstRatio) : ((viewportWidth - lineWeight) * ShapeFactoryConsts.TriangleEndPaddingConstRatio);\r\n let thirdPointY = (viewportHeight - ShapeFactoryConsts.SmallPaddingConstValue - lineWeight) < 0 ?\r\n (viewportHeight - ShapeFactoryConsts.SmallPaddingConstValue) : (viewportHeight - lineWeight - ShapeFactoryConsts.SmallPaddingConstValue);\r\n let secondPointX = ((firstPointX + thirdPointX) / 2);\r\n\r\n if (firstPointX < 10) {\r\n firstPointX = ShapeFactoryConsts.SmallPaddingConstValue;\r\n }\r\n\r\n if (secondPointY < 10) {\r\n secondPointY = ShapeFactoryConsts.SmallPaddingConstValue;\r\n }\r\n\r\n let trianglePoints = [\r\n { 'x': firstPointX, 'y': firstPointY },\r\n { 'x': secondPointX, 'y': secondPointY },\r\n { 'x': thirdPointX, 'y': thirdPointY },\r\n ];\r\n\r\n createPathFromArray(data, trianglePoints, selectedElement, viewportHeight, viewportWidth, degrees);\r\n }\r\n\r\n /** this funcion adds a path to an svg element from an array of points (x,y) */\r\n function createPathFromArray(data: BasicShapeData, points: Object[], selectedElement: D3.Selection, viewportHeight: number, viewportWidth: number, degrees: number): void {\r\n let lineFunction = d3.svg.line()\r\n .x(function (d) { return d.x; })\r\n .y(function (d) { return d.y; })\r\n .interpolate('linear');\r\n let attrs = { d: lineFunction(points) + ' Z' };\r\n\r\n let scale = getScale(viewportWidth, viewportHeight, degrees);\r\n\r\n createShape(data, viewportHeight, viewportWidth, selectedElement, degrees, scale, 'path', attrs);\r\n }\r\n\r\n function createShape(data: BasicShapeData, viewportHeight: number, viewportWidth: number, selectedElement: D3.Selection, degrees: number, scale: number, shapeType: string, shapeAttrs: Object): void {\r\n selectedElement\r\n .append('div')\r\n .style({\r\n 'transform': 'rotate(' + degrees + 'deg) scale(' + scale + ')',\r\n 'transform-origin': 'center',\r\n // for testing with phantomjs we need the webkit prefix\r\n '-webkit-transform': 'rotate(' + degrees + 'deg) scale(' + scale + ')',\r\n '-webkit-transform-origin': 'center',\r\n 'width': viewportWidth + 'px',\r\n 'height': viewportHeight + 'px'\r\n })\r\n .append('svg')\r\n .attr({\r\n width: viewportWidth,\r\n height: viewportHeight\r\n })\r\n .append(shapeType)\r\n .attr(shapeAttrs)\r\n .style({\r\n 'vector-effect': 'non-scaling-stroke',\r\n 'stroke-width': data.lineWeight + 'px',\r\n 'stroke': data.lineColor,\r\n 'stroke-opacity': data.lineTransparency / 100,\r\n 'fill': data.fillColor,\r\n 'fill-opacity': data.showFill === true ? data.shapeTransparency / 100 : 0\r\n });\r\n }\r\n\r\n // this function return the scale to add to the shape. \r\n // it calculate it by the ratio of the original shape's diagonal and the shape's diagonal after rotate (the maximum diagonal that still fit to the container).\r\n // it calculate the shape's diagonal by the rotate angle.\r\n function getScale(width: number, height: number, degrees: number): number {\r\n let originalWidth = width;\r\n let originalHeight = height;\r\n let offsetAngle = Math.atan2(height, width);\r\n let originalFactor = Math.sqrt(Math.pow(height, 2) + Math.pow(width, 2));\r\n let radians = (degrees / 180) * Math.PI;\r\n\r\n if (width >= height) {\r\n if (degrees < 90) {\r\n radians += offsetAngle;\r\n } else if (degrees < 180) {\r\n radians -= offsetAngle;\r\n } else if (degrees < 270) {\r\n radians += offsetAngle;\r\n } else {\r\n radians -= offsetAngle;\r\n }\r\n\r\n return (originalHeight / Math.abs(Math.sin(radians))) / originalFactor;\r\n }\r\n else {\r\n if (degrees < 90) {\r\n radians -= offsetAngle;\r\n } else if (degrees < 180) {\r\n radians += offsetAngle;\r\n } else if (degrees < 270) {\r\n radians -= offsetAngle;\r\n } else {\r\n radians += offsetAngle;\r\n }\r\n\r\n return (originalWidth / Math.abs(Math.cos(radians))) / originalFactor;\r\n }\r\n }\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n export module CartesianHelper {\r\n export function getCategoryAxisProperties(dataViewMetadata: DataViewMetadata, axisTitleOnByDefault?: boolean): DataViewObject {\r\n let toReturn: DataViewObject = {};\r\n if (!dataViewMetadata)\r\n return toReturn;\r\n\r\n let objects = dataViewMetadata.objects;\r\n\r\n if (objects) {\r\n let categoryAxisObject = objects['categoryAxis'];\r\n\r\n if (categoryAxisObject) {\r\n toReturn = {\r\n show: categoryAxisObject['show'],\r\n axisType: categoryAxisObject['axisType'],\r\n axisScale: categoryAxisObject['axisScale'],\r\n start: categoryAxisObject['start'],\r\n end: categoryAxisObject['end'],\r\n showAxisTitle: categoryAxisObject['showAxisTitle'] == null ? axisTitleOnByDefault : categoryAxisObject['showAxisTitle'],\r\n axisStyle: categoryAxisObject['axisStyle'],\r\n labelColor: categoryAxisObject['labelColor'],\r\n labelDisplayUnits: categoryAxisObject['labelDisplayUnits'],\r\n labelPrecision: categoryAxisObject['labelPrecision'],\r\n };\r\n }\r\n }\r\n return toReturn;\r\n }\r\n\r\n export function getValueAxisProperties(dataViewMetadata: DataViewMetadata, axisTitleOnByDefault?: boolean): DataViewObject {\r\n let toReturn: DataViewObject = {};\r\n if (!dataViewMetadata)\r\n return toReturn;\r\n\r\n let objects = dataViewMetadata.objects;\r\n\r\n if (objects) {\r\n let valueAxisObject = objects['valueAxis'];\r\n if (valueAxisObject) {\r\n toReturn = {\r\n show: valueAxisObject['show'],\r\n position: valueAxisObject['position'],\r\n axisScale: valueAxisObject['axisScale'],\r\n start: valueAxisObject['start'],\r\n end: valueAxisObject['end'],\r\n showAxisTitle: valueAxisObject['showAxisTitle'] == null ? axisTitleOnByDefault : valueAxisObject['showAxisTitle'],\r\n axisStyle: valueAxisObject['axisStyle'],\r\n labelColor: valueAxisObject['labelColor'],\r\n labelDisplayUnits: valueAxisObject['labelDisplayUnits'],\r\n labelPrecision: valueAxisObject['labelPrecision'],\r\n secShow: valueAxisObject['secShow'],\r\n secPosition: valueAxisObject['secPosition'],\r\n secAxisScale: valueAxisObject['secAxisScale'],\r\n secStart: valueAxisObject['secStart'],\r\n secEnd: valueAxisObject['secEnd'],\r\n secShowAxisTitle: valueAxisObject['secShowAxisTitle'],\r\n secAxisStyle: valueAxisObject['secAxisStyle'],\r\n secLabelColor: valueAxisObject['secLabelColor'],\r\n secLabelDisplayUnits: valueAxisObject['secLabelDisplayUnits'],\r\n secLabelPrecision: valueAxisObject['secLabelPrecision'],\r\n };\r\n }\r\n }\r\n return toReturn;\r\n } \r\n \r\n export function isScalar(isScalar: boolean, xAxisCardProperties: DataViewObject): boolean {\r\n if (isScalar) {\r\n //now check what the user wants\r\n isScalar = xAxisCardProperties && xAxisCardProperties['axisType'] ? xAxisCardProperties['axisType'] === axisType.scalar : true;\r\n }\r\n return isScalar;\r\n }\r\n\r\n export function getPrecision(precision: DataViewPropertyValue): number {\r\n if (precision != null) {\r\n if (precision < 0) {\r\n return 0;\r\n }\r\n return <number>precision;\r\n }\r\n return null;\r\n }\r\n\r\n export function lookupXValue(data: CartesianData, index: number, type: ValueType, isScalar: boolean): any {\r\n debug.assertValue(data, 'data');\r\n debug.assertValue(type, 'type');\r\n\r\n let isDateTime = AxisHelper.isDateTime(type);\r\n\r\n if (isScalar) {\r\n if (isDateTime)\r\n return new Date(index);\r\n\r\n // index is the numeric value\r\n return index;\r\n }\r\n\r\n if (type.text) {\r\n debug.assert(index < data.categories.length, 'category index out of range');\r\n return data.categories[index];\r\n }\r\n\r\n if (data && data.series && data.series.length > 0) {\r\n let firstSeries = data.series[0];\r\n if (firstSeries) {\r\n let seriesValues = firstSeries.data;\r\n if (seriesValues) {\r\n if (data.hasHighlights)\r\n index = index * 2;\r\n let dataAtIndex = seriesValues[index];\r\n if (dataAtIndex) {\r\n if (isDateTime && dataAtIndex.categoryValue != null)\r\n return new Date(dataAtIndex.categoryValue);\r\n return dataAtIndex.categoryValue;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return index;\r\n }\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n import SQExprShortSerializer = data.SQExprShortSerializer;\r\n\r\n export class ColorHelper {\r\n private fillProp: DataViewObjectPropertyIdentifier;\r\n private defaultDataPointColor: string;\r\n private colors: IDataColorPalette;\r\n private defaultColorScale: IColorScale;\r\n\r\n constructor(colors: IDataColorPalette, fillProp: DataViewObjectPropertyIdentifier, defaultDataPointColor?: string) {\r\n this.colors = colors;\r\n this.fillProp = fillProp;\r\n this.defaultDataPointColor = defaultDataPointColor;\r\n this.defaultColorScale = colors.getNewColorScale();\r\n }\r\n\r\n /**\r\n * Gets the color for the given series value.\r\n * If no explicit color or default color has been set then the color is\r\n * allocated from the color scale for this series.\r\n */\r\n public getColorForSeriesValue(objects: DataViewObjects, fieldIds: powerbi.data.ISQExpr[], value: string): string {\r\n return (this.fillProp && DataViewObjects.getFillColor(objects, this.fillProp))\r\n || this.defaultDataPointColor\r\n || this.getColorScaleForSeries(fieldIds).getColor(value).value;\r\n }\r\n\r\n /**\r\n * Gets the color scale for the given series.\r\n */\r\n public getColorScaleForSeries(fieldIds: powerbi.data.ISQExpr[]): IColorScale {\r\n return this.colors.getColorScaleByKey(SQExprShortSerializer.serializeArray(<data.SQExpr[]>fieldIds || []));\r\n }\r\n\r\n /** \r\n * Gets the color for the given measure.\r\n */\r\n public getColorForMeasure(objects: DataViewObjects, measureKey: any): string {\r\n // Note, this allocates the color from the scale regardless of if we use it or not which helps keep colors stable.\r\n let scaleColor = this.defaultColorScale.getColor(measureKey).value;\r\n\r\n return (this.fillProp && DataViewObjects.getFillColor(objects, this.fillProp))\r\n || this.defaultDataPointColor\r\n || scaleColor;\r\n }\r\n\r\n public static normalizeSelector(selector: data.Selector, isSingleSeries?: boolean): data.Selector {\r\n debug.assertAnyValue(selector, 'selector');\r\n\r\n // For dynamic series charts, colors are set per category. So, exclude any measure (metadata repetition) from the selector.\r\n if (selector && (isSingleSeries || selector.data))\r\n return { data: selector.data };\r\n\r\n return selector;\r\n }\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n import ClassAndSelector = jsCommon.CssConstants.ClassAndSelector;\r\n\r\n const rectName = 'rect';\r\n\r\n export module ColumnUtil {\r\n export const DimmedOpacity = 0.4;\r\n export const DefaultOpacity = 1.0;\r\n\r\n export function applyUserMinMax(isScalar: boolean, dataView: DataViewCategorical, xAxisCardProperties: DataViewObject): DataViewCategorical {\r\n if (isScalar) {\r\n let min = xAxisCardProperties['start'];\r\n let max = xAxisCardProperties['end'];\r\n\r\n return ColumnUtil.transformDomain(dataView, min, max);\r\n }\r\n\r\n return dataView;\r\n }\r\n\r\n export function transformDomain(dataView: DataViewCategorical, min: DataViewPropertyValue, max: DataViewPropertyValue): DataViewCategorical {\r\n if (!dataView.categories || !dataView.values || dataView.categories.length === 0 || dataView.values.length === 0)\r\n return dataView;// no need to do something when there are no categories \r\n \r\n if (typeof min !== \"number\" && typeof max !== \"number\")\r\n return dataView;//user did not set min max, nothing to do here \r\n \r\n let category = dataView.categories[0];//at the moment we only support one category\r\n let categoryValues = category.values;\r\n let categoryObjects = category.objects;\r\n\r\n if (!categoryValues || !categoryObjects)\r\n return dataView;\r\n let newcategoryValues = [];\r\n let newValues = [];\r\n let newObjects = [];\r\n\r\n //get new min max\r\n if (typeof min !== \"number\") {\r\n min = categoryValues[0];\r\n }\r\n if (typeof max !== \"number\") {\r\n max = categoryValues[categoryValues.length - 1];\r\n }\r\n\r\n //don't allow this\r\n if (min > max)\r\n return dataView;\r\n\r\n //build measure array\r\n for (let j = 0, len = dataView.values.length; j < len; j++) {\r\n newValues.push([]);\r\n }\r\n\r\n for (let t = 0, len = categoryValues.length; t < len; t++) {\r\n if (categoryValues[t] >= min && categoryValues[t] <= max) {\r\n newcategoryValues.push(categoryValues[t]);\r\n if (categoryObjects) {\r\n newObjects.push(categoryObjects[t]);\r\n }\r\n \r\n //on each measure set the new range\r\n if (dataView.values) {\r\n for (let k = 0; k < dataView.values.length; k++) {\r\n newValues[k].push(dataView.values[k].values[t]);\r\n }\r\n }\r\n }\r\n }\r\n\r\n //don't write directly to dataview\r\n let resultDataView = Prototype.inherit(dataView);\r\n let resultDataViewValues = resultDataView.values = Prototype.inherit(resultDataView.values);\r\n let resultDataViewCategories = resultDataView.categories = Prototype.inherit(dataView.categories);\r\n let resultDataViewCategories0 = resultDataView.categories[0] = Prototype.inherit(resultDataViewCategories[0]);\r\n\r\n resultDataViewCategories0.values = newcategoryValues;\r\n //only if we had objects, then you set the new objects\r\n if (resultDataViewCategories0.objects) {\r\n resultDataViewCategories0.objects = newObjects;\r\n }\r\n\r\n //update measure array\r\n for (let t = 0, len = dataView.values.length; t < len; t++) {\r\n let measureArray = resultDataViewValues[t] = Prototype.inherit(resultDataViewValues[t]);\r\n measureArray.values = newValues[t];\r\n }\r\n\r\n return resultDataView;\r\n }\r\n\r\n export function getCategoryAxis(\r\n data: ColumnChartData,\r\n size: number,\r\n layout: CategoryLayout,\r\n isVertical: boolean,\r\n forcedXMin?: DataViewPropertyValue,\r\n forcedXMax?: DataViewPropertyValue,\r\n axisScaleType?: string,\r\n axisDisplayUnits?: number,\r\n axisPrecision?: number): IAxisProperties {\r\n\r\n let categoryThickness = layout.categoryThickness;\r\n let isScalar = layout.isScalar;\r\n let outerPaddingRatio = layout.outerPaddingRatio;\r\n let domain = AxisHelper.createDomain(data.series, data.categoryMetadata ? data.categoryMetadata.type : ValueType.fromDescriptor({ text: true }), isScalar, [forcedXMin, forcedXMax]);\r\n\r\n let axisProperties = AxisHelper.createAxis({\r\n pixelSpan: size,\r\n dataDomain: domain,\r\n metaDataColumn: data.categoryMetadata,\r\n formatString: valueFormatter.getFormatString(data.categoryMetadata, columnChartProps.general.formatString),\r\n outerPadding: categoryThickness * outerPaddingRatio,\r\n isCategoryAxis: true,\r\n isScalar: isScalar,\r\n isVertical: isVertical,\r\n categoryThickness: categoryThickness,\r\n useTickIntervalForDisplayUnits: true,\r\n getValueFn: (index, type) => CartesianHelper.lookupXValue(data, index, type, isScalar),\r\n scaleType: axisScaleType,\r\n axisDisplayUnits: axisDisplayUnits,\r\n axisPrecision: axisPrecision\r\n });\r\n\r\n // intentionally updating the input layout by ref\r\n layout.categoryThickness = axisProperties.categoryThickness;\r\n\r\n return axisProperties;\r\n }\r\n\r\n export function applyInteractivity(columns: D3.Selection, onDragStart): void {\r\n debug.assertValue(columns, 'columns');\r\n\r\n if (onDragStart) {\r\n columns\r\n .attr('draggable', 'true')\r\n .on('dragstart', onDragStart);\r\n }\r\n }\r\n\r\n export function getFillOpacity(selected: boolean, highlight: boolean, hasSelection: boolean, hasPartialHighlights: boolean): number {\r\n if ((hasPartialHighlights && !highlight) || (hasSelection && !selected))\r\n return DimmedOpacity;\r\n return DefaultOpacity;\r\n }\r\n\r\n export function getClosestColumnIndex(coordinate: number, columnsCenters: number[]): number {\r\n let currentIndex = 0;\r\n let distance: number = Number.MAX_VALUE;\r\n for (let i = 0, ilen = columnsCenters.length; i < ilen; i++) {\r\n let currentDistance = Math.abs(coordinate - columnsCenters[i]);\r\n if (currentDistance < distance) {\r\n distance = currentDistance;\r\n currentIndex = i;\r\n }\r\n }\r\n\r\n return currentIndex;\r\n }\r\n\r\n export function setChosenColumnOpacity(mainGraphicsContext: D3.Selection, columnGroupSelector: string, selectedColumnIndex: number, lastColumnIndex: number): void {\r\n let series = mainGraphicsContext.selectAll(ColumnChart.SeriesClasses.selector);\r\n let lastColumnUndefined = typeof lastColumnIndex === 'undefined';\r\n // find all columns that do not belong to the selected column and set a dimmed opacity with a smooth animation to those columns\r\n series.selectAll(rectName + columnGroupSelector).filter((d: ColumnChartDataPoint) => {\r\n return (d.categoryIndex !== selectedColumnIndex) && (lastColumnUndefined || d.categoryIndex === lastColumnIndex);\r\n }).transition().style('fill-opacity', DimmedOpacity);\r\n\r\n // set the default opacity for the selected column\r\n series.selectAll(rectName + columnGroupSelector).filter((d: ColumnChartDataPoint) => {\r\n return d.categoryIndex === selectedColumnIndex;\r\n }).style('fill-opacity', DefaultOpacity);\r\n }\r\n\r\n export function drawSeries(data: ColumnChartData, graphicsContext: D3.Selection, axisOptions: ColumnAxisOptions): D3.UpdateSelection {\r\n let colGroupSelection = graphicsContext.selectAll(ColumnChart.SeriesClasses.selector);\r\n let series = colGroupSelection.data(data.series,(d: ColumnChartSeries) => d.key);\r\n\r\n series\r\n .enter()\r\n .append('g')\r\n .classed(ColumnChart.SeriesClasses.class, true);\r\n series\r\n .exit()\r\n .remove();\r\n return series;\r\n }\r\n\r\n export function drawDefaultShapes(data: ColumnChartData, series: D3.UpdateSelection, layout: IColumnLayout, itemCS: ClassAndSelector, filterZeros: boolean, hasSelection: boolean): D3.UpdateSelection {\r\n // We filter out invisible (0, null, etc.) values from the dataset\r\n // based on whether animations are enabled or not, Dashboard and\r\n // Exploration mode, respectively.\r\n let dataSelector: (d: ColumnChartSeries) => any[];\r\n if (filterZeros) {\r\n dataSelector = (d: ColumnChartSeries) => {\r\n let filteredData = _.filter(d.data,(datapoint: ColumnChartDataPoint) => !!datapoint.value);\r\n return filteredData;\r\n };\r\n }\r\n else {\r\n dataSelector = (d: ColumnChartSeries) => d.data;\r\n }\r\n\r\n let shapeSelection = series.selectAll(itemCS.selector);\r\n let shapes = shapeSelection.data(dataSelector, (d: ColumnChartDataPoint) => d.key);\r\n\r\n shapes.enter()\r\n .append(rectName)\r\n .attr(\"class\",(d: ColumnChartDataPoint) => itemCS.class.concat(d.highlight ? \" highlight\" : \"\"));\r\n\r\n shapes\r\n .style(\"fill\",(d: ColumnChartDataPoint) => d.color)\r\n .style(\"fill-opacity\",(d: ColumnChartDataPoint) => ColumnUtil.getFillOpacity(d.selected, d.highlight, hasSelection, data.hasHighlights))\r\n .attr(layout.shapeLayout);\r\n\r\n shapes\r\n .exit()\r\n .remove();\r\n\r\n return shapes;\r\n\r\n }\r\n\r\n export function drawDefaultLabels(series: D3.UpdateSelection, context: D3.Selection, layout: ILabelLayout, viewPort: IViewport, isAnimator: boolean = false, animationDuration?: number): D3.UpdateSelection {\r\n if (series) {\r\n let seriesData = series.data();\r\n let dataPoints: ColumnChartDataPoint[] = [];\r\n\r\n for (let i = 0, len = seriesData.length; i < len; i++) {\r\n Array.prototype.push.apply(dataPoints, seriesData[i].data);\r\n }\r\n\r\n return dataLabelUtils.drawDefaultLabelsForDataPointChart(dataPoints, context, layout, viewPort, isAnimator, animationDuration);\r\n }\r\n else {\r\n dataLabelUtils.cleanDataLabels(context);\r\n }\r\n }\r\n\r\n export function normalizeInfinityInScale(scale: D3.Scale.GenericScale<any>): void {\r\n // When large values (eg Number.MAX_VALUE) are involved, a call to scale.nice occasionally\r\n // results in infinite values being included in the domain. To correct for that, we need to\r\n // re-normalize the domain now to not include infinities.\r\n let scaledDomain = scale.domain();\r\n for (let i = 0, len = scaledDomain.length; i < len; ++i) {\r\n if (scaledDomain[i] === Number.POSITIVE_INFINITY)\r\n scaledDomain[i] = Number.MAX_VALUE;\r\n else if (scaledDomain[i] === Number.NEGATIVE_INFINITY)\r\n scaledDomain[i] = -Number.MAX_VALUE;\r\n }\r\n\r\n scale.domain(scaledDomain);\r\n }\r\n\r\n export function calculatePosition(d: ColumnChartDataPoint, axisOptions: ColumnAxisOptions): number {\r\n let xScale = axisOptions.xScale;\r\n let yScale = axisOptions.yScale;\r\n let scaledY0 = yScale(0);\r\n let scaledX0 = xScale(0);\r\n switch (d.chartType) {\r\n case ColumnChartType.stackedBar:\r\n case ColumnChartType.hundredPercentStackedBar:\r\n return scaledX0 + Math.abs(AxisHelper.diffScaled(xScale, 0, d.valueAbsolute)) +\r\n AxisHelper.diffScaled(xScale, d.position - d.valueAbsolute, 0) + dataLabelUtils.defaultColumnLabelMargin;\r\n case ColumnChartType.clusteredBar:\r\n return scaledX0 + AxisHelper.diffScaled(xScale, Math.max(0, d.value), 0) + dataLabelUtils.defaultColumnLabelMargin;\r\n case ColumnChartType.stackedColumn:\r\n case ColumnChartType.hundredPercentStackedColumn:\r\n return scaledY0 + AxisHelper.diffScaled(yScale, d.position, 0) - dataLabelUtils.defaultColumnLabelMargin;\r\n case ColumnChartType.clusteredColumn:\r\n return scaledY0 + AxisHelper.diffScaled(yScale, Math.max(0, d.value), 0) - dataLabelUtils.defaultColumnLabelMargin;\r\n }\r\n\r\n }\r\n }\r\n\r\n export module ClusteredUtil {\r\n\r\n export function clearColumns(\r\n mainGraphicsContext: D3.Selection,\r\n itemCS: ClassAndSelector): void {\r\n\r\n debug.assertValue(mainGraphicsContext, 'mainGraphicsContext');\r\n debug.assertValue(itemCS, 'itemCS');\r\n\r\n let cols = mainGraphicsContext.selectAll(itemCS.selector)\r\n .data([]);\r\n\r\n cols.exit().remove();\r\n }\r\n }\r\n\r\n export interface ValueMultiplers {\r\n pos: number;\r\n neg: number;\r\n }\r\n\r\n export module StackedUtil {\r\n const PctRoundingError = 0.0001;\r\n\r\n export function getSize(scale: D3.Scale.GenericScale<any>, size: number, zeroVal: number = 0): number {\r\n return AxisHelper.diffScaled(scale, zeroVal, size);\r\n }\r\n\r\n export function calcValueDomain(data: ColumnChartSeries[], is100pct: boolean): NumberRange {\r\n let defaultNumberRange = {\r\n min: 0,\r\n max: 10\r\n };\r\n\r\n if (data.length === 0)\r\n return defaultNumberRange;\r\n\r\n // Can't use AxisHelper because Stacked layout has a slightly different calc, (position - valueAbs)\r\n let min = d3.min<ColumnChartSeries, number>(data, d => d3.min<ColumnChartDataPoint, number>(d.data, e => e.position - e.valueAbsolute));\r\n let max = d3.max<ColumnChartSeries, number>(data, d => d3.max<ColumnChartDataPoint, number>(d.data, e => e.position));\r\n\r\n if (is100pct) {\r\n min = Double.roundToPrecision(min, PctRoundingError);\r\n max = Double.roundToPrecision(max, PctRoundingError);\r\n }\r\n\r\n return {\r\n min: min,\r\n max: max,\r\n };\r\n }\r\n\r\n export function getStackedMultiplier(\r\n dataView: DataViewCategorical,\r\n rowIdx: number,\r\n seriesCount: number,\r\n categoryCount: number,\r\n converterStrategy: IColumnChartConverterStrategy): ValueMultiplers {\r\n debug.assertValue(dataView, 'dataView');\r\n debug.assertValue(rowIdx, 'rowIdx');\r\n\r\n let pos: number = 0,\r\n neg: number = 0;\r\n \r\n for (let i = 0; i < seriesCount; i++) {\r\n let value: number = converterStrategy.getValueBySeriesAndCategory(i, rowIdx);\r\n value = AxisHelper.normalizeNonFiniteNumber(value);\r\n\r\n if (value > 0)\r\n pos += value;\r\n else if (value < 0)\r\n neg -= value;\r\n }\r\n\r\n let absTotal = pos + neg;\r\n return {\r\n pos: pos ? (pos / absTotal) / pos : 1,\r\n neg: neg ? (neg / absTotal) / neg : 1,\r\n };\r\n }\r\n\r\n export function clearColumns(\r\n mainGraphicsContext: D3.Selection,\r\n itemCS: ClassAndSelector): void {\r\n\r\n debug.assertValue(mainGraphicsContext, 'mainGraphicsContext');\r\n debug.assertValue(itemCS, 'itemCS');\r\n\r\n let bars = mainGraphicsContext.selectAll(itemCS.selector)\r\n .data([]);\r\n\r\n bars.exit().remove();\r\n }\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n /// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n export interface PivotedCategoryInfo {\r\n categories?: any[];\r\n categoryFormatter?: IValueFormatter;\r\n categoryIdentities?: DataViewScopeIdentity[];\r\n categoryObjects?: DataViewObjects[];\r\n }\r\n\r\n export module converterHelper {\r\n export function categoryIsAlsoSeriesRole(dataView: DataViewCategorical, seriesRoleName: string, categoryRoleName: string): boolean {\r\n if (dataView.categories && dataView.categories.length > 0) {\r\n // Need to pivot data if our category soure is a series role\r\n let category = dataView.categories[0];\r\n return category.source &&\r\n DataRoleHelper.hasRole(category.source, seriesRoleName) &&\r\n DataRoleHelper.hasRole(category.source, categoryRoleName);\r\n }\r\n\r\n return false;\r\n }\r\n\r\n export function getPivotedCategories(dataView: DataViewCategorical, formatStringProp: DataViewObjectPropertyIdentifier): PivotedCategoryInfo {\r\n if (dataView.categories && dataView.categories.length > 0) {\r\n let category = dataView.categories[0];\r\n let categoryValues = category.values;\r\n\r\n return category.values.length > 0\r\n ? {\r\n categories: categoryValues,\r\n categoryFormatter: valueFormatter.create({\r\n format: valueFormatter.getFormatString(category.source, formatStringProp),\r\n value: categoryValues[0],\r\n value2: categoryValues[categoryValues.length - 1],\r\n // Do not use display units such as K/M/bn etc. on the x-axis.\r\n // PowerView does not use units either as large ranges will make the x-axis indecipherable.\r\n displayUnitSystemType: DisplayUnitSystemType.Verbose,\r\n }),\r\n categoryIdentities: category.identity,\r\n categoryObjects: category.objects,\r\n }\r\n : {\r\n categories: [],\r\n categoryFormatter: { format: valueFormatter.format },\r\n };\r\n }\r\n\r\n // For cases where the category source is just a series role, we are pivoting the data on the role which means we\r\n // will have no categories.\r\n return defaultCategories();\r\n }\r\n\r\n export function getSeriesName(source: DataViewMetadataColumn): string {\r\n debug.assertValue(source, 'source');\r\n\r\n return (source.groupName !== undefined)\r\n ? source.groupName\r\n : source.queryName;\r\n }\r\n\r\n export function getFormattedLegendLabel(source: DataViewMetadataColumn, values: DataViewValueColumns, formatStringProp: DataViewObjectPropertyIdentifier): string {\r\n debug.assertValue(source, 'source');\r\n debug.assertValue(values, 'values');\r\n\r\n let sourceForFormat = source;\r\n let nameForFormat = source.displayName;\r\n if (source.groupName !== undefined) {\r\n sourceForFormat = values.source;\r\n nameForFormat = source.groupName;\r\n }\r\n\r\n return valueFormatter.format(nameForFormat, valueFormatter.getFormatString(sourceForFormat, formatStringProp));\r\n }\r\n\r\n function defaultCategories(): PivotedCategoryInfo {\r\n return {\r\n categories: [null],\r\n categoryFormatter: { format: valueFormatter.format },\r\n };\r\n }\r\n\r\n export function createAxesLabels(categoryAxisProperties: DataViewObject,\r\n valueAxisProperties: DataViewObject,\r\n category: DataViewMetadataColumn,\r\n values: DataViewMetadataColumn[]) {\r\n let xAxisLabel = null;\r\n let yAxisLabel = null;\r\n\r\n if (categoryAxisProperties) {\r\n\r\n // Take the value only if it's there\r\n if (category && category.displayName) {\r\n xAxisLabel = category.displayName;\r\n }\r\n }\r\n\r\n if (valueAxisProperties) {\r\n let valuesNames: string[] = [];\r\n \r\n if (values) {\r\n // Take the name from the values, and make it unique because there are sometimes duplications\r\n valuesNames = values.map(v => v ? v.displayName : '').filter((value, index, self) => value !== '' && self.indexOf(value) === index);\r\n yAxisLabel = valueFormatter.formatListAnd(valuesNames);\r\n }\r\n }\r\n return { xAxisLabel: xAxisLabel, yAxisLabel: yAxisLabel };\r\n }\r\n }\r\n}\r\n","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n import ClassAndSelector = jsCommon.CssConstants.ClassAndSelector;\r\n import createClassAndSelector = jsCommon.CssConstants.createClassAndSelector;\r\n import PixelConverter = jsCommon.PixelConverter;\r\n import LabelStyle = labelStyle;\r\n\r\n export const enum PointLabelPosition {\r\n Above,\r\n Below,\r\n }\r\n\r\n export interface PointDataLabelsSettings extends VisualDataLabelsSettings {\r\n position: PointLabelPosition;\r\n }\r\n\r\n export interface LabelFormattedTextOptions {\r\n label: any;\r\n maxWidth?: number;\r\n format?: string;\r\n formatter?: IValueFormatter;\r\n fontSize?: number;\r\n }\r\n\r\n export interface VisualDataLabelsSettings {\r\n show: boolean;\r\n showLabelPerSeries?: boolean;\r\n isSeriesExpanded?: boolean;\r\n displayUnits?: number;\r\n showCategory?: boolean;\r\n position?: any;\r\n precision?: number;\r\n labelColor: string;\r\n categoryLabelColor?: string;\r\n fontSize?: number;\r\n labelStyle?: any;\r\n }\r\n\r\n /*\r\n Options for setting the labels card on the property pane\r\n */\r\n export interface VisualDataLabelsSettingsOptions {\r\n show: boolean;\r\n enumeration: ObjectEnumerationBuilder;\r\n dataLabelsSettings: VisualDataLabelsSettings;\r\n displayUnits?: boolean;\r\n precision?: boolean;\r\n position?: boolean;\r\n positionObject?: string[];\r\n selector?: powerbi.data.Selector;\r\n fontSize?: boolean;\r\n showAll?: boolean;\r\n labelDensity?: boolean;\r\n labelStyle?: boolean;\r\n }\r\n\r\n export interface LabelEnabledDataPoint {\r\n //for collistion detection use\r\n labelX?: number;\r\n labelY?: number;\r\n //for overriding color from label settings\r\n labelFill?: string;\r\n //for display units and precision\r\n labeltext?: string;\r\n //taken from column metadata\r\n labelFormatString?: string;\r\n isLabelInside?: boolean;\r\n labelFontSize?: number;\r\n }\r\n\r\n export interface IColumnFormatterCache {\r\n [column: string]: IValueFormatter;\r\n defaultFormatter?: IValueFormatter;\r\n }\r\n\r\n export interface IColumnFormatterCacheManager {\r\n cache: IColumnFormatterCache;\r\n getOrCreate: (formatString: string, labelSetting: VisualDataLabelsSettings, value2?: number) => IValueFormatter;\r\n }\r\n\r\n export interface LabelPosition {\r\n y: (d: any, i: number) => number;\r\n x: (d: any, i: number) => number;\r\n }\r\n\r\n export interface ILabelLayout {\r\n labelText: (d: any) => string;\r\n labelLayout: LabelPosition;\r\n filter: (d: any) => boolean;\r\n style: {};\r\n }\r\n\r\n export interface DataLabelObject extends DataViewObject {\r\n show: boolean;\r\n color: Fill;\r\n labelDisplayUnits: number;\r\n labelPrecision?: number;\r\n labelPosition: any;\r\n fontSize?: number;\r\n showAll?: boolean;\r\n showSeries?: boolean;\r\n labelDensity?: number;\r\n labelStyle?: any;\r\n }\r\n\r\n export module dataLabelUtils {\r\n export const minLabelFontSize: number = 8;\r\n export const labelMargin: number = 8;\r\n export const maxLabelWidth: number = 50;\r\n export const defaultColumnLabelMargin: number = 5;\r\n export const defaultColumnHalfLabelHeight: number = 4;\r\n export const DefaultDy: string = '-0.15em';\r\n export const DefaultFontSizeInPt = 9;\r\n export const StandardFontFamily = 'wf_segoe-ui_normal';\r\n export const LabelTextProperties: TextProperties = {\r\n fontFamily: 'wf_standard-font',\r\n fontSize: PixelConverter.fromPoint(DefaultFontSizeInPt),\r\n fontWeight: 'normal',\r\n };\r\n export const defaultLabelColor = \"#777777\";\r\n export const defaultInsideLabelColor = \"#ffffff\";\r\n export const hundredPercentFormat = \"0.00 %;-0.00 %;0.00 %\";\r\n \r\n export const defaultLabelPrecision: number = undefined;\r\n const defaultCountLabelPrecision: number = 0;\r\n\r\n const labelGraphicsContextClass: ClassAndSelector = createClassAndSelector('labels');\r\n const linesGraphicsContextClass: ClassAndSelector = createClassAndSelector('lines');\r\n const labelsClass: ClassAndSelector = createClassAndSelector('data-labels');\r\n const lineClass: ClassAndSelector = createClassAndSelector('line-label');\r\n\r\n export function updateLabelSettingsFromLabelsObject(labelsObj: DataLabelObject, labelSettings: VisualDataLabelsSettings): void {\r\n if (labelsObj) {\r\n if (labelsObj.show !== undefined)\r\n labelSettings.show = labelsObj.show;\r\n if (labelsObj.showSeries !== undefined)\r\n labelSettings.show = labelsObj.showSeries;\r\n if (labelsObj.color !== undefined)\r\n labelSettings.labelColor = labelsObj.color.solid.color;\r\n if (labelsObj.labelDisplayUnits !== undefined)\r\n labelSettings.displayUnits = labelsObj.labelDisplayUnits;\r\n if (labelsObj.labelPrecision !== undefined)\r\n labelSettings.precision = (labelsObj.labelPrecision >= 0) ? labelsObj.labelPrecision : defaultLabelPrecision;\r\n if (labelsObj.fontSize !== undefined)\r\n labelSettings.fontSize = labelsObj.fontSize;\r\n if (labelsObj.showAll !== undefined)\r\n labelSettings.showLabelPerSeries = labelsObj.showAll;\r\n if (labelsObj.labelStyle !== undefined)\r\n labelSettings.labelStyle = labelsObj.labelStyle;\r\n }\r\n }\r\n\r\n export function updateLineChartLabelSettingsFromLabelsObject(labelsObj: DataLabelObject, labelSettings: LineChartDataLabelsSettings): void {\r\n\r\n updateLabelSettingsFromLabelsObject(labelsObj, labelSettings);\r\n\r\n if (labelsObj && labelsObj.labelDensity !== undefined)\r\n labelSettings.labelDensity = labelsObj.labelDensity;\r\n }\r\n\r\n export function getDefaultLabelSettings(show: boolean = false, labelColor?: string, fontSize?: number): VisualDataLabelsSettings {\r\n return {\r\n show: show,\r\n position: PointLabelPosition.Above,\r\n displayUnits: 0,\r\n precision: defaultLabelPrecision,\r\n labelColor: labelColor || defaultLabelColor,\r\n formatterOptions: null,\r\n fontSize: fontSize || DefaultFontSizeInPt,\r\n };\r\n }\r\n\r\n export function getDefaultCardLabelSettings(labelColor: string, categoryLabelColor: string, fontSize?: number): VisualDataLabelsSettings {\r\n let labelSettings = getDefaultLabelSettings(true, labelColor, fontSize);\r\n labelSettings.showCategory = true;\r\n labelSettings.categoryLabelColor = categoryLabelColor;\r\n return labelSettings;\r\n }\r\n\r\n export function getDefaultTreemapLabelSettings(): VisualDataLabelsSettings {\r\n return {\r\n show: false,\r\n displayUnits: 0,\r\n precision: defaultLabelPrecision,\r\n labelColor: defaultInsideLabelColor,\r\n showCategory: true,\r\n formatterOptions: null,\r\n };\r\n }\r\n\r\n export function getDefaultSunburstLabelSettings(): VisualDataLabelsSettings {\r\n return getDefaultTreemapLabelSettings();\r\n }\r\n\r\n export function getDefaultColumnLabelSettings(isLabelPositionInside: boolean): VisualDataLabelsSettings {\r\n let labelSettings = getDefaultLabelSettings(false, undefined);\r\n labelSettings.position = null;\r\n labelSettings.labelColor = undefined;\r\n return labelSettings;\r\n }\r\n\r\n export function getDefaultPointLabelSettings(): PointDataLabelsSettings {\r\n return {\r\n show: false,\r\n position: PointLabelPosition.Above,\r\n displayUnits: 0,\r\n precision: defaultLabelPrecision,\r\n labelColor: defaultLabelColor,\r\n formatterOptions: null,\r\n fontSize: DefaultFontSizeInPt,\r\n };\r\n }\r\n\r\n export function getDefaultLineChartLabelSettings(isComboChart?: boolean): LineChartDataLabelsSettings {\r\n return {\r\n show: false,\r\n position: PointLabelPosition.Above,\r\n displayUnits: 0,\r\n precision: defaultLabelPrecision,\r\n labelColor: defaultLabelColor,\r\n formatterOptions: null,\r\n fontSize: DefaultFontSizeInPt,\r\n labelDensity: isComboChart ? NewDataLabelUtils.LabelDensityMax : NewDataLabelUtils.LabelDensityMin,\r\n };\r\n }\r\n\r\n export function getDefaultMapLabelSettings(): PointDataLabelsSettings {\r\n return {\r\n show: false,\r\n showCategory: false,\r\n position: PointLabelPosition.Above,\r\n displayUnits: 0,\r\n precision: defaultLabelPrecision,\r\n labelColor: defaultInsideLabelColor,\r\n formatterOptions: null,\r\n fontSize: DefaultFontSizeInPt,\r\n };\r\n }\r\n\r\n export function getDefaultDonutLabelSettings(): VisualDataLabelsSettings {\r\n let labelSettings = dataLabelUtils.getDefaultLabelSettings(true, defaultLabelColor, DefaultFontSizeInPt);\r\n labelSettings.labelStyle = LabelStyle.category;\r\n return labelSettings;\r\n }\r\n\r\n export function getDefaultGaugeLabelSettings(): VisualDataLabelsSettings {\r\n return {\r\n show: true,\r\n displayUnits: 0,\r\n precision: defaultLabelPrecision,\r\n labelColor: null,\r\n position: null,\r\n fontSize: dataLabelUtils.minLabelFontSize,\r\n formatterOptions: null,\r\n };\r\n }\r\n\r\n export function getDefaultFunnelLabelSettings(): VisualDataLabelsSettings {\r\n return {\r\n show: true,\r\n position: powerbi.visuals.labelPosition.insideCenter,\r\n displayUnits: 0,\r\n precision: defaultLabelPrecision,\r\n labelColor: defaultLabelColor,\r\n formatterOptions: null,\r\n fontSize: DefaultFontSizeInPt,\r\n };\r\n }\r\n\r\n export function getDefaultKpiLabelSettings(): VisualDataLabelsSettings {\r\n return {\r\n show: false,\r\n displayUnits: 0,\r\n precision: defaultLabelPrecision,\r\n labelColor: defaultLabelColor,\r\n position: null,\r\n showCategory: true,\r\n formatterOptions: null,\r\n };\r\n }\r\n\r\n export function getLabelPrecision(precision: number, format: string): number {\r\n debug.assertAnyValue(format, 'format');\r\n\r\n if (precision !== defaultLabelPrecision)\r\n return precision;\r\n\r\n if (format === 'g' || format === 'G')\r\n return;\r\n\r\n if (format) {\r\n // Calculate precision from positive format by default\r\n let positiveFormat = format.split(\";\")[0];\r\n let formatMetadata = NumberFormat.getCustomFormatMetadata(positiveFormat, true /*calculatePrecision*/);\r\n if (formatMetadata.hasDots) {\r\n return formatMetadata.precision;\r\n }\r\n }\r\n\r\n // For count fields we do not want a precision by default\r\n return defaultCountLabelPrecision;\r\n }\r\n\r\n export function drawDefaultLabelsForDataPointChart(data: any[], context: D3.Selection, layout: ILabelLayout,\r\n viewport: IViewport, isAnimator: boolean = false, animationDuration?: number, hasSelection?: boolean): D3.UpdateSelection {\r\n debug.assertValue(data, 'data cannot be null or undefined');\r\n\r\n // Hide and reposition labels that overlap\r\n let dataLabelManager = new DataLabelManager();\r\n let filteredData = dataLabelManager.hideCollidedLabels(viewport, data, layout);\r\n\r\n let hasAnimation = isAnimator && !!animationDuration;\r\n let labels = selectLabels(filteredData, context, false, hasAnimation);\r\n\r\n if (!labels)\r\n return;\r\n\r\n if (hasAnimation) {\r\n labels\r\n .text((d: LabelEnabledDataPoint) => d.labeltext)\r\n .transition()\r\n .duration(animationDuration)\r\n .style(layout.style)\r\n .style('opacity', hasSelection ? (d: SelectableDataPoint) => ColumnUtil.getFillOpacity(d.selected, false, hasSelection, false) : 1)\r\n .attr({ x: (d: LabelEnabledDataPoint) => d.labelX, y: (d: LabelEnabledDataPoint) => d.labelY });\r\n\r\n labels\r\n .exit()\r\n .transition()\r\n .duration(animationDuration)\r\n .style('opacity', 0) //fade out labels that are removed\r\n .remove();\r\n }\r\n else {\r\n labels\r\n .attr({ x: (d: LabelEnabledDataPoint) => d.labelX, y: (d: LabelEnabledDataPoint) => d.labelY })\r\n .text((d: LabelEnabledDataPoint) => d.labeltext)\r\n .style(layout.style);\r\n\r\n labels\r\n .exit()\r\n .remove();\r\n }\r\n\r\n return labels;\r\n }\r\n \r\n /**\r\n * Note: Funnel chart uses animation and does not use collision detection.\r\n */\r\n export function drawDefaultLabelsForFunnelChart(data: FunnelSlice[], context: D3.Selection, layout: ILabelLayout, isAnimator: boolean = false, animationDuration?: number): D3.UpdateSelection {\r\n debug.assertValue(data, 'data could not be null or undefined');\r\n\r\n let filteredData = data.filter(layout.filter);\r\n\r\n let labels = selectLabels(filteredData, context);\r\n\r\n if (!labels)\r\n return;\r\n\r\n labels\r\n .attr(layout.labelLayout)\r\n .text(layout.labelText)\r\n .style(layout.style);\r\n\r\n if (isAnimator && animationDuration) {\r\n labels.transition().duration(animationDuration);\r\n }\r\n\r\n labels\r\n .exit()\r\n .remove();\r\n\r\n return labels;\r\n }\r\n \r\n function selectLabels(filteredData: LabelEnabledDataPoint[], context: D3.Selection, isDonut: boolean = false, forAnimation: boolean = false): D3.UpdateSelection {\r\n\r\n // Check for a case where resizing leaves no labels - then we need to remove the labels 'g'\r\n if (filteredData.length === 0) {\r\n cleanDataLabels(context, true);\r\n return null;\r\n }\r\n\r\n if (context.select(labelGraphicsContextClass.selector).empty())\r\n context.append('g').classed(labelGraphicsContextClass.class, true);\r\n\r\n // line chart ViewModel has a special 'key' property for point identification since the 'identity' field is set to the series identity\r\n let hasKey: boolean = (<any>filteredData)[0].key != null;\r\n let hasDataPointIdentity: boolean = (<any>filteredData)[0].identity != null;\r\n let getIdentifier = hasKey ?\r\n (d: any) => d.key\r\n : hasDataPointIdentity ?\r\n (d: SelectableDataPoint) => d.identity.getKey()\r\n : undefined;\r\n\r\n let labels = isDonut ?\r\n context.select(labelGraphicsContextClass.selector).selectAll(labelsClass.selector).data(filteredData, (d: DonutArcDescriptor) => d.data.identity.getKey())\r\n : getIdentifier != null ?\r\n context.select(labelGraphicsContextClass.selector).selectAll(labelsClass.selector).data(filteredData, getIdentifier)\r\n : context.select(labelGraphicsContextClass.selector).selectAll(labelsClass.selector).data(filteredData);\r\n\r\n let newLabels = labels.enter()\r\n .append('text')\r\n .classed(labelsClass.class, true);\r\n if (forAnimation)\r\n newLabels.style('opacity', 0);\r\n\r\n return labels;\r\n }\r\n\r\n export function cleanDataLabels(context: D3.Selection, removeLines: boolean = false) {\r\n let empty = [];\r\n let labels = context.selectAll(labelsClass.selector).data(empty);\r\n labels.exit().remove();\r\n context.selectAll(labelGraphicsContextClass.selector).remove();\r\n if (removeLines) {\r\n let lines = context.selectAll(lineClass.selector).data(empty);\r\n lines.exit().remove();\r\n context.selectAll(linesGraphicsContextClass.selector).remove();\r\n }\r\n }\r\n\r\n export function setHighlightedLabelsOpacity(context: D3.Selection, hasSelection: boolean, hasHighlights: boolean) {\r\n context.selectAll(labelsClass.selector).style(\"fill-opacity\", (d: ColumnChartDataPoint) => {\r\n let labelOpacity = ColumnUtil.getFillOpacity(d.selected, d.highlight, !d.highlight && hasSelection, !d.selected && hasHighlights) < 1 ? 0 : 1;\r\n return labelOpacity;\r\n });\r\n }\r\n\r\n export function getLabelFormattedText(options: LabelFormattedTextOptions): string {\r\n let properties: TextProperties = {\r\n text: options.formatter\r\n ? options.formatter.format(options.label)\r\n : formattingService.formatValue(options.label, options.format),\r\n fontFamily: LabelTextProperties.fontFamily,\r\n fontSize: PixelConverter.fromPoint(options.fontSize),\r\n fontWeight: LabelTextProperties.fontWeight,\r\n };\r\n return TextMeasurementService.getTailoredTextOrDefault(properties, options.maxWidth ? options.maxWidth : maxLabelWidth);\r\n }\r\n\r\n export function getLabelLayoutXYForWaterfall(xAxisProperties: IAxisProperties, categoryWidth: number, yAxisProperties: IAxisProperties, dataDomain: number[]): LabelPosition {\r\n return {\r\n x: (d: WaterfallChartDataPoint) => xAxisProperties.scale(d.categoryIndex) + (categoryWidth / 2),\r\n y: (d: WaterfallChartDataPoint) => getWaterfallLabelYPosition(yAxisProperties.scale, d, dataDomain)\r\n };\r\n }\r\n\r\n function getWaterfallLabelYPosition(scale: D3.Scale.GenericScale<any>, d: WaterfallChartDataPoint, dataDomain: number[]): number {\r\n\r\n let yValue = scale(0) - scale(Math.abs(d.value));\r\n let yPos = scale(d.position);\r\n let scaleMinDomain = scale(dataDomain[0]);\r\n let endPosition = scale(d.position + d.value);\r\n\r\n if (d.value < 0) {\r\n let properties: TextProperties = {\r\n text: d.labeltext,\r\n fontFamily: dataLabelUtils.LabelTextProperties.fontFamily,\r\n fontSize: dataLabelUtils.LabelTextProperties.fontSize,\r\n fontWeight: dataLabelUtils.LabelTextProperties.fontWeight,\r\n };\r\n let outsideBelowPosition = yPos + yValue + TextMeasurementService.estimateSvgTextHeight(properties);\r\n // Try to honor the position, but if the label doesn't fit where specified, then swap the position.\r\n if (scaleMinDomain > outsideBelowPosition) {\r\n return outsideBelowPosition;\r\n }\r\n }\r\n else {\r\n let outsideAbovePosition = yPos - yValue - dataLabelUtils.labelMargin;\r\n // Try to honor the position, but if the label doesn't fit where specified, then swap the position.\r\n if (outsideAbovePosition > 0) {\r\n return outsideAbovePosition;\r\n }\r\n }\r\n d.isLabelInside = true;\r\n return getWaterfallInsideLabelYPosition(yPos, endPosition, scaleMinDomain);\r\n }\r\n\r\n function getWaterfallInsideLabelYPosition(startPosition: number, endPosition: number, scaleMinDomain: number): number {\r\n // Get the start and end position of the column\r\n // If the start or end is outside of the visual because of clipping - adjust the position\r\n startPosition = startPosition < 0 ? 0 : startPosition;\r\n startPosition = startPosition > scaleMinDomain ? scaleMinDomain : startPosition;\r\n\r\n endPosition = endPosition < 0 ? 0 : endPosition;\r\n endPosition = endPosition > scaleMinDomain ? scaleMinDomain : endPosition;\r\n\r\n return (Math.abs(endPosition - startPosition) / 2) + Math.min(startPosition, endPosition);\r\n }\r\n\r\n export function doesDataLabelFitInShape(d: WaterfallChartDataPoint, yAxisProperties: IAxisProperties, layout: WaterfallLayout): boolean {\r\n\r\n if (d == null || d.value === null)\r\n return false;\r\n\r\n let properties: TextProperties = {\r\n text: layout.labelText(d),\r\n fontFamily: dataLabelUtils.LabelTextProperties.fontFamily,\r\n fontSize: dataLabelUtils.LabelTextProperties.fontSize,\r\n fontWeight: dataLabelUtils.LabelTextProperties.fontWeight,\r\n };\r\n\r\n let outsidePosition = WaterfallChart.getRectTop(yAxisProperties.scale, d.position, d.value) - dataLabelUtils.labelMargin;\r\n\r\n // The shape is fit to be outside\r\n if (outsidePosition > 0)\r\n return true;\r\n\r\n let textWidth = TextMeasurementService.measureSvgTextWidth(properties);\r\n let textHeight = TextMeasurementService.estimateSvgTextHeight(properties);\r\n\r\n let shapeWidth = layout.categoryWidth;\r\n let shapeHeight = Math.abs(AxisHelper.diffScaled(yAxisProperties.scale, Math.max(0, Math.abs(d.value)), 0));\r\n\r\n //checking that labels aren't greater than shape\r\n if ((textWidth > shapeWidth) || (textHeight > shapeHeight))\r\n return false;\r\n return true;\r\n }\r\n\r\n export function getMapLabelLayout(labelSettings: PointDataLabelsSettings): ILabelLayout {\r\n\r\n return {\r\n labelText: (d: MapVisualDataPoint) => {\r\n return getLabelFormattedText({\r\n label: d.labeltext,\r\n fontSize: labelSettings.fontSize\r\n });\r\n },\r\n labelLayout: {\r\n x: (d: MapVisualDataPoint) => d.x,\r\n y: (d: MapVisualDataPoint) => {\r\n let margin = d.radius + labelMargin;\r\n return labelSettings.position === PointLabelPosition.Above ? d.y - margin : d.y + margin;\r\n },\r\n },\r\n filter: (d: MapVisualDataPoint) => {\r\n return (d != null && d.labeltext != null);\r\n },\r\n style: {\r\n 'fill': (d: MapVisualDataPoint) => d.labelFill,\r\n 'font-size': PixelConverter.fromPoint(labelSettings.fontSize),\r\n },\r\n };\r\n }\r\n\r\n export function getColumnChartLabelLayout(\r\n data: ColumnChartData,\r\n labelLayoutXY: any,\r\n isColumn: boolean,\r\n isHundredPercent: boolean,\r\n axisFormatter: IValueFormatter,\r\n axisOptions: ColumnAxisOptions,\r\n interactivityService: IInteractivityService,\r\n visualWidth?: number): ILabelLayout {\r\n\r\n let formatOverride: string = (isHundredPercent) ? hundredPercentFormat : null;\r\n let formattersCache = createColumnFormatterCacheManager();\r\n let hasSelection = interactivityService ? interactivityService.hasSelection() : false;\r\n\r\n return {\r\n labelText: (d: ColumnChartDataPoint) => {\r\n let formatString = (formatOverride != null) ? formatOverride : d.labelFormatString;\r\n let value2: number = getDisplayUnitValueFromAxisFormatter(axisFormatter, d.labelSettings);\r\n let formatter = formattersCache.getOrCreate(formatString, d.labelSettings, value2);\r\n return getLabelFormattedText({\r\n label: formatter.format(d.value),\r\n maxWidth: maxLabelWidth\r\n });\r\n },\r\n labelLayout: labelLayoutXY,\r\n filter: (d: ColumnChartDataPoint) => dataLabelUtils.getColumnChartLabelFilter(d, hasSelection, data.hasHighlights, axisOptions, visualWidth),\r\n style: {\r\n 'fill': (d: ColumnChartDataPoint) => d.labelFill,\r\n 'text-anchor': isColumn ? 'middle' : 'start',\r\n },\r\n };\r\n }\r\n \r\n /**\r\n * Valide for stacked column/bar chart and 100% stacked column/bar chart,\r\n * that labels that should to be inside the shape aren't bigger then shapes.\r\n */\r\n function validateLabelsSize(d: ColumnChartDataPoint, axisOptions: ColumnAxisOptions, visualWidth?: number): boolean {\r\n let xScale = axisOptions.xScale;\r\n let yScale = axisOptions.yScale;\r\n let columnWidth = axisOptions.columnWidth;\r\n let properties: TextProperties = {\r\n text: d.labeltext,\r\n fontFamily: dataLabelUtils.LabelTextProperties.fontFamily,\r\n fontSize: dataLabelUtils.LabelTextProperties.fontSize,\r\n fontWeight: dataLabelUtils.LabelTextProperties.fontWeight,\r\n };\r\n let textWidth = TextMeasurementService.measureSvgTextWidth(properties);\r\n let textHeight = TextMeasurementService.estimateSvgTextHeight(properties);\r\n let shapeWidth, shapeHeight;\r\n let inside = false;\r\n let outsidePosition: number = ColumnUtil.calculatePosition(d, axisOptions);\r\n switch (d.chartType) {\r\n case ColumnChartType.stackedBar:\r\n case ColumnChartType.hundredPercentStackedBar:\r\n // if the series isn't last or the label doesn't fit where specified, then it should be inside \r\n if (!d.lastSeries || (outsidePosition + textWidth > visualWidth) || d.chartType === ColumnChartType.hundredPercentStackedBar) {\r\n shapeWidth = -StackedUtil.getSize(xScale, d.valueAbsolute);\r\n shapeHeight = columnWidth;\r\n inside = true;\r\n }\r\n break;\r\n case ColumnChartType.clusteredBar:\r\n \r\n // if the label doesn't fit where specified, then it should be inside \r\n if ((outsidePosition + textWidth) > visualWidth) {\r\n shapeWidth = Math.abs(AxisHelper.diffScaled(xScale, 0, d.value));\r\n shapeHeight = columnWidth;\r\n inside = true;\r\n }\r\n break;\r\n case ColumnChartType.stackedColumn:\r\n case ColumnChartType.hundredPercentStackedColumn:\r\n // if the series isn't last or the label doesn't fit where specified, then it should be inside \r\n if (!d.lastSeries || outsidePosition <= 0 || d.chartType === ColumnChartType.hundredPercentStackedColumn) {\r\n shapeWidth = columnWidth;\r\n shapeHeight = StackedUtil.getSize(yScale, d.valueAbsolute);\r\n inside = true;\r\n }\r\n break;\r\n case ColumnChartType.clusteredColumn:\r\n // if the label doesn't fit where specified, then it should be inside \r\n if (outsidePosition <= 0) {\r\n shapeWidth = columnWidth;\r\n shapeHeight = Math.abs(AxisHelper.diffScaled(yScale, 0, d.value));\r\n inside = true;\r\n }\r\n break;\r\n default:\r\n return true;\r\n }\r\n\r\n //checking that labels aren't greater than shape\r\n if (inside && ((textWidth > shapeWidth) || textHeight > shapeHeight)) return false;\r\n return true;\r\n }\r\n\r\n export function getColumnChartLabelFilter(d: ColumnChartDataPoint, hasSelection: boolean, hasHighlights: boolean, axisOptions: ColumnAxisOptions, visualWidth?: number): any {\r\n //labels of dimmed are hidden\r\n let shapesOpacity = hasSelection ? ColumnUtil.getFillOpacity(d.selected, d.highlight, !d.highlight && hasSelection, !d.selected && hasHighlights) :\r\n ColumnUtil.getFillOpacity(d.selected, d.highlight, hasSelection, hasHighlights);\r\n return (d != null && d.value != null && validateLabelsSize(d, axisOptions, visualWidth) && shapesOpacity === 1);\r\n }\r\n\r\n export function getScatterChartLabelLayout(xScale: D3.Scale.GenericScale<any>, yScale: D3.Scale.GenericScale<any>, labelSettings: PointDataLabelsSettings, viewport: IViewport, sizeRange: NumberRange): ILabelLayout {\r\n\r\n return {\r\n labelText: (d: ScatterChartDataPoint) => {\r\n return getLabelFormattedText({\r\n label: d.category,\r\n maxWidth: maxLabelWidth * 2.0\r\n });\r\n },\r\n labelLayout: {\r\n x: (d: ScatterChartDataPoint) => xScale(d.x),\r\n y: (d: ScatterChartDataPoint) => {\r\n let margin = ScatterChart.getBubbleRadius(d.radius, sizeRange, viewport) + labelMargin;\r\n return labelSettings.position === PointLabelPosition.Above ? yScale(d.y) - margin : yScale(d.y) + margin;\r\n },\r\n },\r\n filter: (d: ScatterChartDataPoint) => {\r\n return (d != null && d.category != null);\r\n },\r\n style: {\r\n 'fill': (d: ScatterChartDataPoint) => d.labelFill,\r\n },\r\n };\r\n }\r\n\r\n export function getLineChartLabelLayout(xScale: D3.Scale.GenericScale<any>, yScale: D3.Scale.GenericScale<any>, labelSettings: PointDataLabelsSettings, isScalar: boolean, axisFormatter: IValueFormatter): ILabelLayout {\r\n let formattersCache = createColumnFormatterCacheManager();\r\n\r\n return {\r\n labelText: (d: LineChartDataPoint) => {\r\n let value2: number = getDisplayUnitValueFromAxisFormatter(axisFormatter, d.labelSettings);\r\n let formatter = formattersCache.getOrCreate(d.labelFormatString, d.labelSettings, value2);\r\n return getLabelFormattedText({ label: formatter.format(d.value) });\r\n },\r\n labelLayout: {\r\n x: (d: LineChartDataPoint) => xScale(isScalar ? d.categoryValue : d.categoryIndex),\r\n y: (d: LineChartDataPoint) => { return labelSettings.position === PointLabelPosition.Above ? yScale(d.value) - labelMargin : yScale(d.value) + labelMargin; },\r\n },\r\n filter: (d: LineChartDataPoint) => {\r\n return (d != null && d.value != null);\r\n },\r\n style: {\r\n 'fill': (d: LineChartDataPoint) => d.labelFill,\r\n 'font-size': (d: LineChartDataPoint) => PixelConverter.fromPoint(d.labelSettings.fontSize),\r\n },\r\n };\r\n }\r\n \r\n export function getFunnelChartLabelLayout(\r\n data: FunnelData,\r\n axisOptions: FunnelAxisOptions,\r\n textMinimumPadding: number,\r\n labelSettings: VisualDataLabelsSettings,\r\n currentViewport: IViewport): ILabelLayout {\r\n\r\n let yScale = axisOptions.yScale;\r\n let xScale = axisOptions.xScale;\r\n let marginLeft = axisOptions.margin.left;\r\n let innerTextHeightRate = 0.7;\r\n let rangeBand = axisOptions.xScale.rangeBand();\r\n\r\n //the bars are tranform, verticalRange mean horizontal range, xScale is y, yscale is x\r\n let pixelSpan = axisOptions.verticalRange / 2;\r\n let formatString = valueFormatter.getFormatString(data.valuesMetadata[0], funnelChartProps.general.formatString);\r\n let textMeasurer: ITextAsSVGMeasurer = TextMeasurementService.measureSvgTextWidth;\r\n\r\n let value2: number = null;\r\n if (labelSettings.displayUnits === 0) {\r\n let minY = <number>d3.min(data.slices, (d) => { return d.value; });\r\n let maxY = <number>d3.max(data.slices, (d) => { return d.value; });\r\n value2 = Math.max(Math.abs(minY), Math.abs(maxY));\r\n }\r\n\r\n let formattersCache = createColumnFormatterCacheManager();\r\n\r\n return {\r\n labelText: (d: FunnelSlice) => {\r\n let barWidth = Math.abs(yScale(d.value) - yScale(0));\r\n let insideAvailableSpace = Math.abs(yScale(d.value) - yScale(0)) - (textMinimumPadding * 2);\r\n let outsideAvailableSpace = pixelSpan - (barWidth / 2) - textMinimumPadding;\r\n let labelFormatString = (formatString != null) ? formatString : d.labelFormatString;\r\n\r\n let maximumTextSize = Math.max(insideAvailableSpace, outsideAvailableSpace);\r\n let formatter = formattersCache.getOrCreate(labelFormatString, labelSettings, value2);\r\n let labelText = formatter.format(FunnelChart.getFunnelSliceValue(d, true /* asOriginal */));\r\n return getLabelFormattedText({\r\n label: labelText,\r\n maxWidth: maximumTextSize,\r\n fontSize: labelSettings.fontSize\r\n });\r\n },\r\n labelLayout: {\r\n y: (d: FunnelSlice, i) => {\r\n let properties: TextProperties = {\r\n text: d.labeltext,\r\n fontFamily: LabelTextProperties.fontFamily,\r\n fontSize: PixelConverter.fromPoint(labelSettings.fontSize),\r\n fontWeight: LabelTextProperties.fontWeight,\r\n };\r\n //in order to make it center aligned we should 'correct' the height to not calculate text margin\r\n let labelHeight = TextMeasurementService.estimateSvgTextHeight(properties);\r\n return xScale(i) + (rangeBand / 2) + (labelHeight / 2);\r\n },\r\n x: (d: FunnelSlice) => {\r\n let barWidth = Math.abs(yScale(d.value) - yScale(0));\r\n let insideAvailableSpace = Math.abs(yScale(d.value) - yScale(0)) - (textMinimumPadding * 2);\r\n let outsideAvailableSpace = pixelSpan - (barWidth / 2) - textMinimumPadding;\r\n let maximumTextSize = Math.max(insideAvailableSpace, outsideAvailableSpace);\r\n let labelFormatString = (formatString != null) ? formatString : d.labelFormatString;\r\n\r\n let formatter = formattersCache.getOrCreate(labelFormatString, labelSettings, value2);\r\n let labelText = formatter.format(FunnelChart.getFunnelSliceValue(d, true /* asOriginal */));\r\n let properties: TextProperties = {\r\n text: getLabelFormattedText({\r\n label: labelText,\r\n maxWidth: maximumTextSize\r\n }),\r\n fontFamily: LabelTextProperties.fontFamily,\r\n fontSize: PixelConverter.fromPoint(labelSettings.fontSize),\r\n fontWeight: LabelTextProperties.fontWeight,\r\n };\r\n\r\n let textLength = textMeasurer(properties);\r\n\r\n // Try to honor the position, but if the label doesn't fit where specified, then swap the position.\r\n let labelPositionValue = labelSettings.position;\r\n if ((labelPositionValue === labelPosition.outsideEnd && outsideAvailableSpace < textLength) || d.value === 0)\r\n labelPositionValue = labelPosition.insideCenter;\r\n else if (labelPositionValue === labelPosition.insideCenter && insideAvailableSpace < textLength) {\r\n labelPositionValue = labelPosition.outsideEnd;\r\n }\r\n\r\n switch (labelPositionValue) {\r\n case labelPosition.outsideEnd:\r\n return marginLeft + pixelSpan + (barWidth / 2) + textMinimumPadding + (textLength / 2);\r\n default:\r\n // Inside position, change color to white unless value is 0\r\n d.labelFill = d.value !== 0 ? defaultInsideLabelColor : d.labelFill;\r\n return marginLeft + pixelSpan;\r\n }\r\n },\r\n dy: '-0.15em',\r\n },\r\n filter: (d: FunnelSlice) => {\r\n if (!(d != null && d.value != null && data.hasHighlights === !!d.highlight))\r\n return false;\r\n\r\n let properties: TextProperties = {\r\n text: d.labeltext,\r\n fontFamily: LabelTextProperties.fontFamily,\r\n fontSize: PixelConverter.fromPoint(labelSettings.fontSize),\r\n fontWeight: LabelTextProperties.fontWeight,\r\n };\r\n\r\n let labelHeight = TextMeasurementService.estimateSvgTextHeight(properties) * innerTextHeightRate;\r\n return labelHeight < rangeBand;\r\n },\r\n style: {\r\n 'fill': (d: FunnelSlice) => d.labelFill,\r\n 'fill-opacity': (d: FunnelSlice) => ColumnUtil.getFillOpacity(d.selected, false, false, false),\r\n 'font-size': (d: FunnelSlice) => PixelConverter.fromPoint(labelSettings.fontSize),\r\n },\r\n };\r\n }\r\n\r\n export function enumerateDataLabels(\r\n options: VisualDataLabelsSettingsOptions): ObjectEnumerationBuilder {\r\n\r\n debug.assertValue(options, 'options');\r\n debug.assertValue(options.enumeration, 'enumeration');\r\n\r\n if (!options.dataLabelsSettings)\r\n return;\r\n\r\n let instance: VisualObjectInstance = {\r\n objectName: 'labels',\r\n selector: options.selector,\r\n properties: {},\r\n };\r\n\r\n if (options.show && options.selector) {\r\n instance.properties['showSeries'] = options.dataLabelsSettings.show;\r\n }\r\n else if (options.show) {\r\n instance.properties['show'] = options.dataLabelsSettings.show;\r\n }\r\n\r\n instance.properties['color'] = options.dataLabelsSettings.labelColor;\r\n\r\n if (options.displayUnits) {\r\n instance.properties['labelDisplayUnits'] = options.dataLabelsSettings.displayUnits;\r\n }\r\n if (options.precision) {\r\n let precision = options.dataLabelsSettings.precision;\r\n instance.properties['labelPrecision'] = precision === defaultLabelPrecision ? null : precision;\r\n }\r\n if (options.position) {\r\n instance.properties['labelPosition'] = options.dataLabelsSettings.position;\r\n if (options.positionObject) {\r\n debug.assert(!instance.validValues, '!instance.validValues');\r\n\r\n instance.validValues = { 'labelPosition': options.positionObject };\r\n }\r\n }\r\n if (options.labelStyle)\r\n instance.properties['labelStyle'] = options.dataLabelsSettings.labelStyle;\r\n if (options.fontSize)\r\n instance.properties['fontSize'] = options.dataLabelsSettings.fontSize;\r\n if (options.labelDensity) {\r\n var lineChartSettings = <LineChartDataLabelsSettings> options.dataLabelsSettings;\r\n if (lineChartSettings)\r\n instance.properties['labelDensity'] = lineChartSettings.labelDensity;\r\n }\r\n //Keep show all as the last property of the instance.\r\n if (options.showAll)\r\n instance.properties['showAll'] = options.dataLabelsSettings.showLabelPerSeries;\r\n\r\n return options.enumeration.pushInstance(instance);\r\n }\r\n\r\n export function enumerateCategoryLabels(enumeration: ObjectEnumerationBuilder, dataLabelsSettings: VisualDataLabelsSettings, withFill: boolean, isShowCategory: boolean = false, fontSize?: number): void {\r\n let labelSettings = (dataLabelsSettings)\r\n ? dataLabelsSettings\r\n : getDefaultPointLabelSettings();\r\n\r\n let instance: VisualObjectInstance = {\r\n objectName: 'categoryLabels',\r\n selector: null,\r\n properties: {\r\n show: isShowCategory\r\n ? labelSettings.showCategory\r\n : labelSettings.show,\r\n fontSize: dataLabelsSettings ? dataLabelsSettings.fontSize : DefaultFontSizeInPt,\r\n },\r\n };\r\n\r\n if (withFill) {\r\n instance.properties['color'] = labelSettings.categoryLabelColor\r\n ? labelSettings.categoryLabelColor\r\n : labelSettings.labelColor;\r\n }\r\n\r\n if (fontSize) {\r\n instance.properties['fontSize'] = fontSize;\r\n }\r\n\r\n enumeration.pushInstance(instance);\r\n }\r\n\r\n function getDisplayUnitValueFromAxisFormatter(axisFormatter: IValueFormatter, labelSettings: VisualDataLabelsSettings): number {\r\n if (axisFormatter && axisFormatter.displayUnit && labelSettings.displayUnits === 0)\r\n return axisFormatter.displayUnit.value;\r\n return null;\r\n }\r\n\r\n export function createColumnFormatterCacheManager(): IColumnFormatterCacheManager {\r\n return <IColumnFormatterCacheManager> {\r\n\r\n cache: { defaultFormatter: null, },\r\n getOrCreate(formatString: string, labelSetting: VisualDataLabelsSettings, value2?: number) {\r\n if (formatString) {\r\n let cacheKeyObject = {\r\n formatString: formatString,\r\n displayUnits: labelSetting.displayUnits,\r\n precision: getLabelPrecision(labelSetting.precision, formatString),\r\n value2: value2\r\n };\r\n let cacheKey = JSON.stringify(cacheKeyObject);\r\n if (!this.cache[cacheKey])\r\n this.cache[cacheKey] = valueFormatter.create(getOptionsForLabelFormatter(labelSetting, formatString, value2, cacheKeyObject.precision));\r\n return this.cache[cacheKey];\r\n }\r\n if (!this.cache.defaultFormatter) {\r\n this.cache.defaultFormatter = valueFormatter.create(getOptionsForLabelFormatter(labelSetting, formatString, value2, labelSetting.precision));\r\n }\r\n return this.cache.defaultFormatter;\r\n }\r\n };\r\n }\r\n\r\n export function getOptionsForLabelFormatter(labelSetting: VisualDataLabelsSettings, formatString: string, value2?: number, precision?: number): ValueFormatterOptions {\r\n return {\r\n displayUnitSystemType: DisplayUnitSystemType.DataLabels,\r\n format: formatString,\r\n precision: precision,\r\n value: labelSetting.displayUnits,\r\n value2: value2,\r\n allowFormatBeautification: true,\r\n };\r\n }\r\n }\r\n}\r\n","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n /// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n import ISize = shapes.ISize;\r\n\r\n export module DonutLabelUtils {\r\n export const LineStrokeWidth: number = 1;\r\n export const DiagonalLineIndex: number = 0;\r\n export const HorizontalLineIndex: number = 1;\r\n\r\n export function getLabelLeaderLineForDonutChart(donutArcDescriptor: DonutArcDescriptor, donutProperties: DonutChartProperties,\r\n parentPoint: IPoint, sliceArc: number = 0): number[][] {\r\n let innerLinePointMultiplier = 2.05;\r\n let textPoint: number[];\r\n let midPoint: number[];\r\n let chartPoint: number[];\r\n // Label position has changed\r\n if (sliceArc) {\r\n let arc = sliceArc;\r\n let outerRadius = donutProperties.radius * donutProperties.outerArcRadiusRatio;\r\n let innerRadius = (donutProperties.radius / 2) * donutProperties.innerArcRadiusRatio;\r\n midPoint = [Math.cos(arc) * outerRadius, Math.sin(arc) * outerRadius];\r\n chartPoint = [Math.cos(arc) * innerRadius, Math.sin(arc) * innerRadius];\r\n }\r\n // Original label position\r\n else {\r\n midPoint = donutProperties.outerArc.centroid(donutArcDescriptor);\r\n chartPoint = donutProperties.arc.centroid(donutArcDescriptor);\r\n }\r\n let textPointX = parentPoint.x;\r\n let lineMargin = NewDataLabelUtils.maxLabelOffset / 2;\r\n textPointX += textPointX < 0 ? -lineMargin : lineMargin;\r\n textPoint = [textPointX, parentPoint.y];\r\n chartPoint[0] *= innerLinePointMultiplier;\r\n chartPoint[1] *= innerLinePointMultiplier;\r\n return [chartPoint, midPoint, textPoint];\r\n }\r\n\r\n /** We calculate the rectangles of the leader lines for collision detection \r\n *width: x2 - x1; height: y2 - y1 */\r\n export function getLabelLeaderLinesSizeForDonutChart(leaderLinePoints: number[][]): ISize[] {\r\n if (leaderLinePoints && leaderLinePoints.length > 2) {\r\n let diagonalLineSize: ISize = {\r\n width: Math.abs(leaderLinePoints[1][0] - leaderLinePoints[0][0]),\r\n height: Math.abs(leaderLinePoints[1][1] - leaderLinePoints[0][1]),\r\n };\r\n // For horizontal line we set 1 in the height\r\n let horizontalLineSize: ISize = {\r\n width: Math.abs(leaderLinePoints[2][0] - leaderLinePoints[1][0]),\r\n height: DonutLabelUtils.LineStrokeWidth,\r\n };\r\n return [diagonalLineSize, horizontalLineSize];\r\n }\r\n return null;\r\n }\r\n\r\n export function getXPositionForDonutLabel(textPointX: number): number {\r\n let margin = textPointX < 0 ? -NewDataLabelUtils.maxLabelOffset : NewDataLabelUtils.maxLabelOffset;\r\n return textPointX += margin;\r\n }\r\n\r\n export function getSpaceAvailableForDonutLabels(labelXPos: number, viewport: IViewport): number {\r\n return viewport.width / 2 - Math.abs(labelXPos) - NewDataLabelUtils.maxLabelOffset;\r\n }\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n import ClassAndSelector = jsCommon.CssConstants.ClassAndSelector;\r\n import createClassAndSelector = jsCommon.CssConstants.createClassAndSelector;\r\n import PixelConverter = jsCommon.PixelConverter;\r\n\r\n export module NewDataLabelUtils {\r\n export const DefaultLabelFontSizeInPt = 9;\r\n export const MapPolylineOpacity = 0.5;\r\n export const LabelDensityBufferFactor = 3;\r\n export const LabelDensityPadding = 6;\r\n export const LabelDensityMin = 0;\r\n export const LabelDensityMax = 6;\r\n export let startingLabelOffset = 8;\r\n export let maxLabelOffset = 8;\r\n export let maxLabelWidth: number = 50;\r\n export let hundredPercentFormat = '0.00 %;-0.00 %;0.00 %';\r\n export let LabelTextProperties: TextProperties = {\r\n fontFamily: 'wf_standard-font',\r\n fontSize: PixelConverter.fromPoint(DefaultLabelFontSizeInPt),\r\n fontWeight: 'normal',\r\n };\r\n export let defaultLabelColor = \"#777777\";\r\n export let defaultInsideLabelColor = \"#ffffff\"; //white\r\n export const horizontalLabelBackgroundPadding = 4;\r\n export const verticalLabelBackgroundPadding = 2;\r\n \r\n let labelBackgroundRounding = 4;\r\n let defaultLabelPrecision: number = undefined;\r\n let defaultCountLabelPrecision: number = 0;\r\n\r\n export let labelGraphicsContextClass: ClassAndSelector = createClassAndSelector('labelGraphicsContext');\r\n export let labelBackgroundGraphicsContextClass: ClassAndSelector = createClassAndSelector('labelBackgroundGraphicsContext');\r\n let labelsClass: ClassAndSelector = createClassAndSelector('label');\r\n let secondLineLabelClass: ClassAndSelector = createClassAndSelector('label-second-line');\r\n\r\n const linesGraphicsContextClass: ClassAndSelector = createClassAndSelector('leader-lines');\r\n const lineClass: ClassAndSelector = createClassAndSelector('line-label');\r\n\r\n export function drawDefaultLabels(context: D3.Selection, dataLabels: Label[], numeric: boolean = false, twoRows: boolean = false): D3.UpdateSelection {\r\n let filteredDataLabels = _.filter(dataLabels, (d: Label) => d.isVisible);\r\n let labels = context.selectAll(labelsClass.selector)\r\n .data(filteredDataLabels, labelKeyFunction);\r\n labels.enter()\r\n .append(\"text\")\r\n .classed(labelsClass.class, true);\r\n let labelAttr = {\r\n x: (d: Label) => {\r\n return (d.boundingBox.left + (d.boundingBox.width / 2));\r\n },\r\n y: (d: Label) => {\r\n if (d.hasBackground)\r\n return d.boundingBox.top + d.boundingBox.height - verticalLabelBackgroundPadding;\r\n else\r\n return d.boundingBox.top + d.boundingBox.height;\r\n },\r\n dy: \"-0.15em\",\r\n };\r\n if (numeric) { // For numeric labels, we use a tighter bounding box, so remove the dy because it doesn't need to be centered\r\n labelAttr.dy = undefined;\r\n }\r\n\r\n labels\r\n .text((d: Label) => d.text)\r\n .attr(labelAttr)\r\n .style({\r\n 'fill': (d: Label) => d.fill,\r\n 'font-size': (d: Label) => PixelConverter.fromPoint(d.fontSize || DefaultLabelFontSizeInPt),\r\n 'text-anchor': (d: Label) => d.textAnchor,\r\n });\r\n labels.exit()\r\n .remove();\r\n\r\n let filteredCategoryLabels = _.filter(twoRows ? dataLabels : [], (d: Label) => d.isVisible && !_.isEmpty(d.secondRowText));\r\n let secondLineLabels = context.selectAll(secondLineLabelClass.selector)\r\n .data(filteredCategoryLabels, (d: Label, index: number) => { return d.identity ? d.identity.getKeyWithoutHighlight() : index; });\r\n secondLineLabels.enter()\r\n .append(\"text\")\r\n .classed(secondLineLabelClass.class, true);\r\n\r\n labelAttr = {\r\n x: (d: Label) => {\r\n return (d.boundingBox.left + (d.boundingBox.width / 2));\r\n },\r\n y: (d: Label) => {\r\n let boundingBoxHeight = (d.text !== undefined) ? d.boundingBox.height / 2 : d.boundingBox.height;\r\n if (d.hasBackground)\r\n return d.boundingBox.top + boundingBoxHeight - verticalLabelBackgroundPadding;\r\n else\r\n return d.boundingBox.top + boundingBoxHeight;\r\n },\r\n dy: \"-0.15em\",\r\n };\r\n if (numeric) { // For numeric labels, we use a tighter bounding box, so remove the dy because it doesn't need to be centered\r\n labelAttr.dy = undefined;\r\n }\r\n secondLineLabels\r\n .text((d: Label) => d.secondRowText)\r\n .attr(labelAttr)\r\n .style({\r\n 'fill': (d: Label) => d.fill,\r\n 'font-size': (d: Label) => PixelConverter.fromPoint(d.fontSize || DefaultLabelFontSizeInPt),\r\n 'text-anchor': (d: Label) => d.textAnchor,\r\n });\r\n\r\n secondLineLabels.exit()\r\n .remove();\r\n\r\n return labels;\r\n }\r\n\r\n export function animateDefaultLabels(context: D3.Selection, dataLabels: Label[], duration: number, numeric: boolean = false, easeType: string = 'cubic-in-out'): D3.UpdateSelection {\r\n let labels = context.selectAll(labelsClass.selector)\r\n .data(_.filter(dataLabels, (d: Label) => d.isVisible), labelKeyFunction);\r\n\r\n labels.enter()\r\n .append(\"text\")\r\n .classed(labelsClass.class, true);\r\n\r\n let labelAttr = {\r\n x: (d: Label) => {\r\n return (d.boundingBox.left + (d.boundingBox.width / 2));\r\n },\r\n y: (d: Label) => {\r\n return d.boundingBox.top + d.boundingBox.height;\r\n },\r\n dy: \"-0.15em\",\r\n };\r\n if (numeric) { // For numeric labels, we use a tighter bounding box, so remove the dy because it doesn't need to be centered\r\n labelAttr.dy = undefined;\r\n }\r\n\r\n labels.text((d: Label) => d.text)\r\n .style({\r\n 'fill': (d: Label) => d.fill,\r\n 'font-size': (d: Label) => PixelConverter.fromPoint(d.fontSize || DefaultLabelFontSizeInPt),\r\n })\r\n .transition()\r\n .ease(easeType)\r\n .duration(duration)\r\n .attr(labelAttr);\r\n\r\n labels.exit()\r\n .remove();\r\n\r\n return labels;\r\n }\r\n\r\n /** Draws black rectangles based on the bounding bx of labels, to be used in debugging */\r\n export function drawLabelBackground(context: D3.Selection, dataLabels: Label[], fill?: string, fillOpacity?: number): D3.UpdateSelection {\r\n let labelRects = context.selectAll(\"rect\")\r\n .data(_.filter(dataLabels, (d: Label) => d.isVisible), labelKeyFunction);\r\n\r\n labelRects.enter()\r\n .append(\"rect\");\r\n\r\n labelRects\r\n .attr({\r\n x: (d: Label) => {\r\n return d.boundingBox.left - horizontalLabelBackgroundPadding;\r\n },\r\n y: (d: Label) => {\r\n return d.boundingBox.top - verticalLabelBackgroundPadding;\r\n },\r\n rx: labelBackgroundRounding,\r\n ry: labelBackgroundRounding,\r\n width: (d: Label) => {\r\n return d.boundingBox.width + 2 * horizontalLabelBackgroundPadding;\r\n },\r\n height: (d: Label) => {\r\n if (d.text === undefined && d.secondRowText === undefined) {\r\n return 0;\r\n }\r\n return d.boundingBox.height + 2 * verticalLabelBackgroundPadding;\r\n },\r\n })\r\n .style(\"fill\", fill ? fill : \"#000000\")\r\n .style(\"fill-opacity\", fillOpacity != null ? fillOpacity : 1);\r\n\r\n labelRects.exit()\r\n .remove();\r\n\r\n return labelRects;\r\n }\r\n\r\n export function drawLabelLeaderLines(context: D3.Selection, filteredDataLabels: Label[], key?: (data: any, index?: number) => any, leaderLineColor?: string) {\r\n if (context.select(linesGraphicsContextClass.selector).empty())\r\n context.append('g').classed(linesGraphicsContextClass.class, true);\r\n\r\n let lines = context.select(linesGraphicsContextClass.selector).selectAll('polyline')\r\n .data(filteredDataLabels, key);\r\n\r\n lines.enter()\r\n .append('polyline')\r\n .classed(lineClass.class, true);\r\n\r\n lines\r\n .attr('points', (d: Label) => {\r\n return d.leaderLinePoints;\r\n }).\r\n style({\r\n 'stroke': (d: Label) => leaderLineColor ? leaderLineColor : d.fill,\r\n 'stroke-width': DonutLabelUtils.LineStrokeWidth,\r\n });\r\n\r\n lines\r\n .exit()\r\n .remove();\r\n }\r\n\r\n export function getLabelFormattedText(label: string | number, format?: string, formatter?: IValueFormatter): string {\r\n return formatter ? formatter.format(label) : formattingService.formatValue(label, format);\r\n }\r\n\r\n export function getDisplayUnitValueFromAxisFormatter(axisFormatter: IValueFormatter, labelSettings: VisualDataLabelsSettings): number {\r\n if (axisFormatter && axisFormatter.displayUnit && labelSettings.displayUnits === 0)\r\n return axisFormatter.displayUnit.value;\r\n return null;\r\n }\r\n\r\n function getLabelPrecision(precision: number, format: string): number {\r\n debug.assertAnyValue(format, 'format');\r\n\r\n if (precision !== defaultLabelPrecision)\r\n return precision;\r\n\r\n if (format) {\r\n // Calculate precision from positive format by default\r\n let positiveFormat = format.split(\";\")[0];\r\n let formatMetadata = NumberFormat.getCustomFormatMetadata(positiveFormat, true /*calculatePrecision*/);\r\n if (formatMetadata.hasDots) {\r\n return formatMetadata.precision;\r\n }\r\n }\r\n // For count fields we do not want a precision by default\r\n return defaultCountLabelPrecision;\r\n }\r\n\r\n export function createColumnFormatterCacheManager(): IColumnFormatterCacheManager {\r\n return <IColumnFormatterCacheManager> {\r\n\r\n cache: { defaultFormatter: null, },\r\n getOrCreate(formatString: string, labelSetting: VisualDataLabelsSettings, value2?: number) {\r\n if (formatString) {\r\n let cacheKeyObject = {\r\n formatString: formatString,\r\n displayUnits: labelSetting.displayUnits,\r\n precision: getLabelPrecision(labelSetting.precision, formatString),\r\n value2: value2\r\n };\r\n let cacheKey = JSON.stringify(cacheKeyObject);\r\n if (!this.cache[cacheKey])\r\n this.cache[cacheKey] = valueFormatter.create(getOptionsForLabelFormatter(labelSetting, formatString, value2, cacheKeyObject.precision));\r\n return this.cache[cacheKey];\r\n }\r\n if (!this.cache.defaultFormatter) {\r\n this.cache.defaultFormatter = valueFormatter.create(getOptionsForLabelFormatter(labelSetting, formatString, value2, labelSetting.precision));\r\n }\r\n return this.cache.defaultFormatter;\r\n }\r\n };\r\n }\r\n\r\n function getOptionsForLabelFormatter(labelSetting: VisualDataLabelsSettings, formatString: string, value2?: number, precision?: number): ValueFormatterOptions {\r\n return {\r\n displayUnitSystemType: DisplayUnitSystemType.DataLabels,\r\n format: formatString,\r\n precision: precision,\r\n value: labelSetting.displayUnits,\r\n value2: value2,\r\n allowFormatBeautification: true,\r\n };\r\n }\r\n\r\n export function removeDuplicates(labelDataPoints: LabelDataPoint[]): LabelDataPoint[] {\r\n let uniqueLabelDataPoints: LabelDataPoint[] = [];\r\n let labelDataPointMap = {};\r\n let sameParentIsInArray = (newValue: any, array: any[], parentIsRect: boolean) => {\r\n return array.some((arrayValue) => {\r\n if (parentIsRect) {\r\n return shapes.Rect.equals(newValue.parentShape.rect, arrayValue.rect);\r\n }\r\n else {\r\n return shapes.Point.equals(newValue.parentShape.point, arrayValue.point);\r\n }\r\n });\r\n };\r\n for (let dataPoint of labelDataPoints) {\r\n let parentIsRect = dataPoint.parentType === LabelDataPointParentType.Rectangle;\r\n let resultsFromMap = labelDataPointMap[dataPoint.text];\r\n if (!resultsFromMap) {\r\n uniqueLabelDataPoints.push(dataPoint);\r\n labelDataPointMap[dataPoint.text] = [dataPoint.parentShape];\r\n }\r\n else {\r\n if (!sameParentIsInArray(dataPoint, resultsFromMap, parentIsRect)) {\r\n uniqueLabelDataPoints.push(dataPoint);\r\n resultsFromMap.push(dataPoint.parentShape);\r\n }\r\n }\r\n }\r\n return uniqueLabelDataPoints;\r\n }\r\n \r\n export function getDataLabelLayoutOptions(type: CartesianChartType): DataLabelLayoutOptions {\r\n switch (type) {\r\n case CartesianChartType.Scatter:\r\n return {\r\n maximumOffset: ScatterChart.dataLabelLayoutMaximumOffset,\r\n startingOffset: ScatterChart.dataLabelLayoutStartingOffset,\r\n offsetIterationDelta: ScatterChart.dataLabelLayoutOffsetIterationDelta,\r\n allowLeaderLines: true,\r\n attemptToMoveLabelsIntoViewport: true,\r\n };\r\n default:\r\n return {\r\n maximumOffset: NewDataLabelUtils.maxLabelOffset,\r\n startingOffset: NewDataLabelUtils.startingLabelOffset,\r\n attemptToMoveLabelsIntoViewport: true,\r\n };\r\n }\r\n }\r\n\r\n /**\r\n * Obtains the key from the label. Index is required to use as a backup in cases\r\n * where labels have no key or identity.\r\n */\r\n function labelKeyFunction(label: Label, index: number): any {\r\n if (label.key) {\r\n return label.key;\r\n }\r\n if (label.identity) {\r\n return label.identity.getKeyWithoutHighlight();\r\n }\r\n return index;\r\n }\r\n }\r\n}\r\n","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n\r\n export module DataRoleHelper {\r\n export function getMeasureIndexOfRole(grouped: DataViewValueColumnGroup[], roleName: string): number {\r\n if (grouped && grouped.length > 0) {\r\n let firstGroup = grouped[0];\r\n if (firstGroup.values && firstGroup.values.length > 0) {\r\n for (let i = 0, len = firstGroup.values.length; i < len; ++i) {\r\n let value = firstGroup.values[i];\r\n if (value && value.source) {\r\n if (hasRole(value.source, roleName))\r\n return i;\r\n }\r\n }\r\n }\r\n }\r\n return -1;\r\n }\r\n\r\n export function hasRole(column: DataViewMetadataColumn, name: string): boolean {\r\n let roles = column.roles;\r\n return roles && roles[name];\r\n }\r\n\r\n export function hasRoleInDataView(dataView: DataView, name: string): boolean {\r\n return dataView != null\r\n && dataView.metadata != null\r\n && dataView.metadata.columns\r\n && _.any(dataView.metadata.columns, c => c.roles && c.roles[name] !== undefined);\r\n }\r\n }\r\n}\r\n","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\nmodule powerbi.visuals {\r\n\r\n export module KpiUtil {\r\n\r\n export const enum KpiImageSize {\r\n Small,\r\n Big,\r\n }\r\n\r\n export interface KpiImageMetadata {\r\n statusGraphic: string;\r\n caption: string;\r\n class: string;\r\n }\r\n\r\n export interface KPIGraphicClass {\r\n kpiIconClass: string;\r\n statusValues: string[];\r\n }\r\n\r\n const KPIImageClassName = 'powervisuals-glyph';\r\n const BigImageClassName = 'big-kpi';\r\n const RYGStatusIconClassNames = ['kpi-red', 'kpi-yellow', 'kpi-green'];\r\n\r\n const threeLights = {\r\n kpiIconClass: 'circle',\r\n statusValues: RYGStatusIconClassNames,\r\n };\r\n\r\n const roadSigns = {\r\n kpiIconClass: '',\r\n statusValues: ['circle-x kpi-red', 'circle-exclamation kpi-yellow', 'circle-checkmark kpi-green'],\r\n };\r\n\r\n const trafficLight = {\r\n kpiIconClass: 'traffic-light',\r\n statusValues: RYGStatusIconClassNames,\r\n };\r\n\r\n const shapes = {\r\n kpiIconClass: '',\r\n statusValues: ['rhombus kpi-red', 'triangle kpi-yellow', 'circle kpi-green'],\r\n };\r\n\r\n const gauge = {\r\n kpiIconClass: '',\r\n statusValues: ['circle-empty', 'circle-one-quarter', 'circle-half', 'circle-three-quarters', 'circle-full'],\r\n };\r\n\r\n const statusGraphicFormatStrings = {\r\n 'THREE CIRCLES COLORED': threeLights,\r\n 'TRAFFIC LIGHT - SINGLE': threeLights,\r\n\r\n 'THREE FLAGS COLORED': {\r\n kpiIconClass: 'flag',\r\n statusValues: RYGStatusIconClassNames,\r\n },\r\n\r\n 'ROAD SIGNS': roadSigns,\r\n 'THREE SYMBOLS CIRCLED COLORED': roadSigns,\r\n\r\n 'TRAFFIC LIGHT': trafficLight,\r\n 'THREE TRAFFIC LIGHTS RIMMED COLORED': trafficLight,\r\n\r\n 'THREE SYMBOLS UNCIRCLED COLORED': {\r\n kpiIconClass: '',\r\n statusValues: ['x kpi-red', 'exclamation kpi-yellow', 'checkmark kpi-green'],\r\n },\r\n\r\n 'SHAPES': shapes,\r\n 'SMILEY FACE': shapes,\r\n 'THERMOMETER': shapes,\r\n 'CYLINDER': shapes,\r\n 'THREE SIGNS COLORED': shapes,\r\n\r\n 'THREE STARS COLORED': {\r\n kpiIconClass: 'star-stacked',\r\n statusValues: ['star-empty', 'star-half-full', 'star-full'],\r\n },\r\n 'FIVE BARS COLORED': {\r\n kpiIconClass: 'bars-stacked',\r\n statusValues: ['bars-zero', 'bars-one', 'bars-two', 'bars-three', 'bars-four'],\r\n },\r\n 'FIVE BOXES COLORED': {\r\n kpiIconClass: 'boxes-stacked',\r\n statusValues: ['boxes-zero', 'boxes-one', 'boxes-two', 'boxes-three', 'boxes-four'],\r\n },\r\n\r\n 'FIVE QUARTERS COLORED': gauge,\r\n 'GAUGE - ASCENDING': gauge,\r\n 'GAUGE - DESCENDING': {\r\n kpiIconClass: '',\r\n statusValues: ['circle-full', 'circle-three-quarters', 'circle-half', 'circle-one-quarter', 'circle-empty'],\r\n },\r\n\r\n 'STANDARD ARROW': {\r\n kpiIconClass: '',\r\n statusValues: ['arrow-down', 'arrow-right-down', 'arrow-right', 'arrow-right-up', 'arrow-up'],\r\n },\r\n\r\n 'VARIANCE ARROW': {\r\n kpiIconClass: '',\r\n statusValues: ['arrow-down kpi-red', 'arrow-right kpi-yellow', 'arrow-up kpi-green'],\r\n },\r\n\r\n 'STATUS ARROW - ASCENDING': {\r\n kpiIconClass: '',\r\n statusValues: ['arrow-down kpi-red', 'arrow-right-down kpi-yellow', 'arrow-right kpi-yellow', 'arrow-right-up kpi-yellow', 'arrow-up kpi-green'],\r\n },\r\n 'STATUS ARROW - DESCENDING': {\r\n kpiIconClass: '',\r\n statusValues: ['arrow-up kpi-green', 'arrow-right-up kpi-yellow', 'arrow-right kpi-yellow', 'arrow-right-down kpi-yellow', 'arrow-down kpi-red'],\r\n },\r\n };\r\n\r\n function getKpiIcon(kpi: DataViewKpiColumnMetadata, value: string): string {\r\n let numValue = parseFloat(value);\r\n\r\n if (!kpi)\r\n return;\r\n\r\n let statusGraphicFormat = statusGraphicFormatStrings[kpi.graphic.toUpperCase()];\r\n\r\n if (!statusGraphicFormat || isNaN(numValue))\r\n return undefined;\r\n\r\n let statusValues = statusGraphicFormat.statusValues;\r\n\r\n // Normalize range of (-1, -0.5, 0, 0.5, 1) to (-2, -1, 0, 1, 2)\r\n if (kpi.normalizedFiveStateKpiRange && statusValues.length === 5)\r\n numValue = numValue * 2;\r\n\r\n // Convert values from the range of (-n/2, ..., 0, ..., n/2) to (0, 1, ..., n-1)\r\n let num = numValue + Math.floor(statusValues.length / 2);\r\n\r\n return [statusGraphicFormat.kpiIconClass, statusValues[num]].join(' ').trim();\r\n }\r\n\r\n function getKpiIconClassName(kpiIcon: string, kpiImageSize?: KpiImageSize): string {\r\n if (!kpiIcon)\r\n return undefined;\r\n\r\n if (kpiImageSize === KpiImageSize.Big)\r\n return [KPIImageClassName, BigImageClassName, kpiIcon].join(' ');\r\n else\r\n return [KPIImageClassName, kpiIcon].join(' ');\r\n }\r\n\r\n export function getClassForKpi(kpi: DataViewKpiColumnMetadata, value: string, kpiImageSize?: KpiImageSize): string {\r\n debug.assertValue(kpi, 'kpi');\r\n debug.assertValue(value, 'value');\r\n\r\n let kpiIcon: string = getKpiIcon(kpi, value);\r\n return getKpiIconClassName(kpiIcon, kpiImageSize);\r\n }\r\n\r\n export function getKpiImageMetadata(metaDataColumn: DataViewMetadataColumn, value: string, kpiImageSize?: KpiImageSize): KpiImageMetadata {\r\n let kpi: DataViewKpiColumnMetadata = metaDataColumn && metaDataColumn.kpi;\r\n\r\n if (kpi) {\r\n let kpiIcon = getKpiIcon(kpi, value);\r\n if (kpiIcon) {\r\n return {\r\n caption: kpiIcon,\r\n statusGraphic: kpi.graphic,\r\n class: getKpiIconClassName(kpiIcon, kpiImageSize),\r\n };\r\n }\r\n }\r\n }\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n export module ReferenceLineHelper {\r\n export const referenceLineProps = {\r\n show: 'show',\r\n lineColor: 'lineColor',\r\n transparency: 'transparency',\r\n value: 'value',\r\n style: 'style',\r\n position: 'position',\r\n dataLabelShow: 'dataLabelShow',\r\n dataLabelColor: 'dataLabelColor',\r\n dataLabelDecimalPoints: 'dataLabelDecimalPoints',\r\n dataLabelHorizontalPosition: 'dataLabelHorizontalPosition',\r\n dataLabelVerticalPosition: 'dataLabelVerticalPosition',\r\n };\r\n\r\n export function enumerateObjectInstances(enumeration: ObjectEnumerationBuilder, referenceLines: DataViewObjectMap, defaultColor: string, objectName: string): void {\r\n debug.assertValue(enumeration, 'enumeration');\r\n\r\n if (_.isEmpty(referenceLines)) {\r\n // NOTE: We do not currently have support for object maps in the property pane. For now we will generate a single reference line \r\n // object that the format pane can handle.In the future we will need property pane support for multiple reference lines. Also, we're\r\n // assuming that the user-defined IDs will be numeric strings, this may change in the future and will likley be controlled by the property pane.\r\n let instance: VisualObjectInstance = {\r\n selector: {\r\n id: '0'\r\n },\r\n properties: {\r\n show: false,\r\n value: '',\r\n lineColor: { solid: { color: defaultColor } },\r\n transparency: 50,\r\n style: lineStyle.dashed,\r\n position: referenceLinePosition.back,\r\n dataLabelShow: false,\r\n },\r\n objectName: objectName\r\n };\r\n\r\n enumeration.pushInstance(instance);\r\n\r\n return;\r\n }\r\n\r\n for (let referenceLine of referenceLines) {\r\n let referenceLineProperties = referenceLine.object;\r\n let show = DataViewObject.getValue(referenceLineProperties, referenceLineProps.show, false);\r\n let value = DataViewObject.getValue(referenceLineProperties, referenceLineProps.value);\r\n let lineColor = DataViewObject.getValue(referenceLineProperties, referenceLineProps.lineColor, { solid: { color: defaultColor } });\r\n let transparency = DataViewObject.getValue(referenceLineProperties, referenceLineProps.transparency, 50);\r\n let style = DataViewObject.getValue(referenceLineProperties, referenceLineProps.style, lineStyle.dashed);\r\n let position = DataViewObject.getValue(referenceLineProperties, referenceLineProps.position, referenceLinePosition.back);\r\n let dataLabelShow = DataViewObject.getValue(referenceLineProperties, referenceLineProps.dataLabelShow, false);\r\n\r\n let instance: VisualObjectInstance = {\r\n selector: {\r\n id: referenceLine.id\r\n },\r\n properties: {\r\n show: show,\r\n value: value,\r\n lineColor: lineColor,\r\n transparency: transparency,\r\n style: style,\r\n position: position,\r\n dataLabelShow: dataLabelShow,\r\n },\r\n objectName: objectName\r\n };\r\n\r\n // Show the data label properties only if the user chose to show the data label\r\n if (dataLabelShow) {\r\n let dataLabelColor = DataViewObject.getValue(referenceLineProperties, referenceLineProps.dataLabelColor, { solid: { color: defaultColor } });\r\n let dataLabelHorizontalPosition = DataViewObject.getValue(referenceLineProperties, referenceLineProps.dataLabelHorizontalPosition, referenceLineDataLabelHorizontalPosition.left);\r\n let dataLabelVerticalPosition = DataViewObject.getValue(referenceLineProperties, referenceLineProps.dataLabelVerticalPosition, referenceLineDataLabelVerticalPosition.above);\r\n let dataLabelDecimalPoints = DataViewObject.getValue(referenceLineProperties, referenceLineProps.dataLabelDecimalPoints, undefined) < 0\r\n ? undefined\r\n : DataViewObject.getValue(referenceLineProperties, referenceLineProps.dataLabelDecimalPoints, undefined);\r\n\r\n instance.properties[referenceLineProps.dataLabelColor] = dataLabelColor;\r\n instance.properties[referenceLineProps.dataLabelHorizontalPosition] = dataLabelHorizontalPosition;\r\n instance.properties[referenceLineProps.dataLabelVerticalPosition] = dataLabelVerticalPosition;\r\n instance.properties[referenceLineProps.dataLabelDecimalPoints] = dataLabelDecimalPoints;\r\n }\r\n\r\n enumeration.pushInstance(instance);\r\n }\r\n }\r\n\r\n export function render(options: ReferenceLineOptions): void {\r\n let graphicContext = options.graphicContext;\r\n let axes = options.axes;\r\n let referenceLineProperties = options.referenceLineProperties;\r\n let isHorizontal = options.isHorizontal;\r\n let viewport = options.viewport;\r\n let classAndSelector = options.classAndSelector;\r\n\r\n let xScale = axes.x.scale;\r\n let yScale = axes.y1.scale;\r\n\r\n let refValue = DataViewObject.getValue(referenceLineProperties, referenceLineProps.value, 0);\r\n let lineColor = DataViewObject.getValue(referenceLineProperties, referenceLineProps.lineColor, { solid: { color: options.defaultColor } });\r\n let transparency = DataViewObject.getValue<number>(referenceLineProperties, referenceLineProps.transparency);\r\n let style = DataViewObject.getValue(referenceLineProperties, referenceLineProps.style, lineStyle.dashed);\r\n let position = DataViewObject.getValue(referenceLineProperties, referenceLineProps.position, referenceLinePosition.back);\r\n\r\n let refLine = graphicContext.select(classAndSelector.selector);\r\n \r\n let index = $(refLine[0]).index();\r\n let currentPosition = index > 1 ? referenceLinePosition.front : referenceLinePosition.back;\r\n let isRefLineExists = index !== -1; \r\n let isPositionChanged = currentPosition !== position;\r\n\r\n if (isRefLineExists && isPositionChanged) \r\n refLine.remove();\r\n \r\n if (!isRefLineExists || isPositionChanged) \r\n refLine = (position === referenceLinePosition.back) ? graphicContext.insert('line', \":first-child\") : graphicContext.append('line'); \r\n\r\n let refLineX1 = isHorizontal ? 0 : xScale(refValue);\r\n let refLineY1 = isHorizontal ? yScale(refValue) : 0;\r\n let refLineX2 = isHorizontal ? viewport.width : xScale(refValue);\r\n let refLineY2 = isHorizontal ? yScale(refValue) : viewport.height;\r\n\r\n refLine.attr({\r\n 'class': classAndSelector.class,\r\n x1: refLineX1,\r\n y1: refLineY1,\r\n x2: refLineX2,\r\n y2: refLineY2,\r\n })\r\n .style({\r\n 'stroke': lineColor.solid.color,\r\n });\r\n\r\n if (transparency != null) \r\n refLine.style('stroke-opacity', ((100 - transparency) / 100)); \r\n\r\n if (style === lineStyle.dashed) {\r\n refLine.style('stroke-dasharray', (\"5, 5\"));\r\n }\r\n else if (style === lineStyle.dotted) {\r\n refLine.style({\r\n 'stroke-dasharray': (\"1, 5\"),\r\n 'stroke-linecap': \"round\"\r\n });\r\n }\r\n else if (style === lineStyle.solid) {\r\n refLine.style({\r\n 'stroke-dasharray': null,\r\n 'stroke-linecap': null\r\n });\r\n }\r\n }\r\n\r\n export function createLabelDataPoint(options: ReferenceLineDataLabelOptions): LabelDataPoint {\r\n let offsetRefLine = 5;\r\n\r\n let axes = options.axes;\r\n let referenceLineProperties = options.referenceLineProperties;\r\n let isHorizontal = options.isHorizontal;\r\n let viewport = options.viewport;\r\n\r\n let xScale = axes.x.scale;\r\n let yScale = axes.y1.scale;\r\n\r\n // Get the data label properties \r\n let refValue = DataViewObject.getValue(referenceLineProperties, referenceLineProps.value, 0);\r\n let color = DataViewObject.getValue<Fill>(referenceLineProperties, referenceLineProps.dataLabelColor, { solid: { color: options.defaultColor } });\r\n let decimalPoints: number = <number>(referenceLineProperties[referenceLineProps.dataLabelDecimalPoints] < 0 ? undefined : referenceLineProperties[referenceLineProps.dataLabelDecimalPoints]);\r\n let horizontalPosition = referenceLineProperties[referenceLineProps.dataLabelHorizontalPosition] || referenceLineDataLabelHorizontalPosition.left;\r\n let verticalPosition = referenceLineProperties[referenceLineProps.dataLabelVerticalPosition] || referenceLineDataLabelVerticalPosition.above;\r\n\r\n // Format the reference line data label text according to the matching axis formatter\r\n // When options is null default formatter is used either boolean, numeric, or text\r\n let axisFormatter = isHorizontal ? axes.y1.formatter : axes.x.formatter;\r\n let formatterForReferenceLineDataLabel = axisFormatter;\r\n\r\n if (axisFormatter.options != null) {\r\n let formatterOptions = Prototype.inherit(axisFormatter.options);\r\n formatterOptions.precision = decimalPoints;\r\n formatterForReferenceLineDataLabel = valueFormatter.create(formatterOptions);\r\n }\r\n\r\n let text: string = NewDataLabelUtils.getLabelFormattedText(formatterForReferenceLineDataLabel.format(<number>refValue));\r\n\r\n let properties: TextProperties = {\r\n text: text,\r\n fontFamily: dataLabelUtils.LabelTextProperties.fontFamily,\r\n fontSize: dataLabelUtils.LabelTextProperties.fontSize,\r\n fontWeight: dataLabelUtils.LabelTextProperties.fontWeight,\r\n };\r\n\r\n // Get the height and with of the text element that will be created in order to place it correctly\r\n let rectWidth: number = TextMeasurementService.measureSvgTextWidth(properties);\r\n let rectHeight: number = TextMeasurementService.estimateSvgTextHeight(properties);\r\n\r\n let dataLabelX: number;\r\n let dataLabelY: number;\r\n\r\n let x1 = isHorizontal ? 0 : xScale(refValue);\r\n let y1 = isHorizontal ? yScale(refValue) : 0;\r\n let x2 = isHorizontal ? viewport.width : xScale(refValue);\r\n let y2 = isHorizontal ? yScale(refValue) : viewport.height;\r\n let validPositions = [NewPointLabelPosition.Above];\r\n\r\n if (isHorizontal) {\r\n // Horizontal line. y1 = y2\r\n dataLabelX = (horizontalPosition === referenceLineDataLabelHorizontalPosition.left) ? x1 + (rectWidth / 2) + offsetRefLine : x2 - (rectWidth / 2) - offsetRefLine;\r\n dataLabelY = y1;\r\n validPositions = (verticalPosition === referenceLineDataLabelVerticalPosition.above) ? [NewPointLabelPosition.Above] : [NewPointLabelPosition.Below];\r\n }\r\n else {\r\n // Vertical line. x1 = x2 \r\n dataLabelX = x1;\r\n dataLabelY = (verticalPosition === referenceLineDataLabelVerticalPosition.above) ? y1 + (rectHeight / 2) + offsetRefLine : y2 - (rectHeight / 2) - offsetRefLine;\r\n validPositions = (horizontalPosition === referenceLineDataLabelHorizontalPosition.left) ? [NewPointLabelPosition.Left] : [NewPointLabelPosition.Right];\r\n }\r\n\r\n let textWidth = TextMeasurementService.measureSvgTextWidth(properties);\r\n let textHeight = TextMeasurementService.estimateSvgTextHeight(properties, true /* tightFitForNumeric */);\r\n let parentShape: LabelParentPoint;\r\n\r\n parentShape = {\r\n point: {\r\n x: dataLabelX,\r\n y: dataLabelY,\r\n },\r\n radius: 0,\r\n validPositions: validPositions,\r\n };\r\n \r\n return {\r\n isPreferred: true,\r\n text: text,\r\n textSize: {\r\n width: textWidth,\r\n height: textHeight,\r\n },\r\n outsideFill: color.solid.color,\r\n insideFill: null,\r\n parentShape: parentShape,\r\n parentType: LabelDataPointParentType.Point,\r\n fontSize: 9,\r\n identity: null,\r\n secondRowText: null,\r\n key: options.key,\r\n };\r\n }\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n import DataView = powerbi.DataView;\r\n\r\n export function getInvalidValueWarnings(\r\n dataViews: DataView[],\r\n supportsNaN: boolean,\r\n supportsNegativeInfinity: boolean,\r\n supportsPositiveInfinity: boolean): IVisualWarning[] {\r\n\r\n let checker: InvalidDataValuesChecker = new InvalidDataValuesChecker(\r\n supportsNaN /*supportsNaN*/,\r\n supportsNegativeInfinity /*supportsNegativeInfinity*/,\r\n supportsPositiveInfinity /*supportsPositiveInfinity*/);\r\n\r\n // Show a warning if necessary.\r\n return checker.getWarningMessages(dataViews);\r\n }\r\n\r\n class InvalidDataValuesChecker {\r\n private supportsNaN: boolean;\r\n private supportsNegativeInfinity: boolean;\r\n private supportsPositiveInfinity: boolean;\r\n\r\n private hasNaN: boolean;\r\n private hasNegativeInfinity: boolean;\r\n private hasPositiveInfinity: boolean;\r\n private hasOutOfRange: boolean;\r\n\r\n constructor(supportsNaN: boolean, supportsNegativeInfinity: boolean, supportsPositiveInfinity: boolean) {\r\n this.supportsNaN = supportsNaN;\r\n this.supportsNegativeInfinity = supportsNegativeInfinity;\r\n this.supportsPositiveInfinity = supportsPositiveInfinity;\r\n }\r\n\r\n public getWarningMessages(dataViews: DataView[]): IVisualWarning[] {\r\n this.loadWarningStatus(dataViews);\r\n\r\n let warnings: IVisualWarning[] = [];\r\n if (this.hasNaN && !this.supportsNaN) {\r\n warnings.push(new NaNNotSupportedWarning());\r\n }\r\n\r\n if ((this.hasNegativeInfinity && !this.supportsNegativeInfinity)\r\n || (this.hasPositiveInfinity && !this.supportsPositiveInfinity)) {\r\n warnings.push(new InfinityValuesNotSupportedWarning());\r\n }\r\n\r\n if (this.hasOutOfRange) {\r\n warnings.push(new ValuesOutOfRangeWarning());\r\n }\r\n\r\n return warnings;\r\n }\r\n\r\n private loadWarningStatus(dataViews: DataView[]) {\r\n this.hasNaN = false;\r\n this.hasNegativeInfinity = false;\r\n this.hasOutOfRange = false;\r\n this.hasPositiveInfinity = false;\r\n\r\n for (let k: number = 0; k < dataViews.length; k++) {\r\n let dataView = dataViews[k];\r\n let values = dataView && dataView.categorical && dataView.categorical.values\r\n ? dataView.categorical.values\r\n : null;\r\n\r\n if (!values)\r\n return;\r\n\r\n let valueLength = values.length;\r\n for (let i: number = 0; i < valueLength; i++) {\r\n let value = values[i];\r\n\r\n if (value.values) {\r\n let valueValueLength = value.values.length;\r\n for (let j: number = 0; j < valueValueLength; j++) {\r\n let v = value.values[j];\r\n\r\n if (isNaN(v))\r\n this.hasNaN = true;\r\n else if (v === Number.POSITIVE_INFINITY)\r\n this.hasPositiveInfinity = true;\r\n else if (v === Number.NEGATIVE_INFINITY)\r\n this.hasNegativeInfinity = true;\r\n else if (v < -1e300 || v > 1e300)\r\n this.hasOutOfRange = true;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n} ","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n\r\n export interface IListView {\r\n data(data: any[], dataIdFunction: (d) => {}, dataAppended: boolean): IListView;\r\n rowHeight(rowHeight: number): IListView;\r\n viewport(viewport: IViewport): IListView;\r\n render(): void;\r\n empty(): void;\r\n }\r\n\r\n export module ListViewFactory {\r\n export function createListView(options): IListView {\r\n return new ListView(options);\r\n }\r\n }\r\n\r\n export interface ListViewOptions {\r\n enter: (selection: D3.Selection) => void;\r\n exit: (selection: D3.Selection) => void;\r\n update: (selection: D3.Selection) => void;\r\n loadMoreData: () => void;\r\n baseContainer: D3.Selection;\r\n rowHeight: number;\r\n viewport: IViewport;\r\n scrollEnabled: boolean;\r\n }\r\n\r\n /**\r\n * A UI Virtualized List, that uses the D3 Enter, Update & Exit pattern to update rows.\r\n * It can create lists containing either HTML or SVG elements.\r\n */\r\n class ListView implements IListView {\r\n private getDatumIndex: (d: any) => {};\r\n private _data: any[];\r\n private _totalRows: number;\r\n\r\n private options: ListViewOptions;\r\n private visibleGroupContainer: D3.Selection;\r\n private scrollContainer: D3.Selection;\r\n private scrollbarInner: D3.Selection;\r\n private cancelMeasurePass: () => void;\r\n private renderTimeoutId: number;\r\n \r\n /**\r\n * The value indicates the percentage of data already shown\r\n * in the list view that triggers a loadMoreData call.\r\n */\r\n private static loadMoreDataThreshold = 0.8;\r\n private static defaultRowHeight = 1;\r\n\r\n public constructor(options: ListViewOptions) {\r\n // make a copy of options so that it is not modified later by caller\r\n this.options = $.extend(true, {}, options);\r\n\r\n this.scrollbarInner = options.baseContainer\r\n .append('div')\r\n .classed('scrollbar-inner', true)\r\n .on('scroll', () => this.renderImpl(this.options.rowHeight));\r\n\r\n this.scrollContainer = this.scrollbarInner\r\n .append('div')\r\n .classed('scrollRegion', true);\r\n\r\n this.visibleGroupContainer = this.scrollContainer\r\n .append('div')\r\n .classed('visibleGroup', true);\r\n\r\n $(options.baseContainer.node()).find('.scroll-element').attr('drag-resize-disabled', 'true');\r\n\r\n ListView.SetDefaultOptions(options);\r\n }\r\n\r\n private static SetDefaultOptions(options: ListViewOptions) {\r\n options.rowHeight = options.rowHeight || ListView.defaultRowHeight;\r\n }\r\n\r\n public rowHeight(rowHeight: number): ListView {\r\n this.options.rowHeight = Math.ceil(rowHeight);\r\n return this;\r\n }\r\n\r\n public data(data: any[], getDatumIndex: (d) => {}, dataReset: boolean = false): IListView {\r\n this._data = data;\r\n this.getDatumIndex = getDatumIndex;\r\n this.setTotalRows();\r\n if (dataReset)\r\n $(this.scrollbarInner.node()).scrollTop(0);\r\n\r\n this.render();\r\n return this;\r\n }\r\n\r\n public viewport(viewport: IViewport): IListView {\r\n this.options.viewport = viewport;\r\n this.render();\r\n return this;\r\n }\r\n\r\n public empty(): void {\r\n this._data = [];\r\n this.render();\r\n }\r\n\r\n public render(): void {\r\n if (this.renderTimeoutId)\r\n window.clearTimeout(this.renderTimeoutId);\r\n\r\n this.renderTimeoutId = window.setTimeout(() => {\r\n this.getRowHeight().then((rowHeight: number) => {\r\n this.renderImpl(rowHeight);\r\n });\r\n this.renderTimeoutId = undefined;\r\n },0);\r\n }\r\n\r\n private renderImpl(rowHeight: number): void {\r\n let totalHeight = this.options.scrollEnabled ? Math.max(0, (this._totalRows * rowHeight)) : this.options.viewport.height;\r\n this.scrollContainer\r\n .style('height', totalHeight + \"px\")\r\n .attr('height', totalHeight);\r\n\r\n this.scrollToFrame(true /*loadMoreData*/);\r\n }\r\n\r\n private scrollToFrame(loadMoreData: boolean): void {\r\n let options = this.options;\r\n let visibleGroupContainer = this.visibleGroupContainer;\r\n let totalRows = this._totalRows;\r\n let rowHeight = options.rowHeight || ListView.defaultRowHeight;\r\n let visibleRows = this.getVisibleRows() || 1;\r\n let scrollTop: number = this.scrollbarInner.node().scrollTop;\r\n let scrollPosition = (scrollTop === 0) ? 0 : Math.floor(scrollTop / rowHeight);\r\n let transformAttr = SVGUtil.translateWithPixels(0, scrollPosition * rowHeight);\r\n\r\n visibleGroupContainer.style({\r\n //order matters for proper overriding\r\n 'transform': d => transformAttr,\r\n '-webkit-transform': transformAttr\r\n });\r\n\r\n let position0 = Math.max(0, Math.min(scrollPosition, totalRows - visibleRows + 1)),\r\n position1 = position0 + visibleRows;\r\n let rowSelection = visibleGroupContainer.selectAll(\".row\")\r\n .data(this._data.slice(position0, Math.min(position1, totalRows)), this.getDatumIndex);\r\n\r\n rowSelection\r\n .enter()\r\n .append('div')\r\n .classed('row', true)\r\n .call(d => options.enter(d));\r\n rowSelection.order();\r\n\r\n let rowUpdateSelection = visibleGroupContainer.selectAll('.row:not(.transitioning)');\r\n\r\n rowUpdateSelection.call(d => options.update(d));\r\n\r\n rowSelection\r\n .exit()\r\n .call(d => options.exit(d))\r\n .remove();\r\n\r\n if (loadMoreData && visibleRows !== totalRows && position1 >= totalRows * ListView.loadMoreDataThreshold)\r\n options.loadMoreData();\r\n }\r\n\r\n private setTotalRows(): void {\r\n let data = this._data;\r\n this._totalRows = data ? data.length : 0;\r\n }\r\n\r\n private getVisibleRows(): number {\r\n const minimumVisibleRows = 1;\r\n let rowHeight = this.options.rowHeight;\r\n let viewportHeight = this.options.viewport.height;\r\n\r\n if (!rowHeight || rowHeight < 1)\r\n return minimumVisibleRows;\r\n \r\n if (this.options.scrollEnabled)\r\n return Math.min(Math.ceil(viewportHeight / rowHeight) + 1, this._totalRows) || minimumVisibleRows;\r\n\r\n return Math.min(Math.floor(viewportHeight / rowHeight), this._totalRows) || minimumVisibleRows;\r\n }\r\n\r\n private getRowHeight(): JQueryPromise<number> {\r\n let deferred = $.Deferred<number>();\r\n let listView = this;\r\n let options = listView.options;\r\n if (this.cancelMeasurePass)\r\n this.cancelMeasurePass();\r\n\r\n // if there is no data, resolve and return\r\n if (!(this._data && this._data.length && options)) {\r\n listView.rowHeight(ListView.defaultRowHeight);\r\n return deferred.resolve(options.rowHeight).promise();\r\n }\r\n\r\n //render the first item to calculate the row height\r\n this.scrollToFrame(false /*loadMoreData*/);\r\n let requestAnimationFrameId = window.requestAnimationFrame(() => {\r\n //measure row height\r\n let firstRow = listView.visibleGroupContainer.select(\".row\").node().firstChild;\r\n let rowHeight: number = $(firstRow).outerHeight(true);\r\n listView.rowHeight(rowHeight);\r\n deferred.resolve(rowHeight);\r\n listView.cancelMeasurePass = undefined;\r\n window.cancelAnimationFrame(requestAnimationFrameId);\r\n });\r\n\r\n this.cancelMeasurePass = () => {\r\n window.cancelAnimationFrame(requestAnimationFrameId);\r\n deferred.reject();\r\n };\r\n\r\n return deferred.promise();\r\n }\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n const defaultLevelOfDetail = 11;\r\n\r\n export module MapUtil {\r\n export const Settings = {\r\n /** Maximum Bing requests at once. The Bing have limit how many request at once you can do per socket. */\r\n MaxBingRequest: 6,\r\n\r\n /** Maximum cache size of cached geocode data. */\r\n MaxCacheSize: 3000,\r\n\r\n /** Maximum cache overflow of cached geocode data to kick the cache reducing. */\r\n MaxCacheSizeOverflow: 100,\r\n\r\n // Bing Keys and URL\r\n BingKey: \"insert your key\",\r\n BingUrl: \"https://dev.virtualearth.net/REST/v1/Locations?\",\r\n BingUrlGeodata: \"https://platform.bing.com/geo/spatial/v1/public/Geodata?\",\r\n\r\n /** Switch the data result for geodata polygons to by double array instead locations array */\r\n UseDoubleArrayGeodataResult: true,\r\n UseDoubleArrayDequeueTimeout: 0,\r\n };\r\n\r\n // Bing map min/max boundaries\r\n export const MinAllowedLatitude = -85.05112878;\r\n export const MaxAllowedLatitude = 85.05112878;\r\n export const MinAllowedLongitude = -180;\r\n export const MaxAllowedLongitude = 180;\r\n export const TileSize = 256;\r\n export const MaxLevelOfDetail = 23;\r\n export const MinLevelOfDetail = 1;\r\n export const MaxAutoZoomLevel = 5;\r\n export const DefaultLevelOfDetail = 11;\r\n export const WorkerErrorName = \"___error___\";\r\n\r\n export const CategoryTypes = {\r\n Address: \"Address\",\r\n City: \"City\",\r\n Continent: \"Continent\",\r\n CountryRegion: \"Country\", // The text has to stay \"Country\" because it is used as a key in the geocoding caching dictionary\r\n County: \"County\",\r\n Longitude: \"Longitude\",\r\n Latitude: \"Latitude\",\r\n Place: \"Place\",\r\n PostalCode: \"PostalCode\",\r\n StateOrProvince: \"StateOrProvince\"\r\n };\r\n\r\n const safeCharacters: string = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_-\";\r\n\r\n export function clip(n: number, minValue: number, maxValue: number): number {\r\n return Math.min(Math.max(n, minValue), maxValue);\r\n }\r\n\r\n export function getMapSize(levelOfDetail: number): number {\r\n if (levelOfDetail === 23)\r\n return 2147483648; //256 << 23 overflow the integer and return a negative value\r\n\r\n if (Math.floor(levelOfDetail) === levelOfDetail)\r\n return 256 << levelOfDetail;\r\n\r\n return 256 * Math.pow(2, levelOfDetail);\r\n }\r\n\r\n /**\r\n * @param latLongArray - is a Float64Array as [lt0, lon0, lat1, long1, lat2, long2,....]\r\n * @returns Float64Array as [x0, y0, x1, y1, x2, y2,....]\r\n */\r\n export function latLongToPixelXYArray(latLongArray: Float64Array, levelOfDetail: number): Float64Array {\r\n let result = new Float64Array(latLongArray.length);\r\n for (let i = 0; i < latLongArray.length; i += 2) {\r\n let latitude = clip(latLongArray[i], MinAllowedLatitude, MaxAllowedLatitude);\r\n let longitude = clip(latLongArray[i + 1], MinAllowedLongitude, MaxAllowedLongitude);\r\n\r\n let x: number = (longitude + 180) / 360;\r\n let sinLatitude: number = Math.sin(latitude * Math.PI / 180);\r\n let y: number = 0.5 - Math.log((1 + sinLatitude) / (1 - sinLatitude)) / (4 * Math.PI);\r\n\r\n let mapSize: number = getMapSize(levelOfDetail);\r\n result[i] = clip(x * mapSize + 0.5, 0.0, mapSize - 1);\r\n result[i + 1] = clip(y * mapSize + 0.5, 0.0, mapSize - 1);\r\n }\r\n return result;\r\n }\r\n\r\n export function pointArrayToString(array: Float64Array) {\r\n let maxLength = 80000;\r\n if (array.length > maxLength) {\r\n let result: string = \"\";\r\n for (let i = 0; i < array.length; i += maxLength) {\r\n let array1 = Array.apply([], array.subarray(i, i + maxLength));\r\n result += array1.join(\" \") + \" \";\r\n }\r\n return result;\r\n }\r\n return Array.apply([], array).join(\" \");\r\n }\r\n\r\n export function pointArrayToArray(array: Float64Array): number[] {\r\n let maxLength = 80000;\r\n let result: number[] = [];\r\n if (array.length > maxLength) {\r\n for (let i = 0; i < array.length; i += maxLength) {\r\n let array1 = Array.apply([], array.subarray(i, i + maxLength));\r\n result.concat(array1);\r\n }\r\n return result;\r\n }\r\n return Array.apply([], array);\r\n }\r\n\r\n export function getLocationBoundaries(latLongArray: Float64Array): Microsoft.Maps.LocationRect {\r\n const northWest = {\r\n latitude: -90, longitude: 180\r\n };\r\n const southEast = {\r\n latitude: 90, longitude: -180\r\n };\r\n\r\n for (let i = 0; i < latLongArray.length; i += 2) {\r\n northWest.latitude = Math.max(latLongArray[i], northWest.latitude);\r\n northWest.longitude = Math.min(latLongArray[i + 1], northWest.longitude);\r\n southEast.latitude = Math.min(latLongArray[i], southEast.latitude);\r\n southEast.longitude = Math.max(latLongArray[i + 1], southEast.longitude);\r\n }\r\n\r\n northWest.longitude = clip(northWest.longitude, -180, 180);\r\n southEast.longitude = clip(southEast.longitude, -180, 180);\r\n\r\n return Microsoft.Maps.LocationRect.fromCorners(\r\n new Microsoft.Maps.Location(northWest.latitude, northWest.longitude),\r\n new Microsoft.Maps.Location(southEast.latitude, southEast.longitude));\r\n }\r\n\r\n /**\r\n * Note: this code is taken from Bing.\r\n * see Point Compression Algorithm http://msdn.microsoft.com/en-us/library/jj158958.aspx\r\n * see Decompression Algorithm in http://msdn.microsoft.com/en-us/library/dn306801.aspx\r\n */\r\n export function parseEncodedSpatialValueArray(value): Float64Array {\r\n let list: number[] = [];\r\n let index = 0;\r\n let xsum = 0;\r\n let ysum = 0;\r\n let max = 4294967296;\r\n\r\n while (index < value.length) {\r\n let n = 0;\r\n let k = 0;\r\n\r\n while (1) {\r\n\r\n if (index >= value.length) {\r\n return null;\r\n }\r\n\r\n let b = safeCharacters.indexOf(value.charAt(index++));\r\n if (b === -1) {\r\n return null;\r\n }\r\n\r\n let tmp = ((b & 31) * (Math.pow(2, k)));\r\n\r\n let ht = tmp / max;\r\n let lt = tmp % max;\r\n\r\n let hn = n / max;\r\n let ln = n % max;\r\n\r\n let nl = (lt | ln) >>> 0;\r\n n = (ht | hn) * max + nl;\r\n k += 5;\r\n if (b < 32) break;\r\n }\r\n\r\n let diagonal = Math.floor((Math.sqrt(8 * n + 5) - 1) / 2);\r\n n -= diagonal * (diagonal + 1) / 2;\r\n let ny = Math.floor(n);\r\n let nx = diagonal - ny;\r\n nx = (nx >> 1) ^ -(nx & 1);\r\n ny = (ny >> 1) ^ -(ny & 1);\r\n xsum += nx;\r\n ysum += ny;\r\n let lat = ysum * 0.00001;\r\n let lon = xsum * 0.00001;\r\n\r\n list.push(lat);\r\n list.push(lon);\r\n }\r\n return new Float64Array(list);\r\n }\r\n\r\n export function calcGeoData(data: IGeocodeBoundaryCoordinate) {\r\n let locations = data.locations;\r\n\r\n for (let i = 0; i < locations.length; i++) {\r\n let location = locations[i];\r\n if (!location.geographic) {\r\n location.geographic = MapUtil.parseEncodedSpatialValueArray(location.nativeBing);\r\n }\r\n let polygon = location.geographic;\r\n if (polygon) {\r\n if (!location.absolute) {\r\n location.absolute = MapUtil.latLongToPixelXYArray(polygon, MapUtil.DefaultLevelOfDetail);\r\n location.absoluteString = MapUtil.pointArrayToString(location.absolute);\r\n\r\n let geographicBounds = MapUtil.getLocationBoundaries(polygon);\r\n location.absoluteBounds = MapUtil.locationRectToRectXY(geographicBounds, MapUtil.DefaultLevelOfDetail);\r\n }\r\n }\r\n }\r\n }\r\n\r\n export function locationToPixelXY(location: Microsoft.Maps.Location, levelOfDetail: number): powerbi.visuals.Point {\r\n return latLongToPixelXY(location.latitude, location.longitude, levelOfDetail);\r\n }\r\n\r\n export function locationRectToRectXY(locationRect: Microsoft.Maps.LocationRect, levelOfDetail: number): powerbi.visuals.Rect {\r\n let topleft = locationToPixelXY(locationRect.getNorthwest(), levelOfDetail);\r\n let bottomRight = locationToPixelXY(locationRect.getSoutheast(), levelOfDetail);\r\n return new powerbi.visuals.Rect(topleft.x, topleft.y, bottomRight.x - topleft.x, bottomRight.y - topleft.y);\r\n }\r\n\r\n export function latLongToPixelXY(latitude: number, longitude: number, levelOfDetail: number): powerbi.visuals.Point {\r\n let array = latLongToPixelXYArray(new Float64Array([latitude, longitude]), levelOfDetail);\r\n return new powerbi.visuals.Point(array[0], array[1]);\r\n }\r\n\r\n export function pixelXYToLocation(pixelX: number, pixelY: number, levelOfDetail: number): Microsoft.Maps.Location {\r\n let mapSize = getMapSize(levelOfDetail);\r\n let x = (clip(pixelX, 0, mapSize - 1) / mapSize) - 0.5;\r\n let y = 0.5 - (clip(pixelY, 0, mapSize - 1) / mapSize);\r\n let latitude = 90 - 360 * Math.atan(Math.exp(-y * 2 * Math.PI)) / Math.PI;\r\n let longitude = 360 * x;\r\n return new Microsoft.Maps.Location(latitude, longitude);\r\n }\r\n }\r\n\r\n export class MapPolygonInfo {\r\n private _locationRect: Microsoft.Maps.LocationRect;\r\n private _baseRect: Rect;\r\n private _currentRect: Rect;\r\n\r\n constructor() {\r\n this._locationRect = new Microsoft.Maps.LocationRect(new Microsoft.Maps.Location(30, -30), 60, 60);\r\n }\r\n\r\n public reCalc(mapControl: Microsoft.Maps.Map, width: number, height: number) {\r\n let baseLocations = [this._locationRect.getNorthwest(), this._locationRect.getSoutheast()];\r\n width = width / 2.00;\r\n height = height / 2.00;\r\n\r\n if (!this._baseRect) {\r\n let l0 = MapUtil.locationToPixelXY(this._locationRect.getNorthwest(), defaultLevelOfDetail);\r\n let l1 = MapUtil.locationToPixelXY(this._locationRect.getSoutheast(), defaultLevelOfDetail);\r\n this._baseRect = new Rect(l0.x, l0.y, l1.x - l0.x, l1.y - l0.y);\r\n }\r\n\r\n let l = mapControl.tryLocationToPixel(baseLocations);\r\n this._currentRect = new Rect(l[0].x + width, l[0].y + height, l[1].x - l[0].x, l[1].y - l[0].y);\r\n }\r\n\r\n public get scale(): number {\r\n if (this._baseRect) {\r\n return this._currentRect.width / this._baseRect.width;\r\n }\r\n return 1.0;\r\n }\r\n\r\n public get transform(): Transform {\r\n let base = this._baseRect;\r\n let current = this._currentRect;\r\n let transform = new Transform();\r\n transform.translate(current.left, current.top);\r\n transform.scale((current.width / base.width), (current.height / base.height));\r\n transform.translate(-base.left, -base.top);\r\n return transform;\r\n }\r\n\r\n public get outherTransform() {\r\n let base = this._baseRect;\r\n let current = this._currentRect;\r\n let transform = new Transform();\r\n transform.translate(current.left, current.top);\r\n let scale = Math.sqrt(current.width / base.width);\r\n transform.scale(scale, scale);\r\n return transform;\r\n }\r\n\r\n public setViewBox(svg: SVGSVGElement) {\r\n let rect = svg.getBoundingClientRect();\r\n let current = this._currentRect;\r\n svg.setAttribute(\"viewBox\", [-current.left, -current.top, rect.width, rect.height].join(\" \"));\r\n }\r\n\r\n public get innerTransform() {\r\n let base = this._baseRect;\r\n let current = this._currentRect;\r\n let transform = new Transform();\r\n let scale = current.width / base.width;\r\n transform.scale(scale, scale);\r\n transform.translate(-base.left, -base.top);\r\n return transform;\r\n }\r\n\r\n public transformToString(transform: Transform) {\r\n let m = transform.matrix;\r\n return \"matrix(\" + m.m00 + \" \" + m.m10 + \" \" + m.m01 + \" \" + m.m11 + \" \" + m.m02 + \" \" + m.m12 + \")\";\r\n }\r\n }\r\n}\r\n","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n import Selector = powerbi.data.Selector;\r\n import SelectorsByColumn = powerbi.SelectorsByColumn;\r\n import SelectorForColumn = powerbi.SelectorForColumn;\r\n\r\n /**\r\n * A combination of identifiers used to uniquely identify\r\n * data points and their bound geometry.\r\n */\r\n export class SelectionId implements ISelectionId {\r\n private selector: Selector;\r\n // This is a new data structure to support drilling -- in the long term it should replace the 'selector' field\r\n private selectorsByColumn: SelectorsByColumn;\r\n private key: string;\r\n private keyWithoutHighlight: string;\r\n\r\n public highlight: boolean;\r\n\r\n constructor(selector: Selector, highlight: boolean) {\r\n this.selector = selector;\r\n this.highlight = highlight;\r\n this.key = JSON.stringify({ selector: selector ? Selector.getKey(selector) : null, highlight: highlight });\r\n this.keyWithoutHighlight = JSON.stringify({ selector: selector ? Selector.getKey(selector) : null });\r\n }\r\n\r\n public equals(other: SelectionId): boolean {\r\n if (!this.selector || !other.selector) {\r\n return (!this.selector === !other.selector) && this.highlight === other.highlight;\r\n }\r\n return this.highlight === other.highlight && Selector.equals(this.selector, other.selector);\r\n }\r\n \r\n /**\r\n * Checks equality against other for all identifiers existing in this.\r\n */\r\n public includes(other: SelectionId, ignoreHighlight: boolean = false): boolean {\r\n let thisSelector = this.selector;\r\n let otherSelector = other.selector;\r\n if (!thisSelector || !otherSelector) {\r\n return false;\r\n }\r\n let thisData = thisSelector.data;\r\n let otherData = otherSelector.data;\r\n if (!thisData && (thisSelector.metadata && thisSelector.metadata !== otherSelector.metadata))\r\n return false;\r\n if (!ignoreHighlight && this.highlight !== other.highlight)\r\n return false;\r\n if (thisData) {\r\n if (!otherData)\r\n return false;\r\n if (thisData.length > 0) {\r\n for (let i = 0, ilen = thisData.length; i < ilen; i++) {\r\n var thisValue = <DataViewScopeIdentity>thisData[i];\r\n if (!otherData.some((otherValue: DataViewScopeIdentity) => DataViewScopeIdentity.equals(thisValue, otherValue)))\r\n return false;\r\n }\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n public getKey(): string {\r\n return this.key;\r\n }\r\n\r\n public getKeyWithoutHighlight(): string {\r\n return this.keyWithoutHighlight;\r\n }\r\n \r\n /**\r\n * Temporary workaround since a few things currently rely on this, but won't need to.\r\n */\r\n public hasIdentity(): boolean {\r\n return (this.selector && !!this.selector.data);\r\n }\r\n\r\n public getSelector(): Selector {\r\n return this.selector;\r\n }\r\n\r\n public getSelectorsByColumn(): Selector {\r\n return this.selectorsByColumn;\r\n }\r\n\r\n public static createNull(highlight: boolean = false): SelectionId {\r\n return new SelectionId(null, highlight);\r\n }\r\n\r\n public static createWithId(id: DataViewScopeIdentity, highlight: boolean = false): SelectionId {\r\n let selector: Selector = null;\r\n if (id) {\r\n selector = {\r\n data: [id]\r\n };\r\n }\r\n return new SelectionId(selector, highlight);\r\n }\r\n\r\n public static createWithMeasure(measureId: string, highlight: boolean = false): SelectionId {\r\n debug.assertValue(measureId, 'measureId');\r\n\r\n let selector: Selector = {\r\n metadata: measureId\r\n };\r\n\r\n let selectionId = new SelectionId(selector, highlight);\r\n selectionId.selectorsByColumn = { metadata: measureId };\r\n return selectionId;\r\n }\r\n\r\n public static createWithIdAndMeasure(id: DataViewScopeIdentity, measureId: string, highlight: boolean = false): SelectionId {\r\n let selector: powerbi.data.Selector = {};\r\n if (id) {\r\n selector.data = [id];\r\n }\r\n if (measureId)\r\n selector.metadata = measureId;\r\n if (!id && !measureId)\r\n selector = null;\r\n\r\n let selectionId = new SelectionId(selector, highlight);\r\n\r\n return selectionId;\r\n }\r\n\r\n public static createWithIdAndMeasureAndCategory(id: DataViewScopeIdentity, measureId: string, queryName: string, highlight: boolean = false): SelectionId {\r\n let selectionId = this.createWithIdAndMeasure(id, measureId, highlight);\r\n\r\n if (selectionId.selector) {\r\n selectionId.selectorsByColumn = {};\r\n if (id && queryName) {\r\n selectionId.selectorsByColumn.dataMap = {};\r\n selectionId.selectorsByColumn.dataMap[queryName] = id;\r\n }\r\n if (measureId)\r\n selectionId.selectorsByColumn.metadata = measureId;\r\n }\r\n\r\n return selectionId;\r\n }\r\n\r\n public static createWithIds(id1: DataViewScopeIdentity, id2: DataViewScopeIdentity, highlight: boolean = false): SelectionId {\r\n let selector: Selector = null;\r\n let selectorData = SelectionId.idArray(id1, id2);\r\n if (selectorData)\r\n selector = { data: selectorData };\r\n \r\n return new SelectionId(selector, highlight);\r\n }\r\n\r\n public static createWithIdsAndMeasure(id1: DataViewScopeIdentity, id2: DataViewScopeIdentity, measureId: string, highlight: boolean = false): SelectionId {\r\n let selector: Selector = {};\r\n let selectorData = SelectionId.idArray(id1, id2);\r\n if (selectorData)\r\n selector.data = selectorData;\r\n\r\n if (measureId)\r\n selector.metadata = measureId;\r\n if (!id1 && !id2 && !measureId)\r\n selector = null;\r\n return new SelectionId(selector, highlight);\r\n }\r\n\r\n public static createWithSelectorForColumnAndMeasure(dataMap: SelectorForColumn, measureId: string, highlight: boolean = false): SelectionId {\r\n\r\n let selectionId: visuals.SelectionId;\r\n let keys = Object.keys(dataMap);\r\n if (keys.length === 2) {\r\n selectionId = this.createWithIdsAndMeasure(<DataViewScopeIdentity>dataMap[keys[0]], <DataViewScopeIdentity>dataMap[keys[1]], measureId, highlight);\r\n } else if (keys.length === 1) {\r\n selectionId = this.createWithIdsAndMeasure(<DataViewScopeIdentity>dataMap[keys[0]], null, measureId, highlight);\r\n } else {\r\n selectionId = this.createWithIdsAndMeasure(null, null, measureId, highlight);\r\n }\r\n\r\n let selectorsByColumn: SelectorsByColumn = {};\r\n if (!_.isEmpty(dataMap))\r\n selectorsByColumn.dataMap = dataMap;\r\n if (measureId)\r\n selectorsByColumn.metadata = measureId;\r\n if (!dataMap && !measureId)\r\n selectorsByColumn = null;\r\n\r\n selectionId.selectorsByColumn = selectorsByColumn;\r\n\r\n return selectionId;\r\n }\r\n\r\n public static createWithHighlight(original: SelectionId): SelectionId {\r\n debug.assertValue(original, 'original');\r\n debug.assert(!original.highlight, '!original.highlight');\r\n\r\n return new SelectionId(original.getSelector(), /*highlight*/ true);\r\n }\r\n\r\n private static idArray(id1: DataViewScopeIdentity, id2: DataViewScopeIdentity): DataViewScopeIdentity[] {\r\n if (id1 || id2) {\r\n let data = [];\r\n if (id1)\r\n data.push(id1);\r\n if (id2 && id2 !== id1)\r\n data.push(id2);\r\n return data;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * This class is designed to simplify the creation of SelectionId objects\r\n * It allows chaining to build up an object before calling 'create' to build a SelectionId\r\n */\r\n export class SelectionIdBuilder implements ISelectionIdBuilder {\r\n private dataMap: SelectorForColumn;\r\n private measure: string;\r\n\r\n public static builder(): SelectionIdBuilder {\r\n return new SelectionIdBuilder();\r\n }\r\n\r\n public withCategory(categoryColumn: DataViewCategoryColumn, index: number): this {\r\n if (categoryColumn && categoryColumn.source && categoryColumn.source.queryName && categoryColumn.identity)\r\n this.ensureDataMap()[categoryColumn.source.queryName] = categoryColumn.identity[index];\r\n \r\n return this;\r\n }\r\n\r\n public withSeries(seriesColumn: DataViewValueColumns, valueColumn: DataViewValueColumn | DataViewValueColumnGroup): this {\r\n if (seriesColumn && seriesColumn.source && seriesColumn.source.queryName && valueColumn)\r\n this.ensureDataMap()[seriesColumn.source.queryName] = valueColumn.identity;\r\n\r\n return this;\r\n }\r\n\r\n public withMeasure(measureId: string): this {\r\n this.measure = measureId;\r\n\r\n return this;\r\n }\r\n\r\n public createSelectionId(): SelectionId {\r\n return SelectionId.createWithSelectorForColumnAndMeasure(this.ensureDataMap(), this.measure);\r\n }\r\n\r\n private ensureDataMap(): SelectorForColumn {\r\n if (!this.dataMap)\r\n this.dataMap = {};\r\n\r\n return this.dataMap;\r\n }\r\n }\r\n}","/*\r\n* Power BI Visualizations\r\n*\r\n* Copyright (c) Microsoft Corporation\r\n* All rights reserved. \r\n* MIT License\r\n*\r\n* Permission is hereby granted, free of charge, to any person obtaining a copy\r\n* of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n* in the Software without restriction, including without limitation the rights\r\n* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n* copies of the Software, and to permit persons to whom the Software is\r\n* furnished to do so, subject to the following conditions:\r\n* \r\n* The above copyright notice and this permission notice shall be included in \r\n* all copies or substantial portions of the Software.\r\n* \r\n* THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n* THE SOFTWARE.\r\n*/\r\n\r\nmodule powerbi.visuals.utility {\r\n export interface SelectionManagerOptions{\r\n hostServices: IVisualHostServices;\r\n };\r\n\r\n export class SelectionManager {\r\n private selectedIds: SelectionId[];\r\n private hostServices: IVisualHostServices;\r\n\r\n public constructor(options: SelectionManagerOptions) {\r\n this.hostServices = options.hostServices;\r\n this.selectedIds = [];\r\n }\r\n\r\n public select(selectionId: SelectionId, multiSelect: boolean = false): JQueryDeferred<SelectionId[]> {\r\n let defered: JQueryDeferred<data.Selector[]> = $.Deferred();\r\n\r\n if (this.hostServices.shouldRetainSelection()) {\r\n this.sendSelectionToHost([selectionId]);\r\n }\r\n else {\r\n this.selectInternal(selectionId, multiSelect);\r\n this.sendSelectionToHost(this.selectedIds);\r\n }\r\n\r\n defered.resolve(this.selectedIds);\r\n return defered;\r\n }\r\n\r\n public hasSelection(): boolean {\r\n return this.selectedIds.length > 0;\r\n }\r\n\r\n public clear(): JQueryDeferred<{}> {\r\n let defered = $.Deferred();\r\n this.selectedIds = [];\r\n this.sendSelectionToHost([]);\r\n defered.resolve();\r\n return defered;\r\n }\r\n\r\n public getSelectionIds(): SelectionId[] {\r\n return this.selectedIds;\r\n }\r\n\r\n private sendSelectionToHost(ids: SelectionId[]) {\r\n let selectArgs: SelectEventArgs = {\r\n data: ids\r\n .filter((value: SelectionId) => value.hasIdentity())\r\n .map((value: SelectionId) => value.getSelector())\r\n };\r\n\r\n let data2: SelectorsByColumn[] = ids\r\n .filter((value: SelectionId) => value.getSelectorsByColumn() && value.hasIdentity())\r\n .map((value: SelectionId) => value.getSelectorsByColumn());\r\n\r\n if (data2 && data2.length > 0)\r\n selectArgs.data2 = data2;\r\n\r\n this.hostServices.onSelect(selectArgs);\r\n }\r\n\r\n private selectInternal(selectionId: SelectionId, multiSelect: boolean) {\r\n if (SelectionManager.containsSelection(this.selectedIds, selectionId)) {\r\n this.selectedIds = multiSelect\r\n ? this.selectedIds.filter(d => !data.Selector.equals(d, selectionId))\r\n : this.selectedIds.length > 1\r\n ? [selectionId] : [];\r\n } else {\r\n if (multiSelect)\r\n this.selectedIds.push(selectionId);\r\n else\r\n this.selectedIds = [selectionId];\r\n }\r\n }\r\n\r\n public static containsSelection(list: SelectionId[], id: SelectionId) {\r\n return list.some(d => data.Selector.equals(d.getSelector(), id.getSelector()));\r\n }\r\n }\r\n} ","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n \"use strict\";\r\n\r\n export module shapes {\r\n import Utility = jsCommon.Utility;\r\n\r\n export interface IPolygon {\r\n absoluteCentroid: IPoint;\r\n polygonPoints: IPoint[];\r\n }\r\n\r\n export class Polygon {\r\n\r\n private _absoluteCentroid: IPoint;\r\n private _absoluteBoundingRect: Rect;\r\n public polygonPoints: IPoint[];\r\n public pixelBoundingRect: Rect;\r\n\r\n constructor(absolutePoints: Float64Array) {\r\n this.polygonPoints = this.convertArrayPathToPoints(absolutePoints);\r\n }\r\n\r\n public absoluteCentroid(): IPoint {\r\n if (this._absoluteCentroid == null) {\r\n this._absoluteCentroid = this.calculatePolygonCentroid();\r\n }\r\n return this._absoluteCentroid;\r\n }\r\n\r\n public absoluteBoundingRect(): Rect {\r\n if (this._absoluteBoundingRect == null) {\r\n this._absoluteBoundingRect = this.calculateBoundingRect();\r\n }\r\n return this._absoluteBoundingRect;\r\n } \r\n\r\n /**\r\n * Check if label text contain in polygon shape.\r\n * \r\n * @return true/false is the label fit in polygon.\r\n * measure if rects points are inside the polygon shape\r\n * return true if there is at least 3 point inside the polygon\r\n */\r\n public contains(rect: IRect): boolean {\r\n let topLeft: IPoint = { x: rect.left, y: rect.top };\r\n let topRight: IPoint = { x: rect.left + rect.width, y: rect.top };\r\n let bottomLeft: IPoint = { x: rect.left, y: rect.top + rect.height };\r\n let bottomRight: IPoint = { x: rect.left + rect.width, y: rect.top + rect.height };\r\n\r\n return (this.inside(topLeft)\r\n && this.inside(topRight)\r\n && this.inside(bottomLeft)\r\n && this.inside(bottomRight));\r\n }\r\n\r\n /**\r\n * Check if label text is outside of polygon shape.\r\n * It checks 8 points in the label. TopLeft, TopCenter, TopRight, MiddleLeft, MiddleRight, BottomLeft, BottomMiddle, BottomRight\r\n * @return true/false is there is any conflict (at least one point inside the shape).\r\n */\r\n public conflicts(rect: IRect): boolean {\r\n if (!this.isConflictWithBoundingBox(rect)) {\r\n return false;\r\n }\r\n let topLeft: IPoint = { x: rect.left, y: rect.top };\r\n let topCenter: IPoint = { x: rect.left + rect.width/2, y: rect.top };\r\n let topRight: IPoint = { x: rect.left + rect.width, y: rect.top };\r\n let bottomLeft: IPoint = { x: rect.left, y: rect.top + rect.height };\r\n let bottomCenter: IPoint = { x: rect.left + rect.width/2, y: rect.top + rect.height };\r\n let bottomRight: IPoint = { x: rect.left + rect.width, y: rect.top + rect.height };\r\n let middleLeft: IPoint = { x: rect.left, y: rect.top + rect.height / 2};\r\n let middleRight: IPoint = { x: rect.left + rect.width, y: rect.top + rect.height/2 };\r\n\r\n return (this.inside(topLeft)\r\n || this.inside(topCenter)\r\n || this.inside(topRight)\r\n || this.inside(bottomLeft)\r\n || this.inside(bottomCenter)\r\n || this.inside(bottomRight)\r\n || this.inside(middleLeft)\r\n || this.inside(middleRight));\r\n }\r\n\r\n /**\r\n * returns intersection point of a line (depicted by two points) and a polygon.\r\n * \r\n * @return the point of intersection or null if there is no intersection.\r\n */\r\n public lineIntersectionPoint(p0: IPoint, p1: IPoint): IPoint {\r\n for (var i = 0; i < this.polygonPoints.length; i++) {\r\n let p2: IPoint = this.polygonPoints[i];\r\n let p3: IPoint = (i === this.polygonPoints.length - 1 ? this.polygonPoints[0] : this.polygonPoints[i + 1]);\r\n\r\n let intersection = this.getLineIntersection(p0, p1, p2, p3);\r\n\r\n if (intersection !== null) {\r\n return intersection;\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * calculate Polygon Area.\r\n *\r\n * @return the area of the polygon (as number).\r\n */\r\n public static calculateAbsolutePolygonArea(polygonPoints: IPoint[]): number {\r\n let i, j = 1;\r\n let area = 0.0;\r\n\r\n for (i = 0; i < polygonPoints.length; i++) {\r\n area += polygonPoints[i].x * polygonPoints[j].y - polygonPoints[j].x * polygonPoints[i].y;\r\n j = (j + 1) % polygonPoints.length;\r\n }\r\n area *= 0.5;\r\n return area;\r\n }\r\n\r\n /**\r\n * Check if label text is outside of polygon bounding box.\r\n * \r\n * @return true/false is there is any conflict (at least one point inside the shape).\r\n */\r\n private isConflictWithBoundingBox(rect: IRect): boolean {\r\n return Rect.isIntersecting(this.absoluteBoundingRect(), rect);\r\n }\r\n\r\n /**\r\n * Calculate Polygon Centroid.\r\n *\r\n * @return 'center' point of the polygon.\r\n * calculate the polygon area\r\n * calculate the average points of the polygon by x & y axis. \r\n * divided the average point by the area\r\n */\r\n private calculatePolygonCentroid(): IPoint {\r\n let area, tempPoint, cx, cy, i, j: number;\r\n \r\n /* First calculate the polygon's signed area A */\r\n area = Polygon.calculateAbsolutePolygonArea(this.polygonPoints);\r\n\r\n /* Now calculate the centroid coordinates Cx and Cy */\r\n cx = cy = 0.0;\r\n j = 1;\r\n for (i = 0; i < this.polygonPoints.length; i++) {\r\n tempPoint = this.polygonPoints[i].x * this.polygonPoints[j].y - this.polygonPoints[j].x * this.polygonPoints[i].y;\r\n cx += (this.polygonPoints[i].x + this.polygonPoints[j].x) * tempPoint;\r\n cy += (this.polygonPoints[i].y + this.polygonPoints[j].y) * tempPoint;\r\n j = (j + 1) % this.polygonPoints.length;\r\n }\r\n cx = cx / (6.0 * area);\r\n cy = cy / (6.0 * area);\r\n\r\n return {\r\n x: cx,\r\n y: cy,\r\n };\r\n }\r\n\r\n private calculateBoundingRect(): Rect {\r\n let minX: number = Number.POSITIVE_INFINITY;\r\n let minY: number = Number.POSITIVE_INFINITY;\r\n let maxX: number = Number.NEGATIVE_INFINITY;\r\n let maxY: number = Number.NEGATIVE_INFINITY;\r\n\r\n for (let i = 0; i < this.polygonPoints.length; i++) {\r\n if (this.polygonPoints[i].x < minX) {\r\n minX = this.polygonPoints[i].x;\r\n } else if (this.polygonPoints[i].x > maxX) {\r\n maxX = this.polygonPoints[i].x;\r\n }\r\n\r\n if (this.polygonPoints[i].y < minY) {\r\n minY = this.polygonPoints[i].y;\r\n } else if (this.polygonPoints[i].y > maxY) {\r\n maxY = this.polygonPoints[i].y;\r\n }\r\n }\r\n\r\n return {\r\n left: minX,\r\n top: minY,\r\n width: maxX - minX,\r\n height: maxY - minY\r\n };\r\n }\r\n\r\n /**\r\n * Check if point exist inside polygon shape.\r\n * \r\n * @return true/false if point exist inside shape.\r\n * ray-casting algorithm based on:\r\n * http://www.ecse.rpi.edu/Homepages/wrf/Research/Short_Notes/pnpoly.html\r\n */\r\n private inside(point: IPoint): boolean {\r\n var x = point.x, y = point.y;\r\n\r\n var insideVar: boolean = false;\r\n for (var i = 0, j = this.polygonPoints.length - 1; i < this.polygonPoints.length; j = i++) {\r\n var xi = this.polygonPoints[i].x, yi = this.polygonPoints[i].y;\r\n var xj = this.polygonPoints[j].x, yj = this.polygonPoints[j].y;\r\n\r\n var intersect: boolean = ((yi > y) !== (yj > y))\r\n && (x < (xj - xi) * (y - yi) / (yj - yi) + xi);\r\n if (intersect) {\r\n insideVar = !insideVar;\r\n }\r\n }\r\n return insideVar;\r\n };\r\n\r\n /**\r\n * Checks if a line (presented as two points) intersects with a another line\r\n */\r\n private getLineIntersection(line0p1: IPoint, line0p2: IPoint, line1p1: IPoint, line1p2: IPoint): IPoint {\r\n let p0_x: number = line0p1.x;\r\n let p0_y: number = line0p1.y;\r\n let p1_x: number = line0p2.x;\r\n let p1_y: number = line0p2.y;\r\n let p2_x: number = line1p1.x;\r\n let p2_y: number = line1p1.y;\r\n let p3_x: number = line1p2.x;\r\n let p3_y: number = line1p2.y;\r\n\r\n let s1_x: number = p1_x - p0_x;\r\n let s1_y: number = p1_y - p0_y;\r\n let s2_x: number = p3_x - p2_x;\r\n let s2_y: number = p3_y - p2_y;\r\n\r\n //Calculating collisions using cross products\r\n let s: number = (-s1_y * (p0_x - p2_x) + s1_x * (p0_y - p2_y)) / (-s2_x * s1_y + s1_x * s2_y);\r\n let t: number = (s2_x * (p0_y - p2_y) - s2_y * (p0_x - p2_x)) / (-s2_x * s1_y + s1_x * s2_y);\r\n\r\n // 0<=s<=1 and 0<=t<=1 ensures that the collision is part of the original line\r\n if (s >= 0 && s <= 1 && t >= 0 && t <= 1) {\r\n // Collision detected\r\n return { x: (p0_x + (t * s1_x)), y: (p0_y + (t * s1_y)) };\r\n }\r\n\r\n return null; // No collision\r\n }\r\n\r\n private convertArrayPathToPoints(path: Float64Array): IPoint[] {\r\n let pointsRes: IPoint[] = [];\r\n\r\n for (var i = 0; i < path.length; i += 2) {\r\n let x = path[i];\r\n let y = path[i + 1];\r\n let newPoint = {\r\n x: x,\r\n y: y,\r\n };\r\n pointsRes.push(newPoint);\r\n }\r\n return pointsRes;\r\n }\r\n }\r\n \r\n export interface IPoint {\r\n x: number;\r\n y: number;\r\n }\r\n\r\n export module Point {\r\n\r\n export function offset(point: IPoint, offsetX: number, offsetY: number): IPoint {\r\n let newPointX = ((point.x + offsetX) >= 0) ? (point.x + offsetX) : 0;\r\n let newPointY = ((point.y + offsetY) >= 0) ? (point.y + offsetY) : 0;\r\n return { x: newPointX, y: newPointY };\r\n }\r\n\r\n export function equals(point: IPoint, other: IPoint): boolean {\r\n return point !== undefined && point !== null && other !== undefined && other !== null && point.x === other.x && point.y === other.y;\r\n }\r\n\r\n export function clone(point: IPoint): IPoint {\r\n return (point !== null) ? { x: point.x, y: point.y } : null;\r\n }\r\n\r\n export function toString(point: IPoint): string {\r\n return \"{x:\" + point.x + \", y:\" + point.y + \"}\";\r\n }\r\n\r\n export function serialize(point: IPoint): string {\r\n return point.x + \",\" + point.y;\r\n }\r\n\r\n export function getDistance(point: IPoint, other: IPoint): number {\r\n if ((point === null) || (other) === null) {\r\n return null;\r\n }\r\n let diffX = other.x - point.x;\r\n let diffY = other.y - point.y;\r\n return Math.sqrt(diffX * diffX + diffY * diffY);\r\n }\r\n\r\n export function equalWithPrecision(point1: IPoint, point2: IPoint): boolean {\r\n return point1 === point2 ||\r\n (point1 !== undefined && point2 !== undefined && Double.equalWithPrecision(point1.x, point2.x) && Double.equalWithPrecision(point1.y, point2.y));\r\n }\r\n\r\n export function parsePoint(value: any, defaultValue?: IPoint): IPoint {\r\n if (value === null) {\r\n return (defaultValue === undefined) ? null : defaultValue;\r\n } else if (value === undefined) {\r\n return (defaultValue === undefined) ? null : defaultValue;\r\n } else {\r\n if (value.length === 2) {\r\n return { x: Utility.parseNumber(value[0]), y: Utility.parseNumber(value[1]) };\r\n } else if (typeof value === \"string\") {\r\n let parts = (<string>value).split(\",\");\r\n if (parts.length !== 2) {\r\n return (defaultValue === undefined) ? null : defaultValue;\r\n }\r\n return { x: Utility.parseNumber(parts[0]), y: Utility.parseNumber(parts[1]) };\r\n } else if ((value.length !== 2) && (typeof value !== \"string\")) {\r\n return (defaultValue === undefined) ? null : defaultValue;\r\n }\r\n else {\r\n return { x: Utility.parseNumber(value.x), y: Utility.parseNumber(value.y) };\r\n }\r\n }\r\n }\r\n }\r\n\r\n export interface ISize {\r\n width: number;\r\n height: number;\r\n }\r\n\r\n export module Size {\r\n\r\n export function isEmpty(size: ISize): boolean {\r\n return size.width === 0 && size.height === 0;\r\n }\r\n\r\n export function equals(size: ISize, other: ISize): boolean {\r\n return size !== undefined && size !== null && other !== undefined && other !== null && size.width === other.width && size.height === other.height;\r\n }\r\n\r\n export function clone(size: ISize): ISize {\r\n return (size !== null) ? { width: size.width, height: size.height } : null;\r\n }\r\n\r\n export function inflate(size: ISize, padding: IThickness): ISize {\r\n let result = clone(size);\r\n if (padding) {\r\n result.width += padding.left + padding.right;\r\n result.height += padding.top + padding.bottom;\r\n }\r\n return result;\r\n }\r\n\r\n export function deflate(size: ISize, padding: IThickness): ISize {\r\n let result = clone(size);\r\n if (padding) {\r\n result.width = result.width - padding.left - padding.right;\r\n if (result.width < 0) {\r\n result.width = 0;\r\n }\r\n result.height = result.height - padding.top - padding.bottom;\r\n if (result.height < 0) {\r\n result.height = 0;\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n export function combine(size: ISize, other: ISize): ISize {\r\n if (other) {\r\n size.width = Math.max(size.width, other.width);\r\n size.height = Math.max(size.height, other.height);\r\n }\r\n return size;\r\n }\r\n\r\n export function toRect(size: ISize): IRect {\r\n return { left: 0, top: 0, width: size.width, height: size.height };\r\n }\r\n\r\n export function toString(size: ISize): string {\r\n return \"{width:\" + size.width + \", height:\" + size.height + \"}\";\r\n }\r\n\r\n export function equal(size1: ISize, size2: ISize): boolean {\r\n return size1 === size2 ||\r\n (size1 !== undefined && size2 !== undefined && size1.width === size2.width && size1.height === size2.height);\r\n }\r\n\r\n export function equalWithPrecision(size1: ISize, size2: ISize): boolean {\r\n return size1 === size2 ||\r\n (size1 !== undefined && size2 !== undefined && Double.equalWithPrecision(size1.width, size2.width) && Double.equalWithPrecision(size1.height, size2.height));\r\n }\r\n\r\n export function parseSize(value: any, defaultValue?: ISize): ISize {\r\n if (value === null) {\r\n return (defaultValue === undefined) ? null : defaultValue;\r\n } else if (value === undefined) {\r\n return (defaultValue === undefined) ? null : defaultValue;\r\n } else {\r\n if (value.length === 2) {\r\n return { width: Utility.parseNumber(value[0]), height: Utility.parseNumber(value[1]) };\r\n } else if (typeof value === \"string\") {\r\n let parts = (<string>value).split(\",\");\r\n if (parts.length !== 2) {\r\n return (defaultValue === undefined) ? null : defaultValue;\r\n }\r\n return { width: Utility.parseNumber(parts[0]), height: Utility.parseNumber(parts[1]) };\r\n }\r\n else if ((value.length !== 2) && (typeof value !== \"string\")) {\r\n return (defaultValue === undefined) ? null : defaultValue;\r\n } else {\r\n return { width: Utility.parseNumber(value.width), height: Utility.parseNumber(value.height) };\r\n }\r\n }\r\n }\r\n }\r\n\r\n export module Rect {\r\n\r\n export function getOffset(rect: IRect): IPoint {\r\n return { x: rect.left, y: rect.top };\r\n }\r\n\r\n export function getSize(rect: IRect): ISize {\r\n return { width: rect.width, height: rect.height };\r\n }\r\n\r\n export function setSize(rect: IRect, value: ISize): void {\r\n rect.width = value.width;\r\n rect.height = value.height;\r\n }\r\n\r\n export function right(rect: IRect): number {\r\n return rect.left + rect.width;\r\n }\r\n\r\n export function bottom(rect: IRect): number {\r\n return rect.top + rect.height;\r\n }\r\n\r\n export function topLeft(rect: IRect): IPoint {\r\n return { x: rect.left, y: rect.top };\r\n }\r\n\r\n export function topRight(rect: IRect): IPoint {\r\n return { x: rect.left + rect.width, y: rect.top };\r\n }\r\n\r\n export function bottomLeft(rect: IRect): IPoint {\r\n return { x: rect.left, y: rect.top + rect.height };\r\n }\r\n\r\n export function bottomRight(rect: IRect): IPoint {\r\n return { x: rect.left + rect.width, y: rect.top + rect.height };\r\n }\r\n\r\n export function equals(rect: IRect, other: IRect): boolean {\r\n return other !== undefined && other !== null &&\r\n rect.left === other.left && rect.top === other.top && rect.width === other.width && rect.height === other.height;\r\n }\r\n\r\n export function clone(rect: IRect): IRect {\r\n return (rect !== null) ? { left: rect.left, top: rect.top, width: rect.width, height: rect.height } : null;\r\n }\r\n\r\n export function toString(rect: IRect): string {\r\n return \"{left:\" + rect.left + \", top:\" + rect.top + \", width:\" + rect.width + \", height:\" + rect.height + \"}\";\r\n }\r\n\r\n export function offset(rect: IRect, offsetX: number, offsetY: number): IRect {\r\n let newLeft = ((rect.left + offsetX) >= 0) ? rect.left + offsetX : 0;\r\n let newTop = ((rect.top + offsetY) >= 0) ? rect.top + offsetY : 0;\r\n\r\n return { left: newLeft, top: newTop, width: rect.width, height: rect.height };\r\n }\r\n\r\n export function inflate(rect: IRect, padding: IThickness): IRect {\r\n let result = clone(rect);\r\n if (padding) {\r\n result.left -= padding.left;\r\n result.top -= padding.top;\r\n result.width += padding.left + padding.right;\r\n result.height += padding.top + padding.bottom;\r\n }\r\n return result;\r\n }\r\n\r\n export function deflate(rect: IRect, padding: IThickness): IRect {\r\n let result = clone(rect);\r\n if (padding) {\r\n result.left += padding.left;\r\n result.top += padding.top;\r\n result.width -= padding.left + padding.right;\r\n result.height -= padding.top + padding.bottom;\r\n }\r\n return result;\r\n }\r\n\r\n export function inflateBy(rect: IRect, padding: number): IRect {\r\n return { left: rect.left - padding, top: rect.top - padding, width: rect.width + padding + padding, height: rect.height + padding + padding };\r\n }\r\n\r\n export function deflateBy(rect: IRect, padding: number): IRect {\r\n return { left: rect.left + padding, top: rect.top + padding, width: rect.width - padding - padding, height: rect.height - padding - padding };\r\n }\r\n \r\n /**\r\n * Get closest point.\r\n * \r\n * @return the closest point on the rect to the (x,y) point given.\r\n * In case the (x,y) given is inside the rect, (x,y) will be returned.\r\n * Otherwise, a point on a border will be returned.\r\n */\r\n export function getClosestPoint(rect: IRect, x: number, y: number): IPoint {\r\n return {\r\n x: Math.min(Math.max(rect.left, x), rect.left + rect.width),\r\n y: Math.min(Math.max(rect.top, y), rect.top + rect.height)\r\n };\r\n }\r\n\r\n export function equal(rect1: IRect, rect2: IRect): boolean {\r\n return rect1 === rect2 ||\r\n (rect1 !== undefined && rect2 !== undefined && rect1.left === rect2.left && rect1.top === rect2.top && rect1.width === rect2.width && rect1.height === rect2.height);\r\n }\r\n\r\n export function equalWithPrecision(rect1: IRect, rect2: IRect): boolean {\r\n return rect1 === rect2 ||\r\n (rect1 !== undefined && rect2 !== undefined &&\r\n Double.equalWithPrecision(rect1.left, rect2.left) && Double.equalWithPrecision(rect1.top, rect2.top) &&\r\n Double.equalWithPrecision(rect1.width, rect2.width) && Double.equalWithPrecision(rect1.height, rect2.height));\r\n }\r\n\r\n export function isEmpty(rect: IRect): boolean {\r\n return rect === undefined || rect === null || (rect.width === 0 && rect.height === 0);\r\n }\r\n\r\n export function containsPoint(rect: IRect, point: IPoint): boolean {\r\n if ((rect === null) || (point === null)) {\r\n return false;\r\n }\r\n return Double.lessOrEqualWithPrecision(rect.left, point.x) &&\r\n Double.lessOrEqualWithPrecision(point.x, rect.left + rect.width) &&\r\n Double.lessOrEqualWithPrecision(rect.top, point.y) &&\r\n Double.lessOrEqualWithPrecision(point.y, rect.top + rect.height);\r\n }\r\n\r\n export function isIntersecting(rect1: IRect, rect2: IRect): boolean {\r\n if (!rect1 || !rect2) {\r\n return false;\r\n }\r\n let left = Math.max(rect1.left, rect2.left);\r\n let right = Math.min(rect1.left + rect1.width, rect2.left + rect2.width);\r\n if (left > right) {\r\n return false;\r\n }\r\n let top = Math.max(rect1.top, rect2.top);\r\n let bottom = Math.min(rect1.top + rect1.height, rect2.top + rect2.height);\r\n return top <= bottom;\r\n }\r\n\r\n export function intersect(rect1: IRect, rect2: IRect): IRect {\r\n if (!rect1) {\r\n return rect2;\r\n }\r\n if (!rect2) {\r\n return rect1;\r\n }\r\n let left = Math.max(rect1.left, rect2.left);\r\n let top = Math.max(rect1.top, rect2.top);\r\n let right = Math.min(rect1.left + rect1.width, rect2.left + rect2.width);\r\n let bottom = Math.min(rect1.top + rect1.height, rect2.top + rect2.height);\r\n if (left <= right && top <= bottom) {\r\n return { left: left, top: top, width: right - left, height: bottom - top };\r\n } else {\r\n return { left: 0, top: 0, width: 0, height: 0 };\r\n }\r\n }\r\n\r\n export function combine(rect1: IRect, rect2: IRect): IRect {\r\n if (!rect1) {\r\n return rect2;\r\n }\r\n if (!rect2) {\r\n return rect1;\r\n }\r\n let left = Math.min(rect1.left, rect2.left);\r\n let top = Math.min(rect1.top, rect2.top);\r\n let right = Math.max(rect1.left + rect1.width, rect2.left + rect2.width);\r\n let bottom = Math.max(rect1.top + rect1.height, rect2.top + rect2.height);\r\n\r\n return { left: left, top: top, width: right - left, height: bottom - top };\r\n }\r\n\r\n export function parseRect(value: any, defaultValue?: IRect): IRect {\r\n if (value === null) {\r\n return (defaultValue === undefined) ? null : defaultValue;\r\n } else if (value === undefined) {\r\n return (defaultValue === undefined) ? null : defaultValue;\r\n } else {\r\n if (value.length === 4) {\r\n return { left: Utility.parseNumber(value[0]), top: Utility.parseNumber(value[1]), width: Utility.parseNumber(value[2]), height: Utility.parseNumber(value[3]) };\r\n } else if (typeof value === \"string\") {\r\n let parts = (<string>value).split(\",\");\r\n if (parts.length !== 4) {\r\n return (defaultValue === undefined) ? null : defaultValue;\r\n }\r\n return {\r\n left: Utility.parseNumber(parts[0]), top: Utility.parseNumber(parts[1]), width: Utility.parseNumber(parts[2]), height: Utility.parseNumber(parts[3])\r\n };\r\n }\r\n else if ((value.length !== 4) && (typeof value !== \"string\")) {\r\n return (defaultValue === undefined) ? null : defaultValue;\r\n }\r\n else {\r\n return { left: Utility.parseNumber(value.left), top: Utility.parseNumber(value.top), width: Utility.parseNumber(value.width), height: Utility.parseNumber(value.height) };\r\n }\r\n }\r\n }\r\n }\r\n \r\n export interface IThickness {\r\n top: number;\r\n left: number;\r\n right: number;\r\n bottom: number;\r\n }\r\n\r\n export module Thickness {\r\n\r\n export function inflate(thickness: IThickness, other: IThickness): IThickness {\r\n let result = clone(thickness);\r\n if (other) {\r\n result.left = thickness.left + other.left;\r\n result.right = thickness.right + other.right;\r\n result.bottom = thickness.bottom + other.bottom;\r\n result.top = thickness.top + other.top;\r\n }\r\n return result;\r\n }\r\n\r\n export function getWidth(thickness: IThickness): number {\r\n return thickness.left + thickness.right;\r\n }\r\n\r\n export function getHeight(thickness: IThickness): number {\r\n return thickness.top + thickness.bottom;\r\n }\r\n\r\n export function clone(thickness: IThickness): IThickness {\r\n return (thickness !== null) ? { left: thickness.left, top: thickness.top, right: thickness.right, bottom: thickness.bottom } : null;\r\n }\r\n\r\n export function equals(thickness: IThickness, other: IThickness): boolean {\r\n return thickness !== undefined && thickness !== null && other !== undefined && other !== null && thickness.left === other.left && thickness.bottom === other.bottom && thickness.right === other.right && thickness.top === other.top;\r\n }\r\n\r\n export function flipHorizontal(thickness: IThickness): void {\r\n let temp = thickness.right;\r\n thickness.right = thickness.left;\r\n thickness.left = temp;\r\n }\r\n\r\n export function flipVertical(thickness: IThickness): void {\r\n let top = thickness.top;\r\n thickness.top = thickness.bottom;\r\n thickness.bottom = top;\r\n }\r\n\r\n export function toString(thickness: IThickness): string {\r\n return \"{top:\" + thickness.top + \", left:\" + thickness.left + \", right:\" + thickness.right + \", bottom:\" + thickness.bottom + \"}\";\r\n }\r\n\r\n export function toCssString(thickness: IThickness): string {\r\n return thickness.top + \"px \" + thickness.right + \"px \" + thickness.bottom + \"px \" + thickness.left + \"px\";\r\n }\r\n\r\n export function isEmpty(thickness: IThickness): boolean {\r\n return thickness.left === 0 && thickness.top === 0 && thickness.right === 0 && thickness.bottom === 0;\r\n }\r\n\r\n export function equal(thickness1: IThickness, thickness2: IThickness): boolean {\r\n return thickness1 === thickness2 ||\r\n (thickness1 !== undefined && thickness2 !== undefined && thickness1.left === thickness2.left && thickness1.top === thickness2.top && thickness1.right === thickness2.right && thickness1.bottom === thickness2.bottom);\r\n }\r\n\r\n export function equalWithPrecision(thickness1: IThickness, thickness2: IThickness): boolean {\r\n return thickness1 === thickness2 ||\r\n (thickness1 !== undefined && thickness2 !== undefined &&\r\n Double.equalWithPrecision(thickness1.left, thickness2.left) && Double.equalWithPrecision(thickness1.top, thickness2.top) &&\r\n Double.equalWithPrecision(thickness1.right, thickness2.right) && Double.equalWithPrecision(thickness1.bottom, thickness2.bottom));\r\n }\r\n\r\n export function parseThickness(value: any, defaultValue?: IThickness, resetValue?: any): IThickness {\r\n if (value === null) {\r\n return (defaultValue === undefined) ? null : defaultValue;\r\n } else if (value === undefined) {\r\n return (defaultValue === undefined) ? null : defaultValue;\r\n } else {\r\n if (value.length === 4) {\r\n return { left: Utility.parseNumber(value[0]), top: Utility.parseNumber(value[1]), right: Utility.parseNumber(value[2]), bottom: Utility.parseNumber(value[3]) };\r\n } else if (typeof value === \"string\") {\r\n let parts = (<string>value).split(\",\");\r\n if (parts.length !== 4) {\r\n return (defaultValue === undefined) ? null : defaultValue;\r\n }\r\n return { left: Utility.parseNumber(parts[0]), top: Utility.parseNumber(parts[1]), right: Utility.parseNumber(parts[2]), bottom: Utility.parseNumber(parts[3]) };\r\n } else if ((value.length !== 4) && (typeof value !== \"string\")) {\r\n return (defaultValue === undefined) ? null : defaultValue;\r\n }\r\n else {\r\n return { left: Utility.parseNumber(value.left), top: Utility.parseNumber(value.top), right: Utility.parseNumber(value.right), bottom: Utility.parseNumber(value.bottom) };\r\n }\r\n }\r\n }\r\n }\r\n\r\n export interface IVector {\r\n x: number;\r\n y: number;\r\n }\r\n\r\n export module Vector {\r\n\r\n export function isEmpty(vector: IVector): boolean {\r\n return vector.x === 0 && vector.y === 0;\r\n }\r\n\r\n export function equals(vector: IVector, other: IPoint): boolean {\r\n return vector !== undefined && vector !== null && other !== undefined && other !== null && vector.x === other.x && vector.y === other.y;\r\n }\r\n\r\n export function clone(vector: IVector): IVector {\r\n return (vector !== null) ? { x: vector.x, y: vector.y } : null;\r\n }\r\n\r\n export function toString(vector: IVector): string {\r\n return \"{x:\" + vector.x + \", y:\" + vector.y + \"}\";\r\n }\r\n\r\n export function getLength(vector: IVector): number {\r\n return Math.sqrt(vector.x * vector.x + vector.y * vector.y);\r\n }\r\n\r\n export function getLengthSqr(vector: IVector): number {\r\n return vector.x * vector.x + vector.y * vector.y;\r\n }\r\n\r\n export function scale(vector: IVector, scalar: number): IVector {\r\n return { x: vector.x * scalar, y: vector.y * scalar };\r\n }\r\n\r\n export function normalize(vector: IVector): IVector {\r\n return !isEmpty(vector) ? scale(vector, 1 / getLength(vector)) : vector;\r\n }\r\n\r\n export function rotate90DegCW(vector: IVector): IVector {\r\n return { x: vector.y, y: -vector.x };\r\n }\r\n\r\n export function rotate90DegCCW(vector: IVector): IVector {\r\n return { x: -vector.y, y: vector.x };\r\n }\r\n\r\n export function rotate(vector: IVector, angle: number): IVector {\r\n let newX = vector.x * Math.cos(angle) - vector.y * Math.sin(angle);\r\n let newY = vector.x * Math.sin(angle) + vector.y * Math.cos(angle);\r\n return { x: newX, y: newY };\r\n }\r\n\r\n export function equal(vector1: IVector, vector2: IVector): boolean {\r\n return vector1 === vector2 ||\r\n (vector1 !== undefined && vector2 !== undefined && vector1.x === vector2.x && vector1.y === vector2.y);\r\n }\r\n\r\n export function equalWithPrecision(vector1: IVector, vector2: IVector): boolean {\r\n return vector1 === vector2 ||\r\n (vector1 !== undefined && vector2 !== undefined && Double.equalWithPrecision(vector1.x, vector2.x) && Double.equalWithPrecision(vector1.y, vector2.y));\r\n }\r\n\r\n export function add(vect1: IVector, vect2: IVector): IVector {\r\n if (!vect1 || !vect2) {\r\n return undefined;\r\n }\r\n return { x: vect1.x + vect2.x, y: vect1.y + vect2.y };\r\n }\r\n\r\n export function subtract(vect1: IVector, vect2: IVector): IVector {\r\n if (!vect1 || !vect2) {\r\n return undefined;\r\n }\r\n return { x: vect1.x - vect2.x, y: vect1.y - vect2.y };\r\n }\r\n\r\n export function dotProduct(vect1: IVector, vect2: IVector): number {\r\n if (!vect1 || !vect2) {\r\n return undefined;\r\n }\r\n return vect1.x * vect2.x + vect1.y * vect2.y;\r\n }\r\n\r\n export function getDeltaVector(p0: IPoint, p1: IPoint): IVector {\r\n if (!p0 || !p1) {\r\n return undefined;\r\n }\r\n return { x: p1.x - p0.x, y: p1.y - p0.y };\r\n }\r\n }\r\n\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n import PixelConverter = jsCommon.PixelConverter;\r\n\r\n /** Utility class for slicer*/\r\n export module SlicerUtil {\r\n /** CSS selectors for slicer elements. */\r\n export module Selectors {\r\n import createClassAndSelector = jsCommon.CssConstants.createClassAndSelector;\r\n\r\n export const HeaderContainer = createClassAndSelector('headerContainer');\r\n export const Header = createClassAndSelector('slicerHeader');\r\n export const HeaderText = createClassAndSelector('headerText');\r\n export const Body = createClassAndSelector('slicerBody');\r\n export const LabelText = createClassAndSelector('slicerText');\r\n export const CountText = createClassAndSelector('slicerCountText');\r\n export const Clear = createClassAndSelector('clear');\r\n export const MultiSelectEnabled = createClassAndSelector('isMultiSelectEnabled');\r\n }\r\n\r\n /** Const declarations*/\r\n export module DisplayNameKeys {\r\n export const Clear = 'Slicer_Clear';\r\n export const SelectAll = 'Slicer_SelectAll';\r\n }\r\n\r\n /** Helper class for slicer settings */\r\n export module SettingsHelper {\r\n export function areSettingsDefined(data: SlicerData): boolean {\r\n return data != null && data.slicerSettings != null;\r\n }\r\n }\r\n\r\n /** Helper class for handling slicer default value */\r\n export module DefaultValueHandler {\r\n export function getIdentityFields(dataView: DataView): data.SQExpr[] {\r\n if (!dataView)\r\n return;\r\n\r\n let dataViewCategorical = dataView.categorical;\r\n if (!dataViewCategorical || _.isEmpty(dataViewCategorical.categories))\r\n return;\r\n\r\n return <data.SQExpr[]>dataViewCategorical.categories[0].identityFields;\r\n }\r\n }\r\n\r\n // Compare the sqExpr of the scopeId with sqExprs of the retained values. \r\n // If match found, remove the item from the retainedValues list, and return true, \r\n // otherwise return false.\r\n export function tryRemoveValueFromRetainedList(value: DataViewScopeIdentity, selectedScopeIds: DataViewScopeIdentity[], caseInsensitive?: boolean): boolean {\r\n if (!value || _.isEmpty(selectedScopeIds))\r\n return false;\r\n\r\n for (let i = 0, len = selectedScopeIds.length; i < len; i++) {\r\n let retainedValueScopeId = selectedScopeIds[i];\r\n if (DataViewScopeIdentity.equals(value, retainedValueScopeId, caseInsensitive)) {\r\n selectedScopeIds.splice(i, 1);\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /** Helper class for creating and measuring slicer DOM elements */\r\n export class DOMHelper {\r\n public createSlicerHeader(hostServices: IVisualHostServices): HTMLElement {\r\n let slicerHeaderDiv = document.createElement('div');\r\n slicerHeaderDiv.className = Selectors.Header.class;\r\n\r\n let slicerHeader: D3.Selection = d3.select(slicerHeaderDiv);\r\n slicerHeader.append('span')\r\n .classed(Selectors.Clear.class, true)\r\n .attr('title', hostServices.getLocalizedString(DisplayNameKeys.Clear));\r\n slicerHeader.append('div').classed(Selectors.HeaderText.class, true);\r\n\r\n return slicerHeaderDiv;\r\n }\r\n\r\n public getHeaderTextProperties(settings: SlicerSettings): TextProperties {\r\n let headerTextProperties: TextProperties = {\r\n fontFamily: 'wf_segoe-ui_normal',\r\n fontSize: '10px'\r\n };\r\n if (settings.header.show) {\r\n headerTextProperties.fontSize = PixelConverter.fromPoint(settings.header.textSize);\r\n }\r\n return headerTextProperties;\r\n }\r\n\r\n public getSlicerBodyViewport(currentViewport: IViewport, settings: SlicerSettings, headerTextProperties: TextProperties): IViewport {\r\n let headerHeight = (settings.header.show) ? this.getHeaderHeight(settings, headerTextProperties) : 0;\r\n let slicerBodyHeight = currentViewport.height - (headerHeight + settings.header.borderBottomWidth);\r\n return {\r\n height: slicerBodyHeight,\r\n width: currentViewport.width\r\n };\r\n }\r\n\r\n public updateSlicerBodyDimensions(currentViewport: IViewport, slicerBody: D3.Selection, settings: SlicerSettings): void {\r\n let slicerViewport = this.getSlicerBodyViewport(currentViewport, settings, this.getHeaderTextProperties(settings));\r\n slicerBody.style({\r\n 'height': PixelConverter.toString(slicerViewport.height),\r\n 'width': PixelConverter.toString(slicerViewport.width),\r\n });\r\n }\r\n\r\n public getHeaderHeight(settings: SlicerSettings, textProperties: TextProperties): number {\r\n return TextMeasurementService.estimateSvgTextHeight(this.getTextProperties(settings.header.textSize, textProperties)) + settings.general.outlineWeight;\r\n }\r\n\r\n public getRowHeight(settings: SlicerSettings, textProperties: TextProperties): number {\r\n return TextMeasurementService.estimateSvgTextHeight(this.getTextProperties(settings.slicerText.textSize, textProperties)) + this.getRowsOutlineWidth(settings.slicerText.outline, settings.general.outlineWeight);\r\n }\r\n\r\n public styleSlicerHeader(slicerHeader: D3.Selection, settings: SlicerSettings, headerText: string): void {\r\n if (settings.header.show) {\r\n slicerHeader.style('display', 'block');\r\n let headerTextElement = slicerHeader.select(Selectors.HeaderText.selector)\r\n .text(headerText);\r\n this.setSlicerHeaderTextStyle(headerTextElement, settings);\r\n }\r\n else {\r\n slicerHeader.style('display', 'none');\r\n }\r\n }\r\n\r\n public setSlicerTextStyle(slicerText: D3.Selection, settings: SlicerSettings): void {\r\n slicerText\r\n .style({\r\n 'color': settings.slicerText.color,\r\n 'background-color': settings.slicerText.background,\r\n 'border-style': VisualBorderUtil.getBorderStyle(settings.slicerText.outline),\r\n 'border-color': settings.general.outlineColor,\r\n 'border-width': VisualBorderUtil.getBorderWidth(settings.slicerText.outline, settings.general.outlineWeight),\r\n 'font-size': PixelConverter.fromPoint(settings.slicerText.textSize),\r\n });\r\n }\r\n\r\n public getRowsOutlineWidth(outlineElement: string, outlineWeight: number): number {\r\n switch (outlineElement) {\r\n case 'None':\r\n case 'LeftRight':\r\n return 0;\r\n case 'BottomOnly':\r\n case 'TopOnly':\r\n return outlineWeight;\r\n case 'TopBottom':\r\n case 'Frame':\r\n return outlineWeight * 2;\r\n default:\r\n return 0;\r\n }\r\n }\r\n\r\n private setSlicerHeaderTextStyle(slicerHeader: D3.Selection, settings: SlicerSettings): void {\r\n slicerHeader\r\n .style({\r\n 'border-style': VisualBorderUtil.getBorderStyle(settings.header.outline),\r\n 'border-color': settings.general.outlineColor,\r\n 'border-width': VisualBorderUtil.getBorderWidth(settings.header.outline, settings.general.outlineWeight),\r\n 'color': settings.header.fontColor,\r\n 'background-color': settings.header.background,\r\n 'font-size': PixelConverter.fromPoint(settings.header.textSize),\r\n });\r\n }\r\n\r\n private getTextProperties(textSize: number, textProperties: TextProperties): TextProperties {\r\n textProperties.fontSize = PixelConverter.fromPoint(textSize);\r\n return textProperties;\r\n }\r\n }\r\n }\r\n}\r\n","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\" />\r\n\r\nmodule powerbi.visuals {\r\n /**\r\n * Contains functions/constants to aid in adding tooltips. \r\n */\r\n export module tooltipUtils {\r\n\r\n export function tooltipUpdate(selection: D3.Selection, tooltips: string[]): void {\r\n if (tooltips.length === 0)\r\n return;\r\n\r\n debug.assert(selection.length === tooltips.length || selection[0].length === tooltips.length, 'data length should match dom element count');\r\n let titles = selection.selectAll('title');\r\n let titlesUpdate = titles.data((d, i) => [tooltips[i]]);\r\n\r\n titlesUpdate.enter().append('title');\r\n titlesUpdate.exit().remove();\r\n titlesUpdate.text((d) => d);\r\n }\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n /**\r\n * Contains functions/constants to aid in SVG manupilation. \r\n */\r\n export module SVGUtil {\r\n /** \r\n * Very small values, when stringified, may be converted to scientific notation and cause a temporarily \r\n * invalid attribute or style property value.\r\n * For example, the number 0.0000001 is converted to the string \"1e-7\". \r\n * This is particularly noticeable when interpolating opacity values.\r\n * To avoid scientific notation, start or end the transition at 1e-6,\r\n * which is the smallest value that is not stringified in exponential notation.\r\n */\r\n export const AlmostZero = 1e-6;\r\n\r\n /**\r\n * Creates a translate string for use with the SVG transform call.\r\n */\r\n export function translate(x: number, y: number): string {\r\n debug.assertValue(x, 'x');\r\n debug.assertValue(y, 'y');\r\n return 'translate(' + x + ',' + y + ')';\r\n }\r\n\r\n /**\r\n * Creates a translateX string for use with the SVG transform call.\r\n */\r\n export function translateXWithPixels(x: number): string {\r\n debug.assertValue(x, 'x');\r\n return 'translateX(' + x + 'px)';\r\n }\r\n\r\n export function translateWithPixels(x: number, y: number): string {\r\n debug.assertValue(x, 'x');\r\n debug.assertValue(y, 'y');\r\n return 'translate(' + x + 'px,' + y + 'px)';\r\n }\r\n\r\n /**\r\n * Creates a translate + rotate string for use with the SVG transform call.\r\n */\r\n export function translateAndRotate(x: number, y: number, px: number, py: number, angle: number): string {\r\n debug.assertValue(x, 'x');\r\n debug.assertValue(y, 'y');\r\n debug.assertValue(px, 'px');\r\n debug.assertValue(py, 'py');\r\n debug.assertValue(angle, 'angle');\r\n\r\n return 'transform', \"translate(\"\r\n + x + \",\" + y + \")\"\r\n + \" rotate(\" + angle + \",\" + px + \",\" + py + \")\";\r\n }\r\n\r\n /**\r\n * Creates a scale string for use in a CSS transform property.\r\n */\r\n export function scale(scale: number): string {\r\n debug.assertValue(scale, 'scale');\r\n\r\n return `scale(${scale})`;\r\n }\r\n\r\n /**\r\n * Creates a translate + scale string for use with the SVG transform call.\r\n */\r\n export function translateAndScale(x: number, y: number, ratio: number): string {\r\n debug.assertValue(x, 'x');\r\n debug.assertValue(y, 'y');\r\n debug.assertValue(ratio, 'ratio');\r\n\r\n return 'transform', \"translate(\"\r\n + x + \",\" + y + \")\"\r\n + \" scale(\" + ratio + \")\";\r\n }\r\n\r\n /**\r\n * Creates a transform origin string for use in a CSS transform-origin property.\r\n */\r\n export function transformOrigin(xOffset: string, yOffset: string): string {\r\n debug.assertValue(xOffset, 'xOffset');\r\n debug.assertValue(yOffset, 'yOffset');\r\n\r\n return `${xOffset} ${yOffset}`;\r\n }\r\n\r\n /**\r\n * Forces all D3 transitions to complete.\r\n * Normally, zero-delay transitions are executed after an instantaneous delay (<10ms). \r\n * This can cause a brief flicker if the browser renders the page twice: once at the end of the first event loop, \r\n * then again immediately on the first timer callback. By flushing the timer queue at the end of the first event loop,\r\n * you can run any zero-delay transitions immediately and avoid the flicker.\r\n * \r\n * These flickers are noticable on IE, and with a large number of webviews(not recommend you ever do this) on iOS.\r\n */\r\n export function flushAllD3Transitions() {\r\n let now = Date.now;\r\n Date.now = function () { return Infinity; };\r\n d3.timer.flush();\r\n Date.now = now;\r\n }\r\n\r\n /**\r\n * Wrapper for flushAllD3Transitions.\r\n */\r\n export function flushAllD3TransitionsIfNeeded(options: VisualInitOptions | AnimationOptions) {\r\n if (!options)\r\n return;\r\n\r\n let animationOptions: AnimationOptions = <AnimationOptions>options;\r\n\r\n let asVisualInitOptions = <VisualInitOptions>options;\r\n if (asVisualInitOptions.animation)\r\n animationOptions = asVisualInitOptions.animation;\r\n\r\n if (animationOptions && animationOptions.transitionImmediate) {\r\n flushAllD3Transitions();\r\n }\r\n }\r\n\r\n /**\r\n * There is a known bug in IE10 that causes cryptic crashes for SVG elements with a null 'd' attribute:\r\n * https://github.com/mbostock/d3/issues/1737\r\n */\r\n export function ensureDAttribute(pathElement: D3.D3Element) {\r\n if (!pathElement.getAttribute('d')) {\r\n pathElement.setAttribute('d', '');\r\n }\r\n }\r\n\r\n /**\r\n * In IE10, it is possible to return SVGPoints with NaN members.\r\n */\r\n export function ensureValidSVGPoint(point: SVGPoint) {\r\n if (isNaN(point.x)) {\r\n point.x = 0;\r\n }\r\n if (isNaN(point.y)) {\r\n point.y = 0;\r\n }\r\n }\r\n\r\n /**\r\n * Parse the Transform string with value 'translate(x,y)'.\r\n * In Chrome for the translate(position) string the delimiter \r\n * is a comma and in IE it is a spaceso checking for both.\r\n */\r\n export function parseTranslateTransform(input: string): { x: string; y: string } {\r\n if (!input || input.length === 0) { // Interpet falsy and empty string as a no-op translate\r\n return {\r\n x: \"0\",\r\n y: \"0\",\r\n };\r\n }\r\n let translateCoordinates = input.split(/[\\s,]+/);\r\n\r\n debug.assertValue(translateCoordinates, 'translateCoordinates');\r\n debug.assert(translateCoordinates.length > 0, 'translate array must atleast have one value');\r\n\r\n let yValue = '0';\r\n let xValue: string;\r\n let xCoord = translateCoordinates[0];\r\n\r\n // Y coordinate is ommited in I.E if it is 0, so need to check against that\r\n if (translateCoordinates.length === 1) {\r\n // 10 refers to the length of 'translate('\r\n xValue = xCoord.substring(10, xCoord.length - 1);\r\n } else {\r\n let yCoord = translateCoordinates[1];\r\n yValue = yCoord.substring(0, yCoord.length - 1);\r\n // 10 refers to the length of 'translate('\r\n xValue = xCoord.substring(10, xCoord.length);\r\n }\r\n\r\n return {\r\n x: xValue,\r\n y: yValue\r\n };\r\n }\r\n\r\n /**\r\n * Create an arrow.\r\n */\r\n export function createArrow(width: number, height: number, rotate: number): { path: string; transform: string } {\r\n let transform = \"rotate(\" + rotate + \" \" + width / 2 + \" \" + height / 2 + \")\";\r\n let path = \"M0 0\";\r\n path += \"L0 \" + height;\r\n path += \"L\" + width + \" \" + height / 2 + \" Z\";\r\n return {\r\n path: path,\r\n transform: transform\r\n };\r\n }\r\n\r\n /**\r\n * Use the ratio of the scaled bounding rect and the SVG DOM bounding box to get the x and y transform scale values\r\n */\r\n export function getTransformScaleRatios(svgElement: SVGSVGElement): Point {\r\n if (svgElement != null) {\r\n let scaledRect = svgElement.getBoundingClientRect();\r\n let domRect = svgElement.getBBox();\r\n if (domRect.height > 0 && domRect.width > 0) {\r\n return {\r\n x: scaledRect.width / domRect.width,\r\n y: scaledRect.height / domRect.height\r\n };\r\n }\r\n }\r\n return { x: 1, y: 1 };\r\n }\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n /**\r\n * Contains functions/constants to aid in text manupilation. \r\n */\r\n export module TextUtil {\r\n \r\n /**\r\n * Remove breaking spaces from given string and replace by none breaking space (&nbsp).\r\n */\r\n export function removeBreakingSpaces(str: string): string {\r\n return str.toString().replace(new RegExp(' ', 'g'), '&nbsp');\r\n }\r\n\r\n /**\r\n * Remove ellipses from a given string\r\n */\r\n export function removeEllipses(str: string): string {\r\n return str.replace(/\\.\\.\\./g, '');\r\n }\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n import Utility = jsCommon.Utility;\r\n\r\n export module UrlHelper {\r\n export function isValidUrl(columnItem: DataViewMetadataColumn, value: string): boolean {\r\n return columnItem != null\r\n && columnItem.type != null\r\n && columnItem.type.misc != null\r\n && columnItem.type.misc.webUrl != null\r\n && columnItem.type.misc.webUrl\r\n && value != null\r\n && Utility.isValidUrl(value);\r\n }\r\n\r\n export function isValidImage(columnItem: DataViewMetadataColumn, value: string): boolean {\r\n return isImageColumn(columnItem)\r\n && value\r\n && Utility.isValidUrl(value);\r\n }\r\n\r\n export function hasImageColumn(dataView: DataView): boolean {\r\n if (!dataView || !dataView.metadata || _.isEmpty(dataView.metadata.columns))\r\n return false;\r\n\r\n for (let columnItem of dataView.metadata.columns)\r\n if (isImageColumn(columnItem))\r\n return true;\r\n\r\n return false;\r\n }\r\n\r\n function isImageColumn(columnItem: DataViewMetadataColumn): boolean {\r\n return columnItem\r\n && columnItem.type\r\n && columnItem.type.misc\r\n && columnItem.type.misc.imageUrl;\r\n }\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n\r\n export interface GradientSettings {\r\n diverging: boolean;\r\n minColor: any;\r\n midColor?: any;\r\n maxColor: any;\r\n minValue?: number;\r\n midValue?: number;\r\n maxValue?: number;\r\n };\r\n\r\n interface GradientColors {\r\n minColor: string;\r\n midColor?: string;\r\n maxColor: string;\r\n }\r\n\r\n export module GradientUtils {\r\n\r\n import SQExprBuilder = powerbi.data.SQExprBuilder;\r\n import DataViewObjectPropertyDefinition = powerbi.data.DataViewObjectPropertyDefinition;\r\n const DefaultMidColor: string = \"#ffffff\";\r\n const DataPointPropertyIdentifier: string = \"dataPoint\";\r\n const FillRulePropertyIdentifier: string = \"fillRule\";\r\n\r\n export function getFillRuleRole(objectDescs: powerbi.data.DataViewObjectDescriptors): string {\r\n if (!objectDescs)\r\n return;\r\n\r\n for (let objectName in objectDescs) {\r\n let objectDesc = objectDescs[objectName];\r\n for (let propertyName in objectDesc.properties) {\r\n let propertyDesc = objectDesc.properties[propertyName];\r\n if (propertyDesc.type && propertyDesc.type[FillRulePropertyIdentifier]) {\r\n return propertyDesc.rule.inputRole;\r\n }\r\n }\r\n }\r\n }\r\n\r\n export function shouldShowGradient(visualConfig): boolean {\r\n let isShowGradienCard: boolean = visualConfig && visualConfig.query && visualConfig.query.projections && visualConfig.query.projections['Gradient'] ? true : false;\r\n return isShowGradienCard;\r\n }\r\n\r\n export function getUpdatedGradientSettings(gradientObject: data.DataViewObjectDefinitions): GradientSettings {\r\n let gradientSettings: GradientSettings;\r\n\r\n if (gradientObject && !$.isEmptyObject(gradientObject)) {\r\n\r\n gradientSettings = getDefaultGradientSettings();\r\n\r\n for (let propertyName in gradientSettings) {\r\n let hasProperty: boolean = (<Object>gradientObject).hasOwnProperty(propertyName);\r\n if (hasProperty) {\r\n let value: any = gradientObject[propertyName];\r\n\r\n if (value && value.solid && value.solid.color) {\r\n value = value.solid.color;\r\n }\r\n\r\n gradientSettings[propertyName] = value;\r\n }\r\n }\r\n }\r\n\r\n return gradientSettings;\r\n }\r\n\r\n export function getGradientMeasureIndex(dataViewCategorical: DataViewCategorical): number {\r\n if (dataViewCategorical && dataViewCategorical.values && dataViewCategorical.values.grouped) {\r\n let grouped = dataViewCategorical.values.grouped();\r\n return DataRoleHelper.getMeasureIndexOfRole(grouped, 'Gradient');\r\n }\r\n return -1;\r\n }\r\n\r\n export function hasGradientRole(dataViewCategorical: DataViewCategorical): boolean {\r\n let gradientMeasureIndex = getGradientMeasureIndex(dataViewCategorical);\r\n return gradientMeasureIndex >= 0;\r\n }\r\n\r\n export function getDefaultGradientSettings(): GradientSettings {\r\n\r\n let colors: GradientColors = getDefaultColors();\r\n let gradientSettings: GradientSettings = {\r\n diverging: false,\r\n minColor: colors.minColor,\r\n midColor: DefaultMidColor,\r\n maxColor: colors.maxColor,\r\n minValue: undefined,\r\n midValue: undefined,\r\n maxValue: undefined,\r\n };\r\n\r\n return gradientSettings;\r\n }\r\n\r\n export function getDefaultFillRuleDefinition(): DataViewObjectPropertyDefinition {\r\n return getLinearGradien2FillRuleDefinition();\r\n }\r\n\r\n export function updateFillRule(propertyName: string, propertyValue: any, definitions: powerbi.data.DataViewObjectDefinitions): void {\r\n\r\n let dataPointObjectDefinition: data.DataViewObjectDefinition = data.DataViewObjectDefinitions.ensure(definitions, DataPointPropertyIdentifier, null);\r\n let fillRule: FillRuleDefinition = getFillRule(definitions);\r\n let numericValueExpr: data.SQConstantExpr;\r\n let colorValueExpr: data.SQExpr;\r\n\r\n if (!fillRule) {\r\n return;\r\n }\r\n\r\n if ($.isNumeric(propertyValue)) {\r\n numericValueExpr = propertyValue !== undefined ? SQExprBuilder.double(+propertyValue) : undefined;;\r\n }\r\n\r\n if (propertyName === \"minColor\" || propertyName === \"midColor\" || propertyName === \"maxColor\") {\r\n colorValueExpr = getColorExpressionValue(fillRule, propertyName, propertyValue);\r\n }\r\n\r\n if (propertyName === \"minColor\") {\r\n updateMinColor(fillRule, colorValueExpr);\r\n }\r\n else if (propertyName === \"midColor\") {\r\n updateMidColor(fillRule, colorValueExpr);\r\n }\r\n else if (propertyName === \"maxColor\") {\r\n updateMaxColor(fillRule, colorValueExpr);\r\n }\r\n else if (propertyName === \"minValue\") {\r\n updateMinValue(fillRule, numericValueExpr);\r\n }\r\n else if (propertyName === \"midValue\") {\r\n updateMidValue(fillRule, numericValueExpr);\r\n }\r\n else if (propertyName === \"maxValue\") {\r\n updateMaxValue(fillRule, numericValueExpr);\r\n }\r\n else if (propertyName === \"diverging\") {\r\n if (propertyValue) {\r\n fillRule = getLinearGradien3FillRuleDefinition(fillRule);\r\n }\r\n else {\r\n fillRule = getLinearGradien2FillRuleDefinition(fillRule);\r\n }\r\n dataPointObjectDefinition.properties[FillRulePropertyIdentifier] = fillRule;\r\n }\r\n else if (propertyName === \"revertToDefault\") {\r\n fillRule = this.getDefaultFillRuleDefinition();\r\n dataPointObjectDefinition.properties[FillRulePropertyIdentifier] = fillRule;\r\n }\r\n }\r\n\r\n export function getGradientSettings(baseFillRule: FillRuleDefinition): GradientSettings {\r\n if (baseFillRule) {\r\n return getGradientSettingsFromRule(baseFillRule);\r\n }\r\n else {\r\n return getDefaultGradientSettings();\r\n }\r\n }\r\n\r\n export function getFillRule(objectDefinitions: data.DataViewObjectDefinitions): FillRuleDefinition {\r\n let fillRuleDefinition: FillRuleDefinition = data.DataViewObjectDefinitions.getValue(objectDefinitions, { objectName: DataPointPropertyIdentifier, propertyName: FillRulePropertyIdentifier }, null);\r\n return fillRuleDefinition;\r\n }\r\n\r\n function getDefaultColors(): GradientColors {\r\n\r\n let dataColors: IDataColorPalette = new powerbi.visuals.DataColorPalette();\r\n let maxColorInfo: IColorInfo = dataColors.getColorByIndex(0);\r\n let colors = d3.scale.linear()\r\n .domain([0, 100])\r\n .range([\"#ffffff\", maxColorInfo.value]);\r\n let maxColor: string = maxColorInfo.value;\r\n let minColor: string = <any>colors(20);\r\n let midColor: string = DefaultMidColor;\r\n\r\n return {\r\n minColor: minColor,\r\n midColor: midColor,\r\n maxColor: maxColor,\r\n };\r\n }\r\n\r\n export function getGradientSettingsFromRule(fillRule: FillRuleDefinition): GradientSettings {\r\n let maxColor: string;\r\n let minColor: string;\r\n let midColor: string = DefaultMidColor;\r\n let maxValue: number;\r\n let midValue: number;\r\n let minValue: number;\r\n let diverging: boolean = fillRule.linearGradient3 !== undefined;\r\n\r\n if (fillRule.linearGradient2) {\r\n let maxColorExpr: any = fillRule.linearGradient2.max.color;\r\n let minColorExpr: any = fillRule.linearGradient2.min.color;\r\n let maxValueExpr: any = fillRule.linearGradient2.max.value;\r\n let minValueExpr: any = fillRule.linearGradient2.min.value;\r\n maxColor = maxColorExpr.value;\r\n minColor = minColorExpr.value;\r\n if (maxValueExpr) {\r\n maxValue = <number>maxValueExpr.value;\r\n }\r\n if (minValueExpr) {\r\n minValue = <number>minValueExpr.value;\r\n }\r\n }\r\n else if (fillRule.linearGradient3) {\r\n let maxColorExpr: any = fillRule.linearGradient3.max.color;\r\n let midColorExpr: any = fillRule.linearGradient3.mid.color;\r\n let minColorExpr: any = fillRule.linearGradient3.min.color;\r\n let maxValueExpr: any = fillRule.linearGradient3.max.value;\r\n let midValueExpr: any = fillRule.linearGradient3.mid.value;\r\n let minValueExpr: any = fillRule.linearGradient3.min.value;\r\n maxColor = maxColorExpr.value;\r\n midColor = midColorExpr.value;\r\n minColor = minColorExpr.value;\r\n if (maxValueExpr) {\r\n maxValue = <number>maxValueExpr.value;\r\n }\r\n if (midValueExpr) {\r\n midValue = <number>midValueExpr.value;\r\n }\r\n if (minValueExpr) {\r\n minValue = <number>minValueExpr.value;\r\n }\r\n }\r\n\r\n return {\r\n diverging: diverging,\r\n minColor: minColor,\r\n midColor: midColor,\r\n maxColor: maxColor,\r\n minValue: minValue,\r\n midValue: midValue,\r\n maxValue: maxValue,\r\n };\r\n }\r\n\r\n function getLinearGradien2FillRuleDefinition(baseFillRule?: FillRuleDefinition): DataViewObjectPropertyDefinition {\r\n let gradientSettings: GradientSettings = getGradientSettings(baseFillRule);\r\n let fillRuleDefinition: FillRuleDefinition = {\r\n linearGradient2: {\r\n max: { color: SQExprBuilder.text(gradientSettings.maxColor) },\r\n min: { color: SQExprBuilder.text(gradientSettings.minColor) },\r\n }\r\n };\r\n\r\n return fillRuleDefinition;\r\n }\r\n\r\n function getLinearGradien3FillRuleDefinition(baseFillRule?: FillRuleDefinition): DataViewObjectPropertyDefinition {\r\n let gradientSettings: GradientSettings = getGradientSettings(baseFillRule);\r\n let fillRuleDefinition: FillRuleDefinition = {\r\n linearGradient3: {\r\n max: { color: SQExprBuilder.text(gradientSettings.maxColor) },\r\n mid: { color: SQExprBuilder.text(gradientSettings.midColor) },\r\n min: { color: SQExprBuilder.text(gradientSettings.minColor) },\r\n }\r\n };\r\n\r\n return fillRuleDefinition;\r\n }\r\n\r\n function getDefaultColorExpression(fillRule: FillRuleDefinition, propertyName: string): data.SQExpr {\r\n let defaultColor: data.SQExpr;\r\n let defaultFillRule: FillRuleDefinition;\r\n\r\n if (fillRule.linearGradient3) {\r\n defaultFillRule = getLinearGradien3FillRuleDefinition();\r\n if (propertyName === \"minColor\") {\r\n defaultColor = defaultFillRule.linearGradient3.min.color;\r\n }\r\n else if (propertyName === \"midColor\") {\r\n defaultColor = defaultFillRule.linearGradient3.mid.color;\r\n }\r\n else if (propertyName === \"maxColor\") {\r\n defaultColor = defaultFillRule.linearGradient3.max.color;\r\n }\r\n }\r\n else if (fillRule.linearGradient2) {\r\n defaultFillRule = getLinearGradien2FillRuleDefinition();\r\n if (propertyName === \"minColor\") {\r\n defaultColor = defaultFillRule.linearGradient2.min.color;\r\n }\r\n else if (propertyName === \"maxColor\") {\r\n defaultColor = defaultFillRule.linearGradient2.max.color;\r\n }\r\n }\r\n\r\n return defaultColor;\r\n }\r\n\r\n function getColorExpressionValue(fillRule: FillRuleDefinition, propertyName: string, propertyValue: string): data.SQExpr {\r\n let colorExpressionValue: data.SQExpr;\r\n if (propertyValue) {\r\n colorExpressionValue = SQExprBuilder.text(propertyValue);\r\n }\r\n else {\r\n colorExpressionValue = getDefaultColorExpression(fillRule, propertyName);\r\n }\r\n return colorExpressionValue;\r\n }\r\n\r\n function updateMinColor(fillRule: FillRuleDefinition, colorExpressionValue: data.SQExpr) {\r\n if (fillRule.linearGradient2) {\r\n fillRule.linearGradient2.min.color = colorExpressionValue;\r\n }\r\n else if (fillRule.linearGradient3) {\r\n fillRule.linearGradient3.min.color = colorExpressionValue;\r\n }\r\n }\r\n\r\n function updateMidColor(fillRule: FillRuleDefinition, colorExpressionValue: data.SQExpr) {\r\n if (fillRule.linearGradient3) {\r\n fillRule.linearGradient3.mid.color = colorExpressionValue;\r\n }\r\n }\r\n\r\n function updateMaxColor(fillRule: FillRuleDefinition, colorExpressionValue: data.SQExpr) {\r\n if (fillRule.linearGradient2) {\r\n fillRule.linearGradient2.max.color = colorExpressionValue;\r\n }\r\n else if (fillRule.linearGradient3) {\r\n fillRule.linearGradient3.max.color = colorExpressionValue;\r\n }\r\n }\r\n\r\n function updateMinValue(fillRule: FillRuleDefinition, value: data.SQConstantExpr) {\r\n if (fillRule.linearGradient2) {\r\n fillRule.linearGradient2.min.value = value;\r\n }\r\n else if (fillRule.linearGradient3) {\r\n fillRule.linearGradient3.min.value = value;\r\n }\r\n }\r\n\r\n function updateMidValue(fillRule: FillRuleDefinition, value: data.SQConstantExpr) {\r\n if (fillRule.linearGradient3) {\r\n fillRule.linearGradient3.mid.value = value;\r\n }\r\n }\r\n\r\n function updateMaxValue(fillRule: FillRuleDefinition, value: data.SQConstantExpr) {\r\n if (fillRule.linearGradient2) {\r\n fillRule.linearGradient2.max.value = value;\r\n }\r\n else if (fillRule.linearGradient3) {\r\n fillRule.linearGradient3.max.value = value;\r\n }\r\n }\r\n };\r\n} ","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n export interface VisualBackground {\r\n image?: ImageValue;\r\n transparency?: number;\r\n }\r\n\r\n export module visualBackgroundHelper {\r\n export function getDefaultColor(): string {\r\n return '#FFF';\r\n }\r\n\r\n export function getDefaultTransparency(): number {\r\n return 50;\r\n }\r\n\r\n export function getDefaultShow(): boolean {\r\n return true;\r\n }\r\n\r\n export function getDefaultValues() {\r\n return {\r\n color: getDefaultColor(),\r\n transparency: getDefaultTransparency(),\r\n show: getDefaultShow()\r\n };\r\n }\r\n\r\n export function enumeratePlot(enumeration: ObjectEnumerationBuilder, background: VisualBackground, backgroundImageEnabled: boolean): void {\r\n // featureSwitch\r\n if (!backgroundImageEnabled)\r\n return;\r\n\r\n let transparency = (background && background.transparency);\r\n if (transparency == null)\r\n transparency = getDefaultTransparency();\r\n\r\n let backgroundObject: VisualObjectInstance = {\r\n selector: null,\r\n properties: {\r\n transparency: transparency,\r\n image: (background && background.image)\r\n },\r\n objectName: 'plotArea',\r\n };\r\n\r\n enumeration.pushInstance(backgroundObject);\r\n }\r\n\r\n export function renderBackgroundImage(\r\n background: VisualBackground,\r\n visualElement: JQuery,\r\n layout: Rect): void {\r\n let image = background && background.image;\r\n let imageUrl = image && image.url;\r\n let imageFit = image && image.scaling;\r\n let imageTransparency = background && background.transparency;\r\n let backgroundImage = visualElement.children('.background-image');\r\n\r\n // If there were image and it was removed\r\n if (!imageUrl) {\r\n if (backgroundImage.length !== 0)\r\n backgroundImage.remove();\r\n return;\r\n }\r\n\r\n // If this is the first edit of the image\r\n if (backgroundImage.length === 0) {\r\n // Place the div only if the image exists in order to keep the html as clean as possible\r\n visualElement.prepend('<div class=\"background-image\"></div>');\r\n backgroundImage = visualElement.children('.background-image');\r\n\r\n // the div should be positioned absolute in order to get on top of the sibling svg\r\n backgroundImage.css('position', 'absolute');\r\n }\r\n\r\n // Get the size and margins from the visual for the div will placed inside the plot area\r\n backgroundImage.css({\r\n 'width': layout.width,\r\n 'height': layout.height,\r\n 'margin-left': layout.left,\r\n 'margin-top': layout.top,\r\n });\r\n\r\n // Background properties\r\n backgroundImage.css({\r\n 'background-image': 'url(' + imageUrl + ')',\r\n 'background-repeat': 'no-repeat',\r\n 'opacity': (100 - imageTransparency) / 100,\r\n });\r\n\r\n switch (imageFit) {\r\n // The image will be centered in its initial size\r\n case visuals.imageScalingType.normal: {\r\n backgroundImage.css({\r\n 'background-size': '',\r\n 'background-position': '50% 50%',\r\n });\r\n break;\r\n }\r\n // The image will be streched all over the background\r\n case visuals.imageScalingType.fit: {\r\n backgroundImage.css({\r\n 'background-size': '100% 100%',\r\n 'background-position': '',\r\n });\r\n break;\r\n }\r\n // The image will stretch on the width and the height will scale accordingly\r\n case visuals.imageScalingType.fill: {\r\n backgroundImage.css({\r\n 'background-size': '100%',\r\n 'background-position': '50% 50%',\r\n });\r\n break;\r\n }\r\n default: {\r\n backgroundImage.css({\r\n 'background-size': '',\r\n 'background-position': '50% 50%',\r\n });\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n} \r\n","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n import Selector = powerbi.data.Selector;\r\n\r\n /**\r\n * A helper class for building a VisualObjectInstanceEnumerationObject:\r\n * - Allows call chaining (e.g., builder.pushInstance({...}).pushInstance({...})\r\n * - Allows creating of containers (via pushContainer/popContainer)\r\n */\r\n export class ObjectEnumerationBuilder {\r\n private instances: VisualObjectInstance[];\r\n private containers: VisualObjectInstanceContainer[];\r\n private containerIdx: number;\r\n\r\n public pushInstance(instance: VisualObjectInstance): ObjectEnumerationBuilder {\r\n debug.assertValue(instance, 'instance');\r\n\r\n let instances = this.instances;\r\n if (!instances) {\r\n instances = this.instances = [];\r\n }\r\n\r\n let containerIdx = this.containerIdx;\r\n if (containerIdx != null) {\r\n instance.containerIdx = containerIdx;\r\n }\r\n\r\n // Attempt to merge with an existing item if possible.\r\n for (let existingInstance of instances) {\r\n if (this.canMerge(existingInstance, instance)) {\r\n this.extend(existingInstance, instance, 'properties');\r\n this.extend(existingInstance, instance, 'validValues');\r\n\r\n return this;\r\n }\r\n }\r\n\r\n instances.push(instance);\r\n\r\n return this;\r\n }\r\n\r\n public pushContainer(container: VisualObjectInstanceContainer): ObjectEnumerationBuilder {\r\n debug.assertValue(container, 'container');\r\n\r\n let containers = this.containers;\r\n if (!containers) {\r\n containers = this.containers = [];\r\n }\r\n\r\n let updatedLen = containers.push(container);\r\n this.containerIdx = updatedLen - 1;\r\n\r\n return this;\r\n }\r\n\r\n public popContainer(): ObjectEnumerationBuilder {\r\n this.containerIdx = undefined;\r\n\r\n return this;\r\n }\r\n\r\n public complete(): VisualObjectInstanceEnumerationObject {\r\n if (!this.instances)\r\n return;\r\n\r\n let result: VisualObjectInstanceEnumerationObject = {\r\n instances: this.instances,\r\n };\r\n\r\n let containers = this.containers;\r\n if (containers) {\r\n result.containers = containers;\r\n }\r\n\r\n return result;\r\n }\r\n\r\n private canMerge(x: VisualObjectInstance, y: VisualObjectInstance): boolean {\r\n debug.assertValue(x, 'x');\r\n debug.assertValue(y, 'y');\r\n\r\n return x.objectName === y.objectName &&\r\n x.containerIdx === y.containerIdx &&\r\n Selector.equals(x.selector, y.selector);\r\n }\r\n\r\n private extend(target: VisualObjectInstance, source: VisualObjectInstance, propertyName: string): void {\r\n debug.assertValue(target, 'target');\r\n debug.assertValue(source, 'source');\r\n debug.assertValue(propertyName, 'propertyName');\r\n\r\n let sourceValues = source[propertyName];\r\n if (!sourceValues)\r\n return;\r\n\r\n let targetValues = target[propertyName];\r\n if (!targetValues)\r\n targetValues = target[propertyName] = {};\r\n\r\n for (let valuePropertyName in sourceValues) {\r\n if (targetValues[valuePropertyName]) {\r\n // Properties have first-writer-wins semantics.\r\n continue;\r\n }\r\n\r\n targetValues[valuePropertyName] = sourceValues[valuePropertyName];\r\n }\r\n }\r\n\r\n public static merge(x: VisualObjectInstanceEnumeration, y: VisualObjectInstanceEnumeration): VisualObjectInstanceEnumerationObject {\r\n let xNormalized = ObjectEnumerationBuilder.normalize(x);\r\n let yNormalized = ObjectEnumerationBuilder.normalize(y);\r\n\r\n if (!xNormalized || !yNormalized)\r\n return xNormalized || yNormalized;\r\n\r\n debug.assertValue(xNormalized, 'xNormalized');\r\n debug.assertValue(yNormalized, 'yNormalized');\r\n\r\n let xCategoryCount = xNormalized.containers ? xNormalized.containers.length : 0;\r\n\r\n for (let yInstance of yNormalized.instances) {\r\n xNormalized.instances.push(yInstance);\r\n\r\n if (yInstance.containerIdx != null)\r\n yInstance.containerIdx += xCategoryCount;\r\n }\r\n\r\n let yContainers = yNormalized.containers;\r\n if (!_.isEmpty(yContainers)) {\r\n if (xNormalized.containers)\r\n Array.prototype.push.apply(xNormalized.containers, yContainers);\r\n else\r\n xNormalized.containers = yContainers;\r\n }\r\n\r\n return xNormalized;\r\n }\r\n\r\n public static normalize(x: VisualObjectInstanceEnumeration): VisualObjectInstanceEnumerationObject {\r\n debug.assertAnyValue(x, 'x');\r\n\r\n if (_.isArray(x)) {\r\n return { instances: <VisualObjectInstance[]>x };\r\n }\r\n\r\n return <VisualObjectInstanceEnumerationObject>x;\r\n }\r\n\r\n public static getContainerForInstance(enumeration: VisualObjectInstanceEnumerationObject, instance: VisualObjectInstance): VisualObjectInstanceContainer {\r\n debug.assertValue(enumeration, \"enumeration\");\r\n debug.assertValue(instance, \"instance\");\r\n debug.assertValue(enumeration.containers, \"containers\");\r\n debug.assert(enumeration.containers.length > instance.containerIdx, \"no container found in containers collection\");\r\n\r\n return enumeration.containers[instance.containerIdx];\r\n }\r\n \r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n /** Helper class for Visual border styles */\r\n export module VisualBorderUtil {\r\n export function getBorderStyle(outlineElement: string): string {\r\n return outlineElement === '0px' ? 'none' : 'solid';\r\n }\r\n\r\n export function getBorderStyleWithWeight(outlineType: string, outlineWeight: number): string {\r\n return (outlineType === 'None' || outlineWeight === 0) ? 'none' : 'solid';\r\n }\r\n\r\n export function getBorderWidth(outlineElement: string, outlineWeight: number): string {\r\n switch (outlineElement) {\r\n case 'None':\r\n return '0px';\r\n case 'BottomOnly':\r\n return '0px 0px ' + outlineWeight + 'px 0px';\r\n case 'TopOnly':\r\n return outlineWeight + 'px 0px 0px 0px';\r\n case 'LeftOnly':\r\n return '0px 0px 0px ' + outlineWeight + 'px';\r\n case 'RightOnly':\r\n return '0px ' + outlineWeight + 'px 0px 0px';\r\n case 'TopBottom':\r\n return outlineWeight + 'px 0px ' + outlineWeight + 'px 0px';\r\n case 'LeftRight':\r\n return '0px ' + outlineWeight + 'px 0px ' + outlineWeight + 'px';\r\n case 'Frame':\r\n return outlineWeight + 'px';\r\n default:\r\n return outlineElement.replace(\"1\", outlineWeight.toString());\r\n }\r\n }\r\n }\r\n} ","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\nmodule powerbi.visuals {\r\n export interface I2DTransformMatrix {\r\n m00: number;\r\n m01: number;\r\n m02: number;\r\n\r\n m10: number;\r\n m11: number;\r\n m12: number;\r\n // 3rd row not used so we don't declare it\r\n }\r\n\r\n /** Transformation matrix math wrapper */\r\n export class Transform {\r\n\r\n // Fields\r\n private _inverse: Transform;\r\n public matrix: I2DTransformMatrix;\r\n\r\n // Constructor\r\n constructor(m?: I2DTransformMatrix) {\r\n this.matrix = m || {\r\n m00: 1, m01: 0, m02: 0,\r\n m10: 0, m11: 1, m12: 0,\r\n };\r\n }\r\n\r\n // Methods\r\n public applyToPoint(point: IPoint): IPoint {\r\n if (!point) {\r\n return point;\r\n }\r\n let m = this.matrix;\r\n return {\r\n x: m.m00 * point.x + m.m01 * point.y + m.m02,\r\n y: m.m10 * point.x + m.m11 * point.y + m.m12,\r\n };\r\n }\r\n\r\n public applyToRect(rect: Rect): IRect {\r\n if (!rect) {\r\n return rect;\r\n }\r\n\r\n let x0 = rect.left;\r\n let y0 = rect.top;\r\n\r\n let m = this.matrix;\r\n let isScaled = m.m00 !== 1 || m.m11 !== 1;\r\n let isRotated = m.m01 !== 0 || m.m10 !== 0;\r\n if (!isRotated && !isScaled) {\r\n // Optimize for the translation only case\r\n return { left: x0 + m.m02, top: y0 + m.m12, width: rect.width, height: rect.height };\r\n }\r\n\r\n let x1 = rect.left + rect.width;\r\n let y1 = rect.top + rect.height;\r\n\r\n let minX: number;\r\n let maxX: number;\r\n let minY: number;\r\n let maxY: number;\r\n\r\n if (isRotated) {\r\n let p0x = m.m00 * x0 + m.m01 * y0 + m.m02;\r\n let p0y = m.m10 * x0 + m.m11 * y0 + m.m12;\r\n let p1x = m.m00 * x0 + m.m01 * y1 + m.m02;\r\n let p1y = m.m10 * x0 + m.m11 * y1 + m.m12;\r\n let p2x = m.m00 * x1 + m.m01 * y0 + m.m02;\r\n let p2y = m.m10 * x1 + m.m11 * y0 + m.m12;\r\n let p3x = m.m00 * x1 + m.m01 * y1 + m.m02;\r\n let p3y = m.m10 * x1 + m.m11 * y1 + m.m12;\r\n minX = Math.min(p0x, p1x, p2x, p3x);\r\n maxX = Math.max(p0x, p1x, p2x, p3x);\r\n minY = Math.min(p0y, p1y, p2y, p3y);\r\n maxY = Math.max(p0y, p1y, p2y, p3y);\r\n } else {\r\n let p0x = m.m00 * x0 + m.m02;\r\n let p0y = m.m11 * y0 + m.m12;\r\n let p3x = m.m00 * x1 + m.m02;\r\n let p3y = m.m11 * y1 + m.m12;\r\n minX = Math.min(p0x, p3x);\r\n maxX = Math.max(p0x, p3x);\r\n minY = Math.min(p0y, p3y);\r\n maxY = Math.max(p0y, p3y);\r\n }\r\n\r\n return { left: minX, top: minY, width: maxX - minX, height: maxY - minY };\r\n }\r\n\r\n public translate(xOffset: number, yOffset: number): void {\r\n if (xOffset !== 0 || yOffset !== 0) {\r\n let m = createTranslateMatrix(xOffset, yOffset);\r\n this.matrix = multiplyMatrices(this.matrix, m);\r\n this._inverse = null;\r\n }\r\n }\r\n\r\n public scale(xScale: number, yScale: number): void {\r\n if (xScale !== 1 || yScale !== 1) {\r\n let m = createScaleMatrix(xScale, yScale);\r\n this.matrix = multiplyMatrices(this.matrix, m);\r\n this._inverse = null;\r\n }\r\n }\r\n\r\n public rotate(angleInRadians: number): void {\r\n if (angleInRadians !== 0) {\r\n let m = createRotationMatrix(angleInRadians);\r\n this.matrix = multiplyMatrices(this.matrix, m);\r\n this._inverse = null;\r\n }\r\n }\r\n\r\n public add(other: Transform): void {\r\n if (other) {\r\n this.matrix = multiplyMatrices(this.matrix, other.matrix);\r\n this._inverse = null;\r\n }\r\n }\r\n\r\n public getInverse(): Transform {\r\n if (!this._inverse) {\r\n this._inverse = new Transform(createInverseMatrix(this.matrix));\r\n }\r\n return this._inverse;\r\n }\r\n }\r\n\r\n export function createTranslateMatrix(xOffset: number, yOffset: number): I2DTransformMatrix {\r\n return {\r\n m00: 1, m01: 0, m02: xOffset,\r\n m10: 0, m11: 1, m12: yOffset,\r\n };\r\n }\r\n\r\n export function createScaleMatrix(xScale: number, yScale: number): I2DTransformMatrix {\r\n return {\r\n m00: xScale, m01: 0, m02: 0,\r\n m10: 0, m11: yScale, m12: 0\r\n };\r\n }\r\n\r\n export function createRotationMatrix(angleInRads: number): I2DTransformMatrix {\r\n let a = angleInRads;\r\n let sinA = Math.sin(a);\r\n let cosA = Math.cos(a);\r\n return {\r\n m00: cosA, m01: -sinA, m02: 0,\r\n m10: sinA, m11: cosA, m12: 0,\r\n };\r\n }\r\n\r\n export function createInverseMatrix(m: I2DTransformMatrix): I2DTransformMatrix {\r\n let determinant = m.m00 * m.m11 - m.m01 * m.m10;\r\n let invdet = 1 / determinant;\r\n return {\r\n m00: m.m11 * invdet,\r\n m01: - m.m01 * invdet,\r\n m02: (m.m01 * m.m12 - m.m02 * m.m11) * invdet,\r\n\r\n m10: -m.m10 * invdet,\r\n m11: m.m00 * invdet,\r\n m12: - (m.m00 * m.m12 - m.m10 * m.m02) * invdet\r\n };\r\n }\r\n\r\n function multiplyMatrices(a: I2DTransformMatrix, b: I2DTransformMatrix): I2DTransformMatrix {\r\n return {\r\n m00: a.m00 * b.m00 + a.m01 * b.m10,\r\n m01: a.m00 * b.m01 + a.m01 * b.m11,\r\n m02: a.m00 * b.m02 + a.m01 * b.m12 + a.m02,\r\n m10: a.m10 * b.m00 + a.m11 * b.m10,\r\n m11: a.m10 * b.m01 + a.m11 * b.m11,\r\n m12: a.m10 * b.m02 + a.m11 * b.m12 + a.m12,\r\n };\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n export module visibilityHelper {\r\n /** Helper method that uses jQuery :visible selector to determine if visual is visible.\r\n Elements are considered visible if they consume space in the document. Visible elements have a width or height that is greater than zero.\r\n Elements with visibility: hidden or opacity: 0 are considered visible, since they still consume space in the layout.\r\n */\r\n export function partiallyVisible(element: JQuery): boolean {\r\n return element.is(\":visible\");\r\n }\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n import SQExprConverter = powerbi.data.SQExprConverter;\r\n import SemanticFilter = powerbi.data.SemanticFilter;\r\n\r\n /** Helper module for converting a DataView into SlicerData. */\r\n export module DataConversion {\r\n export function convert(dataView: DataView, localizedSelectAllText: string, interactivityService: IInteractivityService | ISelectionHandler, hostServices: IVisualHostServices): SlicerData {\r\n debug.assertValue(hostServices, 'hostServices');\r\n if (!dataView || !dataView.categorical || _.isEmpty(dataView.categorical.categories))\r\n return;\r\n\r\n let identityFields = dataView.categorical.categories[0].identityFields;\r\n\r\n if (!identityFields)\r\n return;\r\n\r\n let filter: SemanticFilter = <SemanticFilter>(\r\n dataView.metadata &&\r\n dataView.metadata.objects &&\r\n DataViewObjects.getValue(dataView.metadata.objects, visuals.slicerProps.filterPropertyIdentifier));\r\n\r\n let analyzer = hostServices.analyzeFilter({\r\n dataView: dataView,\r\n defaultValuePropertyId: slicerProps.defaultValue,\r\n filter: filter,\r\n fieldSQExprs: identityFields\r\n });\r\n if (!analyzer)\r\n return;\r\n \r\n let analyzedSemanticFilter = <SemanticFilter>analyzer.filter;\r\n if (analyzedSemanticFilter && !SemanticFilter.isSameFilter(analyzedSemanticFilter, filter)) {\r\n (<ISelectionHandler>interactivityService).handleClearSelection();\r\n let filterPropertyIdentifier = slicerProps.filterPropertyIdentifier;\r\n let properties: { [propertyName: string]: DataViewPropertyValue } = {};\r\n properties[filterPropertyIdentifier.propertyName] = analyzer.filter;\r\n let instance = {\r\n objectName: filterPropertyIdentifier.objectName,\r\n selector: undefined,\r\n properties: properties\r\n };\r\n\r\n let changes: VisualObjectInstancesToPersist = {\r\n merge: [instance]\r\n };\r\n hostServices.persistProperties(changes);\r\n }\r\n\r\n let slicerData = getSlicerData(filter, analyzer, dataView.metadata, dataView.categorical, localizedSelectAllText, <IInteractivityService>interactivityService, hostServices);\r\n return slicerData;\r\n\r\n }\r\n\r\n function getSlicerData(\r\n filter: SemanticFilter,\r\n analyzer: AnalyzedFilter,\r\n dataViewMetadata: DataViewMetadata,\r\n categorical: DataViewCategorical,\r\n localizedSelectAllText: string, interactivityService: IInteractivityService, hostServices: IVisualHostServices): SlicerData {\r\n let isInvertedSelectionMode: boolean = interactivityService && interactivityService.isSelectionModeInverted();\r\n let hasSelectionOverride: boolean = false;\r\n let selectedScopeIds = analyzer.selectedIdentities;\r\n hasSelectionOverride = !_.isEmpty(selectedScopeIds);\r\n if (filter)\r\n isInvertedSelectionMode = analyzer.isNotFilter;\r\n\r\n if (interactivityService)\r\n interactivityService.setSelectionModeInverted(isInvertedSelectionMode);\r\n\r\n let category = categorical.categories[0];\r\n let categoryValuesLen: number = category && category.values ? category.values.length : 0;\r\n let slicerDataPoints: SlicerDataPoint[] = [];\r\n let formatString = valueFormatter.getFormatString(category.source, slicerProps.formatString);\r\n let numOfSelected: number = 0;\r\n let valueCounts = categorical.values && categorical.values[0] && categorical.values[0].values;\r\n if (valueCounts && _.isEmpty(valueCounts))\r\n valueCounts = undefined;\r\n\r\n debug.assert(!valueCounts || valueCounts.length === categoryValuesLen, \"valueCounts doesn't match values\");\r\n\r\n for (let i = 0; i < categoryValuesLen; i++) {\r\n let scopeId = category.identity && category.identity[i];\r\n let value = category.values && category.values[i];\r\n let count = valueCounts && valueCounts[i];\r\n\r\n if (value != null) {\r\n let isRetained = hasSelectionOverride ? SlicerUtil.tryRemoveValueFromRetainedList(scopeId, selectedScopeIds) : false;\r\n let label: string = valueFormatter.format(value, formatString);\r\n // TODO: need to add count as well\r\n let slicerData: SlicerDataPoint = {\r\n value: label,\r\n tooltip: label,\r\n identity: SelectionId.createWithId(scopeId),\r\n selected: isRetained,\r\n count: <number>count,\r\n };\r\n\r\n slicerDataPoints.push(slicerData);\r\n if (slicerData.selected)\r\n numOfSelected++;\r\n }\r\n }\r\n\r\n // Add retained values that are not in the returned dataview to the value list.\r\n if (hasSelectionOverride) {\r\n //TODO: To support group on keys, we need ask hostService for the matching label which should be cached\r\n for (let scopeId of selectedScopeIds) {\r\n let label = getLabel(scopeId, formatString);\r\n\r\n // When there is no valueCounts, set count to be undefined, otherwise use 0 as the count for retained values\r\n let slicerData: SlicerDataPoint = {\r\n value: label,\r\n tooltip: label,\r\n identity: SelectionId.createWithId(scopeId),\r\n selected: true,\r\n count: valueCounts != null ? 0 : undefined,\r\n };\r\n\r\n slicerDataPoints.push(slicerData);\r\n numOfSelected++;\r\n }\r\n }\r\n\r\n let defaultSettings = createDefaultSettings(dataViewMetadata);\r\n if (defaultSettings.selection.selectAllCheckboxEnabled) {\r\n //If selectAllCheckboxEnabled, and all the items are selected and there is no more data to request, then unselect all and toggle the invertedSelectionMode\r\n if (numOfSelected > 0 && !dataViewMetadata.segment && numOfSelected === slicerDataPoints.length) {\r\n isInvertedSelectionMode = !isInvertedSelectionMode;\r\n interactivityService.setSelectionModeInverted(isInvertedSelectionMode);\r\n for (let item of slicerDataPoints) {\r\n item.selected = false;\r\n }\r\n hasSelectionOverride = false;\r\n numOfSelected = 0;\r\n }\r\n\r\n slicerDataPoints.unshift({\r\n value: localizedSelectAllText,\r\n tooltip: localizedSelectAllText,\r\n identity: SelectionId.createWithMeasure(localizedSelectAllText),\r\n selected: !!isInvertedSelectionMode && numOfSelected === 0,\r\n isSelectAllDataPoint: true,\r\n count: undefined,\r\n });\r\n }\r\n\r\n let slicerData: SlicerData = {\r\n categorySourceName: category.source.displayName,\r\n slicerSettings: defaultSettings,\r\n slicerDataPoints: slicerDataPoints,\r\n hasSelectionOverride: hasSelectionOverride,\r\n defaultValue: analyzer.defaultValue,\r\n };\r\n\r\n return slicerData;\r\n }\r\n\r\n function getLabel(scopeId: DataViewScopeIdentity, formatString: string): string {\r\n let label = SQExprConverter.getFirstComparandValue(scopeId);\r\n return valueFormatter.format(label, formatString);\r\n }\r\n\r\n function createDefaultSettings(dataViewMetadata: DataViewMetadata): SlicerSettings {\r\n let defaultSettings = Slicer.DefaultStyleProperties();\r\n let objects = dataViewMetadata.objects;\r\n\r\n if (objects) {\r\n defaultSettings.general.outlineColor = DataViewObjects.getFillColor(objects, slicerProps.general.outlineColor, defaultSettings.general.outlineColor);\r\n defaultSettings.general.outlineWeight = DataViewObjects.getValue<number>(objects, slicerProps.general.outlineWeight, defaultSettings.general.outlineWeight);\r\n defaultSettings.general.orientation = DataViewObjects.getValue<slicerOrientation.Orientation>(objects, slicerProps.general.orientation, defaultSettings.general.orientation);\r\n\r\n defaultSettings.header.show = DataViewObjects.getValue<boolean>(objects, slicerProps.header.show, defaultSettings.header.show);\r\n defaultSettings.header.fontColor = DataViewObjects.getFillColor(objects, slicerProps.header.fontColor, defaultSettings.header.fontColor);\r\n let headerBackground = DataViewObjects.getFillColor(objects, slicerProps.header.background);\r\n if (headerBackground)\r\n defaultSettings.header.background = headerBackground;\r\n defaultSettings.header.outline = DataViewObjects.getValue<string>(objects, slicerProps.header.outline, defaultSettings.header.outline);\r\n defaultSettings.header.textSize = DataViewObjects.getValue<number>(objects, slicerProps.header.textSize, defaultSettings.header.textSize);\r\n\r\n defaultSettings.slicerText.color = DataViewObjects.getFillColor(objects, slicerProps.items.fontColor, defaultSettings.slicerText.color);\r\n let textBackground = DataViewObjects.getFillColor(objects, slicerProps.items.background);\r\n if (textBackground)\r\n defaultSettings.slicerText.background = textBackground;\r\n\r\n defaultSettings.slicerText.outline = DataViewObjects.getValue<string>(objects, slicerProps.items.outline, defaultSettings.slicerText.outline);\r\n defaultSettings.slicerText.textSize = DataViewObjects.getValue<number>(objects, slicerProps.items.textSize, defaultSettings.slicerText.textSize);\r\n\r\n defaultSettings.selection.selectAllCheckboxEnabled = DataViewObjects.getValue<boolean>(objects, slicerProps.selection.selectAllCheckboxEnabled, defaultSettings.selection.selectAllCheckboxEnabled);\r\n defaultSettings.selection.singleSelect = DataViewObjects.getValue<boolean>(objects, slicerProps.selection.singleSelect, defaultSettings.selection.singleSelect);\r\n }\r\n\r\n return defaultSettings;\r\n }\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi {\r\n\r\n import shapes = powerbi.visuals.shapes;\r\n import IRect = powerbi.visuals.IRect;\r\n\r\n /** Defines possible content positions. */\r\n export const enum ContentPositions {\r\n\r\n /** Content position is not defined. */\r\n None = 0,\r\n\r\n /** Content aligned top left. */\r\n TopLeft = 1,\r\n\r\n /** Content aligned top center. */\r\n TopCenter = 2,\r\n\r\n /** Content aligned top right. */\r\n TopRight = 4,\r\n\r\n /** Content aligned middle left. */\r\n MiddleLeft = 8,\r\n\r\n /** Content aligned middle center. */\r\n MiddleCenter = 16,\r\n\r\n /** Content aligned middle right. */\r\n MiddleRight = 32,\r\n\r\n /** Content aligned bottom left. */\r\n BottomLeft = 64,\r\n\r\n /** Content aligned bottom center. */\r\n BottomCenter = 128,\r\n\r\n /** Content aligned bottom right. */\r\n BottomRight = 256,\r\n\r\n /** Content is placed inside the bounding rectangle in the center. */\r\n InsideCenter = 512,\r\n\r\n /** Content is placed inside the bounding rectangle at the base. */\r\n InsideBase = 1024,\r\n\r\n /** Content is placed inside the bounding rectangle at the end. */\r\n InsideEnd = 2048,\r\n\r\n /** Content is placed outside the bounding rectangle at the base. */\r\n OutsideBase = 4096,\r\n\r\n /** Content is placed outside the bounding rectangle at the end. */\r\n OutsideEnd = 8192,\r\n\r\n /** Content supports all possible positions. */\r\n All =\r\n TopLeft |\r\n TopCenter |\r\n TopRight |\r\n MiddleLeft |\r\n MiddleCenter |\r\n MiddleRight |\r\n BottomLeft |\r\n BottomCenter |\r\n BottomRight |\r\n InsideCenter |\r\n InsideBase |\r\n InsideEnd |\r\n OutsideBase |\r\n OutsideEnd,\r\n }\r\n\r\n /**\r\n * Rectangle orientation. Rectangle orientation is used to define vertical or horizontal orientation \r\n * and starting/ending side of the rectangle.\r\n */\r\n export enum RectOrientation {\r\n /** Rectangle with no specific orientation. */\r\n None,\r\n\r\n /** Vertical rectangle with base at the bottom. */\r\n VerticalBottomTop,\r\n\r\n /** Vertical rectangle with base at the top. */\r\n VerticalTopBottom,\r\n\r\n /** Horizontal rectangle with base at the left. */\r\n HorizontalLeftRight,\r\n\r\n /** Horizontal rectangle with base at the right. */\r\n HorizontalRightLeft,\r\n }\r\n\r\n /**\r\n * Defines if panel elements are allowed to be positioned \r\n * outside of the panel boundaries.\r\n */\r\n export enum OutsidePlacement {\r\n /** Elements can be positioned outside of the panel. */\r\n Allowed,\r\n\r\n /** Elements can not be positioned outside of the panel. */\r\n Disallowed,\r\n\r\n /** Elements can be partially outside of the panel. */\r\n Partial\r\n }\r\n\r\n /**\r\n * Defines an interface for information needed for default label positioning. Used in DataLabelsPanel.\r\n * Note the question marks: none of the elements are mandatory.\r\n */\r\n export interface IDataLabelSettings {\r\n /** Distance from the anchor point. */\r\n anchorMargin?: number;\r\n\r\n /** Orientation of the anchor rectangle. */\r\n anchorRectOrientation?: RectOrientation;\r\n\r\n /** Preferable position for the label. */\r\n contentPosition?: ContentPositions;\r\n\r\n /** Defines the rules if the elements can be positioned outside panel bounds. */\r\n outsidePlacement?: OutsidePlacement;\r\n\r\n /** Defines the valid positions if repositionOverlapped is true. */\r\n validContentPositions?: ContentPositions;\r\n\r\n /** Defines maximum moving distance to reposition an element. */\r\n minimumMovingDistance?: number;\r\n\r\n /** Defines minimum moving distance to reposition an element. */\r\n maximumMovingDistance?: number;\r\n\r\n /** Opacity effect of the label. Use it for dimming. */\r\n opacity?: number;\r\n }\r\n\r\n /**\r\n * Defines an interface for information needed for label positioning. \r\n * None of the elements are mandatory, but at least anchorPoint OR anchorRect is needed.\r\n */\r\n export interface IDataLabelInfo extends IDataLabelSettings {\r\n\r\n /** The point to which label is anchored. */\r\n anchorPoint?: shapes.IPoint;\r\n\r\n /** The rectangle to which label is anchored. */\r\n anchorRect?: IRect;\r\n\r\n /** Disable label rendering and processing. */\r\n hideLabel?: boolean;\r\n\r\n /**\r\n * Defines the visibility rank. This will not be processed by arrange phase, \r\n * but can be used for preprocessing the hideLabel value.\r\n */\r\n visibilityRank?: number;\r\n\r\n /** Defines the starting offset from AnchorRect. */\r\n offset?: number;\r\n\r\n /** Defines the callout line data. It is calculated and used during processing. */\r\n callout?: { start: shapes.IPoint; end: shapes.IPoint; };\r\n\r\n /** Source of the label. */\r\n source?: any;\r\n\r\n size?: shapes.ISize;\r\n }\r\n\r\n /** Interface for label rendering. */\r\n export interface IDataLabelRenderer {\r\n renderLabelArray(labels: IArrangeGridElementInfo[]): void;\r\n }\r\n\r\n /** Interface used in internal arrange structures. */\r\n export interface IArrangeGridElementInfo {\r\n element: IDataLabelInfo;\r\n rect: IRect;\r\n }\r\n\r\n /**\r\n * Arranges label elements using the anchor point or rectangle. Collisions\r\n * between elements can be automatically detected and as a result elements \r\n * can be repositioned or get hidden.\r\n */\r\n export class DataLabelManager {\r\n\r\n public movingStep: number = 3;\r\n public hideOverlapped: boolean = true;\r\n public static DefaultAnchorMargin: number = 0; // For future use\r\n public static DefaultMaximumMovingDistance: number = 12;\r\n public static DefaultMinimumMovingDistance: number = 3;\r\n public static InflateAmount: number = 5;\r\n\r\n // The global settings for all labels. \r\n // They can be oweridden by each label we add into the panel, because contains same properties.\r\n private defaultDataLabelSettings: IDataLabelSettings = {\r\n anchorMargin: DataLabelManager.DefaultAnchorMargin,\r\n anchorRectOrientation: RectOrientation.None,\r\n contentPosition: ContentPositions.BottomCenter,\r\n outsidePlacement: OutsidePlacement.Disallowed,\r\n maximumMovingDistance: DataLabelManager.DefaultMaximumMovingDistance,\r\n minimumMovingDistance: DataLabelManager.DefaultMinimumMovingDistance,\r\n validContentPositions: ContentPositions.BottomCenter,\r\n opacity: 1\r\n };\r\n\r\n public get defaultSettings(): IDataLabelSettings {\r\n return this.defaultDataLabelSettings;\r\n }\r\n\r\n /** Arranges the lables position and visibility*/\r\n public hideCollidedLabels(viewport: IViewport, data: any[], layout: any, addTransform: boolean = false): powerbi.visuals.LabelEnabledDataPoint[] {\r\n\r\n // Split size into a grid\r\n let arrangeGrid = new DataLabelArrangeGrid(viewport, data, layout);\r\n let filteredData = [];\r\n let transform: shapes.IVector = { x: 0, y: 0 };\r\n\r\n if (addTransform) {\r\n transform.x = viewport.width / 2;\r\n transform.y = viewport.height / 2;\r\n }\r\n\r\n for (let i = 0, len = data.length; i < len; i++) {\r\n\r\n // Filter unwanted data points\r\n if (!layout.filter(data[i]))\r\n continue;\r\n\r\n // Set default values where properties values are undefined\r\n let info = this.getLabelInfo(data[i]);\r\n\r\n info.anchorPoint = {\r\n x: layout.labelLayout.x(data[i]) + transform.x,\r\n y: layout.labelLayout.y(data[i]) + transform.y,\r\n };\r\n\r\n let position: IRect = this.calculateContentPosition(info, info.contentPosition, data[i].size, info.anchorMargin);\r\n\r\n if (DataLabelManager.isValid(position) && !this.hasCollisions(arrangeGrid, info, position, viewport)) {\r\n data[i].labelX = position.left - transform.x;\r\n data[i].labelY = position.top - transform.y;\r\n\r\n // Keep track of all panel elements positions.\r\n arrangeGrid.add(info, position);\r\n\r\n // Save all data points to display\r\n filteredData.push(data[i]);\r\n }\r\n }\r\n\r\n return filteredData;\r\n }\r\n\r\n /**\r\n * Merges the label element info with the panel element info and returns correct label info.\r\n * @param source The label info.\r\n */\r\n public getLabelInfo(source: IDataLabelInfo): IDataLabelInfo {\r\n\r\n let settings = this.defaultDataLabelSettings;\r\n source.anchorMargin = source.anchorMargin !== undefined ? source.anchorMargin : settings.anchorMargin;\r\n source.anchorRectOrientation = source.anchorRectOrientation !== undefined ? source.anchorRectOrientation : settings.anchorRectOrientation;\r\n source.contentPosition = source.contentPosition !== undefined ? source.contentPosition : settings.contentPosition;\r\n source.maximumMovingDistance = source.maximumMovingDistance !== undefined ? source.maximumMovingDistance : settings.maximumMovingDistance;\r\n source.minimumMovingDistance = source.minimumMovingDistance !== undefined ? source.minimumMovingDistance : settings.minimumMovingDistance;\r\n source.outsidePlacement = source.outsidePlacement !== undefined ? source.outsidePlacement : settings.outsidePlacement;\r\n source.validContentPositions = source.validContentPositions !== undefined ? source.validContentPositions : settings.validContentPositions;\r\n source.opacity = source.opacity !== undefined ? source.opacity : settings.opacity;\r\n source.maximumMovingDistance += source.anchorMargin;\r\n return source;\r\n }\r\n\r\n /**\r\n * (Private) Calculates element position using anchor point..\r\n */\r\n private calculateContentPositionFromPoint(anchorPoint: shapes.IPoint, contentPosition: ContentPositions, contentSize: shapes.ISize, offset: number): IRect {\r\n let position: shapes.IPoint = { x: 0, y: 0 };\r\n if (anchorPoint) {\r\n\r\n if (anchorPoint.x !== undefined && isFinite(anchorPoint.x)) {\r\n position.x = anchorPoint.x;\r\n switch (contentPosition) {\r\n // D3 positions the label in the middle by default.\r\n // The algorithem asumed the label was positioned in right so this is why we add/substract half width\r\n case ContentPositions.TopLeft:\r\n case ContentPositions.MiddleLeft:\r\n case ContentPositions.BottomLeft:\r\n position.x -= contentSize.width / 2.0;\r\n break;\r\n\r\n case ContentPositions.TopRight:\r\n case ContentPositions.MiddleRight:\r\n case ContentPositions.BottomRight:\r\n position.x += contentSize.width / 2.0;\r\n break;\r\n }\r\n }\r\n\r\n if (anchorPoint.y !== undefined && isFinite(anchorPoint.y)) {\r\n position.y = anchorPoint.y;\r\n switch (contentPosition) {\r\n case ContentPositions.MiddleLeft:\r\n case ContentPositions.MiddleCenter:\r\n case ContentPositions.MiddleRight:\r\n position.y -= contentSize.height / 2.0;\r\n break;\r\n case ContentPositions.TopRight:\r\n case ContentPositions.TopLeft:\r\n case ContentPositions.TopCenter:\r\n position.y -= contentSize.height;\r\n break;\r\n }\r\n }\r\n\r\n if (offset !== undefined && isFinite(offset)) {\r\n switch (contentPosition) {\r\n case ContentPositions.TopLeft:\r\n position.x -= offset;\r\n position.y -= offset;\r\n break;\r\n case ContentPositions.MiddleLeft:\r\n position.x -= offset;\r\n break;\r\n case ContentPositions.BottomLeft:\r\n position.x -= offset;\r\n position.y += offset;\r\n break;\r\n case ContentPositions.TopCenter:\r\n position.y -= offset;\r\n break;\r\n case ContentPositions.MiddleCenter:\r\n // Offset is not applied\r\n break;\r\n case ContentPositions.BottomCenter:\r\n position.y += offset;\r\n break;\r\n case ContentPositions.TopRight:\r\n position.x += offset;\r\n position.y -= offset;\r\n break;\r\n case ContentPositions.MiddleRight:\r\n position.x += offset;\r\n break;\r\n case ContentPositions.BottomRight:\r\n position.x += offset;\r\n position.y += offset;\r\n break;\r\n default:\r\n debug.assertFail(\"Unsupported content position.\");\r\n break;\r\n }\r\n }\r\n }\r\n return { left: position.x, top: position.y, width: contentSize.width, height: contentSize.height };\r\n }\r\n\r\n /** (Private) Calculates element position using anchor rect. */\r\n private calculateContentPositionFromRect(anchorRect: IRect, anchorRectOrientation: RectOrientation, contentPosition: ContentPositions, contentSize: shapes.ISize, offset: number): IRect {\r\n\r\n switch (contentPosition) {\r\n case ContentPositions.InsideCenter:\r\n return this.handleInsideCenterPosition(anchorRectOrientation, contentSize, anchorRect, offset);\r\n case ContentPositions.InsideEnd:\r\n return this.handleInsideEndPosition(anchorRectOrientation, contentSize, anchorRect, offset);\r\n case ContentPositions.InsideBase:\r\n return this.handleInsideBasePosition(anchorRectOrientation, contentSize, anchorRect, offset);\r\n case ContentPositions.OutsideEnd:\r\n return this.handleOutsideEndPosition(anchorRectOrientation, contentSize, anchorRect, offset);\r\n case ContentPositions.OutsideBase:\r\n return this.handleOutsideBasePosition(anchorRectOrientation, contentSize, anchorRect, offset);\r\n default:\r\n debug.assertFail(\"Unsupported ContentPosition.\");\r\n }\r\n\r\n return { left: 0, top: 0, width: -1, height: -1 };\r\n }\r\n\r\n /** (Private) Calculates element inside center position using anchor rect. */\r\n private handleInsideCenterPosition(anchorRectOrientation: RectOrientation, contentSize: shapes.ISize, anchorRect: IRect, offset: number): IRect {\r\n switch (anchorRectOrientation) {\r\n case RectOrientation.VerticalBottomTop:\r\n case RectOrientation.VerticalTopBottom:\r\n return LocationConverter.middleVertical(contentSize, anchorRect, offset);\r\n case RectOrientation.HorizontalLeftRight:\r\n case RectOrientation.HorizontalRightLeft:\r\n default:\r\n return LocationConverter.middleHorizontal(contentSize, anchorRect, offset);\r\n }\r\n }\r\n\r\n /** (Private) Calculates element inside end position using anchor rect. */\r\n private handleInsideEndPosition(anchorRectOrientation: RectOrientation, contentSize: shapes.ISize, anchorRect: IRect, offset: number): IRect {\r\n switch (anchorRectOrientation) {\r\n case RectOrientation.VerticalBottomTop:\r\n return LocationConverter.topInside(contentSize, anchorRect, offset);\r\n case RectOrientation.VerticalTopBottom:\r\n return LocationConverter.bottomInside(contentSize, anchorRect, offset);\r\n case RectOrientation.HorizontalRightLeft:\r\n return LocationConverter.leftInside(contentSize, anchorRect, offset);\r\n case RectOrientation.HorizontalLeftRight:\r\n default:\r\n return LocationConverter.rightInside(contentSize, anchorRect, offset);\r\n }\r\n }\r\n\r\n /** (Private) Calculates element inside base position using anchor rect. */\r\n private handleInsideBasePosition(anchorRectOrientation: RectOrientation, contentSize: shapes.ISize, anchorRect: IRect, offset: number): IRect {\r\n switch (anchorRectOrientation) {\r\n case RectOrientation.VerticalBottomTop:\r\n return LocationConverter.bottomInside(contentSize, anchorRect, offset);\r\n case RectOrientation.VerticalTopBottom:\r\n return LocationConverter.topInside(contentSize, anchorRect, offset);\r\n case RectOrientation.HorizontalRightLeft:\r\n return LocationConverter.rightInside(contentSize, anchorRect, offset);\r\n case RectOrientation.HorizontalLeftRight:\r\n default:\r\n return LocationConverter.leftInside(contentSize, anchorRect, offset);\r\n }\r\n }\r\n\r\n /** (Private) Calculates element outside end position using anchor rect. */\r\n private handleOutsideEndPosition(anchorRectOrientation: RectOrientation, contentSize: shapes.ISize, anchorRect: IRect, offset: number): IRect {\r\n switch (anchorRectOrientation) {\r\n case RectOrientation.VerticalBottomTop:\r\n return LocationConverter.topOutside(contentSize, anchorRect, offset);\r\n case RectOrientation.VerticalTopBottom:\r\n return LocationConverter.bottomOutside(contentSize, anchorRect, offset);\r\n case RectOrientation.HorizontalRightLeft:\r\n return LocationConverter.leftOutside(contentSize, anchorRect, offset);\r\n case RectOrientation.HorizontalLeftRight:\r\n default:\r\n return LocationConverter.rightOutside(contentSize, anchorRect, offset);\r\n }\r\n }\r\n\r\n /** (Private) Calculates element outside base position using anchor rect. */\r\n private handleOutsideBasePosition(anchorRectOrientation: RectOrientation, contentSize: shapes.ISize, anchorRect: IRect, offset: number): IRect {\r\n switch (anchorRectOrientation) {\r\n case RectOrientation.VerticalBottomTop:\r\n return LocationConverter.bottomOutside(contentSize, anchorRect, offset);\r\n case RectOrientation.VerticalTopBottom:\r\n return LocationConverter.topOutside(contentSize, anchorRect, offset);\r\n case RectOrientation.HorizontalRightLeft:\r\n return LocationConverter.rightOutside(contentSize, anchorRect, offset);\r\n case RectOrientation.HorizontalLeftRight:\r\n default:\r\n return LocationConverter.leftOutside(contentSize, anchorRect, offset);\r\n }\r\n }\r\n\r\n /** (Private) Calculates element position. */\r\n private calculateContentPosition(anchoredElementInfo: IDataLabelInfo, contentPosition: ContentPositions, contentSize: shapes.ISize, offset: number): IRect {\r\n\r\n if (contentPosition !== ContentPositions.InsideEnd &&\r\n contentPosition !== ContentPositions.InsideCenter &&\r\n contentPosition !== ContentPositions.InsideBase &&\r\n contentPosition !== ContentPositions.OutsideBase &&\r\n contentPosition !== ContentPositions.OutsideEnd) {\r\n // Determine position using anchor point.\r\n return this.calculateContentPositionFromPoint(\r\n anchoredElementInfo.anchorPoint,\r\n contentPosition,\r\n contentSize,\r\n offset);\r\n }\r\n\r\n // Determine position using anchor rectangle.\r\n return this.calculateContentPositionFromRect(\r\n anchoredElementInfo.anchorRect,\r\n anchoredElementInfo.anchorRectOrientation,\r\n contentPosition,\r\n contentSize,\r\n offset);\r\n }\r\n\r\n /** (Private) Check for collisions. */\r\n private hasCollisions(arrangeGrid: DataLabelArrangeGrid, info: IDataLabelInfo, position: IRect, size: shapes.ISize): boolean {\r\n let rect = shapes.Rect;\r\n\r\n if (arrangeGrid.hasConflict(position)) {\r\n return true;\r\n }\r\n // Since we divide the height by 2 we add it back to the top of the view port so labels won't be cut off\r\n let intersection = { left: 0, top: position.height / 2, width: size.width, height: size.height };\r\n intersection = rect.inflate(intersection, { left: DataLabelManager.InflateAmount, top: 0, right: DataLabelManager.InflateAmount, bottom: 0 });\r\n\r\n intersection = rect.intersect(intersection, position);\r\n\r\n if (rect.isEmpty(intersection))\r\n // Empty rectangle means there is a collision\r\n return true;\r\n\r\n let lessWithPrecision = powerbi.Double.lessWithPrecision;\r\n\r\n switch (info.outsidePlacement) {\r\n // D3 positions the label in the middle by default.\r\n // The algorithem asumed the label was positioned in right so this is why we devide by 2 or 4\r\n case OutsidePlacement.Disallowed:\r\n return lessWithPrecision(intersection.width, position.width) ||\r\n lessWithPrecision(intersection.height, position.height / 2);\r\n\r\n case OutsidePlacement.Partial:\r\n return lessWithPrecision(intersection.width, position.width / 2) ||\r\n lessWithPrecision(intersection.height, position.height / 4);\r\n }\r\n return false;\r\n }\r\n\r\n public static isValid(rect: IRect): boolean {\r\n return !shapes.Rect.isEmpty(rect) && (rect.width > 0 && rect.height > 0);\r\n }\r\n }\r\n\r\n /**\r\n * Utility class to speed up the conflict detection by collecting the arranged items in the DataLabelsPanel. \r\n */\r\n export class DataLabelArrangeGrid {\r\n\r\n private grid: IArrangeGridElementInfo[][][] = [];\r\n //size of a grid cell \r\n private cellSize: shapes.ISize;\r\n private rowCount: number;\r\n private colCount: number;\r\n\r\n private static ARRANGEGRID_MIN_COUNT = 1;\r\n private static ARRANGEGRID_MAX_COUNT = 100;\r\n\r\n /**\r\n * Creates new ArrangeGrid.\r\n * @param size The available size\r\n */\r\n constructor(size: shapes.ISize, elements: any[], layout: powerbi.visuals.ILabelLayout) {\r\n if (size.width === 0 || size.height === 0) {\r\n this.cellSize = size;\r\n this.rowCount = this.colCount = 0;\r\n }\r\n\r\n let baseProperties: TextProperties = {\r\n fontFamily: powerbi.visuals.dataLabelUtils.LabelTextProperties.fontFamily,\r\n fontSize: powerbi.visuals.dataLabelUtils.LabelTextProperties.fontSize,\r\n fontWeight: powerbi.visuals.dataLabelUtils.LabelTextProperties.fontWeight,\r\n };\r\n\r\n //sets the cell size to be twice of the Max with and Max height of the elements \r\n this.cellSize = { width: 0, height: 0 };\r\n for (let i = 0, len = elements.length; i < len; i++) {\r\n let child = elements[i];\r\n\r\n // Fill label field\r\n child.labeltext = layout.labelText(child);\r\n\r\n let properties: TextProperties = Prototype.inherit(baseProperties);\r\n properties.text = child.labeltext;\r\n properties.fontSize = (child.data) ? child.data.labelFontSize :\r\n child.labelFontSize ? child.labelFontSize : powerbi.visuals.dataLabelUtils.LabelTextProperties.fontSize;\r\n\r\n child.size = {\r\n width: TextMeasurementService.measureSvgTextWidth(properties),\r\n height: TextMeasurementService.estimateSvgTextHeight(properties),\r\n };\r\n\r\n let w = child.size.width * 2;\r\n let h = child.size.height * 2;\r\n if (w > this.cellSize.width)\r\n this.cellSize.width = w;\r\n if (h > this.cellSize.height)\r\n this.cellSize.height = h;\r\n }\r\n\r\n if (this.cellSize.width === 0)\r\n this.cellSize.width = size.width;\r\n if (this.cellSize.height === 0)\r\n this.cellSize.height = size.height;\r\n\r\n this.colCount = this.getGridRowColCount(this.cellSize.width, size.width, DataLabelArrangeGrid.ARRANGEGRID_MIN_COUNT, DataLabelArrangeGrid.ARRANGEGRID_MAX_COUNT);\r\n this.rowCount = this.getGridRowColCount(this.cellSize.height, size.height, DataLabelArrangeGrid.ARRANGEGRID_MIN_COUNT, DataLabelArrangeGrid.ARRANGEGRID_MAX_COUNT);\r\n this.cellSize.width = size.width / this.colCount;\r\n this.cellSize.height = size.height / this.rowCount;\r\n\r\n let grid = this.grid;\r\n for (let x = 0; x < this.colCount; x++) {\r\n grid[x] = [];\r\n for (let y = 0; y < this.rowCount; y++) {\r\n grid[x][y] = [];\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Register a new label element.\r\n * @param element The label element to register.\r\n * @param rect The label element position rectangle.\r\n */\r\n public add(element: IDataLabelInfo, rect: IRect) {\r\n let indexRect = this.getGridIndexRect(rect);\r\n let grid = this.grid;\r\n for (let x = indexRect.left; x < indexRect.right; x++) {\r\n for (let y = indexRect.top; y < indexRect.bottom; y++) {\r\n grid[x][y].push({ element: element, rect: rect });\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Checks for conflict of given rectangle in registered elements.\r\n * @param rect The rectengle to check.\r\n * @return True if conflict is detected.\r\n */\r\n public hasConflict(rect: IRect): boolean {\r\n let indexRect = this.getGridIndexRect(rect);\r\n let grid = this.grid;\r\n let isIntersecting = shapes.Rect.isIntersecting;\r\n\r\n for (let x = indexRect.left; x < indexRect.right; x++) {\r\n for (let y = indexRect.top; y < indexRect.bottom; y++) {\r\n for (let z = 0; z < grid[x][y].length; z++) {\r\n let item = grid[x][y][z];\r\n if (isIntersecting(item.rect, rect)) {\r\n return true;\r\n }\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Calculates the number of rows or columns in a grid\r\n * @param step is the largest label size (width or height)\r\n * @param length is the grid size (width or height)\r\n * @param minCount is the minimum allowed size\r\n * @param maxCount is the maximum allowed size\r\n * @return the number of grid rows or columns\r\n */\r\n private getGridRowColCount(step: number, length: number, minCount: number, maxCount: number): number {\r\n return Math.min(Math.max(Math.ceil(length / step), minCount), maxCount);\r\n }\r\n\r\n /**\r\n * Returns the grid index of a given recangle\r\n * @param rect The rectengle to check.\r\n * @return grid index as a thickness object.\r\n */\r\n private getGridIndexRect(rect: IRect): shapes.IThickness {\r\n let restrict = (n, min, max) => Math.min(Math.max(n, min), max);\r\n return {\r\n left: restrict(Math.floor(rect.left / this.cellSize.width), 0, this.colCount),\r\n top: restrict(Math.floor(rect.top / this.cellSize.height), 0, this.rowCount),\r\n right: restrict(Math.ceil((rect.left + rect.width) / this.cellSize.width), 0, this.colCount),\r\n bottom: restrict(Math.ceil((rect.top + rect.height) / this.cellSize.height), 0, this.rowCount)\r\n };\r\n }\r\n }\r\n\r\n /**\r\n * (Private) Contains methods for calculating the top-left coordinate of rectangle based on content size and anchor rect. \r\n */\r\n module LocationConverter {\r\n\r\n export function topInside(size: shapes.ISize, rect: IRect, offset: number): IRect {\r\n return {\r\n left: rect.left + rect.width / 2.0 - size.width / 2.0,\r\n top: rect.top + offset,\r\n width: size.width,\r\n height: size.height\r\n };\r\n }\r\n\r\n export function bottomInside(size: shapes.ISize, rect: IRect, offset: number): IRect {\r\n return {\r\n left: rect.left + rect.width / 2.0 - size.width / 2.0,\r\n top: (rect.top + rect.height) - size.height - offset,\r\n width: size.width,\r\n height: size.height\r\n };\r\n }\r\n\r\n export function rightInside(size: shapes.ISize, rect: IRect, offset: number): IRect {\r\n return {\r\n left: (rect.left + rect.width) - size.width - offset,\r\n top: rect.top + rect.height / 2.0 - size.height / 2.0,\r\n width: size.width,\r\n height: size.height\r\n };\r\n }\r\n\r\n export function leftInside(size: shapes.ISize, rect: IRect, offset: number): IRect {\r\n return {\r\n left: rect.left + offset,\r\n top: rect.top + rect.height / 2.0 - size.height / 2.0,\r\n width: size.width,\r\n height: size.height\r\n };\r\n }\r\n\r\n export function topOutside(size: shapes.ISize, rect: IRect, offset: number): IRect {\r\n return {\r\n left: rect.left + rect.width / 2.0 - size.width / 2.0,\r\n top: rect.top - size.height - offset,\r\n width: size.width,\r\n height: size.height\r\n };\r\n }\r\n\r\n export function bottomOutside(size: shapes.ISize, rect: IRect, offset: number): IRect {\r\n return {\r\n left: rect.left + rect.width / 2.0 - size.width / 2.0,\r\n top: (rect.top + rect.height) + offset,\r\n width: size.width,\r\n height: size.height\r\n };\r\n }\r\n\r\n export function rightOutside(size: shapes.ISize, rect: IRect, offset: number): IRect {\r\n return {\r\n left: (rect.left + rect.width) + offset,\r\n top: rect.top + rect.height / 2.0 - size.height / 2.0,\r\n width: size.width,\r\n height: size.height\r\n };\r\n }\r\n\r\n export function leftOutside(size: shapes.ISize, rect: IRect, offset: number): IRect {\r\n return {\r\n left: rect.left - size.width - offset,\r\n top: rect.top + rect.height / 2.0 - size.height / 2.0,\r\n width: size.width,\r\n height: size.height\r\n };\r\n }\r\n\r\n export function middleHorizontal(size: shapes.ISize, rect: IRect, offset: number): IRect {\r\n return {\r\n left: rect.left + rect.width / 2.0 - size.width / 2.0 + offset,\r\n top: rect.top + rect.height / 2.0 - size.height / 2.0,\r\n width: size.width,\r\n height: size.height\r\n };\r\n }\r\n\r\n export function middleVertical(size: shapes.ISize, rect: IRect, offset: number): IRect {\r\n return {\r\n left: rect.left + rect.width / 2.0 - size.width / 2.0,\r\n top: rect.top + rect.height / 2.0 - size.height / 2.0 + offset,\r\n width: size.width,\r\n height: size.height\r\n };\r\n }\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi {\r\n\r\n import shapes = powerbi.visuals.shapes;\r\n import ISize = shapes.ISize;\r\n import IRect = powerbi.visuals.IRect;\r\n import IPoint = shapes.IPoint;\r\n import SelectableDataPoint = powerbi.visuals.SelectableDataPoint;\r\n import Rect = powerbi.visuals.shapes.Rect;\r\n import NewDataLabelUtils = powerbi.visuals.NewDataLabelUtils;\r\n\r\n /**\r\n * Defines possible data label positions relative to rectangles\r\n */\r\n export const enum RectLabelPosition {\r\n\r\n /** Position is not defined. */\r\n None = 0,\r\n \r\n /** Content is placed inside the parent rectangle in the center. */\r\n InsideCenter = 1,\r\n\r\n /** Content is placed inside the parent rectangle at the base. */\r\n InsideBase = 2,\r\n\r\n /** Content is placed inside the parent rectangle at the end. */\r\n InsideEnd = 4,\r\n\r\n /** Content is placed outside the parent rectangle at the base. */\r\n OutsideBase = 8,\r\n\r\n /** Content is placed outside the parent rectangle at the end. */\r\n OutsideEnd = 16,\r\n\r\n /** Content supports all possible positions. */\r\n All =\r\n InsideCenter |\r\n InsideBase |\r\n InsideEnd |\r\n OutsideBase |\r\n OutsideEnd,\r\n\r\n /** Content supports positions inside the rectangle */\r\n InsideAll =\r\n InsideCenter |\r\n InsideBase |\r\n InsideEnd,\r\n }\r\n \r\n /**\r\n * Defines possible data label positions relative to points or circles\r\n */\r\n export const enum NewPointLabelPosition {\r\n /** Position is not defined. */\r\n None = 0,\r\n\r\n Above = 1 << 0,\r\n\r\n Below = 1 << 1,\r\n\r\n Left = 1 << 2,\r\n\r\n Right = 1 << 3,\r\n\r\n BelowRight = 1 << 4,\r\n\r\n BelowLeft = 1 << 5,\r\n\r\n AboveRight = 1 << 6,\r\n\r\n AboveLeft = 1 << 7,\r\n\r\n Center = 1 << 8,\r\n\r\n All =\r\n Above |\r\n Below |\r\n Left |\r\n Right |\r\n BelowRight |\r\n BelowLeft |\r\n AboveRight |\r\n AboveLeft |\r\n Center,\r\n }\r\n \r\n /**\r\n * Rectangle orientation, defined by vertical vs horizontal and which direction\r\n * the \"base\" is at.\r\n */\r\n export const enum NewRectOrientation {\r\n /** Rectangle with no specific orientation. */\r\n None,\r\n\r\n /** Vertical rectangle with base at the bottom. */\r\n VerticalBottomBased,\r\n\r\n /** Vertical rectangle with base at the top. */\r\n VerticalTopBased,\r\n\r\n /** Horizontal rectangle with base at the left. */\r\n HorizontalLeftBased,\r\n\r\n /** Horizontal rectangle with base at the right. */\r\n HorizontalRightBased,\r\n }\r\n\r\n export const enum LabelDataPointParentType {\r\n /* parent shape of data label is a point*/\r\n Point,\r\n \r\n /* parent shape of data label is a rectangle*/\r\n Rectangle,\r\n \r\n /* parent shape of data label is a polygon*/\r\n Polygon\r\n }\r\n\r\n export interface LabelParentRect {\r\n /** The rectangle this data label belongs to */\r\n rect: IRect;\r\n\r\n /** The orientation of the parent rectangle */\r\n orientation: NewRectOrientation;\r\n\r\n /** Valid positions to place the label ordered by preference */\r\n validPositions: RectLabelPosition[];\r\n }\r\n\r\n export interface LabelParentPoint {\r\n /** The point this data label belongs to */\r\n point: IPoint;\r\n\r\n /** The radius of the point to be added to the offset (for circular geometry) */\r\n radius: number;\r\n \r\n /** Valid positions to place the label ordered by preference */\r\n validPositions: NewPointLabelPosition[];\r\n }\r\n\r\n export interface LabelDataPoint {\r\n // Layout members; used by the layout system to position labels\r\n\r\n /** The measured size of the text */\r\n textSize: ISize;\r\n\r\n /** Is data label preferred? Preferred labels will be rendered first */\r\n isPreferred: boolean;\r\n\r\n /** Whether the parent type is a rectangle, point or polygon */\r\n parentType: LabelDataPointParentType;\r\n\r\n /** The parent geometry for the data label */\r\n parentShape: LabelParentRect | LabelParentPoint | LabelParentPolygon;\r\n\r\n /** Whether or not the label has a background */\r\n hasBackground?: boolean;\r\n\r\n // Rendering members that are simply passed through to the label for rendering purposes\r\n\r\n /** Text to be displayed in the label */\r\n text: string;\r\n\r\n /** Color to use for the data label if drawn inside */\r\n insideFill: string;\r\n\r\n /** Color to use for the data label if drawn outside */\r\n outsideFill: string;\r\n\r\n /** The identity of the data point associated with the data label */\r\n identity: powerbi.visuals.SelectionId;\r\n\r\n /** The key of the data point associated with the data label (used if identity is not unique to each expected label) */\r\n key?: string;\r\n\r\n /** The font size of the data point associated with the data label */\r\n fontSize?: number;\r\n\r\n /** Second row of text to be displayed in the label, for additional information */\r\n secondRowText?: string;\r\n\r\n /** The calculated weight of the data point associated with the data label */\r\n weight?: number;\r\n \r\n // Temporary state used internally by the Label Layout system\r\n\r\n /** Whether or not the data label has been rendered */\r\n hasBeenRendered?: boolean;\r\n\r\n /** Size of the label adjusted for the background, if necessary */\r\n labelSize?: ISize;\r\n }\r\n\r\n export interface LabelDataPointsGroup {\r\n labelDataPoints: LabelDataPoint[];\r\n maxNumberOfLabels: number;\r\n }\r\n\r\n export interface Label extends SelectableDataPoint {\r\n /** Text to be displayed in the label */\r\n text: string;\r\n\r\n /** Second row of text to be displayed in the label */\r\n secondRowText?: string;\r\n\r\n /** The bounding box for the label */\r\n boundingBox: IRect;\r\n\r\n /** Whether or not the data label should be rendered */\r\n isVisible: boolean;\r\n\r\n /** The fill color of the data label */\r\n fill: string;\r\n\r\n /** A unique key for data points (used if key cannot be obtained from the identity) */\r\n key?: string;\r\n\r\n /** The text size of the data label */\r\n fontSize?: number;\r\n\r\n /** A text anchor used to override the default label text-anchor (middle) */\r\n textAnchor?: string; \r\n\r\n /** points for reference line rendering */\r\n leaderLinePoints?: number[][];\r\n\r\n /** Whether or not the label has a background (and text position needs to be adjusted to take that into account) */\r\n hasBackground: boolean;\r\n }\r\n\r\n export interface GridSubsection {\r\n xMin: number;\r\n xMax: number;\r\n yMin: number;\r\n yMax: number;\r\n }\r\n\r\n export class LabelArrangeGrid {\r\n private grid: IRect[][][];\r\n private viewport: IViewport;\r\n private cellSize: ISize;\r\n private columnCount: number;\r\n private rowCount: number;\r\n\r\n /** \r\n * A multiplier applied to the largest width height to attempt to balance # of\r\n * labels in each cell and number of cells each label belongs to\r\n */\r\n private static cellSizeMultiplier = 2;\r\n\r\n constructor(labelDataPointsGroups: LabelDataPointsGroup[], viewport: IViewport) {\r\n this.viewport = viewport;\r\n\r\n let maxLabelWidth = 0;\r\n let maxLabelHeight = 0;\r\n\r\n for (let labelDataPointsGroup of labelDataPointsGroups) {\r\n for (let labelDataPoint of labelDataPointsGroup.labelDataPoints) {\r\n if (labelDataPoint.isPreferred) {\r\n let dataLabelSize: ISize = labelDataPoint.labelSize;\r\n if (dataLabelSize.width > maxLabelWidth) {\r\n maxLabelWidth = dataLabelSize.width;\r\n }\r\n if (dataLabelSize.height > maxLabelHeight) {\r\n maxLabelHeight = dataLabelSize.height;\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (maxLabelWidth === 0) {\r\n maxLabelWidth = viewport.width;\r\n }\r\n if (maxLabelHeight === 0) {\r\n maxLabelHeight = viewport.height;\r\n }\r\n let cellSize = this.cellSize = { width: maxLabelWidth * LabelArrangeGrid.cellSizeMultiplier, height: maxLabelHeight * LabelArrangeGrid.cellSizeMultiplier };\r\n this.columnCount = LabelArrangeGrid.getCellCount(cellSize.width, viewport.width, 1, 100);\r\n this.rowCount = LabelArrangeGrid.getCellCount(cellSize.height, viewport.height, 1, 100);\r\n let grid: IRect[][][] = [];\r\n for (let i = 0, ilen = this.columnCount; i < ilen; i++) {\r\n grid[i] = [];\r\n for (let j = 0, jlen = this.rowCount; j < jlen; j++) {\r\n grid[i][j] = [];\r\n }\r\n }\r\n this.grid = grid;\r\n }\r\n\r\n /**\r\n * Add a rectangle to check collision against\r\n */\r\n public add(rect: IRect): void {\r\n let containingIndexRect = this.getContainingGridSubsection(rect);\r\n\r\n for (let x = containingIndexRect.xMin; x < containingIndexRect.xMax; x++) {\r\n for (let y = containingIndexRect.yMin; y < containingIndexRect.yMax; y++) {\r\n this.grid[x][y].push(rect);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Check whether the rect conflicts with the grid, either bleeding outside the\r\n * viewport or colliding with another rect added to the grid.\r\n */\r\n public hasConflict(rect: IRect): boolean {\r\n if (!this.isWithinGridViewport(rect)) {\r\n return true;\r\n }\r\n\r\n return this.hasCollision(rect);\r\n }\r\n\r\n /**\r\n * Attempt to position the given rect within the viewport. Returns\r\n * the adjusted rectangle or null if the rectangle couldn't fit, \r\n * conflicts with the viewport, or is too far outside the viewport\r\n */\r\n public tryPositionInViewport(rect: IRect): IRect {\r\n // If it's too far outside the viewport, return null\r\n if (!this.isCloseToGridViewport(rect)) {\r\n return;\r\n }\r\n\r\n if (!this.isWithinGridViewport(rect)) {\r\n rect = this.tryMoveInsideViewport(rect);\r\n }\r\n\r\n if (rect && !this.hasCollision(rect)) {\r\n return rect;\r\n }\r\n }\r\n \r\n /**\r\n * Checks for a collision between the given rect and others in the grid.\r\n * Returns true if there is a collision.\r\n */\r\n private hasCollision(rect: IRect): boolean {\r\n let containingIndexRect = this.getContainingGridSubsection(rect);\r\n let grid = this.grid;\r\n let isIntersecting = shapes.Rect.isIntersecting;\r\n for (let x = containingIndexRect.xMin; x < containingIndexRect.xMax; x++) {\r\n for (let y = containingIndexRect.yMin; y < containingIndexRect.yMax; y++) {\r\n for (let currentGridRect of grid[x][y]) {\r\n if (isIntersecting(currentGridRect, rect)) {\r\n return true;\r\n }\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n \r\n /**\r\n * Check to see if the given rect is inside the grid's viewport\r\n */\r\n private isWithinGridViewport(rect: IRect): boolean {\r\n return rect.left >= 0 &&\r\n rect.top >= 0 &&\r\n rect.left + rect.width <= this.viewport.width &&\r\n rect.top + rect.height <= this.viewport.height;\r\n }\r\n\r\n /**\r\n * Checks to see if the rect is close enough to the viewport to be moved inside.\r\n * \"Close\" here is determined by the distance between the edge of the viewport\r\n * and the closest edge of the rect; if that distance is less than the appropriate\r\n * dimension of the rect, we will reposition the rect.\r\n */\r\n private isCloseToGridViewport(rect: IRect): boolean {\r\n return rect.left + rect.width >= 0 - rect.width &&\r\n rect.top + rect.height >= -rect.height &&\r\n rect.left <= this.viewport.width + rect.width &&\r\n rect.top <= this.viewport.height + rect.height;\r\n }\r\n\r\n /**\r\n * Attempt to move the rect inside the grid's viewport. Returns the resulting\r\n * rectangle with the same width/height adjusted to be inside the viewport or\r\n * null if it couldn't fit regardless.\r\n */\r\n private tryMoveInsideViewport(rect: IRect): IRect {\r\n let result: IRect = Rect.clone(rect);\r\n let viewport = this.viewport;\r\n\r\n // Return null if it's too big to fit regardless of positioning\r\n if (rect.width > viewport.width || rect.height > viewport.height) {\r\n return;\r\n }\r\n \r\n // Only one movement should be made in each direction, because we are only moving it inside enough for it to fit; there should be no overshooting.\r\n // Outside to the left\r\n if (rect.left < 0) {\r\n result.left = 0;\r\n }\r\n // Outside to the right\r\n else if (rect.left + rect.width > viewport.width) {\r\n result.left -= (rect.left + rect.width) - viewport.width;\r\n }\r\n // Outside above\r\n if (rect.top < 0) {\r\n result.top = 0;\r\n }\r\n // Outside below\r\n else if (rect.top + rect.height > viewport.height) {\r\n result.top -= (rect.top + rect.height) - viewport.height;\r\n }\r\n\r\n return result;\r\n }\r\n\r\n private getContainingGridSubsection(rect: IRect): GridSubsection {\r\n return {\r\n xMin: LabelArrangeGrid.bound(Math.floor(rect.left / this.cellSize.width), 0, this.columnCount),\r\n xMax: LabelArrangeGrid.bound(Math.ceil((rect.left + rect.width) / this.cellSize.width), 0, this.columnCount),\r\n yMin: LabelArrangeGrid.bound(Math.floor(rect.top / this.cellSize.height), 0, this.rowCount),\r\n yMax: LabelArrangeGrid.bound(Math.ceil((rect.top + rect.height) / this.cellSize.height), 0, this.rowCount),\r\n };\r\n }\r\n\r\n private static getCellCount(step: number, length: number, minCount: number, maxCount: number): number {\r\n return LabelArrangeGrid.bound(Math.ceil(length / step), minCount, maxCount);\r\n }\r\n\r\n private static bound(value: number, min: number, max: number): number {\r\n return Math.max(Math.min(value, max), min);\r\n }\r\n }\r\n\r\n export interface DataLabelLayoutOptions {\r\n /** The amount of offset to start with when the data label is not centered */\r\n startingOffset: number;\r\n /** Maximum distance labels will be offset by */\r\n maximumOffset: number;\r\n /** The amount to increase the offset each attempt while laying out labels */\r\n offsetIterationDelta?: number;\r\n /** Horizontal padding used for checking whether a label is inside a parent shape */\r\n horizontalPadding?: number;\r\n /** Vertical padding used for checking whether a label is inside a parent shape */\r\n verticalPadding?: number;\r\n /** Should we draw reference lines in case the label offset is greater then the default */\r\n allowLeaderLines?: boolean;\r\n /** Should the layout system attempt to move the label inside the viewport when it outside, but close */\r\n attemptToMoveLabelsIntoViewport?: boolean;\r\n }\r\n\r\n export class LabelLayout {\r\n /** Maximum distance labels will be offset by */\r\n private maximumOffset: number;\r\n /** The amount to increase the offset each attempt while laying out labels */\r\n private offsetIterationDelta: number;\r\n /** The amount of offset to start with when the data label is not centered */\r\n private startingOffset: number;\r\n /** Padding used for checking whether a label is inside a parent shape */\r\n private horizontalPadding: number;\r\n /** Padding used for checking whether a label is inside a parent shape */\r\n private verticalPadding: number;\r\n /** Should we draw leader lines in case the label offset is greater then the default */\r\n private allowLeaderLines: boolean;\r\n /** Should the layout system attempt to move the label inside the viewport when it outside, but close */\r\n private attemptToMoveLabelsIntoViewport: boolean;\r\n\r\n // Default values\r\n private static defaultOffsetIterationDelta = 2;\r\n private static defaultHorizontalPadding = 2;\r\n private static defaultVerticalPadding = 2;\r\n\r\n constructor(options: DataLabelLayoutOptions) {\r\n this.startingOffset = options.startingOffset;\r\n this.maximumOffset = options.maximumOffset;\r\n if (options.offsetIterationDelta != null) {\r\n debug.assert(options.offsetIterationDelta > 0, \"label offset delta must be greater than 0\");\r\n this.offsetIterationDelta = options.offsetIterationDelta;\r\n }\r\n else {\r\n this.offsetIterationDelta = LabelLayout.defaultOffsetIterationDelta;\r\n }\r\n if (options.horizontalPadding != null) {\r\n this.horizontalPadding = options.horizontalPadding;\r\n }\r\n else {\r\n this.horizontalPadding = LabelLayout.defaultHorizontalPadding;\r\n }\r\n if (options.verticalPadding != null) {\r\n this.verticalPadding = options.verticalPadding;\r\n }\r\n else {\r\n this.verticalPadding = LabelLayout.defaultVerticalPadding;\r\n }\r\n this.allowLeaderLines = !!options.allowLeaderLines;\r\n this.attemptToMoveLabelsIntoViewport = !!options.attemptToMoveLabelsIntoViewport;\r\n }\r\n\r\n /**\r\n * Arrange takes a set of data labels and lays them out in order, assuming that\r\n * the given array has already been sorted with the most preferred labels at the\r\n * front, taking into considiration a maximum number of labels that are alowed\r\n * to display.\r\n * \r\n * Details:\r\n * - We iterate over offsets from the target position, increasing from 0 while\r\n * verifiying the maximum number of labels to display hasn't been reached\r\n * - For each offset, we iterate over each data label\r\n * - For each data label, we iterate over each position that is valid for\r\n * both the specific label and this layout\r\n * - When a valid position is found, we position the label there and no longer\r\n * reposition it.\r\n * - This prioritizes the earlier labels to be positioned closer to their\r\n * target points in the position they prefer.\r\n * - This prioritizes putting data labels close to a valid position over\r\n * placing them at their preferred position (it will place it at a less\r\n * preferred position if it will be a smaller offset)\r\n */\r\n public layout(labelDataPointsGroups: LabelDataPointsGroup[], viewport: IViewport): Label[] {\r\n // Clear data labels for a new layout\r\n for (let labelDataPointsGroup of labelDataPointsGroups) {\r\n for (let labelPoint of labelDataPointsGroup.labelDataPoints) {\r\n labelPoint.hasBeenRendered = false;\r\n if (labelPoint.hasBackground) {\r\n labelPoint.labelSize = {\r\n width: labelPoint.textSize.width + 2 * NewDataLabelUtils.horizontalLabelBackgroundPadding,\r\n height: labelPoint.textSize.height + 2 * NewDataLabelUtils.verticalLabelBackgroundPadding,\r\n };\r\n }\r\n else {\r\n labelPoint.labelSize = labelPoint.textSize;\r\n }\r\n }\r\n }\r\n\r\n let resultingDataLabels: Label[] = [];\r\n let grid = new LabelArrangeGrid(labelDataPointsGroups, viewport);\r\n\r\n // Iterates on every series\r\n for (let labelDataPointsGroup of labelDataPointsGroups) {\r\n let maxLabelsToRender = labelDataPointsGroup.maxNumberOfLabels;\r\n // NOTE: we create a copy and modify the copy to keep track of preferred vs. non-preferred labels.\r\n let labelDataPoints = _.clone(labelDataPointsGroup.labelDataPoints);\r\n let preferredLabels: LabelDataPoint[] = [];\r\n \r\n // Exclude preferred labels\r\n for (let j = labelDataPoints.length - 1, localMax = maxLabelsToRender; j >= 0 && localMax > 0; j--) {\r\n let labelPoint = labelDataPoints[j];\r\n if (labelPoint.isPreferred) {\r\n preferredLabels.unshift(labelDataPoints.splice(j, 1)[0]);\r\n localMax--;\r\n }\r\n }\r\n\r\n // First iterate all the preferred labels\r\n if (preferredLabels.length > 0) {\r\n let positionedLabels = this.positionDataLabels(preferredLabels, viewport, grid, maxLabelsToRender);\r\n maxLabelsToRender -= positionedLabels.length;\r\n resultingDataLabels = resultingDataLabels.concat(positionedLabels);\r\n }\r\n \r\n // While there are invisible not preferred labels and label distance is less than the max\r\n // allowed distance\r\n if (labelDataPoints.length > 0) {\r\n let labels = this.positionDataLabels(labelDataPoints, viewport, grid, maxLabelsToRender);\r\n resultingDataLabels = resultingDataLabels.concat(labels);\r\n }\r\n // TODO: Add reference lines if we want them\r\n }\r\n return resultingDataLabels;\r\n }\r\n\r\n private positionDataLabels(labelDataPoints: LabelDataPoint[], viewport: IViewport, grid: LabelArrangeGrid, maxLabelsToRender: number): Label[] {\r\n let resultingDataLabels: Label[] = [];\r\n let offsetDelta = this.offsetIterationDelta;\r\n let currentOffset = this.startingOffset;\r\n let currentCenteredOffset = 0;\r\n let drawLeaderLinesOnIteration: boolean;\r\n\r\n while (currentOffset <= this.maximumOffset && maxLabelsToRender > 0) {\r\n drawLeaderLinesOnIteration = this.allowLeaderLines && currentOffset > this.startingOffset;\r\n for (let labelPoint of labelDataPoints) {\r\n // Check if maximum number of labels to display has been reached\r\n if (maxLabelsToRender === 0)\r\n break;\r\n\r\n if (labelPoint.hasBeenRendered) {\r\n continue;\r\n }\r\n let dataLabel;\r\n if (labelPoint.parentType === LabelDataPointParentType.Rectangle) {\r\n dataLabel = this.tryPositionForRectPositions(labelPoint, grid, currentOffset, currentCenteredOffset);\r\n }\r\n else {\r\n dataLabel = this.tryPositionForPointPositions(labelPoint, grid, currentOffset, drawLeaderLinesOnIteration);\r\n }\r\n\r\n if (dataLabel) {\r\n resultingDataLabels.push(dataLabel);\r\n maxLabelsToRender--;\r\n }\r\n }\r\n currentOffset += offsetDelta;\r\n currentCenteredOffset += offsetDelta;\r\n }\r\n\r\n return resultingDataLabels;\r\n }\r\n\r\n private tryPositionForRectPositions(labelPoint: LabelDataPoint, grid: LabelArrangeGrid, currentLabelOffset: number, currentCenteredLabelOffset: number): Label {\r\n // Function declared and reused to reduce code duplication\r\n let tryPosition = (position: RectLabelPosition, adjustForViewport: boolean) => {\r\n let isPositionInside = position & RectLabelPosition.InsideAll;\r\n if (isPositionInside && !DataLabelRectPositioner.canFitWithinParent(labelPoint, this.horizontalPadding, this.verticalPadding)) {\r\n return;\r\n }\r\n\r\n let resultingBoundingBox = LabelLayout.tryPositionRect(grid, position, labelPoint, currentLabelOffset, currentCenteredLabelOffset, adjustForViewport);\r\n if (resultingBoundingBox) {\r\n if (isPositionInside && !DataLabelRectPositioner.isLabelWithinParent(resultingBoundingBox, labelPoint, this.horizontalPadding, this.verticalPadding)) {\r\n return;\r\n }\r\n grid.add(resultingBoundingBox);\r\n labelPoint.hasBeenRendered = true;\r\n return {\r\n boundingBox: resultingBoundingBox,\r\n text: labelPoint.text,\r\n isVisible: true,\r\n fill: isPositionInside ? labelPoint.insideFill : labelPoint.outsideFill,\r\n identity: labelPoint.identity,\r\n key: labelPoint.key,\r\n fontSize: labelPoint.fontSize,\r\n selected: false,\r\n hasBackground: !!labelPoint.hasBackground,\r\n };\r\n }\r\n };\r\n\r\n // Iterate over all positions that are valid for the data point\r\n for (let position of (<LabelParentRect>labelPoint.parentShape).validPositions) {\r\n let label = tryPosition(position, false /* adjustForViewport */);\r\n if (label)\r\n return label;\r\n }\r\n // If no position has been found and the option is enabled, try any outside positions while moving the label inside the viewport\r\n if (this.attemptToMoveLabelsIntoViewport) {\r\n for (let position of (<LabelParentRect>labelPoint.parentShape).validPositions) {\r\n let label = tryPosition(position, true /* adjustForViewport */);\r\n if (label)\r\n return label;\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Tests a particular position/offset combination for the given data label.\r\n * If the label can be placed, returns the resulting bounding box for the data\r\n * label. If not, returns null.\r\n */\r\n private static tryPositionRect(grid: LabelArrangeGrid, position: RectLabelPosition, labelDataPoint: LabelDataPoint, offset: number, centerOffset: number, adjustForViewport: boolean): IRect {\r\n let offsetForPosition = offset;\r\n if (position & RectLabelPosition.InsideCenter) {\r\n offsetForPosition = centerOffset;\r\n }\r\n let labelRect = DataLabelRectPositioner.getLabelRect(labelDataPoint, position, offsetForPosition);\r\n\r\n if (position !== RectLabelPosition.InsideCenter || (<LabelParentRect>labelDataPoint.parentShape).orientation === NewRectOrientation.None) {\r\n if (!grid.hasConflict(labelRect)) {\r\n return labelRect;\r\n }\r\n if (adjustForViewport) {\r\n return grid.tryPositionInViewport(labelRect);\r\n }\r\n }\r\n else {\r\n // If the position is centered, attempt to offset in both a positive and negative direction\r\n if (!grid.hasConflict(labelRect)) {\r\n return labelRect;\r\n }\r\n labelRect = DataLabelRectPositioner.getLabelRect(labelDataPoint, position, -offsetForPosition);\r\n if (!grid.hasConflict(labelRect)) {\r\n return labelRect;\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private tryPositionForPointPositions(labelPoint: LabelDataPoint, grid: LabelArrangeGrid, currentLabelOffset: number, drawLeaderLines: boolean): Label {\r\n // Function declared and reused to reduce code duplication\r\n let tryPosition = (position: NewPointLabelPosition, parentShape: LabelParentPoint, adjustForViewport: boolean) => {\r\n let resultingBoundingBox = LabelLayout.tryPositionPoint(grid, position, labelPoint, currentLabelOffset, adjustForViewport);\r\n if (resultingBoundingBox) {\r\n grid.add(resultingBoundingBox);\r\n labelPoint.hasBeenRendered = true;\r\n return {\r\n boundingBox: resultingBoundingBox,\r\n text: labelPoint.text,\r\n isVisible: true,\r\n fill: position === NewPointLabelPosition.Center ? labelPoint.insideFill : labelPoint.outsideFill, // If we ever support \"inside\" for point-based labels, this needs to be updated\r\n isInsideParent: position === NewPointLabelPosition.Center,\r\n identity: labelPoint.identity,\r\n key: labelPoint.key,\r\n fontSize: labelPoint.fontSize,\r\n selected: false,\r\n leaderLinePoints: drawLeaderLines ? DataLabelPointPositioner.getLabelLeaderLineEndingPoint(resultingBoundingBox, position, parentShape) : null,\r\n hasBackground: !!labelPoint.hasBackground,\r\n };\r\n }\r\n };\r\n\r\n // Iterate over all positions that are valid for the data point\r\n let parentShape = (<LabelParentPoint>labelPoint.parentShape);\r\n let validPositions = parentShape.validPositions;\r\n for (let position of validPositions) {\r\n let label = tryPosition(position, parentShape, false /* adjustForViewport */);\r\n if (label)\r\n return label;\r\n }\r\n // Attempt to position at the most preferred position by simply moving it inside the viewport\r\n if (this.attemptToMoveLabelsIntoViewport && !_.isEmpty(validPositions)) {\r\n let label = tryPosition(validPositions[0], parentShape, true /* adjustForViewport */);\r\n if (label)\r\n return label;\r\n }\r\n return null;\r\n }\r\n\r\n private static tryPositionPoint(grid: LabelArrangeGrid, position: NewPointLabelPosition, labelDataPoint: LabelDataPoint, offset: number, adjustForViewport: boolean): IRect {\r\n let labelRect = DataLabelPointPositioner.getLabelRect(labelDataPoint.labelSize, <LabelParentPoint>labelDataPoint.parentShape, position, offset);\r\n\r\n if (!grid.hasConflict(labelRect)) {\r\n return labelRect;\r\n }\r\n if (adjustForViewport) {\r\n return grid.tryPositionInViewport(labelRect);\r\n }\r\n\r\n return null;\r\n }\r\n }\r\n \r\n /**\r\n * (Private) Contains methods for calculating the bounding box of a data label\r\n */\r\n export module DataLabelRectPositioner {\r\n\r\n export function getLabelRect(labelDataPoint: LabelDataPoint, position: RectLabelPosition, offset: number): IRect {\r\n let parentRect: LabelParentRect = <LabelParentRect>labelDataPoint.parentShape;\r\n if (parentRect != null) {\r\n // Each combination of position and orientation results in a different actual positioning, which is then called.\r\n switch (position) {\r\n case RectLabelPosition.InsideCenter:\r\n switch (parentRect.orientation) {\r\n case NewRectOrientation.VerticalBottomBased:\r\n case NewRectOrientation.VerticalTopBased:\r\n return DataLabelRectPositioner.middleVertical(labelDataPoint.labelSize, parentRect.rect, offset);\r\n case NewRectOrientation.HorizontalLeftBased:\r\n case NewRectOrientation.HorizontalRightBased:\r\n return DataLabelRectPositioner.middleHorizontal(labelDataPoint.labelSize, parentRect.rect, offset);\r\n case NewRectOrientation.None:\r\n // TODO: which of the above cases should we default to for rects with no orientation?\r\n }\r\n case RectLabelPosition.InsideBase:\r\n switch (parentRect.orientation) {\r\n case NewRectOrientation.VerticalBottomBased:\r\n return DataLabelRectPositioner.bottomInside(labelDataPoint.labelSize, parentRect.rect, offset);\r\n case NewRectOrientation.VerticalTopBased:\r\n return DataLabelRectPositioner.topInside(labelDataPoint.labelSize, parentRect.rect, offset);\r\n case NewRectOrientation.HorizontalLeftBased:\r\n return DataLabelRectPositioner.leftInside(labelDataPoint.labelSize, parentRect.rect, offset);\r\n case NewRectOrientation.HorizontalRightBased:\r\n return DataLabelRectPositioner.rightInside(labelDataPoint.labelSize, parentRect.rect, offset);\r\n case NewRectOrientation.None:\r\n // TODO: which of the above cases should we default to for rects with no orientation?\r\n }\r\n case RectLabelPosition.InsideEnd:\r\n switch (parentRect.orientation) {\r\n case NewRectOrientation.VerticalBottomBased:\r\n return DataLabelRectPositioner.topInside(labelDataPoint.labelSize, parentRect.rect, offset);\r\n case NewRectOrientation.VerticalTopBased:\r\n return DataLabelRectPositioner.bottomInside(labelDataPoint.labelSize, parentRect.rect, offset);\r\n case NewRectOrientation.HorizontalLeftBased:\r\n return DataLabelRectPositioner.rightInside(labelDataPoint.labelSize, parentRect.rect, offset);\r\n case NewRectOrientation.HorizontalRightBased:\r\n return DataLabelRectPositioner.leftInside(labelDataPoint.labelSize, parentRect.rect, offset);\r\n case NewRectOrientation.None:\r\n // TODO: which of the above cases should we default to for rects with no orientation?\r\n }\r\n case RectLabelPosition.OutsideBase:\r\n switch (parentRect.orientation) {\r\n case NewRectOrientation.VerticalBottomBased:\r\n return DataLabelRectPositioner.bottomOutside(labelDataPoint.labelSize, parentRect.rect, offset);\r\n case NewRectOrientation.VerticalTopBased:\r\n return DataLabelRectPositioner.topOutside(labelDataPoint.labelSize, parentRect.rect, offset);\r\n case NewRectOrientation.HorizontalLeftBased:\r\n return DataLabelRectPositioner.leftOutside(labelDataPoint.labelSize, parentRect.rect, offset);\r\n case NewRectOrientation.HorizontalRightBased:\r\n return DataLabelRectPositioner.rightOutside(labelDataPoint.labelSize, parentRect.rect, offset);\r\n case NewRectOrientation.None:\r\n // TODO: which of the above cases should we default to for rects with no orientation?\r\n }\r\n case RectLabelPosition.OutsideEnd:\r\n switch (parentRect.orientation) {\r\n case NewRectOrientation.VerticalBottomBased:\r\n return DataLabelRectPositioner.topOutside(labelDataPoint.labelSize, parentRect.rect, offset);\r\n case NewRectOrientation.VerticalTopBased:\r\n return DataLabelRectPositioner.bottomOutside(labelDataPoint.labelSize, parentRect.rect, offset);\r\n case NewRectOrientation.HorizontalLeftBased:\r\n return DataLabelRectPositioner.rightOutside(labelDataPoint.labelSize, parentRect.rect, offset);\r\n case NewRectOrientation.HorizontalRightBased:\r\n return DataLabelRectPositioner.leftOutside(labelDataPoint.labelSize, parentRect.rect, offset);\r\n case NewRectOrientation.None:\r\n // TODO: which of the above cases should we default to for rects with no orientation?\r\n }\r\n default:\r\n debug.assertFail(\"Unsupported label position\");\r\n }\r\n }\r\n else {\r\n // TODO: Data labels for non-rectangular visuals (line chart)\r\n }\r\n return null;\r\n }\r\n\r\n export function canFitWithinParent(labelDataPoint: LabelDataPoint, horizontalPadding: number, verticalPadding: number): boolean {\r\n return (labelDataPoint.labelSize.width + 2 * horizontalPadding < (<LabelParentRect>labelDataPoint.parentShape).rect.width) ||\r\n (labelDataPoint.labelSize.height + 2 * verticalPadding < (<LabelParentRect>labelDataPoint.parentShape).rect.height);\r\n }\r\n\r\n export function isLabelWithinParent(labelRect: IRect, labelPoint: LabelDataPoint, horizontalPadding: number, verticalPadding: number): boolean {\r\n let parentRect = (<LabelParentRect>labelPoint.parentShape).rect;\r\n let labelRectWithPadding = shapes.Rect.inflate(labelRect, { left: horizontalPadding, right: horizontalPadding, top: verticalPadding, bottom: verticalPadding });\r\n return shapes.Rect.containsPoint(parentRect, {\r\n x: labelRectWithPadding.left,\r\n y: labelRectWithPadding.top,\r\n }) && shapes.Rect.containsPoint(parentRect, {\r\n x: labelRectWithPadding.left + labelRectWithPadding.width,\r\n y: labelRectWithPadding.top + labelRectWithPadding.height,\r\n });\r\n }\r\n\r\n export function topInside(labelSize: ISize, parentRect: IRect, offset: number): IRect {\r\n return {\r\n left: parentRect.left + parentRect.width / 2.0 - labelSize.width / 2.0,\r\n top: parentRect.top + offset,\r\n width: labelSize.width,\r\n height: labelSize.height\r\n };\r\n }\r\n\r\n export function bottomInside(labelSize: ISize, parentRect: IRect, offset: number): IRect {\r\n return {\r\n left: parentRect.left + parentRect.width / 2.0 - labelSize.width / 2.0,\r\n top: (parentRect.top + parentRect.height) - offset - labelSize.height,\r\n width: labelSize.width,\r\n height: labelSize.height\r\n };\r\n }\r\n\r\n export function rightInside(labelSize: ISize, parentRect: IRect, offset: number): IRect {\r\n return {\r\n left: (parentRect.left + parentRect.width) - labelSize.width - offset,\r\n top: parentRect.top + parentRect.height / 2.0 - labelSize.height / 2.0,\r\n width: labelSize.width,\r\n height: labelSize.height\r\n };\r\n }\r\n\r\n export function leftInside(labelSize: ISize, parentRect: IRect, offset: number): IRect {\r\n return {\r\n left: parentRect.left + offset,\r\n top: parentRect.top + parentRect.height / 2.0 - labelSize.height / 2.0,\r\n width: labelSize.width,\r\n height: labelSize.height\r\n };\r\n }\r\n\r\n export function topOutside(labelSize: ISize, parentRect: IRect, offset: number): IRect {\r\n return {\r\n left: parentRect.left + parentRect.width / 2.0 - labelSize.width / 2.0,\r\n top: parentRect.top - labelSize.height - offset,\r\n width: labelSize.width,\r\n height: labelSize.height\r\n };\r\n }\r\n\r\n export function bottomOutside(labelSize: ISize, parentRect: IRect, offset: number): IRect {\r\n return {\r\n left: parentRect.left + parentRect.width / 2.0 - labelSize.width / 2.0,\r\n top: (parentRect.top + parentRect.height) + offset,\r\n width: labelSize.width,\r\n height: labelSize.height\r\n };\r\n }\r\n\r\n export function rightOutside(labelSize: ISize, parentRect: IRect, offset: number): IRect {\r\n return {\r\n left: (parentRect.left + parentRect.width) + offset,\r\n top: parentRect.top + parentRect.height / 2.0 - labelSize.height / 2.0,\r\n width: labelSize.width,\r\n height: labelSize.height\r\n };\r\n }\r\n\r\n export function leftOutside(labelSize: ISize, parentRect: IRect, offset: number): IRect {\r\n return {\r\n left: parentRect.left - labelSize.width - offset,\r\n top: parentRect.top + parentRect.height / 2.0 - labelSize.height / 2.0,\r\n width: labelSize.width,\r\n height: labelSize.height\r\n };\r\n }\r\n\r\n export function middleHorizontal(labelSize: ISize, parentRect: IRect, offset: number): IRect {\r\n return {\r\n left: parentRect.left + parentRect.width / 2.0 - labelSize.width / 2.0 + offset,\r\n top: parentRect.top + parentRect.height / 2.0 - labelSize.height / 2.0,\r\n width: labelSize.width,\r\n height: labelSize.height\r\n };\r\n }\r\n\r\n export function middleVertical(labelSize: ISize, parentRect: IRect, offset: number): IRect {\r\n return {\r\n left: parentRect.left + parentRect.width / 2.0 - labelSize.width / 2.0,\r\n top: parentRect.top + parentRect.height / 2.0 - labelSize.height / 2.0 + offset,\r\n width: labelSize.width,\r\n height: labelSize.height\r\n };\r\n }\r\n }\r\n\r\n export module DataLabelPointPositioner {\r\n export const cos45 = Math.cos(45);\r\n export const sin45 = Math.sin(45);\r\n\r\n export function getLabelRect(labelSize: ISize, parentPoint: LabelParentPoint, position: NewPointLabelPosition, offset: number): IRect {\r\n switch (position) {\r\n case NewPointLabelPosition.Above: {\r\n return DataLabelPointPositioner.above(labelSize, parentPoint.point, parentPoint.radius + offset);\r\n }\r\n case NewPointLabelPosition.Below: {\r\n return DataLabelPointPositioner.below(labelSize, parentPoint.point, parentPoint.radius + offset);\r\n }\r\n case NewPointLabelPosition.Left: {\r\n return DataLabelPointPositioner.left(labelSize, parentPoint.point, parentPoint.radius + offset);\r\n }\r\n case NewPointLabelPosition.Right: {\r\n return DataLabelPointPositioner.right(labelSize, parentPoint.point, parentPoint.radius + offset);\r\n }\r\n case NewPointLabelPosition.BelowLeft: {\r\n return DataLabelPointPositioner.belowLeft(labelSize, parentPoint.point, parentPoint.radius + offset);\r\n }\r\n case NewPointLabelPosition.BelowRight: {\r\n return DataLabelPointPositioner.belowRight(labelSize, parentPoint.point, parentPoint.radius + offset);\r\n }\r\n case NewPointLabelPosition.AboveLeft: {\r\n return DataLabelPointPositioner.aboveLeft(labelSize, parentPoint.point, parentPoint.radius + offset);\r\n }\r\n case NewPointLabelPosition.AboveRight: {\r\n return DataLabelPointPositioner.aboveRight(labelSize, parentPoint.point, parentPoint.radius + offset);\r\n }\r\n case NewPointLabelPosition.Center: {\r\n return DataLabelPointPositioner.center(labelSize, parentPoint.point);\r\n }\r\n default: {\r\n debug.assertFail(\"Unsupported label position\");\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n export function above(labelSize: ISize, parentPoint: IPoint, offset: number): IRect {\r\n return {\r\n left: parentPoint.x - (labelSize.width / 2),\r\n top: parentPoint.y - offset - labelSize.height,\r\n width: labelSize.width,\r\n height: labelSize.height\r\n };\r\n }\r\n\r\n export function below(labelSize: ISize, parentPoint: IPoint, offset: number): IRect {\r\n return {\r\n left: parentPoint.x - (labelSize.width / 2),\r\n top: parentPoint.y + offset,\r\n width: labelSize.width,\r\n height: labelSize.height\r\n };\r\n }\r\n\r\n export function left(labelSize: ISize, parentPoint: IPoint, offset: number): IRect {\r\n return {\r\n left: parentPoint.x - offset - labelSize.width,\r\n top: parentPoint.y - (labelSize.height / 2),\r\n width: labelSize.width,\r\n height: labelSize.height\r\n };\r\n }\r\n\r\n export function right(labelSize: ISize, parentPoint: IPoint, offset: number): IRect {\r\n return {\r\n left: parentPoint.x + offset,\r\n top: parentPoint.y - (labelSize.height / 2),\r\n width: labelSize.width,\r\n height: labelSize.height\r\n };\r\n }\r\n\r\n export function belowLeft(labelSize: ISize, parentPoint: IPoint, offset: number): IRect {\r\n return {\r\n left: parentPoint.x - (sin45 * offset) - labelSize.width,\r\n top: parentPoint.y + (cos45 * offset),\r\n width: labelSize.width,\r\n height: labelSize.height\r\n };\r\n }\r\n\r\n export function belowRight(labelSize: ISize, parentPoint: IPoint, offset: number): IRect {\r\n return {\r\n left: parentPoint.x + (sin45 * offset),\r\n top: parentPoint.y + (cos45 * offset),\r\n width: labelSize.width,\r\n height: labelSize.height\r\n };\r\n }\r\n\r\n export function aboveLeft(labelSize: ISize, parentPoint: IPoint, offset: number): IRect {\r\n return {\r\n left: parentPoint.x - (sin45 * offset) - labelSize.width,\r\n top: parentPoint.y - (cos45 * offset) - labelSize.height,\r\n width: labelSize.width,\r\n height: labelSize.height\r\n };\r\n }\r\n\r\n export function aboveRight(labelSize: ISize, parentPoint: IPoint, offset: number): IRect {\r\n return {\r\n left: parentPoint.x + (sin45 * offset),\r\n top: parentPoint.y - (cos45 * offset) - labelSize.height,\r\n width: labelSize.width,\r\n height: labelSize.height\r\n };\r\n }\r\n export function center(labelSize: ISize, parentPoint: IPoint): IRect {\r\n return {\r\n left: parentPoint.x - (labelSize.width / 2),\r\n top: parentPoint.y - (labelSize.height / 2),\r\n width: labelSize.width,\r\n height: labelSize.height\r\n };\r\n }\r\n\r\n export function getLabelLeaderLineEndingPoint(boundingBox: IRect, position: NewPointLabelPosition, parentShape: LabelParentPoint): number[][] {\r\n let x = boundingBox.left;\r\n let y = boundingBox.top;\r\n switch (position) {\r\n case NewPointLabelPosition.Above:\r\n x += (boundingBox.width / 2);\r\n y += boundingBox.height;\r\n break;\r\n case NewPointLabelPosition.Below:\r\n x += (boundingBox.width / 2);\r\n break;\r\n case NewPointLabelPosition.Left:\r\n x += boundingBox.width;\r\n y += ((boundingBox.height * 2) / 3);\r\n break;\r\n case NewPointLabelPosition.Right:\r\n y += ((boundingBox.height * 2) / 3);\r\n break;\r\n case NewPointLabelPosition.BelowLeft:\r\n x += boundingBox.width;\r\n y += (boundingBox.height / 2);\r\n break;\r\n case NewPointLabelPosition.BelowRight:\r\n y += (boundingBox.height / 2);\r\n break;\r\n case NewPointLabelPosition.AboveLeft:\r\n x += boundingBox.width;\r\n y += boundingBox.height;\r\n break;\r\n case NewPointLabelPosition.AboveRight:\r\n y += boundingBox.height;\r\n break;\r\n }\r\n\r\n return [[parentShape.point.x, parentShape.point.y], [x, y]];\r\n }\r\n }\r\n}\r\n","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi {\r\n /** Repreasents the sequence of the dates/times */\r\n export class DateTimeSequence {\r\n // Constants\r\n private static MIN_COUNT: number = 1;\r\n private static MAX_COUNT: number = 1000; \r\n\r\n // Fields\r\n public min: Date;\r\n public max: Date;\r\n public unit: DateTimeUnit;\r\n public sequence: Date[];\r\n public interval: number;\r\n public intervalOffset: number;\r\n\r\n // Constructors\r\n /** Creates new instance of the DateTimeSequence */\r\n constructor(unit: DateTimeUnit) { \r\n this.unit = unit;\r\n this.sequence = [];\r\n this.min = new Date(\"9999-12-31T23:59:59.999\");\r\n this.max = new Date(\"0001-01-01T00:00:00.000\");\r\n }\r\n\r\n // Methods\r\n /** \r\n * Add a new Date to a sequence.\r\n * @param date - date to add\r\n */\r\n public add(date: Date) { \r\n if (date < this.min) { \r\n this.min = date;\r\n }\r\n if (date > this.max) { \r\n this.max = date;\r\n }\r\n this.sequence.push(date);\r\n }\r\n\r\n // Methods\r\n /** \r\n * Extends the sequence to cover new date range\r\n * @param min - new min to be covered by sequence\r\n * @param max - new max to be covered by sequence\r\n */\r\n public extendToCover(min: Date, max: Date): void {\r\n let x: Date = this.min;\r\n while (min < x) {\r\n x = DateTimeSequence.addInterval(x, -this.interval, this.unit);\r\n this.sequence.splice(0, 0, x);\r\n }\r\n this.min = x;\r\n\r\n x = this.max;\r\n while (x < max) {\r\n x = DateTimeSequence.addInterval(x, this.interval, this.unit);\r\n this.sequence.push(x);\r\n }\r\n this.max = x;\r\n }\r\n\r\n /** \r\n * Move the sequence to cover new date range\r\n * @param min - new min to be covered by sequence\r\n * @param max - new max to be covered by sequence\r\n */\r\n public moveToCover(min: Date, max: Date): void { \r\n let delta: number = DateTimeSequence.getDelta(min, max, this.unit);\r\n let count = Math.floor(delta / this.interval);\r\n this.min = DateTimeSequence.addInterval(this.min, count * this.interval, this.unit);\r\n\r\n this.sequence = []; \r\n this.sequence.push(this.min);\r\n this.max = this.min;\r\n while (this.max < max) {\r\n this.max = DateTimeSequence.addInterval(this.max, this.interval, this.unit);\r\n this.sequence.push(this.max);\r\n }\r\n }\r\n\r\n // Static\r\n /**\r\n * Calculate a new DateTimeSequence\r\n * @param dataMin - Date representing min of the data range\r\n * @param dataMax - Date representing max of the data range\r\n * @param expectedCount - expected number of intervals in the sequence\r\n * @param unit - of the intervals in the sequence\r\n */\r\n public static calculate(dataMin: Date, dataMax: Date, expectedCount: number, unit?: DateTimeUnit): DateTimeSequence {\r\n if (!unit) { \r\n unit = DateTimeSequence.getIntervalUnit(dataMin, dataMax, expectedCount);\r\n }\r\n switch (unit) {\r\n case DateTimeUnit.Year:\r\n return DateTimeSequence.calculateYears(dataMin, dataMax, expectedCount);\r\n case DateTimeUnit.Month:\r\n return DateTimeSequence.calculateMonths(dataMin, dataMax, expectedCount);\r\n case DateTimeUnit.Week:\r\n return DateTimeSequence.calculateWeeks(dataMin, dataMax, expectedCount);\r\n case DateTimeUnit.Day:\r\n return DateTimeSequence.calculateDays(dataMin, dataMax, expectedCount);\r\n case DateTimeUnit.Hour:\r\n return DateTimeSequence.calculateHours(dataMin, dataMax, expectedCount);\r\n case DateTimeUnit.Minute:\r\n return DateTimeSequence.calculateMinutes(dataMin, dataMax, expectedCount);\r\n case DateTimeUnit.Second:\r\n return DateTimeSequence.calculateSeconds(dataMin, dataMax, expectedCount);\r\n case DateTimeUnit.Millisecond:\r\n return DateTimeSequence.calculateMilliseconds(dataMin, dataMax, expectedCount);\r\n default:\r\n debug.assertFail(\"Unsupported DateTimeUnit\");\r\n }\r\n }\r\n\r\n public static calculateYears(dataMin: Date, dataMax: Date, expectedCount: number): DateTimeSequence {\r\n debug.assertValue(dataMin, \"dataMin\");\r\n debug.assertValue(dataMax, \"dataMax\");\r\n debug.assert(!expectedCount || (expectedCount >= DateTimeSequence.MIN_COUNT && expectedCount <= DateTimeSequence.MAX_COUNT), \"Expected count is out of range\");\r\n\r\n // Calculate range and sequence\r\n let yearsRange = NumericSequenceRange.calculateDataRange(dataMin.getFullYear(), dataMax.getFullYear(), false);\r\n let yearsSequence = NumericSequence.calculate(yearsRange, expectedCount, 0);\r\n let years = yearsSequence.sequence;\r\n\r\n // Convert to date sequence\r\n let result = new DateTimeSequence(DateTimeUnit.Year);\r\n for (let i = 0; i < years.length; i++) { \r\n let year = years[i];\r\n if (year) {\r\n result.add(new Date(year, 0, 1));\r\n }\r\n }\r\n result.interval = yearsSequence.interval;\r\n result.intervalOffset = yearsSequence.intervalOffset;\r\n return result;\r\n }\r\n\r\n public static calculateMonths(dataMin: Date, dataMax: Date, expectedCount: number): DateTimeSequence {\r\n debug.assertValue(dataMin, \"dataMin\");\r\n debug.assertValue(dataMax, \"dataMax\");\r\n debug.assert(expectedCount === undefined || (expectedCount >= DateTimeSequence.MIN_COUNT && expectedCount <= DateTimeSequence.MAX_COUNT), \"expected count is out of range\");\r\n\r\n // Calculate range\r\n let minYear = dataMin.getFullYear();\r\n let maxYear = dataMax.getFullYear();\r\n let minMonth = dataMin.getMonth();\r\n let maxMonth = (maxYear - minYear) * 12 + dataMax.getMonth();\r\n let date = new Date(minYear, 0, 1);\r\n \r\n // Calculate month sequence \r\n let sequence = NumericSequence.calculateUnits(minMonth, maxMonth, expectedCount, [1, 2, 3, 6, 12]);\r\n\r\n // Convert to date sequence\r\n let result = DateTimeSequence.fromNumericSequence(date, sequence, DateTimeUnit.Month);\r\n return result;\r\n }\r\n\r\n public static calculateWeeks(dataMin: Date, dataMax: Date, expectedCount: number): DateTimeSequence {\r\n debug.assertValue(dataMin, \"dataMin\");\r\n debug.assertValue(dataMax, \"dataMax\");\r\n debug.assert(expectedCount === undefined || (expectedCount >= DateTimeSequence.MIN_COUNT && expectedCount <= DateTimeSequence.MAX_COUNT), \"expected count is out of range\");\r\n\r\n let firstDayOfWeek = 0;\r\n let minDayOfWeek = dataMin.getDay();\r\n let dayOffset = (minDayOfWeek - firstDayOfWeek + 7) % 7;\r\n let minDay = dataMin.getDate() - dayOffset;\r\n\r\n // Calculate range\r\n let date = new Date(dataMin.getFullYear(), dataMin.getMonth(), minDay);\r\n let min = 0;\r\n let max = Double.ceilWithPrecision(DateTimeSequence.getDelta(date, dataMax, DateTimeUnit.Week));\r\n\r\n // Calculate week sequence\r\n let sequence = NumericSequence.calculateUnits(min, max, expectedCount, [1, 2, 4, 8]);\r\n\r\n // Convert to date sequence\r\n let result = DateTimeSequence.fromNumericSequence(date, sequence, DateTimeUnit.Week);\r\n return result;\r\n }\r\n\r\n public static calculateDays(dataMin: Date, dataMax: Date, expectedCount: number): DateTimeSequence {\r\n debug.assertValue(dataMin, \"dataMin\");\r\n debug.assertValue(dataMax, \"dataMax\");\r\n debug.assert(expectedCount === undefined || (expectedCount >= DateTimeSequence.MIN_COUNT && expectedCount <= DateTimeSequence.MAX_COUNT), \"expected count is out of range\");\r\n\r\n // Calculate range\r\n let date = new Date(dataMin.getFullYear(), dataMin.getMonth(), dataMin.getDate());\r\n let min = 0;\r\n let max = Double.ceilWithPrecision(DateTimeSequence.getDelta(dataMin, dataMax, DateTimeUnit.Day));\r\n \r\n // Calculate day sequence\r\n let sequence = NumericSequence.calculateUnits(min, max, expectedCount, [1, 2, 7, 14]);\r\n\r\n // Convert to date sequence\r\n let result = DateTimeSequence.fromNumericSequence(date, sequence, DateTimeUnit.Day);\r\n return result;\r\n }\r\n\r\n public static calculateHours(dataMin: Date, dataMax: Date, expectedCount: number): DateTimeSequence {\r\n debug.assertValue(dataMin, \"dataMin\");\r\n debug.assertValue(dataMax, \"dataMax\");\r\n debug.assert(expectedCount === undefined || (expectedCount >= DateTimeSequence.MIN_COUNT && expectedCount <= DateTimeSequence.MAX_COUNT), \"expected count is out of range\");\r\n\r\n // Calculate range\r\n let date = new Date(dataMin.getFullYear(), dataMin.getMonth(), dataMin.getDate());\r\n let min = Double.floorWithPrecision(DateTimeSequence.getDelta(date, dataMin, DateTimeUnit.Hour));\r\n let max = Double.ceilWithPrecision(DateTimeSequence.getDelta(date, dataMax, DateTimeUnit.Hour));\r\n \r\n // Calculate hour sequence\r\n let sequence = NumericSequence.calculateUnits(min, max, expectedCount, [1, 2, 3, 6, 12, 24]);\r\n\r\n // Convert to date sequence\r\n let result = DateTimeSequence.fromNumericSequence(date, sequence, DateTimeUnit.Hour);\r\n return result;\r\n }\r\n\r\n public static calculateMinutes(dataMin: Date, dataMax: Date, expectedCount: number): DateTimeSequence {\r\n debug.assertValue(dataMin, \"dataMin\");\r\n debug.assertValue(dataMax, \"dataMax\");\r\n debug.assert(expectedCount === undefined || (expectedCount >= DateTimeSequence.MIN_COUNT && expectedCount <= DateTimeSequence.MAX_COUNT), \"expected count is out of range\");\r\n\r\n // Calculate range\r\n let date = new Date(dataMin.getFullYear(), dataMin.getMonth(), dataMin.getDate(), dataMin.getHours());\r\n let min = Double.floorWithPrecision(DateTimeSequence.getDelta(date, dataMin, DateTimeUnit.Minute));\r\n let max = Double.ceilWithPrecision(DateTimeSequence.getDelta(date, dataMax, DateTimeUnit.Minute));\r\n\r\n // Calculate minutes numeric sequence\r\n let sequence = NumericSequence.calculateUnits(min, max, expectedCount, [1, 2, 5, 10, 15, 30, 60, 60 * 2, 60 * 3, 60 * 6, 60 * 12, 60 * 24]);\r\n\r\n // Convert to date sequence\r\n let result = DateTimeSequence.fromNumericSequence(date, sequence, DateTimeUnit.Minute);\r\n return result;\r\n }\r\n\r\n public static calculateSeconds(dataMin: Date, dataMax: Date, expectedCount: number): DateTimeSequence {\r\n debug.assertValue(dataMin, \"dataMin\");\r\n debug.assertValue(dataMax, \"dataMax\");\r\n debug.assert(expectedCount === undefined || (expectedCount >= DateTimeSequence.MIN_COUNT && expectedCount <= DateTimeSequence.MAX_COUNT), \"expected count is out of range\");\r\n\r\n // Calculate range\r\n let date = new Date(dataMin.getFullYear(), dataMin.getMonth(), dataMin.getDate(), dataMin.getHours(), dataMin.getMinutes());\r\n let min = Double.floorWithPrecision(DateTimeSequence.getDelta(date, dataMin, DateTimeUnit.Second));\r\n let max = Double.ceilWithPrecision(DateTimeSequence.getDelta(date, dataMax, DateTimeUnit.Second));\r\n\r\n // Calculate minutes numeric sequence\r\n let sequence = NumericSequence.calculateUnits(min, max, expectedCount, [1, 2, 5, 10, 15, 30, 60, 60 * 2, 60 * 5, 60 * 10, 60 * 15, 60 * 30, 60 * 60]);\r\n\r\n // Convert to date sequence\r\n let result = DateTimeSequence.fromNumericSequence(date, sequence, DateTimeUnit.Second);\r\n return result;\r\n }\r\n\r\n public static calculateMilliseconds(dataMin: Date, dataMax: Date, expectedCount: number): DateTimeSequence {\r\n debug.assertValue(dataMin, \"dataMin\");\r\n debug.assertValue(dataMax, \"dataMax\");\r\n debug.assert(expectedCount === undefined || (expectedCount >= DateTimeSequence.MIN_COUNT && expectedCount <= DateTimeSequence.MAX_COUNT), \"expected count is out of range\");\r\n\r\n // Calculate range\r\n let date = new Date(dataMin.getFullYear(), dataMin.getMonth(), dataMin.getDate(), dataMin.getHours(), dataMin.getMinutes(), dataMin.getSeconds());\r\n let min = DateTimeSequence.getDelta(date, dataMin, DateTimeUnit.Millisecond);\r\n let max = DateTimeSequence.getDelta(date, dataMax, DateTimeUnit.Millisecond);\r\n \r\n // Calculate milliseconds numeric sequence\r\n let sequence = NumericSequence.calculate(NumericSequenceRange.calculate(min, max), expectedCount, 0);\r\n\r\n // Convert to date sequence\r\n let result = DateTimeSequence.fromNumericSequence(date, sequence, DateTimeUnit.Millisecond);\r\n return result;\r\n }\r\n\r\n private static fromNumericSequence(date: Date, sequence: NumericSequence, unit: DateTimeUnit) { \r\n let result = new DateTimeSequence(unit);\r\n for (let i = 0; i < sequence.sequence.length; i++) { \r\n let x: number = sequence.sequence[i];\r\n let d: Date = DateTimeSequence.addInterval(date, x, unit);\r\n result.add(d);\r\n }\r\n result.interval = sequence.interval;\r\n result.intervalOffset = sequence.intervalOffset;\r\n return result;\r\n }\r\n\r\n private static addInterval(value: Date, interval: number, unit: DateTimeUnit): Date {\r\n interval = Math.round(interval);\r\n switch (unit)\r\n {\r\n case DateTimeUnit.Year:\r\n return DateUtils.addYears(value, interval);\r\n case DateTimeUnit.Month:\r\n return DateUtils.addMonths(value, interval);\r\n case DateTimeUnit.Week:\r\n return DateUtils.addWeeks(value, interval);\r\n case DateTimeUnit.Day:\r\n return DateUtils.addDays(value, interval);\r\n case DateTimeUnit.Hour:\r\n return DateUtils.addHours(value, interval);\r\n case DateTimeUnit.Minute:\r\n return DateUtils.addMinutes(value, interval);\r\n case DateTimeUnit.Second:\r\n return DateUtils.addSeconds(value, interval);\r\n case DateTimeUnit.Millisecond:\r\n return DateUtils.addMilliseconds(value, interval);\r\n }\r\n }\r\n\r\n private static getDelta(min: Date, max: Date, unit: DateTimeUnit): number {\r\n let delta: number = 0;\r\n switch (unit) {\r\n case DateTimeUnit.Year:\r\n delta = max.getFullYear() - min.getFullYear();\r\n break;\r\n case DateTimeUnit.Month:\r\n delta = (max.getFullYear() - min.getFullYear()) * 12 + max.getMonth() - min.getMonth();\r\n break;\r\n case DateTimeUnit.Week:\r\n delta = (max.getTime() - min.getTime()) / (7 * 24 * 3600000);\r\n break;\r\n case DateTimeUnit.Day:\r\n delta = (max.getTime() - min.getTime()) / (24 * 3600000);\r\n break;\r\n case DateTimeUnit.Hour:\r\n delta = (max.getTime() - min.getTime()) / 3600000;\r\n break;\r\n case DateTimeUnit.Minute:\r\n delta = (max.getTime() - min.getTime()) / 60000;\r\n break;\r\n case DateTimeUnit.Second:\r\n delta = (max.getTime() - min.getTime()) / 1000;\r\n break;\r\n case DateTimeUnit.Millisecond:\r\n delta = max.getTime() - min.getTime();\r\n break;\r\n }\r\n return delta;\r\n }\r\n\r\n public static getIntervalUnit(min:Date, max:Date, maxCount: number): DateTimeUnit {\r\n maxCount = Math.max(maxCount, 2);\r\n let totalDays = DateTimeSequence.getDelta(min, max, DateTimeUnit.Day);\r\n if (totalDays > 356 && totalDays >= 30 * 6 * maxCount)\r\n return DateTimeUnit.Year;\r\n if (totalDays > 60 && totalDays > 7 * maxCount)\r\n return DateTimeUnit.Month;\r\n if (totalDays > 14 && totalDays > 2 * maxCount)\r\n return DateTimeUnit.Week;\r\n let totalHours = DateTimeSequence.getDelta(min, max, DateTimeUnit.Hour);\r\n if (totalDays > 2 && totalHours > 12 * maxCount)\r\n return DateTimeUnit.Day;\r\n if (totalHours >= 24 && totalHours >= maxCount)\r\n return DateTimeUnit.Hour;\r\n let totalMinutes = DateTimeSequence.getDelta(min, max, DateTimeUnit.Minute);\r\n if (totalMinutes > 2 && totalMinutes >= maxCount)\r\n return DateTimeUnit.Minute;\r\n let totalSeconds = DateTimeSequence.getDelta(min, max, DateTimeUnit.Second);\r\n if (totalSeconds > 2 && totalSeconds >= 0.8 * maxCount)\r\n return DateTimeUnit.Second;\r\n let totalMilliseconds = DateTimeSequence.getDelta(min, max, DateTimeUnit.Millisecond);\r\n if (totalMilliseconds > 0)\r\n return DateTimeUnit.Millisecond;\r\n \r\n // If the size of the range is 0 we need to guess the unit based on the date's non-zero values starting with milliseconds\r\n let date = min;\r\n if (date.getMilliseconds() !== 0)\r\n return DateTimeUnit.Millisecond;\r\n if (date.getSeconds() !== 0)\r\n return DateTimeUnit.Second;\r\n if (date.getMinutes() !== 0)\r\n return DateTimeUnit.Minute;\r\n if (date.getHours() !== 0)\r\n return DateTimeUnit.Hour;\r\n if (date.getDate() !== 1)\r\n return DateTimeUnit.Day;\r\n if (date.getMonth() !== 0)\r\n return DateTimeUnit.Month;\r\n \r\n return DateTimeUnit.Year;\r\n }\r\n }\r\n\r\n /** DateUtils module provides DateTimeSequence with set of additional date manipulation routines */\r\n export module DateUtils { \r\n let MonthDays = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\r\n let MonthDaysLeap = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\r\n\r\n /**\r\n * Returns bool indicating weither the provided year is a leap year.\r\n * @param year - year value\r\n */\r\n function isLeap(year: number): boolean { \r\n return ((year % 4 === 0) && (year % 100 !== 0)) || (year % 400 === 0);\r\n }\r\n\r\n /** \r\n * Returns number of days in the provided year/month.\r\n * @param year - year value\r\n * @param month - month value\r\n */\r\n function getMonthDays(year: number, month: number) { \r\n return isLeap(year) ? MonthDaysLeap[month] : MonthDays[month];\r\n }\r\n\r\n /**\r\n * Adds a specified number of years to the provided date.\r\n * @param date - date value\r\n * @param yearDelta - number of years to add\r\n */\r\n export function addYears(date: Date, yearDelta: number): Date { \r\n let year = date.getFullYear();\r\n let month = date.getMonth();\r\n let day = date.getDate();\r\n let isLeapDay = month === 2 && day === 29;\r\n\r\n let result = new Date(date.getTime());\r\n year = year + yearDelta;\r\n if (isLeapDay && !isLeap(year)) {\r\n day = 28;\r\n } \r\n result.setFullYear(year, month, day);\r\n return result;\r\n }\r\n\r\n /** \r\n * Adds a specified number of months to the provided date.\r\n * @param date - date value\r\n * @param monthDelta - number of months to add\r\n */\r\n export function addMonths(date: Date, monthDelta: number): Date { \r\n let year = date.getFullYear();\r\n let month = date.getMonth();\r\n let day = date.getDate();\r\n \r\n let result = new Date(date.getTime());\r\n year += (monthDelta - (monthDelta % 12)) / 12;\r\n month += monthDelta % 12;\r\n\r\n // VSTS 1325771: Certain column charts don't display any data\r\n // Wrap arround the month if is after december (value 11)\r\n if (month > 11) {\r\n month = month % 12;\r\n year++;\r\n }\r\n\r\n day = Math.min(day, getMonthDays(year, month));\r\n result.setFullYear(year, month, day);\r\n return result;\r\n }\r\n\r\n /** \r\n * Adds a specified number of weeks to the provided date.\r\n * @param date - date value\r\n * @param weeks - number of weeks to add\r\n */\r\n export function addWeeks(date: Date, weeks: number): Date { \r\n return addDays(date, weeks * 7);\r\n }\r\n\r\n /** \r\n * Adds a specified number of days to the provided date.\r\n * @param date - date value\r\n * @param days - number of days to add\r\n */\r\n export function addDays(date: Date, days: number): Date { \r\n let year = date.getFullYear();\r\n let month = date.getMonth();\r\n let day = date.getDate(); \r\n let result = new Date(date.getTime());\r\n result.setFullYear(year, month, day + days);\r\n return result;\r\n }\r\n\r\n /**\r\n * Adds a specified number of hours to the provided date.\r\n * @param date - date value\r\n * @param hours - number of hours to add\r\n */\r\n export function addHours(date: Date, hours: number): Date { \r\n return new Date(date.getTime() + hours * 3600000);\r\n }\r\n\r\n /**\r\n * Adds a specified number of minutes to the provided date.\r\n * @param date - date value\r\n * @param minutes - number of minutes to add\r\n */\r\n export function addMinutes(date: Date, minutes: number): Date { \r\n return new Date(date.getTime() + minutes * 60000);\r\n }\r\n\r\n /** \r\n * Adds a specified number of seconds to the provided date.\r\n * @param date - date value\r\n * @param seconds - number of seconds to add\r\n */\r\n export function addSeconds(date: Date, seconds: number): Date { \r\n return new Date(date.getTime() + seconds * 1000);\r\n }\r\n\r\n /** \r\n * Adds a specified number of milliseconds to the provided date.\r\n * @param date - date value\r\n * @param milliseconds - number of milliseconds to add\r\n */\r\n export function addMilliseconds(date: Date, milliseconds: number): Date { \r\n return new Date(date.getTime() + milliseconds);\r\n }\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved.\r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n *\r\n * The above copyright notice and this permission notice shall be included in\r\n * all copies or substantial portions of the Software.\r\n *\r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi {\r\n // Constants\r\n const maxExponent = 24;\r\n const defaultScientificBigNumbersBoundary = 1E15;\r\n const scientificSmallNumbersBoundary = 1E-4;\r\n const PERCENTAGE_FORMAT = '%';\r\n const SCIENTIFIC_FORMAT = 'E+0';\r\n const DEFAULT_SCIENTIFIC_FORMAT = '0.##' + SCIENTIFIC_FORMAT;\r\n\r\n // Regular expressions\r\n const SUPPORTED_SCIENTIFIC_FORMATS = /^((0*\\.*\\,*#*-*)*|g)*$/i;\r\n\r\n export class DisplayUnit {\r\n // Fields\r\n public value: number;\r\n public title: string;\r\n public labelFormat: string;\r\n public applicableRangeMin: number;\r\n public applicableRangeMax: number;\r\n\r\n // Methods\r\n public project(value: number): number {\r\n if (this.value) {\r\n return Double.removeDecimalNoise(value / this.value);\r\n } else {\r\n return value;\r\n }\r\n }\r\n\r\n public reverseProject(value: number): number {\r\n if (this.value) {\r\n return value * this.value;\r\n } else {\r\n return value;\r\n }\r\n }\r\n\r\n public isApplicableTo(value: number): boolean {\r\n value = Math.abs(value);\r\n let precision = Double.getPrecision(value, 3);\r\n return Double.greaterOrEqualWithPrecision(value, this.applicableRangeMin, precision) && Double.lessWithPrecision(value, this.applicableRangeMax, precision);\r\n }\r\n\r\n public isScaling(): boolean {\r\n return this.value > 1;\r\n }\r\n }\r\n\r\n export class DisplayUnitSystem {\r\n // Fields\r\n public units: DisplayUnit[];\r\n public displayUnit: DisplayUnit;\r\n private unitBaseValue: number;\r\n protected static UNSUPPORTED_FORMATS = /^(p\\d*)|(.*\\%)|(e\\d*)$/i;\r\n\r\n // Constructor\r\n constructor(units?: DisplayUnit[]) {\r\n this.units = units ? units : [];\r\n }\r\n\r\n // Properties\r\n public get title(): string {\r\n return this.displayUnit ? this.displayUnit.title : undefined;\r\n }\r\n\r\n // Methods\r\n public update(value: number): void {\r\n if (value === undefined)\r\n return;\r\n\r\n this.unitBaseValue = value;\r\n this.displayUnit = this.findApplicableDisplayUnit(value);\r\n }\r\n\r\n private findApplicableDisplayUnit(value: number): DisplayUnit {\r\n for (let unit of this.units) {\r\n if (unit.isApplicableTo(value))\r\n return unit;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n public format(value: number, format: string, decimals?: number, trailingZeros?: boolean ): string {\r\n if (this.isFormatSupported(format)) {\r\n decimals = this.getNumberOfDecimalsForFormatting(format, decimals);\r\n\r\n if (this.hasScientitifcFormat(format)) {\r\n return this.formatHelper(value, '', format, decimals, trailingZeros);\r\n }\r\n if (this.isScalingUnit() && this.shouldRespectScalingUnit(format)) {\r\n return this.formatHelper(this.displayUnit.project(value), this.displayUnit.labelFormat, format, decimals, trailingZeros);\r\n }\r\n if (decimals != null) {\r\n return this.formatHelper(value, '', format, decimals, trailingZeros);\r\n }\r\n }\r\n \r\n return formattingService.formatValue(value, format);\r\n }\r\n\r\n public isFormatSupported(format: string): boolean {\r\n return !DisplayUnitSystem.UNSUPPORTED_FORMATS.test(format);\r\n }\r\n\r\n public isPercentageFormat(format: string): boolean {\r\n return format && format.indexOf(PERCENTAGE_FORMAT) >= 0;\r\n }\r\n\r\n public shouldRespectScalingUnit(format: string): boolean {\r\n return !this.isPercentageFormat(format);\r\n }\r\n\r\n public getNumberOfDecimalsForFormatting(format: string, decimals?: number) {\r\n return decimals;\r\n }\r\n\r\n public isScalingUnit(): boolean {\r\n return this.displayUnit && this.displayUnit.isScaling();\r\n }\r\n\r\n private formatHelper(value: number, nonScientificFormat: string, format: string, decimals?: number, trailingZeros?: boolean) {\r\n // If the format is \"general\" and we want to override the number of decimal places then use the default numeric format string.\r\n if ((format === 'g' || format === 'G') && decimals != null)\r\n format = visuals.valueFormatter.DefaultNumericFormat;\r\n\r\n format = NumberFormat.addDecimalsToFormat(format, decimals, trailingZeros);\r\n\r\n if (format && !formattingService.isStandardNumberFormat(format))\r\n return formattingService.formatNumberWithCustomOverride(value, format, nonScientificFormat);\r\n\r\n if (!format)\r\n format = 'G';\r\n if (!nonScientificFormat)\r\n nonScientificFormat = '{0}';\r\n\r\n let text = formattingService.formatValue(value, format);\r\n return formattingService.format(nonScientificFormat, [text]);\r\n }\r\n\r\n /** Formats a single value by choosing an appropriate base for the DisplayUnitSystem before formatting. */\r\n public formatSingleValue(value: number, format: string, decimals?: number, trailingZeros?: boolean): string {\r\n // Change unit base to a value appropriate for this value\r\n this.update(this.shouldUseValuePrecision(value) ? Double.getPrecision(value, 8) : value);\r\n\r\n return this.format(value, format, decimals, trailingZeros);\r\n }\r\n\r\n private shouldUseValuePrecision(value: number): boolean {\r\n if (this.units.length === 0)\r\n return true;\r\n\r\n // Check if the value is big enough to have a valid unit by checking against the smallest unit (that it's value bigger than 1).\r\n let applicableRangeMin: number = 0;\r\n for (let i = 0; i < this.units.length; i++) {\r\n if (this.units[i].isScaling()) {\r\n applicableRangeMin = this.units[i].applicableRangeMin;\r\n break;\r\n }\r\n }\r\n\r\n return Math.abs(value) < applicableRangeMin;\r\n }\r\n\r\n protected isScientific(value: number): boolean {\r\n return value < - defaultScientificBigNumbersBoundary || value > defaultScientificBigNumbersBoundary ||\r\n (-scientificSmallNumbersBoundary < value && value < scientificSmallNumbersBoundary && value !== 0);\r\n }\r\n\r\n protected hasScientitifcFormat(format: string): boolean {\r\n return format && format.toUpperCase().indexOf(\"E\") !== -1;\r\n }\r\n\r\n protected supportsScientificFormat(format: string): boolean {\r\n if (format)\r\n return SUPPORTED_SCIENTIFIC_FORMATS.test(format);\r\n\r\n return true;\r\n }\r\n\r\n protected shouldFallbackToScientific(value: number, format: string) {\r\n return !this.hasScientitifcFormat(format)\r\n && this.supportsScientificFormat(format)\r\n && this.isScientific(value);\r\n }\r\n\r\n protected getScientificFormat(data: number, format: string, decimals: number, trailingZeros: boolean): string {\r\n // Use scientific format outside of the range\r\n if (this.isFormatSupported(format) && this.shouldFallbackToScientific(data, format)) {\r\n let numericFormat = NumberFormat.getNumericFormat(data, format);\r\n if (decimals)\r\n numericFormat = NumberFormat.addDecimalsToFormat(numericFormat ? numericFormat : '0', Math.abs(decimals), trailingZeros);\r\n\r\n if (numericFormat)\r\n return numericFormat + SCIENTIFIC_FORMAT;\r\n else\r\n return DEFAULT_SCIENTIFIC_FORMAT;\r\n }\r\n\r\n return format;\r\n }\r\n }\r\n\r\n /** Provides a unit system that is defined by formatting in the model, and is suitable for visualizations shown in single number visuals in explore mode. */\r\n export class NoDisplayUnitSystem extends DisplayUnitSystem {\r\n // Constructor\r\n constructor() {\r\n super([]);\r\n }\r\n }\r\n\r\n /** Provides a unit system that creates a more concise format for displaying values. This is suitable for most of the cases where\r\n we are showing values (chart axes) and as such it is the default unit system. */\r\n export class DefaultDisplayUnitSystem extends DisplayUnitSystem {\r\n private static units: DisplayUnit[];\r\n\r\n // Constructor\r\n constructor(unitLookup: (exponent: number) => DisplayUnitSystemNames) {\r\n super(DefaultDisplayUnitSystem.getUnits(unitLookup));\r\n }\r\n\r\n // Methods\r\n public format(data: number, format: string, decimals?: number, trailingZeros?: boolean): string {\r\n format = this.getScientificFormat(data, format, decimals, trailingZeros);\r\n\r\n return super.format(data, format, decimals, trailingZeros);\r\n }\r\n\r\n public static reset(): void {\r\n DefaultDisplayUnitSystem.units = null;\r\n }\r\n\r\n private static getUnits(unitLookup: (exponent: number) => DisplayUnitSystemNames): DisplayUnit[] {\r\n if (!DefaultDisplayUnitSystem.units) {\r\n DefaultDisplayUnitSystem.units = createDisplayUnits(unitLookup, (value: number, previousUnitValue: number, min: number) => {\r\n // When dealing with millions/billions/trillions we need to switch to millions earlier: for example instead of showing 100K 200K 300K we should show 0.1M 0.2M 0.3M etc\r\n if (value - previousUnitValue >= 1000) {\r\n return value / 10;\r\n }\r\n\r\n return min;\r\n });\r\n\r\n // Ensure last unit has max of infinity\r\n DefaultDisplayUnitSystem.units[DefaultDisplayUnitSystem.units.length - 1].applicableRangeMax = Infinity;\r\n }\r\n return DefaultDisplayUnitSystem.units;\r\n }\r\n }\r\n\r\n /** Provides a unit system that creates a more concise format for displaying values, but only allows showing a unit if we have at least\r\n one of those units (e.g. 0.9M is not allowed since it's less than 1 million). This is suitable for cases such as dashboard tiles\r\n where we have restricted space but do not want to show partial units. */\r\n export class WholeUnitsDisplayUnitSystem extends DisplayUnitSystem {\r\n private static units: DisplayUnit[];\r\n\r\n // Constructor\r\n constructor(unitLookup: (exponent: number) => DisplayUnitSystemNames) {\r\n super(WholeUnitsDisplayUnitSystem.getUnits(unitLookup));\r\n }\r\n\r\n public static reset(): void {\r\n WholeUnitsDisplayUnitSystem.units = null;\r\n }\r\n\r\n private static getUnits(unitLookup: (exponent: number) => DisplayUnitSystemNames): DisplayUnit[] {\r\n if (!WholeUnitsDisplayUnitSystem.units) {\r\n WholeUnitsDisplayUnitSystem.units = createDisplayUnits(unitLookup);\r\n\r\n // Ensure last unit has max of infinity\r\n WholeUnitsDisplayUnitSystem.units[WholeUnitsDisplayUnitSystem.units.length - 1].applicableRangeMax = Infinity;\r\n }\r\n\r\n return WholeUnitsDisplayUnitSystem.units;\r\n }\r\n\r\n public format(data: number, format: string, decimals?: number, trailingZeros?: boolean): string {\r\n format = this.getScientificFormat(data, format, decimals, trailingZeros);\r\n\r\n return super.format(data, format, decimals, trailingZeros);\r\n }\r\n }\r\n\r\n export class DataLabelsDisplayUnitSystem extends DisplayUnitSystem {\r\n\r\n // Constants\r\n private static AUTO_DISPLAYUNIT_VALUE = 0;\r\n private static NONE_DISPLAYUNIT_VALUE = 1;\r\n protected static UNSUPPORTED_FORMATS = /^(e\\d*)$/i;\r\n\r\n private static units: DisplayUnit[];\r\n\r\n constructor(unitLookup: (exponent: number) => DisplayUnitSystemNames) {\r\n super(DataLabelsDisplayUnitSystem.getUnits(unitLookup));\r\n }\r\n\r\n public isFormatSupported(format: string): boolean {\r\n return !DataLabelsDisplayUnitSystem.UNSUPPORTED_FORMATS.test(format);\r\n }\r\n\r\n private static getUnits(unitLookup: (exponent: number) => DisplayUnitSystemNames): DisplayUnit[] {\r\n if (!DataLabelsDisplayUnitSystem.units) {\r\n let units = [];\r\n let adjustMinBasedOnPreviousUnit = (value: number, previousUnitValue: number, min: number): number => {\r\n // Never returns true, we are always ignoring\r\n // We do not early switch (e.g. 100K instead of 0.1M)\r\n // Intended? If so, remove this function, otherwise, remove if statement\r\n if (value === -1)\r\n if (value - previousUnitValue >= 1000) {\r\n return value / 10;\r\n }\r\n return min;\r\n };\r\n\r\n // Add Auto & None\r\n let names = unitLookup(-1);\r\n addUnitIfNonEmpty(units, DataLabelsDisplayUnitSystem.AUTO_DISPLAYUNIT_VALUE, names.title, names.format, adjustMinBasedOnPreviousUnit);\r\n\r\n names = unitLookup(0);\r\n addUnitIfNonEmpty(units, DataLabelsDisplayUnitSystem.NONE_DISPLAYUNIT_VALUE, names.title, names.format, adjustMinBasedOnPreviousUnit);\r\n\r\n // Add normal units\r\n DataLabelsDisplayUnitSystem.units = units.concat(createDisplayUnits(unitLookup, adjustMinBasedOnPreviousUnit));\r\n\r\n // Ensure last unit has max of infinity\r\n DataLabelsDisplayUnitSystem.units[DataLabelsDisplayUnitSystem.units.length - 1].applicableRangeMax = Infinity;\r\n }\r\n return DataLabelsDisplayUnitSystem.units;\r\n }\r\n\r\n public format(data: number, format: string, decimals?: number, trailingZeros?: boolean): string {\r\n format = this.getScientificFormat(data, format, decimals, trailingZeros);\r\n\r\n return super.format(data, format, decimals, trailingZeros);\r\n }\r\n }\r\n\r\n export interface DisplayUnitSystemNames {\r\n title: string;\r\n format: string;\r\n }\r\n\r\n function createDisplayUnits(unitLookup: (exponent: number) => DisplayUnitSystemNames, adjustMinBasedOnPreviousUnit?: (value: number, previousUnitValue: number, min: number) => number) {\r\n let units = [];\r\n for (let i = 3; i < maxExponent; i++) {\r\n let names = unitLookup(i);\r\n if (names)\r\n addUnitIfNonEmpty(units, Double.pow10(i), names.title, names.format, adjustMinBasedOnPreviousUnit);\r\n }\r\n\r\n return units;\r\n }\r\n\r\n function addUnitIfNonEmpty(\r\n units: DisplayUnit[],\r\n value: number,\r\n title: string,\r\n labelFormat: string,\r\n adjustMinBasedOnPreviousUnit?: (value: number, previousUnitValue: number, min: number) => number): void {\r\n if (title || labelFormat) {\r\n let min = value;\r\n\r\n if (units.length > 0) {\r\n let previousUnit = units[units.length - 1];\r\n\r\n if (adjustMinBasedOnPreviousUnit)\r\n min = adjustMinBasedOnPreviousUnit(value, previousUnit.value, min);\r\n\r\n previousUnit.applicableRangeMax = min;\r\n }\r\n let unit = new DisplayUnit();\r\n unit.value = value;\r\n unit.applicableRangeMin = min;\r\n unit.applicableRangeMax = min * 1000;\r\n unit.title = title;\r\n unit.labelFormat = labelFormat;\r\n units.push(unit);\r\n }\r\n }\r\n}\r\n","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi {\r\n export class NumericSequence {\r\n private static MIN_COUNT: number = 1;\r\n private static MAX_COUNT: number = 1000;\r\n\r\n private maxAllowedMargin: number;\r\n private canExtendMin: boolean;\r\n private canExtendMax: boolean;\r\n\r\n public interval: number;\r\n public intervalOffset: number;\r\n public min: number;\r\n public max: number;\r\n public precision: number;\r\n public sequence: number[];\r\n\r\n public static calculate (range: NumericSequenceRange, expectedCount: number, maxAllowedMargin?: number, minPower?: number, useZeroRefPoint?: boolean, steps?: number[]): NumericSequence {\r\n debug.assertValue(range, \"range\");\r\n debug.assert(expectedCount === undefined || (expectedCount >= NumericSequence.MIN_COUNT && expectedCount <= NumericSequence.MAX_COUNT), \"expectedCount\");\r\n debug.assert(minPower === undefined|| (minPower >= Double.MIN_EXP && minPower <= Double.MAX_EXP), \"minPower\");\r\n debug.assert(maxAllowedMargin === undefined|| (maxAllowedMargin >= 0), \"maxAllowedMargin\");\r\n\r\n let result = new NumericSequence();\r\n\r\n if (expectedCount === undefined)\r\n expectedCount = 10;\r\n else\r\n expectedCount = Double.ensureInRange(expectedCount, NumericSequence.MIN_COUNT, NumericSequence.MAX_COUNT);\r\n if (minPower === undefined)\r\n minPower = Double.MIN_EXP;\r\n if (useZeroRefPoint === undefined)\r\n useZeroRefPoint = false;\r\n if (maxAllowedMargin === undefined)\r\n maxAllowedMargin = 1;\r\n if (steps === undefined)\r\n steps = [1, 2, 5];\r\n\r\n // Handle single stop case\r\n if (range.forcedSingleStop) {\r\n result.interval = range.getSize();\r\n result.intervalOffset = result.interval - (range.forcedSingleStop - range.min);\r\n result.min = range.min;\r\n result.max = range.max;\r\n result.sequence = [range.forcedSingleStop];\r\n return result;\r\n }\r\n\r\n let interval = 0;\r\n let min = 0;\r\n let max = 9;\r\n let canExtendMin = maxAllowedMargin > 0 && !range.hasFixedMin;\r\n let canExtendMax = maxAllowedMargin > 0 && !range.hasFixedMax;\r\n\r\n let size = range.getSize();\r\n let exp = Double.log10(size);\r\n\r\n // Account for Exp of steps\r\n let stepExp = Double.log10(steps[0]);\r\n exp = exp - stepExp;\r\n\r\n // Account for MaxCount\r\n let expectedCountExp = Double.log10(expectedCount);\r\n exp = exp - expectedCountExp;\r\n\r\n // Account for MinPower\r\n exp = Math.max(exp, minPower - stepExp + 1);\r\n let count = undefined;\r\n // Create array of \"good looking\" numbers\r\n if (interval !== 0) {\r\n // If explicit interval is defined - use it instead of the steps array.\r\n let power = Double.pow10(exp);\r\n let roundMin = Double.floorToPrecision(range.min, power);\r\n let roundMax = Double.ceilToPrecision(range.max, power);\r\n let roundRange = NumericSequenceRange.calculateFixedRange(roundMin, roundMax);\r\n\r\n roundRange.shrinkByStep(range, interval);\r\n min = roundRange.min;\r\n max = roundRange.max;\r\n count = Math.floor(roundRange.getSize() / interval);\r\n }\r\n else {\r\n // No interval defined -> find optimal interval\r\n let dexp;\r\n for (dexp = 0; dexp < 3; dexp++) {\r\n let e = exp + dexp;\r\n let power = Double.pow10(e);\r\n\r\n let roundMin = Double.floorToPrecision(range.min, power);\r\n let roundMax = Double.ceilToPrecision(range.max, power);\r\n\r\n // Go throught the steps array looking for the smallest step that produces the right interval count.\r\n let stepsCount = steps.length;\r\n let stepPower = Double.pow10(e - 1);\r\n for (let i = 0; i < stepsCount; i++) {\r\n let step = steps[i] * stepPower;\r\n let roundRange = NumericSequenceRange.calculateFixedRange(roundMin, roundMax, useZeroRefPoint);\r\n roundRange.shrinkByStep(range, step);\r\n\r\n // If the range is based on Data we might need to extend it to provide nice data margins.\r\n if (canExtendMin && range.min === roundRange.min && maxAllowedMargin >= 1)\r\n roundRange.min -= step;\r\n if (canExtendMax && range.max === roundRange.max && maxAllowedMargin >= 1)\r\n roundRange.max += step;\r\n\r\n // Count the intervals\r\n count = Double.ceilWithPrecision(roundRange.getSize() / step);\r\n\r\n if (count <= expectedCount || (dexp === 2 && i === stepsCount - 1) || (expectedCount === 1 && count === 2 && (step > range.getSize() || (range.min < 0 && range.max > 0 && step * 2 >= range.getSize())))) {\r\n interval = step;\r\n min = roundRange.min;\r\n max = roundRange.max;\r\n break;\r\n }\r\n }\r\n\r\n // Increase the scale power until the interval is found\r\n if (interval !== 0)\r\n break;\r\n }\r\n }\r\n\r\n // Avoid extreme count cases (>1000 ticks)\r\n if (count > expectedCount * 32 || count > NumericSequence.MAX_COUNT) {\r\n count = Math.min(expectedCount * 32, NumericSequence.MAX_COUNT);\r\n interval = (max - min) / count;\r\n }\r\n\r\n result.min = min;\r\n result.max = max;\r\n result.interval = interval;\r\n result.intervalOffset = min - range.min;\r\n result.maxAllowedMargin = maxAllowedMargin;\r\n result.canExtendMin = canExtendMin;\r\n result.canExtendMax = canExtendMax;\r\n\r\n // Fill in the Sequence\r\n let precision = Double.getPrecision(interval, 0);\r\n result.precision = precision;\r\n\r\n let sequence = [];\r\n\r\n let x = Double.roundToPrecision(min, precision);\r\n sequence.push(x);\r\n for (let i = 0; i < count; i++) {\r\n x = Double.roundToPrecision(x + interval, precision);\r\n sequence.push(x);\r\n }\r\n \r\n result.sequence = sequence;\r\n\r\n result.trimMinMax(range.min, range.max);\r\n\r\n return result;\r\n }\r\n\r\n /** \r\n * Calculates the sequence of int numbers which are mapped to the multiples of the units grid. \r\n * @min - The minimum of the range.\r\n * @max - The maximum of the range.\r\n * @maxCount - The max count of intervals.\r\n * @steps - array of intervals.\r\n */\r\n public static calculateUnits(min: number, max: number, maxCount: number, steps: number[]): NumericSequence {\r\n // Initialization actions\r\n maxCount = Double.ensureInRange(maxCount, NumericSequence.MIN_COUNT, NumericSequence.MAX_COUNT);\r\n if (min === max) {\r\n max = min + 1;\r\n }\r\n let stepCount = 0;\r\n let step = 0;\r\n\r\n // Calculate step\r\n for (let i = 0; i < steps.length; i++)\r\n {\r\n step = steps[i];\r\n let maxStepCount = Double.ceilWithPrecision(max / step);\r\n let minStepCount = Double.floorWithPrecision(min / step);\r\n stepCount = maxStepCount - minStepCount;\r\n \r\n if (stepCount <= maxCount) {\r\n break;\r\n }\r\n }\r\n\r\n // Calculate the offset\r\n let offset = -min;\r\n offset = offset % step;\r\n\r\n // Create sequence\r\n let result = new NumericSequence();\r\n result.sequence = [];\r\n for (let x = min + offset; ; x += step)\r\n {\r\n result.sequence.push(x);\r\n if (x >= max)\r\n break;\r\n }\r\n result.interval = step;\r\n result.intervalOffset = offset;\r\n result.min = result.sequence[0];\r\n result.max = result.sequence[result.sequence.length - 1];\r\n return result;\r\n }\r\n\r\n public trimMinMax(min: number, max: number): void { \r\n let minMargin = (min - this.min) / this.interval;\r\n let maxMargin = (this.max - max) / this.interval;\r\n let marginPrecision = 0.001;\r\n\r\n if (!this.canExtendMin || (minMargin > this.maxAllowedMargin && minMargin > marginPrecision)) {\r\n this.min = min;\r\n }\r\n\r\n if (!this.canExtendMax || (maxMargin > this.maxAllowedMargin && maxMargin > marginPrecision)) {\r\n this.max = max;\r\n }\r\n }\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi {\r\n export class NumericSequenceRange {\r\n private static DEFAULT_MAX: number = 10;\r\n private static MIN_SUPPORTED_DOUBLE = -1E307;\r\n private static MAX_SUPPORTED_DOUBLE = 1E307;\r\n\r\n public min: number;\r\n public max: number;\r\n public includeZero: boolean;\r\n public forcedSingleStop: number;\r\n public hasDataRange: boolean;\r\n public hasFixedMin: boolean;\r\n public hasFixedMax: boolean;\r\n\r\n private _ensureIncludeZero(): void { \r\n if (this.includeZero) {\r\n // fixed min and max has higher priority than includeZero\r\n if (this.min > 0 && !this.hasFixedMin) {\r\n this.min = 0;\r\n }\r\n if (this.max < 0 && !this.hasFixedMax) {\r\n this.max = 0;\r\n }\r\n }\r\n }\r\n\r\n private _ensureNotEmpty(): void { \r\n if (this.min === this.max) {\r\n if (!this.min) {\r\n this.min = 0;\r\n this.max = NumericSequenceRange.DEFAULT_MAX;\r\n this.hasFixedMin = true;\r\n this.hasFixedMax = true;\r\n } else {\r\n // We are dealing with a single data value (includeZero is not set)\r\n // In order to fix the range we need to extend it in both directions by half of the interval.\r\n // Interval is calculated based on the number:\r\n // 1. Integers below 10,000 are extended by 0.5: so the [2006-2006] empty range is extended to [2005.5-2006.5] range and the ForsedSingleStop=2006\r\n // 2. Other numbers are extended by half of their power: [700,001-700,001] => [650,001-750,001] and the ForsedSingleStop=null as we want the intervals to be calculated to cover the range.\r\n let value = this.min;\r\n let exp = Double.log10(Math.abs(value));\r\n let step: number;\r\n if (exp >= 0 && exp < 4) {\r\n step = 0.5;\r\n this.forcedSingleStop = value;\r\n } else {\r\n step = Double.pow10(exp) / 2;\r\n this.forcedSingleStop = null;\r\n }\r\n this.min = value - step;\r\n this.max = value + step;\r\n }\r\n }\r\n }\r\n\r\n private _ensureDirection() { \r\n if (this.min > this.max) { \r\n let temp = this.min;\r\n this.min = this.max;\r\n this.max = temp;\r\n }\r\n }\r\n\r\n public getSize(): number {\r\n return this.max - this.min;\r\n }\r\n\r\n public shrinkByStep(range: NumericSequenceRange, step: number) {\r\n debug.assertValue(range, \"range\");\r\n debug.assert(step > 0, \"step\");\r\n\r\n let oldCount = this.min / step;\r\n let newCount = range.min / step;\r\n let deltaCount = Math.floor(newCount - oldCount);\r\n this.min += deltaCount * step;\r\n\r\n oldCount = this.max / step;\r\n newCount = range.max / step;\r\n deltaCount = Math.ceil(newCount - oldCount);\r\n this.max += deltaCount * step;\r\n }\r\n\r\n public static calculate(dataMin: number, dataMax: number, fixedMin?:number, fixedMax?:number, includeZero?: boolean): NumericSequenceRange { \r\n debug.assert(dataMin <= dataMax, \"dataMin should be less or equal to dataMax.\");\r\n debug.assert(!fixedMin || !fixedMax || fixedMin <= fixedMax, \"fixedMin should be less or equal to fixedMax.\");\r\n\r\n let result = new NumericSequenceRange(); \r\n result.includeZero = includeZero ? true : false;\r\n result.hasDataRange = ValueUtil.hasValue(dataMin) && ValueUtil.hasValue(dataMax);\r\n result.hasFixedMin = ValueUtil.hasValue(fixedMin);\r\n result.hasFixedMax = ValueUtil.hasValue(fixedMax);\r\n\r\n dataMin = Double.ensureInRange(dataMin, NumericSequenceRange.MIN_SUPPORTED_DOUBLE, NumericSequenceRange.MAX_SUPPORTED_DOUBLE);\r\n dataMax = Double.ensureInRange(dataMax, NumericSequenceRange.MIN_SUPPORTED_DOUBLE, NumericSequenceRange.MAX_SUPPORTED_DOUBLE);\r\n\r\n // Calculate the range using the min, max, dataRange\r\n if (result.hasFixedMin && result.hasFixedMax) {\r\n result.min = fixedMin;\r\n result.max = fixedMax;\r\n } else if (result.hasFixedMin) {\r\n result.min = fixedMin;\r\n result.max = dataMax > fixedMin ? dataMax : fixedMin;\r\n } else if (result.hasFixedMax) {\r\n result.min = dataMin < fixedMax ? dataMin : fixedMax;\r\n result.max = fixedMax;\r\n } else if (result.hasDataRange) {\r\n result.min = dataMin;\r\n result.max = dataMax;\r\n } else {\r\n result.min = 0;\r\n result.max = 0;\r\n }\r\n\r\n result._ensureIncludeZero();\r\n result._ensureNotEmpty();\r\n result._ensureDirection();\r\n \r\n if (result.min === 0) {\r\n result.hasFixedMin = true; // If the range starts from zero we should prevent extending the intervals into the negative range\r\n } else if (result.max === 0) {\r\n result.hasFixedMax = true; // If the range ends at zero we should prevent extending the intervals into the positive range\r\n }\r\n\r\n return result;\r\n }\r\n\r\n public static calculateDataRange(dataMin: number, dataMax: number, includeZero?: boolean): NumericSequenceRange { \r\n if (!ValueUtil.hasValue(dataMin) || !ValueUtil.hasValue(dataMax)) {\r\n return NumericSequenceRange.calculateFixedRange(0, NumericSequenceRange.DEFAULT_MAX);\r\n } else {\r\n return NumericSequenceRange.calculate(dataMin, dataMax, null, null, includeZero);\r\n }\r\n }\r\n\r\n public static calculateFixedRange(fixedMin: number, fixedMax: number, includeZero?: boolean): NumericSequenceRange { \r\n debug.assertValue(fixedMin, \"fixedMin\");\r\n debug.assertValue(fixedMax, \"fixedMax\");\r\n\r\n let result = new NumericSequenceRange(); \r\n result.hasDataRange = false;\r\n result.includeZero = includeZero;\r\n result.min = fixedMin;\r\n result.max = fixedMax;\r\n result._ensureIncludeZero();\r\n result._ensureNotEmpty();\r\n result._ensureDirection();\r\n result.hasFixedMin = true;\r\n result.hasFixedMax = true;\r\n\r\n return result;\r\n }\r\n }\r\n\r\n /** Note: Exported for testability */\r\n export module ValueUtil {\r\n export function hasValue(value: any): boolean {\r\n return value !== undefined && value !== null;\r\n }\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved.\r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n *\r\n * The above copyright notice and this permission notice shall be included in\r\n * all copies or substantial portions of the Software.\r\n *\r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n\r\n /**\r\n * Formats the value using provided format expression\r\n * @param value - value to be formatted and converted to string.\r\n * @param format - format to be applied if the number shouldn't be abbreviated.\r\n * If the number should be abbreviated this string is checked for special characters like $ or % if any\r\n */\r\n export interface ICustomValueFormatter {\r\n (value: any, format?: string): string;\r\n }\r\n\r\n export interface ICustomValueColumnFormatter {\r\n (value: any, column: DataViewMetadataColumn, formatStringProp: DataViewObjectPropertyIdentifier): string;\r\n }\r\n\r\n export interface ValueFormatterOptions {\r\n /** The format string to use. */\r\n format?: string;\r\n\r\n /** The data value. */\r\n value?: any;\r\n\r\n /** The data value. */\r\n value2?: any;\r\n\r\n /** The number of ticks. */\r\n tickCount?: any;\r\n\r\n /** The display unit system to use */\r\n displayUnitSystemType?: DisplayUnitSystemType;\r\n\r\n /** True if we are formatting single values in isolation (e.g. card), as opposed to multiple values with a common base (e.g. chart axes) */\r\n formatSingleValues?: boolean;\r\n\r\n /** True if we want to trim off unnecessary zeroes after the decimal and remove a space before the % symbol */\r\n allowFormatBeautification?: boolean;\r\n\r\n /** Specifies the maximum number of decimal places to show*/\r\n precision?: number;\r\n\r\n /** Detect axis precision based on value */\r\n detectAxisPrecision?: boolean;\r\n\r\n /** Specifies the column type of the data value */\r\n columnType?: ValueTypeDescriptor;\r\n }\r\n\r\n export interface IValueFormatter {\r\n format(value: any): string;\r\n displayUnit?: DisplayUnit;\r\n options?: ValueFormatterOptions;\r\n }\r\n\r\n /** Captures all locale-specific options used by the valueFormatter. */\r\n export interface ValueFormatterLocalizationOptions {\r\n null: string;\r\n true: string;\r\n false: string;\r\n NaN: string;\r\n infinity: string;\r\n negativeInfinity: string;\r\n\r\n /** Returns a beautified form the given format string. */\r\n beautify(format: string): string;\r\n\r\n /** Returns an object describing the given exponent in the current language. */\r\n describe(exponent: number): DisplayUnitSystemNames;\r\n restatementComma: string;\r\n restatementCompoundAnd: string;\r\n restatementCompoundOr: string;\r\n }\r\n\r\n export module valueFormatter {\r\n import StringExtensions = jsCommon.StringExtensions;\r\n const BeautifiedFormat: { [x: string]: string } = {\r\n '0.00 %;-0.00 %;0.00 %': 'Percentage',\r\n '0.0 %;-0.0 %;0.0 %': 'Percentage1',\r\n };\r\n\r\n export const DefaultIntegerFormat = 'g';\r\n export const DefaultNumericFormat = '#,0.00';\r\n export const DefaultDateFormat = 'd';\r\n\r\n const defaultLocalizedStrings = {\r\n 'NullValue': '(Blank)',\r\n 'BooleanTrue': 'True',\r\n 'BooleanFalse': 'False',\r\n 'NaNValue': 'NaN',\r\n 'InfinityValue': '+Infinity',\r\n 'NegativeInfinityValue': '-Infinity',\r\n 'RestatementComma': '{0}, {1}',\r\n 'RestatementCompoundAnd': '{0} and {1}',\r\n 'RestatementCompoundOr': '{0} or {1}',\r\n 'DisplayUnitSystem_EAuto_Title': 'Auto',\r\n 'DisplayUnitSystem_E0_Title': 'None',\r\n 'DisplayUnitSystem_E3_LabelFormat': '{0}K',\r\n 'DisplayUnitSystem_E3_Title': 'Thousands',\r\n 'DisplayUnitSystem_E6_LabelFormat': '{0}M',\r\n 'DisplayUnitSystem_E6_Title': 'Millions',\r\n 'DisplayUnitSystem_E9_LabelFormat': '{0}bn',\r\n 'DisplayUnitSystem_E9_Title': 'Billions',\r\n 'DisplayUnitSystem_E12_LabelFormat': '{0}T',\r\n 'DisplayUnitSystem_E12_Title': 'Trillions',\r\n 'Percentage': '#,0.##%',\r\n 'Percentage1': '#,0.#%',\r\n 'TableTotalLabel': 'Total',\r\n 'Tooltip_HighlightedValueDisplayName': 'Highlighted',\r\n 'Funnel_PercentOfFirst': 'Percent of first',\r\n 'Funnel_PercentOfPrevious': 'Percent of previous',\r\n 'Funnel_PercentOfFirst_Highlight': 'Percent of first (highlight)',\r\n 'Funnel_PercentOfPrevious_Highlight': 'Percent of previous (highlight)',\r\n // Geotagging strings\r\n 'GeotaggingString_Continent': 'continent',\r\n 'GeotaggingString_Continents': 'continents',\r\n 'GeotaggingString_Country': 'country',\r\n 'GeotaggingString_Countries': 'countries',\r\n 'GeotaggingString_State': 'state',\r\n 'GeotaggingString_States': 'states',\r\n 'GeotaggingString_City': 'city',\r\n 'GeotaggingString_Cities': 'cities',\r\n 'GeotaggingString_Town': 'town',\r\n 'GeotaggingString_Towns': 'towns',\r\n 'GeotaggingString_Province': 'province',\r\n 'GeotaggingString_Provinces': 'provinces',\r\n 'GeotaggingString_County': 'county',\r\n 'GeotaggingString_Counties': 'counties',\r\n 'GeotaggingString_Village': 'village',\r\n 'GeotaggingString_Villages': 'villages',\r\n 'GeotaggingString_Post': 'post',\r\n 'GeotaggingString_Zip': 'zip',\r\n 'GeotaggingString_Code': 'code',\r\n 'GeotaggingString_Place': 'place',\r\n 'GeotaggingString_Places': 'places',\r\n 'GeotaggingString_Address': 'address',\r\n 'GeotaggingString_Addresses': 'addresses',\r\n 'GeotaggingString_Street': 'street',\r\n 'GeotaggingString_Streets': 'streets',\r\n 'GeotaggingString_Longitude': 'longitude',\r\n 'GeotaggingString_Longitude_Short': 'lon',\r\n 'GeotaggingString_Latitude': 'latitude',\r\n 'GeotaggingString_Latitude_Short': 'lat',\r\n 'GeotaggingString_PostalCode': 'postal code',\r\n 'GeotaggingString_PostalCodes': 'postal codes',\r\n 'GeotaggingString_ZipCode': 'zip code',\r\n 'GeotaggingString_ZipCodes': 'zip codes',\r\n 'GeotaggingString_Territory': 'territory',\r\n 'GeotaggingString_Territories': 'territories',\r\n };\r\n\r\n function beautify(format: string): string {\r\n let key = BeautifiedFormat[format];\r\n if (key)\r\n return defaultLocalizedStrings[key] || format;\r\n return format;\r\n }\r\n\r\n function describeUnit(exponent: number): DisplayUnitSystemNames {\r\n let exponentLookup = (exponent === -1) ? 'Auto' : exponent.toString();\r\n\r\n let title: string = defaultLocalizedStrings[\"DisplayUnitSystem_E\" + exponentLookup + \"_Title\"];\r\n let format: string = (exponent <= 0) ? '{0}' : defaultLocalizedStrings[\"DisplayUnitSystem_E\" + exponentLookup + \"_LabelFormat\"];\r\n\r\n if (title || format)\r\n return { title: title, format: format };\r\n }\r\n\r\n export function getLocalizedString(stringId: string): string {\r\n return defaultLocalizedStrings[stringId];\r\n }\r\n\r\n // NOTE: Define default locale options, but these can be overriden by setLocaleOptions.\r\n let locale: ValueFormatterLocalizationOptions = {\r\n null: defaultLocalizedStrings['NullValue'],\r\n true: defaultLocalizedStrings['BooleanTrue'],\r\n false: defaultLocalizedStrings['BooleanFalse'],\r\n NaN: defaultLocalizedStrings['NaNValue'],\r\n infinity: defaultLocalizedStrings['InfinityValue'],\r\n negativeInfinity: defaultLocalizedStrings['NegativeInfinityValue'],\r\n beautify: format => beautify(format),\r\n describe: exponent => describeUnit(exponent),\r\n restatementComma: defaultLocalizedStrings['RestatementComma'],\r\n restatementCompoundAnd: defaultLocalizedStrings['RestatementCompoundAnd'],\r\n restatementCompoundOr: defaultLocalizedStrings['RestatementCompoundOr'],\r\n };\r\n\r\n const MaxScaledDecimalPlaces = 2;\r\n const MaxValueForDisplayUnitRounding = 1000;\r\n const MinIntegerValueForDisplayUnits = 10000;\r\n const MinPrecisionForDisplayUnits = 2;\r\n\r\n const DateTimeMetadataColumn: DataViewMetadataColumn = {\r\n displayName: '',\r\n type: ValueType.fromPrimitiveTypeAndCategory(PrimitiveType.DateTime),\r\n };\r\n\r\n export function getFormatMetadata(format: string): powerbi.NumberFormat.NumericFormatMetadata {\r\n return powerbi.NumberFormat.getCustomFormatMetadata(format);\r\n }\r\n\r\n export function setLocaleOptions(options: ValueFormatterLocalizationOptions): void {\r\n debug.assertValue(options, 'options');\r\n\r\n locale = options;\r\n\r\n DefaultDisplayUnitSystem.reset();\r\n WholeUnitsDisplayUnitSystem.reset();\r\n }\r\n\r\n export function createDefaultFormatter(formatString: string, allowFormatBeautification: boolean = false): IValueFormatter {\r\n let formatBeaut: string = allowFormatBeautification ? locale.beautify(formatString) : formatString;\r\n return {\r\n format: function (value: any): string {\r\n if (value == null)\r\n return locale.null;\r\n\r\n return formatCore(value, formatBeaut);\r\n }\r\n };\r\n }\r\n\r\n /** Creates an IValueFormatter to be used for a range of values. */\r\n export function create(options: ValueFormatterOptions): IValueFormatter {\r\n debug.assertValue(options, 'options');\r\n\r\n let format = !!options.allowFormatBeautification ? locale.beautify(options.format) : options.format;\r\n\r\n if (shouldUseNumericDisplayUnits(options)) {\r\n let displayUnitSystem = createDisplayUnitSystem(options.displayUnitSystemType);\r\n\r\n let singleValueFormattingMode = !!options.formatSingleValues;\r\n\r\n displayUnitSystem.update(Math.max(Math.abs(options.value || 0), Math.abs(options.value2 || 0)));\r\n\r\n let forcePrecision = options.precision != null;\r\n\r\n let decimals: number;\r\n\r\n if (forcePrecision)\r\n decimals = -options.precision;\r\n else if (displayUnitSystem.displayUnit && displayUnitSystem.displayUnit.value > 1)\r\n decimals = -MaxScaledDecimalPlaces;\r\n\r\n // Detect axis precision\r\n if (options.detectAxisPrecision) {\r\n // Trailing zeroes\r\n forcePrecision = true;\r\n\r\n let axisValue = options.value;\r\n if (displayUnitSystem.displayUnit && displayUnitSystem.displayUnit.value > 0)\r\n axisValue = axisValue / displayUnitSystem.displayUnit.value;\r\n\r\n if (Double.isInteger(axisValue))\r\n decimals = 0;\r\n else\r\n decimals = Double.log10(axisValue);\r\n }\r\n\r\n return {\r\n format: function (value: any): string {\r\n let formattedValue: string = getStringFormat(value, true /*nullsAreBlank*/);\r\n if (!StringExtensions.isNullOrUndefinedOrWhiteSpaceString(formattedValue))\r\n return formattedValue;\r\n\r\n // Round to Double.DEFAULT_PRECISION\r\n if (value && !displayUnitSystem.isScalingUnit() && Math.abs(value) < MaxValueForDisplayUnitRounding && !forcePrecision)\r\n value = Double.roundToPrecision(value);\r\n\r\n return singleValueFormattingMode ?\r\n displayUnitSystem.formatSingleValue(value, format, decimals, forcePrecision) :\r\n displayUnitSystem.format(value, format, decimals, forcePrecision);\r\n },\r\n displayUnit: displayUnitSystem.displayUnit,\r\n options: options\r\n };\r\n }\r\n\r\n if (shouldUseDateUnits(options.value, options.value2, options.tickCount)) {\r\n let unit = DateTimeSequence.getIntervalUnit(options.value /* minDate */, options.value2 /* maxDate */, options.tickCount);\r\n\r\n return {\r\n format: function (value: any): string {\r\n if (value == null)\r\n return locale.null;\r\n\r\n let formatString = formattingService.dateFormatString(unit);\r\n return formatCore(value, formatString);\r\n },\r\n options: options\r\n };\r\n }\r\n\r\n return createDefaultFormatter(format);\r\n }\r\n\r\n export function format(value: any, format?: string, allowFormatBeautification?: boolean): string {\r\n if (value == null)\r\n return locale.null;\r\n\r\n return formatCore(\r\n value,\r\n !!allowFormatBeautification ? locale.beautify(format) : format);\r\n }\r\n\r\n function getValueFormat(value: any, columnType: ValueTypeDescriptor): string {\r\n // If column type not defined or is not datetime\r\n // ...and the value is of time datetime,\r\n // then use the default date format string\r\n if ((!columnType || !columnType.dateTime) && value instanceof Date)\r\n return getFormatString(DateTimeMetadataColumn, null, false);\r\n }\r\n\r\n export function formatValueColumn(value: any, column: DataViewMetadataColumn, formatStringProp: DataViewObjectPropertyIdentifier): string {\r\n let valueFormat = getValueFormat(value, column.type);\r\n if (valueFormat)\r\n return formatCore(value, valueFormat);\r\n else\r\n return formatCore(value, getFormatString(column, formatStringProp));\r\n }\r\n\r\n function createDisplayUnitSystem(displayUnitSystemType?: DisplayUnitSystemType): DisplayUnitSystem {\r\n if (displayUnitSystemType == null)\r\n return new DefaultDisplayUnitSystem(locale.describe);\r\n\r\n switch (displayUnitSystemType) {\r\n case DisplayUnitSystemType.Default:\r\n return new DefaultDisplayUnitSystem(locale.describe);\r\n case DisplayUnitSystemType.WholeUnits:\r\n return new WholeUnitsDisplayUnitSystem(locale.describe);\r\n case DisplayUnitSystemType.Verbose:\r\n return new NoDisplayUnitSystem();\r\n case DisplayUnitSystemType.DataLabels:\r\n return new DataLabelsDisplayUnitSystem(locale.describe);\r\n default:\r\n debug.assertFail('Unknown display unit system type');\r\n return new DefaultDisplayUnitSystem(locale.describe);\r\n }\r\n }\r\n\r\n function shouldUseNumericDisplayUnits(options: ValueFormatterOptions): boolean {\r\n let value = options.value;\r\n let value2 = options.value2;\r\n let format = options.format;\r\n // For singleValue visuals like card, gauge we don't want to roundoff data to the nearest thousands so format the whole number / integers below 10K to not use display units\r\n if (options.formatSingleValues && format) {\r\n\r\n if (Math.abs(value) < MinIntegerValueForDisplayUnits) {\r\n\r\n let isCustomFormat = !powerbi.NumberFormat.isStandardFormat(format);\r\n\r\n if (isCustomFormat) {\r\n let precision = powerbi.NumberFormat.getCustomFormatMetadata(format, true /*calculatePrecision*/).precision;\r\n\r\n if (precision < MinPrecisionForDisplayUnits)\r\n return false;\r\n }\r\n else if (Double.isInteger(value))\r\n return false;\r\n }\r\n }\r\n\r\n if ((typeof value === 'number') || (typeof value2 === 'number')) {\r\n return true;\r\n }\r\n }\r\n\r\n function shouldUseDateUnits(value: any, value2?: any, tickCount?: number): boolean {\r\n // must check both value and value2 because we'll need to get an interval for date units\r\n return (value instanceof Date) && (value2 instanceof Date) && (tickCount !== undefined && tickCount !== null);\r\n }\r\n\r\n /*\r\n * Get the column format. Order of precendence is:\r\n * 1. Column format\r\n * 2. Default PowerView policy for column type\r\n */\r\n export function getFormatString(column: DataViewMetadataColumn, formatStringProperty: DataViewObjectPropertyIdentifier, suppressTypeFallback?: boolean): string {\r\n if (column) {\r\n if (formatStringProperty) {\r\n let propertyValue = DataViewObjects.getValue<string>(column.objects, formatStringProperty);\r\n if (propertyValue)\r\n return propertyValue;\r\n }\r\n\r\n if (!suppressTypeFallback) {\r\n let columnType = column.type;\r\n if (columnType) {\r\n if (columnType.dateTime)\r\n return DefaultDateFormat;\r\n if (columnType.integer)\r\n return DefaultIntegerFormat;\r\n if (columnType.numeric)\r\n return DefaultNumericFormat;\r\n }\r\n }\r\n }\r\n }\r\n\r\n function formatListCompound(strings: string[], conjunction: string): string {\r\n let result: string;\r\n\r\n if (!strings) {\r\n return null;\r\n }\r\n\r\n let length = strings.length;\r\n if (length > 0) {\r\n result = strings[0];\r\n let lastIndex = length - 1;\r\n for (let i = 1, len = lastIndex; i < len; i++) {\r\n let value = strings[i];\r\n result = StringExtensions.format(locale.restatementComma, result, value);\r\n }\r\n\r\n if (length > 1) {\r\n let value = strings[lastIndex];\r\n result = StringExtensions.format(conjunction, result, value);\r\n }\r\n }\r\n else {\r\n result = null;\r\n }\r\n\r\n return result;\r\n }\r\n\r\n /** The returned string will look like 'A, B, ..., and C' */\r\n export function formatListAnd(strings: string[]): string {\r\n return formatListCompound(strings, locale.restatementCompoundAnd);\r\n }\r\n\r\n /** The returned string will look like 'A, B, ..., or C' */\r\n export function formatListOr(strings: string[]): string {\r\n return formatListCompound(strings, locale.restatementCompoundOr);\r\n }\r\n\r\n function formatCore(value: any, format: string): string {\r\n let formattedValue = getStringFormat(value, false /*nullsAreBlank*/);\r\n\r\n if (!StringExtensions.isNullOrUndefinedOrWhiteSpaceString(formattedValue))\r\n return formattedValue;\r\n\r\n return formattingService.formatValue(value, format);\r\n }\r\n\r\n function getStringFormat(value: any, nullsAreBlank: boolean): string {\r\n if (value == null && nullsAreBlank)\r\n return locale.null;\r\n\r\n if (value === true)\r\n return locale.true;\r\n\r\n if (value === false)\r\n return locale.false;\r\n\r\n if (typeof value === 'number' && isNaN(value))\r\n return locale.NaN;\r\n\r\n if (value === Number.NEGATIVE_INFINITY)\r\n return locale.negativeInfinity;\r\n\r\n if (value === Number.POSITIVE_INFINITY)\r\n return locale.infinity;\r\n\r\n return '';\r\n }\r\n\r\n export function getDisplayUnits(displayUnitSystemType: DisplayUnitSystemType): DisplayUnit[] {\r\n let displayUnitSystem = createDisplayUnitSystem(displayUnitSystemType);\r\n return displayUnitSystem.units;\r\n }\r\n }\r\n}\r\n","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi {\r\n import ISize = powerbi.visuals.shapes.ISize;\r\n import IVector = powerbi.visuals.shapes.IVector;\r\n import IRect = powerbi.visuals.IRect;\r\n import VisualDataLabelsSettings = powerbi.visuals.VisualDataLabelsSettings;\r\n import DonutArcDescriptor = powerbi.visuals.DonutArcDescriptor;\r\n import NewDataLabelUtils = powerbi.visuals.NewDataLabelUtils;\r\n import labelStyle = powerbi.visuals.labelStyle;\r\n import DonutLabelUtils = powerbi.visuals.DonutLabelUtils;\r\n\r\n export interface DonutChartProperties {\r\n viewport: IViewport;\r\n dataLabelsSettings: VisualDataLabelsSettings;\r\n radius: number;\r\n arc: D3.Svg.Arc;\r\n outerArc: D3.Svg.Arc;\r\n outerArcRadiusRatio: number;\r\n innerArcRadiusRatio: number;\r\n }\r\n\r\n export interface DonutLabelDataPoint extends LabelDataPoint {\r\n dataLabel: string;\r\n dataLabelSize: ISize;\r\n categoryLabel: string;\r\n categoryLabelSize: ISize;\r\n donutArcDescriptor: DonutArcDescriptor;\r\n alternativeScale: number;\r\n angle: number;\r\n linesSize: ISize[];\r\n leaderLinePoints: number[][];\r\n }\r\n\r\n interface LabelCandidate {\r\n angle: number;\r\n point: LabelParentPoint;\r\n score: number;\r\n labelRects: DonutLabelRect;\r\n labelDataPoint?: DonutLabelDataPoint;\r\n }\r\n\r\n export interface DonutLabelRect {\r\n textRect: IRect;\r\n diagonalLineRect: IRect;\r\n horizontalLineRect: IRect;\r\n }\r\n\r\n export class DonutLabelLayout {\r\n\r\n /** Maximum distance labels will be offset by */\r\n private maximumOffset: number;\r\n /** The amount to increase the offset each attempt while laying out labels */\r\n private offsetIterationDelta: number;\r\n /** The amount of offset to start with when the data label is not centered */\r\n private startingOffset: number;\r\n\r\n private donutChartProperties: DonutChartProperties;\r\n private center: IVector;\r\n private outerRadius: number;\r\n private innerRadius: number;\r\n private additionalCharsWidth: number;\r\n\r\n constructor(options: DataLabelLayoutOptions, donutChartProperties: DonutChartProperties) {\r\n this.startingOffset = options.startingOffset;\r\n this.maximumOffset = options.maximumOffset;\r\n if (options.offsetIterationDelta != null) {\r\n debug.assert(options.offsetIterationDelta > 0, \"label offset delta must be greater than 0\");\r\n this.offsetIterationDelta = options.offsetIterationDelta;\r\n }\r\n\r\n this.donutChartProperties = donutChartProperties;\r\n this.center = {\r\n x: donutChartProperties.viewport.width / 2,\r\n y: donutChartProperties.viewport.height / 2,\r\n };\r\n this.outerRadius = this.donutChartProperties.radius * this.donutChartProperties.outerArcRadiusRatio;\r\n this.innerRadius = (this.donutChartProperties.radius / 2) * this.donutChartProperties.innerArcRadiusRatio;\r\n this.additionalCharsWidth = TextMeasurementService.measureSvgTextWidth({\r\n text: \" ()\",\r\n fontFamily: NewDataLabelUtils.LabelTextProperties.fontFamily,\r\n fontSize: jsCommon.PixelConverter.fromPoint(donutChartProperties.dataLabelsSettings.fontSize),\r\n fontWeight: NewDataLabelUtils.LabelTextProperties.fontWeight,\r\n });\r\n }\r\n\r\n /**\r\n * Arrange takes a set of data labels and lays them out them in order, assuming that\r\n * the given array has already been sorted with the most preferred labels at the\r\n * front.\r\n * \r\n * Details:\r\n * - We iterate over offsets from the target position, increasing from 0\r\n * - For each offset, we iterate over each data label\r\n * - For each data label, we iterate over each position that is valid for\r\n * both the specific label and this layout\r\n * - When a valid position is found, we position the label there and no longer\r\n * reposition it.\r\n * - This prioritizes the earlier labels to be positioned closer to their\r\n * target points in the position they prefer.\r\n * - This prioritizes putting data labels close to a valid position over\r\n * placing them at their preferred position (it will place it at a less\r\n * preferred position if it will be a smaller offset)\r\n */\r\n public layout(labelDataPoints: DonutLabelDataPoint[]): Label[] {\r\n // Clear data labels for a new layout\r\n for (let donutLabel of labelDataPoints) {\r\n donutLabel.hasBeenRendered = false;\r\n donutLabel.labelSize = donutLabel.textSize;\r\n }\r\n\r\n let resultingLabels: Label[] = [];\r\n let preferredLabels: DonutLabelDataPoint[] = [];\r\n let viewport = this.donutChartProperties.viewport;\r\n let labelDataPointsGroup: LabelDataPointsGroup = {\r\n labelDataPoints: labelDataPoints,\r\n maxNumberOfLabels: labelDataPoints.length\r\n };\r\n let grid = new LabelArrangeGrid([labelDataPointsGroup], viewport);\r\n for (let i = labelDataPoints.length - 1; i >= 0; i--) {\r\n let labelPoint = labelDataPoints[i];\r\n if (labelPoint.isPreferred) {\r\n let label = labelDataPoints.splice(i, 1);\r\n preferredLabels = label.concat(preferredLabels);\r\n }\r\n }\r\n\r\n // first iterate all the preferred labels\r\n if (preferredLabels.length > 0)\r\n resultingLabels = this.positionLabels(preferredLabels, grid);\r\n \r\n // While there are invisible not preferred labels and label distance is less than the max\r\n // allowed distance\r\n if (labelDataPoints.length > 0) {\r\n let labels = this.positionLabels(labelDataPoints, grid);\r\n resultingLabels = resultingLabels.concat(labels);\r\n }\r\n\r\n return resultingLabels;\r\n }\r\n\r\n private positionLabels(labelDataPoints: DonutLabelDataPoint[], grid: LabelArrangeGrid): Label[] {\r\n let resultingLabels: Label[] = [];\r\n let offsetDelta = this.offsetIterationDelta;\r\n let currentOffset = this.startingOffset;\r\n let currentCenteredOffset = 0;\r\n\r\n while (currentOffset <= this.maximumOffset) {\r\n for (let labelPoint of labelDataPoints) {\r\n if (labelPoint.hasBeenRendered)\r\n continue;\r\n let label = this.tryPositionForDonut(labelPoint, grid, currentOffset);\r\n if (label)\r\n resultingLabels.push(label);\r\n }\r\n\r\n currentOffset += offsetDelta;\r\n currentCenteredOffset += offsetDelta;\r\n }\r\n\r\n return resultingLabels;\r\n }\r\n\r\n /**\r\n * We try to move the label 25% up/down if the label is truncated or it collides with other labels.\r\n * after we moved it once we check that the new position doesn't failed (collides with other labels).\r\n */\r\n private tryPositionForDonut(labelPoint: DonutLabelDataPoint, grid: LabelArrangeGrid, currentLabelOffset: number): Label {\r\n let parentShape: LabelParentPoint = <LabelParentPoint>labelPoint.parentShape;\r\n if (_.isEmpty(parentShape.validPositions) || parentShape.validPositions[0] === NewPointLabelPosition.None)\r\n return;\r\n\r\n let defaultPosition: NewPointLabelPosition = parentShape.validPositions[0];\r\n\r\n let bestCandidate = this.tryAllPositions(labelPoint, grid, defaultPosition, currentLabelOffset);\r\n\r\n if (bestCandidate && bestCandidate.score === 0) {\r\n return this.buildLabel(bestCandidate, grid);\r\n }\r\n // If we haven't found a non-truncated label, try to split into 2 lines.\r\n if (this.donutChartProperties.dataLabelsSettings.labelStyle === labelStyle.both) {\r\n // Try to split the label to two lines if both data and category label are on\r\n let splitLabelDataPoint = this.splitDonutDataPoint(labelPoint);\r\n let bestSplitCandidate = this.tryAllPositions(splitLabelDataPoint, grid, defaultPosition, currentLabelOffset);\r\n // If the best candidate with a split line is better than the best candidate with a single line, return the former.\r\n if (bestSplitCandidate && (!bestCandidate || (bestSplitCandidate.score < bestCandidate.score))) {\r\n return this.buildLabel(bestSplitCandidate, grid);\r\n }\r\n }\r\n\r\n // We didn't find a better candidate by splitting the label lines, so return our best single-line candidate.\r\n if (bestCandidate) {\r\n return this.buildLabel(bestCandidate, grid);\r\n }\r\n }\r\n\r\n private generateCandidate(labelDataPoint: DonutLabelDataPoint, candidatePosition: NewPointLabelPosition, grid: LabelArrangeGrid, currentLabelOffset: number): LabelCandidate {\r\n let angle = this.generateCandidateAngleForPosition(labelDataPoint.donutArcDescriptor, candidatePosition);\r\n let parentShape = this.getPointPositionForAngle(angle);\r\n let parentPoint = parentShape.point;\r\n let score = this.score(labelDataPoint, parentPoint);\r\n let leaderLinePoints = DonutLabelUtils.getLabelLeaderLineForDonutChart(labelDataPoint.donutArcDescriptor, this.donutChartProperties, parentPoint, angle);\r\n let leaderLinesSize: ISize[] = DonutLabelUtils.getLabelLeaderLinesSizeForDonutChart(leaderLinePoints);\r\n\r\n let newLabelDataPoint = _.clone(labelDataPoint);\r\n newLabelDataPoint.angle = angle;\r\n newLabelDataPoint.parentShape = parentShape;\r\n newLabelDataPoint.leaderLinePoints = leaderLinePoints;\r\n newLabelDataPoint.linesSize = leaderLinesSize;\r\n\r\n let boundingBoxs: DonutLabelRect = DonutLabelLayout.tryPositionPoint(grid, parentShape.validPositions[0], newLabelDataPoint, currentLabelOffset, this.center, this.donutChartProperties.viewport);\r\n\r\n return {\r\n angle: angle,\r\n point: parentShape,\r\n score: score,\r\n labelRects: boundingBoxs,\r\n labelDataPoint: newLabelDataPoint,\r\n };\r\n }\r\n\r\n private tryAllPositions(labelDataPoint: DonutLabelDataPoint, grid: LabelArrangeGrid, defaultPosition: NewPointLabelPosition, currentLabelOffset: number): LabelCandidate {\r\n let boundingBoxs = DonutLabelLayout.tryPositionPoint(grid, defaultPosition, labelDataPoint, currentLabelOffset, this.center, this.donutChartProperties.viewport);\r\n\r\n let originalPoint: LabelParentPoint = <LabelParentPoint>labelDataPoint.parentShape;\r\n let originalCandidate: LabelCandidate = {\r\n point: originalPoint,\r\n angle: labelDataPoint.angle,\r\n score: this.score(labelDataPoint, originalPoint.point),\r\n labelRects: boundingBoxs,\r\n labelDataPoint: labelDataPoint,\r\n };\r\n\r\n if (boundingBoxs && boundingBoxs.textRect && originalCandidate.score === 0) {\r\n return originalCandidate;\r\n }\r\n\r\n let positions: NewPointLabelPosition[] = [];\r\n let bestCandidate: LabelCandidate;\r\n if (boundingBoxs && boundingBoxs.textRect) {\r\n // We have a truncated label here, otherwised we would have returned already\r\n positions = this.getLabelPointPositions(labelDataPoint, /* isTruncated */ true);\r\n bestCandidate = originalCandidate;\r\n }\r\n else {\r\n positions = this.getLabelPointPositions(labelDataPoint, /* isTruncated */ false);\r\n }\r\n\r\n // Try to reposition the label if necessary\r\n for (let position of positions) {\r\n let candidate = this.generateCandidate(labelDataPoint, position, grid, currentLabelOffset);\r\n if (candidate.labelRects && candidate.labelRects.textRect) {\r\n if (bestCandidate == null || candidate.score < bestCandidate.score) {\r\n bestCandidate = candidate;\r\n if (bestCandidate.score === 0)\r\n return bestCandidate;\r\n }\r\n }\r\n }\r\n\r\n return bestCandidate;\r\n }\r\n\r\n private buildLabel(labelLayout: LabelCandidate, grid: LabelArrangeGrid): Label {\r\n let resultingBoundingBox = labelLayout.labelRects.textRect;\r\n let labelPoint = labelLayout.labelDataPoint;\r\n\r\n grid.add(resultingBoundingBox);\r\n grid.add(labelLayout.labelRects.horizontalLineRect);\r\n grid.add(labelLayout.labelRects.diagonalLineRect);\r\n labelPoint.hasBeenRendered = true;\r\n let left = resultingBoundingBox.left - this.center.x;\r\n //We need to add or subtract half resultingBoundingBox.width because Donut chart labels get text anchor start/end\r\n if (left < 0)\r\n left += resultingBoundingBox.width / 2;\r\n else\r\n left -= resultingBoundingBox.width / 2;\r\n let textAnchor = labelPoint.parentShape.validPositions[0] === NewPointLabelPosition.Right ? 'start' : 'end';\r\n let boundingBox: IRect = {\r\n left: left,\r\n top: resultingBoundingBox.top - this.center.y,\r\n height: resultingBoundingBox.height,\r\n width: resultingBoundingBox.width,\r\n };\r\n\r\n // After repositioning the label we need to recalculate its size and format it according to the current available space\r\n let labelSettingsStyle = this.donutChartProperties.dataLabelsSettings.labelStyle;\r\n let spaceAvailableForLabels = DonutLabelUtils.getSpaceAvailableForDonutLabels((<LabelParentPoint>labelPoint.parentShape).point.x, this.donutChartProperties.viewport);\r\n let formattedDataLabel: string;\r\n let formattedCategoryLabel: string;\r\n let text: string;\r\n let getLabelFormattedText = powerbi.visuals.dataLabelUtils.getLabelFormattedText;\r\n let fontSize = labelPoint.fontSize;\r\n let hasOneLabelRow = labelSettingsStyle === labelStyle.both && labelPoint.secondRowText == null;\r\n\r\n // Giving 50/50 space when both category and measure are on\r\n if (hasOneLabelRow) {\r\n labelPoint.dataLabel = \" (\" + labelPoint.dataLabel + \")\";\r\n spaceAvailableForLabels /= 2;\r\n }\r\n\r\n if (labelSettingsStyle === labelStyle.both || labelSettingsStyle === labelStyle.data) {\r\n formattedDataLabel = getLabelFormattedText({\r\n label: labelPoint.dataLabel,\r\n maxWidth: spaceAvailableForLabels,\r\n fontSize: fontSize\r\n });\r\n }\r\n\r\n if (labelSettingsStyle === labelStyle.both || labelSettingsStyle === labelStyle.category) {\r\n formattedCategoryLabel = getLabelFormattedText({\r\n label: labelPoint.categoryLabel,\r\n maxWidth: spaceAvailableForLabels,\r\n fontSize: fontSize\r\n });\r\n }\r\n\r\n switch (labelSettingsStyle) {\r\n case labelStyle.both:\r\n if (labelPoint.secondRowText == null) {\r\n text = formattedCategoryLabel + formattedDataLabel;\r\n }\r\n else {\r\n text = formattedDataLabel;\r\n labelPoint.secondRowText = formattedCategoryLabel;\r\n }\r\n break;\r\n case labelStyle.data:\r\n text = formattedDataLabel;\r\n break;\r\n case labelStyle.category:\r\n text = formattedCategoryLabel;\r\n break;\r\n }\r\n\r\n // Limit text size width for correct leader line calculation\r\n labelPoint.textSize.width = Math.min(labelPoint.textSize.width, hasOneLabelRow ? spaceAvailableForLabels * 2 : spaceAvailableForLabels);\r\n\r\n return {\r\n boundingBox: boundingBox,\r\n text: text,\r\n isVisible: true,\r\n fill: labelPoint.outsideFill,\r\n identity: labelPoint.identity,\r\n fontSize: fontSize,\r\n selected: false,\r\n textAnchor: textAnchor,\r\n leaderLinePoints: labelPoint.leaderLinePoints,\r\n hasBackground: false,\r\n secondRowText: labelPoint.secondRowText,\r\n };\r\n }\r\n\r\n private static tryPositionPoint(grid: LabelArrangeGrid, position: NewPointLabelPosition, labelDataPoint: DonutLabelDataPoint, offset: number, center: IVector, viewport: IViewport): DonutLabelRect {\r\n let parentPoint: LabelParentPoint = <LabelParentPoint>labelDataPoint.parentShape;\r\n \r\n // Limit label width to fit the availabe space for labels\r\n let textSize: ISize = _.clone(labelDataPoint.textSize);\r\n textSize.width = Math.min(textSize.width, DonutLabelUtils.getSpaceAvailableForDonutLabels(parentPoint.point.x, viewport));\r\n\r\n // Create label rectangle\r\n let labelRect = DataLabelPointPositioner.getLabelRect(textSize, parentPoint, position, offset);\r\n\r\n // Create label diagonal line rectangle\r\n let diagonalLineParentPoint: LabelParentPoint = {\r\n point: {\r\n x: labelDataPoint.leaderLinePoints[0][0],\r\n y: labelDataPoint.leaderLinePoints[0][1] < 0 ? labelDataPoint.leaderLinePoints[1][1] : labelDataPoint.leaderLinePoints[0][1]\r\n },\r\n radius: 0,\r\n validPositions: null\r\n };\r\n let diagonalLineRect = DataLabelPointPositioner.getLabelRect(labelDataPoint.linesSize[DonutLabelUtils.DiagonalLineIndex], diagonalLineParentPoint, position, offset);\r\n\r\n // Create label horizontal line rectangle\r\n let horizontalLineParentPoint: LabelParentPoint = {\r\n point: {\r\n x: labelDataPoint.leaderLinePoints[1][0],\r\n y: labelDataPoint.leaderLinePoints[1][1]\r\n },\r\n radius: 0,\r\n validPositions: null\r\n };\r\n let horizontalLineRect = DataLabelPointPositioner.getLabelRect(labelDataPoint.linesSize[DonutLabelUtils.HorizontalLineIndex], horizontalLineParentPoint, position, offset);\r\n\r\n if (!labelRect || !diagonalLineRect || !horizontalLineRect)\r\n return;\r\n\r\n labelRect.left += center.x;\r\n labelRect.top += center.y;\r\n let centerForLinesWidth = center.x - labelRect.width / 2;\r\n diagonalLineRect.left += centerForLinesWidth;\r\n diagonalLineRect.top += center.y;\r\n horizontalLineRect.left += centerForLinesWidth;\r\n horizontalLineRect.top += center.y;\r\n\r\n if (!grid.hasConflict(labelRect) && !grid.hasConflict(diagonalLineRect) && !grid.hasConflict(horizontalLineRect))\r\n return { textRect: labelRect, diagonalLineRect: diagonalLineRect, horizontalLineRect: horizontalLineRect };\r\n }\r\n\r\n /**\r\n * Returns an array of valid positions for hidden and truncated labels.\r\n * For truncated labels will return positions with more available space. \r\n * For hidden labels will return all possible positions by the order we draw labels (clockwise) \r\n */\r\n private getLabelPointPositions(labelPoint: DonutLabelDataPoint, isTruncated: boolean): NewPointLabelPosition[] {\r\n let parentShape: LabelParentPoint = <LabelParentPoint>labelPoint.parentShape;\r\n let position = parentShape.validPositions[0];\r\n\r\n if (!isTruncated) {\r\n return position === NewPointLabelPosition.Left\r\n ? [NewPointLabelPosition.AboveLeft, NewPointLabelPosition.BelowLeft]\r\n : [NewPointLabelPosition.BelowRight, NewPointLabelPosition.AboveRight];\r\n }\r\n\r\n if (parentShape.point.y < 0) {\r\n return position === NewPointLabelPosition.Right\r\n ? [NewPointLabelPosition.AboveRight]\r\n : [NewPointLabelPosition.AboveLeft];\r\n }\r\n else {\r\n return position === NewPointLabelPosition.Right\r\n ? [NewPointLabelPosition.BelowRight]\r\n : [NewPointLabelPosition.BelowLeft];\r\n }\r\n }\r\n\r\n /**\r\n * Returns a new DonutLabelDataPoint after splitting it into two lines\r\n */\r\n private splitDonutDataPoint(labelPoint: DonutLabelDataPoint): DonutLabelDataPoint {\r\n let textSize: ISize = {\r\n width: Math.max(labelPoint.categoryLabelSize.width, labelPoint.dataLabelSize.width),\r\n height: labelPoint.dataLabelSize.height * 2,\r\n };\r\n\r\n let newLabelPoint: DonutLabelDataPoint = _.clone(labelPoint);\r\n newLabelPoint.textSize = textSize;\r\n newLabelPoint.secondRowText = labelPoint.categoryLabel;\r\n return newLabelPoint;\r\n }\r\n\r\n private generateCandidateAngleForPosition(d: DonutArcDescriptor, position: NewPointLabelPosition): number {\r\n let midAngle = d.startAngle + ((d.endAngle - d.startAngle) / 2);\r\n\r\n switch (position) {\r\n case NewPointLabelPosition.AboveRight:\r\n case NewPointLabelPosition.BelowLeft:\r\n return ((d.startAngle + midAngle) - Math.PI) / 2;\r\n case NewPointLabelPosition.AboveLeft:\r\n case NewPointLabelPosition.BelowRight:\r\n return ((midAngle + d.endAngle) - Math.PI) / 2;\r\n default:\r\n debug.assertFail(\"Unsupported label position\");\r\n }\r\n }\r\n\r\n private getPointPositionForAngle(angle: number): LabelParentPoint {\r\n // Calculate the new label coordinates\r\n let labelX = DonutLabelUtils.getXPositionForDonutLabel(Math.cos(angle) * this.outerRadius);\r\n let labelY = Math.sin(angle) * this.outerRadius;\r\n\r\n let newPosition = labelX < 0 ? NewPointLabelPosition.Left : NewPointLabelPosition.Right;\r\n let pointPosition: LabelParentPoint = {\r\n point: {\r\n x: labelX,\r\n y: labelY,\r\n },\r\n validPositions: [newPosition],\r\n radius: 0,\r\n };\r\n return pointPosition;\r\n }\r\n\r\n private score(labelPoint: DonutLabelDataPoint, point: powerbi.visuals.shapes.IPoint): number {\r\n let spaceAvailableForLabels = DonutLabelUtils.getSpaceAvailableForDonutLabels(point.x, this.donutChartProperties.viewport);\r\n let textWidth: number;\r\n\r\n // Check if we show category and data labels in one row\r\n if (this.donutChartProperties.dataLabelsSettings.labelStyle === labelStyle.both && labelPoint.secondRowText == null) {\r\n // Each of the labels gets half of the available space for labels so we take this into consideration in the score\r\n textWidth = Math.max(labelPoint.categoryLabelSize.width, labelPoint.dataLabelSize.width + this.additionalCharsWidth);\r\n spaceAvailableForLabels /= 2;\r\n }\r\n else {\r\n textWidth = labelPoint.textSize.width;\r\n }\r\n\r\n return Math.max(textWidth - spaceAvailableForLabels, 0);\r\n }\r\n\r\n }\r\n}\r\n","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n *\r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n *\r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\nmodule powerbi {\r\n\r\n import ISize = powerbi.visuals.shapes.ISize;\r\n import IPoint = powerbi.visuals.IPoint;\r\n import IRect = powerbi.visuals.IRect;\r\n import Polygon = powerbi.visuals.shapes.Polygon;\r\n import Transform = powerbi.visuals.Transform;\r\n import NewDataLabelUtils = powerbi.visuals.NewDataLabelUtils;\r\n\r\n const DefaultCentroidOffset = 5;\r\n const OffsetDelta = 10;\r\n const MaximumOffset = 60;\r\n const stemExtension = 5;\r\n\r\n export interface LabelParentPolygon {\r\n /** The point this data label belongs to */\r\n polygon: Polygon;\r\n\r\n /** Valid positions to place the label ordered by preference */\r\n validPositions: NewPointLabelPosition[];\r\n }\r\n\r\n export interface FilledMapLabel extends Label {\r\n absoluteBoundingBoxCenter: IPoint;\r\n originalPixelOffset: number;\r\n originalPosition?: NewPointLabelPosition;\r\n originalAbsoluteCentroid?: IPoint;\r\n absoluteStemSource?: IPoint;\r\n isPlacedInsidePolygon: boolean;\r\n }\r\n\r\n export class FilledMapLabelLayout {\r\n private labels: FilledMapLabel[];\r\n\r\n public layout(labelDataPoints: LabelDataPoint[], viewport: IViewport, polygonInfoTransform: Transform, redrawDataLabels: boolean): Label[] {\r\n if (redrawDataLabels || this.labels === undefined) {\r\n let labelDataPointsGroup: LabelDataPointsGroup = {\r\n labelDataPoints: labelDataPoints,\r\n maxNumberOfLabels: labelDataPoints.length\r\n };\r\n\r\n for (let labelPoint of labelDataPoints) {\r\n labelPoint.labelSize = {\r\n width: labelPoint.textSize.width + 2 * NewDataLabelUtils.horizontalLabelBackgroundPadding,\r\n height: labelPoint.textSize.height + 2 * NewDataLabelUtils.verticalLabelBackgroundPadding,\r\n };\r\n }\r\n\r\n let grid = new LabelArrangeGrid([labelDataPointsGroup], viewport);\r\n let resultingDataLabels: FilledMapLabel[] = [];\r\n let allPolygons: Polygon[] = [];\r\n\r\n for (let labelPoint of labelDataPoints) {\r\n let polygon = (<LabelParentPolygon>labelPoint.parentShape).polygon;\r\n allPolygons.push(polygon);\r\n polygon.pixelBoundingRect = polygonInfoTransform.applyToRect(polygon.absoluteBoundingRect());\r\n }\r\n\r\n let shapesgrid = new LabelPolygonArrangeGrid(allPolygons, viewport);\r\n\r\n for (let labelPoint of labelDataPoints) {\r\n let dataLabel = this.getLabelByPolygonPositions(labelPoint, polygonInfoTransform, grid, shapesgrid);\r\n if (dataLabel != null) {\r\n resultingDataLabels.push(dataLabel);\r\n }\r\n }\r\n this.labels = resultingDataLabels;\r\n }\r\n else {\r\n this.updateLabelOffsets(polygonInfoTransform);\r\n }\r\n return this.labels;\r\n }\r\n\r\n public getLabelPolygon(mapDataPoint: LabelDataPoint, position: NewPointLabelPosition, pointPosition: IPoint, offset: number): IRect {\r\n let dataPointSize: ISize = {\r\n width: mapDataPoint.textSize.width,\r\n height: (mapDataPoint.textSize.height)\r\n };\r\n\r\n return this.getLabelBoundingBox(dataPointSize, position, pointPosition, offset);\r\n }\r\n\r\n private getLabelBoundingBox(dataPointSize: ISize, position: NewPointLabelPosition, pointPosition: IPoint, offset: number): IRect {\r\n switch (position) {\r\n case NewPointLabelPosition.Above: {\r\n return DataLabelPointPositioner.above(dataPointSize, pointPosition, offset);\r\n }\r\n case NewPointLabelPosition.Below: {\r\n return DataLabelPointPositioner.below(dataPointSize, pointPosition, offset);\r\n }\r\n case NewPointLabelPosition.Left: {\r\n return DataLabelPointPositioner.left(dataPointSize, pointPosition, offset);\r\n }\r\n case NewPointLabelPosition.Right: {\r\n return DataLabelPointPositioner.right(dataPointSize, pointPosition, offset);\r\n }\r\n case NewPointLabelPosition.AboveLeft: {\r\n return DataLabelPointPositioner.aboveLeft(dataPointSize, pointPosition, offset);\r\n }\r\n case NewPointLabelPosition.AboveRight: {\r\n return DataLabelPointPositioner.aboveRight(dataPointSize, pointPosition, offset);\r\n }\r\n case NewPointLabelPosition.BelowLeft: {\r\n return DataLabelPointPositioner.belowLeft(dataPointSize, pointPosition, offset);\r\n }\r\n case NewPointLabelPosition.BelowRight: {\r\n return DataLabelPointPositioner.belowRight(dataPointSize, pointPosition, offset);\r\n }\r\n case NewPointLabelPosition.Center: {\r\n return DataLabelPointPositioner.center(dataPointSize, pointPosition);\r\n }\r\n default: {\r\n debug.assertFail(\"Unsupported label position\");\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n private getLabelByPolygonPositions(labelPoint: LabelDataPoint, polygonInfoTransform: Transform, grid: LabelArrangeGrid, shapesGrid: LabelPolygonArrangeGrid): FilledMapLabel {\r\n let offset: number = 0;\r\n let inverseTransorm = polygonInfoTransform.getInverse();\r\n for (let i: number = 0; i < 2; i++) {\r\n if (i === 1) {\r\n offset = DefaultCentroidOffset;\r\n }\r\n for (let position of (<LabelParentPolygon>labelPoint.parentShape).validPositions) {\r\n let resultingAbsoluteBoundingBox = this.tryPositionForPolygonPosition(position, labelPoint, polygonInfoTransform, offset, inverseTransorm);\r\n if (position === NewPointLabelPosition.Center && i !== 0) {\r\n continue;\r\n }\r\n if (resultingAbsoluteBoundingBox) {\r\n let resultingBoundingBox = polygonInfoTransform.applyToRect(resultingAbsoluteBoundingBox);\r\n let dataLabel: FilledMapLabel = {\r\n text: labelPoint.text,\r\n secondRowText: labelPoint.secondRowText,\r\n boundingBox: resultingBoundingBox,\r\n isVisible: true,\r\n fill: labelPoint.insideFill,\r\n identity: null,\r\n selected: false,\r\n hasBackground: true,\r\n textAnchor: \"middle\",\r\n originalPixelOffset: offset,\r\n isPlacedInsidePolygon: true,\r\n absoluteBoundingBoxCenter: {\r\n x: resultingAbsoluteBoundingBox.left + resultingAbsoluteBoundingBox.width / 2,\r\n y: resultingAbsoluteBoundingBox.top + resultingAbsoluteBoundingBox.height / 2\r\n }\r\n };\r\n\r\n return dataLabel;\r\n }\r\n }\r\n }\r\n\r\n let currentOffset = 6;\r\n\r\n while (currentOffset <= MaximumOffset) {\r\n for (let position of (<powerbi.LabelParentPolygon>labelPoint.parentShape).validPositions) {\r\n if (position === NewPointLabelPosition.Center) {\r\n continue;\r\n }\r\n let polygon = (<LabelParentPolygon>labelPoint.parentShape).polygon;\r\n let pixelCentroid = polygonInfoTransform.applyToPoint(polygon.absoluteCentroid());\r\n let resultingAbsolutBoundingBox = this.tryPlaceLabelOutsidePolygon(grid, position, labelPoint, currentOffset, pixelCentroid, shapesGrid, inverseTransorm);\r\n\r\n if (resultingAbsolutBoundingBox) {\r\n let resultingBoundingBox = polygonInfoTransform.applyToRect(resultingAbsolutBoundingBox);\r\n let dataLabel: FilledMapLabel = {\r\n text: labelPoint.text,\r\n secondRowText: labelPoint.secondRowText,\r\n boundingBox: resultingBoundingBox,\r\n isVisible: true,\r\n fill: labelPoint.insideFill,\r\n identity: null,\r\n selected: false,\r\n hasBackground: true,\r\n isPlacedInsidePolygon: false,\r\n textAnchor: \"middle\",\r\n originalPixelOffset: currentOffset,\r\n originalPosition: position,\r\n originalAbsoluteCentroid: polygon.absoluteCentroid(),\r\n absoluteBoundingBoxCenter: {\r\n x: resultingAbsolutBoundingBox.left + resultingAbsolutBoundingBox.width / 2,\r\n y: resultingAbsolutBoundingBox.top + resultingAbsolutBoundingBox.height / 2\r\n }\r\n };\r\n\r\n let pixelStemSource = this.calculateStemSource(polygonInfoTransform, inverseTransorm, polygon, resultingBoundingBox, position, pixelCentroid);\r\n\r\n dataLabel.leaderLinePoints = this.setLeaderLinePoints(pixelStemSource, this.calculateStemDestination(resultingBoundingBox, position));\r\n\r\n dataLabel.absoluteStemSource = inverseTransorm.applyToPoint(pixelStemSource);\r\n\r\n grid.add(resultingBoundingBox);\r\n return dataLabel;\r\n }\r\n }\r\n currentOffset += OffsetDelta;\r\n }\r\n return null;\r\n }\r\n\r\n private setLeaderLinePoints(stemSource: IPoint, stemDestination: IPoint): number[][] {\r\n return [[stemSource.x, stemSource.y], [stemDestination.x, stemDestination.y]];\r\n }\r\n\r\n private calculateStemSource(polygonInfoTransform: Transform, inverseTransorm: Transform, polygon: Polygon, labelBoundingBox: IRect, position: NewPointLabelPosition, pixelCentroid: IPoint): IPoint {\r\n let absoluteStemSource = polygon.lineIntersectionPoint(polygon.absoluteCentroid(),\r\n inverseTransorm.applyToPoint({ x: labelBoundingBox.left + labelBoundingBox.width / 2, y: labelBoundingBox.top + labelBoundingBox.height / 2 }));\r\n\r\n if (absoluteStemSource == null) {\r\n return pixelCentroid;\r\n }\r\n\r\n let stemSource = polygonInfoTransform.applyToPoint(absoluteStemSource);\r\n\r\n switch (position) {\r\n case NewPointLabelPosition.Above: {\r\n stemSource.y += stemExtension;\r\n break;\r\n }\r\n case NewPointLabelPosition.Below: {\r\n stemSource.y -= stemExtension;\r\n break;\r\n }\r\n case NewPointLabelPosition.Left: {\r\n stemSource.x += stemExtension;\r\n break;\r\n }\r\n case NewPointLabelPosition.Right: {\r\n stemSource.x -= stemExtension;\r\n break;\r\n }\r\n case NewPointLabelPosition.AboveLeft: {\r\n stemSource.x += (stemExtension / DataLabelPointPositioner.cos45);\r\n stemSource.y += (stemExtension / DataLabelPointPositioner.sin45);\r\n break;\r\n }\r\n case NewPointLabelPosition.AboveRight: {\r\n stemSource.x -= (stemExtension / DataLabelPointPositioner.cos45);\r\n stemSource.y += (stemExtension / DataLabelPointPositioner.sin45);\r\n break;\r\n }\r\n case NewPointLabelPosition.BelowLeft: {\r\n stemSource.x += (stemExtension / DataLabelPointPositioner.cos45);\r\n stemSource.y -= (stemExtension / DataLabelPointPositioner.sin45);\r\n break;\r\n }\r\n case NewPointLabelPosition.BelowRight: {\r\n stemSource.x -= (stemExtension / DataLabelPointPositioner.cos45);\r\n stemSource.y -= (stemExtension / DataLabelPointPositioner.sin45);\r\n break;\r\n }\r\n case NewPointLabelPosition.Center: {\r\n break;\r\n }\r\n default: {\r\n debug.assertFail(\"Unsupported label position\");\r\n }\r\n }\r\n\r\n return stemSource;\r\n }\r\n\r\n private calculateStemDestination(labelBoundingBox: IRect, position: NewPointLabelPosition): IPoint {\r\n let x: number;\r\n let y: number;\r\n switch (position) {\r\n case NewPointLabelPosition.Above: {\r\n x = labelBoundingBox.left + labelBoundingBox.width / 2;\r\n y = labelBoundingBox.top + labelBoundingBox.height;\r\n break;\r\n }\r\n case NewPointLabelPosition.Below: {\r\n x = labelBoundingBox.left + labelBoundingBox.width / 2;\r\n y = labelBoundingBox.top;\r\n break;\r\n }\r\n case NewPointLabelPosition.Left: {\r\n x = labelBoundingBox.left + labelBoundingBox.width;\r\n y = labelBoundingBox.top + labelBoundingBox.height / 2;\r\n break;\r\n }\r\n case NewPointLabelPosition.Right: {\r\n x = labelBoundingBox.left;\r\n y = labelBoundingBox.top + labelBoundingBox.height / 2;\r\n break;\r\n }\r\n case NewPointLabelPosition.AboveLeft: {\r\n x = labelBoundingBox.left + labelBoundingBox.width;\r\n y = labelBoundingBox.top + labelBoundingBox.height;\r\n break;\r\n }\r\n case NewPointLabelPosition.AboveRight: {\r\n x = labelBoundingBox.left;\r\n y = labelBoundingBox.top + labelBoundingBox.height;\r\n break;\r\n }\r\n case NewPointLabelPosition.BelowLeft: {\r\n x = labelBoundingBox.left + labelBoundingBox.width;\r\n y = labelBoundingBox.top;\r\n break;\r\n }\r\n case NewPointLabelPosition.BelowRight: {\r\n x = labelBoundingBox.left;\r\n y = labelBoundingBox.top;\r\n break;\r\n }\r\n case NewPointLabelPosition.Center: {\r\n break;\r\n }\r\n default: {\r\n debug.assertFail(\"Unsupported label position\");\r\n }\r\n }\r\n\r\n return { x: x, y: y };\r\n }\r\n\r\n private tryPositionForPolygonPosition(position: NewPointLabelPosition, labelDataPoint: LabelDataPoint, polygonInfoTransform: Transform, offset: number, inverseTransorm: Transform) {\r\n let polygon = (<LabelParentPolygon>labelDataPoint.parentShape).polygon;\r\n let pixelCentroid = polygonInfoTransform.applyToPoint(polygon.absoluteCentroid());\r\n let labelRect = this.getLabelPolygon(labelDataPoint, position, pixelCentroid, offset);\r\n let absoluteLabelRect = this.getAbsoluteRectangle(inverseTransorm, labelRect);\r\n\r\n return polygon.contains(absoluteLabelRect) ? absoluteLabelRect : null;\r\n }\r\n\r\n /**\r\n * Tests a particular position/offset combination for the given data label.\r\n * If the label can be placed, returns the resulting bounding box for the data\r\n * label. If not, returns null.\r\n */\r\n private tryPlaceLabelOutsidePolygon(grid: LabelArrangeGrid, position: NewPointLabelPosition, labelDataPoint: LabelDataPoint, offset: number, pixelCentroid: IPoint, shapesGrid: LabelPolygonArrangeGrid, inverseTransform: powerbi.visuals.Transform): IRect {\r\n let offsetForPosition = offset;\r\n let labelRect = this.getLabelPolygon(labelDataPoint, position, pixelCentroid, offsetForPosition);\r\n\r\n let otherLabelsConflict = grid.hasConflict(labelRect);\r\n\r\n if (!otherLabelsConflict) {\r\n let absoluteLabelRect = this.getAbsoluteRectangle(inverseTransform, labelRect);\r\n\r\n if (!shapesGrid.hasConflict(absoluteLabelRect, labelRect))\r\n return absoluteLabelRect;\r\n }\r\n return null;\r\n }\r\n\r\n private updateLabelOffsets(polygonInfoTransform: Transform): void {\r\n for (let label of this.labels) {\r\n if (!label.isVisible)\r\n continue;\r\n\r\n if (label.isPlacedInsidePolygon) {\r\n var newOffset = polygonInfoTransform.applyToPoint(label.absoluteBoundingBoxCenter);\r\n\r\n let xDelta = (label.boundingBox.left + label.boundingBox.width / 2) - newOffset.x;\r\n let yDelta = (label.boundingBox.top + label.boundingBox.height / 2) - newOffset.y;\r\n\r\n label.boundingBox.top -= yDelta;\r\n label.boundingBox.left -= xDelta;\r\n } else {\r\n var stemSourcePoint = polygonInfoTransform.applyToPoint(label.absoluteStemSource);\r\n var pixelCentroid = polygonInfoTransform.applyToPoint(label.originalAbsoluteCentroid);\r\n label.boundingBox = this.getLabelBoundingBox({ width: label.boundingBox.width, height: label.boundingBox.height }, label.originalPosition, pixelCentroid, label.originalPixelOffset);\r\n\r\n if (label.leaderLinePoints !== undefined)\r\n label.leaderLinePoints = this.setLeaderLinePoints(stemSourcePoint, this.calculateStemDestination(label.boundingBox, label.originalPosition));\r\n }\r\n }\r\n }\r\n\r\n private getAbsoluteRectangle(inverseTransorm: Transform, rect: IRect) {\r\n return inverseTransorm.applyToRect(rect);\r\n }\r\n }\r\n\r\n export class LabelPolygonArrangeGrid {\r\n private grid: Polygon[][][];\r\n private viewport: IViewport;\r\n private cellSize: ISize;\r\n private columnCount: number;\r\n private rowCount: number;\r\n\r\n /** \r\n * A multiplier applied to the largest width height to attempt to balance # of\r\n * polygons in each cell and number of cells each polygon belongs to\r\n */\r\n private static cellSizeMultiplier = 2;\r\n\r\n constructor(polygons: Polygon[], viewport: IViewport) {\r\n this.viewport = viewport;\r\n let maxPolygonWidth = 0;\r\n let maxPolygonHeight = 0;\r\n\r\n for (let polygon of polygons) {\r\n let polygonSize: ISize = polygon.pixelBoundingRect;\r\n if (polygonSize.width > maxPolygonWidth) {\r\n maxPolygonWidth = polygonSize.width;\r\n }\r\n if (polygonSize.height > maxPolygonHeight) {\r\n maxPolygonHeight = polygonSize.height;\r\n }\r\n }\r\n\r\n if (maxPolygonWidth === 0) {\r\n maxPolygonWidth = viewport.width;\r\n }\r\n if (maxPolygonHeight === 0) {\r\n maxPolygonHeight = viewport.height;\r\n }\r\n\r\n let cellSize = this.cellSize = { width: maxPolygonWidth * LabelPolygonArrangeGrid.cellSizeMultiplier, height: maxPolygonHeight * LabelPolygonArrangeGrid.cellSizeMultiplier };\r\n this.columnCount = LabelPolygonArrangeGrid.getCellCount(cellSize.width, viewport.width, 1, 100);\r\n this.rowCount = LabelPolygonArrangeGrid.getCellCount(cellSize.height, viewport.height, 1, 100);\r\n let grid: Polygon[][][] = [];\r\n for (let i = 0, ilen = this.columnCount; i < ilen; i++) {\r\n grid[i] = [];\r\n for (let j = 0, jlen = this.rowCount; j < jlen; j++) {\r\n grid[i][j] = [];\r\n }\r\n }\r\n\r\n this.grid = grid;\r\n\r\n for (let polygon of polygons) {\r\n this.add(polygon);\r\n }\r\n\r\n }\r\n\r\n public hasConflict(absolutLabelRect: IRect, pixelLabelRect: IRect): boolean {\r\n let containingIndexRect = this.getContainingGridSubsection(pixelLabelRect);\r\n let grid = this.grid;\r\n for (let x = containingIndexRect.xMin; x < containingIndexRect.xMax; x++) {\r\n for (let y = containingIndexRect.yMin; y < containingIndexRect.yMax; y++) {\r\n for (let currentPolygon of grid[x][y]) {\r\n if (currentPolygon.conflicts(absolutLabelRect)) {\r\n return true;\r\n }\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n private add(polygon: Polygon): void {\r\n let containingIndexRect = this.getContainingGridSubsection(polygon.pixelBoundingRect);\r\n for (let x = containingIndexRect.xMin; x < containingIndexRect.xMax; x++) {\r\n for (let y = containingIndexRect.yMin; y < containingIndexRect.yMax; y++) {\r\n this.grid[x][y].push(polygon);\r\n }\r\n }\r\n }\r\n\r\n private getContainingGridSubsection(rect: IRect): GridSubsection {\r\n return {\r\n xMin: LabelPolygonArrangeGrid.bound(Math.floor(rect.left / this.cellSize.width), 0, this.columnCount),\r\n xMax: LabelPolygonArrangeGrid.bound(Math.ceil((rect.left + rect.width) / this.cellSize.width), 0, this.columnCount),\r\n yMin: LabelPolygonArrangeGrid.bound(Math.floor(rect.top / this.cellSize.height), 0, this.rowCount),\r\n yMax: LabelPolygonArrangeGrid.bound(Math.ceil((rect.top + rect.height) / this.cellSize.height), 0, this.rowCount),\r\n };\r\n }\r\n\r\n private static getCellCount(step: number, length: number, minCount: number, maxCount: number): number {\r\n return LabelPolygonArrangeGrid.bound(Math.ceil(length / step), minCount, maxCount);\r\n }\r\n\r\n private static bound(value: number, min: number, max: number): number {\r\n return Math.max(Math.min(value, max), min);\r\n }\r\n\r\n }\r\n\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n export function createColorAllocatorFactory(): IColorAllocatorFactory {\r\n return new ColorAllocatorFactory();\r\n }\r\n\r\n class ColorAllocatorFactory implements IColorAllocatorFactory {\r\n public linearGradient2(options: LinearGradient2): IColorAllocator {\r\n return new LinearGradient2Allocator(options);\r\n }\r\n\r\n public linearGradient3(options: LinearGradient3, splitScales: boolean): IColorAllocator {\r\n if (splitScales)\r\n return new LinearGradient3AllocatorWithSplittedScales(options);\r\n return new LinearGradient3Allocator(options);\r\n }\r\n }\r\n\r\n class LinearGradient2Allocator implements IColorAllocator {\r\n private options: LinearGradient2;\r\n private scale: D3.Scale.LinearScale;\r\n \r\n constructor(options: LinearGradient2) {\r\n debug.assertValue(options, 'options');\r\n\r\n this.options = options;\r\n\r\n let min = options.min,\r\n max = options.max;\r\n this.scale = d3.scale.linear()\r\n .domain([min.value, max.value])\r\n .range([min.color, max.color])\r\n .clamp(true); // process a value outside of the domain - set to extremum values\r\n }\r\n\r\n public color(value: number): string {\r\n let min = this.options.min,\r\n max = this.options.max;\r\n if (min.value === max.value) {\r\n if (value >= max.value)\r\n return max.color;\r\n return min.color;\r\n }\r\n return <any>this.scale(value);\r\n }\r\n }\r\n\r\n class LinearGradient3Allocator implements IColorAllocator {\r\n private options: LinearGradient3;\r\n private scale: D3.Scale.LinearScale;\r\n\r\n constructor(options: LinearGradient3) {\r\n debug.assertValue(options, 'options');\r\n\r\n this.options = options;\r\n\r\n let min = options.min,\r\n mid = options.mid,\r\n max = options.max;\r\n this.scale = d3.scale.linear()\r\n .domain([min.value, mid.value, max.value])\r\n .range([min.color, mid.color, max.color])\r\n .clamp(true); // process a value outside of the domain- set to extremum values\r\n }\r\n\r\n public color(value: number): string {\r\n let min = this.options.min,\r\n mid = this.options.mid,\r\n max = this.options.max;\r\n\r\n if (max.value === mid.value || mid.value === min.value || (max.value === mid.value && max.value === min.value)) {\r\n if (value >= max.value)\r\n return max.color;\r\n else if (value >= mid.value)\r\n return mid.color;\r\n return min.color;\r\n }\r\n return <any>this.scale(value);\r\n }\r\n }\r\n\r\n class LinearGradient3AllocatorWithSplittedScales implements IColorAllocator {\r\n private options: LinearGradient3;\r\n private scale1: D3.Scale.LinearScale;\r\n private scale2: D3.Scale.LinearScale;\r\n\r\n constructor(options: LinearGradient3) {\r\n debug.assertValue(options, 'options');\r\n\r\n this.options = options;\r\n\r\n let min = options.min,\r\n mid = options.mid,\r\n max = options.max;\r\n /*\r\n If the center value is overridden, but the max and min remain automatic,\r\n colors are then assigned on a scale between the overridden center value and the max/min values in the data.\r\n Each side of the center value is assigned separately, independent of the relative scales.\r\n */\r\n this.scale1 = d3.scale.linear()\r\n .domain([min.value, mid.value])\r\n .range([min.color, mid.color])\r\n .clamp(true); // process a value outside of the domain- set to extremum values\r\n this.scale2 = d3.scale.linear()\r\n .domain([mid.value, max.value])\r\n .range([mid.color, max.color])\r\n .clamp(true); // process a value outside of the domain- set to extremum values\r\n }\r\n\r\n public color(value: number): string {\r\n let min = this.options.min,\r\n mid = this.options.mid,\r\n max = this.options.max;\r\n\r\n if (max.value === mid.value || mid.value === min.value || (max.value === mid.value && max.value === min.value)) {\r\n if (value >= max.value)\r\n return max.color;\r\n else if (value >= mid.value)\r\n return mid.color;\r\n return min.color;\r\n }\r\n else if (value <= mid.value) {\r\n return <any>this.scale1(value);\r\n }\r\n return <any>this.scale2(value);\r\n }\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n\r\n const BeautifiedFormat: { [x: string]: string } = {\r\n '0.00 %;-0.00 %;0.00 %': 'Percentage',\r\n '0.0 %;-0.0 %;0.0 %': 'Percentage1',\r\n };\r\n\r\n const defaultLocalizedStrings = {\r\n 'NullValue': '(Blank)',\r\n 'BooleanTrue': 'True',\r\n 'BooleanFalse': 'False',\r\n 'NaNValue': 'NaN',\r\n 'InfinityValue': '+Infinity',\r\n 'NegativeInfinityValue': '-Infinity',\r\n 'Restatement_Comma': '{0}, {1}',\r\n 'Restatement_CompoundAnd': '{0} and {1}',\r\n 'DisplayUnitSystem_EAuto_Title': 'Auto',\r\n 'DisplayUnitSystem_E0_Title': 'None',\r\n 'DisplayUnitSystem_E3_LabelFormat': '{0}K',\r\n 'DisplayUnitSystem_E3_Title': 'Thousands',\r\n 'DisplayUnitSystem_E6_LabelFormat': '{0}M',\r\n 'DisplayUnitSystem_E6_Title': 'Millions',\r\n 'DisplayUnitSystem_E9_LabelFormat': '{0}bn',\r\n 'DisplayUnitSystem_E9_Title': 'Billions',\r\n 'DisplayUnitSystem_E12_LabelFormat': '{0}T',\r\n 'DisplayUnitSystem_E12_Title': 'Trillions',\r\n 'Percentage': '#,0.##%',\r\n 'Percentage1': '#,0.#%',\r\n 'RichTextbox_Link_DefaultText': 'Link',\r\n 'TableTotalLabel': 'Total',\r\n 'Tooltip_HighlightedValueDisplayName': 'Highlighted',\r\n 'Funnel_PercentOfFirst': 'Percent of first',\t\r\n 'Funnel_PercentOfPrevious': 'Percent of previous',\r\n 'Funnel_PercentOfFirst_Highlight': 'Percent of first (highlight)',\r\n 'Funnel_PercentOfPrevious_Highlight': 'Percent of previous (highlight)',\r\n // Geotagging strings\r\n 'GeotaggingString_Continent': 'continent',\r\n 'GeotaggingString_Continents': 'continents',\r\n 'GeotaggingString_Country': 'country',\r\n 'GeotaggingString_Countries': 'countries',\r\n 'GeotaggingString_State': 'state',\r\n 'GeotaggingString_States': 'states',\r\n 'GeotaggingString_City': 'city',\r\n 'GeotaggingString_Cities': 'cities',\r\n 'GeotaggingString_Town': 'town',\r\n 'GeotaggingString_Towns': 'towns',\r\n 'GeotaggingString_Province': 'province',\r\n 'GeotaggingString_Provinces': 'provinces',\r\n 'GeotaggingString_County': 'county',\r\n 'GeotaggingString_Counties': 'counties',\r\n 'GeotaggingString_Village': 'village',\r\n 'GeotaggingString_Villages': 'villages',\r\n 'GeotaggingString_Post': 'post',\r\n 'GeotaggingString_Zip': 'zip',\r\n 'GeotaggingString_Code': 'code',\r\n 'GeotaggingString_Place': 'place',\r\n 'GeotaggingString_Places': 'places',\r\n 'GeotaggingString_Address': 'address',\r\n 'GeotaggingString_Addresses': 'addresses',\r\n 'GeotaggingString_Street': 'street',\r\n 'GeotaggingString_Streets': 'streets',\r\n 'GeotaggingString_Longitude': 'longitude',\r\n 'GeotaggingString_Longitude_Short': 'lon',\r\n 'GeotaggingString_Latitude': 'latitude',\r\n 'GeotaggingString_Latitude_Short': 'lat',\r\n 'GeotaggingString_PostalCode': 'postal code',\r\n 'GeotaggingString_PostalCodes': 'postal codes',\r\n 'GeotaggingString_ZipCode': 'zip code',\r\n 'GeotaggingString_ZipCodes': 'zip codes',\r\n 'GeotaggingString_Territory': 'territory',\r\n 'GeotaggingString_Territories': 'territories',\r\n 'Waterfall_IncreaseLabel': 'Increase',\r\n 'Waterfall_DecreaseLabel': 'Decrease',\r\n 'Waterfall_TotalLabel': 'Total',\r\n 'Slicer_SelectAll': 'Select All',\r\n };\r\n\r\n export class DefaultVisualHostServices implements IVisualHostServices {\r\n // TODO: Add locale-awareness to this host service. Currently default/english functionality only.\r\n public static initialize(): void {\r\n visuals.valueFormatter.setLocaleOptions(DefaultVisualHostServices.createLocaleOptions());\r\n visuals.TooltipManager.setLocalizedStrings(DefaultVisualHostServices.createTooltipLocaleOptions());\r\n }\r\n \r\n /**\r\n * Create locale options.\r\n * \r\n * Note: Public for testability.\r\n */\r\n public static createLocaleOptions(): visuals.ValueFormatterLocalizationOptions {\r\n return {\r\n null: defaultLocalizedStrings['NullValue'],\r\n true: defaultLocalizedStrings['BooleanTrue'],\r\n false: defaultLocalizedStrings['BooleanFalse'],\r\n NaN: defaultLocalizedStrings['NaNValue'],\r\n infinity: defaultLocalizedStrings['InfinityValue'],\r\n negativeInfinity: defaultLocalizedStrings['NegativeInfinityValue'],\r\n beautify: format => DefaultVisualHostServices.beautify(format),\r\n describe: exponent => DefaultVisualHostServices.describeUnit(exponent),\r\n restatementComma: defaultLocalizedStrings['Restatement_Comma'],\r\n restatementCompoundAnd: defaultLocalizedStrings['Restatement_CompoundAnd'],\r\n restatementCompoundOr: defaultLocalizedStrings['Restatement_CompoundOr']\r\n };\r\n }\r\n\r\n public static createTooltipLocaleOptions(): powerbi.visuals.TooltipLocalizationOptions {\r\n return {\r\n highlightedValueDisplayName: defaultLocalizedStrings['Tooltip_HighlightedValueDisplayName']\r\n };\r\n }\r\n\r\n public getLocalizedString(stringId: string): string {\r\n return defaultLocalizedStrings[stringId];\r\n }\r\n\r\n // NO-OP IHostServices methods\r\n public onDragStart(): void { }\r\n public canSelect(): boolean { return false; }\r\n public onSelect(): void { }\r\n public loadMoreData(): void { }\r\n public persistProperties(changes: VisualObjectInstance[] | VisualObjectInstancesToPersist): void { }\r\n public onCustomSort(args: CustomSortEventArgs) { }\r\n public getViewMode(): powerbi.ViewMode { return ViewMode.View; }\r\n public setWarnings(warnings: IVisualWarning[]): void { }\r\n public setToolbar($toolbar: JQuery): void { }\r\n public shouldRetainSelection(): boolean { return false; }\r\n public geocoder(): IGeocoder { return services.createGeocoder(); }\r\n public promiseFactory(): IPromiseFactory { return createJQueryPromiseFactory(); }\r\n public analyzeFilter(options: FilterAnalyzerOptions): AnalyzedFilter {\r\n return {\r\n isNotFilter: false,\r\n selectedIdentities: [],\r\n filter: undefined,\r\n defaultValue: undefined,\r\n };\r\n }\r\n private static beautify(format: string): string {\r\n let key = BeautifiedFormat[format];\r\n if (key)\r\n return defaultLocalizedStrings[key] || format;\r\n return format;\r\n }\r\n\r\n private static describeUnit(exponent: number): DisplayUnitSystemNames {\r\n let exponentLookup = (exponent === -1) ? 'Auto' : exponent.toString();\r\n\r\n let title: string = defaultLocalizedStrings[\"DisplayUnitSystem_E\" + exponentLookup + \"_Title\"];\r\n let format: string = (exponent <= 0) ? '{0}' : defaultLocalizedStrings[\"DisplayUnitSystem_E\" + exponentLookup + \"_LabelFormat\"];\r\n\r\n if (title || format)\r\n return { title: title, format: format };\r\n }\r\n }\r\n\r\n export const defaultVisualHostServices: IVisualHostServices = new DefaultVisualHostServices();\r\n} ","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n import ArrayExtensions = jsCommon.ArrayExtensions;\r\n\r\n export interface SelectableDataPoint {\r\n selected: boolean;\r\n identity: SelectionId;\r\n }\r\n\r\n /**\r\n * Factory method to create an IInteractivityService instance.\r\n */\r\n export function createInteractivityService(hostServices: IVisualHostServices): IInteractivityService {\r\n return new InteractivityService(hostServices);\r\n }\r\n\r\n /**\r\n * Creates a clear an svg rect to catch clear clicks.\r\n */\r\n export function appendClearCatcher(selection: D3.Selection): D3.Selection {\r\n return selection\r\n .append(\"rect\")\r\n .classed(\"clearCatcher\", true)\r\n .attr({ width: \"100%\", height: \"100%\" });\r\n }\r\n\r\n export function isCategoryColumnSelected(propertyId: DataViewObjectPropertyIdentifier, categories: DataViewCategoricalColumn, idx: number): boolean {\r\n return categories.objects != null\r\n && categories.objects[idx]\r\n && DataViewObjects.getValue<boolean>(categories.objects[idx], propertyId);\r\n }\r\n\r\n export function dataHasSelection(data: SelectableDataPoint[]): boolean {\r\n for (let i = 0, ilen = data.length; i < ilen; i++) {\r\n if (data[i].selected)\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n export interface IInteractiveBehavior {\r\n bindEvents(behaviorOptions: any, selectionHandler: ISelectionHandler): void;\r\n renderSelection(hasSelection: boolean): void;\r\n }\r\n\r\n /**\r\n * An optional options bag for binding to the interactivityService\r\n */\r\n export interface InteractivityServiceOptions {\r\n isLegend?: boolean;\r\n isLabels?: boolean;\r\n overrideSelectionFromData?: boolean;\r\n hasSelectionOverride?: boolean;\r\n slicerDefaultValueHandler?: SlicerDefaultValueHandler;\r\n }\r\n\r\n /**\r\n * Responsible for managing interactivity between the hosting visual and its peers\r\n */\r\n export interface IInteractivityService {\r\n /** Binds the visual to the interactivityService */\r\n bind(dataPoints: SelectableDataPoint[], behavior: IInteractiveBehavior, behaviorOptions: any, iteractivityServiceOptions?: InteractivityServiceOptions);\r\n\r\n /** Clears the selection */\r\n clearSelection(): void;\r\n\r\n /** Sets the selected state on the given data points. */\r\n applySelectionStateToData(dataPoints: SelectableDataPoint[]): boolean;\r\n\r\n /** Checks whether there is at least one item selected */\r\n hasSelection(): boolean;\r\n\r\n /** Checks whether there is at least one item selected within the legend */\r\n legendHasSelection(): boolean;\r\n\r\n /** Checks whether the selection mode is inverted or normal */\r\n isSelectionModeInverted(): boolean;\r\n\r\n /** Sets whether the selection mode is inverted or normal */\r\n setSelectionModeInverted(inverted: boolean): void;\r\n\r\n setDefaultValueMode(useDefaultValue: boolean): void;\r\n\r\n isDefaultValueEnabled(): boolean;\r\n }\r\n\r\n export interface ISelectionHandler {\r\n /** Handles a selection event by selecting the given data point */\r\n handleSelection(dataPoint: SelectableDataPoint, multiSelect: boolean): void;\r\n\r\n /** Handles a selection clear, clearing all selection state */\r\n handleClearSelection(): void;\r\n\r\n /** Toggles the selection mode between normal and inverted; returns true if the new mode is inverted */\r\n toggleSelectionModeInversion(): boolean;\r\n\r\n /** Sends the selection state to the host */\r\n persistSelectionFilter(filterPropertyIdentifier: DataViewObjectPropertyIdentifier): void;\r\n }\r\n\r\n export class InteractivityService implements IInteractivityService, ISelectionHandler {\r\n // References\r\n private hostService: IVisualHostServices;\r\n private renderSelectionInVisual = _.noop;\r\n private renderSelectionInLegend = _.noop;\r\n private renderSelectionInLabels = _.noop;\r\n\r\n // Selection state\r\n private selectedIds: SelectionId[] = [];\r\n private isInvertedSelectionMode: boolean = false;\r\n private hasSelectionOverride: boolean;\r\n private behavior: any;\r\n private slicerDefaultValueHandler: SlicerDefaultValueHandler;\r\n\r\n // undefined means no default value is set\r\n // True: apply default value. False: apply AnyValue.\r\n private useDefaultValue: boolean;\r\n\r\n public selectableDataPoints: SelectableDataPoint[];\r\n public selectableLegendDataPoints: SelectableDataPoint[];\r\n public selectableLabelsDataPoints: SelectableDataPoint[];\r\n\r\n constructor(hostServices: IVisualHostServices) {\r\n debug.assertValue(hostServices, 'hostServices');\r\n\r\n this.hostService = hostServices;\r\n }\r\n\r\n // IInteractivityService Implementation\r\n\r\n /** Binds the vsiual to the interactivityService */\r\n public bind(dataPoints: SelectableDataPoint[], behavior: IInteractiveBehavior, behaviorOptions: any, options?: InteractivityServiceOptions): void {\r\n // Bind the data\r\n if (options && options.overrideSelectionFromData) {\r\n // Override selection state from data points if needed\r\n this.takeSelectionStateFromDataPoints(dataPoints);\r\n }\r\n if (options){\r\n if (options.isLegend) {\r\n // Bind to legend data instead of normal data if isLegend\r\n this.selectableLegendDataPoints = dataPoints;\r\n this.renderSelectionInLegend = () => behavior.renderSelection(this.legendHasSelection());\r\n }\r\n else if (options.isLabels) {\r\n //Bind to label data instead of normal data if isLabels\r\n this.selectableLabelsDataPoints = dataPoints;\r\n this.renderSelectionInLabels = () => behavior.renderSelection(this.labelsHasSelection());\r\n }\r\n else {\r\n this.selectableDataPoints = dataPoints;\r\n this.renderSelectionInVisual = () => behavior.renderSelection(this.hasSelection());\r\n }\r\n if (options.hasSelectionOverride != null) {\r\n this.hasSelectionOverride = options.hasSelectionOverride;\r\n }\r\n if (options.slicerDefaultValueHandler) {\r\n this.slicerDefaultValueHandler = options.slicerDefaultValueHandler;\r\n }\r\n } \r\n else {\r\n this.selectableDataPoints = dataPoints;\r\n this.renderSelectionInVisual = () => behavior.renderSelection(this.hasSelection());\r\n }\r\n\r\n // Bind to the behavior\r\n this.behavior = behavior;\r\n behavior.bindEvents(behaviorOptions, this);\r\n // Sync data points with current selection state\r\n this.syncSelectionState();\r\n }\r\n\r\n /**\r\n * Sets the selected state of all selectable data points to false and invokes the behavior's select command.\r\n */\r\n public clearSelection(): void {\r\n // if default value is already applied, don't clear the default selection\r\n if (this.slicerDefaultValueHandler && this.slicerDefaultValueHandler.getDefaultValue() && this.useDefaultValue)\r\n return;\r\n\r\n this.hasSelectionOverride = undefined;\r\n ArrayExtensions.clear(this.selectedIds);\r\n this.isInvertedSelectionMode = false;\r\n this.applyToAllSelectableDataPoints((dataPoint: SelectableDataPoint) => dataPoint.selected = false);\r\n this.renderAll();\r\n }\r\n\r\n public applySelectionStateToData(dataPoints: SelectableDataPoint[]): boolean {\r\n for (let dataPoint of dataPoints) {\r\n dataPoint.selected = InteractivityService.checkDatapointAgainstSelectedIds(dataPoint, this.selectedIds);\r\n }\r\n\r\n return this.hasSelection();\r\n }\r\n\r\n /**\r\n * Checks whether there is at least one item selected.\r\n */\r\n public hasSelection(): boolean {\r\n return this.selectedIds.length > 0;\r\n }\r\n\r\n public legendHasSelection(): boolean {\r\n return this.selectableLegendDataPoints ? dataHasSelection(this.selectableLegendDataPoints) : false;\r\n }\r\n\r\n public labelsHasSelection(): boolean {\r\n return this.selectableLabelsDataPoints ? dataHasSelection(this.selectableLabelsDataPoints) : false;\r\n }\r\n\r\n public isSelectionModeInverted(): boolean {\r\n return this.isInvertedSelectionMode;\r\n }\r\n\r\n public setSelectionModeInverted(inverted: boolean): void {\r\n this.isInvertedSelectionMode = inverted;\r\n }\r\n\r\n // ISelectionHandler Implementation\r\n\r\n public handleSelection(dataPoint: SelectableDataPoint, multiSelect: boolean): void {\r\n this.useDefaultValue = false;\r\n this.select(dataPoint, multiSelect);\r\n this.sendSelectionToHost();\r\n this.renderAll();\r\n }\r\n\r\n public handleClearSelection(): void {\r\n this.useDefaultValue = true;\r\n this.clearSelection();\r\n this.sendSelectionToHost();\r\n }\r\n\r\n public toggleSelectionModeInversion(): boolean {\r\n this.useDefaultValue = false;\r\n this.isInvertedSelectionMode = !this.isInvertedSelectionMode;\r\n ArrayExtensions.clear(this.selectedIds);\r\n this.applyToAllSelectableDataPoints((dataPoint: SelectableDataPoint) => dataPoint.selected = false);\r\n this.sendSelectionToHost();\r\n this.isInvertedSelectionMode ? this.syncSelectionStateInverted() : this.syncSelectionState();\r\n this.renderAll();\r\n return this.isInvertedSelectionMode;\r\n }\r\n\r\n public persistSelectionFilter(filterPropertyIdentifier: DataViewObjectPropertyIdentifier): void {\r\n this.hostService.persistProperties(this.createChangeForFilterProperty(filterPropertyIdentifier));\r\n }\r\n\r\n public setDefaultValueMode(useDefaultValue: boolean): void {\r\n this.useDefaultValue = useDefaultValue;\r\n }\r\n\r\n public isDefaultValueEnabled(): boolean {\r\n return this.useDefaultValue;\r\n }\r\n\r\n // Private utility methods\r\n\r\n private renderAll(): void {\r\n this.renderSelectionInVisual();\r\n this.renderSelectionInLegend();\r\n this.renderSelectionInLabels();\r\n }\r\n\r\n /** Marks a data point as selected and syncs selection with the host. */\r\n private select(d: SelectableDataPoint, multiSelect: boolean): void {\r\n // If we're in inverted mode, use the invertedSelect instead\r\n if (this.isInvertedSelectionMode) {\r\n return this.selectInverted(d, multiSelect);\r\n }\r\n\r\n // For highlight data points we actually want to select the non-highlight data point\r\n if (d.identity.highlight) {\r\n d = _.find(this.selectableDataPoints, (dp: SelectableDataPoint) => !dp.identity.highlight && d.identity.includes(dp.identity, /* ignoreHighlight */ true));\r\n debug.assertValue(d, 'Expected to find a non-highlight data point');\r\n }\r\n\r\n let id = d.identity;\r\n\r\n if (!id)\r\n return;\r\n\r\n let selected = !d.selected || (!multiSelect && this.selectedIds.length > 1);\r\n\r\n // If we have a multiselect flag, we attempt a multiselect\r\n if (multiSelect) {\r\n if (selected) {\r\n d.selected = true;\r\n this.selectedIds.push(id);\r\n }\r\n else {\r\n d.selected = false;\r\n this.removeId(id);\r\n }\r\n }\r\n // We do a single select if we didn't do a multiselect or if we find out that the multiselect is invalid.\r\n if (!multiSelect || !this.hostService.canSelect({ data: this.selectedIds.map((value: SelectionId) => value.getSelector()) })) {\r\n this.clearSelection();\r\n if (selected) {\r\n d.selected = true;\r\n this.selectedIds.push(id);\r\n }\r\n }\r\n\r\n this.syncSelectionState();\r\n }\r\n\r\n private selectInverted(d: SelectableDataPoint, multiSelect: boolean): void {\r\n let wasSelected = d.selected;\r\n let id = d.identity;\r\n debug.assert(!!multiSelect, \"inverted selections are only supported in multiselect mode\");\r\n\r\n // the current datapoint state has to be inverted\r\n d.selected = !wasSelected;\r\n\r\n if (wasSelected)\r\n this.removeId(id);\r\n else \r\n this.selectedIds.push(id);\r\n\r\n this.syncSelectionStateInverted();\r\n }\r\n\r\n private removeId(toRemove: SelectionId): void {\r\n let selectedIds = this.selectedIds;\r\n for (let i = selectedIds.length - 1; i > -1; i--) {\r\n let currentId = selectedIds[i];\r\n\r\n if (toRemove.includes(currentId))\r\n selectedIds.splice(i, 1);\r\n }\r\n }\r\n\r\n /** Note: Public for UnitTesting */\r\n public createChangeForFilterProperty(filterPropertyIdentifier: DataViewObjectPropertyIdentifier): VisualObjectInstancesToPersist {\r\n let properties: { [propertyName: string]: DataViewPropertyValue } = {};\r\n let selectors: data.Selector[] = [];\r\n\r\n if (this.selectedIds.length > 0) {\r\n selectors = _.chain(this.selectedIds)\r\n .filter((value: SelectionId) => value.hasIdentity())\r\n .map((value: SelectionId) => value.getSelector())\r\n .value();\r\n }\r\n\r\n let instance = {\r\n objectName: filterPropertyIdentifier.objectName,\r\n selector: undefined,\r\n properties: properties\r\n };\r\n\r\n let filter = powerbi.data.Selector.filterFromSelector(selectors, this.isInvertedSelectionMode);\r\n\r\n if (this.slicerDefaultValueHandler && this.slicerDefaultValueHandler.getDefaultValue()) {\r\n // we explicitly check for true/false because undefine means no default value\r\n if (this.useDefaultValue === true)\r\n filter = powerbi.data.SemanticFilter.getDefaultValueFilter(this.slicerDefaultValueHandler.getIdentityFields());\r\n else if (_.isEmpty(selectors))\r\n filter = powerbi.data.SemanticFilter.getAnyValueFilter(this.slicerDefaultValueHandler.getIdentityFields());\r\n }\r\n\r\n if (filter == null) {\r\n properties[filterPropertyIdentifier.propertyName] = {};\r\n return <VisualObjectInstancesToPersist> {\r\n remove: [instance]\r\n };\r\n }\r\n else {\r\n properties[filterPropertyIdentifier.propertyName] = filter;\r\n return <VisualObjectInstancesToPersist> {\r\n merge: [instance]\r\n };\r\n }\r\n }\r\n\r\n private sendSelectionToHost() {\r\n let host = this.hostService;\r\n if (host.onSelect) {\r\n let selectArgs: SelectEventArgs = {\r\n data: this.selectedIds.filter((value: SelectionId) => value.hasIdentity()).map((value: SelectionId) => value.getSelector())\r\n };\r\n\r\n let data2: SelectorsByColumn[] = this.selectedIds.filter((value: SelectionId) => value.getSelectorsByColumn() && value.hasIdentity()).map((value: SelectionId) => value.getSelectorsByColumn());\r\n\r\n if (data2 && data2.length > 0)\r\n selectArgs.data2 = data2;\r\n\r\n host.onSelect(selectArgs);\r\n }\r\n }\r\n\r\n private takeSelectionStateFromDataPoints(dataPoints: SelectableDataPoint[]): void {\r\n debug.assertValue(dataPoints, \"dataPoints\");\r\n\r\n let selectedIds: SelectionId[] = this.selectedIds;\r\n\r\n // Replace the existing selectedIds rather than merging.\r\n ArrayExtensions.clear(selectedIds);\r\n\r\n for (let dataPoint of dataPoints) {\r\n if (dataPoint.selected)\r\n selectedIds.push(dataPoint.identity);\r\n }\r\n }\r\n\r\n /**\r\n * Syncs the selection state for all data points that have the same category. Returns\r\n * true if the selection state was out of sync and corrections were made; false if\r\n * the data is already in sync with the service.\r\n *\r\n * If the data is not compatible with the current service's current selection state,\r\n * the state is cleared and the cleared selection is sent to the host.\r\n * \r\n * Ignores series for now, since we don't support series selection at the moment.\r\n */\r\n private syncSelectionState(): void {\r\n if (this.isInvertedSelectionMode) {\r\n return this.syncSelectionStateInverted();\r\n }\r\n\r\n let selectedIds = this.selectedIds;\r\n let selectableDataPoints = this.selectableDataPoints;\r\n let selectableLegendDataPoints = this.selectableLegendDataPoints;\r\n let selectableLabelsDataPoints = this.selectableLabelsDataPoints;\r\n let foundMatchingId = false; // Checked only against the visual's data points; it's possible to have stuff selected in the visual that's not in the legend, but not vice-verse\r\n\r\n if (!selectableDataPoints && !selectableLegendDataPoints)\r\n return;\r\n\r\n if (selectableDataPoints) {\r\n if (InteractivityService.updateSelectableDataPointsBySelectedIds(selectableDataPoints, selectedIds))\r\n foundMatchingId = true;\r\n }\r\n\r\n if (selectableLegendDataPoints) {\r\n if (InteractivityService.updateSelectableDataPointsBySelectedIds(selectableLegendDataPoints, selectedIds))\r\n foundMatchingId = true;\r\n }\r\n\r\n if (selectableLabelsDataPoints) {\r\n let labelsDataPoint: SelectableDataPoint;\r\n for (let i = 0, ilen = selectableLabelsDataPoints.length; i < ilen; i++) {\r\n labelsDataPoint = selectableLabelsDataPoints[i];\r\n if (selectedIds.some((value: SelectionId) => value.includes(labelsDataPoint.identity)))\r\n labelsDataPoint.selected = true;\r\n else\r\n labelsDataPoint.selected = false;\r\n }\r\n }\r\n\r\n if (!foundMatchingId && selectedIds.length > 0) {\r\n this.clearSelection();\r\n this.sendSelectionToHost();\r\n }\r\n }\r\n\r\n private syncSelectionStateInverted(): void {\r\n let selectedIds = this.selectedIds;\r\n let selectableDataPoints = this.selectableDataPoints;\r\n if (!selectableDataPoints)\r\n return;\r\n\r\n if (selectedIds.length === 0) {\r\n for (let dataPoint of selectableDataPoints) {\r\n dataPoint.selected = false;\r\n }\r\n }\r\n else {\r\n for (var dataPoint of selectableDataPoints) {\r\n if (selectedIds.some((value: SelectionId) => value.includes(dataPoint.identity)))\r\n dataPoint.selected = true;\r\n else if (dataPoint.selected)\r\n dataPoint.selected = false;\r\n }\r\n }\r\n }\r\n\r\n private applyToAllSelectableDataPoints(action: (selectableDataPoint: SelectableDataPoint) => void) {\r\n let selectableDataPoints = this.selectableDataPoints;\r\n let selectableLegendDataPoints = this.selectableLegendDataPoints;\r\n let selectableLabelsDataPoints = this.selectableLabelsDataPoints;\r\n if (selectableDataPoints) {\r\n for (let dataPoint of selectableDataPoints) {\r\n action(dataPoint);\r\n }\r\n }\r\n\r\n if (selectableLegendDataPoints) {\r\n for (let dataPoint of selectableLegendDataPoints) {\r\n action(dataPoint);\r\n }\r\n }\r\n\r\n if (selectableLabelsDataPoints) {\r\n for (let dataPoint of selectableLabelsDataPoints) {\r\n action(dataPoint);\r\n }\r\n }\r\n }\r\n\r\n private static updateSelectableDataPointsBySelectedIds(selectableDataPoints: SelectableDataPoint[], selectedIds: SelectionId[]): boolean {\r\n let foundMatchingId = false;\r\n\r\n for (let datapoint of selectableDataPoints) {\r\n datapoint.selected = InteractivityService.checkDatapointAgainstSelectedIds(datapoint, selectedIds);\r\n\r\n if (datapoint.selected)\r\n foundMatchingId = true;\r\n }\r\n\r\n return foundMatchingId;\r\n }\r\n\r\n private static checkDatapointAgainstSelectedIds(datapoint: SelectableDataPoint, selectedIds: SelectionId[]): boolean {\r\n return selectedIds.some((value: SelectionId) => value.includes(datapoint.identity));\r\n }\r\n };\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals.services {\r\n import CategoryTypes = MapUtil.CategoryTypes;\r\n import Settings = MapUtil.Settings;\r\n\r\n export function createGeocoder(): IGeocoder {\r\n return {\r\n geocode: geocode,\r\n geocodeBoundary: geocodeBoundary,\r\n };\r\n }\r\n\r\n export interface BingAjaxService {\r\n (url: string, settings: JQueryAjaxSettings): any;\r\n }\r\n export const safeCharacters: string = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_-\";\r\n \r\n /** Note: Used for test mockup */\r\n export let BingAjaxCall: BingAjaxService = $.ajax;\r\n\r\n export const CategoryTypeArray = [\r\n \"Address\",\r\n \"City\",\r\n \"Continent\",\r\n \"Country\",\r\n \"County\",\r\n \"Longitude\",\r\n \"Latitude\",\r\n \"Place\",\r\n \"PostalCode\",\r\n \"StateOrProvince\"\r\n ];\r\n\r\n export function isCategoryType(value: string): boolean {\r\n return CategoryTypeArray.indexOf(value) > -1;\r\n }\r\n\r\n export const BingEntities = {\r\n Continent: \"Continent\",\r\n Sovereign: \"Sovereign\",\r\n CountryRegion: \"CountryRegion\",\r\n AdminDivision1: \"AdminDivision1\",\r\n AdminDivision2: \"AdminDivision2\",\r\n PopulatedPlace: \"PopulatedPlace\",\r\n Postcode: \"Postcode\",\r\n Postcode1: \"Postcode1\",\r\n Neighborhood: \"Neighborhood\",\r\n Address: \"Address\",\r\n };\r\n\r\n export interface ILocation {\r\n latitude: number;\r\n longitude: number;\r\n }\r\n\r\n export interface ILocationRect {\r\n northWest: ILocation;\r\n southEast: ILocation;\r\n }\r\n\r\n export interface GeocodeCallback {\r\n (error: Error, coordinate: IGeocodeCoordinate): void;\r\n }\r\n\r\n export interface IGeocodeQuery {\r\n query: string;\r\n category: string;\r\n levelOfDetail?: number;\r\n longitude?: number;\r\n latitude?: number;\r\n }\r\n\r\n interface IGeocodeQueueItem {\r\n query: GeocodeQuery;\r\n deferred: any;\r\n }\r\n\r\n // Static variables for caching, maps, etc\r\n let geocodeQueue: IGeocodeQueueItem[];\r\n let activeRequests;\r\n let categoryToBingEntity: { [key: string]: string; };\r\n let categoryToBingEntityGeodata: { [key: string]: string; };\r\n let geocodingCache: IGeocodingCache;\r\n\r\n export class GeocodeQuery implements IGeocodeQuery {\r\n public query: string;\r\n public category: string;\r\n public key: string;\r\n private cacheHits: number;\r\n\r\n constructor(query: string, category: string) {\r\n this.query = query != null ? query : \"\";\r\n this.category = category != null ? category : \"\";\r\n this.key = (this.query + \"/\" + this.category).toLowerCase();\r\n this.cacheHits = 0;\r\n if (!geocodingCache) {\r\n geocodingCache = createGeocodingCache(Settings.MaxCacheSize, Settings.MaxCacheSizeOverflow);\r\n }\r\n }\r\n\r\n public incrementCacheHit(): void {\r\n this.cacheHits++;\r\n }\r\n\r\n public getCacheHits(): number {\r\n return this.cacheHits;\r\n }\r\n\r\n public getBingEntity(): string {\r\n let category = this.category.toLowerCase();\r\n if (!categoryToBingEntity) {\r\n categoryToBingEntity = {};\r\n categoryToBingEntity[CategoryTypes.Continent.toLowerCase()] = BingEntities.Continent;\r\n categoryToBingEntity[CategoryTypes.CountryRegion.toLowerCase()] = BingEntities.Sovereign;\r\n categoryToBingEntity[CategoryTypes.StateOrProvince.toLowerCase()] = BingEntities.AdminDivision1;\r\n categoryToBingEntity[CategoryTypes.County.toLowerCase()] = BingEntities.AdminDivision2;\r\n categoryToBingEntity[CategoryTypes.City.toLowerCase()] = BingEntities.PopulatedPlace;\r\n categoryToBingEntity[CategoryTypes.PostalCode.toLowerCase()] = BingEntities.Postcode;\r\n categoryToBingEntity[CategoryTypes.Address.toLowerCase()] = BingEntities.Address;\r\n }\r\n return categoryToBingEntity[category] || \"\";\r\n }\r\n\r\n public getUrl(): string {\r\n let url = Settings.BingUrl + \"key=\" + Settings.BingKey;\r\n let entityType = this.getBingEntity();\r\n let queryAdded = false;\r\n if (entityType) {\r\n if (entityType === BingEntities.Postcode) {\r\n url += \"&includeEntityTypes=Postcode,Postcode1,Postcode2,Postcode3,Postcode4\";\r\n }\r\n else if (this.query.indexOf(\",\") === -1 && (entityType === BingEntities.AdminDivision1 || entityType === BingEntities.AdminDivision2)) {\r\n queryAdded = true;\r\n try {\r\n url += \"&adminDistrict=\" + decodeURIComponent(this.query);\r\n } catch (e) {\r\n return null;\r\n }\r\n }\r\n else {\r\n url += \"&includeEntityTypes=\" + entityType;\r\n }\r\n }\r\n\r\n if (!queryAdded) {\r\n try {\r\n url += \"&q=\" + decodeURIComponent(this.query);\r\n } catch (e) {\r\n return null;\r\n }\r\n }\r\n\r\n let cultureName = navigator.userLanguage || navigator[\"language\"];\r\n cultureName = mapLocalesForBing(cultureName);\r\n if (cultureName) {\r\n url += \"&c=\" + cultureName;\r\n }\r\n\r\n url += \"&maxRes=20\";\r\n\r\n // If the query is of length 2, request the ISO 2-letter country code to be returned with the result to be compared against the query so that such results can be preferred.\r\n if (this.query.length === 2 && this.category === CategoryTypes.CountryRegion) {\r\n url += \"&include=ciso2\";\r\n }\r\n\r\n return url;\r\n }\r\n }\r\n\r\n export class GeocodeBoundaryQuery extends GeocodeQuery {\r\n public latitude: number;\r\n public longitude: number;\r\n public levelOfDetail: number;\r\n public maxGeoData: number;\r\n\r\n constructor(latitude: number, longitude: number, category, levelOfDetail, maxGeoData = 3) {\r\n super([latitude, longitude, levelOfDetail, maxGeoData].join(\",\"), category);\r\n this.latitude = latitude;\r\n this.longitude = longitude;\r\n this.levelOfDetail = levelOfDetail;\r\n this.maxGeoData = maxGeoData;\r\n }\r\n\r\n public getBingEntity(): string {\r\n let category = this.category.toLowerCase();\r\n if (!categoryToBingEntityGeodata) {\r\n categoryToBingEntityGeodata = {};\r\n categoryToBingEntityGeodata[CategoryTypes.CountryRegion.toLowerCase()] = BingEntities.CountryRegion;\r\n categoryToBingEntityGeodata[CategoryTypes.StateOrProvince.toLowerCase()] = BingEntities.AdminDivision1;\r\n categoryToBingEntityGeodata[CategoryTypes.County.toLowerCase()] = BingEntities.AdminDivision2;\r\n categoryToBingEntityGeodata[CategoryTypes.City.toLowerCase()] = BingEntities.PopulatedPlace;\r\n categoryToBingEntityGeodata[CategoryTypes.PostalCode.toLowerCase()] = BingEntities.Postcode1;\r\n }\r\n return categoryToBingEntityGeodata[category] || \"\";\r\n }\r\n\r\n public getUrl(): string {\r\n let url = Settings.BingUrlGeodata + \"key=\" + Settings.BingKey + \"&$format=json\";\r\n let entityType = this.getBingEntity();\r\n if (!entityType) {\r\n return null;\r\n }\r\n\r\n let cultureName = navigator.userLanguage || navigator[\"language\"];\r\n cultureName = mapLocalesForBing(cultureName);\r\n let cultures = cultureName.split(\"-\");\r\n let data = [this.latitude, this.longitude, this.levelOfDetail, \"'\" + entityType + \"'\", 1, 0, \"'\" + cultureName + \"'\"];\r\n if (cultures.length > 1) {\r\n data.push(\"'\" + cultures[1] + \"'\");\r\n }\r\n return url + \"&SpatialFilter=GetBoundary(\" + data.join(\", \") + \")\";\r\n }\r\n }\r\n\r\n /**\r\n * Map locales that cause failures to similar locales that work\r\n */\r\n function mapLocalesForBing(locale: string): string {\r\n switch (locale.toLowerCase()) {\r\n case 'fr': // Bing gives a 404 error when this language code is used (fr is only obtained from Chrome). Use fr-FR for a near-identical version that works. Defect # 255717 opened with Bing.\r\n return 'fr-FR';\r\n default:\r\n return locale;\r\n }\r\n }\r\n\r\n export function geocodeCore(geocodeQuery: GeocodeQuery): any {\r\n let result = geocodingCache ? geocodingCache.getCoordinates(geocodeQuery) : undefined;\r\n let deferred = $.Deferred();\r\n\r\n if (result) {\r\n deferred.resolve(result);\r\n } else {\r\n geocodeQueue.push({ query: geocodeQuery, deferred: deferred });\r\n dequeue();\r\n }\r\n return deferred;\r\n }\r\n\r\n export function geocode(query: string, category: string = \"\"): any {\r\n return geocodeCore(new GeocodeQuery(query, category));\r\n }\r\n\r\n export function geocodeBoundary(latitude: number, longitude: number, category: string = \"\", levelOfDetail: number = 2, maxGeoData: number = 3): any {\r\n return geocodeCore(new GeocodeBoundaryQuery(latitude, longitude, category, levelOfDetail, maxGeoData));\r\n }\r\n\r\n function dequeue(decrement: number = 0) {\r\n activeRequests -= decrement;\r\n while (activeRequests < Settings.MaxBingRequest) {\r\n\r\n if (geocodeQueue.length === 0) {\r\n break;\r\n }\r\n\r\n activeRequests++;\r\n makeRequest(geocodeQueue.shift());\r\n }\r\n }\r\n\r\n function makeRequest(item: IGeocodeQueueItem) {\r\n\r\n // Check again if we already got the coordinate;\r\n let result = geocodingCache ? geocodingCache.getCoordinates(item.query) : undefined;\r\n if (result) {\r\n setTimeout(() => dequeue(1));\r\n item.deferred.resolve(result);\r\n return;\r\n }\r\n\r\n // Unfortunately the Bing service doesn't support CORS, only jsonp. This issue must be raised and revised.\r\n // VSTS: 1396088 - Tracking: Ask: Bing geocoding to support CORS\r\n let config: JQueryAjaxSettings = {\r\n type: \"GET\",\r\n dataType: \"jsonp\",\r\n jsonp: \"jsonp\"\r\n };\r\n\r\n let url = item.query.getUrl();\r\n if (!url) {\r\n completeRequest(item, new Error(\"Unsupported query. \" + item.query.query));\r\n }\r\n\r\n BingAjaxCall(url, config).then(\r\n (data) => {\r\n try {\r\n if (item.query instanceof GeocodeBoundaryQuery) {\r\n let result = data;\r\n if (result && result.d && Array.isArray(result.d.results) && result.d.results.length > 0) {\r\n let entity = result.d.results[0];\r\n let primitives = entity.Primitives;\r\n if (primitives && primitives.length > 0) {\r\n let coordinates: IGeocodeBoundaryCoordinate = {\r\n latitude: (<GeocodeBoundaryQuery>item.query).latitude,\r\n longitude: (<GeocodeBoundaryQuery>item.query).longitude,\r\n locations: []\r\n };\r\n\r\n primitives.sort((a, b) => {\r\n if (a.Shape.length < b.Shape.length) {\r\n return 1;\r\n }\r\n if (a.Shape.length > b.Shape.length) {\r\n return -1;\r\n }\r\n return 0;\r\n });\r\n\r\n let maxGeoData = Math.min(primitives.length, (<GeocodeBoundaryQuery>item.query).maxGeoData);\r\n\r\n for (let i = 0; i < maxGeoData; i++) {\r\n let ringStr = primitives[i].Shape;\r\n let ringArray = ringStr.split(\",\");\r\n\r\n for (let j = 1; j < ringArray.length; j++) {\r\n coordinates.locations.push({ nativeBing: ringArray[j] });\r\n }\r\n }\r\n\r\n completeRequest(item, null, coordinates);\r\n }\r\n else {\r\n completeRequest(item, new Error(\"Geocode result is empty.\"));\r\n }\r\n }\r\n else {\r\n completeRequest(item, new Error(\"Geocode result is empty.\"));\r\n }\r\n }\r\n else {\r\n let resources = data.resourceSets[0].resources;\r\n if (Array.isArray(resources) && resources.length > 0) {\r\n let index = getBestResultIndex(resources, item.query);\r\n let pointData = resources[index].point.coordinates;\r\n let coordinates: IGeocodeCoordinate = {\r\n latitude: parseFloat(pointData[0]),\r\n longitude: parseFloat(pointData[1])\r\n };\r\n completeRequest(item, null, coordinates);\r\n }\r\n else {\r\n completeRequest(item, new Error(\"Geocode result is empty.\"));\r\n }\r\n }\r\n }\r\n catch (error) {\r\n completeRequest(item, error);\r\n }\r\n },\r\n (error) => {\r\n completeRequest(item, error);\r\n });\r\n }\r\n\r\n let dequeueTimeoutId;\r\n\r\n function completeRequest(item: IGeocodeQueueItem, error: Error, coordinate: IGeocodeCoordinate | IGeocodeBoundaryCoordinate = null) {\r\n dequeueTimeoutId = setTimeout(() => dequeue(1), Settings.UseDoubleArrayGeodataResult ? Settings.UseDoubleArrayDequeueTimeout : 0);\r\n\r\n if (error) {\r\n item.deferred.reject(error);\r\n }\r\n else {\r\n if (geocodingCache)\r\n geocodingCache.registerCoordinates(item.query, coordinate);\r\n item.deferred.resolve(coordinate);\r\n }\r\n }\r\n\r\n function getBestResultIndex(resources: any[], query: GeocodeQuery) {\r\n let queryString = query.query.toLowerCase();\r\n // If string is of length 2 and is a country, check against the ISO country code of results, prefering exact matches\r\n if (queryString.length === 2 && query.category === CategoryTypes.CountryRegion) {\r\n for (let index = 0; index < resources.length; index++) {\r\n let iso2: string = resources[index].address && resources[index].address.countryRegionIso2;\r\n if (iso2 && queryString === iso2.toLowerCase()) {\r\n return index;\r\n }\r\n }\r\n }\r\n // Prefer results that match the targetEntity (geotagged category) on the query\r\n let targetEntity = query.getBingEntity().toLowerCase();\r\n for (let index = 0; index < resources.length; index++) {\r\n let resultEntity = (resources[index].entityType || \"\").toLowerCase();\r\n if (resultEntity === targetEntity) {\r\n return index;\r\n }\r\n }\r\n return 0;\r\n }\r\n\r\n export function reset(): void {\r\n geocodeQueue = [];\r\n activeRequests = 0;\r\n categoryToBingEntity = null;\r\n clearTimeout(dequeueTimeoutId);\r\n }\r\n\r\n reset();\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals.services {\r\n interface IGeocodePair {\r\n query: GeocodeQuery;\r\n coordinate: IGeocodeCoordinate;\r\n }\r\n\r\n export interface IGeocodingCache {\r\n getCoordinates(query: GeocodeQuery): IGeocodeCoordinate;\r\n registerCoordinates(query: GeocodeQuery, coordinate: IGeocodeCoordinate): void;\r\n registerCoordinates(query: GeocodeQuery, coordinate: IGeocodeBoundaryCoordinate): void;\r\n }\r\n\r\n export function createGeocodingCache(maxCacheSize: number, maxCacheSizeOverflow: number): IGeocodingCache {\r\n return new GeocodingCache(maxCacheSize, maxCacheSizeOverflow);\r\n }\r\n\r\n class GeocodingCache implements IGeocodingCache {\r\n private geocodeCache: { [key: string]: IGeocodePair; };\r\n private maxCacheSize: number;\r\n private maxCacheSizeOverflow: number;\r\n\r\n constructor(maxCacheSize: number, maxCacheSizeOverflow: number) {\r\n this.geocodeCache = {};\r\n this.maxCacheSize = maxCacheSize;\r\n this.maxCacheSizeOverflow = maxCacheSizeOverflow;\r\n }\r\n \r\n /**\r\n * Retrieves the coordinate for the key from the cache, returning undefined on a cache miss.\r\n */\r\n public getCoordinates(query: GeocodeQuery): IGeocodeCoordinate {\r\n // Check in-memory cache\r\n let pair = this.geocodeCache[query.key];\r\n if (pair) {\r\n pair.query.incrementCacheHit();\r\n return pair.coordinate;\r\n }\r\n // Check local storage cache\r\n pair = localStorageService.getData(query.key);\r\n if (pair) {\r\n this.registerInMemory(query, pair.coordinate);\r\n return pair.coordinate;\r\n }\r\n return undefined;\r\n }\r\n \r\n /**\r\n * Registers the query and coordinate to the cache.\r\n */\r\n public registerCoordinates(query: GeocodeQuery, coordinate: IGeocodeCoordinate): void {\r\n this.registerInMemory(query, coordinate);\r\n this.registerInStorage(query, coordinate);\r\n }\r\n\r\n private registerInMemory(query: GeocodeQuery, coordinate: IGeocodeCoordinate): void {\r\n let geocodeCache = this.geocodeCache;\r\n let keys = Object.keys(geocodeCache);\r\n let cacheSize = keys.length;\r\n let maxCacheSize = this.maxCacheSize;\r\n\r\n if (keys.length > (maxCacheSize + this.maxCacheSizeOverflow)) {\r\n\r\n let sortedKeys = keys.sort((a: string, b: string) => {\r\n let cachedA = geocodeCache[a];\r\n let cachedB = geocodeCache[b];\r\n let ca = cachedA ? cachedA.query.getCacheHits() : 0;\r\n let cb = cachedB ? cachedB.query.getCacheHits() : 0;\r\n return ca < cb ? -1 : (ca > cb ? 1 : 0);\r\n });\r\n\r\n for (let i = 0; i < (cacheSize - maxCacheSize); i++) {\r\n geocodeCache[sortedKeys[i]] = undefined;\r\n }\r\n }\r\n\r\n geocodeCache[query.key] = { query: query, coordinate: coordinate };\r\n }\r\n\r\n private registerInStorage(query: GeocodeQuery, coordinate: IGeocodeCoordinate): void {\r\n localStorageService.setData(query.key, { query: query, coordinate: coordinate });\r\n }\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n const unsupportedVisuals: string[] = ['play', 'subview', 'smallMultiple'];\r\n\r\n export interface IVisualPluginService {\r\n getPlugin(type: string): IVisualPlugin;\r\n getVisuals(): IVisualPlugin[];\r\n capabilities(type: string): VisualCapabilities;\r\n removeAnyCustomVisuals(): void;\r\n requireSandbox(plugin: IVisualPlugin): boolean;\r\n isCustomVisual(visual: string): boolean;\r\n // VSTS 6217994 - [R Viz] Remove temporary DataViewAnalysis validation workaround of static R Script Visual mappings\r\n isScriptVisualQueryable(): boolean;\r\n shouldDisableVisual(type: string, mapDisabled: boolean): boolean;\r\n }\r\n\r\n export interface MinervaVisualFeatureSwitches {\r\n heatMap?: boolean;\r\n \r\n /**\r\n * This feature switch enables the data-dot & column combo charts.\r\n */\r\n dataDotChartEnabled?: boolean;\r\n\r\n /**\r\n * Visual should prefer to request a higher volume of data.\r\n */\r\n preferHigherDataVolume?: boolean;\r\n\r\n /**\r\n * Is data label per series enabled for the visual\r\n */\r\n seriesLabelFormattingEnabled?: boolean;\r\n\r\n sandboxVisualsEnabled?: boolean;\r\n\r\n kpiVisualEnabled?: boolean;\r\n \r\n /** Pivot operator when categorical mapping wants data reduction across both hierarchies */\r\n categoricalPivotEnabled?: boolean;\r\n\r\n /**\r\n * An R visual is available\r\n */\r\n scriptVisualEnabled?: boolean;\r\n\r\n isLabelInteractivityEnabled?: boolean;\r\n\r\n referenceLinesEnabled?: boolean;\r\n\r\n sunburstVisualEnabled?: boolean;\r\n\r\n matrixFormattingEnabled?: boolean;\r\n\r\n filledMapDataLabelsEnabled?: boolean;\r\n\r\n // Control the imageUpload feature, If it will be disable there will be no image slices on cards\r\n backgroundImageEnabled?: boolean;\r\n\r\n lineChartLabelDensityEnabled?: boolean;\r\n }\r\n\r\n export interface SmallViewPortProperties {\r\n cartesianSmallViewPortProperties: CartesianSmallViewPortProperties;\r\n gaugeSmallViewPortProperties: GaugeSmallViewPortProperties;\r\n funnelSmallViewPortProperties: FunnelSmallViewPortProperties;\r\n DonutSmallViewPortProperties: DonutSmallViewPortProperties;\r\n }\r\n\r\n export module visualPluginFactory {\r\n export class VisualPluginService implements IVisualPluginService {\r\n private plugins: jsCommon.IStringDictionary<IVisualPlugin>;\r\n protected featureSwitches: MinervaVisualFeatureSwitches;\r\n\r\n public constructor(featureSwitches: MinervaVisualFeatureSwitches) {\r\n this.plugins = <any>powerbi.visuals.plugins;\r\n this.featureSwitches = featureSwitches;\r\n }\r\n\r\n /**\r\n * Gets metadata for all registered.\r\n */\r\n public getVisuals(): IVisualPlugin[] {\r\n let registry = this.plugins,\r\n names: string[] = Object.keys(registry);\r\n\r\n return names.map(name => registry[name]);\r\n }\r\n\r\n public getPlugin(type: string): IVisualPlugin {\r\n if (!type) {\r\n return;\r\n }\r\n\r\n let plugin: IVisualPlugin = this.plugins[type];\r\n if (!plugin) {\r\n return;\r\n }\r\n\r\n return plugin;\r\n }\r\n\r\n public capabilities(type: string): VisualCapabilities {\r\n let plugin = this.getPlugin(type);\r\n if (plugin)\r\n return plugin.capabilities;\r\n }\r\n\r\n public requireSandbox(plugin: IVisualPlugin): boolean {\r\n return plugin && plugin.custom;\r\n }\r\n\r\n public removeAnyCustomVisuals() {\r\n let plugins = powerbi.visuals.plugins;\r\n for (let key in plugins) {\r\n let p: IVisualPlugin = plugins[key];\r\n if (p.custom) {\r\n delete plugins[key];\r\n }\r\n }\r\n }\r\n\r\n public isCustomVisual(visual: string): boolean {\r\n if (visual) {\r\n \r\n if (this.plugins[visual]) {\r\n return this.plugins[visual].custom === true;\r\n }\r\n else if (_.include(unsupportedVisuals, visual)) {\r\n /*use the hardcoded unsupported visual list to distinguish unsupported visual with custom visual when the plugin object is not in memory*/\r\n return false;\r\n }\r\n else {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n public shouldDisableVisual(type: string, mapDisabled: boolean): boolean {\r\n return (type === plugins.map.name || type === plugins.filledMap.name) && mapDisabled;\r\n }\r\n\r\n public isScriptVisualQueryable(): boolean {\r\n // Feature switch determines if Script visuals are query visuals - currently non-query in PBI site\r\n return (this.featureSwitches !== undefined && this.featureSwitches.scriptVisualEnabled);\r\n }\r\n }\r\n\r\n export function createPlugin(\r\n visualPlugins: jsCommon.IStringDictionary<IVisualPlugin>,\r\n base: IVisualPlugin,\r\n create: IVisualFactoryMethod,\r\n modifyPluginFn?: (plugin: IVisualPlugin) => void): void {\r\n\r\n let visualPlugin = Prototype.inherit(base);\r\n visualPlugin.create = create;\r\n if (modifyPluginFn) {\r\n modifyPluginFn(visualPlugin);\r\n }\r\n visualPlugins[base.name] = visualPlugin;\r\n }\r\n\r\n function createDashboardPlugins(plugins: jsCommon.IStringDictionary<IVisualPlugin>, featureSwitches?: MinervaVisualFeatureSwitches) {\r\n let tooltipsOnDashboard: boolean = true;\r\n let lineChartLabelDensityEnabled: boolean = featureSwitches && featureSwitches.lineChartLabelDensityEnabled;\r\n \r\n // Bar Chart\r\n createPlugin(plugins, powerbi.visuals.plugins.barChart, () => new CartesianChart({\r\n chartType: CartesianChartType.StackedBar,\r\n tooltipsEnabled: tooltipsOnDashboard,\r\n }));\r\n // Clustered Bar Chart\r\n createPlugin(plugins, powerbi.visuals.plugins.clusteredBarChart, () => new CartesianChart({\r\n chartType: CartesianChartType.ClusteredBar,\r\n tooltipsEnabled: tooltipsOnDashboard,\r\n }));\r\n // Clustered Column Chart\r\n createPlugin(plugins, powerbi.visuals.plugins.clusteredColumnChart, () => new CartesianChart({\r\n chartType: CartesianChartType.ClusteredColumn,\r\n tooltipsEnabled: tooltipsOnDashboard,\r\n }));\r\n // Column Chart\r\n createPlugin(plugins, powerbi.visuals.plugins.columnChart, () => new CartesianChart({\r\n chartType: CartesianChartType.StackedColumn,\r\n tooltipsEnabled: tooltipsOnDashboard,\r\n }));\r\n // Data Dot Clustered Combo Chart\r\n createPlugin(plugins, powerbi.visuals.plugins.dataDotClusteredColumnComboChart, () => new CartesianChart({\r\n chartType: CartesianChartType.DataDotClusteredColumnCombo,\r\n tooltipsEnabled: tooltipsOnDashboard,\r\n }));\r\n // Data Dot Stacked Combo Chart\r\n createPlugin(plugins, powerbi.visuals.plugins.dataDotStackedColumnComboChart, () => new CartesianChart({\r\n chartType: CartesianChartType.DataDotStackedColumnCombo,\r\n tooltipsEnabled: tooltipsOnDashboard,\r\n }));\r\n // Donut Chart\r\n createPlugin(plugins, powerbi.visuals.plugins.donutChart, () => new DonutChart({\r\n tooltipsEnabled: tooltipsOnDashboard,\r\n }));\r\n // Funnel Chart\r\n createPlugin(plugins, powerbi.visuals.plugins.funnel, () => new FunnelChart({\r\n tooltipsEnabled: tooltipsOnDashboard,\r\n }));\r\n // Gauge\r\n createPlugin(plugins, powerbi.visuals.plugins.gauge, () => new Gauge({\r\n tooltipsEnabled: tooltipsOnDashboard,\r\n }));\r\n // Hundred Percent Stacked Bar Chart\r\n createPlugin(plugins, powerbi.visuals.plugins.hundredPercentStackedBarChart, () => new CartesianChart({\r\n chartType: CartesianChartType.HundredPercentStackedBar,\r\n tooltipsEnabled: tooltipsOnDashboard,\r\n }));\r\n // Hundred Percent Stacked Column Chart\r\n createPlugin(plugins, powerbi.visuals.plugins.hundredPercentStackedColumnChart, () => new CartesianChart({\r\n chartType: CartesianChartType.HundredPercentStackedColumn,\r\n tooltipsEnabled: tooltipsOnDashboard,\r\n }));\r\n // Line Chart\r\n createPlugin(plugins, powerbi.visuals.plugins.lineChart, () => new CartesianChart({\r\n chartType: CartesianChartType.Line,\r\n tooltipsEnabled: tooltipsOnDashboard,\r\n lineChartLabelDensityEnabled: lineChartLabelDensityEnabled,\r\n }));\r\n // Area Chart\r\n createPlugin(plugins, powerbi.visuals.plugins.areaChart, () => new CartesianChart({\r\n chartType: CartesianChartType.Area,\r\n tooltipsEnabled: tooltipsOnDashboard,\r\n lineChartLabelDensityEnabled: lineChartLabelDensityEnabled,\r\n }));\r\n // Stacked Area Chart\r\n createPlugin(plugins, powerbi.visuals.plugins.stackedAreaChart, () => new CartesianChart({\r\n chartType: CartesianChartType.StackedArea,\r\n tooltipsEnabled: tooltipsOnDashboard,\r\n lineChartLabelDensityEnabled: lineChartLabelDensityEnabled,\r\n }));\r\n // Line Clustered Combo Chart\r\n createPlugin(plugins, powerbi.visuals.plugins.lineClusteredColumnComboChart, () => new CartesianChart({\r\n chartType: CartesianChartType.LineClusteredColumnCombo,\r\n tooltipsEnabled: tooltipsOnDashboard,\r\n }));\r\n // Line Stacked Combo Chart\r\n createPlugin(plugins, powerbi.visuals.plugins.lineStackedColumnComboChart, () => new CartesianChart({\r\n chartType: CartesianChartType.LineStackedColumnCombo,\r\n tooltipsEnabled: tooltipsOnDashboard,\r\n }));\r\n // Pie Chart\r\n createPlugin(plugins, powerbi.visuals.plugins.pieChart, () => new DonutChart({\r\n sliceWidthRatio: 0,\r\n tooltipsEnabled: tooltipsOnDashboard,\r\n }));\r\n // Scatter Chart\r\n createPlugin(plugins, enablePivot(powerbi.visuals.plugins.scatterChart), () => new CartesianChart({\r\n chartType: CartesianChartType.Scatter,\r\n tooltipsEnabled: tooltipsOnDashboard,\r\n }));\r\n // Treemap\r\n createPlugin(plugins, powerbi.visuals.plugins.treemap, () => new Treemap({\r\n isScrollable: false,\r\n tooltipsEnabled: tooltipsOnDashboard,\r\n }));\r\n // Waterfall Chart\r\n createPlugin(plugins, powerbi.visuals.plugins.waterfallChart, () => new CartesianChart({\r\n chartType: CartesianChartType.Waterfall,\r\n tooltipsEnabled: tooltipsOnDashboard,\r\n }));\r\n // Map\r\n createPlugin(plugins, powerbi.visuals.plugins.map, () => new Map({\r\n tooltipsEnabled: tooltipsOnDashboard,\r\n disableZooming: true,\r\n disablePanning: true,\r\n }));\r\n // Filled Map\r\n createPlugin(plugins, powerbi.visuals.plugins.filledMap, () => new Map({\r\n filledMap: true,\r\n tooltipsEnabled: tooltipsOnDashboard,\r\n disableZooming: true,\r\n disablePanning: true,\r\n }));\r\n }\r\n\r\n function createMinervaPlugins(plugins: jsCommon.IStringDictionary<IVisualPlugin>, featureSwitches?: MinervaVisualFeatureSwitches) {\r\n let categoricalPivotEnabled: boolean = featureSwitches ? featureSwitches.categoricalPivotEnabled : false;\r\n let seriesLabelFormattingEnabled: boolean = featureSwitches ? featureSwitches.seriesLabelFormattingEnabled : false;\r\n let scriptVisualEnabled: boolean = featureSwitches ? featureSwitches.scriptVisualEnabled : false;\r\n let isLabelInteractivityEnabled: boolean = featureSwitches ? featureSwitches.isLabelInteractivityEnabled : false;\r\n let formattingPropertiesEnabled = featureSwitches ? featureSwitches.matrixFormattingEnabled : false;\r\n let fillMapDataLabelsEnabled: boolean = featureSwitches ? featureSwitches.filledMapDataLabelsEnabled : false;\r\n let referenceLinesEnabled: boolean = featureSwitches ? featureSwitches.referenceLinesEnabled : false;\r\n let backgroundImageEnabled: boolean = featureSwitches ? featureSwitches.backgroundImageEnabled : false;\r\n let lineChartLabelDensityEnabled: boolean = featureSwitches ? featureSwitches.lineChartLabelDensityEnabled : false;\r\n\r\n // Bar Chart\r\n createPlugin(plugins, powerbi.visuals.plugins.barChart, () => new CartesianChart({\r\n chartType: CartesianChartType.StackedBar,\r\n isScrollable: true, animator: new WebColumnChartAnimator(),\r\n tooltipsEnabled: true,\r\n behavior: new CartesianChartBehavior([new ColumnChartWebBehavior()]),\r\n seriesLabelFormattingEnabled: seriesLabelFormattingEnabled,\r\n isLabelInteractivityEnabled: isLabelInteractivityEnabled,\r\n referenceLinesEnabled: referenceLinesEnabled,\r\n backgroundImageEnabled: backgroundImageEnabled,\r\n }));\r\n // Card\r\n createPlugin(plugins, powerbi.visuals.plugins.card, () => new Card({\r\n isScrollable: true,\r\n animator: new BaseAnimator(),\r\n }));\r\n // Clustered Bar Chart\r\n createPlugin(plugins, powerbi.visuals.plugins.clusteredBarChart, () => new CartesianChart({\r\n chartType: CartesianChartType.ClusteredBar,\r\n isScrollable: true,\r\n tooltipsEnabled: true,\r\n animator: new WebColumnChartAnimator(),\r\n behavior: new CartesianChartBehavior([new ColumnChartWebBehavior()]),\r\n seriesLabelFormattingEnabled: seriesLabelFormattingEnabled,\r\n isLabelInteractivityEnabled: isLabelInteractivityEnabled,\r\n referenceLinesEnabled: referenceLinesEnabled,\r\n backgroundImageEnabled: backgroundImageEnabled,\r\n }));\r\n // Clustered Column Chart\r\n createPlugin(plugins, powerbi.visuals.plugins.clusteredColumnChart, () => new CartesianChart({\r\n chartType: CartesianChartType.ClusteredColumn,\r\n isScrollable: true,\r\n tooltipsEnabled: true,\r\n animator: new WebColumnChartAnimator(),\r\n behavior: new CartesianChartBehavior([new ColumnChartWebBehavior()]),\r\n seriesLabelFormattingEnabled: seriesLabelFormattingEnabled,\r\n isLabelInteractivityEnabled: isLabelInteractivityEnabled,\r\n referenceLinesEnabled: referenceLinesEnabled,\r\n backgroundImageEnabled: backgroundImageEnabled,\r\n }));\r\n // Column Chart\r\n createPlugin(plugins, powerbi.visuals.plugins.columnChart, () => new CartesianChart({\r\n chartType: CartesianChartType.StackedColumn,\r\n isScrollable: true,\r\n tooltipsEnabled: true,\r\n animator: new WebColumnChartAnimator(),\r\n behavior: new CartesianChartBehavior([new ColumnChartWebBehavior()]),\r\n seriesLabelFormattingEnabled: seriesLabelFormattingEnabled,\r\n isLabelInteractivityEnabled: isLabelInteractivityEnabled,\r\n referenceLinesEnabled: referenceLinesEnabled,\r\n backgroundImageEnabled: backgroundImageEnabled,\r\n }));\r\n // Data Dot Clustered Combo Chart\r\n createPlugin(plugins, powerbi.visuals.plugins.dataDotClusteredColumnComboChart, () => new CartesianChart({\r\n chartType: CartesianChartType.DataDotClusteredColumnCombo,\r\n isScrollable: true,\r\n tooltipsEnabled: true,\r\n animator: new WebColumnChartAnimator(),\r\n behavior: new CartesianChartBehavior([new ColumnChartWebBehavior(), new DataDotChartWebBehavior()]),\r\n isLabelInteractivityEnabled: isLabelInteractivityEnabled,\r\n }));\r\n // Data Dot Stacked Combo Chart\r\n createPlugin(plugins, powerbi.visuals.plugins.dataDotStackedColumnComboChart, () => new CartesianChart({\r\n chartType: CartesianChartType.DataDotStackedColumnCombo,\r\n isScrollable: true,\r\n tooltipsEnabled: true,\r\n animator: new WebColumnChartAnimator(),\r\n behavior: new CartesianChartBehavior([new ColumnChartWebBehavior(), new DataDotChartWebBehavior()]),\r\n isLabelInteractivityEnabled: isLabelInteractivityEnabled,\r\n }));\r\n // Donut Chart\r\n createPlugin(plugins, powerbi.visuals.plugins.donutChart, () => new DonutChart({\r\n animator: new WebDonutChartAnimator(),\r\n isScrollable: true,\r\n tooltipsEnabled: true,\r\n behavior: new DonutChartWebBehavior(),\r\n }));\r\n // Funnel Chart\r\n createPlugin(plugins, powerbi.visuals.plugins.funnel, () => new FunnelChart({\r\n animator: new WebFunnelAnimator(),\r\n behavior: new FunnelWebBehavior(),\r\n tooltipsEnabled: true,\r\n }));\r\n // Gauge\r\n createPlugin(plugins, powerbi.visuals.plugins.gauge, () => new Gauge({\r\n animator: new BaseAnimator(),\r\n tooltipsEnabled: true,\r\n }));\r\n // Hundred Percent Stacked Bar Chart\r\n createPlugin(plugins, powerbi.visuals.plugins.hundredPercentStackedBarChart, () => new CartesianChart({\r\n chartType: CartesianChartType.HundredPercentStackedBar,\r\n isScrollable: true,\r\n tooltipsEnabled: true,\r\n animator: new WebColumnChartAnimator(),\r\n behavior: new CartesianChartBehavior([new ColumnChartWebBehavior()]),\r\n seriesLabelFormattingEnabled: seriesLabelFormattingEnabled,\r\n isLabelInteractivityEnabled: isLabelInteractivityEnabled,\r\n referenceLinesEnabled: referenceLinesEnabled,\r\n backgroundImageEnabled: backgroundImageEnabled,\r\n }));\r\n // Hundred Percent Stacked Column Chart\r\n createPlugin(plugins, powerbi.visuals.plugins.hundredPercentStackedColumnChart, () => new CartesianChart({\r\n chartType: CartesianChartType.HundredPercentStackedColumn,\r\n isScrollable: true,\r\n tooltipsEnabled: true,\r\n animator: new WebColumnChartAnimator(),\r\n behavior: new CartesianChartBehavior([new ColumnChartWebBehavior()]),\r\n seriesLabelFormattingEnabled: seriesLabelFormattingEnabled,\r\n isLabelInteractivityEnabled: isLabelInteractivityEnabled,\r\n referenceLinesEnabled: referenceLinesEnabled,\r\n backgroundImageEnabled: backgroundImageEnabled,\r\n }));\r\n // Line Chart\r\n createPlugin(plugins, powerbi.visuals.plugins.lineChart, () => new CartesianChart({\r\n chartType: CartesianChartType.Line,\r\n isScrollable: true,\r\n tooltipsEnabled: true,\r\n animator: new BaseAnimator(),\r\n behavior: new CartesianChartBehavior([new LineChartWebBehavior()]),\r\n seriesLabelFormattingEnabled: seriesLabelFormattingEnabled,\r\n isLabelInteractivityEnabled: isLabelInteractivityEnabled,\r\n referenceLinesEnabled: referenceLinesEnabled,\r\n backgroundImageEnabled: backgroundImageEnabled,\r\n lineChartLabelDensityEnabled: lineChartLabelDensityEnabled,\r\n }));\r\n // Area Chart\r\n createPlugin(plugins, powerbi.visuals.plugins.areaChart, () => new CartesianChart({\r\n chartType: CartesianChartType.Area,\r\n isScrollable: true,\r\n tooltipsEnabled: true,\r\n animator: new BaseAnimator(),\r\n behavior: new CartesianChartBehavior([new LineChartWebBehavior()]),\r\n seriesLabelFormattingEnabled: seriesLabelFormattingEnabled,\r\n isLabelInteractivityEnabled: isLabelInteractivityEnabled,\r\n referenceLinesEnabled: referenceLinesEnabled,\r\n lineChartLabelDensityEnabled: lineChartLabelDensityEnabled,\r\n }));\r\n // Stacked Area Chart\r\n createPlugin(plugins, powerbi.visuals.plugins.stackedAreaChart, () => new CartesianChart({\r\n chartType: CartesianChartType.StackedArea,\r\n isScrollable: true,\r\n tooltipsEnabled: true,\r\n animator: new BaseAnimator(),\r\n behavior: new CartesianChartBehavior([new LineChartWebBehavior()]),\r\n seriesLabelFormattingEnabled: seriesLabelFormattingEnabled,\r\n lineChartLabelDensityEnabled: lineChartLabelDensityEnabled,\r\n }));\r\n // Line Clustered Combo Chart\r\n createPlugin(plugins, powerbi.visuals.plugins.lineClusteredColumnComboChart, () => new CartesianChart({\r\n chartType: CartesianChartType.LineClusteredColumnCombo,\r\n isScrollable: true,\r\n tooltipsEnabled: true,\r\n animator: new WebColumnChartAnimator(),\r\n behavior: new CartesianChartBehavior([new ColumnChartWebBehavior(), new LineChartWebBehavior()]),\r\n isLabelInteractivityEnabled: isLabelInteractivityEnabled,\r\n }));\r\n // Line Stacked Combo Chart\r\n createPlugin(plugins, powerbi.visuals.plugins.lineStackedColumnComboChart, () => new CartesianChart({\r\n chartType: CartesianChartType.LineStackedColumnCombo,\r\n isScrollable: true,\r\n tooltipsEnabled: true,\r\n animator: new WebColumnChartAnimator(),\r\n behavior: new CartesianChartBehavior([new ColumnChartWebBehavior(), new LineChartWebBehavior()]),\r\n isLabelInteractivityEnabled: isLabelInteractivityEnabled,\r\n }));\r\n // Pie Chart\r\n createPlugin(plugins, powerbi.visuals.plugins.pieChart, () => new DonutChart({\r\n sliceWidthRatio: 0,\r\n animator: new WebDonutChartAnimator(),\r\n isScrollable: true,\r\n tooltipsEnabled: true,\r\n behavior: new DonutChartWebBehavior(),\r\n }));\r\n // Scatter Chart\r\n createPlugin(plugins, enablePivot(powerbi.visuals.plugins.scatterChart, categoricalPivotEnabled), () => new CartesianChart({\r\n chartType: CartesianChartType.Scatter,\r\n isScrollable: true,\r\n tooltipsEnabled: true,\r\n animator: new BaseAnimator(),\r\n behavior: new CartesianChartBehavior([new ScatterChartWebBehavior()]),\r\n isLabelInteractivityEnabled: isLabelInteractivityEnabled,\r\n referenceLinesEnabled: referenceLinesEnabled,\r\n backgroundImageEnabled: backgroundImageEnabled,\r\n }));\r\n // Treemap\r\n createPlugin(plugins, powerbi.visuals.plugins.treemap, () => new Treemap({\r\n animator: new WebTreemapAnimator,\r\n isScrollable: true,\r\n behavior: new TreemapWebBehavior(),\r\n tooltipsEnabled: true,\r\n }));\r\n // Waterfall Chart\r\n createPlugin(plugins, powerbi.visuals.plugins.waterfallChart, () => new CartesianChart({\r\n chartType: CartesianChartType.Waterfall,\r\n isScrollable: true,\r\n tooltipsEnabled: true,\r\n behavior: new CartesianChartBehavior([new WaterfallChartWebBehavior()]),\r\n isLabelInteractivityEnabled: isLabelInteractivityEnabled,\r\n referenceLinesEnabled: referenceLinesEnabled,\r\n }));\r\n // Map\r\n createPlugin(plugins, powerbi.visuals.plugins.map, () => new Map({\r\n behavior: new MapBehavior(),\r\n tooltipsEnabled: true,\r\n isLegendScrollable: true,\r\n }));\r\n // Filled Map\r\n createPlugin(plugins, powerbi.visuals.plugins.filledMap, () => new Map({\r\n filledMap: true,\r\n behavior: new MapBehavior,\r\n tooltipsEnabled: true,\r\n filledMapDataLabelsEnabled: fillMapDataLabelsEnabled,\r\n isLegendScrollable: true,\r\n }));\r\n // Slicer\r\n createPlugin(plugins, powerbi.visuals.plugins.slicer, () => new Slicer({\r\n behavior: new SlicerWebBehavior(),\r\n })); \r\n // Matrix\r\n createPlugin(plugins, powerbi.visuals.plugins.matrix, () => new Matrix({\r\n isFormattingPropertiesEnabled: formattingPropertiesEnabled\r\n }));\r\n // Table\r\n createPlugin(plugins, powerbi.visuals.plugins.table, () => new Table({\r\n isFormattingPropertiesEnabled: formattingPropertiesEnabled\r\n }));;\r\n\r\n if (scriptVisualEnabled) {\r\n // R visual\r\n createPlugin(\r\n plugins,\r\n powerbi.visuals.plugins.scriptVisual,\r\n () => new ScriptVisual({ canRefresh: true }));\r\n }\r\n }\r\n\r\n /** enable cross axis data reduction pivot in categorical mappings */\r\n function enablePivot(pluginOld: IVisualPlugin, categoricalPivotEnabled?: boolean): IVisualPlugin {\r\n if (!categoricalPivotEnabled)\r\n return pluginOld;\r\n\r\n let caps: VisualCapabilities = pluginOld.capabilities;\r\n if (!caps.dataViewMappings)\r\n return pluginOld;\r\n\r\n let pluginNew: IVisualPlugin = pluginOld;\r\n for (let i = 0; i < caps.dataViewMappings.length; ++i) {\r\n let mapping: DataViewCategoricalMapping = caps.dataViewMappings[i].categorical;\r\n if (!mapping)\r\n continue;\r\n\r\n // copy only once\r\n if (pluginNew === pluginOld) {\r\n pluginNew = _.clone(pluginOld); // shallow\r\n pluginNew.capabilities = _.clone(pluginNew.capabilities);\r\n\r\n caps = pluginNew.capabilities;\r\n mapping = caps.dataViewMappings[i].categorical;\r\n }\r\n\r\n let categories = mapping.categories;\r\n if (categories && categories.dataReductionAlgorithm)\r\n categories.dataReductionAlgorithm = undefined;\r\n\r\n let values = mapping.values;\r\n if (values) {\r\n let group = (<DataViewGroupedRoleMapping>values).group;\r\n if (group)\r\n group.dataReductionAlgorithm = undefined;\r\n }\r\n\r\n mapping.dataReductionAlgorithm = {\r\n sample: {}\r\n };\r\n }\r\n\r\n return pluginNew;\r\n }\r\n\r\n export class MinervaVisualPluginService extends VisualPluginService {\r\n private visualPlugins: jsCommon.IStringDictionary<IVisualPlugin>;\r\n\r\n public constructor(featureSwitches: MinervaVisualFeatureSwitches) {\r\n super(featureSwitches);\r\n\r\n debug.assertValue(featureSwitches, 'featureSwitches');\r\n\r\n this.visualPlugins = {};\r\n\r\n this.addCustomVisualizations([]);\r\n\r\n createMinervaPlugins(this.visualPlugins, this.featureSwitches);\r\n }\r\n\r\n public getVisuals(): IVisualPlugin[] {\r\n // Current visual types that supports visual conversion. Please don't change the orders\r\n // CAUTION: If you are adding new visual types, please check if you need to update the height of\r\n // the visual convertion pane in visualization pane as well.\r\n let convertibleVisualTypes = [\r\n powerbi.visuals.plugins.barChart,\r\n powerbi.visuals.plugins.columnChart,\r\n powerbi.visuals.plugins.clusteredBarChart,\r\n powerbi.visuals.plugins.clusteredColumnChart,\r\n powerbi.visuals.plugins.hundredPercentStackedBarChart,\r\n powerbi.visuals.plugins.hundredPercentStackedColumnChart,\r\n powerbi.visuals.plugins.lineChart,\r\n powerbi.visuals.plugins.areaChart,\r\n powerbi.visuals.plugins.stackedAreaChart,\r\n powerbi.visuals.plugins.lineStackedColumnComboChart,\r\n powerbi.visuals.plugins.lineClusteredColumnComboChart,\r\n powerbi.visuals.plugins.waterfallChart,\r\n powerbi.visuals.plugins.scatterChart,\r\n powerbi.visuals.plugins.pieChart,\r\n powerbi.visuals.plugins.treemap,\r\n powerbi.visuals.plugins.map,\r\n powerbi.visuals.plugins.table,\r\n powerbi.visuals.plugins.matrix,\r\n powerbi.visuals.plugins.filledMap,\r\n powerbi.visuals.plugins.funnel,\r\n powerbi.visuals.plugins.gauge,\r\n powerbi.visuals.plugins.multiRowCard,\r\n powerbi.visuals.plugins.card\r\n ];\r\n\r\n if (this.featureSwitches.kpiVisualEnabled) {\r\n convertibleVisualTypes.push(powerbi.visuals.plugins.kpi);\r\n }\r\n\r\n convertibleVisualTypes.push(powerbi.visuals.plugins.slicer);\r\n convertibleVisualTypes.push(powerbi.visuals.plugins.donutChart);\r\n\r\n if (this.featureSwitches.scriptVisualEnabled) {\r\n convertibleVisualTypes.push(powerbi.visuals.plugins.scriptVisual);\r\n }\r\n\r\n // Add any visuals compiled in the developer tools\r\n // Additionally add custom visuals.\r\n for (let p in plugins) {\r\n let plugin = plugins[p];\r\n if (plugin.custom) {\r\n this.pushPluginIntoConveratbleTypes(convertibleVisualTypes, plugin);\r\n }\r\n }\r\n\r\n this.addCustomVisualizations(convertibleVisualTypes);\r\n\r\n if (this.featureSwitches.dataDotChartEnabled) {\r\n convertibleVisualTypes.push(powerbi.visuals.plugins.dataDotClusteredColumnComboChart);\r\n convertibleVisualTypes.push(powerbi.visuals.plugins.dataDotStackedColumnComboChart);\r\n }\r\n\r\n // if (this.featureSwitches.sunburstVisualEnabled) {\r\n // convertibleVisualTypes.push(powerbi.visuals.plugins.sunburst);\r\n // }\r\n\r\n return convertibleVisualTypes;\r\n }\r\n\r\n private pushPluginIntoConveratbleTypes(convertibleVisualTypes: IVisualPlugin[], plugin: IVisualPlugin) {\r\n if (!convertibleVisualTypes.some(pl => pl.name === plugin.name)) {\r\n convertibleVisualTypes.push(plugin);\r\n }\r\n }\r\n\r\n private addCustomVisualizations(convertibleVisualTypes: IVisualPlugin[]): void {\r\n // Read new visual from localstorage\r\n let customVisualizationList = localStorageService.getData('customVisualizations');\r\n if (customVisualizationList) {\r\n let len = customVisualizationList.length;\r\n for (let i = 0; i < len; i++) {\r\n let pluginName = customVisualizationList[i].pluginName;\r\n let plugin = this.getPlugin(pluginName);\r\n // If the browser session got restarted or its a new window the plugin wont be available, so we need to add it\r\n if (!plugin) {\r\n let jsCode = customVisualizationList[i].javaScriptCode;\r\n let script = $(\"<script/>\", {\r\n html: jsCode + '//# sourceURL=' + pluginName + '.js\\n' + '//# sourceMappingURL=' + pluginName + '.js.map'\r\n });\r\n\r\n script.attr('pluginName', pluginName);\r\n\r\n $('body').append(script);\r\n\r\n let style = $(\"<style/>\", {\r\n html: customVisualizationList[i].cssCode\r\n });\r\n\r\n style.attr('pluginName', pluginName);\r\n\r\n $('head').append(style);\r\n\r\n plugin = this.getPlugin(pluginName);\r\n }\r\n this.pushPluginIntoConveratbleTypes(convertibleVisualTypes, plugin);\r\n }\r\n }\r\n }\r\n\r\n public getPlugin(type: string): IVisualPlugin {\r\n if (this.visualPlugins[type])\r\n return this.visualPlugins[type];\r\n\r\n return super.getPlugin(type);\r\n }\r\n\r\n public requireSandbox(plugin: IVisualPlugin): boolean {\r\n return this.featureSwitches.sandboxVisualsEnabled && (!plugin || (plugin && plugin.custom));\r\n }\r\n }\r\n\r\n export class PlaygroundVisualPluginService extends VisualPluginService {\r\n private visualPlugins: jsCommon.IStringDictionary<IVisualPlugin>;\r\n\r\n public constructor() {\r\n super(undefined);\r\n\r\n this.visualPlugins = <any>powerbi.visuals.plugins;\r\n\r\n createMinervaPlugins(this.visualPlugins, null);\r\n }\r\n\r\n public getVisuals(): IVisualPlugin[] {\r\n let registry = this.visualPlugins,\r\n names: string[] = Object.keys(registry);\r\n\r\n return names.map(name => registry[name]);\r\n }\r\n\r\n public getPlugin(type: string): IVisualPlugin {\r\n if (!type) {\r\n return;\r\n }\r\n\r\n let plugin: IVisualPlugin = this.visualPlugins[type];\r\n if (!plugin) {\r\n return;\r\n }\r\n\r\n return plugin;\r\n }\r\n\r\n public capabilities(type: string): VisualCapabilities {\r\n let plugin = this.getPlugin(type);\r\n if (plugin) {\r\n return plugin.capabilities;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * This plug-in service is used when displaying visuals on the dashboard.\r\n */\r\n export class DashboardPluginService extends VisualPluginService {\r\n private visualPlugins: jsCommon.IStringDictionary<IVisualPlugin>;\r\n\r\n public constructor(featureSwitches: MinervaVisualFeatureSwitches) {\r\n super(featureSwitches);\r\n\r\n debug.assertValue(featureSwitches, 'featureSwitches');\r\n\r\n this.visualPlugins = {};\r\n\r\n createDashboardPlugins(this.visualPlugins, this.featureSwitches);\r\n }\r\n\r\n public getPlugin(type: string): IVisualPlugin {\r\n\r\n if (this.visualPlugins[type]) {\r\n return this.visualPlugins[type];\r\n }\r\n\r\n return super.getPlugin(type);\r\n }\r\n\r\n public requireSandbox(plugin: IVisualPlugin): boolean {\r\n return this.featureSwitches.sandboxVisualsEnabled && (!plugin || (plugin && plugin.custom));\r\n }\r\n }\r\n\r\n // This plug-in service is used when displaying visuals for insights.\r\n export class InsightsPluginService extends VisualPluginService {\r\n private visualPlugins: jsCommon.IStringDictionary<IVisualPlugin>;\r\n\r\n public constructor(featureSwitches: MinervaVisualFeatureSwitches) {\r\n super(featureSwitches);\r\n\r\n debug.assertValue(featureSwitches, 'featureSwitches');\r\n\r\n let seriesLabelFormattingEnabled: boolean = featureSwitches ? featureSwitches.seriesLabelFormattingEnabled : false;\r\n this.visualPlugins = {};\r\n\r\n // Clustered Bar Chart\r\n createPlugin(this.visualPlugins, powerbi.visuals.plugins.clusteredBarChart, () => new CartesianChart({\r\n chartType: CartesianChartType.ClusteredBar,\r\n animator: new WebColumnChartAnimator(),\r\n tooltipsEnabled: true,\r\n seriesLabelFormattingEnabled: seriesLabelFormattingEnabled,\r\n }));\r\n\r\n // Column Chart\r\n createPlugin(this.visualPlugins, powerbi.visuals.plugins.columnChart, () => new CartesianChart({\r\n chartType: CartesianChartType.StackedColumn,\r\n animator: new WebColumnChartAnimator(),\r\n tooltipsEnabled: true,\r\n seriesLabelFormattingEnabled: seriesLabelFormattingEnabled,\r\n }));\r\n\r\n // Donut Chart\r\n createPlugin(this.visualPlugins, powerbi.visuals.plugins.donutChart, () => new DonutChart({\r\n animator: new WebDonutChartAnimator(),\r\n tooltipsEnabled: true,\r\n }));\r\n\r\n // Hundred Percent Stacked Bar Chart\r\n createPlugin(this.visualPlugins, powerbi.visuals.plugins.hundredPercentStackedBarChart, () => new CartesianChart({\r\n chartType: CartesianChartType.HundredPercentStackedBar,\r\n animator: new WebColumnChartAnimator(),\r\n tooltipsEnabled: true,\r\n seriesLabelFormattingEnabled: seriesLabelFormattingEnabled,\r\n }));\r\n\r\n // Hundred Percent Stacked Column Chart\r\n createPlugin(this.visualPlugins, powerbi.visuals.plugins.hundredPercentStackedColumnChart, () => new CartesianChart({\r\n chartType: CartesianChartType.HundredPercentStackedColumn,\r\n animator: new WebColumnChartAnimator(),\r\n tooltipsEnabled: true,\r\n seriesLabelFormattingEnabled: seriesLabelFormattingEnabled,\r\n }));\r\n \r\n // Line Chart\r\n createPlugin(this.visualPlugins, powerbi.visuals.plugins.lineChart, () => new CartesianChart({\r\n chartType: CartesianChartType.Line,\r\n animator: new BaseAnimator(),\r\n tooltipsEnabled: true,\r\n }));\r\n\r\n // Area Chart\r\n createPlugin(this.visualPlugins, powerbi.visuals.plugins.areaChart, () => new CartesianChart({\r\n chartType: CartesianChartType.Area,\r\n animator: new BaseAnimator(),\r\n tooltipsEnabled: true,\r\n }));\r\n\r\n // Pie Chart\r\n createPlugin(this.visualPlugins, powerbi.visuals.plugins.pieChart, () => new DonutChart({\r\n sliceWidthRatio: 0,\r\n animator: new WebDonutChartAnimator(),\r\n tooltipsEnabled: true,\r\n }));\r\n\r\n // Scatter Chart\r\n createPlugin(this.visualPlugins, powerbi.visuals.plugins.scatterChart, () => new CartesianChart({\r\n chartType: CartesianChartType.Scatter,\r\n animator: new BaseAnimator(),\r\n tooltipsEnabled: true,\r\n }), undefined);\r\n }\r\n\r\n public getPlugin(type: string): IVisualPlugin {\r\n if (this.visualPlugins[type]) {\r\n return this.visualPlugins[type];\r\n }\r\n\r\n return super.getPlugin(type);\r\n }\r\n\r\n public requireSandbox(plugin: IVisualPlugin): boolean {\r\n return this.featureSwitches.sandboxVisualsEnabled && (!plugin || (plugin && plugin.custom));\r\n }\r\n }\r\n\r\n export class MobileVisualPluginService extends VisualPluginService {\r\n private visualPlugins: jsCommon.IStringDictionary<IVisualPlugin>;\r\n private smallViewPortProperties;\r\n public static MinHeightLegendVisible = 80;\r\n public static MinHeightAxesVisible = 80;\r\n public static MinHeightGaugeSideNumbersVisible = 80;\r\n public static GaugeMarginsOnSmallViewPort = 10;\r\n public static MinHeightFunnelCategoryLabelsVisible = 80;\r\n public static MaxHeightToScaleDonutLegend = 300;\r\n\r\n public constructor(smallViewPortProperties?: SmallViewPortProperties) {\r\n super(undefined);\r\n\r\n this.smallViewPortProperties = smallViewPortProperties || {\r\n CartesianSmallViewPortProperties: {\r\n hideAxesOnSmallViewPort: true,\r\n hideLegendOnSmallViewPort: true,\r\n MinHeightLegendVisible: MobileVisualPluginService.MinHeightLegendVisible,\r\n MinHeightAxesVisible: MobileVisualPluginService.MinHeightAxesVisible,\r\n },\r\n GaugeSmallViewPortProperties: {\r\n hideGaugeSideNumbersOnSmallViewPort: true,\r\n smallGaugeMarginsOnSmallViewPort: true,\r\n MinHeightGaugeSideNumbersVisible: MobileVisualPluginService.MinHeightGaugeSideNumbersVisible,\r\n GaugeMarginsOnSmallViewPort: MobileVisualPluginService.GaugeMarginsOnSmallViewPort,\r\n },\r\n FunnelSmallViewPortProperties: {\r\n hideFunnelCategoryLabelsOnSmallViewPort: true,\r\n minHeightFunnelCategoryLabelsVisible: MobileVisualPluginService.MinHeightFunnelCategoryLabelsVisible,\r\n },\r\n DonutSmallViewPortProperties: {\r\n maxHeightToScaleDonutLegend: MobileVisualPluginService.MaxHeightToScaleDonutLegend,\r\n },\r\n };\r\n\r\n // Disable tooltips for mobile\r\n TooltipManager.ShowTooltips = false;\r\n \r\n // Don't trim overflow data on mobile\r\n let trimOrdinalDataOnOverflow = false;\r\n\r\n let mapThrottleInterval: number = this.getMapThrottleInterval();\r\n\r\n this.visualPlugins = {};\r\n createPlugin(this.visualPlugins, powerbi.visuals.plugins.areaChart,\r\n () => new CartesianChart({\r\n chartType: CartesianChartType.Area,\r\n trimOrdinalDataOnOverflow: trimOrdinalDataOnOverflow\r\n }));\r\n createPlugin(this.visualPlugins, powerbi.visuals.plugins.barChart,\r\n () => new CartesianChart({\r\n chartType: CartesianChartType.StackedBar,\r\n trimOrdinalDataOnOverflow: trimOrdinalDataOnOverflow\r\n }));\r\n createPlugin(this.visualPlugins, powerbi.visuals.plugins.clusteredBarChart,\r\n () => new CartesianChart({\r\n chartType: CartesianChartType.ClusteredBar,\r\n trimOrdinalDataOnOverflow: trimOrdinalDataOnOverflow\r\n }));\r\n createPlugin(this.visualPlugins, powerbi.visuals.plugins.clusteredColumnChart,\r\n () => new CartesianChart({\r\n chartType: CartesianChartType.ClusteredColumn,\r\n trimOrdinalDataOnOverflow: trimOrdinalDataOnOverflow\r\n }));\r\n createPlugin(this.visualPlugins, powerbi.visuals.plugins.columnChart,\r\n () => new CartesianChart({\r\n chartType: CartesianChartType.StackedColumn,\r\n trimOrdinalDataOnOverflow: trimOrdinalDataOnOverflow\r\n }));\r\n createPlugin(this.visualPlugins, powerbi.visuals.plugins.comboChart,\r\n () => new CartesianChart({\r\n chartType: CartesianChartType.ComboChart,\r\n trimOrdinalDataOnOverflow: trimOrdinalDataOnOverflow\r\n }));\r\n createPlugin(this.visualPlugins, powerbi.visuals.plugins.dataDotChart,\r\n () => new CartesianChart({\r\n chartType: CartesianChartType.DataDot,\r\n trimOrdinalDataOnOverflow: trimOrdinalDataOnOverflow\r\n }));\r\n createPlugin(this.visualPlugins, powerbi.visuals.plugins.dataDotClusteredColumnComboChart,\r\n () => new CartesianChart({\r\n chartType: CartesianChartType.DataDotClusteredColumnCombo,\r\n trimOrdinalDataOnOverflow: trimOrdinalDataOnOverflow\r\n }));\r\n createPlugin(this.visualPlugins, powerbi.visuals.plugins.dataDotStackedColumnComboChart,\r\n () => new CartesianChart({\r\n chartType: CartesianChartType.DataDotStackedColumnCombo,\r\n trimOrdinalDataOnOverflow: trimOrdinalDataOnOverflow\r\n }));\r\n createPlugin(this.visualPlugins, powerbi.visuals.plugins.hundredPercentStackedBarChart,\r\n () => new CartesianChart({\r\n chartType: CartesianChartType.HundredPercentStackedBar,\r\n trimOrdinalDataOnOverflow: trimOrdinalDataOnOverflow\r\n }));\r\n createPlugin(this.visualPlugins, powerbi.visuals.plugins.hundredPercentStackedColumnChart,\r\n () => new CartesianChart({\r\n chartType: CartesianChartType.HundredPercentStackedColumn,\r\n trimOrdinalDataOnOverflow: trimOrdinalDataOnOverflow\r\n }));\r\n createPlugin(this.visualPlugins, powerbi.visuals.plugins.stackedAreaChart,\r\n () => new CartesianChart({\r\n chartType: CartesianChartType.StackedArea,\r\n trimOrdinalDataOnOverflow: trimOrdinalDataOnOverflow\r\n }));\r\n createPlugin(this.visualPlugins, powerbi.visuals.plugins.waterfallChart,\r\n () => new CartesianChart({\r\n chartType: CartesianChartType.Waterfall,\r\n trimOrdinalDataOnOverflow: trimOrdinalDataOnOverflow\r\n }));\r\n createPlugin(this.visualPlugins, powerbi.visuals.plugins.lineChart,\r\n () => new CartesianChart({\r\n chartType: CartesianChartType.Line,\r\n cartesianSmallViewPortProperties: this.smallViewPortProperties.CartesianSmallViewPortProperties,\r\n trimOrdinalDataOnOverflow: trimOrdinalDataOnOverflow\r\n }));\r\n createPlugin(this.visualPlugins, powerbi.visuals.plugins.lineClusteredColumnComboChart,\r\n () => new CartesianChart({\r\n chartType: CartesianChartType.LineClusteredColumnCombo,\r\n cartesianSmallViewPortProperties: this.smallViewPortProperties.CartesianSmallViewPortProperties,\r\n trimOrdinalDataOnOverflow: trimOrdinalDataOnOverflow\r\n }));\r\n createPlugin(this.visualPlugins, powerbi.visuals.plugins.lineStackedColumnComboChart,\r\n () => new CartesianChart({\r\n chartType: CartesianChartType.LineStackedColumnCombo,\r\n cartesianSmallViewPortProperties: this.smallViewPortProperties.CartesianSmallViewPortProperties,\r\n trimOrdinalDataOnOverflow: trimOrdinalDataOnOverflow\r\n }));\r\n createPlugin(this.visualPlugins, powerbi.visuals.plugins.scatterChart,\r\n () => new CartesianChart({\r\n chartType: CartesianChartType.Scatter,\r\n cartesianSmallViewPortProperties: this.smallViewPortProperties.CartesianSmallViewPortProperties,\r\n behavior: new CartesianChartBehavior([new ScatterChartMobileBehavior()])\r\n }));\r\n createPlugin(this.visualPlugins, powerbi.visuals.plugins.gauge,\r\n () => new Gauge({\r\n gaugeSmallViewPortProperties: this.smallViewPortProperties.GaugeSmallViewPortProperties\r\n }));\r\n createPlugin(this.visualPlugins, powerbi.visuals.plugins.funnel,\r\n () => new FunnelChart({\r\n animator: null,\r\n funnelSmallViewPortProperties: this.smallViewPortProperties.FunnelSmallViewPortProperties\r\n }));\r\n createPlugin(this.visualPlugins, powerbi.visuals.plugins.donutChart,\r\n () => new DonutChart({\r\n disableGeometricCulling: true,\r\n smallViewPortProperties: this.smallViewPortProperties.DonutSmallViewPortProperties\r\n }));\r\n createPlugin(this.visualPlugins, powerbi.visuals.plugins.pieChart,\r\n () => new DonutChart({\r\n sliceWidthRatio: 0,\r\n disableGeometricCulling: true,\r\n smallViewPortProperties: this.smallViewPortProperties.DonutSmallViewPortProperties\r\n }));\r\n createPlugin(this.visualPlugins, powerbi.visuals.plugins.matrix,\r\n () => new Matrix({\r\n isTouchEnabled: true\r\n }));\r\n createPlugin(this.visualPlugins, powerbi.visuals.plugins.table,\r\n () => new Table({\r\n isTouchEnabled: true\r\n }));\r\n createPlugin(this.visualPlugins, powerbi.visuals.plugins.map,\r\n () => new Map({\r\n viewChangeThrottleInterval: mapThrottleInterval\r\n }));\r\n createPlugin(this.visualPlugins, powerbi.visuals.plugins.filledMap,\r\n () => new Map({\r\n filledMap: true,\r\n viewChangeThrottleInterval: mapThrottleInterval\r\n }));\r\n }\r\n\r\n public getPlugin(type: string): IVisualPlugin {\r\n if (this.visualPlugins[type])\r\n return this.visualPlugins[type];\r\n\r\n return super.getPlugin(type);\r\n }\r\n\r\n // Windows phone webView chokes when zooming on heavy maps,\r\n // this is a workaround to allow a relatively smooth pinch to zoom experience.\r\n private getMapThrottleInterval(): number {\r\n const windowsPhoneThrottleInterval = 100;\r\n let userAgentLowerCase = navigator.userAgent.toLowerCase();\r\n if (userAgentLowerCase.indexOf('windows phone') !== -1) {\r\n return windowsPhoneThrottleInterval;\r\n }\r\n\r\n return undefined;\r\n }\r\n }\r\n\r\n // this function is called by tests\r\n export function create(): IVisualPluginService {\r\n return new VisualPluginService(undefined);\r\n }\r\n\r\n export function createVisualPluginService(featureSwitch: MinervaVisualFeatureSwitches): IVisualPluginService {\r\n return new VisualPluginService(featureSwitch);\r\n }\r\n\r\n export function createMinerva(featureSwitches: MinervaVisualFeatureSwitches): IVisualPluginService {\r\n return new MinervaVisualPluginService(featureSwitches);\r\n }\r\n\r\n export function createDashboard(featureSwitches: MinervaVisualFeatureSwitches): IVisualPluginService {\r\n return new DashboardPluginService(featureSwitches);\r\n }\r\n\r\n export function createInsights(featureSwitches: MinervaVisualFeatureSwitches): IVisualPluginService {\r\n return new InsightsPluginService(featureSwitches);\r\n }\r\n\r\n export function createMobile(smallViewPortProperties?: SmallViewPortProperties): IVisualPluginService {\r\n return new MobileVisualPluginService(smallViewPortProperties);\r\n }\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../../_references.ts\"/>\r\n\r\nmodule powerbi.visuals.controls {\r\n\r\n const UNSELECTABLE_CLASS_NAME = \"unselectable\";\r\n\r\n export function fire(eventHandlers, eventArgs) {\r\n if (eventHandlers) {\r\n for (let i = 0; i < eventHandlers.length; i++) {\r\n let h = eventHandlers[i];\r\n h(eventArgs);\r\n }\r\n }\r\n }\r\n\r\n export class ScrollbarButton {\r\n // Const\r\n // TODO: Move to style\r\n static MIN_WIDTH = 26;\r\n static ARROW_COLOR: string = \"#404040\";\r\n\r\n // Fields\r\n private _element: HTMLDivElement;\r\n private _polygon: SVGElement;\r\n private _svg: HTMLElement;\r\n private _owner: Scrollbar;\r\n private _direction: number;\r\n private _timerHandle: number;\r\n private _mouseUpWrapper: any;\r\n\r\n // Constructor\r\n constructor(owner: Scrollbar, direction: number) {\r\n this._owner = owner;\r\n this._direction = direction;\r\n this._timerHandle = undefined;\r\n this.createView();\r\n let that = this;\r\n this._element.addEventListener(\"mousedown\", function (e) { that.onMouseDown(<MouseEvent>e); });\r\n $(this._element).addClass(UNSELECTABLE_CLASS_NAME);\r\n $(this._svg).addClass(UNSELECTABLE_CLASS_NAME);\r\n $(this._polygon).addClass(UNSELECTABLE_CLASS_NAME);\r\n }\r\n\r\n // Properties\r\n public get element(): HTMLDivElement {\r\n return this._element;\r\n }\r\n\r\n // Methods\r\n private createView(): void {\r\n let svgns = \"http://www.w3.org/2000/svg\";\r\n\r\n this._polygon = <SVGElement>document.createElementNS(svgns, \"polygon\");\r\n this._polygon.setAttributeNS(null, \"points\", \"3,3 6,3 13,8 6,13 3,13 10,8\");\r\n this._polygon.setAttributeNS(null, \"fill\", ScrollbarButton.ARROW_COLOR);\r\n\r\n this._svg = <HTMLElement>document.createElementNS(svgns, \"svg\");\r\n let svgStyle = this._svg.style;\r\n svgStyle.position = \"absolute\";\r\n svgStyle.left = \"0px\";\r\n svgStyle.top = \"0px\";\r\n this._svg.appendChild(this._polygon);\r\n\r\n this._element = <HTMLDivElement>document.createElement(\"div\");\r\n this._element.className = Scrollbar.arrowClassName;\r\n this._element.appendChild(this._svg);\r\n\r\n this._owner.element.appendChild(this._element);\r\n }\r\n\r\n private onMouseDown(event: MouseEvent): void {\r\n let that = this;\r\n clearTimeout(this._timerHandle);\r\n if (!this._mouseUpWrapper) {\r\n event.cancelBubble = true;\r\n let that = this;\r\n this._mouseUpWrapper = function (event) { that.onMouseUp(event); };\r\n Scrollbar.addDocumentMouseUpEvent(this._mouseUpWrapper);\r\n }\r\n this._owner._scrollSmallIncrement(this._direction);\r\n this._owner.refresh();\r\n this._timerHandle = setTimeout(function () { that.onMouseDown(event); }, 100);\r\n if (event.preventDefault) {\r\n event.preventDefault(); // prevent dragging\r\n }\r\n }\r\n\r\n private onMouseUp(event: MouseEvent): void {\r\n clearTimeout(this._timerHandle);\r\n Scrollbar.removeDocumentMouseUpEvent(this._mouseUpWrapper);\r\n this._mouseUpWrapper = undefined;\r\n }\r\n\r\n public arrange(width: number, height: number, angle: number): void {\r\n let size = Math.min(width, height);\r\n let scale = size / 16;\r\n let x = (width - size) / 2;\r\n let y = (height - size) / 2;\r\n this._polygon.setAttributeNS(null, \"transform\", \"translate(\" + x + \", \" + y + \") scale(\" + scale + \") rotate(\" + angle + \",8,8)\");\r\n this._svg.setAttributeNS(null, \"width\", width + \"px\");\r\n this._svg.setAttributeNS(null, \"height\", height + \"px\");\r\n\r\n HTMLElementUtils.setElementWidth(this._element, width);\r\n HTMLElementUtils.setElementHeight(this._element, height);\r\n }\r\n }\r\n\r\n /** Scrollbar base class */\r\n export class Scrollbar {\r\n public static DefaultScrollbarWidth = \"15px\"; // protected\r\n private static ScrollbarBackgroundFirstTimeMousedownHoldDelay = 500;\r\n private static ScrollbarBackgroundMousedownHoldDelay = 50;\r\n private static MouseWheelRange = 120;\r\n\r\n static className = \"scroll-bar-div\";\r\n static barClassName = \"scroll-bar-part-bar\";\r\n static arrowClassName = \"scroll-bar-part-arrow\";\r\n\r\n public MIN_BAR_SIZE = 10;\r\n\r\n public min: number = 0;\r\n public max: number = 10;\r\n public viewMin: number = 0;\r\n public viewSize: number = 2;\r\n public smallIncrement: number = 1;\r\n\r\n public _onscroll: any[] = [];\r\n\r\n private _actualWidth: number;\r\n private _actualHeight: number;\r\n private _actualButtonWidth: number;\r\n private _actualButtonHeight: number;\r\n\r\n private _width: string;\r\n private _height: string;\r\n private _visible: boolean;\r\n\r\n private _element: HTMLDivElement;\r\n private _minButton: ScrollbarButton;\r\n private _maxButton: ScrollbarButton;\r\n private _middleBar: HTMLDivElement;\r\n\r\n private _timerHandle: number;\r\n private _screenToOffsetScale: number = 1.0;\r\n\r\n private _screenPrevMousePos: { x: number; y: number; };\r\n private _screenMinMousePos: number;\r\n private _screenMaxMousePos: number;\r\n\r\n private _backgroundMouseUpWrapper: any;\r\n private _middleBarMouseMoveWrapper: any;\r\n private _middleBarMouseUpWrapper: any;\r\n\r\n // Touch memmbers\r\n private _touchPanel: HTMLElement;\r\n private _offsetTouchStartPos: { x: number; y: number; };\r\n private _offsetTouchPrevPos: { x: number; y: number; };\r\n private _touchStarted: boolean;\r\n private _allowMouseDrag: boolean;\r\n\r\n constructor(parentElement: HTMLElement) {\r\n this.createView(parentElement);\r\n let that = this;\r\n this._element.addEventListener(\"mousedown\", function (e) { that.onBackgroundMouseDown(<MouseEvent>e); });\r\n this._middleBar.addEventListener(\"mousedown\", function (e) { that.onMiddleBarMouseDown(<MouseEvent>e); });\r\n this._timerHandle = undefined;\r\n this._visible = true;\r\n this.element[\"winControl\"] = this;\r\n $(this._touchPanel).addClass(UNSELECTABLE_CLASS_NAME);\r\n }\r\n\r\n public scrollBy(delta: number) {\r\n this.scrollTo(this.viewMin + delta);\r\n }\r\n\r\n public scrollUp(): void {\r\n this.scrollBy(-this.smallIncrement);\r\n }\r\n\r\n public scrollDown(): void {\r\n this.scrollBy(this.smallIncrement);\r\n }\r\n\r\n public scrollPageUp(): void {\r\n this.scrollBy(-this.viewSize);\r\n }\r\n\r\n public scrollPageDown(): void {\r\n this.scrollBy(this.viewSize);\r\n }\r\n\r\n public set width(value: string) {\r\n this._width = value;\r\n this._element.style.width = value;\r\n this.invalidateArrange();\r\n }\r\n\r\n public get width(): string {\r\n return this._width;\r\n }\r\n\r\n public set height(value: string) {\r\n this._height = value;\r\n this._element.style.height = value;\r\n this.invalidateArrange();\r\n }\r\n\r\n public get height(): string {\r\n return this._height;\r\n }\r\n\r\n public refresh(): void {\r\n debug.assertFail(\"PureVirtualMethod: Scrollbar.refresh()\");\r\n }\r\n\r\n public get element(): HTMLDivElement {\r\n return this._element;\r\n }\r\n\r\n public get maxButton(): ScrollbarButton {\r\n return this._maxButton;\r\n }\r\n\r\n public get middleBar(): HTMLDivElement {\r\n return this._middleBar;\r\n }\r\n\r\n public _scrollSmallIncrement(direction): void { // intent to be internal\r\n this.scrollBy(this.smallIncrement * direction);\r\n }\r\n\r\n public get visible(): boolean {\r\n return this._visible;\r\n }\r\n\r\n public get isInMouseCapture(): boolean {\r\n return this._timerHandle !== undefined;\r\n }\r\n\r\n public show(value: boolean): void {\r\n this._visible = value;\r\n this.element.style.visibility = value ? \"visible\" : \"hidden\";\r\n this.invalidateArrange();\r\n }\r\n\r\n public _getMouseOffset(event: MouseEvent): { x: number; y: number; } { // protected\r\n if (event.offsetX !== undefined)\r\n return { x: event.offsetX, y: event.offsetY };\r\n if (event.layerX !== undefined)\r\n return { x: event.layerX, y: event.layerY };\r\n return { x: event.screenX, y: event.screenY };\r\n }\r\n\r\n public _getOffsetXDelta(event: MouseEvent): number { // protected\r\n return (event.screenX - this._screenPrevMousePos.x) / this._screenToOffsetScale;\r\n }\r\n\r\n public _getOffsetYDelta(event: MouseEvent): number { // protected\r\n return (event.screenY - this._screenPrevMousePos.y) / this._screenToOffsetScale;\r\n }\r\n\r\n public _getOffsetXTouchDelta(event: MouseEvent): number { // protected\r\n return this._getMouseOffset(event).x - this._offsetTouchPrevPos.x;\r\n }\r\n\r\n public _getOffsetYTouchDelta(event: MouseEvent): number { // protected\r\n return this._getMouseOffset(event).y - this._offsetTouchPrevPos.y;\r\n }\r\n\r\n public initTouch(panel: HTMLElement, allowMouseDrag?: boolean): void {\r\n this._touchPanel = panel;\r\n this._allowMouseDrag = allowMouseDrag === undefined ? true : allowMouseDrag;\r\n if (\"ontouchmove\" in panel) {\r\n panel.addEventListener(\"touchstart\", e => this.onTouchStart(e));\r\n panel.addEventListener(\"touchmove\", e => this.onTouchMove(e));\r\n panel.addEventListener(\"touchend\", e => this.onTouchEnd(e));\r\n }\r\n else {\r\n panel.addEventListener(\"mousedown\", e => this.onTouchMouseDown(<MouseEvent>e));\r\n panel.addEventListener(\"mousemove\", e => this.onTouchMouseMove(<MouseEvent>e));\r\n panel.addEventListener(\"mouseup\", e => this.onTouchMouseUp(<MouseEvent>e));\r\n }\r\n }\r\n\r\n public onTouchStart(e: any) {\r\n if (e.touches.length === 1) {\r\n this.onTouchMouseDown(e.touches[0]);\r\n }\r\n }\r\n\r\n public onTouchMove(e: any) {\r\n if (e.touches.length === 1) {\r\n if (e.preventDefault)\r\n e.preventDefault();\r\n this.onTouchMouseMove(e.touches[0]);\r\n }\r\n }\r\n\r\n public onTouchEnd(e: any) {\r\n this.onTouchMouseUp(e.touches.length === 1 ? e.touches[0] : e, true);\r\n }\r\n\r\n public onTouchMouseDown(e: MouseEvent) {\r\n // except IE touch cancels mouse so not need for detection. For IE touch and mouse difference is detected by a flag.\r\n if (!this._allowMouseDrag &&\r\n e[\"pointerType\"] === (<MSPointerEventExtension>MSPointerEvent).MSPOINTER_TYPE_MOUSE) {\r\n return;\r\n }\r\n if (\"setCapture\" in this._touchPanel) {\r\n this._touchPanel.setCapture(true);\r\n }\r\n this._offsetTouchPrevPos = this._offsetTouchStartPos = null;\r\n this._touchStarted = true;\r\n }\r\n\r\n public _getOffsetTouchDelta(e: MouseEvent): number {\r\n debug.assertFail(\"PureVirtualMethod: Scrollbar._getOffsetTouchDelta()\");\r\n return null;\r\n }\r\n\r\n public onTouchMouseMove(e: MouseEvent) {\r\n if (this._touchStarted) {\r\n if (!this._offsetTouchStartPos) {\r\n this._offsetTouchPrevPos = this._offsetTouchStartPos = this._getMouseOffset(e);\r\n }\r\n\r\n let delta = this._getOffsetTouchDelta(e);\r\n if (delta !== 0) {\r\n this.scrollBy(-delta / this._getRunningSize(false) * this.viewSize);\r\n this._offsetTouchPrevPos = this._getMouseOffset(e);\r\n }\r\n if (e.preventDefault)\r\n e.preventDefault();\r\n\r\n e.cancelBubble = true;\r\n }\r\n }\r\n\r\n public onTouchMouseUp(e: MouseEvent, bubble?: boolean) {\r\n if (this._touchStarted) {\r\n if (this._offsetTouchStartPos) {\r\n let end = this._getMouseOffset(e);\r\n if (!bubble && (Math.abs(this._offsetTouchStartPos.x - end.x) > 3 || Math.abs(this._offsetTouchStartPos.y - end.y) > 3)) {\r\n if (e.preventDefault)\r\n e.preventDefault();\r\n\r\n e.cancelBubble = true;\r\n }\r\n }\r\n }\r\n if (\"releaseCapture\" in this._touchPanel) {\r\n this._touchPanel.releaseCapture();\r\n }\r\n this._touchStarted = false;\r\n }\r\n\r\n public registerElementForMouseWheelScrolling(element: HTMLElement): void {\r\n element.addEventListener(\"mousewheel\",(e) => { this.onMouseWheel(<MouseWheelEvent>e); });\r\n element.addEventListener(\"DOMMouseScroll\",(e) => { this.onFireFoxMouseWheel(<MouseWheelEvent>e); });\r\n }\r\n\r\n private createView(parentElement: HTMLElement): void {\r\n this._element = <HTMLDivElement>document.createElement(\"div\");\r\n this._element.className = Scrollbar.className;\r\n this._element.setAttribute(\"drag-resize-disabled\", \"true\");\r\n parentElement.appendChild(this._element);\r\n\r\n this._minButton = new ScrollbarButton(this, -1);\r\n this._maxButton = new ScrollbarButton(this, 1);\r\n\r\n this._middleBar = <HTMLDivElement>document.createElement(\"div\");\r\n this._middleBar.className = Scrollbar.barClassName;\r\n this._element.appendChild(this._middleBar);\r\n }\r\n\r\n private scrollTo(pos: number): void {\r\n let viewMin = Math.min(this.max - this.viewSize, Math.max(this.min, pos));\r\n if (viewMin !== this.viewMin) {\r\n this.viewMin = viewMin;\r\n fire(this._onscroll, null);\r\n }\r\n }\r\n\r\n public _scrollByPage(event: MouseEvent): void {\r\n debug.assertFail(\"PureVirtualMethod: Scrollbar._scrollByPage()\");\r\n }\r\n\r\n public _getRunningSize(net: boolean): number {\r\n debug.assertFail(\"PureVirtualMethod: Scrollbar._getRunningSize()\");\r\n return null;\r\n }\r\n\r\n public _getOffsetDelta(event: MouseEvent): number {\r\n debug.assertFail(\"PureVirtualMethod: Scrollbar._getOffsetDelta()\");\r\n return null;\r\n }\r\n\r\n private scroll(event: MouseEvent): void {\r\n let delta: number = this._getOffsetDelta(event) / this._getRunningSize(true) * (this.max - this.min);\r\n\r\n if (delta < 0) {\r\n if (this._getScreenMousePos(event) >= this._screenMaxMousePos) {\r\n return;\r\n }\r\n }\r\n else if (delta > 0) {\r\n if (this._getScreenMousePos(event) <= this._screenMinMousePos) {\r\n return;\r\n }\r\n }\r\n\r\n this.scrollBy(delta);\r\n }\r\n\r\n public get actualWidth(): number {\r\n if (this._actualWidth === undefined) {\r\n this.arrange();\r\n }\r\n return this._actualWidth;\r\n }\r\n\r\n public get actualHeight(): number {\r\n if (!this._actualHeight === undefined) {\r\n this.arrange();\r\n }\r\n return this._actualHeight;\r\n }\r\n\r\n public get actualButtonWidth(): number {\r\n if (!this._actualButtonWidth === undefined) {\r\n this.arrange();\r\n }\r\n return this._actualButtonWidth;\r\n }\r\n\r\n public get actualButtonHeight(): number {\r\n if (!this._actualButtonHeight === undefined) {\r\n this.arrange();\r\n }\r\n return this._actualButtonHeight;\r\n }\r\n\r\n public arrange(): void {\r\n if (!this._actualWidth) {\r\n this._actualWidth = this._element.offsetWidth;\r\n this._actualHeight = this._element.offsetHeight;\r\n this._actualButtonWidth = this._calculateButtonWidth();\r\n this._actualButtonHeight = this._calculateButtonHeight();\r\n this._minButton.arrange(this._actualButtonWidth, this._actualButtonHeight, this._getMinButtonAngle());\r\n this._maxButton.arrange(this._actualButtonWidth, this._actualButtonHeight, this._getMaxButtonAngle());\r\n this._setMaxButtonPosition();\r\n }\r\n }\r\n\r\n public _calculateButtonWidth(): number {\r\n debug.assertFail(\"PureVirtualMethod: Scrollbar._calculateButtonWidth()\");\r\n return null;\r\n }\r\n\r\n public _calculateButtonHeight(): number {\r\n debug.assertFail(\"PureVirtualMethod: Scrollbar._calculateButtonHeight()\");\r\n return null;\r\n }\r\n\r\n public _getMinButtonAngle(): number {\r\n debug.assertFail(\"PureVirtualMethod: Scrollbar._getMinButtonAngle()\");\r\n return null;\r\n }\r\n\r\n public _getMaxButtonAngle(): number {\r\n debug.assertFail(\"PureVirtualMethod: Scrollbar._getMaxButtonAngle()\");\r\n return null;\r\n }\r\n\r\n public _setMaxButtonPosition() {\r\n debug.assertFail(\"PureVirtualMethod: Scrollbar._setMaxButtonPosition()\");\r\n }\r\n\r\n public invalidateArrange() {\r\n this._actualWidth = undefined;\r\n this._actualHeight = undefined;\r\n this._actualButtonWidth = undefined;\r\n this._actualButtonHeight = undefined;\r\n }\r\n\r\n private onHoldBackgroundMouseDown(event: MouseEvent): void {\r\n let holdDelay = this._timerHandle ?\r\n Scrollbar.ScrollbarBackgroundMousedownHoldDelay :\r\n Scrollbar.ScrollbarBackgroundFirstTimeMousedownHoldDelay;\r\n this._timerHandle = setTimeout(() => {\r\n this.onBackgroundMouseDown(event);\r\n }, holdDelay);\r\n }\r\n\r\n private onBackgroundMouseDown(event: MouseEvent): void {\r\n let that = this;\r\n clearTimeout(this._timerHandle);\r\n if (!this._backgroundMouseUpWrapper) {\r\n event.cancelBubble = true;\r\n this._backgroundMouseUpWrapper = function (event) { that.onBackgroundMouseUp(event); };\r\n Scrollbar.addDocumentMouseUpEvent(this._backgroundMouseUpWrapper);\r\n }\r\n this._scrollByPage(event);\r\n this.refresh();\r\n this.onHoldBackgroundMouseDown(event);\r\n if (event.preventDefault)\r\n event.preventDefault(); // prevent dragging\r\n }\r\n\r\n private onBackgroundMouseUp(event: MouseEvent): void {\r\n clearTimeout(this._timerHandle);\r\n this._timerHandle = undefined;\r\n Scrollbar.removeDocumentMouseUpEvent(this._backgroundMouseUpWrapper);\r\n this._backgroundMouseUpWrapper = undefined;\r\n }\r\n\r\n private getPinchZoomY(): number {\r\n return document.documentElement.clientHeight / window.innerHeight;\r\n }\r\n\r\n private onMiddleBarMouseDown(event: MouseEvent): void {\r\n event.cancelBubble = true;\r\n this._screenPrevMousePos = { x: event.screenX, y: event.screenY };\r\n this._screenMinMousePos = this._getScreenMousePos(event) - (this._getScreenContextualLeft(this._middleBar) - this._getScreenContextualRight(this._minButton.element));\r\n this._screenMaxMousePos = this._getScreenMousePos(event) + (this._getScreenContextualLeft(this._maxButton.element) - this._getScreenContextualRight(this._middleBar));\r\n this._screenToOffsetScale = HTMLElementUtils.getAccumulatedScale(this.element) * this.getPinchZoomY();\r\n let that = this;\r\n this._middleBarMouseMoveWrapper = function (e) { that.onMiddleBarMouseMove(e); };\r\n Scrollbar.addDocumentMouseMoveEvent(this._middleBarMouseMoveWrapper);\r\n this._middleBarMouseUpWrapper = function (e) { that.onMiddleBarMouseUp(e); };\r\n Scrollbar.addDocumentMouseUpEvent(this._middleBarMouseUpWrapper);\r\n if (event.preventDefault)\r\n event.preventDefault(); // prevent dragging\r\n }\r\n\r\n private onMiddleBarMouseMove(event: MouseEvent): void {\r\n if (!this._screenPrevMousePos) {\r\n return;\r\n }\r\n this.scroll(event);\r\n this.refresh();\r\n this._screenPrevMousePos = { x: event.screenX, y: event.screenY };\r\n }\r\n\r\n private onMiddleBarMouseUp(event: MouseEvent): void {\r\n this._screenPrevMousePos = undefined;\r\n Scrollbar.removeDocumentMouseMoveEvent(this._middleBarMouseMoveWrapper);\r\n this._middleBarMouseMoveWrapper = undefined;\r\n Scrollbar.removeDocumentMouseUpEvent(this._middleBarMouseUpWrapper);\r\n this._middleBarMouseUpWrapper = undefined;\r\n if (event.preventDefault)\r\n event.preventDefault(); // prevent other events\r\n }\r\n\r\n public _getScreenContextualLeft(element: HTMLElement): number {\r\n debug.assertFail(\"PureVirtualMethod: Scrollbar._getScreenContextualLeft()\");\r\n return null;\r\n }\r\n\r\n public _getScreenContextualRight(element: HTMLElement): number {\r\n debug.assertFail(\"PureVirtualMethod: Scrollbar._getScreenContextualRight()\");\r\n return null;\r\n }\r\n\r\n public onMouseWheel(e: MouseWheelEvent): void {\r\n if (e.wheelDelta) {\r\n this.mouseWheel(e.wheelDelta);\r\n }\r\n }\r\n\r\n public onFireFoxMouseWheel(e: MouseWheelEvent): void {\r\n if (e.detail) {\r\n this.mouseWheel(-e.detail);\r\n }\r\n }\r\n\r\n private mouseWheel(delta: number): void {\r\n if (this.visible) {\r\n if (delta < 0) { // fix for issue 786411 (Some machines won't have the delta as multiple of 120)\r\n delta = Math.min(-Scrollbar.MouseWheelRange, delta);\r\n }\r\n else if (delta > 0) {\r\n delta = Math.max(Scrollbar.MouseWheelRange, delta);\r\n }\r\n\r\n this.scrollBy(-delta / Scrollbar.MouseWheelRange * this.smallIncrement);\r\n }\r\n }\r\n\r\n public _getScreenMousePos(event: MouseEvent) {\r\n debug.assertFail(\"PureVirtualMethod: Scrollbar._getScreenMousePos()\");\r\n return null;\r\n }\r\n\r\n static addDocumentMouseUpEvent(func: any): void {\r\n document.addEventListener(\"mouseup\", func);\r\n }\r\n\r\n static removeDocumentMouseUpEvent(func: any): void {\r\n document.removeEventListener(\"mouseup\", func);\r\n }\r\n\r\n static addDocumentMouseMoveEvent(func): void {\r\n document.addEventListener(\"mousemove\", func);\r\n }\r\n\r\n static removeDocumentMouseMoveEvent(func): void {\r\n document.removeEventListener(\"mousemove\", func);\r\n }\r\n }\r\n\r\n /** Horizontal Scrollbar */\r\n export class HorizontalScrollbar extends Scrollbar {\r\n constructor(parentElement: HTMLElement) {\r\n super(parentElement);\r\n this.height = Scrollbar.DefaultScrollbarWidth;\r\n }\r\n\r\n public _calculateButtonWidth() {\r\n return Math.min(this.actualWidth / 2, Math.max(this.actualHeight, ScrollbarButton.MIN_WIDTH));\r\n }\r\n\r\n public _calculateButtonHeight() {\r\n return this.actualHeight;\r\n }\r\n\r\n public _getMinButtonAngle(): number {\r\n return -180;\r\n }\r\n\r\n public _getMaxButtonAngle(): number {\r\n return 0;\r\n }\r\n\r\n public _setMaxButtonPosition() {\r\n HTMLElementUtils.setElementLeft(this.maxButton.element, this.actualWidth - this.actualButtonWidth);\r\n }\r\n\r\n public refresh(): void {\r\n this.arrange();\r\n let runningSize = this.actualWidth - this.actualButtonWidth * 2 - 2;\r\n let barSize = this.viewSize / (this.max - this.min) * runningSize;\r\n if (barSize < this.MIN_BAR_SIZE) {\r\n runningSize -= this.MIN_BAR_SIZE - barSize;\r\n barSize = this.MIN_BAR_SIZE;\r\n }\r\n if (runningSize < 0) {\r\n runningSize = 0;\r\n barSize = 0;\r\n }\r\n barSize = Math.min(barSize, runningSize);\r\n let barPos = this.viewMin / (this.max - this.min) * runningSize;\r\n HTMLElementUtils.setElementWidth(this.middleBar, barSize);\r\n HTMLElementUtils.setElementHeight(this.middleBar, this.actualHeight);\r\n HTMLElementUtils.setElementLeft(this.middleBar, this.actualButtonWidth + 1 + barPos);\r\n }\r\n\r\n public show(visible: boolean): void {\r\n if (visible === this.visible)\r\n return;\r\n\r\n super.show(visible);\r\n if (visible) {\r\n this.element.style.height = this.height;\r\n }\r\n else {\r\n HTMLElementUtils.setElementHeight(this.element, 0);\r\n }\r\n }\r\n\r\n public _scrollByPage(event: MouseEvent): void {\r\n let left = this.middleBar.offsetLeft;\r\n let right = left + this.middleBar.offsetWidth;\r\n let x = (event.offsetX === undefined) ? event.layerX : event.offsetX;\r\n if (x > right) {\r\n this.scrollPageDown();\r\n } else if (x < left) {\r\n this.scrollPageUp();\r\n }\r\n }\r\n\r\n public _getRunningSize(net: boolean): number {\r\n let result = this.actualWidth;\r\n if (net) {\r\n let barMinPos = this.actualButtonWidth + 1;\r\n result -= barMinPos * 2;\r\n let barSize = result * (this.viewSize / (this.max - this.min));\r\n if (barSize < this.MIN_BAR_SIZE)\r\n result -= this.MIN_BAR_SIZE - barSize;\r\n }\r\n return result;\r\n }\r\n\r\n public _getOffsetDelta(event: MouseEvent): number {\r\n return this._getOffsetXDelta(event);\r\n }\r\n\r\n public _getOffsetTouchDelta(e: MouseEvent): number {\r\n return this._getOffsetXTouchDelta(e);\r\n }\r\n\r\n public _getScreenContextualLeft(element: HTMLElement): number {\r\n return element.getBoundingClientRect().left;\r\n }\r\n\r\n public _getScreenContextualRight(element: HTMLElement): number {\r\n return element.getBoundingClientRect().right;\r\n }\r\n\r\n public _getScreenMousePos(event: MouseEvent) {\r\n return event.screenX;\r\n }\r\n }\r\n\r\n /** Vertical Scrollbar */\r\n export class VerticalScrollbar extends Scrollbar {\r\n constructor(parentElement: HTMLElement) {\r\n super(parentElement);\r\n this.width = Scrollbar.DefaultScrollbarWidth;\r\n }\r\n\r\n public _calculateButtonWidth() {\r\n return this.actualWidth;\r\n }\r\n\r\n public _calculateButtonHeight() {\r\n return Math.min(this.actualHeight / 2, Math.max(this.actualWidth, ScrollbarButton.MIN_WIDTH));\r\n }\r\n\r\n public _getMinButtonAngle(): number {\r\n return -90;\r\n }\r\n\r\n public _getMaxButtonAngle(): number {\r\n return 90;\r\n }\r\n\r\n public _setMaxButtonPosition() {\r\n HTMLElementUtils.setElementTop(this.maxButton.element, this.actualHeight - this.actualButtonHeight);\r\n }\r\n\r\n public refresh(): void {\r\n this.arrange();\r\n let runningSize = this.actualHeight - this.actualButtonHeight * 2 - 2;\r\n let barSize = this.viewSize / (this.max - this.min) * runningSize;\r\n if (barSize < this.MIN_BAR_SIZE) {\r\n runningSize -= this.MIN_BAR_SIZE - barSize;\r\n barSize = this.MIN_BAR_SIZE;\r\n }\r\n if (runningSize < 0) {\r\n runningSize = 0;\r\n barSize = 0;\r\n }\r\n let barPos = this.viewMin / (this.max - this.min) * runningSize;\r\n HTMLElementUtils.setElementWidth(this.middleBar, this.actualWidth);\r\n HTMLElementUtils.setElementHeight(this.middleBar, barSize);\r\n HTMLElementUtils.setElementTop(this.middleBar, this.actualButtonHeight + 1 + barPos);\r\n }\r\n\r\n public show(visible: boolean): void {\r\n if (visible === this.visible)\r\n return;\r\n\r\n super.show(visible);\r\n if (visible) {\r\n this.element.style.width = this.width;\r\n }\r\n else {\r\n HTMLElementUtils.setElementWidth(this.element, 0);\r\n }\r\n }\r\n\r\n public _scrollByPage(event: MouseEvent): void {\r\n let top = this.middleBar.offsetTop;\r\n let bottom = top + this.middleBar.offsetHeight;\r\n let y = (event.offsetY === undefined) ? event.layerY : event.offsetY;\r\n if (y > bottom) {\r\n this.scrollPageDown();\r\n } else if (y < top) {\r\n this.scrollPageUp();\r\n }\r\n }\r\n\r\n public _getRunningSize(net: boolean): number {\r\n let result = this.actualHeight;\r\n if (net) {\r\n let barMinPos = this.actualButtonHeight + 1;\r\n result -= barMinPos * 2;\r\n let barSize = result * (this.viewSize / (this.max - this.min));\r\n if (barSize < this.MIN_BAR_SIZE)\r\n result -= this.MIN_BAR_SIZE - barSize;\r\n }\r\n return result;\r\n }\r\n\r\n public _getOffsetDelta(event: MouseEvent): number {\r\n return this._getOffsetYDelta(event);\r\n }\r\n\r\n public _getOffsetTouchDelta(e: MouseEvent): number {\r\n return this._getOffsetYTouchDelta(e);\r\n }\r\n\r\n public _getScreenContextualLeft(element: HTMLElement): number {\r\n return element.getBoundingClientRect().top;\r\n }\r\n\r\n public _getScreenContextualRight(element: HTMLElement): number {\r\n return element.getBoundingClientRect().bottom;\r\n }\r\n\r\n public _getScreenMousePos(event: MouseEvent) {\r\n return event.screenY;\r\n }\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../../../_references.ts\"/>\r\n\r\nmodule powerbi.visuals.controls.internal {\r\n\r\n const UNSELECTABLE_CLASS_NAME = \"unselectable\";\r\n\r\n /** This class is responsible for tablix header resizing */\r\n export class TablixResizer {\r\n private _element: HTMLElement;\r\n private _handler: ITablixResizeHandler;\r\n private _elementMouseDownWrapper: any;\r\n private _elementMouseMoveWrapper: any;\r\n private _elementMouseOutWrapper: any;\r\n private _elementMouseDoubleClickOutWrapper: any;\r\n private _documentMouseMoveWrapper: any;\r\n private _documentMouseUpWrapper: any;\r\n private _startMousePosition: { x: number; y: number; };\r\n private _originalCursor: string;\r\n\r\n static resizeHandleSize = 4;\r\n static resizeCursor = \"e-resize\";\r\n\r\n constructor(element: HTMLElement, handler: ITablixResizeHandler) {\r\n this._element = element;\r\n this._handler = handler;\r\n this._elementMouseDownWrapper = null;\r\n this._elementMouseMoveWrapper = null;\r\n this._elementMouseOutWrapper = null;\r\n this._documentMouseMoveWrapper = null;\r\n this._documentMouseUpWrapper = null;\r\n this._startMousePosition = null;\r\n this._originalCursor = null;\r\n }\r\n\r\n static addDocumentMouseUpEvent(listener: EventListener): void {\r\n document.addEventListener(\"mouseup\", listener);\r\n }\r\n\r\n static removeDocumentMouseUpEvent(listener: EventListener): void {\r\n document.removeEventListener(\"mouseup\", listener);\r\n }\r\n\r\n static addDocumentMouseMoveEvent(listener: EventListener): void {\r\n document.addEventListener(\"mousemove\", listener);\r\n }\r\n\r\n static removeDocumentMouseMoveEvent(listener: EventListener): void {\r\n document.removeEventListener(\"mousemove\", listener);\r\n }\r\n\r\n static getMouseCoordinates(event: MouseEvent): { x: number; y: number; } {\r\n return { x: event.pageX, y: event.pageY };\r\n }\r\n\r\n static getMouseCoordinateDelta(previous: { x: number; y: number; }, current: { x: number; y: number; }): { x: number; y: number; } {\r\n return { x: current.x - previous.x, y: current.y - previous.y };\r\n }\r\n\r\n public initialize(): void {\r\n this._elementMouseDownWrapper = e => this.onElementMouseDown(<MouseEvent>e);\r\n this._element.addEventListener(\"mousedown\", this._elementMouseDownWrapper);\r\n this._elementMouseMoveWrapper = e => this.onElementMouseMove(<MouseEvent>e);\r\n this._element.addEventListener(\"mousemove\", this._elementMouseMoveWrapper);\r\n this._elementMouseOutWrapper = e => this.onElementMouseOut(<MouseEvent>e);\r\n this._element.addEventListener(\"mouseout\", this._elementMouseOutWrapper);\r\n this._elementMouseDoubleClickOutWrapper = e => this.onElementMouseDoubleClick(<MouseEvent>e);\r\n this._element.addEventListener(\"dblclick\", this._elementMouseDoubleClickOutWrapper);\r\n }\r\n\r\n public uninitialize(): void {\r\n this._element.removeEventListener(\"mousedown\", this._elementMouseDownWrapper);\r\n this._elementMouseDownWrapper = null;\r\n this._element.removeEventListener(\"mousemove\", this._elementMouseMoveWrapper);\r\n this._elementMouseMoveWrapper = null;\r\n this._element.removeEventListener(\"mouseout\", this._elementMouseOutWrapper);\r\n this._elementMouseOutWrapper = null;\r\n this._element.removeEventListener(\"dblclick\", this._elementMouseDoubleClickOutWrapper);\r\n this._elementMouseDoubleClickOutWrapper = null;\r\n }\r\n\r\n public get cell(): TablixCell {\r\n // abstract\r\n debug.assertFail(\"PureVirtualMethod: TablixResizer.cell\");\r\n return null;\r\n }\r\n\r\n public get element(): HTMLElement {\r\n return this._element;\r\n }\r\n\r\n // Protected\r\n public _hotSpot(position: { x: number; y: number; }) {\r\n // abstract\r\n debug.assertFail(\"PureVirtualMethod: TablixResizer._hotSpot\");\r\n return false;\r\n }\r\n\r\n private onElementMouseDown(event: MouseEvent): void {\r\n let position = TablixResizer.getMouseCoordinates(event);\r\n if (!this._hotSpot(position))\r\n return;\r\n\r\n if (\"setCapture\" in this._element) {\r\n this._element.setCapture();\r\n }\r\n\r\n event.cancelBubble = true;\r\n this._startMousePosition = position;\r\n this._documentMouseMoveWrapper = e => this.onDocumentMouseMove(e);\r\n TablixResizer.addDocumentMouseMoveEvent(this._documentMouseMoveWrapper);\r\n this._documentMouseUpWrapper = e => this.onDocumentMouseUp(e);\r\n TablixResizer.addDocumentMouseUpEvent(this._documentMouseUpWrapper);\r\n\r\n if (document.documentElement) {\r\n this._originalCursor = document.documentElement.style.cursor;\r\n document.documentElement.style.cursor = TablixResizer.resizeCursor;\r\n }\r\n\r\n this._handler.onStartResize(this.cell, this._startMousePosition.x, this._startMousePosition.y);\r\n }\r\n\r\n private onElementMouseMove(event: MouseEvent) {\r\n if (!this._startMousePosition) {\r\n if (this._hotSpot(TablixResizer.getMouseCoordinates(event))) {\r\n if (this._originalCursor === null) {\r\n this._originalCursor = this._element.style.cursor;\r\n this._element.style.cursor = TablixResizer.resizeCursor;\r\n }\r\n } else {\r\n if (this._originalCursor !== null) {\r\n this._element.style.cursor = this._originalCursor;\r\n this._originalCursor = null;\r\n }\r\n }\r\n }\r\n }\r\n\r\n private onElementMouseOut(event: MouseEvent) {\r\n if (!this._startMousePosition) {\r\n if (this._originalCursor !== null) {\r\n this._element.style.cursor = this._originalCursor;\r\n this._originalCursor = null;\r\n }\r\n }\r\n }\r\n\r\n private onElementMouseDoubleClick(event: MouseEvent) {\r\n if (!this._hotSpot(TablixResizer.getMouseCoordinates(event)))\r\n return;\r\n\r\n this._handler.onReset(this.cell);\r\n }\r\n\r\n private onDocumentMouseMove(event: MouseEvent): void {\r\n if (!this._startMousePosition)\r\n return;\r\n\r\n let delta = TablixResizer.getMouseCoordinateDelta(this._startMousePosition, TablixResizer.getMouseCoordinates(event));\r\n this._handler.onResize(this.cell, delta.x, delta.y);\r\n }\r\n\r\n private onDocumentMouseUp(event: MouseEvent): void {\r\n this._startMousePosition = null;\r\n\r\n if (\"releaseCapture\" in this._element) {\r\n this._element.releaseCapture();\r\n }\r\n\r\n TablixResizer.removeDocumentMouseMoveEvent(this._documentMouseMoveWrapper);\r\n this._documentMouseMoveWrapper = null;\r\n\r\n TablixResizer.removeDocumentMouseUpEvent(this._documentMouseUpWrapper);\r\n this._documentMouseUpWrapper = null;\r\n\r\n if (document.documentElement)\r\n document.documentElement.style.cursor = this._originalCursor;\r\n\r\n if (event.preventDefault)\r\n event.preventDefault(); // prevent other events\r\n\r\n this._handler.onEndResize(this.cell);\r\n }\r\n }\r\n\r\n export class TablixDomResizer extends TablixResizer {\r\n private _cell: TablixCell;\r\n constructor(cell: TablixCell, element: HTMLElement, handler: ITablixResizeHandler) {\r\n this._cell = cell;\r\n super(element, handler);\r\n }\r\n\r\n public get cell(): TablixCell {\r\n return this._cell;\r\n }\r\n\r\n // Protected\r\n public _hotSpot(position: { x: number; y: number; }) {\r\n return position.x >= this.element.getBoundingClientRect().right - TablixResizer.resizeHandleSize;\r\n }\r\n }\r\n\r\n export class TablixCellPresenter {\r\n static _noMarginsStyle: HTMLStyleElement;\r\n static _noMarginsStyleName = \"bi-tablix-cellNoMarginStyle\";\r\n // Attribute used to disable dragging in order to have cell resizing work.\r\n static _dragResizeDisabledAttributeName = \"drag-resize-disabled\";\r\n\r\n private _owner: TablixCell;\r\n\r\n private _tableCell: HTMLTableCellElement;\r\n private _contentElement: HTMLDivElement;\r\n private _contentHost: HTMLDivElement;\r\n\r\n private _contentHostStyle: string;\r\n private _containerStyle: string;\r\n private _resizer: TablixResizer;\r\n\r\n constructor(fitProportionally: boolean, layoutKind: TablixLayoutKind) {\r\n // Table cell will be created once needed\r\n this._tableCell = null; \r\n\r\n // Content element\r\n this._contentElement = TablixUtils.createDiv();\r\n this._contentElement.style.position = \"relative\";\r\n if (!fitProportionally)\r\n this._contentElement.style.setProperty(\"float\", \"left\");\r\n\r\n // Content Host\r\n this._contentHost = TablixUtils.createDiv();\r\n this._contentHost.style.position = \"relative\";\r\n\r\n this._contentHost.style.textOverflow = \"ellipsis\";\r\n // TODO: this styling should not happen in the cell presenter; refactor to binder or layout manager\r\n if (layoutKind === TablixLayoutKind.DashboardTile) {\r\n // With the current styling bold numbers are cut off at the right; adding a small padding\r\n this._contentHost.style.paddingRight = \"2px\";\r\n this._contentHost.style.height = \"100%\";\r\n }\r\n\r\n this._contentElement.appendChild(this._contentHost);\r\n\r\n this._resizer = null;\r\n TablixCellPresenter.addNoMarginStyle();\r\n }\r\n\r\n public initialize(owner: TablixCell) {\r\n this._owner = owner;\r\n }\r\n\r\n public get owner(): TablixCell {\r\n return this._owner;\r\n }\r\n\r\n public registerTableCell(tableCell: HTMLTableCellElement) {\r\n this._tableCell = tableCell;\r\n\r\n tableCell.appendChild(this._contentElement);\r\n tableCell.className = TablixCellPresenter._noMarginsStyleName;\r\n\r\n // TODO: Push to CSS\r\n tableCell.style.verticalAlign = \"top\";\r\n tableCell.style.lineHeight = \"normal\";\r\n }\r\n\r\n public get tableCell(): HTMLTableCellElement {\r\n return this._tableCell;\r\n }\r\n\r\n public get contentElement(): HTMLElement {\r\n return this._contentElement;\r\n }\r\n\r\n public get contentHost(): HTMLElement {\r\n return this._contentHost;\r\n }\r\n\r\n public registerClickHandler(handler: (e: MouseEvent) => any): void {\r\n this._contentElement.onclick = handler;\r\n }\r\n\r\n public unregisterClickHandler(): void {\r\n this._contentElement.onclick = null;\r\n }\r\n\r\n public onContentWidthChanged(value: number): void {\r\n HTMLElementUtils.setElementWidth(this._contentElement, value);\r\n }\r\n\r\n public onContentHeightChanged(height: number): void {\r\n HTMLElementUtils.setElementHeight(this._contentElement, height);\r\n }\r\n\r\n public onColumnSpanChanged(value: number): void {\r\n this._tableCell.colSpan = value;\r\n }\r\n\r\n public onRowSpanChanged(value: number): void {\r\n this._tableCell.rowSpan = value;\r\n }\r\n\r\n public onTextAlignChanged(value: string): void {\r\n this._tableCell.style.textAlign = value;\r\n }\r\n\r\n public setColumnSeparator(separatorColor: string, separatorWeight: number): void {\r\n this._tableCell.style.borderLeft = separatorWeight + TablixUtils.UnitOfMeasurement + \" \" + TablixUtils.DefaultColumnSeparatorStyle + \" \" + separatorColor;\r\n }\r\n\r\n public setFontColor(fontColor: string): void {\r\n this._tableCell.style.color = fontColor;\r\n }\r\n\r\n public setBackgroundColor(backgroundColor: string): void {\r\n this._tableCell.style.backgroundColor = backgroundColor;\r\n }\r\n\r\n public setRowSeparator(): void {\r\n this._tableCell.style.borderBottom = TablixUtils.DefaultRowSeparatorWeight + TablixUtils.UnitOfMeasurement + \" \" + TablixUtils.DefaultRowSeparatorStyle + \" \" + TablixUtils.DefaultRowSeparatorColor;\r\n }\r\n\r\n public setOutline(borderStyle, borderColor, borderWeight): void {\r\n this._tableCell.style.borderStyle = borderStyle;\r\n this._tableCell.style.borderColor = borderColor;\r\n this._tableCell.style.borderWidth = borderWeight;\r\n }\r\n\r\n public setLeadingSpace(leadingSpaces: number): void {\r\n this._tableCell.style.paddingTop = leadingSpaces + TablixUtils.UnitOfMeasurement;\r\n }\r\n\r\n public onClear(): void {\r\n this._contentHost.className = \"\";\r\n this._contentHostStyle = \"\";\r\n this._tableCell.className = TablixCellPresenter._noMarginsStyleName;\r\n this._containerStyle = \"\";\r\n }\r\n\r\n public onHorizontalScroll(width: number, offset: number): void {\r\n HTMLElementUtils.setElementLeft(this._contentHost, offset);\r\n HTMLElementUtils.setElementWidth(this._contentHost, width);\r\n }\r\n\r\n public onVerticalScroll(height: number, offset: number): void {\r\n HTMLElementUtils.setElementTop(this._contentHost, offset);\r\n HTMLElementUtils.setElementHeight(this._contentHost, height);\r\n }\r\n\r\n public onInitializeScrolling(): void {\r\n HTMLElementUtils.setElementLeft(this._contentHost, 0);\r\n HTMLElementUtils.setElementTop(this._contentHost, 0);\r\n HTMLElementUtils.setElementWidth(this._contentHost, -1);\r\n HTMLElementUtils.setElementHeight(this._contentHost, -1);\r\n }\r\n\r\n public setContentHostStyle(style: string): void {\r\n if (this._contentHostStyle !== style) {\r\n this._contentHostStyle = style;\r\n this._contentHost.className = this._contentHostStyle;\r\n }\r\n }\r\n\r\n public setContainerStyle(style: string): void {\r\n if (this._containerStyle !== style) {\r\n this._containerStyle = style;\r\n this._tableCell.className = this._containerStyle + \" \" + TablixCellPresenter._noMarginsStyleName;\r\n }\r\n }\r\n\r\n public clearContainerStyle(): void {\r\n this._containerStyle = undefined;\r\n if (this._tableCell.className !== TablixCellPresenter._noMarginsStyleName)\r\n this._tableCell.className = TablixCellPresenter._noMarginsStyleName;\r\n\r\n //clear all the inline styling after unbinding the cells\r\n this._tableCell.style.border = \"\";\r\n this._tableCell.style.background = \"\";\r\n this._tableCell.style.color = \"\";\r\n }\r\n\r\n public clearTextAndTooltip(): void {\r\n this.contentHost.textContent = '';\r\n this.contentHost.removeAttribute('title');\r\n }\r\n\r\n public setTextAndTooltip(text: string): void {\r\n this.contentHost.textContent = text;\r\n this.contentHost.title = text;\r\n }\r\n\r\n public enableHorizontalResize(enable: boolean, handler: ITablixResizeHandler): void {\r\n if (enable === (this._resizer !== null))\r\n return;\r\n\r\n if (enable) {\r\n this._resizer = new TablixDomResizer(this._owner, this._tableCell, handler);\r\n this._resizer.initialize();\r\n } else {\r\n this._resizer.uninitialize();\r\n this._resizer = null;\r\n }\r\n }\r\n\r\n static addNoMarginStyle() {\r\n if (!TablixCellPresenter._noMarginsStyle) {\r\n let style: HTMLStyleElement = <HTMLStyleElement>document.createElement('style');\r\n style.appendChild(document.createTextNode(\".\" + TablixCellPresenter._noMarginsStyleName + \"{ padding: 0px; margin: 0px}\"));\r\n document.head.appendChild(style);\r\n TablixCellPresenter._noMarginsStyle = style;\r\n }\r\n }\r\n \r\n /**\r\n * In order to allow dragging of the tableCell we need to\r\n * disable dragging of the container of the cell in IE.\r\n */\r\n public disableDragResize() {\r\n this._tableCell.setAttribute(TablixCellPresenter._dragResizeDisabledAttributeName, \"true\");\r\n }\r\n }\r\n\r\n export class TablixRowPresenter {\r\n private _row: TablixRow;\r\n private _tableRow: HTMLTableRowElement;\r\n private _fitProportionally: boolean;\r\n\r\n constructor(fitProportionally: boolean) {\r\n // Table row will be created once needed\r\n this._tableRow = null;\r\n this._fitProportionally = fitProportionally;\r\n }\r\n\r\n public initialize(row: TablixRow) {\r\n this._row = row;\r\n }\r\n\r\n public createCellPresenter(layoutKind: controls.TablixLayoutKind): TablixCellPresenter {\r\n return new TablixCellPresenter(this._fitProportionally, layoutKind);\r\n }\r\n\r\n public registerRow(tableRow: HTMLTableRowElement) {\r\n this._tableRow = tableRow;\r\n }\r\n\r\n public onAppendCell(cell: TablixCell): void {\r\n let presenter = cell._presenter;\r\n\r\n if (presenter.tableCell === null) {\r\n // For performance reason we use InsertCell() to create new table cells instead of AppendChild()\r\n // We use -1 to insert at the end (that's the cross-browser way of doing it)\r\n let tableCell = this._tableRow.insertCell(-1);\r\n presenter.registerTableCell(<HTMLTableCellElement>tableCell);\r\n }\r\n else {\r\n this._tableRow.appendChild(presenter.tableCell);\r\n }\r\n }\r\n\r\n public onInsertCellBefore(cell: TablixCell, refCell: TablixCell): void {\r\n debug.assertValue(refCell._presenter.tableCell, 'refTableCell');\r\n\r\n let presenter = cell._presenter;\r\n\r\n if (presenter.tableCell === null) {\r\n // For performance reasons we use InsertCell() to create new table cells instead of AppendChild()\r\n let tableCell = this._tableRow.insertCell(Math.max(0, refCell._presenter.tableCell.cellIndex - 1));\r\n presenter.registerTableCell(<HTMLTableCellElement>tableCell);\r\n }\r\n else {\r\n this._tableRow.insertBefore(cell._presenter.tableCell, refCell._presenter.tableCell);\r\n }\r\n }\r\n\r\n public onRemoveCell(cell: TablixCell): void {\r\n this._tableRow.removeChild(cell._presenter.tableCell);\r\n }\r\n\r\n public getHeight(): number {\r\n return this.getCellHeight(this._row.getTablixCell());\r\n }\r\n\r\n public getCellHeight(cell: ITablixCell): number {\r\n debug.assertFail(\"PureVirtualMethod: TablixRowPresenter.getCellHeight\");\r\n return -1;\r\n }\r\n\r\n public getCellContentHeight(cell: ITablixCell): number {\r\n debug.assertFail(\"PureVirtualMethod: TablixRowPresenter.getCellHeight\");\r\n return -1;\r\n }\r\n\r\n public get tableRow(): HTMLTableRowElement {\r\n return this._tableRow;\r\n }\r\n }\r\n\r\n export class DashboardRowPresenter extends TablixRowPresenter {\r\n private _gridPresenter: DashboardTablixGridPresenter;\r\n\r\n constructor(gridPresenter: DashboardTablixGridPresenter, fitProportionally: boolean) {\r\n super(fitProportionally);\r\n\r\n this._gridPresenter = gridPresenter;\r\n }\r\n\r\n public getCellHeight(cell: ITablixCell): number {\r\n return this._gridPresenter.sizeComputationManager.cellHeight;\r\n }\r\n\r\n public getCellContentHeight(cell: ITablixCell): number {\r\n return this._gridPresenter.sizeComputationManager.contentHeight;\r\n }\r\n\r\n }\r\n\r\n export class CanvasRowPresenter extends TablixRowPresenter {\r\n public getCellHeight(cell: ITablixCell): number {\r\n if (!(<TablixCell>cell)._presenter)\r\n return 0;\r\n return HTMLElementUtils.getElementHeight((<TablixCell>cell)._presenter.tableCell);\r\n }\r\n\r\n public getCellContentHeight(cell: ITablixCell): number {\r\n if (!(<TablixCell>cell)._presenter)\r\n return 0;\r\n return HTMLElementUtils.getElementHeight((<TablixCell>cell)._presenter.contentElement);\r\n }\r\n\r\n }\r\n\r\n export class TablixColumnPresenter {\r\n protected _column: TablixColumn;\r\n\r\n public initialize(column: TablixColumn) {\r\n this._column = column;\r\n }\r\n\r\n public getWidth(): number {\r\n return this.getCellWidth(this._column.getTablixCell());\r\n }\r\n\r\n public getCellWidth(cell: ITablixCell): number {\r\n debug.assertFail(\"PureVirtualMethod: TablixColumnPresenter.getCellWidth\");\r\n return -1;\r\n }\r\n\r\n public getCellContentWidth(cell: ITablixCell): number {\r\n debug.assertFail(\"PureVirtualMethod: TablixColumnPresenter.getCellContentWidth\");\r\n return -1;\r\n }\r\n }\r\n\r\n export class DashboardColumnPresenter extends TablixColumnPresenter {\r\n private _gridPresenter: DashboardTablixGridPresenter;\r\n\r\n constructor(gridPresenter: DashboardTablixGridPresenter) {\r\n super();\r\n\r\n this._gridPresenter = gridPresenter;\r\n }\r\n\r\n public getCellWidth(cell: ITablixCell): number {\r\n return this._gridPresenter.sizeComputationManager.cellWidth;\r\n }\r\n\r\n public getCellContentWidth(cell: ITablixCell): number {\r\n return this._gridPresenter.sizeComputationManager.contentWidth;\r\n }\r\n }\r\n\r\n export class CanvasColumnPresenter extends TablixColumnPresenter {\r\n private _gridPresenter: CanvasTablixGridPresenter;\r\n private _columnIndex: number;\r\n\r\n constructor(gridPresenter: CanvasTablixGridPresenter, index: number) {\r\n super();\r\n this._gridPresenter = gridPresenter;\r\n this._columnIndex = index;\r\n }\r\n public getCellWidth(cell: ITablixCell): number {\r\n let persistedWidth = this._gridPresenter.getPersistedCellWidth(this._columnIndex);\r\n\r\n // Because persistedWidth could be 0 check specifically for null or undefined \r\n if (_.isNumber(persistedWidth))\r\n return persistedWidth;\r\n\r\n if (!(<TablixCell>cell)._presenter)\r\n return 0;\r\n\r\n return HTMLElementUtils.getElementWidth((<TablixCell>cell)._presenter.tableCell);\r\n }\r\n\r\n public getCellContentWidth(cell: ITablixCell): number {\r\n let persistedWidth = this._gridPresenter.getPersistedCellWidth(this._columnIndex);\r\n\r\n // Because persistedWidth could be 0 check specifically for null or undefined \r\n if (_.isNumber(persistedWidth))\r\n return persistedWidth;\r\n\r\n if (!(<TablixCell>cell)._presenter)\r\n return 0;\r\n\r\n return HTMLElementUtils.getElementWidth((<TablixCell>cell)._presenter.contentElement);\r\n }\r\n }\r\n\r\n export class TablixGridPresenter {\r\n protected _table: HTMLTableElement;\r\n protected _owner: TablixGrid;\r\n\r\n private _footerTable: HTMLTableElement;\r\n private _columnWidthManager: TablixColumnWidthManager;\r\n\r\n constructor(columnWidthManager?: TablixColumnWidthManager) {\r\n // Main Table\r\n this._table = TablixUtils.createTable();\r\n this._table.className = UNSELECTABLE_CLASS_NAME;\r\n\r\n // Footer Table\r\n this._footerTable = TablixUtils.createTable();\r\n this._footerTable.className = UNSELECTABLE_CLASS_NAME;\r\n\r\n // ColumnWidthManager\r\n this._columnWidthManager = columnWidthManager;\r\n }\r\n\r\n public initialize(owner: TablixGrid, gridHost: HTMLElement, footerHost: HTMLElement, control: TablixControl) {\r\n this._owner = owner;\r\n gridHost.appendChild(this._table);\r\n footerHost.appendChild(this._footerTable);\r\n }\r\n\r\n public getWidth(): number {\r\n debug.assertFail(\"PureVirtualMethod: TablixGridPresenter.getWidth\");\r\n return -1;\r\n }\r\n\r\n public getHeight(): number {\r\n debug.assertFail(\"PureVirtualMethod: TablixGridPresenter.getHeight\");\r\n return -1;\r\n }\r\n\r\n public getScreenToCssRatioX(): number {\r\n return 1;\r\n }\r\n\r\n public getScreenToCssRatioY(): number {\r\n return 1;\r\n }\r\n\r\n public createRowPresenter(): TablixRowPresenter {\r\n debug.assertFail(\"PureVirtualMethod: TablixGridPresenter.createRowPresenter\");\r\n return null;\r\n }\r\n\r\n public createColumnPresenter(index: number): TablixColumnPresenter {\r\n debug.assertFail(\"PureVirtualMethod: TablixGridPresenter.createColumnPresenter\");\r\n return null;\r\n }\r\n\r\n public onAppendRow(row: TablixRow): void {\r\n let presenter = row.presenter;\r\n\r\n if (presenter.tableRow === null) {\r\n // For performance reason we use InsertRow() to create new table cells instead of AppendChild()\r\n // We use -1 to insert at the end (that's the cross-browser way of doing it)\r\n let tableRow = this._table.insertRow(-1);\r\n presenter.registerRow(<HTMLTableRowElement>tableRow);\r\n }\r\n else {\r\n this._table.tBodies[0].appendChild(row.presenter.tableRow);\r\n }\r\n }\r\n\r\n public onInsertRowBefore(row: TablixRow, refRow: TablixRow): void {\r\n debug.assertValue(refRow.presenter.tableRow, 'refTableRow');\r\n\r\n let presenter = row.presenter;\r\n\r\n if (presenter.tableRow === null) {\r\n // For performance reason we use InsertRow() to create new table cells instead of AppendChild()\r\n let tableRow = this._table.insertRow(Math.max(0, refRow.presenter.tableRow.rowIndex - 1));\r\n presenter.registerRow(<HTMLTableRowElement>tableRow);\r\n }\r\n else {\r\n this._table.tBodies[0].insertBefore(row.presenter.tableRow, refRow.presenter.tableRow);\r\n }\r\n }\r\n\r\n public onRemoveRow(row: TablixRow): void {\r\n this._table.tBodies[0].removeChild(row.presenter.tableRow);\r\n }\r\n\r\n public onAddFooterRow(row: TablixRow): void {\r\n let presenter = row.presenter;\r\n\r\n if (presenter.tableRow === null) {\r\n // For performance reason we use InsertRow() to create new table cells instead of AppendChild()\r\n // We use -1 to insert at the end (that's the cross-browser way of doing it)\r\n let tableRow = this._footerTable.insertRow(-1);\r\n presenter.registerRow(<HTMLTableRowElement>tableRow);\r\n }\r\n else {\r\n this._footerTable.tBodies[0].appendChild(row.presenter.tableRow);\r\n }\r\n }\r\n\r\n public onClear(): void {\r\n HTMLElementUtils.clearChildren(this._table);\r\n HTMLElementUtils.clearChildren(this._footerTable);\r\n }\r\n\r\n public onFillColumnsProportionallyChanged(value: boolean): void {\r\n if (value) {\r\n this._table.style.width = \"100%\";\r\n this._footerTable.style.width = \"100%\";\r\n }\r\n else {\r\n this._table.style.width = \"auto\";\r\n this._footerTable.style.width = \"auto\";\r\n }\r\n }\r\n\r\n public invokeColumnResizeCallBack(columnIndex: number, width: number): void {\r\n if (this._columnWidthManager)\r\n this._columnWidthManager.columnWidthResizeCallback(columnIndex, width);\r\n }\r\n\r\n public getPersistedCellWidth(columnIndex: number): number {\r\n if (this._columnWidthManager)\r\n return this._columnWidthManager.getPersistedCellWidth(columnIndex);\r\n }\r\n }\r\n\r\n export class DashboardTablixGridPresenter extends TablixGridPresenter {\r\n private _sizeComputationManager: SizeComputationManager;\r\n\r\n constructor(sizeComputationManager: SizeComputationManager) {\r\n super();\r\n\r\n this._sizeComputationManager = sizeComputationManager;\r\n }\r\n\r\n public createRowPresenter(): TablixRowPresenter {\r\n return new DashboardRowPresenter(this, this._owner.fillColumnsProportionally);\r\n }\r\n\r\n public createColumnPresenter(index: number): TablixColumnPresenter {\r\n return new DashboardColumnPresenter(this);\r\n }\r\n\r\n public get sizeComputationManager(): SizeComputationManager {\r\n return this._sizeComputationManager;\r\n }\r\n\r\n public getWidth(): number {\r\n return this._sizeComputationManager.gridWidth;\r\n }\r\n\r\n public getHeight(): number {\r\n return this._sizeComputationManager.gridHeight;\r\n }\r\n }\r\n\r\n export class CanvasTablixGridPresenter extends TablixGridPresenter {\r\n\r\n constructor(columnWidthManager: TablixColumnWidthManager) {\r\n super(columnWidthManager);\r\n }\r\n\r\n public createRowPresenter(): TablixRowPresenter {\r\n return new CanvasRowPresenter(this._owner.fillColumnsProportionally);\r\n }\r\n\r\n public createColumnPresenter(index: number): TablixColumnPresenter {\r\n return new CanvasColumnPresenter(this, index);\r\n }\r\n\r\n public getWidth(): number {\r\n return HTMLElementUtils.getElementWidth(this._table);\r\n }\r\n\r\n public getHeight(): number {\r\n return HTMLElementUtils.getElementHeight(this._table);\r\n }\r\n }\r\n}\r\n","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../../../_references.ts\"/>\r\n\r\nmodule powerbi.visuals.controls.internal {\r\n\r\n /**\r\n * Base class for Tablix realization manager.\r\n */\r\n export class TablixDimensionRealizationManager {\r\n private _realizedLeavesCount: number;\r\n private _adjustmentFactor: number;\r\n private _itemsToRealizeCount: number;\r\n private _itemsEstimatedContextualWidth: number;\r\n private _binder: ITablixBinder;\r\n\r\n constructor(binder: ITablixBinder) {\r\n this._binder = binder;\r\n this._adjustmentFactor = 1;\r\n }\r\n\r\n public _getOwner(): DimensionLayoutManager {\r\n debug.assertFail(\"PureVirtualMethod: DimensionLayoutManager.getOwner\");\r\n return null;\r\n }\r\n\r\n public get binder(): ITablixBinder {\r\n return this._binder;\r\n }\r\n\r\n public get adjustmentFactor(): number {\r\n return this._adjustmentFactor;\r\n }\r\n\r\n public get itemsToRealizeCount(): number {\r\n return this._itemsToRealizeCount;\r\n }\r\n\r\n public set itemsToRealizeCount(count: number) {\r\n this._itemsToRealizeCount = count;\r\n }\r\n\r\n public get itemsEstimatedContextualWidth(): number {\r\n return this._itemsEstimatedContextualWidth;\r\n }\r\n\r\n public set itemsEstimatedContextualWidth(contextualWidth: number) {\r\n this._itemsEstimatedContextualWidth = contextualWidth;\r\n }\r\n\r\n public onStartRenderingIteration(): void {\r\n let owner = this._getOwner();\r\n if (owner.measureEnabled && !owner.done) {\r\n this._getEstimatedItemsToRealizeCount();\r\n }\r\n this._realizedLeavesCount = 0;\r\n }\r\n\r\n public onEndRenderingIteration(gridContextualWidth: number, filled: boolean): void {\r\n if (!filled && !this._getOwner().allItemsRealized)\r\n this._adjustmentFactor *= this._getSizeAdjustment(gridContextualWidth);\r\n }\r\n\r\n public onEndRenderingSession(): void {\r\n this._adjustmentFactor = 1;\r\n }\r\n\r\n public onCornerCellRealized(item: any, cell: ITablixCell): void {\r\n }\r\n \r\n public onHeaderRealized(item: any, cell: ITablixCell, leaf: boolean): void {\r\n if (leaf) {\r\n this._realizedLeavesCount++;\r\n }\r\n }\r\n\r\n public get needsToRealize(): boolean {\r\n return this._realizedLeavesCount < this._itemsToRealizeCount;\r\n }\r\n\r\n public _getEstimatedItemsToRealizeCount(): void {\r\n debug.assertFail(\"PureVirtualMethod: TablixDimensionRealizationManager._calculateItemsToRealize\");\r\n }\r\n\r\n public _getSizeAdjustment(gridContextualWidth: number): number {\r\n debug.assertFail(\"PureVirtualMethod: TablixDimensionRealizationManager._getSizeAdjustment\");\r\n return 1;\r\n }\r\n }\r\n\r\n /** \r\n * DOM implementation for Row Tablix realization manager.\r\n */\r\n export class RowRealizationManager extends TablixDimensionRealizationManager {\r\n private _owner: RowLayoutManager;\r\n\r\n public set owner(owner: RowLayoutManager) {\r\n this._owner = owner;\r\n }\r\n\r\n public _getOwner(): DimensionLayoutManager {\r\n return this._owner;\r\n }\r\n\r\n public _getEstimatedItemsToRealizeCount(): void {\r\n this.estimateRowsToRealizeCount();\r\n }\r\n\r\n private estimateRowsToRealizeCount(): void {\r\n debug.assertValue(this._owner, '_owner');\r\n\r\n if (!this._owner.dimension.model) {\r\n this.itemsToRealizeCount = 0;\r\n return;\r\n }\r\n\r\n if (this._owner.alignToEnd)\r\n this.itemsToRealizeCount = this._owner.dimension.getItemsCount() - this._owner.dimension.getIntegerScrollOffset() + 1;\r\n else\r\n this.itemsToRealizeCount = Math.ceil((this._owner.contextualWidthToFill / (this._owner.owner.getEstimatedRowHeight() * this.adjustmentFactor)) + this._owner.dimension.getFractionScrollOffset()) - this._owner.otherLayoutManager.dimension.getDepth() + 1;\r\n }\r\n\r\n public getEstimatedRowHierarchyWidth(): number {\r\n if (!this._owner.dimension.model || this._owner.dimension.getItemsCount() === 0)\r\n return 0;\r\n\r\n let levels: RowWidths = new RowWidths();\r\n this.updateRowHiearchyEstimatedWidth(this._owner.dimension.model, this._owner.dimension._hierarchyNavigator.getIndex(this._owner.dimension.getFirstVisibleItem(0)), levels);\r\n\r\n let levelsArray: RowWidth[] = levels.items;\r\n let levelCount: number = levelsArray.length;\r\n\r\n let width = 0;\r\n\r\n for (let i = 0; i < levelCount; i++) {\r\n let level = levelsArray[i];\r\n\r\n if (level.maxNonLeafWidth !== 0)\r\n width += level.maxNonLeafWidth;\r\n else\r\n width += level.maxLeafWidth;\r\n }\r\n\r\n return width;\r\n }\r\n\r\n private updateRowHiearchyEstimatedWidth(items: any, firstVisibleIndex: number, levels: RowWidths) {\r\n let hierarchyNavigator: ITablixHierarchyNavigator = this._owner.owner.owner.hierarchyNavigator;\r\n let binder: ITablixBinder = this.binder;\r\n let length = hierarchyNavigator.getCount(items);\r\n\r\n for (let i = firstVisibleIndex; i < length; i++) {\r\n if (levels.leafCount === this.itemsToRealizeCount)\r\n return;\r\n let item: any = hierarchyNavigator.getAt(items, i);\r\n let label = binder.getHeaderLabel(item);\r\n let itemWidth = this._owner.getEstimatedHeaderWidth(label, firstVisibleIndex);\r\n let isLeaf: boolean = hierarchyNavigator.isLeaf(item);\r\n let l: number = hierarchyNavigator.getLevel(item);\r\n\r\n let level = levels.items[l];\r\n if (!level) {\r\n level = new RowWidth();\r\n levels.items[l] = level;\r\n }\r\n\r\n if (isLeaf) {\r\n level.maxLeafWidth = Math.max(level.maxLeafWidth, itemWidth);\r\n levels.leafCount = levels.leafCount + 1;\r\n }\r\n else {\r\n level.maxNonLeafWidth = Math.max(level.maxNonLeafWidth, itemWidth);\r\n this.updateRowHiearchyEstimatedWidth(hierarchyNavigator.getChildren(item), this._owner.dimension.getFirstVisibleChildIndex(item), levels);\r\n }\r\n }\r\n }\r\n\r\n public _getSizeAdjustment(gridContextualWidth: number): number {\r\n return gridContextualWidth / ((this._owner.getRealizedItemsCount() - this._owner.dimension.getFractionScrollOffset()) * this._owner.owner.getEstimatedRowHeight());\r\n }\r\n }\r\n\r\n /**\r\n * DOM implementation for Column Tablix realization manager.\r\n */\r\n export class ColumnRealizationManager extends TablixDimensionRealizationManager {\r\n private _owner: ColumnLayoutManager;\r\n\r\n public set owner(owner: ColumnLayoutManager) {\r\n this._owner = owner;\r\n }\r\n\r\n public _getOwner(): DimensionLayoutManager {\r\n return this._owner;\r\n }\r\n\r\n public _getEstimatedItemsToRealizeCount(): void {\r\n this.estimateColumnsToRealizeCount(this.getEstimatedRowHierarchyWidth());\r\n }\r\n\r\n private get rowRealizationManager(): RowRealizationManager {\r\n return <RowRealizationManager>this._owner.otherLayoutManager.realizationManager;\r\n }\r\n\r\n private getEstimatedRowHierarchyWidth(): number {\r\n if (this._owner.otherLayoutManager.done)\r\n return this._owner.getOtherHierarchyContextualHeight();\r\n\r\n return this.rowRealizationManager.getEstimatedRowHierarchyWidth() * this.adjustmentFactor;\r\n }\r\n\r\n private estimateColumnsToRealizeCount(rowHierarchyWidth: number): void {\r\n let widthToFill: number = this._owner.contextualWidthToFill - rowHierarchyWidth;\r\n\r\n if (!this._owner.dimension.model || Double.lessOrEqualWithPrecision(widthToFill, 0, DimensionLayoutManager._pixelPrecision)) {\r\n this.itemsToRealizeCount = 0;\r\n return;\r\n }\r\n\r\n let binder: ITablixBinder = this.binder;\r\n let hierarchyNavigator: ITablixHierarchyNavigator = this._owner.owner.owner.hierarchyNavigator;\r\n\r\n let startColumnIndex: number = this._owner.dimension.getIntegerScrollOffset();\r\n let endColumnIndex: number = this._owner.dimension.getItemsCount();\r\n let columnCount = endColumnIndex - startColumnIndex;\r\n\r\n let startRowIndex: number = this._owner.otherLayoutManager.dimension.getIntegerScrollOffset();\r\n let endRowIndex = this._owner.otherLayoutManager.dimension.getItemsCount();\r\n\r\n this.itemsEstimatedContextualWidth = 0;\r\n\r\n if (this._owner.alignToEnd) {\r\n this.itemsToRealizeCount = columnCount;\r\n return;\r\n }\r\n\r\n for (let i = startColumnIndex; i < endColumnIndex; i++) {\r\n if (Double.greaterOrEqualWithPrecision(this.itemsEstimatedContextualWidth, widthToFill, DimensionLayoutManager._pixelPrecision)) {\r\n this.itemsToRealizeCount = i - startColumnIndex;\r\n return;\r\n }\r\n\r\n let maxWidth = 0;\r\n let visibleSizeRatio;\r\n\r\n if (i === startColumnIndex) {\r\n visibleSizeRatio = this._owner.getVisibleSizeRatio();\r\n }\r\n else {\r\n visibleSizeRatio = 1;\r\n }\r\n\r\n let columnMember: any = hierarchyNavigator.getLeafAt(this._owner.dimension.model, i);\r\n let label = binder.getHeaderLabel(columnMember);\r\n maxWidth = Math.max(maxWidth, this._owner.getEstimatedHeaderWidth(label, i));\r\n\r\n for (let j = startRowIndex; j < endRowIndex; j++) {\r\n let intersection = hierarchyNavigator.getIntersection(hierarchyNavigator.getLeafAt(this._owner.otherLayoutManager.dimension.model, j), columnMember);\r\n label = binder.getCellContent(intersection);\r\n maxWidth = Math.max(maxWidth, this._owner.getEstimatedBodyCellWidth(label));\r\n }\r\n\r\n this.itemsEstimatedContextualWidth += maxWidth * visibleSizeRatio * this.adjustmentFactor;\r\n }\r\n\r\n this.itemsToRealizeCount = columnCount;\r\n }\r\n\r\n public _getSizeAdjustment(gridContextualWidth: number): number {\r\n return gridContextualWidth / (this.getEstimatedRowHierarchyWidth() + this.itemsEstimatedContextualWidth);\r\n }\r\n }\r\n\r\n export class RowWidths {\r\n public items: RowWidth[];\r\n public leafCount;\r\n\r\n constructor() {\r\n this.items = [];\r\n this.leafCount = 0;\r\n }\r\n }\r\n\r\n export class RowWidth {\r\n public maxLeafWidth: number = 0;\r\n public maxNonLeafWidth: number = 0;\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../../../_references.ts\"/>\r\n\r\nmodule powerbi.visuals.controls.internal {\r\n\r\n export interface ITablixResizeHandler {\r\n onStartResize(cell: TablixCell, currentX: number, currentY: number): void;\r\n onResize(cell: TablixCell, deltaX: number, deltaY: number): void;\r\n onEndResize(cell: TablixCell);\r\n onReset(cell: TablixCell);\r\n }\r\n\r\n /** \r\n * Internal interface to abstract the tablix row/column.\r\n */\r\n export interface ITablixGridItem {\r\n calculateSize(): number;\r\n resize(size: number): void;\r\n fixSize(): void;\r\n \r\n /**\r\n * In case the parent column/row header size is bigger than the sum of the children,\r\n * the size of the last item is adjusted to compensate the difference.\r\n */\r\n setAligningContextualWidth(size: number): void;\r\n getAligningContextualWidth(): number;\r\n\r\n getContextualWidth(): number;\r\n getContentContextualWidth(): number;\r\n\r\n getIndex(grid: TablixGrid): number;\r\n\r\n getHeaders(): TablixCell[];\r\n getOtherDimensionHeaders(): TablixCell[];\r\n\r\n getOtherDimensionOwner(cell: TablixCell): ITablixGridItem;\r\n\r\n getCellIContentContextualWidth(cell: TablixCell): number;\r\n getCellContextualSpan(cell: TablixCell): number;\r\n }\r\n\r\n export class TablixCell implements ITablixCell {\r\n private _horizontalOffset: number;\r\n private _verticalOffset: number;\r\n private _colSpan: number;\r\n private _rowSpan: number;\r\n private _textAlign: string;\r\n private _contentWidth: number;\r\n private _contentHeight: number;\r\n private _scrollable = false;\r\n\r\n public _column: TablixColumn; // internal\r\n public _row: TablixRow; // internal\r\n\r\n public type: TablixCellType;\r\n public item: any;\r\n\r\n public _presenter: TablixCellPresenter; // internal\r\n public extension: any;\r\n\r\n constructor(presenter: TablixCellPresenter, extension: any, row: TablixRow) {\r\n this._presenter = presenter;\r\n this.extension = extension;\r\n this._presenter.initialize(this);\r\n this._row = row;\r\n this.item = null;\r\n this.type = null;\r\n this._horizontalOffset = 0;\r\n this._verticalOffset = 0;\r\n this._colSpan = 1;\r\n this._rowSpan = 1;\r\n this._contentWidth = -1;\r\n this._contentHeight = -1;\r\n }\r\n\r\n public get colSpan(): number {\r\n return this._colSpan;\r\n }\r\n\r\n public set colSpan(value: number) {\r\n if (this._colSpan !== value) {\r\n this._presenter.onColumnSpanChanged(value);\r\n this._colSpan = value;\r\n }\r\n }\r\n\r\n public get rowSpan(): number {\r\n return this._rowSpan;\r\n }\r\n\r\n public set rowSpan(value: number) {\r\n if (this._rowSpan !== value) {\r\n this._presenter.onRowSpanChanged(value);\r\n this._rowSpan = value;\r\n }\r\n }\r\n\r\n public get textAlign(): string {\r\n return this._textAlign;\r\n }\r\n\r\n public set textAlign(value: string) {\r\n if (value !== this._textAlign) {\r\n this._presenter.onTextAlignChanged(value);\r\n this._textAlign = value;\r\n }\r\n }\r\n\r\n public get horizontalOffset(): number {\r\n return this._horizontalOffset;\r\n }\r\n\r\n public get verticalOffset(): number {\r\n return this._verticalOffset;\r\n }\r\n\r\n private isScrollable(): boolean {\r\n return this._scrollable;\r\n }\r\n\r\n public clear(): void {\r\n if (this.isScrollable()) {\r\n this.initializeScrolling();\r\n }\r\n\r\n this._presenter.onClear();\r\n this.setContentWidth(-1);\r\n this.setContentHeight(-1);\r\n }\r\n\r\n private initializeScrolling() {\r\n this._presenter.onInitializeScrolling();\r\n this._horizontalOffset = 0;\r\n this._verticalOffset = 0;\r\n this.setContentWidth(-1);\r\n this.setContentHeight(-1);\r\n }\r\n\r\n public prepare(scrollable: boolean): void {\r\n if (this.isScrollable())\r\n this.initializeScrolling();\r\n\r\n this._scrollable = scrollable;\r\n }\r\n\r\n public scrollVertically(height: number, offset: number): void {\r\n if (!this.isScrollable()) {\r\n return;\r\n }\r\n\r\n let offsetInPixels: number = -height * offset;\r\n this._verticalOffset = offsetInPixels;\r\n this._presenter.onVerticalScroll(height, offsetInPixels);\r\n this.setContentHeight(height + offsetInPixels);\r\n }\r\n\r\n public scrollHorizontally(width: number, offset: number) {\r\n if (!this.isScrollable()) {\r\n return;\r\n }\r\n\r\n let offsetInPixels = -width * offset;\r\n this._horizontalOffset = offsetInPixels;\r\n this._presenter.onHorizontalScroll(width, offsetInPixels);\r\n this.setContentWidth(width + offsetInPixels);\r\n }\r\n\r\n public setContentWidth(value: number): void {\r\n if (value === this._contentWidth)\r\n return;\r\n\r\n this._contentWidth = value;\r\n this._presenter.onContentWidthChanged(value);\r\n }\r\n\r\n public setContentHeight(value: number): void {\r\n if (value === this._contentHeight)\r\n return;\r\n\r\n this._contentHeight = value;\r\n this._presenter.onContentHeightChanged(value);\r\n }\r\n\r\n public enableHorizontalResize(enable: boolean, handler: ITablixResizeHandler): void {\r\n this._presenter.enableHorizontalResize(enable, handler);\r\n }\r\n }\r\n\r\n export class TablixColumn implements ITablixGridItem {\r\n public _realizedColumnHeaders: TablixCell[]; // internal\r\n public _realizedCornerCells: TablixCell[]; // internal\r\n public _realizedRowHeaders: TablixCell[]; // internal\r\n public _realizedBodyCells: TablixCell[]; // internal\r\n private _items: any[];\r\n private _itemType: TablixCellType;\r\n private _footerCell: TablixCell;\r\n\r\n private _contentWidth: number;\r\n private _width: number;\r\n private _sizeFixed: boolean;\r\n\r\n private _aligningWidth: number;\r\n private _fixedToAligningWidth: boolean; // move to base class to have it for both rows and columns\r\n\r\n private _presenter: TablixColumnPresenter;\r\n private _owner: TablixGrid;\r\n private _columnIndex: number;\r\n\r\n constructor(presenter: TablixColumnPresenter, columnIndex: number) {\r\n this._presenter = presenter;\r\n this._presenter.initialize(this);\r\n this._contentWidth = -1;\r\n this._width = -1;\r\n this._sizeFixed = false;\r\n this._aligningWidth = -1;\r\n this._fixedToAligningWidth = false;\r\n this._items = [];\r\n this._itemType = null;\r\n this._footerCell = null;\r\n this._columnIndex = columnIndex;\r\n }\r\n\r\n public initialize(owner: TablixGrid): void {\r\n this._owner = owner;\r\n this._realizedRowHeaders = [];\r\n this._realizedColumnHeaders = [];\r\n this._realizedCornerCells = [];\r\n this._realizedBodyCells = [];\r\n }\r\n\r\n public get owner(): TablixGrid {\r\n return this._owner;\r\n }\r\n\r\n private getType(): TablixCellType {\r\n if (this._realizedCornerCells.length > 0)\r\n return TablixCellType.CornerCell;\r\n\r\n return TablixCellType.ColumnHeader;\r\n }\r\n\r\n private getColumnHeadersOrCorners(): TablixCell[] {\r\n if (this._realizedCornerCells.length > 0)\r\n return this._realizedCornerCells;\r\n\r\n return this._realizedColumnHeaders;\r\n }\r\n\r\n private columnHeadersOrCornersEqual(newType: TablixCellType, headers: TablixCell[], hierarchyNavigator: ITablixHierarchyNavigator): boolean {\r\n if (this._items.length !== headers.length)\r\n return false;\r\n\r\n let count = this._items.length;\r\n\r\n for (let i = 0; i < count; i++) {\r\n if (!this.columnHeaderOrCornerEquals(this._itemType, this._items[i], newType, headers[i].item, hierarchyNavigator))\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n public get itemType(): TablixCellType {\r\n return this._itemType;\r\n }\r\n\r\n public getLeafItem(): any {\r\n if (this._items.length === 0)\r\n return null;\r\n\r\n return this._items[this._items.length - 1];\r\n }\r\n\r\n public columnHeaderOrCornerEquals(type1: TablixCellType, item1: any, type2: TablixCellType, item2: any, hierarchyNavigator: ITablixHierarchyNavigator): boolean {\r\n if (type1 !== type2)\r\n return false;\r\n\r\n if (type1 === TablixCellType.CornerCell) {\r\n if (!hierarchyNavigator.cornerCellItemEquals(item1, item2))\r\n return false;\r\n } else {\r\n if (!hierarchyNavigator.headerItemEquals(item1, item2))\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n public OnLeafRealized(hierarchyNavigator: ITablixHierarchyNavigator): void {\r\n // if the headers/corner have changed we should clear the column size to accomodate for the new content\r\n let type = this.getType();\r\n let columnHeadersOrCorners = this.getColumnHeadersOrCorners();\r\n\r\n if (this.columnHeadersOrCornersEqual(type, columnHeadersOrCorners, hierarchyNavigator)) {\r\n this.clearSpanningCellsWidth(this._realizedColumnHeaders);\r\n }\r\n else {\r\n let count = columnHeadersOrCorners.length;\r\n this._items = [];\r\n\r\n for (let i = 0; i < count; i++) {\r\n this._items.push(columnHeadersOrCorners[i].item);\r\n }\r\n\r\n this._itemType = type;\r\n this.clearSize();\r\n }\r\n }\r\n\r\n private clearSpanningCellsWidth(cells: TablixCell[]): void {\r\n for (let i = 0; i < cells.length; i++) {\r\n let cell = cells[i];\r\n if (cell.colSpan > 1) {\r\n cell.setContentWidth(-1);\r\n }\r\n }\r\n }\r\n\r\n public addCornerCell(cell: TablixCell) {\r\n cell._column = this;\r\n this._realizedCornerCells.push(cell);\r\n cell.setContentWidth(this._contentWidth);\r\n }\r\n\r\n public addRowHeader(cell: TablixCell) {\r\n cell._column = this;\r\n this._realizedRowHeaders.push(cell);\r\n cell.setContentWidth(this._contentWidth);\r\n }\r\n\r\n public addColumnHeader(cell: TablixCell, isLeaf: boolean) {\r\n cell._column = this;\r\n this._realizedColumnHeaders.push(cell);\r\n if (isLeaf) {\r\n cell.setContentWidth(this._contentWidth);\r\n }\r\n }\r\n\r\n public addBodyCell(cell: TablixCell) {\r\n cell._column = this;\r\n this._realizedBodyCells.push(cell);\r\n cell.setContentWidth(this._contentWidth);\r\n }\r\n\r\n public set footer(footerCell: TablixCell) {\r\n this._footerCell = footerCell;\r\n footerCell._column = this;\r\n footerCell.setContentWidth(this._contentWidth);\r\n }\r\n\r\n public get footer(): TablixCell {\r\n return this._footerCell;\r\n }\r\n\r\n public resize(width: number): void {\r\n if (width === this.getContentContextualWidth())\r\n return;\r\n\r\n this._contentWidth = width;\r\n this.setContentWidth(this._contentWidth);\r\n this._sizeFixed = true;\r\n this._fixedToAligningWidth = false;\r\n this._aligningWidth = -1;\r\n // Invoke resize callback\r\n let gridPresenter = this.owner._presenter;\r\n if (gridPresenter)\r\n gridPresenter.invokeColumnResizeCallBack(this._columnIndex, width);\r\n }\r\n\r\n public fixSize(): void {\r\n let shouldAlign: boolean = this._aligningWidth !== -1;\r\n let switched: boolean = shouldAlign !== this._fixedToAligningWidth;\r\n\r\n if ((this._sizeFixed && !switched && !shouldAlign))\r\n return;\r\n\r\n if (this._aligningWidth === -1) {\r\n this._contentWidth += 1; // to avoid the ellipsis to appear (Issue with IE)\r\n this.setContentWidth(this._contentWidth);\r\n }\r\n else {\r\n this.setContentWidth(this._aligningWidth);\r\n }\r\n\r\n this._sizeFixed = true;\r\n this._fixedToAligningWidth = this._aligningWidth !== -1;\r\n }\r\n\r\n public clearSize(): void {\r\n this._contentWidth = -1;\r\n this.setContentWidth(this._contentWidth);\r\n this._sizeFixed = false;\r\n }\r\n\r\n public getContentContextualWidth(): number {\r\n return this._contentWidth;\r\n }\r\n\r\n public getCellIContentContextualWidth(cell: TablixCell): number {\r\n return this._presenter.getCellContentWidth(cell);\r\n }\r\n\r\n public getCellSpanningWidthWithScrolling(cell: ITablixCell, tablixGrid: TablixGrid): number {\r\n let width = this.getContextualWidth() + this.getScrollingOffset();\r\n\r\n if (cell.colSpan > 1) {\r\n let index = this.getIndex(tablixGrid);\r\n let columns = tablixGrid.realizedColumns;\r\n for (let i = 1; i < cell.colSpan; i++)\r\n width += columns[i + index].getContextualWidth();\r\n }\r\n\r\n return width;\r\n }\r\n\r\n public getScrollingOffset(): number {\r\n let offset = 0;\r\n\r\n if (this._realizedColumnHeaders.length > 0)\r\n offset = this._realizedColumnHeaders[this._realizedColumnHeaders.length - 1].horizontalOffset;\r\n\r\n return offset;\r\n }\r\n\r\n public getContextualWidth(): number {\r\n if (this._width === -1 || this._contentWidth === -1)\r\n this._width = this._presenter.getWidth();\r\n\r\n return this._width;\r\n }\r\n\r\n public calculateSize(): number {\r\n if (this._sizeFixed)\r\n return this._contentWidth;\r\n\r\n let contentWidth: number = 0;\r\n let count = this._realizedColumnHeaders.length;\r\n\r\n for (let i = 0; i < count; i++) {\r\n let cell: TablixCell = this._realizedColumnHeaders[i];\r\n if (cell.colSpan === 1)\r\n contentWidth = Math.max(contentWidth, this._presenter.getCellContentWidth(cell));\r\n }\r\n\r\n count = this._realizedRowHeaders.length;\r\n\r\n for (let i = 0; i < count; i++) {\r\n let cell: TablixCell = this._realizedRowHeaders[i];\r\n if (cell.colSpan === 1)\r\n contentWidth = Math.max(contentWidth, this._presenter.getCellContentWidth(cell));\r\n }\r\n\r\n count = this._realizedCornerCells.length;\r\n\r\n for (let i = 0; i < count; i++) {\r\n contentWidth = Math.max(contentWidth, this._presenter.getCellContentWidth(this._realizedCornerCells[i]));\r\n }\r\n\r\n count = this._realizedBodyCells.length;\r\n\r\n for (let i = 0; i < count; i++) {\r\n contentWidth = Math.max(contentWidth, this._presenter.getCellContentWidth(this._realizedBodyCells[i]));\r\n }\r\n\r\n if (this._footerCell !== null) {\r\n if (this._footerCell.colSpan === 1)\r\n contentWidth = Math.max(contentWidth, this._presenter.getCellContentWidth(this._footerCell));\r\n }\r\n\r\n return this._contentWidth = contentWidth;\r\n }\r\n\r\n public setAligningContextualWidth(size: number): void {\r\n this._aligningWidth = size;\r\n }\r\n\r\n public getAligningContextualWidth(): number {\r\n return this._aligningWidth;\r\n }\r\n\r\n private setContentWidth(value: number): void {\r\n let count = this._realizedColumnHeaders.length;\r\n\r\n for (let i = 0; i < count; i++) {\r\n let cell: TablixCell = this._realizedColumnHeaders[i];\r\n if (cell.colSpan === 1)\r\n cell.setContentWidth(value);\r\n }\r\n\r\n count = this._realizedRowHeaders.length;\r\n\r\n for (let i = 0; i < count; i++) {\r\n let cell: TablixCell = this._realizedRowHeaders[i];\r\n if (cell.colSpan === 1)\r\n cell.setContentWidth(value);\r\n }\r\n\r\n count = this._realizedCornerCells.length;\r\n\r\n for (let i = 0; i < count; i++) {\r\n this._realizedCornerCells[i].setContentWidth(value);\r\n }\r\n\r\n count = this._realizedBodyCells.length;\r\n\r\n for (let i = 0; i < count; i++) {\r\n this._realizedBodyCells[i].setContentWidth(value);\r\n }\r\n\r\n if (this._footerCell !== null) {\r\n if (this._footerCell.colSpan === 1)\r\n this._footerCell.setContentWidth(value);\r\n }\r\n\r\n this._width = -1; // invalidate the cell width\r\n }\r\n\r\n public getTablixCell(): TablixCell {\r\n let realizedCells: TablixCell[] = this._realizedColumnHeaders.length > 0 ? this._realizedColumnHeaders : this._realizedCornerCells;\r\n //Debug.assert(realizedCells.length !== 0, \"At least on header should have been realized\");\r\n return realizedCells[realizedCells.length - 1];\r\n }\r\n\r\n public getIndex(grid: TablixGrid): number {\r\n return grid.realizedColumns.indexOf(this);\r\n }\r\n\r\n public getHeaders(): TablixCell[] {\r\n return this._realizedColumnHeaders;\r\n }\r\n\r\n public getOtherDimensionHeaders(): TablixCell[] {\r\n return this._realizedRowHeaders;\r\n }\r\n\r\n public getCellContextualSpan(cell: TablixCell): number {\r\n return cell.colSpan;\r\n }\r\n\r\n public getOtherDimensionOwner(cell: TablixCell): ITablixGridItem {\r\n return cell._row;\r\n }\r\n }\r\n\r\n export class TablixRow implements ITablixGridItem {\r\n private _allocatedCells: TablixCell[];\r\n\r\n public _realizedRowHeaders: TablixCell[]; // internal\r\n public _realizedColumnHeaders: TablixCell[]; // internal\r\n public _realizedBodyCells: TablixCell[]; // internal\r\n public _realizedCornerCells: TablixCell[]; // internal\r\n\r\n private _realizedCellsCount: number;\r\n private _heightFixed: boolean;\r\n private _contentHeight = -1;\r\n private _height: number;\r\n\r\n private _presenter: TablixRowPresenter;\r\n private _owner: TablixGrid;\r\n\r\n constructor(presenter: TablixRowPresenter) {\r\n this._presenter = presenter;\r\n this._presenter.initialize(this);\r\n this._allocatedCells = [];\r\n this._heightFixed = false;\r\n this._contentHeight = -1;\r\n this._height = -1;\r\n }\r\n\r\n public initialize(owner: TablixGrid): void {\r\n this._owner = owner;\r\n this._realizedRowHeaders = [];\r\n this._realizedBodyCells = [];\r\n this._realizedCornerCells = [];\r\n this._realizedColumnHeaders = [];\r\n this._realizedCellsCount = 0;\r\n }\r\n\r\n public get presenter(): TablixRowPresenter {\r\n return this._presenter;\r\n }\r\n\r\n public get owner(): TablixGrid {\r\n return this._owner;\r\n }\r\n\r\n public releaseUnusedCells(owner: TablixControl) {\r\n this.releaseCells(owner, this._realizedCellsCount);\r\n }\r\n\r\n public releaseAllCells(owner: TablixControl) {\r\n this.releaseCells(owner, 0);\r\n }\r\n\r\n private releaseCells(owner: TablixControl, startIndex: number): void {\r\n let cells: TablixCell[] = this._allocatedCells;\r\n let length = cells.length;\r\n\r\n for (let i = startIndex; i < length; i++) {\r\n let cell = cells[i];\r\n owner._unbindCell(cell);\r\n cell.clear();\r\n }\r\n }\r\n\r\n public moveScrollableCellsToEnd(count: number): void {\r\n let frontIndex: number = Math.max(this._realizedRowHeaders.length, this._realizedCornerCells.length);\r\n\r\n for (let i = frontIndex; i < frontIndex + count; i++) {\r\n let cell = this._allocatedCells[i];\r\n this._presenter.onRemoveCell(cell);\r\n this._presenter.onAppendCell(cell);\r\n this._allocatedCells.push(cell);\r\n }\r\n\r\n this._allocatedCells.splice(frontIndex, count);\r\n }\r\n\r\n public moveScrollableCellsToStart(count: number): void {\r\n let frontIndex: number = Math.max(this._realizedRowHeaders.length, this._realizedCornerCells.length);\r\n\r\n for (let i = frontIndex; i < frontIndex + count; i++) {\r\n let cell = this._allocatedCells.pop();\r\n this._presenter.onRemoveCell(cell);\r\n this._presenter.onInsertCellBefore(cell, this._allocatedCells[frontIndex]);\r\n this._allocatedCells.splice(frontIndex, 0, cell);\r\n }\r\n }\r\n\r\n public getOrCreateCornerCell(column: TablixColumn): TablixCell {\r\n let cell: TablixCell = this.getOrCreateCell();\r\n cell.prepare(false);\r\n column.addCornerCell(cell);\r\n this._realizedCornerCells.push(cell);\r\n cell.setContentHeight(this._contentHeight);\r\n return cell;\r\n }\r\n\r\n public getOrCreateRowHeader(column: TablixColumn, scrollable: boolean, leaf: boolean): TablixCell {\r\n let cell: TablixCell = this.getOrCreateCell();\r\n cell.prepare(scrollable);\r\n column.addRowHeader(cell);\r\n this._realizedRowHeaders.push(cell);\r\n if (leaf)\r\n cell.setContentHeight(this._contentHeight);\r\n return cell;\r\n }\r\n\r\n public getOrCreateColumnHeader(column: TablixColumn, scrollable: boolean, leaf: boolean): TablixCell {\r\n let cell: TablixCell = this.getOrCreateCell();\r\n cell.prepare(scrollable);\r\n column.addColumnHeader(cell, leaf);\r\n this._realizedColumnHeaders.push(cell);\r\n cell.setContentHeight(this._contentHeight);\r\n return cell;\r\n }\r\n\r\n public getOrCreateBodyCell(column: TablixColumn, scrollable: boolean): TablixCell {\r\n let cell: TablixCell = this.getOrCreateCell();\r\n cell.prepare(scrollable);\r\n column.addBodyCell(cell);\r\n this._realizedBodyCells.push(cell);\r\n cell.setContentHeight(this._contentHeight);\r\n return cell;\r\n }\r\n\r\n public getOrCreateFooterRowHeader(column: TablixColumn): TablixCell {\r\n let cell: TablixCell = this.getOrCreateCell();\r\n cell.prepare(false);\r\n column.footer = cell;\r\n this._realizedRowHeaders.push(cell);\r\n cell.setContentHeight(this._contentHeight);\r\n return cell;\r\n }\r\n\r\n public getOrCreateFooterBodyCell(column: TablixColumn, scrollable: boolean): TablixCell {\r\n let cell: TablixCell = this.getOrCreateCell();\r\n cell.prepare(scrollable);\r\n column.footer = cell;\r\n this._realizedBodyCells.push(cell);\r\n cell.setContentHeight(this._contentHeight);\r\n return cell;\r\n }\r\n\r\n public getRowHeaderLeafIndex(): number {\r\n let index = -1;\r\n let count = this._allocatedCells.length;\r\n for (let i = 0; i < count; i++) {\r\n if (this._allocatedCells[i].type !== TablixCellType.RowHeader)\r\n break;\r\n index++;\r\n }\r\n\r\n return index;\r\n }\r\n\r\n public getAllocatedCellAt(index: number) {\r\n return this._allocatedCells[index];\r\n }\r\n\r\n public moveCellsBy(delta: number) {\r\n if (this._allocatedCells.length === 0)\r\n return;\r\n\r\n if (delta > 0) {\r\n let refCell = this._allocatedCells[0];\r\n for (let i = 0; i < delta; i++) {\r\n let cell: TablixCell = this.createCell(this);\r\n this._presenter.onInsertCellBefore(cell, refCell);\r\n this._allocatedCells.unshift(cell);\r\n refCell = cell;\r\n }\r\n }\r\n else {\r\n delta = -delta;\r\n for (let i = 0; i < delta; i++) {\r\n this._presenter.onRemoveCell(this._allocatedCells[i]);\r\n }\r\n this._allocatedCells.splice(0, delta);\r\n }\r\n }\r\n\r\n public getRealizedCellCount() {\r\n return this._realizedCellsCount;\r\n }\r\n\r\n public getRealizedHeadersCount(): number {\r\n return this._realizedRowHeaders.length;\r\n }\r\n\r\n public getRealizedHeaderAt(index: number) {\r\n return this._realizedRowHeaders[index];\r\n }\r\n\r\n public getTablixCell(): TablixCell {\r\n let realizedCells: TablixCell[];\r\n\r\n if (this._realizedRowHeaders.length > 0) {\r\n realizedCells = this._realizedRowHeaders;\r\n } else if (this._realizedCornerCells.length > 0) {\r\n realizedCells = this._realizedCornerCells;\r\n } else {\r\n realizedCells = this._realizedColumnHeaders;\r\n }\r\n\r\n //Debug.assert(realizedCells.length !== 0, \"At least on header should have been realized\");\r\n return realizedCells[realizedCells.length - 1];\r\n }\r\n\r\n public getOrCreateEmptySpaceCell(): TablixCell {\r\n let cell: TablixCell = this._allocatedCells[this._realizedCellsCount];\r\n if (cell === undefined) {\r\n cell = this.createCell(this);\r\n this._allocatedCells[this._realizedCellsCount] = cell;\r\n this._presenter.onAppendCell(cell);\r\n }\r\n return cell;\r\n }\r\n\r\n private createCell(row: TablixRow): TablixCell {\r\n let presenter = this._presenter.createCellPresenter(this._owner.owner.layoutManager.getLayoutKind());\r\n return new TablixCell(presenter, presenter, this);\r\n }\r\n\r\n private getOrCreateCell(): TablixCell {\r\n let cell: TablixCell = this._allocatedCells[this._realizedCellsCount];\r\n if (cell === undefined) {\r\n cell = this.createCell(this);\r\n this._allocatedCells[this._realizedCellsCount] = cell;\r\n this._presenter.onAppendCell(cell);\r\n } else {\r\n cell.colSpan = 1;\r\n cell.rowSpan = 1;\r\n }\r\n\r\n this._realizedCellsCount = this._realizedCellsCount + 1;\r\n return cell;\r\n }\r\n\r\n public resize(height: number): void {\r\n if (height === this.getContentContextualWidth())\r\n return;\r\n\r\n this._contentHeight = height;\r\n this.setContentHeight();\r\n this._heightFixed = true;\r\n this.setAligningContextualWidth(-1);\r\n }\r\n\r\n public fixSize(): void {\r\n if (this.sizeFixed())\r\n return;\r\n\r\n this.setContentHeight();\r\n this._heightFixed = true;\r\n }\r\n\r\n public getContentContextualWidth(): number {\r\n return this._contentHeight;\r\n }\r\n\r\n public getCellIContentContextualWidth(cell: TablixCell): number {\r\n return this.presenter.getCellContentHeight(cell);\r\n }\r\n\r\n public getCellSpanningHeight(cell: ITablixCell, tablixGrid: TablixGrid): number {\r\n let height = this.getContextualWidth();\r\n\r\n if (cell.rowSpan > 1) {\r\n let index = this.getIndex(tablixGrid);\r\n let rows = tablixGrid.realizedRows;\r\n for (let i = 1; i < cell.rowSpan; i++)\r\n height += rows[i + index].getContextualWidth();\r\n }\r\n\r\n return height;\r\n }\r\n\r\n public getContextualWidth(): number {\r\n if (this._height === -1 || this._contentHeight === -1)\r\n this._height = this._presenter.getHeight();\r\n\r\n return this._height;\r\n }\r\n\r\n public sizeFixed(): boolean {\r\n return this._heightFixed;\r\n }\r\n\r\n public calculateSize(): number {\r\n if (this._heightFixed)\r\n return this._contentHeight;\r\n\r\n let contentHeight: number = 0;\r\n let count = this._realizedRowHeaders.length;\r\n\r\n for (let i = 0; i < count; i++) {\r\n let cell: TablixCell = this._realizedRowHeaders[i];\r\n if (cell.rowSpan === 1)\r\n contentHeight = Math.max(contentHeight, this._presenter.getCellContentHeight(cell));\r\n }\r\n\r\n count = this._realizedCornerCells.length;\r\n\r\n for (let i = 0; i < count; i++) {\r\n contentHeight = Math.max(contentHeight, this._presenter.getCellContentHeight(this._realizedCornerCells[i]));\r\n }\r\n\r\n count = this._realizedColumnHeaders.length;\r\n\r\n for (let i = 0; i < count; i++) {\r\n let cell: TablixCell = this._realizedColumnHeaders[i];\r\n if (cell.rowSpan === 1)\r\n contentHeight = Math.max(contentHeight, this._presenter.getCellContentHeight(cell));\r\n }\r\n\r\n count = this._realizedBodyCells.length;\r\n\r\n for (let i = 0; i < count; i++) {\r\n contentHeight = Math.max(contentHeight, this._presenter.getCellContentHeight(this._realizedBodyCells[i]));\r\n }\r\n\r\n return this._contentHeight = contentHeight;\r\n }\r\n\r\n public setAligningContextualWidth(size: number): void {\r\n // TODO should be implemented when we support variable row heights\r\n }\r\n\r\n public getAligningContextualWidth(): number {\r\n // TODO should be implemented when we support variable row heights\r\n return -1;\r\n }\r\n\r\n private setContentHeight(): void {\r\n let count = this._realizedRowHeaders.length;\r\n\r\n for (let i = 0; i < count; i++) {\r\n let cell: TablixCell = this._realizedRowHeaders[i];\r\n if (cell.rowSpan)\r\n cell.setContentHeight(this._contentHeight);\r\n }\r\n\r\n count = this._realizedCornerCells.length;\r\n\r\n for (let i = 0; i < count; i++) {\r\n this._realizedCornerCells[i].setContentHeight(this._contentHeight);\r\n }\r\n\r\n count = this._realizedColumnHeaders.length;\r\n\r\n for (let i = 0; i < count; i++) {\r\n let cell: TablixCell = this._realizedColumnHeaders[i];\r\n if (cell.rowSpan === 1)\r\n cell.setContentHeight(this._contentHeight);\r\n }\r\n\r\n count = this._realizedBodyCells.length;\r\n\r\n for (let i = 0; i < count; i++) {\r\n this._realizedBodyCells[i].setContentHeight(this._contentHeight);\r\n }\r\n\r\n this._height = -1;\r\n }\r\n\r\n public getIndex(grid: TablixGrid): number {\r\n return grid.realizedRows.indexOf(this);\r\n }\r\n\r\n public getHeaders(): TablixCell[] {\r\n return this._realizedRowHeaders;\r\n }\r\n\r\n public getOtherDimensionHeaders(): TablixCell[] {\r\n return this._realizedColumnHeaders;\r\n }\r\n\r\n public getCellContextualSpan(cell: TablixCell): number {\r\n return cell.rowSpan;\r\n }\r\n\r\n public getOtherDimensionOwner(cell: TablixCell): ITablixGridItem {\r\n return cell._column;\r\n }\r\n }\r\n\r\n export class TablixGrid {\r\n private _owner: TablixControl;\r\n\r\n private _rows: TablixRow[];\r\n private _realizedRows: TablixRow[];\r\n\r\n private _columns: TablixColumn[];\r\n private _realizedColumns: TablixColumn[];\r\n\r\n private _footerRow: TablixRow;\r\n\r\n private _emptySpaceHeaderCell: TablixCell;\r\n private _emptyFooterSpaceCell: TablixCell;\r\n\r\n public _presenter: TablixGridPresenter; // internal\r\n\r\n private _fillColumnsProportionally: boolean;\r\n\r\n constructor(presenter: TablixGridPresenter) {\r\n this._presenter = presenter;\r\n this._footerRow = null;\r\n }\r\n\r\n public initialize(owner: TablixControl, gridHost: HTMLElement, footerHost: HTMLElement) {\r\n this._owner = owner;\r\n this._presenter.initialize(this, gridHost, footerHost, owner);\r\n\r\n this.fillColumnsProportionally = false;\r\n this._realizedRows = [];\r\n this._realizedColumns = [];\r\n this._emptySpaceHeaderCell = null;\r\n this._emptyFooterSpaceCell = null;\r\n }\r\n\r\n public get owner(): TablixControl {\r\n return this._owner;\r\n }\r\n\r\n public set fillColumnsProportionally(value: boolean) {\r\n if (this._fillColumnsProportionally === value)\r\n return;\r\n\r\n this._fillColumnsProportionally = value;\r\n this._presenter.onFillColumnsProportionallyChanged(value);\r\n }\r\n\r\n public get fillColumnsProportionally(): boolean {\r\n return this._fillColumnsProportionally;\r\n }\r\n\r\n public get realizedColumns(): TablixColumn[] {\r\n return this._realizedColumns;\r\n }\r\n\r\n public set realizedColumns(columns: TablixColumn[]) {\r\n this._realizedColumns = columns;\r\n }\r\n\r\n public get realizedRows(): TablixRow[] {\r\n return this._realizedRows;\r\n }\r\n\r\n public set realizedRows(rows: TablixRow[]) {\r\n this._realizedRows = rows;\r\n }\r\n\r\n public get footerRow(): TablixRow {\r\n return this._footerRow;\r\n }\r\n\r\n public get emptySpaceHeaderCell(): TablixCell {\r\n return this._emptySpaceHeaderCell;\r\n }\r\n\r\n public get emptySpaceFooterCell(): TablixCell {\r\n return this._emptyFooterSpaceCell;\r\n }\r\n\r\n public ShowEmptySpaceCells(rowSpan: number, width: number): void {\r\n if (this._realizedRows.length === 0)\r\n return;\r\n\r\n if (this._realizedRows.length !== 0 && !this._emptySpaceHeaderCell) {\r\n this._emptySpaceHeaderCell = this._realizedRows[0].getOrCreateEmptySpaceCell();\r\n this._emptySpaceHeaderCell.rowSpan = rowSpan;\r\n this._emptySpaceHeaderCell.colSpan = 1;\r\n this._emptySpaceHeaderCell.setContentWidth(width);\r\n }\r\n\r\n if (this._footerRow && (this._emptyFooterSpaceCell === null)) {\r\n this._emptyFooterSpaceCell = this._footerRow.getOrCreateEmptySpaceCell();\r\n this._emptyFooterSpaceCell.rowSpan = 1;\r\n this._emptyFooterSpaceCell.colSpan = 1;\r\n this._emptyFooterSpaceCell.setContentWidth(width);\r\n }\r\n }\r\n\r\n public HideEmptySpaceCells(): void {\r\n if (this._emptySpaceHeaderCell) {\r\n this._emptySpaceHeaderCell.clear();\r\n this._emptySpaceHeaderCell = null;\r\n }\r\n\r\n if (this._emptyFooterSpaceCell) {\r\n this._emptyFooterSpaceCell.clear();\r\n this._emptyFooterSpaceCell = null;\r\n }\r\n }\r\n\r\n public onStartRenderingSession(clear: boolean): void {\r\n if (clear) {\r\n this.clearRows();\r\n this.clearColumns();\r\n }\r\n }\r\n\r\n public onStartRenderingIteration(): void {\r\n this.initializeRows();\r\n this.initializeColumns();\r\n }\r\n\r\n public onEndRenderingIteration(): void {\r\n let rows: TablixRow[] = this._rows;\r\n if (rows !== undefined) {\r\n let rowCount = rows.length;\r\n for (let i = 0; i < rowCount; i++) {\r\n rows[i].releaseUnusedCells(this._owner);\r\n }\r\n }\r\n\r\n if (this._footerRow) {\r\n this._footerRow.releaseUnusedCells(this._owner);\r\n }\r\n }\r\n\r\n public getOrCreateRow(rowIndex: number): TablixRow {\r\n let currentRow: TablixRow = this._rows[rowIndex];\r\n if (currentRow === undefined) {\r\n currentRow = new TablixRow(this._presenter.createRowPresenter());\r\n currentRow.initialize(this);\r\n this._presenter.onAppendRow(currentRow);\r\n this._rows[rowIndex] = currentRow;\r\n }\r\n\r\n if (this._realizedRows[rowIndex] === undefined) {\r\n this._realizedRows[rowIndex] = currentRow;\r\n }\r\n\r\n return currentRow;\r\n }\r\n\r\n public getOrCreateFootersRow(): TablixRow {\r\n if (this._footerRow === null) {\r\n this._footerRow = new TablixRow(this._presenter.createRowPresenter());\r\n this._footerRow.initialize(this);\r\n this._presenter.onAddFooterRow(this._footerRow);\r\n }\r\n return this._footerRow;\r\n }\r\n\r\n public moveRowsToEnd(moveFromIndex: number, count: number) {\r\n for (let i = 0; i < count; i++) {\r\n let row = this._rows[i + moveFromIndex];\r\n debug.assertValue(row, \"Invalid Row Index\");\r\n this._presenter.onRemoveRow(row);\r\n this._presenter.onAppendRow(row);\r\n this._rows.push(row);\r\n }\r\n\r\n this._rows.splice(moveFromIndex, count);\r\n }\r\n\r\n public moveRowsToStart(moveToIndex: number, count: number) {\r\n let refRow = this._rows[moveToIndex];\r\n debug.assertValue(refRow, \"Invalid Row Index\");\r\n\r\n for (let i = 0; i < count; i++) {\r\n let row = this._rows.pop();\r\n this._presenter.onRemoveRow(row);\r\n this._presenter.onInsertRowBefore(row, refRow);\r\n this._rows.splice(moveToIndex + i, 0, row);\r\n }\r\n }\r\n\r\n public moveColumnsToEnd(moveFromIndex: number, count: number) {\r\n let firstCol: number = this._rows[0]._realizedCornerCells.length;\r\n let leafStartDepth: number = Math.max(this._columns[firstCol]._realizedColumnHeaders.length - 1, 0);\r\n\r\n for (let i = leafStartDepth; i < this._rows.length; i++) {\r\n this._rows[i].moveScrollableCellsToEnd(count);\r\n }\r\n\r\n for (let i = 0; i < count; i++) {\r\n let column = this._columns[i + moveFromIndex];\r\n //Debug.assertValue(column, \"Invalid Column Index\");\r\n this._columns.push(column);\r\n }\r\n\r\n this._columns.splice(moveFromIndex, count);\r\n }\r\n\r\n public moveColumnsToStart(moveToIndex: number, count: number) {\r\n let firstCol: number = this._rows[0]._realizedCornerCells.length;\r\n let leafStartDepth: number = Math.max(this._columns[firstCol]._realizedColumnHeaders.length - 1, 0);\r\n\r\n for (let i = leafStartDepth; i < this._rows.length; i++) {\r\n this._rows[i].moveScrollableCellsToStart(count);\r\n }\r\n\r\n for (let i = 0; i < count; i++) {\r\n let column = this._columns.pop();\r\n this._columns.splice(moveToIndex + i, 0, column);\r\n }\r\n }\r\n\r\n public getOrCreateColumn(columnIndex: number): TablixColumn {\r\n let currentColumn: TablixColumn = this._columns[columnIndex];\r\n if (currentColumn === undefined) {\r\n currentColumn = new TablixColumn(this._presenter.createColumnPresenter(columnIndex), columnIndex);\r\n currentColumn.initialize(this);\r\n this._columns[columnIndex] = currentColumn;\r\n }\r\n\r\n if (this._realizedColumns[columnIndex] === undefined) {\r\n this._realizedColumns[columnIndex] = currentColumn;\r\n }\r\n\r\n return currentColumn;\r\n }\r\n\r\n private initializeColumns(): void {\r\n if (!this._columns)\r\n this._columns = [];\r\n\r\n let length: number = this._columns.length;\r\n\r\n for (let i = 0; i < length; i++) {\r\n this._columns[i].initialize(this);\r\n }\r\n\r\n this._realizedColumns = [];\r\n }\r\n\r\n private clearColumns() {\r\n this._columns = null;\r\n this._realizedColumns = null;\r\n }\r\n\r\n private initializeRows(): void {\r\n //make sure rowDimension confirms it and it's not null in the grid\r\n let hasFooter: boolean = this._owner.rowDimension.hasFooter() && (this._footerRow !== null);\r\n\r\n this._realizedRows = [];\r\n\r\n if (!this._rows) {\r\n this._rows = [];\r\n }\r\n\r\n let rows: TablixRow[] = this._rows;\r\n let length: number = rows.length;\r\n\r\n for (let i = 0; i < length; i++) {\r\n rows[i].initialize(this);\r\n }\r\n\r\n if (hasFooter) {\r\n if (!this._footerRow) {\r\n this.getOrCreateFootersRow();\r\n }\r\n this._footerRow.initialize(this);\r\n }\r\n }\r\n\r\n private clearRows() {\r\n let rows: TablixRow[] = this._rows;\r\n if (rows) {\r\n let length = rows.length;\r\n for (let i = 0; i < length; i++) {\r\n rows[i].releaseAllCells(this._owner);\r\n }\r\n\r\n if (this._footerRow)\r\n this._footerRow.releaseAllCells(this._owner);\r\n\r\n this._presenter.onClear();\r\n this._footerRow = null;\r\n this._rows = null;\r\n this._realizedRows = null;\r\n }\r\n }\r\n\r\n public getWidth(): number {\r\n return this._presenter.getWidth();\r\n }\r\n\r\n public getHeight(): number {\r\n return this._presenter.getHeight();\r\n }\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../../../_references.ts\"/>\r\n\r\nmodule powerbi.visuals.controls.internal {\r\n import PixelConverter = jsCommon.PixelConverter;\r\n\r\n /**\r\n * This class is used for layouts that don't or cannot\r\n * rely on DOM measurements. Instead they compute all required\r\n * widths and heights and store it in this structure.\r\n */\r\n export class SizeComputationManager {\r\n\r\n // Unfortunately since we are doing manual layout, we need to hardcode some layout properties here.\r\n // These must be kept in sync with what is specified in the .bi-dashboard-tablix class.\r\n private static DashboardCellPaddingLeft = 10;\r\n private static DashboardCellPaddingRight = 5;\r\n\r\n // Minimum size for a column, used to calculate layout\r\n private static TablixMinimumColumnWidth = 75;\r\n\r\n private _viewport: IViewport;\r\n private _columnCount: number;\r\n private _cellWidth: number;\r\n private _cellHeight: number;\r\n private _scalingFactor: number;\r\n\r\n public hasImageContent: boolean;\r\n\r\n public get visibleWidth(): number {\r\n return this._viewport ? this._viewport.width : 0;\r\n }\r\n\r\n public get visibleHeight(): number {\r\n return this._viewport ? this._viewport.height : 0;\r\n }\r\n\r\n public get gridWidth(): number {\r\n return this.visibleWidth;\r\n }\r\n\r\n public get gridHeight(): number {\r\n return this.visibleHeight;\r\n }\r\n\r\n public get rowHeight(): number {\r\n return this._cellHeight;\r\n }\r\n\r\n public get cellWidth(): number {\r\n return this._cellWidth;\r\n }\r\n\r\n public get cellHeight(): number {\r\n return this._cellHeight;\r\n }\r\n\r\n public get contentWidth(): number {\r\n return this._cellWidth - SizeComputationManager.DashboardCellPaddingLeft - SizeComputationManager.DashboardCellPaddingRight;\r\n }\r\n\r\n public get contentHeight(): number {\r\n return this._cellHeight;\r\n }\r\n\r\n public updateColumnCount(columnCount: number): void {\r\n this._columnCount = columnCount;\r\n }\r\n\r\n public updateRowHeight(rowHeight: number): void {\r\n this._cellHeight = rowHeight;\r\n }\r\n\r\n public updateScalingFactor(scalingFactor: number): void {\r\n this._scalingFactor = scalingFactor;\r\n this._cellWidth = this.computeColumnWidth(this._columnCount);\r\n }\r\n\r\n public updateViewport(viewport: IViewport): void {\r\n this._viewport = viewport;\r\n\r\n this._cellWidth = this.computeColumnWidth(this._columnCount);\r\n this._cellHeight = this.computeColumnHeight();\r\n }\r\n\r\n private computeColumnWidth(totalColumnCount: number): number {\r\n let scalingFactor = this._scalingFactor;\r\n\r\n if (!scalingFactor)\r\n scalingFactor = 1;\r\n\r\n let minimumColumnWidth = scalingFactor * SizeComputationManager.TablixMinimumColumnWidth;\r\n let maxAllowedColumns = Math.floor(this._viewport.width / minimumColumnWidth);\r\n\r\n return this.fitToColumnCount(maxAllowedColumns, totalColumnCount);\r\n }\r\n\r\n private computeColumnHeight(): number {\r\n if (!this.hasImageContent)\r\n return this._cellHeight;\r\n\r\n let width = this._viewport.width;\r\n if (width <= 250) {\r\n // Small\r\n return 20;\r\n }\r\n else if (width <= 510) {\r\n // Medium\r\n return 51;\r\n }\r\n else if (width <= 770) {\r\n // Large\r\n return 52;\r\n }\r\n\r\n debug.assertFail(\"Fixed size is only for viewport up to 770px width.\");\r\n }\r\n\r\n private fitToColumnCount(maxAllowedColumnCount: number, totalColumnCount: number): number {\r\n let columnsToFit = Math.min(maxAllowedColumnCount, totalColumnCount);\r\n return Math.floor(this._viewport.width / columnsToFit);\r\n }\r\n }\r\n\r\n export class DimensionLayoutManager implements IDimensionLayoutManager {\r\n public static _pixelPrecision = 1.0001;\r\n public static _scrollOffsetPrecision = 0.01;\r\n\r\n public _grid: TablixGrid; // internal\r\n public _gridOffset: number; // internal\r\n\r\n protected _contextualWidthToFill: number;\r\n\r\n private _owner: TablixLayoutManager;\r\n private _realizationManager: TablixDimensionRealizationManager;\r\n private _alignToEnd: boolean;\r\n private _lastScrollOffset: number;\r\n private _isScrolling: boolean;\r\n private _fixedSizeEnabled: boolean;\r\n private _done: boolean;\r\n private _measureEnabled: boolean;\r\n\r\n constructor(owner: TablixLayoutManager, grid: TablixGrid, realizationManager: TablixDimensionRealizationManager) {\r\n //debug.assertValue(realizationManager, \"Realization Manager must be defined\");\r\n\r\n this._owner = owner;\r\n this._grid = grid;\r\n this._lastScrollOffset = null;\r\n this._isScrolling = false;\r\n this._fixedSizeEnabled = true;\r\n this._done = false;\r\n\r\n this._realizationManager = realizationManager;\r\n }\r\n\r\n public get owner(): TablixLayoutManager {\r\n return this._owner;\r\n }\r\n\r\n public get realizationManager(): TablixDimensionRealizationManager {\r\n return this._realizationManager;\r\n }\r\n\r\n public get fixedSizeEnabled(): boolean {\r\n return this._fixedSizeEnabled;\r\n }\r\n\r\n public set fixedSizeEnabled(enable: boolean) {\r\n this._fixedSizeEnabled = enable;\r\n }\r\n\r\n public onCornerCellRealized(item: any, cell: ITablixCell, leaf: boolean): void {\r\n this._realizationManager.onCornerCellRealized(item, cell);\r\n }\r\n\r\n public onHeaderRealized(item: any, cell: ITablixCell, leaf): void {\r\n this._realizationManager.onHeaderRealized(item, cell, leaf);\r\n }\r\n\r\n public get needsToRealize(): boolean {\r\n return this._realizationManager.needsToRealize;\r\n }\r\n\r\n public getVisibleSizeRatio(): number {\r\n return 1 - this.dimension.getFractionScrollOffset();\r\n }\r\n\r\n public get alignToEnd(): boolean {\r\n return this._alignToEnd;\r\n }\r\n\r\n public get done(): boolean {\r\n return this._done;\r\n }\r\n\r\n public _requiresMeasure(): boolean {\r\n debug.assertFail(\"PureVirtualMethod: DimensionLayoutManager._requiresMeasure\");\r\n return true;\r\n }\r\n\r\n public startScrollingSession(): void {\r\n this._isScrolling = true;\r\n }\r\n\r\n public endScrollingSession(): void {\r\n this._isScrolling = false;\r\n }\r\n\r\n public isScrolling(): boolean {\r\n return this._isScrolling;\r\n }\r\n\r\n public isResizing(): boolean {\r\n return false;\r\n }\r\n\r\n public getOtherHierarchyContextualHeight(): number {\r\n let otherDimension = this.dimension.otherDimension;\r\n let count = otherDimension.getDepth();\r\n\r\n let contextualHeight = 0;\r\n let items = this._getRealizedItems();\r\n\r\n if (items.length > 0) {\r\n for (let i = 0; i < count; i++) {\r\n contextualHeight += items[i].getContextualWidth();\r\n }\r\n }\r\n\r\n return contextualHeight;\r\n }\r\n\r\n public _isAutoSized(): boolean {\r\n debug.assertFail(\"PureVirtualMethod: DimensionLayoutManager._isAutoSized\");\r\n return false;\r\n }\r\n\r\n public onStartRenderingSession() {\r\n this._measureEnabled = this._requiresMeasure();\r\n this._gridOffset = this.dimension.otherDimension.getDepth();\r\n }\r\n\r\n public onEndRenderingSession() {\r\n this._realizationManager.onEndRenderingSession();\r\n this._alignToEnd = false;\r\n this._done = false;\r\n this._measureEnabled = true;\r\n this._sendDimensionsToControl();\r\n }\r\n\r\n /**\r\n * Implementing classes must override this to send dimentions to TablixControl.\r\n */\r\n public _sendDimensionsToControl(): void { //extending class overrides this\r\n debug.assertFail(\"PureVirtualMethod: DimensionLayoutManager._sendDimensionsToControl\");\r\n }\r\n\r\n public get measureEnabled() {\r\n return this._measureEnabled;\r\n }\r\n\r\n public getFooterContextualWidth(): number {\r\n return 0;\r\n }\r\n\r\n public onStartRenderingIteration(clear: boolean, contextualWidth: number) {\r\n if (this._measureEnabled && !this._done) {\r\n this._contextualWidthToFill = (contextualWidth - this.otherScrollbarContextualWidth) * this.getGridScale() - this.getFooterContextualWidth();\r\n }\r\n\r\n this._realizationManager.onStartRenderingIteration();\r\n\r\n if (clear) {\r\n this._lastScrollOffset = null;\r\n }\r\n else if (this._lastScrollOffset !== null) {\r\n this.swapElements();\r\n }\r\n }\r\n\r\n public get allItemsRealized(): boolean {\r\n return this.getRealizedItemsCount() - this._gridOffset === this.dimension.getItemsCount() || this.dimension.getItemsCount() === 0;\r\n }\r\n\r\n public onEndRenderingIteration(): void {\r\n if (this._done) {\r\n return;\r\n }\r\n\r\n if (!this._measureEnabled) {\r\n this._lastScrollOffset = this.dimension.scrollOffset;\r\n this._done = true;\r\n return;\r\n }\r\n\r\n let gridContextualWidth: number = this.getGridContextualWidth();\r\n\r\n let filled: boolean = Double.greaterOrEqualWithPrecision(gridContextualWidth, this._contextualWidthToFill, DimensionLayoutManager._pixelPrecision);\r\n let allRealized = this.allItemsRealized;\r\n\r\n let newScrollOffset;\r\n\r\n if (filled) {\r\n newScrollOffset = this.scrollForwardToAlignEnd(gridContextualWidth);\r\n }\r\n else {\r\n newScrollOffset = this.scrollBackwardToFill(gridContextualWidth);\r\n }\r\n\r\n this._realizationManager.onEndRenderingIteration(gridContextualWidth, filled);\r\n\r\n let originalScrollbarVisible: boolean = this.dimension.scrollbar.visible;\r\n\r\n this.updateScrollbar(gridContextualWidth);\r\n\r\n this._done = (filled || allRealized) &&\r\n this.dimension.scrollbar.visible === originalScrollbarVisible &&\r\n Double.equalWithPrecision(newScrollOffset, this.dimension.scrollOffset, DimensionLayoutManager._scrollOffsetPrecision);\r\n\r\n this.dimension.scrollOffset = newScrollOffset;\r\n this._lastScrollOffset = this.dimension.scrollOffset;\r\n }\r\n\r\n private getScrollDeltaWithinPage(): number {\r\n if (this._lastScrollOffset !== null) {\r\n let delta = this.dimension.getIntegerScrollOffset() - Math.floor(this._lastScrollOffset);\r\n if (Math.abs(delta) < this.getRealizedItemsCount() - this.dimension.otherDimension.getDepth()) {\r\n return delta;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n private swapElements() {\r\n let delta = this.getScrollDeltaWithinPage();\r\n if (delta !== null) {\r\n let otherHierarchyDepth = this.dimension.otherDimension.getDepth();\r\n\r\n if (Math.abs(delta) < this.getRealizedItemsCount() - otherHierarchyDepth) {\r\n if (delta > 0) {\r\n this._moveElementsToBottom(otherHierarchyDepth, delta);\r\n }\r\n else if (delta < 0) {\r\n this._moveElementsToTop(otherHierarchyDepth, -delta);\r\n }\r\n }\r\n }\r\n }\r\n\r\n public _getRealizedItems(): ITablixGridItem[] {\r\n // abstract\r\n debug.assertFail(\"PureVirtualMethod: DimensionLayoutManager._getRealizedItems\");\r\n return null;\r\n }\r\n\r\n public getRealizedItemsCount(): number {\r\n let realizedItems = this._getRealizedItems();\r\n return realizedItems.length;\r\n }\r\n\r\n public _moveElementsToBottom(moveFromIndex: number, count): void {\r\n debug.assertFail(\"PureVirtualMethod: DimensionLayoutManager._moveElementsToBottom\");\r\n }\r\n\r\n public _moveElementsToTop(moveToIndex: number, count): void {\r\n debug.assertFail(\"PureVirtualMethod: DimensionLayoutManager._moveElementsToTop\");\r\n }\r\n\r\n public isScrollingWithinPage(): boolean {\r\n return this.getScrollDeltaWithinPage() !== null;\r\n }\r\n\r\n public getGridContextualWidth(): number {\r\n debug.assertFail(\"PureVirtualMethod: DimensionLayoutManager.getGridContextualWidth\");\r\n return 0;\r\n }\r\n\r\n private updateScrollbar(gridContextualWidth: number): void {\r\n let scrollbar = this.dimension.scrollbar;\r\n scrollbar.viewMin = this.dimension.scrollOffset;\r\n scrollbar.min = 0;\r\n scrollbar.max = this.dimension.getItemsCount();\r\n scrollbar.viewSize = this.getViewSize(gridContextualWidth);\r\n this.dimension.scrollbar.show(this.canScroll(gridContextualWidth));\r\n }\r\n\r\n public getViewSize(gridContextualWidth: number): number {\r\n let count: number = this.getRealizedItemsCount();\r\n if (count === 0)\r\n return 0;\r\n\r\n let startIndex = this._gridOffset;\r\n let sizeInItems = 0;\r\n let sizeInPixels = 0;\r\n\r\n let widthToFill: number = this._contextualWidthToFill;\r\n let scrollableArea = widthToFill - this.getOtherHierarchyContextualHeight();\r\n\r\n let error = this.getMeaurementError(gridContextualWidth);\r\n\r\n for (let i = startIndex; i < count; i++) {\r\n let visibleRatio;\r\n if (i === startIndex) {\r\n visibleRatio = this.getVisibleSizeRatio();\r\n }\r\n else\r\n visibleRatio = 1;\r\n\r\n let itemContextualWidth = this.getItemContextualWidthWithScrolling(i) * error;\r\n\r\n sizeInPixels += itemContextualWidth;\r\n sizeInItems += visibleRatio;\r\n\r\n if (Double.greaterWithPrecision(sizeInPixels, scrollableArea, DimensionLayoutManager._pixelPrecision)) {\r\n sizeInItems -= ((sizeInPixels - scrollableArea) / itemContextualWidth) * visibleRatio;\r\n break;\r\n }\r\n }\r\n\r\n return sizeInItems;\r\n }\r\n\r\n public isScrollableHeader(item: any, items: any, index: number): boolean {\r\n if (index !== 0 || this.dimension.getFractionScrollOffset() === 0) {\r\n return false;\r\n }\r\n\r\n let hierarchyNavigator: ITablixHierarchyNavigator = this.dimension._hierarchyNavigator;\r\n\r\n if (hierarchyNavigator.isLeaf(item)) {\r\n return true;\r\n }\r\n\r\n let currentItem: any = item;\r\n let currentItems: any[] = items;\r\n\r\n do {\r\n currentItems = hierarchyNavigator.getChildren(currentItem);\r\n currentItem = this.dimension.getFirstVisibleItem(hierarchyNavigator.getLevel(currentItem) + 1);\r\n\r\n if (currentItem === undefined) {\r\n break;\r\n }\r\n\r\n if (!hierarchyNavigator.isLastItem(currentItem, currentItems)) {\r\n return false;\r\n }\r\n\r\n } while (!hierarchyNavigator.isLeaf(currentItem));\r\n\r\n return true;\r\n }\r\n\r\n public reachedEnd(): boolean {\r\n return this.dimension.getIntegerScrollOffset() + (this.getRealizedItemsCount() - this._gridOffset) >= this.dimension.getItemsCount();\r\n }\r\n\r\n public scrollBackwardToFill(gridContextualWidth: number): number {\r\n let newScrollOffset = this.dimension.scrollOffset;\r\n if (this.reachedEnd()) {\r\n let widthToFill = this._contextualWidthToFill - gridContextualWidth;\r\n if (this.dimension.getItemsCount() > 0) {\r\n let averageColumnwidth = gridContextualWidth / (this.getRealizedItemsCount() - this.dimension.getFractionScrollOffset());\r\n newScrollOffset = this.dimension.getValidScrollOffset(Math.floor(this.dimension.scrollOffset - (widthToFill / averageColumnwidth)));\r\n }\r\n this._alignToEnd = !Double.equalWithPrecision(newScrollOffset, this.dimension.scrollOffset, DimensionLayoutManager._scrollOffsetPrecision); // this is an aproximate scrolling back, we have to ensure it is aligned to the end of the control\r\n }\r\n return newScrollOffset;\r\n }\r\n\r\n private getItemContextualWidth(index: number): number {\r\n let realizedItems = this._getRealizedItems();\r\n if (index >= realizedItems.length)\r\n return null;\r\n\r\n return realizedItems[index].getContextualWidth();\r\n }\r\n\r\n private getItemContextualWidthWithScrolling(index: number): number {\r\n return this.getSizeWithScrolling(this.getItemContextualWidth(index), index);\r\n }\r\n\r\n public getSizeWithScrolling(size: number, index: number): number {\r\n let ratio;\r\n\r\n if (this._gridOffset === index) {\r\n ratio = this.getVisibleSizeRatio();\r\n }\r\n else {\r\n ratio = 1;\r\n }\r\n\r\n return size * ratio;\r\n }\r\n\r\n public getGridContextualWidthFromItems(): number {\r\n let count = this.getRealizedItemsCount();\r\n let contextualWidth = 0;\r\n for (let i = 0; i < count; i++) {\r\n contextualWidth += this.getItemContextualWidthWithScrolling(i);\r\n }\r\n return contextualWidth;\r\n }\r\n\r\n private getMeaurementError(gridContextualWidth: number): number {\r\n return gridContextualWidth / this.getGridContextualWidthFromItems();\r\n }\r\n\r\n private scrollForwardToAlignEnd(gridContextualWidth: number): number {\r\n let newScrollOffset = this.dimension.scrollOffset;\r\n if (this._alignToEnd) {\r\n let withinThreshold = Double.equalWithPrecision(gridContextualWidth, this._contextualWidthToFill, DimensionLayoutManager._pixelPrecision);\r\n if (!withinThreshold) { // if it is within the threshold we consider it aligned, skip aliging algorithm\r\n let count: number = this.getRealizedItemsCount();\r\n let startIndex = this._gridOffset;\r\n let widthToScroll = gridContextualWidth - this._contextualWidthToFill;\r\n\r\n let error = this.getMeaurementError(gridContextualWidth);\r\n\r\n for (let i = startIndex; i < count; i++) {\r\n let itemContextualWidth = this.getItemContextualWidth(i) * error;\r\n if (Double.lessWithPrecision(itemContextualWidth, widthToScroll, DimensionLayoutManager._pixelPrecision)) {\r\n widthToScroll -= itemContextualWidth;\r\n }\r\n else {\r\n let visibleRatio = startIndex === i ? 1 - this.dimension.getFractionScrollOffset() : 1;\r\n newScrollOffset = this.dimension.getValidScrollOffset(this.dimension.scrollOffset + (i - startIndex) + (widthToScroll * visibleRatio / itemContextualWidth));\r\n break;\r\n }\r\n }\r\n }\r\n this._alignToEnd = !withinThreshold;\r\n }\r\n return newScrollOffset;\r\n }\r\n\r\n public get dimension(): TablixDimension {\r\n debug.assertFail(\"PureVirtualMethod: DimensionLayoutManager.dimension\");\r\n return null;\r\n }\r\n\r\n public get otherLayoutManager(): DimensionLayoutManager {\r\n return <DimensionLayoutManager>this.dimension.otherDimension.layoutManager;\r\n }\r\n\r\n public get contextualWidthToFill(): number {\r\n return this._contextualWidthToFill;\r\n }\r\n\r\n public getGridScale(): number {\r\n debug.assertFail(\"PureVirtualMethod: DimensionLayoutManager.getGridScale\");\r\n return 0;\r\n }\r\n\r\n public get otherScrollbarContextualWidth(): number {\r\n debug.assertFail(\"PureVirtualMethod: DimensionLayoutManager.otherScrollbarContextualWidth\");\r\n return 0;\r\n }\r\n\r\n public getActualContextualWidth(gridContextualWidth: number): number {\r\n if (this._isAutoSized() && !this.canScroll(gridContextualWidth))\r\n return gridContextualWidth;\r\n\r\n return this._contextualWidthToFill;\r\n }\r\n\r\n protected canScroll(gridContextualWidth: number): boolean {\r\n debug.assertFail(\"PureVirtualMethod: DimensionLayoutManager.canScroll\");\r\n return false;\r\n }\r\n\r\n public calculateSizes(): void {\r\n if (this.fixedSizeEnabled) {\r\n this.calculateContextualWidths();\r\n this.calculateSpans();\r\n }\r\n }\r\n\r\n protected _calculateSize(item: ITablixGridItem): number {\r\n debug.assertFail(\"PureVirtualMethod: DimensionLayoutManager._calculateSize\");\r\n return null;\r\n }\r\n\r\n public calculateContextualWidths(): void {\r\n let items: ITablixGridItem[] = this._getRealizedItems();\r\n let count = items.length;\r\n\r\n for (let i = 0; i < count; i++) {\r\n let item: ITablixGridItem = items[i];\r\n\r\n if (this.measureEnabled)\r\n item.setAligningContextualWidth(-1);\r\n\r\n this._calculateSize(item);\r\n }\r\n }\r\n\r\n public calculateSpans(): void {\r\n if (this.measureEnabled) {\r\n this.updateNonScrollableItemsSpans();\r\n this.updateScrollableItemsSpans();\r\n }\r\n\r\n // TODO override in row layout manager to add footer to calculation, this is required for Matrix\r\n }\r\n\r\n public updateNonScrollableItemsSpans(): void {\r\n let otherDimensionItems = this.otherLayoutManager._getRealizedItems();\r\n let otherDimensionItemsCount = otherDimensionItems.length;\r\n let startIndex = this.dimension.getDepth();\r\n for (let i = startIndex; i < otherDimensionItemsCount; i++) {\r\n let otherDimensionItem = otherDimensionItems[i];\r\n this.updateSpans(otherDimensionItem, otherDimensionItem.getHeaders());\r\n }\r\n }\r\n\r\n public updateScrollableItemsSpans(): void {\r\n let otherRealizedItems = this.otherLayoutManager._getRealizedItems();\r\n let otherRealizedItemsCount = Math.min(this.dimension.getDepth(), otherRealizedItems.length);\r\n for (let i = 0; i < otherRealizedItemsCount; i++) {\r\n let otherRealizedItem = otherRealizedItems[i];\r\n this.updateSpans(otherRealizedItem, otherRealizedItem.getOtherDimensionHeaders());\r\n }\r\n }\r\n\r\n public fixSizes(): void {\r\n if (this.fixedSizeEnabled) {\r\n let items: ITablixGridItem[] = this._getRealizedItems();\r\n let count = items.length;\r\n for (let i = 0; i < count; i++) {\r\n items[i].fixSize();\r\n }\r\n }\r\n }\r\n\r\n private updateSpans(otherRealizedItem: ITablixGridItem, cells: TablixCell[]): void {\r\n let realizedItems = this._getRealizedItems();\r\n let cellCount = cells.length;\r\n for (let j = 0; j < cellCount; j++) {\r\n let cell = cells[j];\r\n let owner = otherRealizedItem.getOtherDimensionOwner(cell);\r\n let span = owner.getCellContextualSpan(cell);\r\n if (span > 1) {\r\n let totalSizeInSpan = 0;\r\n let startIndex = owner.getIndex(this._grid);\r\n for (let k = 0; k < span; k++) {\r\n let item = realizedItems[k + startIndex];\r\n totalSizeInSpan += this.getSizeWithScrolling(item.getContentContextualWidth(), k + startIndex);\r\n if (k === span - 1)\r\n this.updateLastChildSize(cell, item, totalSizeInSpan);\r\n }\r\n }\r\n }\r\n }\r\n\r\n private updateLastChildSize(spanningCell: TablixCell, item: ITablixGridItem, totalSpanSize: number): void {\r\n let delta = item.getCellIContentContextualWidth(spanningCell) - totalSpanSize;\r\n if (delta > 0) // the parent width is wider than the sum of the children, stretch the last child to compensate the difference\r\n item.setAligningContextualWidth(Math.max(item.getAligningContextualWidth(), delta + item.getContentContextualWidth()));\r\n }\r\n }\r\n\r\n export class ResizeState {\r\n public item: any;\r\n public itemType: TablixCellType;\r\n public column: TablixColumn;\r\n public startColumnWidth: number;\r\n public resizingDelta: number;\r\n public animationFrame: number;\r\n public scale: number;\r\n\r\n constructor(column: TablixColumn, width: number, scale: number) {\r\n this.column = column;\r\n this.item = column.getLeafItem();\r\n this.itemType = column.itemType;\r\n this.startColumnWidth = width;\r\n this.resizingDelta = 0;\r\n this.animationFrame = null;\r\n this.scale = scale;\r\n }\r\n }\r\n\r\n export class ColumnLayoutManager extends DimensionLayoutManager implements ITablixResizeHandler {\r\n static minColumnWidth = 10;\r\n private _resizeState: ResizeState;\r\n\r\n constructor(owner: TablixLayoutManager, grid: TablixGrid, realizationManager: ColumnRealizationManager) {\r\n super(owner, grid, realizationManager);\r\n\r\n realizationManager.owner = this;\r\n\r\n this.fillProportionally = false;\r\n this._resizeState = null;\r\n }\r\n\r\n public get dimension(): TablixDimension {\r\n return this.owner.owner.columnDimension;\r\n }\r\n\r\n public isResizing(): boolean {\r\n return this._resizeState !== null;\r\n }\r\n\r\n public set fillProportionally(value: boolean) {\r\n this._grid.fillColumnsProportionally = value;\r\n }\r\n\r\n public get fillProportionally(): boolean {\r\n return this._grid.fillColumnsProportionally;\r\n }\r\n\r\n public getGridScale(): number {\r\n return this._grid._presenter.getScreenToCssRatioX();\r\n }\r\n\r\n public get otherScrollbarContextualWidth(): number {\r\n if (this.dimension.otherDimension.scrollbar.visible) {\r\n return HTMLElementUtils.getElementWidth(this.dimension.otherDimension.scrollbar.element);\r\n }\r\n return 0;\r\n }\r\n\r\n public _getRealizedItems(): ITablixGridItem[] {\r\n if (!this._grid.realizedColumns) {\r\n this._grid.realizedColumns = [];\r\n }\r\n\r\n return this._grid.realizedColumns;\r\n }\r\n\r\n public _moveElementsToBottom(moveFromIndex: number, count): void {\r\n this._grid.moveColumnsToEnd(moveFromIndex, count);\r\n }\r\n\r\n public _moveElementsToTop(moveToIndex: number, count): void {\r\n this._grid.moveColumnsToStart(moveToIndex, count);\r\n }\r\n\r\n public _requiresMeasure(): boolean {\r\n // if the control is not scrolling in either dimension or is scrolling or is resizing\r\n return (!this.isScrolling() && !this.otherLayoutManager.isScrolling()) || this.isScrolling() || this.isResizing();\r\n }\r\n\r\n public getGridContextualWidth(): number {\r\n return this._grid.getWidth();\r\n }\r\n\r\n private getFirstVisibleColumn(): TablixColumn {\r\n return this._grid.realizedColumns[this._gridOffset];\r\n }\r\n\r\n public _isAutoSized(): boolean {\r\n return this.owner.owner.autoSizeWidth;\r\n }\r\n\r\n public applyScrolling() {\r\n let columnOffset: number = this.dimension.getFractionScrollOffset();\r\n let firstVisibleColumnWidth: number = 0;\r\n\r\n if (columnOffset !== 0) {\r\n let firstVisibleColumn: TablixColumn = this.getFirstVisibleColumn();\r\n if (firstVisibleColumn !== undefined) {\r\n firstVisibleColumnWidth = firstVisibleColumn.getContextualWidth();\r\n this.scroll(firstVisibleColumn, firstVisibleColumnWidth, columnOffset);\r\n }\r\n }\r\n }\r\n\r\n private scroll(firstVisibleColumn: TablixColumn, width: number, offset: number) {\r\n this.scrollCells(firstVisibleColumn._realizedColumnHeaders, width, offset);\r\n this.scrollBodyCells(this._grid.realizedRows, width, offset);\r\n\r\n if (firstVisibleColumn.footer !== null) {\r\n firstVisibleColumn.footer.scrollHorizontally(width, offset);\r\n }\r\n }\r\n\r\n private scrollCells(cells: TablixCell[], width: number, offset: number): void {\r\n let length: number = cells.length;\r\n for (let i = 0; i < length; i++) {\r\n cells[i].scrollHorizontally(width, offset);\r\n }\r\n }\r\n\r\n private scrollBodyCells(rows: TablixRow[], width: number, offset: number): void {\r\n let length: number = rows.length;\r\n let cells: TablixCell[];\r\n let cell: TablixCell;\r\n for (let i = 0; i < length; i++) {\r\n cells = rows[i]._realizedBodyCells;\r\n if (cells !== undefined) {\r\n cell = cells[0];\r\n if (cell !== undefined) {\r\n cell.scrollHorizontally(width, offset);\r\n }\r\n }\r\n }\r\n }\r\n\r\n public onStartResize(cell: TablixCell, currentX: number, currentY: number): void {\r\n this._resizeState = new ResizeState(cell._column, cell._column.getContentContextualWidth(), HTMLElementUtils.getAccumulatedScale(this.owner.owner.container));\r\n }\r\n\r\n public onResize(cell: TablixCell, deltaX: number, deltaY: number): void {\r\n if (this.isResizing()) {\r\n this._resizeState.resizingDelta = Math.max(deltaX / this._resizeState.scale, ColumnLayoutManager.minColumnWidth - this._resizeState.startColumnWidth);\r\n if (this._resizeState.animationFrame === null)\r\n this._resizeState.animationFrame = requestAnimationFrame(() => this.performResizing());\r\n }\r\n }\r\n\r\n public onEndResize(cell: TablixCell): void {\r\n if (this.isResizing() && this._resizeState.animationFrame !== null) {\r\n this.performResizing(); // if we reached the end and we are still waiting for the last animation frame, perform the pending resizing and clear the state \r\n }\r\n this._resizeState = null;\r\n }\r\n\r\n public onReset(cell: TablixCell) {\r\n this._resizeState = new ResizeState(cell._column, -1, 1);\r\n cell._column.clearSize();\r\n this.owner.owner.refresh(false);\r\n this._resizeState = null;\r\n }\r\n\r\n public updateItemToResizeState(realizedColumns: TablixColumn[]): void {\r\n if (this._resizeState === null)\r\n return;\r\n\r\n let columnCount: number = realizedColumns.length;\r\n\r\n let hierarchyNavigator: ITablixHierarchyNavigator = this.owner.owner.hierarchyNavigator;\r\n\r\n // Only iterate over the columns that belong to column hierachy (i.e. skip the row hierarchy rows)\r\n // as this post-rendering adjustment only applies to them.\r\n let startIndex = this.otherLayoutManager.dimension.getDepth();\r\n for (let i = startIndex; i < columnCount; i++) {\r\n let column: TablixColumn = realizedColumns[i];\r\n\r\n if (!column.columnHeaderOrCornerEquals(this._resizeState.itemType, this._resizeState.item, column.itemType, column.getLeafItem(), hierarchyNavigator))\r\n continue;\r\n\r\n if (column !== this._resizeState.column) { // we moved the item of the column that is being resized to another one \r\n this._resizeState.column = column;\r\n column.resize(this._resizeState.startColumnWidth + this._resizeState.resizingDelta);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n private performResizing(): void {\r\n if (this._resizeState === null) // in case of FireFox we cannot cancel the animation frame request\r\n return;\r\n\r\n this._resizeState.animationFrame = null;\r\n let newSize = this._resizeState.startColumnWidth + this._resizeState.resizingDelta;\r\n this._resizeState.column.resize(newSize);\r\n this.owner.owner.refresh(false);\r\n }\r\n\r\n /**\r\n * Sends column related data (pixel size, column count, etc) to TablixControl.\r\n */\r\n public _sendDimensionsToControl(): void {\r\n let gridContextualWidth: number = this.getGridContextualWidth();\r\n let widthToFill: number = this.getActualContextualWidth(gridContextualWidth);\r\n let otherContextualHeight = this.getOtherHierarchyContextualHeight();\r\n let scale = this.getGridScale(); // in case of canvas we have to convert the size from device pixel to css pixel\r\n this.owner.owner.updateColumnDimensions(otherContextualHeight / scale,\r\n (widthToFill - otherContextualHeight) / scale,\r\n this.getViewSize(gridContextualWidth));\r\n }\r\n\r\n public getEstimatedHeaderWidth(label: string, headerIndex: number): number {\r\n debug.assertFail(\"PureVirtualMethod: ColumnLayoutManager.getEstimatedHeaderWidth\");\r\n return -1;\r\n }\r\n\r\n public getEstimatedBodyCellWidth(content: string): number {\r\n debug.assertFail(\"PureVirtualMethod: ColumnLayoutManager.getEstimatedBodyCellWidth\");\r\n return -1;\r\n }\r\n }\r\n\r\n export class DashboardColumnLayoutManager extends ColumnLayoutManager {\r\n public getEstimatedHeaderWidth(label: string, headerIndex: number): number {\r\n if (this.ignoreColumn(headerIndex))\r\n return 0;\r\n\r\n // for dashboard layout it does not matter whether we pass an actual cell or not\r\n return this.owner.getCellWidth(undefined);\r\n }\r\n\r\n public getEstimatedBodyCellWidth(content: string): number {\r\n // for dashboard layout it does not matter whether we pass an actual cell or not\r\n return this.owner.getCellWidth(undefined);\r\n }\r\n\r\n protected canScroll(gridContextualWidth: number): boolean {\r\n return false;\r\n }\r\n\r\n protected _calculateSize(item: ITablixGridItem): number {\r\n let headerIndex = item.getIndex(this._grid);\r\n let computedSize = 0;\r\n\r\n if (!this.ignoreColumn(headerIndex)) {\r\n // for dashboard layout it does not matter whether we pass an actual cell or not\r\n computedSize = this.owner.getContentWidth(undefined);\r\n }\r\n\r\n item.resize(computedSize);\r\n return computedSize;\r\n }\r\n\r\n private ignoreColumn(headerIndex: number): boolean {\r\n // On the dashboard, we need to return 0 if the row header is static\r\n // (a table or a matrix without row groups)\r\n return headerIndex === 0 && !this.owner.binder.hasRowGroups();\r\n }\r\n }\r\n\r\n export class CanvasColumnLayoutManager extends ColumnLayoutManager {\r\n public getEstimatedHeaderWidth(label: string, headerIndex: number): number {\r\n // On the canvas the header width depends on the size of the content\r\n return this.owner.getEstimatedTextWidth(label);\r\n }\r\n\r\n public getEstimatedBodyCellWidth(content: string): number {\r\n return this.owner.getEstimatedTextWidth(content);\r\n }\r\n\r\n public calculateContextualWidths(): void {\r\n let items: ITablixGridItem[] = this._getRealizedItems();\r\n let columnWidths: number[] = [];\r\n\r\n for (let item of items) {\r\n if (this.measureEnabled)\r\n item.setAligningContextualWidth(-1);\r\n\r\n columnWidths.push(this._calculateSize(item));\r\n }\r\n \r\n // Save all column widths. Needed when user turns off auto-sizing for column widths.\r\n this.owner.columnWidthsToPersist = columnWidths;\r\n }\r\n\r\n protected canScroll(gridContextualWidth: number): boolean {\r\n return !Double.equalWithPrecision(this.dimension.scrollOffset, 0, DimensionLayoutManager._scrollOffsetPrecision) ||\r\n (((this.getRealizedItemsCount() - this._gridOffset) < this.dimension.getItemsCount()) && this._contextualWidthToFill > 0) ||\r\n Double.greaterWithPrecision(gridContextualWidth, this._contextualWidthToFill, DimensionLayoutManager._pixelPrecision);\r\n }\r\n\r\n protected _calculateSize(item: ITablixGridItem): number {\r\n return item.calculateSize();\r\n }\r\n }\r\n\r\n export class RowLayoutManager extends DimensionLayoutManager {\r\n constructor(owner: TablixLayoutManager, grid: TablixGrid, realizationManager: RowRealizationManager) {\r\n super(owner, grid, realizationManager);\r\n\r\n realizationManager.owner = this;\r\n }\r\n\r\n public get dimension(): TablixDimension {\r\n return this.owner.owner.rowDimension;\r\n }\r\n\r\n public getGridScale(): number {\r\n return this._grid._presenter.getScreenToCssRatioY();\r\n }\r\n\r\n public get otherScrollbarContextualWidth(): number {\r\n if (this.dimension.otherDimension.scrollbar.visible) {\r\n return HTMLElementUtils.getElementHeight(this.dimension.otherDimension.scrollbar.element);\r\n }\r\n return 0;\r\n }\r\n\r\n public startScrollingSession(): void {\r\n super.startScrollingSession();\r\n }\r\n\r\n public _getRealizedItems(): ITablixGridItem[] {\r\n if (!this._grid.realizedRows) {\r\n this._grid.realizedRows = [];\r\n }\r\n\r\n return this._grid.realizedRows;\r\n }\r\n\r\n public _moveElementsToBottom(moveFromIndex: number, count): void {\r\n this._grid.moveRowsToEnd(moveFromIndex, count);\r\n }\r\n\r\n public _moveElementsToTop(moveToIndex: number, count): void {\r\n this._grid.moveRowsToStart(moveToIndex, count);\r\n }\r\n\r\n public _requiresMeasure(): boolean {\r\n // if the control is not scrolling in either dimension and the column dimension is not resizing or row dimension is scrolling and reaching the end while scrolling \r\n return (!this.isScrolling() && !this.otherLayoutManager.isScrolling() && !this.otherLayoutManager.isResizing())\r\n || (this.isScrolling() && (this.dimension.getIntegerScrollOffset() + (this.getRealizedItemsCount() - this._gridOffset) >= this.dimension.getItemsCount()));\r\n }\r\n\r\n public getGridContextualWidth(): number {\r\n return this._grid.getHeight();\r\n }\r\n\r\n private getFirstVisibleRow(): TablixRow {\r\n return this._grid.realizedRows[this._gridOffset];\r\n }\r\n\r\n public _isAutoSized(): boolean {\r\n return this.owner.owner.autoSizeHeight;\r\n }\r\n\r\n public applyScrolling() {\r\n let rowOffset: number = this.dimension.getFractionScrollOffset();\r\n let firstVisibleRowHeight: number = 0;\r\n\r\n if (rowOffset !== 0) {\r\n let firstVisibleRow: TablixRow = this.getFirstVisibleRow();\r\n if (firstVisibleRow) {\r\n firstVisibleRowHeight = firstVisibleRow.getContextualWidth();\r\n this.scroll(firstVisibleRow, firstVisibleRowHeight, rowOffset);\r\n }\r\n }\r\n }\r\n\r\n private scroll(firstVisibleRow: TablixRow, height: number, offset: number) {\r\n this.scrollCells(firstVisibleRow._realizedRowHeaders, height, offset);\r\n this.scrollCells(firstVisibleRow._realizedBodyCells, height, offset);\r\n }\r\n\r\n private scrollCells(cells: TablixCell[], height: number, offset: number): void {\r\n let length: number = cells.length;\r\n for (let i = 0; i < length; i++) {\r\n cells[i].scrollVertically(height, offset);\r\n }\r\n }\r\n\r\n public getFooterContextualWidth(): number {\r\n if (this.owner.owner.rowDimension.hasFooter()) {\r\n if (this.owner.grid.footerRow) {\r\n return this.owner.grid.footerRow.getContextualWidth();\r\n }\r\n }\r\n\r\n return 0;\r\n }\r\n\r\n public calculateContextualWidths(): void {\r\n super.calculateContextualWidths();\r\n if (this.fixedSizeEnabled) {\r\n let footerRow: TablixRow = this._grid.footerRow;\r\n if (footerRow) {\r\n this._calculateSize(footerRow);\r\n }\r\n }\r\n }\r\n\r\n public fixSizes(): void {\r\n super.fixSizes();\r\n if (this.fixedSizeEnabled) {\r\n if (this._grid.footerRow) {\r\n this._grid.footerRow.fixSize();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Sends row related data (pixel size, column count, etc) to TablixControl.\r\n */\r\n public _sendDimensionsToControl(): void {\r\n let gridContextualWidth: number = this.getGridContextualWidth();\r\n let widthToFill: number = this.getActualContextualWidth(gridContextualWidth);\r\n let otherContextualHeight = this.getOtherHierarchyContextualHeight();\r\n let scale = this.getGridScale();\r\n this.owner.owner.updateRowDimensions(otherContextualHeight / scale,\r\n (widthToFill - otherContextualHeight) / scale,\r\n gridContextualWidth / scale,\r\n this.getViewSize(gridContextualWidth),\r\n (this._grid.footerRow ? this._grid.footerRow.getContextualWidth() / scale : 0));\r\n }\r\n\r\n public getEstimatedHeaderWidth(label: string, headerIndex: number): number {\r\n debug.assertFail(\"PureVirtualMethod: RowLayoutManager.getEstimatedHeaderWidth\");\r\n return -1;\r\n }\r\n }\r\n\r\n export class DashboardRowLayoutManager extends RowLayoutManager {\r\n public getEstimatedHeaderWidth(label: string, headerIndex: number): number {\r\n return this.getHeaderWidth(headerIndex);\r\n }\r\n\r\n protected canScroll(gridContextualWidth: number): boolean {\r\n return false;\r\n }\r\n\r\n protected _calculateSize(item: ITablixGridItem): number {\r\n let computedSize = this.owner.getEstimatedRowHeight();\r\n item.resize(computedSize);\r\n return computedSize;\r\n }\r\n\r\n private getHeaderWidth(headerIndex: number): number {\r\n // On the dashboard, we need to return 0 if the row header is static\r\n // (a table or a matrix without row groups)\r\n if (headerIndex === 0 && !this.owner.binder.hasRowGroups())\r\n return 0;\r\n\r\n // for dashboard layout it does not matter whether we pass an actual text or not\r\n return this.owner.getEstimatedTextWidth(undefined);\r\n }\r\n }\r\n\r\n export class CanvasRowLayoutManager extends RowLayoutManager {\r\n public getEstimatedHeaderWidth(label: string, headerIndex: number): number {\r\n // On the canvas the header width depends on the size of the content\r\n return this.owner.getEstimatedTextWidth(label);\r\n }\r\n\r\n protected canScroll(gridContextualWidth: number): boolean {\r\n return !Double.equalWithPrecision(this.dimension.scrollOffset, 0, DimensionLayoutManager._scrollOffsetPrecision) ||\r\n (((this.getRealizedItemsCount() - this._gridOffset) < this.dimension.getItemsCount()) && this._contextualWidthToFill > 0) ||\r\n Double.greaterWithPrecision(gridContextualWidth, this._contextualWidthToFill, DimensionLayoutManager._pixelPrecision);\r\n }\r\n\r\n protected _calculateSize(item: ITablixGridItem): number {\r\n return item.calculateSize();\r\n }\r\n }\r\n\r\n export class TablixLayoutManager {\r\n protected _owner: TablixControl;\r\n protected _container: HTMLElement;\r\n protected _columnLayoutManager: ColumnLayoutManager;\r\n protected _rowLayoutManager: RowLayoutManager;\r\n private _binder: ITablixBinder;\r\n\r\n private _scrollingDimension: TablixDimension;\r\n private _gridHost: HTMLElement;\r\n private _footersHost: HTMLElement;\r\n private _grid: internal.TablixGrid;\r\n private _allowHeaderResize: boolean = true;\r\n private _columnWidthsToPersist: number[];\r\n\r\n constructor(\r\n binder: ITablixBinder,\r\n grid: TablixGrid,\r\n columnLayoutManager: ColumnLayoutManager,\r\n rowLayoutManager: RowLayoutManager) {\r\n this._binder = binder;\r\n this._grid = grid;\r\n this._columnLayoutManager = columnLayoutManager;\r\n this._rowLayoutManager = rowLayoutManager;\r\n this._columnWidthsToPersist = [];\r\n }\r\n\r\n public initialize(owner: TablixControl): void {\r\n this._owner = owner;\r\n this._container = owner.container;\r\n this._gridHost = owner.contentHost;\r\n this._footersHost = owner.footerHost;\r\n this._grid.initialize(owner, this._gridHost, this._footersHost);\r\n }\r\n\r\n public get owner(): TablixControl {\r\n return this._owner;\r\n }\r\n\r\n public get binder(): ITablixBinder {\r\n return this._binder;\r\n }\r\n\r\n public get columnWidthsToPersist(): number[] {\r\n return this._columnWidthsToPersist;\r\n }\r\n\r\n public set columnWidthsToPersist(columnWidths: number[]) {\r\n this._columnWidthsToPersist = columnWidths;\r\n } \r\n\r\n public getTablixClassName(): string {\r\n debug.assertFail(\"PureVirtualMethod: TablixLayoutManager.getTablixClassName\");\r\n return null;\r\n }\r\n\r\n public getLayoutKind(): TablixLayoutKind {\r\n debug.assertFail(\"PureVirtualMethod: TablixLayoutManager.getLayoutKind\");\r\n\r\n // TODO ckerer: this method should not be necessary when we are done refactoring!\r\n return null;\r\n }\r\n\r\n public getOrCreateColumnHeader(item: any, items: any, rowIndex: number, columnIndex: number): ITablixCell {\r\n let row: TablixRow = this._grid.getOrCreateRow(rowIndex);\r\n let column: TablixColumn = this._grid.getOrCreateColumn(columnIndex + this._columnLayoutManager._gridOffset);\r\n let isLeaf = this.owner.hierarchyNavigator.isLeaf(item);\r\n let cell: TablixCell = row.getOrCreateColumnHeader(column, this._columnLayoutManager.isScrollableHeader(item, items, columnIndex), isLeaf);\r\n this.enableCellHorizontalResize(isLeaf, cell);\r\n return cell;\r\n }\r\n\r\n public getOrCreateRowHeader(item: any, items: any, rowIndex: number, columnIndex: number): ITablixCell {\r\n let row: TablixRow = this._grid.getOrCreateRow(rowIndex + this._rowLayoutManager._gridOffset);\r\n let column: TablixColumn = this._grid.getOrCreateColumn(columnIndex);\r\n let scrollable: boolean = this._rowLayoutManager.isScrollableHeader(item, items, rowIndex);\r\n\r\n if (row.getRealizedCellCount() === 0) {\r\n this.alignRowHeaderCells(item, row);\r\n }\r\n\r\n let cell: TablixCell = row.getOrCreateRowHeader(column, scrollable, this.owner.hierarchyNavigator.isLeaf(item));\r\n cell.enableHorizontalResize(false, this._columnLayoutManager);\r\n return cell;\r\n }\r\n\r\n public getOrCreateCornerCell(item: any, rowLevel: number, columnLevel: number): ITablixCell {\r\n let row: TablixRow = this._grid.getOrCreateRow(columnLevel);\r\n let column: TablixColumn = this._grid.getOrCreateColumn(rowLevel);\r\n let cell: TablixCell = row.getOrCreateCornerCell(column);\r\n let columnDepth = this._columnLayoutManager.dimension.getDepth();\r\n let isLeaf = columnLevel === (columnDepth - 1);\r\n this.enableCellHorizontalResize(isLeaf, cell);\r\n return cell;\r\n }\r\n\r\n public getOrCreateBodyCell(cellItem: any, rowItem: any, rowItems: any, rowIndex: number, columnIndex: number): ITablixCell {\r\n let scrollable: boolean;\r\n let row: TablixRow = this._grid.getOrCreateRow(rowIndex + this._rowLayoutManager._gridOffset);\r\n let column: TablixColumn = this._grid.getOrCreateColumn(columnIndex + this._columnLayoutManager._gridOffset);\r\n\r\n if (row._realizedBodyCells.length === 0 && this._owner.columnDimension.getFractionScrollOffset() !== 0) {\r\n scrollable = true;\r\n }\r\n else {\r\n scrollable = this._rowLayoutManager.isScrollableHeader(rowItem, rowItems, rowIndex);\r\n }\r\n\r\n let cell: TablixCell = row.getOrCreateBodyCell(column, scrollable);\r\n cell.enableHorizontalResize(false, this._columnLayoutManager);\r\n return cell;\r\n }\r\n\r\n public getOrCreateFooterBodyCell(cellItem: any, columnIndex: number): ITablixCell {\r\n let scrollable: boolean;\r\n let row: TablixRow = this._grid.getOrCreateFootersRow();\r\n let column: TablixColumn = this._grid.getOrCreateColumn(columnIndex + this._columnLayoutManager._gridOffset);\r\n\r\n scrollable = (row._realizedBodyCells.length === 0 && this._owner.columnDimension.getFractionScrollOffset() !== 0);\r\n\r\n let cell: TablixCell = row.getOrCreateFooterBodyCell(column, scrollable);\r\n cell.enableHorizontalResize(false, this._columnLayoutManager);\r\n return cell;\r\n }\r\n\r\n public getOrCreateFooterRowHeader(item: any, items: any): ITablixCell {\r\n let row: TablixRow = this._grid.getOrCreateFootersRow();\r\n let column: TablixColumn = this._grid.getOrCreateColumn(0);\r\n\r\n //debug.assert(this.owner.hierarchyNavigator.isLeaf(item), \"Leaf item expected\");\r\n\r\n let cell: TablixCell = row.getOrCreateFooterRowHeader(column);\r\n cell.enableHorizontalResize(false, this._columnLayoutManager);\r\n return cell;\r\n }\r\n\r\n public getVisibleWidth(): number {\r\n debug.assertFail(\"PureVirtualMethod: TablixLayoutManager.getVisibleWidth\");\r\n return -1;\r\n }\r\n\r\n public getVisibleHeight(): number {\r\n debug.assertFail(\"PureVirtualMethod: TablixLayoutManager.getVisibleHeight\");\r\n return -1;\r\n }\r\n\r\n public updateColumnCount(rowDimension: TablixRowDimension, columnDimension: TablixColumnDimension) {\r\n debug.assertFail(\"PureVirtualMethod: TablixLayoutManager.updateColumnCount\");\r\n }\r\n\r\n public updateViewport(viewport: IViewport) {\r\n debug.assertFail(\"PureVirtualMethod: TablixLayoutManager.updateViewport\");\r\n }\r\n\r\n public getEstimatedRowHeight(): number {\r\n debug.assertFail(\"PureVirtualMethod: TablixLayoutManager.getEstimatedRowHeight\");\r\n return -1;\r\n }\r\n\r\n public getCellWidth(cell: ITablixCell): number {\r\n debug.assertFail(\"PureVirtualMethod: TablixLayoutManager.getCellWidth\");\r\n return -1;\r\n }\r\n\r\n public getContentWidth(cell: ITablixCell): number {\r\n debug.assertFail(\"PureVirtualMethod: TablixLayoutManager.getContentWidth\");\r\n return -1;\r\n }\r\n\r\n public adjustContentSize(hasImage: boolean): void {\r\n // default implementation has no adjustment\r\n }\r\n\r\n /**\r\n * This call makes room for parent header cells where neccessary.\r\n * Since HTML cells that span vertically displace other rows,\r\n * room has to be made for spanning headers that leave an exiting \r\n * row to enter the new row that it starts from and removed when\r\n * returning to an entering row.\r\n */\r\n private alignRowHeaderCells(item: any, currentRow: TablixRow): void {\r\n let index = currentRow.getRowHeaderLeafIndex();\r\n\r\n if (index === -1) {\r\n return;\r\n }\r\n\r\n let rowDimension: TablixRowDimension = this._owner.rowDimension;\r\n let leaf = rowDimension.getFirstVisibleChildLeaf(item);\r\n\r\n if (!this.owner.hierarchyNavigator.headerItemEquals(leaf, currentRow.getAllocatedCellAt(index).item)) {\r\n return;\r\n }\r\n\r\n currentRow.moveCellsBy(this.owner.hierarchyNavigator.getLevel(leaf) - this.owner.hierarchyNavigator.getLevel(item) - index);\r\n }\r\n\r\n public get grid(): TablixGrid {\r\n return this._grid;\r\n }\r\n\r\n public get rowLayoutManager(): DimensionLayoutManager {\r\n return this._rowLayoutManager;\r\n }\r\n\r\n public get columnLayoutManager(): DimensionLayoutManager {\r\n return this._columnLayoutManager;\r\n }\r\n\r\n protected showEmptySpaceHeader(): boolean {\r\n debug.assertFail(\"PureVirtualMethod: TablixLayoutManager.showEmptySpaceHeader\");\r\n return false;\r\n }\r\n\r\n public onStartRenderingSession(scrollingDimension: TablixDimension, parentElement: HTMLElement, clear: boolean): void {\r\n if (this.showEmptySpaceHeader()) {\r\n let cell: ITablixCell = this._grid.emptySpaceHeaderCell;\r\n if (cell) {\r\n this._binder.unbindEmptySpaceHeaderCell(cell);\r\n }\r\n\r\n cell = this._grid.emptySpaceFooterCell;\r\n if (cell) {\r\n this._binder.unbindEmptySpaceFooterCell(cell);\r\n }\r\n\r\n this._grid.HideEmptySpaceCells();\r\n }\r\n\r\n this._scrollingDimension = scrollingDimension;\r\n\r\n if (this._scrollingDimension) {\r\n (<DimensionLayoutManager>this._scrollingDimension.layoutManager).startScrollingSession();\r\n }\r\n\r\n this._rowLayoutManager.onStartRenderingSession();\r\n this._columnLayoutManager.onStartRenderingSession();\r\n this._grid.onStartRenderingSession(clear);\r\n\r\n let measureEnabled = this._columnLayoutManager.measureEnabled || this._rowLayoutManager.measureEnabled;\r\n if (measureEnabled)\r\n this.measureSampleText(parentElement);\r\n }\r\n\r\n public onEndRenderingSession(): void {\r\n this._rowLayoutManager.onEndRenderingSession();\r\n this._columnLayoutManager.onEndRenderingSession();\r\n\r\n if (this._scrollingDimension) {\r\n (<DimensionLayoutManager>this._scrollingDimension.layoutManager).endScrollingSession();\r\n }\r\n\r\n this._scrollingDimension = null;\r\n\r\n if (this.showEmptySpaceHeader()) {\r\n let emptySpace = this._columnLayoutManager.contextualWidthToFill - this._columnLayoutManager.getGridContextualWidth();\r\n if (emptySpace > 0) {\r\n this._grid.ShowEmptySpaceCells(this._owner.columnDimension.getDepth(), emptySpace);\r\n\r\n let cell: ITablixCell = this._grid.emptySpaceHeaderCell;\r\n if (cell) {\r\n this._binder.bindEmptySpaceHeaderCell(cell);\r\n }\r\n cell = this._grid.emptySpaceFooterCell;\r\n if (cell) {\r\n this._binder.bindEmptySpaceFooterCell(cell);\r\n }\r\n }\r\n }\r\n }\r\n\r\n public onStartRenderingIteration(clear: boolean): void {\r\n this._rowLayoutManager.onStartRenderingIteration(clear, this.getVisibleHeight());\r\n this._columnLayoutManager.onStartRenderingIteration(clear, this.getVisibleWidth());\r\n this._grid.onStartRenderingIteration();\r\n }\r\n\r\n public onEndRenderingIteration(): boolean {\r\n this._grid.onEndRenderingIteration();\r\n\r\n // ANDREMI: Comment out for static tablix\r\n this._columnLayoutManager.calculateSizes(); // calculate the entire grid first without altering the tree to avoid multiple measure pass invoking\r\n this._rowLayoutManager.calculateSizes();\r\n this._columnLayoutManager.fixSizes(); // now assign the sizes\r\n this._rowLayoutManager.fixSizes();\r\n\r\n this._columnLayoutManager.updateItemToResizeState(this._grid.realizedColumns); // if we are in a middle of a resize, the column to resize might have been swaped during the render, restore its resize state\r\n\r\n this._columnLayoutManager.applyScrolling();\r\n this._rowLayoutManager.applyScrolling();\r\n this._columnLayoutManager.onEndRenderingIteration();\r\n this._rowLayoutManager.onEndRenderingIteration();\r\n\r\n return this._columnLayoutManager.done && this._rowLayoutManager.done;\r\n }\r\n\r\n public onCornerCellRealized(item: any, cell: ITablixCell): void {\r\n let columnLeaf: boolean = this.owner.hierarchyNavigator.isColumnHierarchyLeaf(item);\r\n let rowLeaf: boolean = this.owner.hierarchyNavigator.isRowHierarchyLeaf(item);\r\n if (columnLeaf)\r\n (<TablixCell>cell)._column.OnLeafRealized(this._owner.hierarchyNavigator);\r\n this._columnLayoutManager.onCornerCellRealized(item, cell, columnLeaf);\r\n this._rowLayoutManager.onCornerCellRealized(item, cell, rowLeaf);\r\n }\r\n\r\n public onRowHeaderRealized(item: any, cell: ITablixCell): void {\r\n let hierarchyNavigator: ITablixHierarchyNavigator = this._owner.hierarchyNavigator;\r\n let leaf = hierarchyNavigator.isLeaf(item);\r\n this._rowLayoutManager.onHeaderRealized(item, cell, leaf);\r\n }\r\n\r\n public onRowHeaderFooterRealized(item: any, cell: ITablixCell): void {\r\n }\r\n\r\n public onColumnHeaderRealized(item: any, cell: ITablixCell): void {\r\n let hierarchyNavigator: ITablixHierarchyNavigator = this._owner.hierarchyNavigator;\r\n let leaf = hierarchyNavigator.isLeaf(item);\r\n if (leaf)\r\n (<TablixCell>cell)._column.OnLeafRealized(this._owner.hierarchyNavigator);\r\n this._columnLayoutManager.onHeaderRealized(item, cell, leaf);\r\n }\r\n\r\n public onBodyCellRealized(item: any, cell: ITablixCell): void {\r\n }\r\n\r\n public onBodyCellFooterRealized(item: any, cell: ITablixCell): void {\r\n }\r\n\r\n public setAllowHeaderResize(value: boolean) {\r\n this._allowHeaderResize = value;\r\n }\r\n\r\n public enableCellHorizontalResize(isLeaf: boolean, cell: TablixCell) {\r\n let enableCellHorizontalResize = isLeaf && this._allowHeaderResize;\r\n cell.enableHorizontalResize(enableCellHorizontalResize, this._columnLayoutManager);\r\n }\r\n\r\n public getEstimatedTextWidth(label: string): number {\r\n debug.assertFail(\"PureVirtualMethod: TablixLayoutManager.getEstimatedTextWidth\");\r\n return -1;\r\n }\r\n\r\n public measureSampleText(parentElement: HTMLElement): void {\r\n debug.assertFail(\"PureVirtualMethod: TablixLayoutManager.measureSampleText\");\r\n }\r\n }\r\n\r\n export class DashboardTablixLayoutManager extends TablixLayoutManager {\r\n private _characterHeight: number;\r\n private _sizeComputationManager: SizeComputationManager;\r\n\r\n constructor(\r\n binder: ITablixBinder,\r\n sizeComputationManager: SizeComputationManager,\r\n grid: TablixGrid,\r\n rowRealizationManager: RowRealizationManager,\r\n columnRealizationManager: ColumnRealizationManager) {\r\n super(\r\n binder,\r\n grid,\r\n new DashboardColumnLayoutManager(this, grid, columnRealizationManager),\r\n new DashboardRowLayoutManager(this, grid, rowRealizationManager));\r\n this._sizeComputationManager = sizeComputationManager;\r\n }\r\n\r\n public static createLayoutManager(binder: ITablixBinder): DashboardTablixLayoutManager {\r\n // computed sizes are shared between layout manager and grid presenter\r\n let sizeComputationManager = new SizeComputationManager();\r\n return new DashboardTablixLayoutManager(\r\n binder,\r\n sizeComputationManager,\r\n new TablixGrid(new DashboardTablixGridPresenter(sizeComputationManager)),\r\n new RowRealizationManager(binder),\r\n new ColumnRealizationManager(binder));\r\n }\r\n\r\n public getTablixClassName(): string {\r\n return \"bi-dashboard-tablix\";\r\n }\r\n\r\n public getLayoutKind(): TablixLayoutKind {\r\n return TablixLayoutKind.DashboardTile;\r\n }\r\n\r\n protected showEmptySpaceHeader(): boolean {\r\n return false;\r\n }\r\n\r\n public measureSampleText(parentElement: HTMLElement): void {\r\n let textProperties = TextMeasurementService.getSvgMeasurementProperties(<any>parentElement);\r\n this._characterHeight = TextMeasurementService.estimateSvgTextHeight(textProperties);\r\n\r\n this._sizeComputationManager.updateRowHeight(this._characterHeight);\r\n\r\n let actualTextSize = PixelConverter.toPoint(parseFloat(textProperties.fontSize));\r\n let scalingFactor = actualTextSize / controls.TablixDefaultTextSize;\r\n\r\n this._sizeComputationManager.updateScalingFactor(Double.toIncrement(scalingFactor, 0.05));\r\n }\r\n\r\n public getVisibleWidth(): number {\r\n return this._sizeComputationManager.visibleWidth;\r\n }\r\n\r\n public getVisibleHeight(): number {\r\n return this._sizeComputationManager.visibleHeight;\r\n }\r\n\r\n public getCellWidth(cell: ITablixCell): number {\r\n return this._sizeComputationManager.cellWidth;\r\n }\r\n\r\n public getContentWidth(cell: ITablixCell): number {\r\n return this._sizeComputationManager.contentWidth;\r\n }\r\n\r\n public getEstimatedTextWidth(label: string): number {\r\n // On the dashboard it does not matter what text we render, \r\n // we always use the same content width\r\n return this._sizeComputationManager.contentWidth;\r\n }\r\n\r\n public adjustContentSize(hasImage: boolean): void {\r\n this._sizeComputationManager.hasImageContent = hasImage;\r\n }\r\n\r\n public updateColumnCount(rowDimension: TablixRowDimension, columnDimension: TablixColumnDimension): void {\r\n // The total number of columns is the number (depth) of row groups + the number of (leaf) column group instances\r\n let rowDimensionDepth = rowDimension ? rowDimension.getDepth() : 0;\r\n let columnInstances = columnDimension ? columnDimension.getItemsCount() : 0;\r\n let totalColumnCount = rowDimensionDepth + columnInstances;\r\n\r\n // Adjust the column count by the static row header (if any)\r\n if (!this.binder.hasRowGroups())\r\n totalColumnCount--;\r\n\r\n this._sizeComputationManager.updateColumnCount(totalColumnCount);\r\n }\r\n\r\n public updateViewport(viewport: IViewport) {\r\n this._sizeComputationManager.updateViewport(viewport);\r\n }\r\n\r\n public getEstimatedRowHeight(): number {\r\n return this._characterHeight;\r\n }\r\n }\r\n\r\n export class CanvasTablixLayoutManager extends TablixLayoutManager {\r\n private characterWidth: number;\r\n private characterHeight: number;\r\n\r\n constructor(\r\n binder: ITablixBinder,\r\n grid: TablixGrid,\r\n rowRealizationManager: RowRealizationManager,\r\n columnRealizationManager: ColumnRealizationManager) {\r\n super(\r\n binder,\r\n grid,\r\n new CanvasColumnLayoutManager(this, grid, columnRealizationManager),\r\n new CanvasRowLayoutManager(this, grid, rowRealizationManager));\r\n }\r\n\r\n public static createLayoutManager(binder: ITablixBinder, columnWidthManager: TablixColumnWidthManager): CanvasTablixLayoutManager {\r\n return new CanvasTablixLayoutManager(\r\n binder,\r\n new TablixGrid(new controls.internal.CanvasTablixGridPresenter(columnWidthManager)),\r\n new RowRealizationManager(binder),\r\n new ColumnRealizationManager(binder));\r\n }\r\n\r\n public getTablixClassName(): string {\r\n return \"bi-tablix\";\r\n }\r\n\r\n public getLayoutKind(): TablixLayoutKind {\r\n return TablixLayoutKind.Canvas;\r\n }\r\n\r\n public measureSampleText(parentElement: HTMLElement): void {\r\n // TODO: Use TextMeasurementService once the DOM methods are fixed (they are not working right now)\r\n let textDiv = controls.internal.TablixUtils.createDiv();\r\n textDiv.style.cssFloat = 'left';\r\n parentElement.appendChild(textDiv);\r\n\r\n let textNode = document.createTextNode(\"a\");\r\n textDiv.appendChild(textNode);\r\n\r\n this.characterWidth = controls.HTMLElementUtils.getElementWidth(textDiv);\r\n this.characterHeight = controls.HTMLElementUtils.getElementHeight(textDiv);\r\n\r\n textDiv.removeChild(textNode);\r\n parentElement.removeChild(textDiv);\r\n }\r\n\r\n protected showEmptySpaceHeader(): boolean {\r\n return !this._columnLayoutManager.fillProportionally;\r\n }\r\n\r\n public getVisibleWidth(): number {\r\n if (this._columnLayoutManager.measureEnabled) {\r\n if (this._owner.autoSizeWidth && this._owner.maxWidth) {\r\n return this._owner.maxWidth;\r\n } else {\r\n return HTMLElementUtils.getElementWidth(this._container);\r\n }\r\n }\r\n\r\n return -1;\r\n }\r\n\r\n public getVisibleHeight(): number {\r\n if (this._rowLayoutManager.measureEnabled) {\r\n if (this._owner.autoSizeHeight && this._owner.maxHeight) {\r\n return this._owner.maxHeight;\r\n } else {\r\n return HTMLElementUtils.getElementHeight(this._container);\r\n }\r\n }\r\n\r\n return -1;\r\n }\r\n\r\n public getCellWidth(cell: ITablixCell): number {\r\n return HTMLElementUtils.getElementWidth((<TablixCell>cell)._presenter.tableCell);\r\n }\r\n\r\n public getContentWidth(cell: ITablixCell): number {\r\n return HTMLElementUtils.getElementWidth((<TablixCell>cell)._presenter.contentElement);\r\n }\r\n\r\n public getEstimatedTextWidth(text: string): number {\r\n return text ? text.length * this.characterWidth : 0;\r\n }\r\n\r\n public updateColumnCount(rowDimension: TablixRowDimension, columnDimension: TablixColumnDimension) {\r\n // We currently only need to update model information when using dashboard layouts\r\n }\r\n\r\n public updateViewport(viewport: IViewport) {\r\n // We currently only need to update model information when using dashboard layouts\r\n }\r\n\r\n public getEstimatedRowHeight(): number {\r\n return this.characterHeight;\r\n }\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../../../_references.ts\"/>\r\n\r\nmodule powerbi.visuals.controls {\r\n export module HTMLElementUtils {\r\n export function clearChildren(element: HTMLElement): void {\r\n if (!element) {\r\n return;\r\n }\r\n\r\n while (element.hasChildNodes()) {\r\n element.removeChild(element.firstChild);\r\n }\r\n }\r\n\r\n export function setElementTop(element: HTMLElement, top: number): void {\r\n element.style.top = top + \"px\";\r\n }\r\n\r\n export function setElementLeft(element: HTMLElement, left: number): void {\r\n element.style.left = left + \"px\";\r\n }\r\n\r\n export function setElementHeight(element: HTMLElement, height: number): void {\r\n if (HTMLElementUtils.isAutoSize(height))\r\n element.style.height = \"auto\";\r\n else\r\n element.style.height = height + \"px\";\r\n }\r\n\r\n export function setElementWidth(element: HTMLElement, width: number): void {\r\n if (HTMLElementUtils.isAutoSize(width))\r\n element.style.width = \"auto\";\r\n else\r\n element.style.width = width + \"px\";\r\n }\r\n\r\n export function getElementWidth(element: HTMLElement): number {\r\n return element.offsetWidth;\r\n }\r\n\r\n export function getElementHeight(element: HTMLElement): number {\r\n return element.offsetHeight;\r\n }\r\n\r\n export function isAutoSize(size: number): boolean {\r\n return size === -1;\r\n }\r\n\r\n export function getAccumulatedScale(element: HTMLElement): number {\r\n let scale: number = 1;\r\n while (element) {\r\n scale *= HTMLElementUtils.getScale(element);\r\n element = element.parentElement;\r\n }\r\n\r\n return scale;\r\n }\r\n \r\n /**\r\n * Get scale of element, return 1 when not scaled.\r\n */\r\n export function getScale(element: any): number {\r\n element = $(element);\r\n\r\n let str = element.css('-webkit-transform') ||\r\n element.css('-moz-transform') ||\r\n element.css('-ms-transform') ||\r\n element.css('-o-transform') ||\r\n element.css('transform');\r\n\r\n return (str && (\r\n str.match(/\\d*\\.\\d*/) && Number(str.match(/\\d*\\.\\d*/)[0]) ||\r\n str.match(/\\d+/) && Number(str.match(/\\d+/)[0]))\r\n ) || 1;\r\n }\r\n }\r\n}\r\n\r\nmodule powerbi.visuals.controls.internal {\r\n import DomFactory = InJs.DomFactory;\r\n\r\n export module TablixUtils {\r\n export const TablixFormatStringProp: DataViewObjectPropertyIdentifier = { objectName: 'general', propertyName: 'formatString' };\r\n export const TableTotalsProp: DataViewObjectPropertyIdentifier = { objectName: 'general', propertyName: 'totals' };\r\n export const TablixColumnAutoSizeProp: DataViewObjectPropertyIdentifier = { objectName: 'general', propertyName: 'autoSizeColumnWidth' };\r\n export const TablixTextSizeProp: DataViewObjectPropertyIdentifier = { objectName: 'general', propertyName: 'textSize' };\r\n export const MatrixRowSubtotalsProp: DataViewObjectPropertyIdentifier = { objectName: 'general', propertyName: 'rowSubtotals' };\r\n export const MatrixColumnSubtotalsProp: DataViewObjectPropertyIdentifier = { objectName: 'general', propertyName: 'columnSubtotals' };\r\n export const TablixOutlineColorProp: DataViewObjectPropertyIdentifier = { objectName: 'general', propertyName: 'outlineColor' };\r\n export const TablixOutlineWeightProp: DataViewObjectPropertyIdentifier = { objectName: 'general', propertyName: 'outlineWeight' };\r\n\r\n export const ColumnSeparatorColorProp: DataViewObjectPropertyIdentifier = { objectName: 'columns', propertyName: 'separatorColor' };\r\n export const ColumnSeparatorShowProp: DataViewObjectPropertyIdentifier = { objectName: 'columns', propertyName: 'showSeparators' };\r\n export const ColumnSeparatorWeightProp: DataViewObjectPropertyIdentifier = { objectName: 'columns', propertyName: 'columnSeparatorWeight' };\r\n\r\n export const ColumnHeaderFontColorProp: DataViewObjectPropertyIdentifier = { objectName: 'header', propertyName: 'fontColor' };\r\n export const ColumnHeaderBackgroundColorProp: DataViewObjectPropertyIdentifier = { objectName: 'header', propertyName: 'backgroundColor' };\r\n export const ColumnHeaderOutlineProp: DataViewObjectPropertyIdentifier = { objectName: 'header', propertyName: 'outline' };\r\n\r\n export const RowSeparatorProp: DataViewObjectPropertyIdentifier = { objectName: 'rows', propertyName: 'showSeparators' };\r\n export const RowHeaderFontColorProp: DataViewObjectPropertyIdentifier = { objectName: 'rows', propertyName: 'fontColor' };\r\n export const RowHeaderBackgroundColorProp: DataViewObjectPropertyIdentifier = { objectName: 'rows', propertyName: 'backgroundColor' };\r\n export const RowHeaderOutlineStyleProp: DataViewObjectPropertyIdentifier = { objectName: 'rows', propertyName: 'outline' };\r\n\r\n export const ValuesFontColorProp: DataViewObjectPropertyIdentifier = { objectName: 'values', propertyName: 'fontColor' };\r\n export const ValuesBackgroundColorProp: DataViewObjectPropertyIdentifier = { objectName: 'values', propertyName: 'backgroundColor' };\r\n export const ValuesOutlineProp: DataViewObjectPropertyIdentifier = { objectName: 'values', propertyName: 'outline' };\r\n\r\n export const RowTotalsFontColorProp: DataViewObjectPropertyIdentifier = { objectName: 'totals', propertyName: 'fontColor' };\r\n export const RowTotalsBackgroundColor: DataViewObjectPropertyIdentifier = { objectName: 'totals', propertyName: 'backgroundColor' };\r\n export const RowTotalsOutlineProp: DataViewObjectPropertyIdentifier = { objectName: 'totals', propertyName: 'outline' };\r\n export const RowTotalsLeadingSpaceProp: DataViewObjectPropertyIdentifier = { objectName: 'totals', propertyName: 'leadingSpace' };\r\n\r\n export const DefaultColumnSeparatorShow: boolean = false;\r\n export const DefaultColumnSeparatorColor: string = \"#E8E8E8\";\r\n export const DefaultColumnSeparatorWeight: number = 1;\r\n export const DefaultRowSeparatorWeight: number = 1;\r\n export const DefaultRowSeparatorColor: string = \"#E8E8E8\";\r\n export const DefaultRowSeparatorShow: boolean = false;\r\n export const DefaultBackgroundColor: string = \"#FFFFFF\";\r\n export const DefaultFontColor: string = \"#333333\";\r\n export const DefaultOutlineColor: string = \"#E8E8E8\";\r\n export const DefaultOutlineWeight: number = 2;\r\n export const DefaultOutlineColumnHeader: string = \"BottomOnly\";\r\n export const DefaultOutlineRowHeader: string = \"None\";\r\n export const DefaultOutlineValues: string = \"LeftOnly\";\r\n export const DefaultOutlineRowTotals: string = \"TopOnly\";\r\n export const DefaultRowLeadingSpace: number = 0;\r\n export const UnitOfMeasurement: string = 'px';\r\n export const DefaultColumnSeparatorStyle: string = \"solid\";\r\n export const DefaultRowSeparatorStyle: string = 'solid';\r\n export const TableShowTotals: boolean = true;\r\n\r\n export function createTable(): HTMLTableElement {\r\n return <HTMLTableElement>document.createElement(\"table\");\r\n }\r\n\r\n export function createDiv(): HTMLDivElement {\r\n let div: HTMLDivElement = <HTMLDivElement>document.createElement(\"div\");\r\n\r\n // TODO: Fold these into CSS as well combined with the styling done for the different scenarios where div are used.\r\n let divStyle = div.style;\r\n divStyle.whiteSpace = \"nowrap\";\r\n divStyle.overflow = \"hidden\";\r\n divStyle.lineHeight = \"normal\";\r\n\r\n return div;\r\n }\r\n\r\n export function appendATagToBodyCell(value: string, cell: controls.ITablixCell): void {\r\n let element = <HTMLElement>cell.extension.contentHost;\r\n let atag: HTMLAnchorElement = null;\r\n if (element.childElementCount === 0) {\r\n atag = document.createElement('a');\r\n element.appendChild(atag);\r\n } else {\r\n atag = <HTMLAnchorElement>element.children[0];\r\n }\r\n\r\n atag.href = value;\r\n atag.target = '_blank';\r\n atag.title = value;\r\n atag.innerText = value;\r\n }\r\n\r\n export function appendImgTagToBodyCell(value: string, cell: controls.ITablixCell): void {\r\n let element = <HTMLElement>cell.extension.contentHost;\r\n let contentElement = element.parentElement;\r\n let imgTag: HTMLImageElement;\r\n if (element.childElementCount === 0) {\r\n imgTag = document.createElement('img');\r\n element.appendChild(imgTag);\r\n } else {\r\n imgTag = <HTMLImageElement>element.children[0];\r\n }\r\n // set padding for contentElement\r\n contentElement.style.paddingBottom = '3px';\r\n contentElement.style.paddingTop = '3px';\r\n imgTag.src = value;\r\n imgTag.style.maxHeight = '75px';\r\n imgTag.style.maxWidth = '100px';\r\n imgTag.style.height = '100%';\r\n }\r\n\r\n export function createKpiDom(kpi: DataViewKpiColumnMetadata, kpiValue: string): JQuery {\r\n debug.assertValue(kpi, 'kpi');\r\n debug.assertValue(kpiValue, 'kpiValue');\r\n let className: string = KpiUtil.getClassForKpi(kpi, kpiValue) || '';\r\n return DomFactory.div()\r\n .addClass(className)\r\n .css({\r\n 'display': 'inline-block',\r\n 'vertical-align': 'bottom',\r\n 'margin': '0 1px 1px 0',\r\n });\r\n }\r\n\r\n export function appendSortImageToColumnHeader(item: DataViewMetadataColumn, cell: controls.ITablixCell): void {\r\n if (item.sort) {\r\n let itemSort = item.sort;\r\n createSortImageHTML(itemSort, cell, true);\r\n createSortImageHTML(reverseSort(itemSort), cell, false);\r\n }\r\n else {\r\n createSortImageHTML(SortDirection.Descending, cell, false);\r\n }\r\n }\r\n\r\n function createSortImageHTML(sort: SortDirection, cell: controls.ITablixCell, isSorted: boolean): void {\r\n let imgSortContainer: HTMLDivElement = TablixUtils.createDiv();\r\n let imgSort: HTMLPhraseElement = <HTMLPhraseElement>document.createElement('i');\r\n imgSort.className = (sort === SortDirection.Ascending) ? \"powervisuals-glyph caret-up\" : \"powervisuals-glyph caret-down\";\r\n imgSortContainer.className = TableBinder.sortIconContainerClassName + \" \" + (isSorted ? \"sorted\" : \"future\");\r\n imgSortContainer.appendChild(imgSort);\r\n cell.extension.contentElement.insertBefore(imgSortContainer, cell.extension.contentHost);\r\n }\r\n\r\n export function isValidStatusGraphic(kpi: DataViewKpiColumnMetadata, kpiValue: string): boolean {\r\n if (!kpi || kpiValue === undefined) {\r\n return false;\r\n }\r\n\r\n return !!KpiUtil.getClassForKpi(kpi, kpiValue);\r\n }\r\n\r\n export function setEnumeration(options: EnumerateVisualObjectInstancesOptions, enumeration: ObjectEnumerationBuilder, dataView: DataView, isFormattingPropertiesEnabled: boolean, tablixType: TablixType): void {\r\n // Visuals are initialized with an empty data view before queries are run, therefore we need to make sure that\r\n // we are resilient here when we do not have data view.\r\n let tablixFormattingProperties = dataView.metadata.objects;\r\n\r\n switch (options.objectName) {\r\n case 'general':\r\n TablixUtils.enumerateGeneralOptions(enumeration, tablixFormattingProperties, isFormattingPropertiesEnabled, tablixType);\r\n break;\r\n case 'columns':\r\n if (isFormattingPropertiesEnabled)\r\n TablixUtils.enumerateColumnsOptions(enumeration, tablixFormattingProperties);\r\n break;\r\n case 'header':\r\n if (isFormattingPropertiesEnabled)\r\n TablixUtils.enumerateHeaderOptions(enumeration, tablixFormattingProperties);\r\n break;\r\n case 'rows':\r\n if (isFormattingPropertiesEnabled)\r\n TablixUtils.enumerateRowsOptions(enumeration, tablixFormattingProperties);\r\n break;\r\n case 'values':\r\n if (isFormattingPropertiesEnabled)\r\n TablixUtils.enumerateValuesOptions(enumeration, tablixFormattingProperties);\r\n break;\r\n case 'totals':\r\n if (isFormattingPropertiesEnabled)\r\n TablixUtils.enumerateTotalsOptions(enumeration, tablixFormattingProperties);\r\n break;\r\n }\r\n }\r\n\r\n export function enumerateGeneralOptions(enumeration: ObjectEnumerationBuilder, objects: DataViewObjects, isFormattingPropertiesEnabled: boolean, tablixType: TablixType): void {\r\n if (this.isFormattingPropertiesEnabled) {\r\n switch (tablixType) {\r\n case TablixType.Table:\r\n enumeration.pushInstance({\r\n selector: null,\r\n objectName: 'general',\r\n properties: {\r\n totals: TablixUtils.shouldShowTableTotals(objects),\r\n autoSizeColumnWidth: TablixUtils.shouldAutoSizeColumnWidth(objects),\r\n textSize: TablixUtils.getTextSize(objects),\r\n outlineColor: TablixUtils.getTablixOutlineColor(objects),\r\n outlineWeight: TablixUtils.getTablixOutlineWeight(objects)\r\n }\r\n });\r\n break;\r\n case TablixType.Matrix:\r\n enumeration.pushInstance({\r\n selector: null,\r\n objectName: 'general',\r\n properties: {\r\n autoSizeColumnWidth: TablixUtils.shouldAutoSizeColumnWidth(objects),\r\n textSize: TablixUtils.getTextSize(objects),\r\n rowSubtotals: TablixUtils.shouldShowRowSubtotals(objects),\r\n columnSubtotals: TablixUtils.shouldShowColumnSubtotals(objects),\r\n outlineColor: TablixUtils.getTablixOutlineColor(objects),\r\n outlineWeight: TablixUtils.getTablixOutlineWeight(objects)\r\n }\r\n });\r\n break;\r\n }\r\n }\r\n\r\n else {\r\n switch (tablixType) {\r\n case TablixType.Table:\r\n enumeration.pushInstance({\r\n selector: null,\r\n objectName: 'general',\r\n properties: {\r\n totals: TablixUtils.shouldShowTableTotals(objects),\r\n autoSizeColumnWidth: TablixUtils.shouldAutoSizeColumnWidth(objects),\r\n textSize: TablixUtils.getTextSize(objects)\r\n }\r\n });\r\n break;\r\n\r\n case TablixType.Matrix:\r\n case TablixType.Table:\r\n enumeration.pushInstance({\r\n selector: null,\r\n objectName: 'general',\r\n properties: {\r\n autoSizeColumnWidth: TablixUtils.shouldAutoSizeColumnWidth(objects),\r\n textSize: TablixUtils.getTextSize(objects),\r\n rowSubtotals: TablixUtils.shouldShowRowSubtotals(objects),\r\n columnSubtotals: TablixUtils.shouldShowColumnSubtotals(objects)\r\n }\r\n });\r\n break;\r\n }\r\n }\r\n }\r\n\r\n export function enumerateColumnsOptions(enumeration: ObjectEnumerationBuilder, objects: DataViewObjects): void {\r\n let showSeparators = TablixUtils.getColumnSeparatorShow(objects);\r\n\r\n enumeration.pushInstance({\r\n selector: null,\r\n objectName: 'columns',\r\n properties: {\r\n showSeparators: showSeparators,\r\n separatorColor: showSeparators ? TablixUtils.getColumnSeparatorColor(objects) : TablixUtils.DefaultColumnSeparatorColor,\r\n columnSeparatorWeight: showSeparators ? TablixUtils.getColumnSeparatorWeight(objects) : TablixUtils.DefaultColumnSeparatorWeight\r\n }\r\n });\r\n }\r\n\r\n export function enumerateHeaderOptions(enumeration: ObjectEnumerationBuilder, objects: DataViewObjects): void {\r\n enumeration.pushInstance({\r\n selector: null,\r\n objectName: 'header',\r\n properties: {\r\n fontColor: TablixUtils.getColumnHeaderFontColor(objects),\r\n backgroundColor: TablixUtils.getColumnHeaderBackgroundColor(objects),\r\n outline: TablixUtils.getColumnHeaderOutlineType(objects),\r\n }\r\n });\r\n }\r\n\r\n export function enumerateRowsOptions(enumeration: ObjectEnumerationBuilder, objects: DataViewObjects): void {\r\n enumeration.pushInstance({\r\n selector: null,\r\n objectName: 'rows',\r\n properties: {\r\n showSeparators: TablixUtils.getRowSeparatorShow(objects),\r\n fontColor: TablixUtils.getRowHeaderFontColor(objects),\r\n backgroundColor: TablixUtils.getRowHeaderBackgroundColor(objects),\r\n outline: TablixUtils.getRowHeaderOutlineStyle(objects),\r\n }\r\n });\r\n }\r\n\r\n export function enumerateValuesOptions(enumeration: ObjectEnumerationBuilder, objects: DataViewObjects): void {\r\n enumeration.pushInstance({\r\n selector: null,\r\n objectName: 'values',\r\n properties: {\r\n fontColor: TablixUtils.getValuesFontColor(objects),\r\n backgroundColor: TablixUtils.getValuesBackgroundColor(objects),\r\n outline: TablixUtils.getValuesOutlineType(objects),\r\n }\r\n });\r\n }\r\n\r\n export function enumerateTotalsOptions(enumeration: ObjectEnumerationBuilder, objects: DataViewObjects): void {\r\n enumeration.pushInstance({\r\n selector: null,\r\n objectName: 'totals',\r\n properties: {\r\n fontColor: TablixUtils.getRowTotalsFontColor(objects),\r\n backgroundColor: TablixUtils.getRowTotalsBackgroundColor(objects),\r\n outline: TablixUtils.getRowTotalsOutlineType(objects),\r\n leadingSpace: TablixUtils.getRowTotalsLeadingSpace(objects)\r\n }\r\n });\r\n }\r\n\r\n export function getTableFormattingProperties(dataView: DataView): TablixFormattingPropertiesTable {\r\n let formattingProperties: TablixFormattingPropertiesTable;\r\n\r\n if (dataView && dataView.metadata && dataView.metadata.objects) {\r\n let tablixFormattingProperties: DataViewObjects = dataView.metadata.objects;\r\n\r\n formattingProperties = {\r\n general:\r\n {\r\n autoSizeColumnWidth: TablixUtils.shouldAutoSizeColumnWidth(tablixFormattingProperties),\r\n textSize: TablixUtils.getTextSize(tablixFormattingProperties),\r\n totals: TablixUtils.shouldShowTableTotals(tablixFormattingProperties),\r\n outlineColor: TablixUtils.getTablixOutlineColor(tablixFormattingProperties),\r\n outlineWeight: TablixUtils.getTablixOutlineWeight(tablixFormattingProperties)\r\n },\r\n columns:\r\n {\r\n showSeparators: TablixUtils.getColumnSeparatorShow(tablixFormattingProperties),\r\n separatorColor: TablixUtils.getColumnSeparatorColor(tablixFormattingProperties),\r\n separatorWeight: TablixUtils.getColumnSeparatorWeight(tablixFormattingProperties)\r\n },\r\n header:\r\n {\r\n fontColor: TablixUtils.getColumnHeaderFontColor(tablixFormattingProperties),\r\n backgroundColor: TablixUtils.getColumnHeaderBackgroundColor(tablixFormattingProperties),\r\n outline: TablixUtils.getColumnHeaderOutlineType(tablixFormattingProperties)\r\n },\r\n rows:\r\n {\r\n showSeparators: TablixUtils.getRowSeparatorShow(tablixFormattingProperties),\r\n fontColor: TablixUtils.getRowHeaderFontColor(tablixFormattingProperties),\r\n backgroundColor: TablixUtils.getRowHeaderBackgroundColor(tablixFormattingProperties),\r\n outline: TablixUtils.getRowHeaderOutlineStyle(tablixFormattingProperties)\r\n },\r\n totals:\r\n {\r\n fontColor: TablixUtils.getRowTotalsFontColor(tablixFormattingProperties),\r\n backgroundColor: TablixUtils.getRowTotalsBackgroundColor(tablixFormattingProperties),\r\n outline: TablixUtils.getRowTotalsOutlineType(tablixFormattingProperties),\r\n leadingSpace: TablixUtils.getRowTotalsLeadingSpace(tablixFormattingProperties)\r\n }\r\n };\r\n }\r\n\r\n return formattingProperties;\r\n }\r\n\r\n export function getMatrixFormattingProperties(dataView: DataView): TablixFormattingPropertiesMatrix {\r\n let formattingProperties: TablixFormattingPropertiesMatrix;\r\n\r\n if (dataView && dataView.metadata && dataView.metadata.objects) {\r\n let tablixFormattingProperties: DataViewObjects = dataView.metadata.objects;\r\n\r\n formattingProperties = {\r\n general:\r\n {\r\n autoSizeColumnWidth: TablixUtils.shouldAutoSizeColumnWidth(tablixFormattingProperties),\r\n textSize: TablixUtils.getTextSize(tablixFormattingProperties),\r\n rowSubtotals: TablixUtils.shouldShowRowSubtotals(tablixFormattingProperties),\r\n columnSubtotals: TablixUtils.shouldShowColumnSubtotals(tablixFormattingProperties),\r\n outlineColor: TablixUtils.getTablixOutlineColor(tablixFormattingProperties),\r\n outlineWeight: TablixUtils.getTablixOutlineWeight(tablixFormattingProperties)\r\n },\r\n columns:\r\n {\r\n showSeparators: TablixUtils.getColumnSeparatorShow(tablixFormattingProperties),\r\n separatorColor: TablixUtils.getColumnSeparatorColor(tablixFormattingProperties),\r\n separatorWeight: TablixUtils.getColumnSeparatorWeight(tablixFormattingProperties)\r\n },\r\n header:\r\n {\r\n fontColor: TablixUtils.getColumnHeaderFontColor(tablixFormattingProperties),\r\n backgroundColor: TablixUtils.getColumnHeaderBackgroundColor(tablixFormattingProperties),\r\n outline: TablixUtils.getColumnHeaderOutlineType(tablixFormattingProperties)\r\n },\r\n rows:\r\n {\r\n showSeparators: TablixUtils.getRowSeparatorShow(tablixFormattingProperties),\r\n fontColor: TablixUtils.getRowHeaderFontColor(tablixFormattingProperties),\r\n backgroundColor: TablixUtils.getRowHeaderBackgroundColor(tablixFormattingProperties),\r\n outline: TablixUtils.getRowHeaderOutlineStyle(tablixFormattingProperties)\r\n },\r\n values:\r\n {\r\n fontColor: TablixUtils.getValuesFontColor(tablixFormattingProperties),\r\n backgroundColor: TablixUtils.getValuesBackgroundColor(tablixFormattingProperties),\r\n outline: TablixUtils.getValuesOutlineType(tablixFormattingProperties)\r\n },\r\n totals:\r\n {\r\n fontColor: TablixUtils.getRowTotalsFontColor(tablixFormattingProperties),\r\n backgroundColor: TablixUtils.getRowTotalsBackgroundColor(tablixFormattingProperties),\r\n outline: TablixUtils.getRowTotalsOutlineType(tablixFormattingProperties),\r\n leadingSpace: TablixUtils.getRowTotalsLeadingSpace(tablixFormattingProperties)\r\n }\r\n };\r\n }\r\n\r\n return formattingProperties;\r\n }\r\n\r\n export function shouldShowTableTotals(objects: DataViewObjects): boolean {\r\n return DataViewObjects.getValue<boolean>(objects, TablixUtils.TableTotalsProp, TablixUtils.TableShowTotals);\r\n }\r\n\r\n export function shouldAutoSizeColumnWidth(objects: DataViewObjects): boolean {\r\n return DataViewObjects.getValue<boolean>(objects, TablixUtils.TablixColumnAutoSizeProp, controls.AutoSizeColumnWidthDefault);\r\n }\r\n\r\n export function getTextSize(objects: DataViewObjects): number {\r\n // By default, let tablixControl set default font size\r\n return DataViewObjects.getValue<number>(objects, TablixUtils.TablixTextSizeProp, controls.TablixDefaultTextSize);\r\n }\r\n\r\n export function getTextSizeInPx(textSize: number): string {\r\n return jsCommon.PixelConverter.fromPoint(textSize);\r\n }\r\n\r\n export function shouldShowRowSubtotals(objects: TablixFormattingPropertiesMatrix): boolean {\r\n if (objects && objects.general)\r\n return objects.general.rowSubtotals !== false;\r\n\r\n // By default, totals are enabled\r\n return true;\r\n }\r\n\r\n export function shouldShowColumnSubtotals(objects: TablixFormattingPropertiesMatrix): boolean {\r\n if (objects && objects.general)\r\n return objects.general.columnSubtotals !== false;\r\n\r\n // By default, totals are enabled\r\n return true;\r\n }\r\n\r\n export function getColumnSeparatorColor(objects: DataViewObjects): string {\r\n return DataViewObjects.getFillColor(objects, TablixUtils.ColumnSeparatorColorProp, TablixUtils.DefaultColumnSeparatorColor);\r\n }\r\n\r\n export function getColumnSeparatorWeight(objects: DataViewObjects): number {\r\n return DataViewObjects.getValue<number>(objects, TablixUtils.ColumnSeparatorWeightProp, TablixUtils.DefaultColumnSeparatorWeight);\r\n }\r\n\r\n export function getTablixOutlineColor(objects: DataViewObjects): string {\r\n return DataViewObjects.getFillColor(objects, TablixUtils.TablixOutlineColorProp, TablixUtils.DefaultOutlineColor);\r\n }\r\n\r\n export function getTablixOutlineWeight(objects: DataViewObjects): number {\r\n return DataViewObjects.getValue<number>(objects, TablixUtils.TablixOutlineWeightProp, TablixUtils.DefaultOutlineWeight);\r\n }\r\n\r\n export function getColumnSeparatorShow(objects: DataViewObjects): boolean {\r\n return DataViewObjects.getValue<boolean>(objects, TablixUtils.ColumnSeparatorShowProp, TablixUtils.DefaultColumnSeparatorShow);\r\n }\r\n\r\n export function getColumnHeaderFontColor(objects: DataViewObjects): string {\r\n return DataViewObjects.getFillColor(objects, TablixUtils.ColumnHeaderFontColorProp, TablixUtils.DefaultFontColor);\r\n }\r\n\r\n export function getColumnHeaderBackgroundColor(objects: DataViewObjects): string {\r\n return DataViewObjects.getFillColor(objects, TablixUtils.ColumnHeaderBackgroundColorProp, TablixUtils.DefaultBackgroundColor);\r\n }\r\n\r\n export function getColumnHeaderOutlineType(objects: DataViewObjects): string {\r\n return DataViewObjects.getValue<string>(objects, TablixUtils.ColumnHeaderOutlineProp, TablixUtils.DefaultOutlineColumnHeader);\r\n }\r\n\r\n export function getRowSeparatorShow(objects: DataViewObjects): boolean {\r\n return DataViewObjects.getValue<boolean>(objects, TablixUtils.RowSeparatorProp, TablixUtils.DefaultRowSeparatorShow);\r\n }\r\n\r\n export function getRowHeaderFontColor(objects: DataViewObjects): string {\r\n return DataViewObjects.getFillColor(objects, TablixUtils.RowHeaderFontColorProp, TablixUtils.DefaultFontColor);\r\n }\r\n export function getRowHeaderBackgroundColor(objects: DataViewObjects): string {\r\n return DataViewObjects.getFillColor(objects, TablixUtils.RowHeaderBackgroundColorProp, TablixUtils.DefaultBackgroundColor);\r\n }\r\n\r\n export function getRowHeaderOutlineStyle(objects: DataViewObjects): string {\r\n return DataViewObjects.getValue<string>(objects, TablixUtils.RowHeaderOutlineStyleProp, TablixUtils.DefaultOutlineRowHeader);\r\n }\r\n\r\n export function getValuesFontColor(objects: DataViewObjects): string {\r\n return DataViewObjects.getFillColor(objects, TablixUtils.ValuesFontColorProp, TablixUtils.DefaultFontColor);\r\n }\r\n\r\n export function getValuesBackgroundColor(objects: DataViewObjects): string {\r\n return DataViewObjects.getFillColor(objects, TablixUtils.ValuesBackgroundColorProp, TablixUtils.DefaultBackgroundColor);\r\n }\r\n\r\n export function getValuesOutlineType(objects: DataViewObjects): string {\r\n return DataViewObjects.getValue<string>(objects, TablixUtils.ValuesOutlineProp, TablixUtils.DefaultOutlineValues);\r\n }\r\n\r\n export function getRowTotalsFontColor(objects: DataViewObjects): string {\r\n return DataViewObjects.getFillColor(objects, TablixUtils.RowTotalsFontColorProp, TablixUtils.DefaultFontColor);\r\n }\r\n\r\n export function getRowTotalsBackgroundColor(objects: DataViewObjects): string {\r\n return DataViewObjects.getFillColor(objects, TablixUtils.RowTotalsBackgroundColor, TablixUtils.DefaultBackgroundColor);\r\n }\r\n\r\n export function getRowTotalsOutlineType(objects: DataViewObjects): string {\r\n return DataViewObjects.getValue<string>(objects, TablixUtils.RowTotalsOutlineProp, TablixUtils.DefaultOutlineRowTotals);\r\n }\r\n\r\n export function getRowTotalsLeadingSpace(objects: DataViewObjects): number {\r\n return DataViewObjects.getValue<number>(objects, TablixUtils.RowTotalsLeadingSpaceProp, TablixUtils.DefaultRowLeadingSpace);\r\n }\r\n\r\n export function reverseSort(sortDirection: SortDirection): SortDirection {\r\n return sortDirection === SortDirection.Descending ? SortDirection.Ascending : SortDirection.Descending;\r\n }\r\n\r\n function checkSortIconExists(cell: controls.ITablixCell): boolean {\r\n for (let element of cell.extension.contentElement.children) {\r\n if (element.className.indexOf(TableBinder.sortIconContainerClassName) > -1)\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n export function removeSortIcons(cell: controls.ITablixCell): void {\r\n if (!checkSortIconExists(cell))\r\n return;\r\n $((<HTMLElement>cell.extension.contentElement)).find('.' + TableBinder.sortIconContainerClassName).remove();\r\n }\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../../_references.ts\"/>\r\n\r\nmodule powerbi.visuals.controls {\r\n\r\n export interface ITablixHierarchyNavigator {\r\n /**\r\n * Returns the depth of a hierarchy.\r\n *\r\n * @param hierarchy Object representing the hierarchy.\r\n */\r\n getDepth(hierarchy: any): number;\r\n\r\n /**\r\n * Returns the leaf count of a hierarchy.\r\n *\r\n * @param hierarchy Object representing the hierarchy.\r\n */\r\n getLeafCount(hierarchy: any): number;\r\n\r\n /**\r\n * Returns the leaf member of a hierarchy at the specified index.\r\n *\r\n * @param hierarchy Object representing the hierarchy.\r\n * @param index Index of leaf member.\r\n */\r\n getLeafAt(hierarchy: any, index: number): any;\r\n\r\n /**\r\n * Returns the specified hierarchy member parent.\r\n *\r\n * @param item Hierarchy member.\r\n */\r\n getParent(item: any): any;\r\n\r\n /**\r\n * Returns the index of the hierarchy member relative to its parent.\r\n *\r\n * @param item Hierarchy member.\r\n */\r\n getIndex(item: any): number;\r\n\r\n /**\r\n * Checks whether a hierarchy member is a leaf.\r\n *\r\n * @param item Hierarchy member.\r\n */\r\n isLeaf(item: any): boolean;\r\n\r\n isRowHierarchyLeaf(cornerItem: any): boolean;\r\n\r\n isColumnHierarchyLeaf(cornerItem: any): boolean;\r\n\r\n /**\r\n * Checks whether a hierarchy member is the last item within its parent.\r\n *\r\n * @param item Hierarchy member.\r\n * @param items A collection of hierarchy members.\r\n */\r\n isLastItem(item: any, items: any): boolean;\r\n\r\n /**\r\n * Gets the children members of a hierarchy member.\r\n *\r\n * @param item Hierarchy member.\r\n */\r\n getChildren(item: any): any;\r\n\r\n /**\r\n * Gets the members count in a specified collection.\r\n *\r\n * @param items Hierarchy member.\r\n */\r\n getCount(items: any): number;\r\n\r\n /**\r\n * Gets the member at the specified index.\r\n *\r\n * @param items A collection of hierarchy members.\r\n * @param index Index of member to return.\r\n */\r\n getAt(items: any, index: number): any;\r\n\r\n /**\r\n * Gets the hierarchy member level.\r\n *\r\n * @param item Hierarchy member.\r\n */\r\n getLevel(item: any): number;\r\n\r\n /**\r\n * Returns the intersection between a row and a column item.\r\n *\r\n * @param rowItem A row member.\r\n * @param columnItem A column member.\r\n */\r\n getIntersection(rowItem: any, columnItem: any): any;\r\n\r\n /**\r\n * Returns the corner cell between a row and a column level.\r\n *\r\n * @param rowLevel A level in the row hierarchy.\r\n * @param columnLevel A level in the column hierarchy.\r\n */\r\n getCorner(rowLevel: number, columnLevel: number): any;\r\n\r\n headerItemEquals(item1: any, item2: any): boolean;\r\n\r\n bodyCellItemEquals(item1: any, item2: any): boolean;\r\n\r\n cornerCellItemEquals(item1: any, item2: any): boolean;\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../../_references.ts\"/>\r\n\r\nmodule powerbi.visuals.controls {\r\n\r\n export interface ITablixBinder {\r\n onStartRenderingSession(): void;\r\n onEndRenderingSession(): void;\r\n /** Binds the row hierarchy member to the DOM element. */\r\n bindRowHeader(item: any, cell: ITablixCell): void;\r\n unbindRowHeader(item: any, cell: ITablixCell): void;\r\n\r\n /** Binds the column hierarchy member to the DOM element. */\r\n bindColumnHeader(item: any, cell: ITablixCell): void;\r\n unbindColumnHeader(item: any, cell: ITablixCell): void;\r\n\r\n /** Binds the intersection between a row and a column hierarchy member to the DOM element. */\r\n bindBodyCell(item: any, cell: ITablixCell): void;\r\n unbindBodyCell(item: any, cell: ITablixCell): void;\r\n\r\n /** Binds the corner cell to the DOM element. */\r\n bindCornerCell(item: any, cell: ITablixCell): void;\r\n unbindCornerCell(item: any, cell: ITablixCell): void;\r\n\r\n bindEmptySpaceHeaderCell(cell: ITablixCell): void;\r\n unbindEmptySpaceHeaderCell(cell: ITablixCell): void;\r\n\r\n bindEmptySpaceFooterCell(cell: ITablixCell): void;\r\n unbindEmptySpaceFooterCell(cell: ITablixCell): void;\r\n\r\n /** changes The formatting properties */\r\n setTablixColumnSeparator(cell: controls.ITablixCell): void;\r\n setTablixRegionStyle(cell: controls.ITablixCell, fontColor: string, backgroundColor, outline: string, outlineWeight: number, outlineColor: string): void;\r\n \r\n /** Measurement Helper */\r\n getHeaderLabel(item: any): string;\r\n getCellContent(item: any): string;\r\n hasRowGroups(): boolean;\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../../_references.ts\"/>\r\n\r\nmodule powerbi.visuals.controls {\r\n\r\n export const enum TablixCellType {\r\n CornerCell,\r\n RowHeader,\r\n ColumnHeader,\r\n BodyCell\r\n }\r\n\r\n export interface ITablixCell {\r\n type: TablixCellType;\r\n item: any;\r\n colSpan: number;\r\n rowSpan: number;\r\n textAlign: string;\r\n extension: any;\r\n }\r\n \r\n export interface IDimensionLayoutManager {\r\n measureEnabled: boolean;\r\n getRealizedItemsCount(): number;\r\n needsToRealize: boolean;\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../../_references.ts\"/>\r\n\r\nmodule powerbi.visuals.controls {\r\n export const TablixDefaultTextSize = jsCommon.TextSizeDefaults.TextSizeMin;\r\n\r\n export interface TablixRenderArgs {\r\n rowScrollOffset?: number;\r\n columnScrollOffset?: number;\r\n scrollingDimension?: TablixDimension;\r\n }\r\n\r\n export interface GridDimensions {\r\n rowCount?: number;\r\n columnCount?: number;\r\n rowHierarchyWidth?: number;\r\n rowHierarchyHeight?: number;\r\n rowHierarchyContentHeight?: number;\r\n columnHierarchyWidth?: number;\r\n columnHierarchyHeight?: number;\r\n footerHeight?: number;\r\n }\r\n\r\n export const enum TablixLayoutKind {\r\n /**\r\n * The default layout is based on DOM measurements and used on the canvas.\r\n */\r\n Canvas,\r\n \r\n /**\r\n * The DashboardTile layout must not rely on any kind of DOM measurements\r\n * since the tiles are created when the dashboard is not visible and the\r\n * visual is not rendered; thus no measurements are available.\r\n */\r\n DashboardTile,\r\n }\r\n\r\n export interface TablixOptions {\r\n interactive?: boolean;\r\n enableTouchSupport?: boolean;\r\n layoutKind?: TablixLayoutKind;\r\n fontSize?: string;\r\n }\r\n\r\n export class TablixControl {\r\n private static UnitOfMeasurement = 'px';\r\n private static TablixContainerClassName = 'tablixContainer';\r\n private static TablixFixSizedClassName = \"bi-tablix-fixed-size\";\r\n private static DefaultFontSize = jsCommon.PixelConverter.fromPoint(controls.TablixDefaultTextSize);\r\n /*\r\n * This is workaround for the infinite loop in rendering\r\n * BugID: 6518621\r\n * ToDo: Investigate the underlying cause for rendering to never report completion\r\n * Rendering typically require 3-5 iterations to complete, so 10 is enough\r\n */\r\n private static MaxRenderIterationCount = 10;\r\n\r\n private hierarchyTablixNavigator: ITablixHierarchyNavigator;\r\n private binder: ITablixBinder;\r\n\r\n private columnDim: TablixColumnDimension;\r\n private rowDim: TablixRowDimension;\r\n private controlLayoutManager: internal.TablixLayoutManager;\r\n\r\n private containerElement: HTMLDivElement;\r\n private mainDiv: HTMLDivElement;\r\n private footerDiv: HTMLDivElement;\r\n\r\n private scrollBarElementWidth = 9;\r\n\r\n private touchManager: TouchUtils.TouchManager;\r\n private columnTouchDelegate: ColumnTouchDelegate;\r\n private rowTouchDelegate: RowTouchDelegate;\r\n private bodyTouchDelegate: BodyTouchDelegate;\r\n private footerTouchDelegate: ColumnTouchDelegate;\r\n private touchInterpreter: TouchUtils.TouchEventInterpreter;\r\n private footerTouchInterpreter: TouchUtils.TouchEventInterpreter;\r\n\r\n private gridDimensions: GridDimensions;\r\n private lastRenderingArgs: TablixRenderArgs;\r\n\r\n /* tslint:disable:no-underscore-prefix-for-variables*/\r\n private _autoSizeWidth: boolean;\r\n private _autoSizeHeight: boolean;\r\n /* tslint:enable:no-underscore-prefix-for-variables*/\r\n private viewPort: IViewport;\r\n private maximumWidth: number;\r\n private maximumHeight: number;\r\n private minimumWidth: number;\r\n private minimumHeight: number;\r\n private textFontSize: string;\r\n\r\n private options: TablixOptions;\r\n private isTouchEnabled: boolean;\r\n\r\n private renderIterationCount: number;\r\n\r\n constructor(\r\n hierarchyNavigator: ITablixHierarchyNavigator,\r\n layoutManager: internal.TablixLayoutManager,\r\n binder: ITablixBinder,\r\n parentDomElement: HTMLElement,\r\n options: TablixOptions) {\r\n\r\n // Options (fontSize set after container initialized)\r\n this.options = options;\r\n let isInteractive = options.interactive;\r\n this.isTouchEnabled = isInteractive && options.enableTouchSupport;\r\n\r\n // Main Div\r\n this.mainDiv = internal.TablixUtils.createDiv();\r\n let mainDivStyle = this.mainDiv.style;\r\n mainDivStyle.position = \"absolute\";\r\n mainDivStyle.left = \"0px\";\r\n mainDivStyle.top = \"0px\";\r\n\r\n // Footer Div\r\n this.footerDiv = internal.TablixUtils.createDiv();\r\n let footerDivStyle = this.footerDiv.style;\r\n footerDivStyle.position = \"absolute\";\r\n footerDivStyle.left = \"0px\";\r\n\r\n if (this.isTouchEnabled)\r\n this.InitializeTouchSupport();\r\n\r\n this.gridDimensions = {};\r\n\r\n this.containerElement = internal.TablixUtils.createDiv();\r\n this.className = layoutManager.getTablixClassName();\r\n this.autoSizeWidth = false;\r\n this.autoSizeHeight = false;\r\n this.fontSize = options.fontSize;\r\n\r\n parentDomElement.className = TablixControl.TablixContainerClassName;\r\n parentDomElement.appendChild(this.containerElement);\r\n\r\n this.containerElement.addEventListener(\"mousewheel\",(e) => { this.onMouseWheel(<MouseWheelEvent>e); });\r\n this.containerElement.addEventListener(\"DOMMouseScroll\",(e) => { this.onFireFoxMouseWheel(<MouseWheelEvent>e); });\r\n this.containerElement.appendChild(this.mainDiv);\r\n this.containerElement.appendChild(this.footerDiv);\r\n\r\n if (this.isTouchEnabled) {\r\n this.touchInterpreter.initTouch(this.mainDiv, null, false);\r\n this.footerTouchInterpreter.initTouch(this.footerDiv, this.mainDiv, false);\r\n }\r\n\r\n this.controlLayoutManager = layoutManager;\r\n this.controlLayoutManager.initialize(this);\r\n\r\n this.hierarchyTablixNavigator = hierarchyNavigator;\r\n this.binder = binder;\r\n\r\n this.columnDim = new TablixColumnDimension(this);\r\n this.rowDim = new TablixRowDimension(this);\r\n this.columnDim._otherDimension = this.rowDimension;\r\n this.rowDim._otherDimension = this.columnDimension;\r\n\r\n this.InitializeScrollbars();\r\n if (!isInteractive) {\r\n this.scrollbarWidth = 0;\r\n }\r\n\r\n this.updateHorizontalPosition();\r\n this.updateVerticalPosition();\r\n\r\n this.updateFooterVisibility();\r\n\r\n this.lastRenderingArgs = {};\r\n }\r\n\r\n private InitializeTouchSupport(): void {\r\n this.touchManager = new TouchUtils.TouchManager();\r\n this.touchInterpreter = new TouchUtils.TouchEventInterpreter(this.touchManager);\r\n this.footerTouchInterpreter = new TouchUtils.TouchEventInterpreter(this.touchManager);\r\n this.columnTouchDelegate = new ColumnTouchDelegate(new TouchUtils.Rectangle());\r\n this.rowTouchDelegate = new RowTouchDelegate(new TouchUtils.Rectangle());\r\n this.bodyTouchDelegate = new BodyTouchDelegate(new TouchUtils.Rectangle());\r\n this.footerTouchDelegate = new ColumnTouchDelegate(new TouchUtils.Rectangle());\r\n\r\n this.columnTouchDelegate.setHandler(this, this.onTouchEvent);\r\n this.rowTouchDelegate.setHandler(this, this.onTouchEvent);\r\n this.bodyTouchDelegate.setHandler(this, this.onTouchEvent);\r\n this.footerTouchDelegate.setHandler(this, this.onTouchEvent);\r\n\r\n this.touchManager.addTouchRegion(this.columnTouchDelegate.dimension, this.columnTouchDelegate, this.columnTouchDelegate);\r\n this.touchManager.addTouchRegion(this.rowTouchDelegate.dimension, this.rowTouchDelegate, this.rowTouchDelegate);\r\n this.touchManager.addTouchRegion(this.bodyTouchDelegate.dimension, this.bodyTouchDelegate, this.bodyTouchDelegate);\r\n this.touchManager.addTouchRegion(this.footerTouchDelegate.dimension, this.footerTouchDelegate, this.footerTouchDelegate);\r\n }\r\n\r\n private InitializeScrollbars(): void {\r\n // Row Dimension\r\n this.rowDim._initializeScrollbar(this.containerElement, null);\r\n\r\n let rowDimensionScrollbarStyle = this.rowDim.scrollbar.element.style;\r\n rowDimensionScrollbarStyle.position = \"absolute\";\r\n rowDimensionScrollbarStyle.top = \"0\" + TablixControl.UnitOfMeasurement;\r\n rowDimensionScrollbarStyle.right = \"0\" + TablixControl.UnitOfMeasurement;\r\n this.rowDim.scrollbar.width = this.scrollBarElementWidth + TablixControl.UnitOfMeasurement;\r\n\r\n // Default to true which is the more common case to avoid an extra rendering iteration\r\n // when first rendering the visual\r\n this.rowDim.scrollbar.show(true);\r\n\r\n // Column Dimension\r\n this.columnDim._initializeScrollbar(this.containerElement, null);\r\n\r\n let columnDimensionScrollbarStyle = this.columnDim.scrollbar.element.style;\r\n columnDimensionScrollbarStyle.position = \"absolute\";\r\n columnDimensionScrollbarStyle.left = \"0\" + TablixControl.UnitOfMeasurement;\r\n columnDimensionScrollbarStyle.bottom = \"0\" + TablixControl.UnitOfMeasurement;\r\n this.columnDim.scrollbar.height = this.scrollBarElementWidth + TablixControl.UnitOfMeasurement;\r\n\r\n this.columnDim.scrollbar.show(false);\r\n }\r\n\r\n public get container(): HTMLElement {\r\n return this.containerElement;\r\n }\r\n\r\n public get contentHost(): HTMLElement {\r\n return this.mainDiv;\r\n }\r\n\r\n public get footerHost(): HTMLElement {\r\n return this.footerDiv;\r\n }\r\n\r\n public set className(value: string) {\r\n this.containerElement.className = value;\r\n }\r\n\r\n public get hierarchyNavigator(): ITablixHierarchyNavigator {\r\n return this.hierarchyTablixNavigator;\r\n }\r\n\r\n public getBinder(): ITablixBinder {\r\n return this.binder;\r\n }\r\n\r\n public get autoSizeWidth(): boolean {\r\n return this._autoSizeWidth;\r\n }\r\n\r\n public set autoSizeWidth(value: boolean) {\r\n this._autoSizeWidth = value;\r\n\r\n if (this._autoSizeWidth) {\r\n this.removeFixSizedClassName();\r\n } else {\r\n this.addFixedSizeClassNameIfNeeded();\r\n this.containerElement.style.minWidth = this.containerElement.style.maxWidth = \"none\";\r\n }\r\n }\r\n\r\n public get autoSizeHeight(): boolean {\r\n return this._autoSizeHeight;\r\n }\r\n\r\n public set autoSizeHeight(value: boolean) {\r\n this._autoSizeHeight = value;\r\n\r\n if (this._autoSizeHeight) {\r\n this.removeFixSizedClassName();\r\n } else {\r\n this.addFixedSizeClassNameIfNeeded();\r\n this.containerElement.style.minHeight = this.containerElement.style.maxHeight = \"none\";\r\n }\r\n }\r\n\r\n public get maxWidth(): number {\r\n return this.maximumWidth;\r\n }\r\n\r\n public set maxWidth(value: number) {\r\n this.maximumWidth = value;\r\n this.containerElement.style.maxWidth = this.maximumWidth + TablixControl.UnitOfMeasurement;\r\n }\r\n\r\n public get viewport(): IViewport {\r\n return this.viewPort;\r\n }\r\n\r\n public set viewport(value: IViewport) {\r\n this.viewPort = value;\r\n this.containerElement.style.width = this.viewPort.width + TablixControl.UnitOfMeasurement;\r\n this.containerElement.style.height = this.viewPort.height + TablixControl.UnitOfMeasurement;\r\n\r\n this.rowDim.scrollbar.invalidateArrange();\r\n this.columnDim.scrollbar.invalidateArrange();\r\n\r\n this.controlLayoutManager.updateViewport(this.viewPort);\r\n }\r\n\r\n public get maxHeight(): number {\r\n return this.maximumHeight;\r\n }\r\n\r\n public set maxHeight(value: number) {\r\n this.maximumHeight = value;\r\n this.containerElement.style.maxHeight = this.maximumHeight + TablixControl.UnitOfMeasurement;\r\n }\r\n\r\n public get minWidth(): number {\r\n return this.minimumWidth;\r\n }\r\n\r\n public set minWidth(value: number) {\r\n this.minimumWidth = value;\r\n this.containerElement.style.minWidth = this.minimumWidth + TablixControl.UnitOfMeasurement;\r\n }\r\n\r\n public get minHeight(): number {\r\n return this.minimumHeight;\r\n }\r\n\r\n public set minHeight(value: number) {\r\n this.minimumHeight = value;\r\n this.containerElement.style.minHeight = this.minimumHeight + TablixControl.UnitOfMeasurement;\r\n }\r\n\r\n public set fontSize(value: string) {\r\n this.textFontSize = !value ? TablixControl.DefaultFontSize : value;\r\n this.containerElement.style.fontSize = this.textFontSize;\r\n }\r\n\r\n public set scrollbarWidth(value: number) {\r\n this.scrollBarElementWidth = value;\r\n this.rowDim.scrollbar.width = this.scrollBarElementWidth + TablixControl.UnitOfMeasurement;\r\n this.columnDim.scrollbar.height = this.scrollBarElementWidth + TablixControl.UnitOfMeasurement;\r\n }\r\n\r\n public updateModels(resetScrollOffsets: boolean, rowModel?: any, columnModel?: any): void {\r\n if (rowModel) {\r\n this.rowDim.model = rowModel;\r\n if (resetScrollOffsets)\r\n this.rowDim.scrollOffset = 0;\r\n }\r\n\r\n if (columnModel) {\r\n this.columnDim.model = columnModel;\r\n if (resetScrollOffsets)\r\n this.columnDim.scrollOffset = 0;\r\n }\r\n\r\n this.layoutManager.updateColumnCount(this.rowDim, this.columnDim);\r\n }\r\n\r\n public updateColumnDimensions(rowHierarchyWidth: number, columnHierarchyWidth: number, count: number) {\r\n let gridDimensions = this.gridDimensions;\r\n\r\n gridDimensions.columnCount = count;\r\n gridDimensions.rowHierarchyWidth = rowHierarchyWidth;\r\n gridDimensions.columnHierarchyWidth = columnHierarchyWidth;\r\n }\r\n\r\n public updateRowDimensions(columnHierarchyHeight: number, rowHierarchyHeight: number, rowHierarchyContentHeight: number, count: number, footerHeight) {\r\n let gridDimensions = this.gridDimensions;\r\n\r\n gridDimensions.rowCount = count;\r\n gridDimensions.rowHierarchyHeight = rowHierarchyHeight;\r\n gridDimensions.rowHierarchyContentHeight = rowHierarchyContentHeight;\r\n gridDimensions.columnHierarchyHeight = columnHierarchyHeight;\r\n gridDimensions.footerHeight = footerHeight;\r\n }\r\n\r\n private updateTouchDimensions(): void {\r\n let gridDimensions = this.gridDimensions;\r\n\r\n this.columnTouchDelegate.resize(gridDimensions.rowHierarchyWidth, 0, gridDimensions.columnHierarchyWidth, gridDimensions.columnHierarchyHeight);\r\n this.columnTouchDelegate.setScrollDensity(gridDimensions.columnCount / gridDimensions.columnHierarchyWidth);\r\n\r\n this.rowTouchDelegate.resize(0, gridDimensions.columnHierarchyHeight, gridDimensions.rowHierarchyWidth, gridDimensions.rowHierarchyHeight);\r\n this.rowTouchDelegate.setScrollDensity(gridDimensions.rowCount / gridDimensions.rowHierarchyHeight);\r\n\r\n this.bodyTouchDelegate.resize(gridDimensions.rowHierarchyWidth, gridDimensions.columnHierarchyHeight,\r\n gridDimensions.columnHierarchyWidth, gridDimensions.rowHierarchyHeight);\r\n this.bodyTouchDelegate.setScrollDensity(gridDimensions.columnCount / gridDimensions.columnHierarchyWidth,\r\n gridDimensions.rowCount / gridDimensions.rowHierarchyHeight);\r\n\r\n this.footerTouchDelegate.resize(gridDimensions.rowHierarchyWidth, gridDimensions.columnHierarchyHeight + gridDimensions.rowHierarchyHeight, gridDimensions.columnHierarchyWidth, gridDimensions.footerHeight);\r\n this.footerTouchDelegate.setScrollDensity(gridDimensions.columnCount / gridDimensions.columnHierarchyWidth);\r\n }\r\n\r\n private onMouseWheel(e: MouseWheelEvent): void {\r\n let dimension = this.determineDimensionToScroll();\r\n if (dimension)\r\n dimension.scrollbar.onMouseWheel(e);\r\n }\r\n\r\n private onFireFoxMouseWheel(e: MouseWheelEvent): void {\r\n let dimension = this.determineDimensionToScroll();\r\n if (dimension)\r\n dimension.scrollbar.onFireFoxMouseWheel(e);\r\n }\r\n\r\n private determineDimensionToScroll(): TablixDimension {\r\n if (this.rowDim.scrollbar.visible)\r\n return this.rowDim;\r\n\r\n // In the absence of the vertical scrollbar, we scroll the\r\n // horizontal scrollbar.\r\n if (this.columnDim.scrollbar.visible)\r\n return this.columnDim;\r\n\r\n return null;\r\n }\r\n\r\n public get layoutManager(): internal.TablixLayoutManager {\r\n return this.controlLayoutManager;\r\n }\r\n\r\n public get columnDimension(): TablixColumnDimension {\r\n return this.columnDim;\r\n }\r\n\r\n public get rowDimension(): TablixRowDimension {\r\n return this.rowDim;\r\n }\r\n\r\n public refresh(clear: boolean): void {\r\n this.render(clear, null);\r\n }\r\n\r\n public _onScrollAsync(dimension: TablixDimension): void { // The intent is to be internal\r\n requestAnimationFrame(() => { this.performPendingScroll(dimension); });\r\n }\r\n\r\n private performPendingScroll(dimension: TablixDimension): void {\r\n this.render(false, dimension);\r\n }\r\n\r\n private updateHorizontalPosition(): void {\r\n if (this.rowDim.scrollbar.visible) {\r\n this.columnDim.scrollbar.element.style.right = this.scrollBarElementWidth + TablixControl.UnitOfMeasurement;\r\n this.footerDiv.style.right = this.scrollBarElementWidth + TablixControl.UnitOfMeasurement;\r\n this.mainDiv.style.right = this.scrollBarElementWidth + TablixControl.UnitOfMeasurement;\r\n } else {\r\n this.columnDim.scrollbar.element.style.right = \"0\" + TablixControl.UnitOfMeasurement;\r\n this.mainDiv.style.right = \"0\" + TablixControl.UnitOfMeasurement;\r\n this.footerDiv.style.right = \"0\" + TablixControl.UnitOfMeasurement;\r\n }\r\n }\r\n\r\n public updateFooterVisibility() {\r\n if (this.rowDim.hasFooter() ? (this.footerDiv.style.display !== \"block\") : (this.footerDiv.style.display !== \"none\")) {\r\n if (this.rowDim.hasFooter()) {\r\n this.footerDiv.style.display = \"block\";\r\n } else {\r\n this.footerDiv.style.display = \"none\";\r\n }\r\n }\r\n }\r\n\r\n private updateVerticalPosition(): void {\r\n\r\n // Set the height of the footer div to non-zero if we have a footer to render\r\n let footerHeight = 0;\r\n if (this.rowDim.hasFooter()) {\r\n footerHeight = this.gridDimensions.footerHeight;\r\n }\r\n this.footerDiv.style.height = footerHeight + TablixControl.UnitOfMeasurement;\r\n\r\n let hasVerticalScrollbar = this.rowDim.scrollbar.visible;\r\n // TODO: ideally the tablix control would not know about where it is rendered but the layout manager\r\n // would provider that information; we should refactor the layout manager so that getLayoutKind is not needed anymore.\r\n let isDashboardTile = this.controlLayoutManager.getLayoutKind() === TablixLayoutKind.DashboardTile;\r\n let showFooter = hasVerticalScrollbar || isDashboardTile;\r\n if (showFooter) {\r\n let mainBottom = footerHeight;\r\n let footerBottom = 0;\r\n let verticalScrollbarBottom = 0;\r\n\r\n // If we have a horizontal scrollbar, we need to adjust the bottom\r\n // value by the scrollbar width\r\n let hasHorizontalScrollbar = this.columnDim.scrollbar.visible;\r\n if (hasHorizontalScrollbar) {\r\n mainBottom += this.scrollBarElementWidth;\r\n footerBottom += this.scrollBarElementWidth;\r\n verticalScrollbarBottom = this.scrollBarElementWidth;\r\n }\r\n\r\n this.mainDiv.style.bottom = mainBottom + TablixControl.UnitOfMeasurement;\r\n this.rowDim.scrollbar.element.style.bottom = verticalScrollbarBottom + TablixControl.UnitOfMeasurement;\r\n this.footerDiv.style.bottom = footerBottom + TablixControl.UnitOfMeasurement;\r\n\r\n // With a vertical scrollbar, the footer is always rendered at the bottom\r\n this.footerDiv.style.removeProperty(\"top\");\r\n }\r\n else {\r\n // Without a vertical scrollbar, the footer is rendered below the last row;\r\n // this is controlled by the top value only\r\n this.footerDiv.style.top = this.gridDimensions.rowHierarchyContentHeight + TablixControl.UnitOfMeasurement;\r\n this.footerDiv.style.removeProperty(\"bottom\");\r\n this.mainDiv.style.removeProperty(\"bottom\");\r\n }\r\n }\r\n\r\n private alreadyRendered(scrollingDimension: TablixDimension): boolean {\r\n if (scrollingDimension !== this.lastRenderingArgs.scrollingDimension ||\r\n this.rowDimension.scrollOffset !== this.lastRenderingArgs.rowScrollOffset ||\r\n this.columnDimension.scrollOffset !== this.lastRenderingArgs.columnScrollOffset) {\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n private render(clear: boolean, scrollingDimension: TablixDimension): void {\r\n // at time of rendering always ensure the scroll offset is valid\r\n this.columnDim.makeScrollOffsetValid();\r\n this.rowDim.makeScrollOffsetValid();\r\n\r\n if (clear || scrollingDimension === null) {\r\n this.lastRenderingArgs = {};\r\n } else if (this.alreadyRendered(scrollingDimension)) {\r\n return;\r\n }\r\n\r\n let done = false;\r\n this.renderIterationCount = 0;\r\n\r\n this.controlLayoutManager.onStartRenderingSession(scrollingDimension, this.mainDiv, clear);\r\n let binder: ITablixBinder = this.binder;\r\n binder.onStartRenderingSession();\r\n\r\n let priorFooterHeight: number = this.gridDimensions.footerHeight;\r\n let priorRowHierarchyHeight: number = this.gridDimensions.rowHierarchyHeight;\r\n let priorRowHierarchyContentHeight: number = this.gridDimensions.rowHierarchyContentHeight;\r\n\r\n while (!done && this.renderIterationCount < TablixControl.MaxRenderIterationCount) {\r\n let hScrollbarVisibility = this.columnDim.scrollbar.visible;\r\n let vScrollbarVisibility = this.rowDim.scrollbar.visible;\r\n\r\n this.columnDim._onStartRenderingIteration();\r\n this.rowDim._onStartRenderingIteration();\r\n this.controlLayoutManager.onStartRenderingIteration(clear);\r\n\r\n // These calls add cells to the table.\r\n // Column needs to be rendered before rows as the row call will pair up with columns to produce the body cells.\r\n this.renderCorner();\r\n this.columnDim._render();\r\n this.rowDim._render();\r\n\r\n done = this.controlLayoutManager.onEndRenderingIteration();\r\n this.columnDim._onEndRenderingIteration();\r\n this.rowDim._onEndRenderingIteration();\r\n\r\n if ((hScrollbarVisibility !== this.columnDim.scrollbar.visible)) {\r\n this.updateVerticalPosition();\r\n }\r\n if (vScrollbarVisibility !== this.rowDim.scrollbar.visible) {\r\n this.updateHorizontalPosition();\r\n }\r\n\r\n this.renderIterationCount++;\r\n }\r\n\r\n this.controlLayoutManager.onEndRenderingSession();\r\n binder.onEndRenderingSession();\r\n\r\n if (this.isTouchEnabled)\r\n this.updateTouchDimensions();\r\n\r\n this.lastRenderingArgs.rowScrollOffset = this.rowDimension.scrollOffset;\r\n this.lastRenderingArgs.columnScrollOffset = this.columnDimension.scrollOffset;\r\n\r\n this.updateContainerDimensions();\r\n\r\n let lastRenderingArgs = this.lastRenderingArgs;\r\n lastRenderingArgs.rowScrollOffset = this.rowDimension.scrollOffset;\r\n lastRenderingArgs.columnScrollOffset = this.columnDimension.scrollOffset;\r\n lastRenderingArgs.scrollingDimension = scrollingDimension;\r\n\r\n if (priorFooterHeight !== this.gridDimensions.footerHeight ||\r\n priorRowHierarchyHeight !== this.gridDimensions.rowHierarchyHeight ||\r\n priorRowHierarchyContentHeight !== this.gridDimensions.rowHierarchyContentHeight) {\r\n this.updateVerticalPosition();\r\n }\r\n\r\n // NOTE: it is critical that we refresh the scrollbars only after the vertical\r\n // position was updated above; otherwise the measurements can be incorrect.\r\n if (this.options.interactive) {\r\n this.columnDim.scrollbar.refresh();\r\n this.rowDim.scrollbar.refresh();\r\n }\r\n }\r\n\r\n private updateContainerDimensions(): void {\r\n let gridDimensions = this.gridDimensions;\r\n\r\n if (this._autoSizeWidth) {\r\n let vScrollBarWidth: number = this.rowDim.scrollbar.visible ? this.scrollBarElementWidth : 0;\r\n this.containerElement.style.width =\r\n gridDimensions.rowHierarchyWidth +\r\n gridDimensions.columnHierarchyWidth +\r\n vScrollBarWidth +\r\n TablixControl.UnitOfMeasurement;\r\n }\r\n\r\n if (this._autoSizeHeight) {\r\n let hScrollBarHeight: number = this.columnDim.scrollbar.visible ? this.scrollBarElementWidth : 0;\r\n this.containerElement.style.height =\r\n gridDimensions.columnHierarchyHeight +\r\n gridDimensions.rowHierarchyHeight +\r\n gridDimensions.footerHeight +\r\n hScrollBarHeight +\r\n TablixControl.UnitOfMeasurement;\r\n }\r\n }\r\n\r\n private cornerCellMatch(item: any, cell: ITablixCell): boolean {\r\n let previousItem: any = cell.item;\r\n return cell.type === TablixCellType.CornerCell && previousItem && this.hierarchyTablixNavigator.cornerCellItemEquals(item, previousItem);\r\n }\r\n\r\n private renderCorner(): void {\r\n let columnDepth: number = this.columnDim.getDepth();\r\n let rowDepth: number = this.rowDim.getDepth();\r\n\r\n for (let i = 0; i < columnDepth; i++) {\r\n for (let j = 0; j < rowDepth; j++) {\r\n let item = this.hierarchyTablixNavigator.getCorner(j, i);\r\n let cell: ITablixCell = this.controlLayoutManager.getOrCreateCornerCell(item, j, i);\r\n let match = this.cornerCellMatch(item, cell);\r\n if (!match) {\r\n this._unbindCell(cell);\r\n cell.type = TablixCellType.CornerCell;\r\n cell.item = item;\r\n\r\n this.binder.bindCornerCell(item, cell);\r\n }\r\n this.controlLayoutManager.onCornerCellRealized(item, cell);\r\n }\r\n }\r\n }\r\n\r\n public _unbindCell(cell: ITablixCell): void { // The intent is to be internal\r\n switch (cell.type) {\r\n case TablixCellType.BodyCell:\r\n this.binder.unbindBodyCell(cell.item, cell);\r\n break;\r\n case TablixCellType.ColumnHeader:\r\n this.binder.unbindColumnHeader(cell.item, cell);\r\n break;\r\n case TablixCellType.RowHeader:\r\n this.binder.unbindRowHeader(cell.item, cell);\r\n break;\r\n case TablixCellType.CornerCell:\r\n this.binder.unbindCornerCell(cell.item, cell);\r\n }\r\n\r\n cell.item = null;\r\n cell.type = null;\r\n }\r\n\r\n private onTouchEvent(args: any[]): void {\r\n let colShift: number;\r\n let rowShift: number;\r\n let that: TablixControl;\r\n\r\n if ((args) && (args.length > 0)) {\r\n if ((\"columnDim\" in args[0]) && (\"rowDim\" in args[0])) {\r\n that = <TablixControl> args[0];\r\n colShift = that.columnDim.scrollbar.visible ? <number> args[1] : 0;\r\n rowShift = that.rowDim.scrollbar.visible ? <number> args[2] : 0;\r\n\r\n that.columnDim.scrollbar.viewMin = Math.max(0, that.columnDim.scrollbar.viewMin + colShift);\r\n that.columnDim.scrollOffset = Math.max(0, that.columnDim.scrollOffset + colShift);\r\n that.rowDim.scrollbar.viewMin = Math.max(0, that.rowDim.scrollbar.viewMin + rowShift);\r\n that.rowDim.scrollOffset = Math.max(0, that.rowDim.scrollOffset + rowShift);\r\n\r\n if (colShift === 0) {\r\n that._onScrollAsync(that.rowDim);\r\n } else if (rowShift === 0) {\r\n that._onScrollAsync(that.columnDim);\r\n } else {\r\n that._onScrollAsync(null);\r\n }\r\n }\r\n }\r\n }\r\n\r\n private addFixedSizeClassNameIfNeeded(): void {\r\n if (!this._autoSizeHeight && !this._autoSizeWidth && this.containerElement.className.indexOf(TablixControl.TablixFixSizedClassName) === -1) {\r\n this.containerElement.className += \" \" + TablixControl.TablixFixSizedClassName;\r\n }\r\n }\r\n\r\n private removeFixSizedClassName(): void {\r\n this.containerElement.className = this.containerElement.className.replace(TablixControl.TablixFixSizedClassName, '');\r\n }\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../../_references.ts\"/>\r\n\r\nmodule powerbi.visuals.controls {\r\n\r\n export class TablixDimension {\r\n public _hierarchyNavigator: ITablixHierarchyNavigator;\r\n public _otherDimension; // internal\r\n\r\n public _owner: TablixControl; // protected\r\n public _binder: ITablixBinder; // protected\r\n public _tablixLayoutManager: internal.TablixLayoutManager; // protected\r\n public _layoutManager: IDimensionLayoutManager; // protected\r\n\r\n public model: any;\r\n\r\n public scrollOffset: number;\r\n private _scrollStep: number = 0.1;\r\n\r\n private _firstVisibleScrollIndex: number;\r\n private _scrollbar: Scrollbar;\r\n public _scrollItems: any[]; // protected\r\n\r\n constructor(tablixControl: TablixControl) {\r\n this._owner = tablixControl;\r\n this._hierarchyNavigator = tablixControl.hierarchyNavigator;\r\n this._binder = tablixControl.getBinder();\r\n this._tablixLayoutManager = tablixControl.layoutManager;\r\n this.scrollOffset = 0;\r\n }\r\n\r\n public _onStartRenderingIteration(): void { // The intent to be internal\r\n this.updateScrollPosition();\r\n }\r\n\r\n public _onEndRenderingIteration(): void { // The intent to be internal\r\n }\r\n\r\n public getValidScrollOffset(scrollOffset: number): number {\r\n return Math.min(Math.max(scrollOffset, 0), Math.max(this.getItemsCount() - this._scrollStep, 0));\r\n }\r\n\r\n public makeScrollOffsetValid(): void {\r\n this.scrollOffset = this.getValidScrollOffset(this.scrollOffset);\r\n }\r\n\r\n public getIntegerScrollOffset(): number {\r\n return Math.floor(this.scrollOffset);\r\n }\r\n\r\n public getFractionScrollOffset(): number {\r\n return this.scrollOffset - this.getIntegerScrollOffset();\r\n }\r\n\r\n public get scrollbar(): Scrollbar {\r\n return this._scrollbar;\r\n }\r\n\r\n public getFirstVisibleItem(level: number): any {\r\n return this._scrollItems[level];\r\n }\r\n\r\n public getFirstVisibleChild(item: any): any {\r\n return this._hierarchyNavigator.getAt(this._hierarchyNavigator.getChildren(item), this.getFirstVisibleChildIndex(item));\r\n }\r\n\r\n public getFirstVisibleChildIndex(item: any): number {\r\n let startItem: any = this.getFirstVisibleItem(this._hierarchyNavigator.getLevel(item) + 1);\r\n let firstVisibleIndex: number;\r\n\r\n if (startItem === undefined || (startItem !== undefined && this._hierarchyNavigator.getParent(startItem) !== item)) {\r\n firstVisibleIndex = 0;\r\n } else {\r\n firstVisibleIndex = this._hierarchyNavigator.getIndex(startItem);\r\n }\r\n return firstVisibleIndex;\r\n }\r\n\r\n public _initializeScrollbar(parentElement: HTMLElement, touchDiv: HTMLDivElement) { // The intent to be internal\r\n this._scrollbar = this._createScrollbar(parentElement);\r\n this._scrollbar._onscroll.push((e) => this.onScroll());\r\n\r\n if (touchDiv) {\r\n this.scrollbar.initTouch(touchDiv, true);\r\n touchDiv.style.setProperty(\"-ms-touch-action\", \"pinch-zoom\");\r\n }\r\n }\r\n\r\n public getItemsCount(): number {\r\n return this.model ? this._hierarchyNavigator.getLeafCount(this.model) : 0;\r\n }\r\n\r\n public getDepth(): number {\r\n return this.model ? this._hierarchyNavigator.getDepth(this.model) : 0;\r\n }\r\n\r\n private onScroll() {\r\n this.scrollOffset = this._scrollbar.viewMin;\r\n this._owner._onScrollAsync(this);\r\n }\r\n\r\n public get otherDimension(): TablixDimension {\r\n return this._otherDimension;\r\n }\r\n\r\n public get layoutManager(): IDimensionLayoutManager {\r\n return this._layoutManager;\r\n }\r\n\r\n public _createScrollbar(parentElement: HTMLElement): Scrollbar {\r\n // abstract\r\n debug.assertFail(\"PureVirtualMethod: TablixDimension._createScrollbar\");\r\n return null;\r\n }\r\n\r\n private updateScrollPosition(): void {\r\n this._scrollItems = [];\r\n\r\n if (!this.model) {\r\n return;\r\n }\r\n\r\n let firstVisibleScrollIndex: number = this.getIntegerScrollOffset();\r\n let firstVisible: any = this._hierarchyNavigator.getLeafAt(this.model, firstVisibleScrollIndex);\r\n if (!firstVisible) {\r\n return;\r\n }\r\n\r\n this._firstVisibleScrollIndex = firstVisibleScrollIndex;\r\n\r\n do {\r\n this._scrollItems[this._hierarchyNavigator.getLevel(firstVisible)] = firstVisible;\r\n firstVisible = this._hierarchyNavigator.getParent(firstVisible);\r\n } while (firstVisible !== null);\r\n }\r\n }\r\n\r\n export class TablixRowDimension extends TablixDimension {\r\n private _footer: any;\r\n\r\n constructor(tablixControl: TablixControl) {\r\n super(tablixControl);\r\n this._layoutManager = this._tablixLayoutManager.rowLayoutManager;\r\n this._footer = null;\r\n }\r\n\r\n public setFooter(footerHeader: any): void {\r\n this._footer = footerHeader;\r\n this._owner.updateFooterVisibility();\r\n }\r\n\r\n public hasFooter(): boolean {\r\n return (this._footer !== null);\r\n }\r\n\r\n /**\r\n * This method first populates the footer followed by each row and their correlating body cells from top to bottom.\r\n */\r\n public _render() { // The intent to be internal\r\n let firstVisibleRowItem: any = this.getFirstVisibleItem(0);\r\n\r\n if (this.hasFooter()) {\r\n this.addFooterRowHeader(this._footer);\r\n this.addFooterBodyCells(this._footer);\r\n }\r\n\r\n if (firstVisibleRowItem !== undefined) {\r\n this.addNodes(this.model, 0, this.getDepth(), this._hierarchyNavigator.getIndex(firstVisibleRowItem));\r\n }\r\n }\r\n\r\n public _createScrollbar(parentElement: HTMLElement): Scrollbar {\r\n return new VerticalScrollbar(parentElement);\r\n }\r\n\r\n /**\r\n * This function is a recursive call (with its recursive behavior in addNode()) that will navigate\r\n * through the row hierarchy in DFS (Depth First Search) order and continue into a single row\r\n * upto its estimated edge.\r\n */\r\n private addNodes(items: any, rowIndex: number, depth: number, firstVisibleIndex: number) {\r\n let count = this._hierarchyNavigator.getCount(items);\r\n\r\n //for loop explores children of current \"items\"\r\n for (let i = firstVisibleIndex; i < count; i++) {\r\n if (!this._layoutManager.needsToRealize) {\r\n return;\r\n }\r\n\r\n let item = this._hierarchyNavigator.getAt(items, i);\r\n let cell = this.addNode(item, items, rowIndex, depth);\r\n rowIndex += cell.rowSpan; //next node is bumped down according cells vertical span\r\n }\r\n }\r\n\r\n public getFirstVisibleChildLeaf(item: any): any {\r\n let leaf = item;\r\n\r\n while (!this._hierarchyNavigator.isLeaf(leaf)) {\r\n leaf = this.getFirstVisibleChild(leaf);\r\n }\r\n\r\n return leaf;\r\n }\r\n\r\n private bindRowHeader(item: any, cell: ITablixCell) {\r\n this._binder.bindRowHeader(item, cell);\r\n }\r\n\r\n /**\r\n * This method can be thought of as the continuation of addNodes() as it continues the DFS (Depth First Search)\r\n * started from addNodes(). This function also handles ending the recursion with \"_needsToRealize\" being set to \r\n * false.\r\n *\r\n * Once the body cells are reached, populating is done linearly with addBodyCells().\r\n */\r\n private addNode(item: any, items: any, rowIndex: number, depth: number): ITablixCell {\r\n let previousCount: number;\r\n let rowHeaderCell: ITablixCell = this._tablixLayoutManager.getOrCreateRowHeader(item, items, rowIndex, this._hierarchyNavigator.getLevel(item));\r\n let match = this.rowHeaderMatch(item, rowHeaderCell);\r\n\r\n if (!match) {\r\n this._owner._unbindCell(rowHeaderCell);\r\n rowHeaderCell.type = TablixCellType.RowHeader;\r\n rowHeaderCell.item = item;\r\n }\r\n\r\n if (this._hierarchyNavigator.isLeaf(item)) {\r\n rowHeaderCell.colSpan = depth - this._hierarchyNavigator.getLevel(item);\r\n rowHeaderCell.rowSpan = 1;\r\n if (!match)\r\n this.bindRowHeader(item, rowHeaderCell);\r\n\r\n this._tablixLayoutManager.onRowHeaderRealized(item, rowHeaderCell);\r\n this.addBodyCells(item, items, rowIndex);\r\n } else {\r\n previousCount = this._layoutManager.getRealizedItemsCount();\r\n this.addNodes(this._hierarchyNavigator.getChildren(item), rowIndex, depth, this.getFirstVisibleChildIndex(item));\r\n rowHeaderCell.colSpan = 1;\r\n rowHeaderCell.rowSpan = this._layoutManager.getRealizedItemsCount() - previousCount + 1;\r\n if (!match)\r\n this.bindRowHeader(item, rowHeaderCell);\r\n this._tablixLayoutManager.onRowHeaderRealized(item, rowHeaderCell);\r\n } \r\n\r\n return rowHeaderCell;\r\n }\r\n\r\n private rowHeaderMatch(item: any, cell: ITablixCell): boolean {\r\n let previousItem = cell.item;\r\n return cell.type === TablixCellType.RowHeader && previousItem && this._hierarchyNavigator.headerItemEquals(item, previousItem);\r\n }\r\n\r\n private addBodyCells(item: any, items: any, rowIndex: number) {\r\n let firstVisibleColumnIndex: number = this._otherDimension.getIntegerScrollOffset();\r\n let columnCount: number = this._otherDimension._layoutManager.getRealizedItemsCount() - this.getDepth();\r\n let hierarchyNavigator = this._hierarchyNavigator;\r\n let otherModel = this._otherDimension.model;\r\n let layoutManager = this._tablixLayoutManager;\r\n\r\n for (let i = 0; i < columnCount; i++) {\r\n //get column header \"item\" by index to pair up with row header to find corelating body cell\r\n let cellItem: any = hierarchyNavigator.getIntersection(item, hierarchyNavigator.getLeafAt(otherModel, firstVisibleColumnIndex + i));\r\n let cell: ITablixCell = layoutManager.getOrCreateBodyCell(cellItem, item, items, rowIndex, i);\r\n this.bindBodyCell(cellItem, cell);\r\n layoutManager.onBodyCellRealized(cellItem, cell);\r\n }\r\n }\r\n\r\n private bindBodyCell(item: any, cell: ITablixCell): void {\r\n let match = this.bodyCelMatch(item, cell);\r\n if (!match) {\r\n this._owner._unbindCell(cell);\r\n cell.type = TablixCellType.BodyCell;\r\n cell.item = item;\r\n\r\n this._binder.bindBodyCell(item, cell);\r\n }\r\n }\r\n\r\n private addFooterRowHeader(item: any) {\r\n let cell: ITablixCell = this._tablixLayoutManager.getOrCreateFooterRowHeader(item, this.model);\r\n cell.colSpan = this.getDepth();\r\n let match = this.rowHeaderMatch(item, cell);\r\n if (!match) {\r\n this._owner._unbindCell(cell);\r\n cell.type = TablixCellType.RowHeader;\r\n cell.item = item;\r\n this.bindRowHeader(item, cell);\r\n this._tablixLayoutManager.onRowHeaderFooterRealized(item, cell);\r\n }\r\n }\r\n\r\n private addFooterBodyCells(rowItem: any) {\r\n let firstVisibleColumnIndex: number = this._otherDimension.getIntegerScrollOffset();\r\n let columnCount: number = this._otherDimension.layoutManager.getRealizedItemsCount() - this.getDepth();\r\n let layoutManager = this._tablixLayoutManager;\r\n\r\n for (let i = 0; i < columnCount; i++) {\r\n //get column header \"item\" by index to pair up with row header to find corelating body cell\r\n let columnItem: any = this._hierarchyNavigator.getLeafAt(this._otherDimension.model, firstVisibleColumnIndex + i);\r\n //get corelating body cell and bind it\r\n let item: any = this._hierarchyNavigator.getIntersection(rowItem, columnItem);\r\n let cell: ITablixCell = layoutManager.getOrCreateFooterBodyCell(item, i);\r\n this.bindBodyCell(item, cell);\r\n layoutManager.onBodyCellFooterRealized(item, cell);\r\n }\r\n }\r\n\r\n private bodyCelMatch(item: any, cell: ITablixCell): boolean {\r\n let previousItem: any = cell.item;\r\n return cell.type === TablixCellType.BodyCell && previousItem && this._hierarchyNavigator.bodyCellItemEquals(item, previousItem);\r\n }\r\n }\r\n\r\n export class TablixColumnDimension extends TablixDimension {\r\n constructor(tablixControl: TablixControl) {\r\n super(tablixControl);\r\n this._layoutManager = this._tablixLayoutManager.columnLayoutManager;\r\n }\r\n\r\n public _render(): void { // The intent to be internal\r\n let firstVisibleColumnItem: any = this.getFirstVisibleItem(0);\r\n\r\n if (firstVisibleColumnItem !== undefined) {\r\n this.addNodes(this.model, 0, this.getDepth(), this._hierarchyNavigator.getIndex(firstVisibleColumnItem));\r\n }\r\n }\r\n\r\n public _createScrollbar(parentElement: HTMLElement): Scrollbar {\r\n let scrollbar: HorizontalScrollbar = new HorizontalScrollbar(parentElement);\r\n\r\n // Set smallest increment of the scrollbar to 0.2 rows\r\n scrollbar.smallIncrement = 0.2;\r\n\r\n return scrollbar;\r\n }\r\n\r\n private addNodes(items: any, columnIndex: number, depth: number, firstVisibleIndex: number): void {\r\n let count = this._hierarchyNavigator.getCount(items);\r\n for (let i = firstVisibleIndex; i < count; i++) {\r\n if (!this._layoutManager.needsToRealize) {\r\n return;\r\n }\r\n let cell: ITablixCell = this.addNode(this._hierarchyNavigator.getAt(items, i), items, columnIndex, depth);\r\n columnIndex += cell.colSpan;\r\n }\r\n }\r\n\r\n private addNode(item: any, items: any, columnIndex: number, depth: number) {\r\n let cell: ITablixCell = this._tablixLayoutManager.getOrCreateColumnHeader(item, items, this._hierarchyNavigator.getLevel(item), columnIndex);\r\n\r\n let match = this.columnHeaderMatch(item, cell);\r\n\r\n if (!match) {\r\n this._owner._unbindCell(cell);\r\n cell.type = TablixCellType.ColumnHeader;\r\n cell.item = item;\r\n }\r\n\r\n if (this._hierarchyNavigator.isLeaf(item)) {\r\n cell.rowSpan = depth - this._hierarchyNavigator.getLevel(item);\r\n } else {\r\n let previousCount: number = this._layoutManager.getRealizedItemsCount();\r\n this.addNodes(this._hierarchyNavigator.getChildren(item), columnIndex, depth, this.getFirstVisibleChildIndex(item));\r\n cell.rowSpan = 1;\r\n cell.colSpan = this._layoutManager.getRealizedItemsCount() - previousCount + 1;\r\n }\r\n\r\n if (!match)\r\n this._binder.bindColumnHeader(item, cell);\r\n\r\n this._tablixLayoutManager.onColumnHeaderRealized(item, cell);\r\n return cell;\r\n }\r\n\r\n public columnHeaderMatch(item: any, cell: ITablixCell): boolean {\r\n let previousItem: any = cell.item;\r\n return cell.type === TablixCellType.ColumnHeader && previousItem && this._hierarchyNavigator.headerItemEquals(item, previousItem);\r\n }\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../../_references.ts\"/>\r\n\r\nmodule powerbi.visuals.controls {\r\n\r\n /**\r\n * This class represents the touch region of the column headers (this can also apply to footer/total).\r\n * This class is reponsible for interpreting gestures in terms of pixels to changes in column position.\r\n *\r\n * Unlike the table body, this can only scroll in one direction. \r\n */\r\n export class ColumnTouchDelegate implements TouchUtils.ITouchHandler, TouchUtils.IPixelToItem {\r\n\r\n /** \r\n * Used to termine if the touch event is within bounds.\r\n */\r\n private dim: TouchUtils.Rectangle;\r\n /**\r\n * Average pixel width of columns in table.\r\n */\r\n private averageSize: number;\r\n /**\r\n * Used for 'firing' a scroll event following a received gesture.\r\n */\r\n private tablixControl: TablixControl;\r\n /**\r\n * Stores the event handler of TablixControl for scroll events.\r\n */\r\n private handlers: any;\r\n\r\n /**\r\n * @constructor \r\n * @param region Location and area of the touch region in respect to its HTML element.\r\n */\r\n constructor(region: TouchUtils.Rectangle) {\r\n this.dim = region;\r\n this.averageSize = 1; //default\r\n this.handlers = null;\r\n this.tablixControl = null;\r\n }\r\n\r\n get dimension(): TouchUtils.Rectangle {\r\n return this.dim;\r\n }\r\n\r\n /** \r\n * Sets the amount of columns to be shifted per delta in pixels.\r\n *\r\n * @param xRatio Column to pixel ratio (# columns / # pixels).\r\n */\r\n public setScrollDensity(xRatio: number): void {\r\n this.averageSize = xRatio;\r\n }\r\n\r\n /**\r\n * Resize element.\r\n * \r\n * @param x X location from upper left of listened HTML element.\r\n * @param y Y location from upper left of listened HTML element.\r\n * @param width Width of area to listen for events.\r\n * @param height Height of area to listen for events.\r\n */\r\n public resize(x: number, y: number, width: number, height: number) {\r\n this.dim.x = x;\r\n this.dim.y = y;\r\n this.dim.width = width;\r\n this.dim.height = height;\r\n }\r\n\r\n /**\r\n * @see IPixelToItem.\r\n */\r\n public getPixelToItem(x: number, y: number, dx: number, dy: number, down: boolean): TouchUtils.TouchEvent {\r\n return new TouchUtils.TouchEvent(x * this.averageSize, 0, down, -dx * this.averageSize, 0);\r\n }\r\n\r\n /**\r\n * Fires event to Tablix Control to scroll with the event passed from the TouchManager.\r\n *\r\n * @param e Event recieved from touch manager.\r\n */\r\n public touchEvent(e: TouchUtils.TouchEvent): void {\r\n let args: any[] = [];\r\n\r\n args[0] = this.tablixControl;\r\n args[1] = e.dx;\r\n args[2] = e.dy;\r\n\r\n if (this.handlers) {\r\n fire([this.handlers], args);\r\n }\r\n }\r\n\r\n /**\r\n * Asigns handler for scrolling when scroll event is fired.\r\n *\r\n * @param tablixObj TablixControl that's handling the fired event.\r\n * @param handlerCall The call to be made (EXAMPLE: handlerCall = object.method;).\r\n */\r\n public setHandler(tablixObj: TablixControl, handlerCall: (args: any[]) => void): void {\r\n this.handlers = handlerCall;\r\n this.tablixControl = tablixObj;\r\n }\r\n }\r\n\r\n /**\r\n * This class represents the touch region of the row headers (left or right side aligned).\r\n * This class is reponsible for interpreting gestures in terms of pixels to changes in row position.\r\n *\r\n * Unlike the table body, this can only scroll in one direction. \r\n */\r\n export class RowTouchDelegate implements TouchUtils.ITouchHandler, TouchUtils.IPixelToItem {\r\n /**\r\n * Used to termine if the touch event is within bounds.\r\n */\r\n private dim: TouchUtils.Rectangle;\r\n \r\n /**\r\n * Average pixel height of rows in table.\r\n */\r\n private averageSize: number;\r\n \r\n /**\r\n * Used for 'firing' a scroll event following a recieved gesture.\r\n */\r\n private tablixControl: TablixControl;\r\n \r\n /**\r\n * Stores the event handler of TablixControl for scroll events.\r\n */\r\n private handlers: any;\r\n\r\n /**\r\n * @constructor\r\n * @param region Location and area of the touch region in respect to its HTML element.\r\n */\r\n constructor(region: TouchUtils.Rectangle) {\r\n this.dim = region;\r\n this.averageSize = 30; //default\r\n this.handlers = null;\r\n this.tablixControl = null;\r\n }\r\n\r\n get dimension(): TouchUtils.Rectangle {\r\n return this.dim;\r\n }\r\n\r\n /**\r\n * Sets the amount of rows to be shifted per delta in pixels.\r\n *\r\n * @param yRatio Row to pixel ratio (# rows / # pixels).\r\n */\r\n public setScrollDensity(yRatio: number): void {\r\n this.averageSize = yRatio;\r\n }\r\n\r\n /**\r\n * Resize element.\r\n * @param x X location from upper left of listened HTML element.\r\n * @param y Y location from upper left of listened HTML element.\r\n * @param width Width of area to listen for events.\r\n * @param height Height of area to listen for events.\r\n */\r\n public resize(x: number, y: number, width: number, height: number) {\r\n this.dim.x = x;\r\n this.dim.y = y;\r\n this.dim.width = width;\r\n this.dim.height = height;\r\n }\r\n\r\n /**\r\n * @see: IPixelToItem\r\n */\r\n public getPixelToItem(x: number, y: number, dx: number, dy: number, down: boolean): TouchUtils.TouchEvent {\r\n let event: TouchUtils.TouchEvent = new TouchUtils.TouchEvent(0, y * this.averageSize, down,\r\n 0, -dy * this.averageSize);\r\n return event;\r\n }\r\n\r\n /**\r\n * Fires event to Tablix Control to scroll with the event passed from the TouchManager.\r\n *\r\n * @param e Event recieved from touch manager.\r\n */\r\n public touchEvent(e: TouchUtils.TouchEvent): void {\r\n let args: any[] = [];\r\n\r\n args[0] = this.tablixControl;\r\n args[1] = e.dx;\r\n args[2] = e.dy;\r\n\r\n if (this.handlers) {\r\n fire([this.handlers], args);\r\n }\r\n }\r\n\r\n /**\r\n * Asigns handler for scrolling when scroll event is fired.\r\n *\r\n * @param tablixObj TablixControl that's handling the fired event.\r\n * @param handlerCall The call to be made (EXAMPLE: handlerCall = object.method;).\r\n */\r\n public setHandler(tablixObj: TablixControl, handlerCall: (args: any[]) => void): void {\r\n this.handlers = handlerCall;\r\n this.tablixControl = tablixObj;\r\n }\r\n }\r\n\r\n /**\r\n * This class represents the touch region covering the body of the table.\r\n * This class is reponsible for interpreting gestures in terms of pixels to\r\n * changes in row and column position.\r\n */\r\n export class BodyTouchDelegate implements TouchUtils.ITouchHandler, TouchUtils.IPixelToItem {\r\n private static DefaultAverageSizeX = 30;\r\n private static DefaultAverageSizeY = 30;\r\n \r\n /**\r\n * Used to termine if the touch event is within bounds.\r\n */\r\n private dim: TouchUtils.Rectangle;\r\n \r\n /**\r\n * Average pixel width of columns in table.\r\n */\r\n private averageSizeX: number;\r\n \r\n /**\r\n * Average pixel height of rows in table.\r\n */\r\n private averageSizeY: number;\r\n \r\n /**\r\n * Used for 'firing' a scroll event following a recieved gesture.\r\n */\r\n private tablixControl: TablixControl;\r\n \r\n /**\r\n * Stores the event handler of TablixControl for scroll events.\r\n */\r\n private handlers: any;\r\n\r\n /**\r\n * @constructor\r\n * @param region Location and area of the touch region in respect to its HTML element.\r\n */\r\n constructor(region: TouchUtils.Rectangle) {\r\n this.dim = region;\r\n this.averageSizeX = BodyTouchDelegate.DefaultAverageSizeX;\r\n this.averageSizeY = BodyTouchDelegate.DefaultAverageSizeY;\r\n this.handlers = null;\r\n this.tablixControl = null;\r\n }\r\n\r\n /**\r\n * Returns dimension.\r\n * \r\n * @return The dimentions of the region this delegate listens to.\r\n */\r\n get dimension(): TouchUtils.Rectangle {\r\n return this.dim;\r\n }\r\n\r\n /**\r\n * Sets the amount of rows and columns to be shifted per delta in pixels.\r\n *\r\n * @param xRatio Column to pixel ratio (# columns / # pixels)\r\n * @param yRatio Row to pixel ratio (# rows / # pixels)\r\n */\r\n public setScrollDensity(xRatio: number, yRatio: number): void {\r\n this.averageSizeX = xRatio;\r\n this.averageSizeY = yRatio;\r\n }\r\n\r\n /**\r\n * Resize element.\r\n * \r\n * @param x X location from upper left of listened HTML element.\r\n * @param y Y location from upper left of listened HTML element.\r\n * @param width Width of area to listen for events.\r\n * @param height Height of area to listen for events.\r\n */\r\n public resize(x: number, y: number, width: number, height: number) {\r\n let dimension = this.dim;\r\n\r\n dimension.x = x;\r\n dimension.y = y;\r\n dimension.width = width;\r\n dimension.height = height;\r\n }\r\n\r\n /**\r\n * @see: IPixelToItem.\r\n */\r\n public getPixelToItem(x: number, y: number, dx: number, dy: number, down: boolean): TouchUtils.TouchEvent {\r\n return new TouchUtils.TouchEvent(x * this.averageSizeX, y * this.averageSizeY, down, -dx * this.averageSizeX, -dy * this.averageSizeY);\r\n }\r\n\r\n /**\r\n * Fires event to Tablix Control to scroll with the event passed from the TouchManager.\r\n *\r\n * @param e Event recieved from touch manager.\r\n */\r\n public touchEvent(e: TouchUtils.TouchEvent): void {\r\n let args: any[] = [this.tablixControl, e.dx, e.dy];\r\n\r\n if (this.handlers) {\r\n fire([this.handlers], args);\r\n }\r\n }\r\n\r\n /**\r\n * Asigns handler for scrolling when scroll event is fired.\r\n *\r\n * @param tablixObj TablixControl that's handling the fired event.\r\n * @param handlerCall The call to be made (EXAMPLE: handlerCall = object.method;).\r\n */\r\n public setHandler(tablixObj: TablixControl, handlerCall: (args: any[]) => void): void {\r\n this.handlers = handlerCall;\r\n this.tablixControl = tablixObj;\r\n }\r\n }\r\n}\r\n","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../../_references.ts\"/>\r\n\r\nmodule powerbi.visuals.controls.TouchUtils {\r\n\r\n export class Point {\r\n public x: number;\r\n public y: number;\r\n\r\n constructor(x?: number, y?: number) {\r\n this.x = x || 0;\r\n this.y = y || 0;\r\n }\r\n\r\n public offset(offsetX: number, offsetY: number) {\r\n this.x += offsetX;\r\n this.y += offsetY;\r\n }\r\n }\r\n\r\n export class Rectangle extends Point {\r\n public width: number;\r\n public height: number;\r\n\r\n constructor(x?: number, y?: number, width?: number, height?: number) {\r\n super(x, y);\r\n this.width = width || 0;\r\n this.height = height || 0;\r\n }\r\n\r\n get point(): Point {\r\n return new Point(this.x, this.y);\r\n }\r\n\r\n public contains(p: Point): boolean {\r\n return Rectangle.contains(this, p);\r\n }\r\n\r\n public static contains(rect: Rectangle, p: Point): boolean {\r\n if (p && !Rectangle.isEmpty(rect)) {\r\n return rect.x <= p.x && p.x < rect.x + rect.width && rect.y <= p.y && p.y < rect.y + rect.height;\r\n }\r\n return false;\r\n }\r\n\r\n public static isEmpty(rect: Rectangle): boolean {\r\n return !(rect !== undefined && rect.width >= 0 && rect.height >= 0);\r\n }\r\n }\r\n\r\n export const enum SwipeDirection {\r\n /**\r\n * Swipe gesture moves along the y-axis at an angle within an established threshold.\r\n */\r\n Vertical,\r\n \r\n /**\r\n * Swipe gesture moves along the x-axis at an angle within an established threshold.\r\n */\r\n Horizontal,\r\n \r\n /**\r\n * Swipe gesture does not stay within the thresholds of either x or y-axis.\r\n */\r\n FreeForm\r\n }\r\n\r\n export enum MouseButton {\r\n NoClick = 0,\r\n LeftClick = 1,\r\n RightClick = 2,\r\n CenterClick = 3\r\n }\r\n\r\n /** \r\n * Interface serves as a way to convert pixel point to any needed unit of\r\n * positioning over two axises such as row/column positioning.\r\n */\r\n export interface IPixelToItem {\r\n\r\n getPixelToItem(x: number, y: number, dx: number, dy: number, down: boolean): TouchEvent;\r\n }\r\n\r\n /**\r\n * Interface for listening to a simple touch event that's abstracted away\r\n * from any platform specific traits.\r\n */\r\n export interface ITouchHandler {\r\n touchEvent(e: TouchEvent): void;\r\n }\r\n\r\n /** \r\n * A simple touch event class that's abstracted away from any platform specific traits.\r\n */\r\n export class TouchEvent {\r\n /* tslint:disable:no-underscore-prefix-for-variables*/\r\n /**\r\n * X-axis (not neccessarily in pixels (see IPixelToItem)).\r\n */\r\n private _x: number;\r\n \r\n /**\r\n * Y-axis (not neccessarily in pixels (see IPixelToItem)).\r\n */\r\n private _y: number;\r\n \r\n /**\r\n * Delta of x-axis (not neccessarily in pixels (see IPixelToItem)).\r\n */\r\n private _dx: number;\r\n \r\n /**\r\n * Delta of y-axis (not neccessarily in pixels (see IPixelToItem)).\r\n */\r\n private _dy: number;\r\n /* tslint:enable:no-underscore-prefix-for-variables*/\r\n /**\r\n * Determines if the mouse button is pressed.\r\n */\r\n private isMouseButtonDown: boolean;\r\n\r\n /**\r\n * @constructor\r\n * @param x X Location of mouse.\r\n * @param y Y Location of mouse.\r\n * @param isMouseDown Indicates if the mouse button is held down or a finger press on screen.\r\n * @param dx (optional) The change in x of the gesture.\r\n * @param dy (optional) The change in y of the gesture.\r\n */\r\n constructor(x: number, y: number, isMouseDown: boolean, dx?: number, dy?: number) {\r\n this._x = x;\r\n this._y = y;\r\n this.isMouseButtonDown = isMouseDown;\r\n this._dx = dx || 0;\r\n this._dy = dy || 0;\r\n }\r\n\r\n public get x(): number {\r\n return this._x;\r\n }\r\n\r\n public get y(): number {\r\n return this._y;\r\n }\r\n\r\n public get dx(): number {\r\n return this._dx;\r\n }\r\n\r\n public get dy(): number {\r\n return this._dy;\r\n }\r\n\r\n /**\r\n * Returns a boolean indicating if the mouse button is held down.\r\n * \r\n * @return: True if the the mouse button is held down,\r\n * otherwise false.\r\n */\r\n public get isMouseDown(): boolean {\r\n return this.isMouseButtonDown;\r\n }\r\n }\r\n\r\n /**\r\n * This interface defines the datamembers stored for each touch region.\r\n */\r\n export interface ITouchHandlerSet {\r\n handler: ITouchHandler;\r\n region: Rectangle;\r\n\r\n lastPoint: TouchEvent;\r\n converter: IPixelToItem;\r\n }\r\n\r\n /** \r\n * This class \"listens\" to the TouchEventInterpreter to recieve touch events and sends it to all \r\n * \"Touch Delegates\" with TouchRegions that contain the mouse event. Prior to sending off the\r\n * event, its position is put in respect to the delegate's TouchRegion and converted to the appropriate\r\n * unit (see IPixelToItem).\r\n */\r\n export class TouchManager {\r\n /**\r\n * List of touch regions and their correlating data memebers.\r\n */\r\n private touchList: ITouchHandlerSet[];\r\n \r\n /**\r\n * Boolean to enable thresholds for fixing to an axis when scrolling.\r\n */\r\n private scrollThreshold: boolean;\r\n \r\n /**\r\n * Boolean to enable locking to an axis when gesture is fixed to an axis.\r\n */\r\n private lockThreshold: boolean;\r\n \r\n /**\r\n * The current direction of the swipe.\r\n */\r\n private swipeDirection: SwipeDirection;\r\n \r\n /**\r\n * The count of consecutive events match the current swipe direction.\r\n */\r\n private matchingDirectionCount: number;\r\n \r\n /**\r\n * The last recieved mouse event.\r\n */\r\n private lastTouchEvent: TouchEvent;\r\n\r\n /**\r\n * Default constructor.\r\n * \r\n * The default behavior is to enable thresholds and lock to axis.\r\n */\r\n constructor() {\r\n this.touchList = [];\r\n this.swipeDirection = SwipeDirection.FreeForm;\r\n this.matchingDirectionCount = 0;\r\n\r\n this.lockThreshold = true;\r\n this.scrollThreshold = true;\r\n this.lastTouchEvent = new TouchEvent(0, 0, false);\r\n }\r\n\r\n public get lastEvent(): TouchEvent {\r\n return this.lastTouchEvent;\r\n }\r\n\r\n /**\r\n * @param region Rectangle indicating the locations of the touch region.\r\n * @param handler Handler for recieved touch events.\r\n * @param converter Converts from pixels to the wanted item of measure (rows, columns, etc).\r\n * \r\n * EXAMPLE: dx -> from # of pixels to the right to # of columns moved to the right.\r\n */\r\n public addTouchRegion(region: Rectangle, handler: ITouchHandler, converter: IPixelToItem): void {\r\n let item: ITouchHandlerSet = <ITouchHandlerSet> {\r\n lastPoint: new TouchEvent(0, 0, false),\r\n handler: handler,\r\n region: region,\r\n converter: converter\r\n };\r\n\r\n this.touchList = this.touchList.concat([item]);\r\n }\r\n\r\n /**\r\n * Sends a mouse up event to all regions with their last event as a mouse down event.\r\n */\r\n public upAllTouches(): void {\r\n let eventPoint: TouchEvent;\r\n let length: number;\r\n\r\n length = this.touchList.length;\r\n for (let i = 0; i < length; i++) {\r\n if (this.touchList[i].lastPoint.isMouseDown) {\r\n eventPoint = this.touchList[i].converter.getPixelToItem(this.touchList[i].lastPoint.x,\r\n this.touchList[i].lastPoint.y,\r\n 0, 0, false);\r\n this.touchList[i].handler.touchEvent(eventPoint);\r\n }\r\n\r\n this.touchList[i].lastPoint = new TouchEvent(this.touchList[i].lastPoint.x,\r\n this.touchList[i].lastPoint.y, false);\r\n }\r\n\r\n this.lastTouchEvent = new TouchEvent(0, 0, false);\r\n }\r\n\r\n public touchEvent(e: TouchEvent): void {\r\n let list: ITouchHandlerSet[];\r\n let length: number;\r\n\r\n let x: number = 0;\r\n let y: number = 0;\r\n let dx: number = 0;\r\n let dy: number = 0;\r\n let angle: number = 0;\r\n\r\n let eventPoint: TouchEvent = null;\r\n\r\n //assume there are already regions in the middle of a drag event and get those regions\r\n list = this._getActive();\r\n\r\n //if this is the start of a mouse drag event, repopulate the list with touched regions\r\n if (!this.lastTouchEvent.isMouseDown && e.isMouseDown) {\r\n list = this._findRegions(e);\r\n }\r\n\r\n //determine the delta values and update last event (delta ignored on first mouse down event)\r\n dx = this.lastTouchEvent.x - e.x;\r\n dy = this.lastTouchEvent.y - e.y;\r\n this.lastTouchEvent = new TouchEvent(e.x, e.y, e.isMouseDown, dx, dy);\r\n\r\n //go through the list\r\n length = list.length;\r\n for (let i = 0; i < length; i++) {\r\n x = e.x - list[i].region.point.x;\r\n y = e.y - list[i].region.point.y;\r\n\r\n //is this in the middle of a drag?\r\n if (list[i].lastPoint.isMouseDown && e.isMouseDown) {\r\n dx = x - list[i].lastPoint.x;\r\n dy = y - list[i].lastPoint.y;\r\n\r\n //calculate the absolute angle from the horizontal axis\r\n angle = Math.abs(180 / Math.PI * Math.atan(dy / dx));\r\n\r\n if (this.scrollThreshold) {\r\n //is the gesture already locked? (6 prior events within the threshold)\r\n if (this.lockThreshold && (this.matchingDirectionCount > 5)) {\r\n if (this.swipeDirection === SwipeDirection.Horizontal) {\r\n dy = 0;\r\n }\r\n else if (this.swipeDirection === SwipeDirection.Vertical) {\r\n dx = 0;\r\n }\r\n }\r\n else {\r\n //is it within the horizontal threshold?\r\n if (angle < 20) {\r\n dy = 0;\r\n if (this.swipeDirection === SwipeDirection.Horizontal) {\r\n this.matchingDirectionCount++;\r\n }\r\n else {\r\n this.matchingDirectionCount = 1;\r\n this.swipeDirection = SwipeDirection.Horizontal;\r\n }\r\n }\r\n else {\r\n //calculate the absolute angle from the vertical axis\r\n angle = Math.abs(180 / Math.PI * Math.atan(dx / dy));\r\n\r\n //is it within the horizontal threshold?\r\n if (angle < 20) {\r\n dx = 0;\r\n\r\n if (this.swipeDirection === SwipeDirection.Vertical) {\r\n this.matchingDirectionCount++;\r\n }\r\n else {\r\n this.matchingDirectionCount = 1;\r\n this.swipeDirection = SwipeDirection.Vertical;\r\n }\r\n }\r\n else {\r\n if (this.swipeDirection === SwipeDirection.FreeForm) {\r\n this.matchingDirectionCount++;\r\n }\r\n else {\r\n this.swipeDirection = SwipeDirection.FreeForm;\r\n this.matchingDirectionCount = 1;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n else {\r\n dx = 0;\r\n dy = 0;\r\n this.swipeDirection = SwipeDirection.FreeForm;\r\n this.matchingDirectionCount = 0;\r\n }\r\n\r\n list[i].lastPoint = new TouchEvent(x, y, e.isMouseDown, dx, dy);\r\n\r\n eventPoint = list[i].converter.getPixelToItem(x, y, dx, dy, e.isMouseDown);\r\n list[i].handler.touchEvent(eventPoint);\r\n }\r\n }\r\n\r\n /**\r\n * @param e Position of event used to find touched regions\r\n * @return Array of regions that contain the event point.\r\n */\r\n private _findRegions(e: TouchEvent): ITouchHandlerSet[] {\r\n let list: ITouchHandlerSet[] = [];\r\n let length: number;\r\n\r\n length = this.touchList.length;\r\n for (let i = 0; i < length; i++) {\r\n if (this.touchList[i].region.contains(new Point(e.x, e.y))) {\r\n list = list.concat([this.touchList[i]]);\r\n }\r\n }\r\n\r\n return list;\r\n }\r\n\r\n /**\r\n * @return Array of regions that contain a mouse down event. (see ITouchHandlerSet.lastPoint).\r\n */\r\n private _getActive(): ITouchHandlerSet[] {\r\n let list: ITouchHandlerSet[] = [];\r\n let length: number;\r\n\r\n length = this.touchList.length;\r\n for (let i = 0; i < length; i++) {\r\n if (this.touchList[i].lastPoint.isMouseDown) {\r\n list = list.concat([this.touchList[i]]);\r\n }\r\n }\r\n\r\n return list;\r\n }\r\n }\r\n\r\n /**\r\n * This class is responsible for establishing connections to handle touch events\r\n * and to interpret those events so they're compatible with the touch abstractions.\r\n *\r\n * Touch events with platform specific handles should be done here.\r\n */\r\n export class TouchEventInterpreter {\r\n /**\r\n * HTML element that touch events are drawn from.\r\n */\r\n private touchPanel: HTMLElement;\r\n \r\n /**\r\n * Boolean enabling mouse drag.\r\n */\r\n private allowMouseDrag: boolean;\r\n \r\n /**\r\n * Touch events are interpreted and passed on this manager.\r\n */\r\n private manager: TouchManager;\r\n \r\n /**\r\n * @see TablixLayoutManager. \r\n */\r\n private scale: number;\r\n \r\n /**\r\n * Used for mouse location when a secondary div is used along side the primary with this one being the primary.\r\n */\r\n private touchReferencePoint: HTMLElement;\r\n \r\n /** \r\n * Rectangle containing the targeted Div.\r\n */\r\n private rect: ClientRect;\r\n\r\n private documentMouseMoveWrapper: any;\r\n private documentMouseUpWrapper: any;\r\n\r\n constructor(manager: TouchManager) {\r\n this.manager = manager;\r\n this.allowMouseDrag = true;\r\n this.touchPanel = null;\r\n this.scale = 1;\r\n this.documentMouseMoveWrapper = null;\r\n this.documentMouseUpWrapper = null;\r\n }\r\n\r\n public initTouch(panel: HTMLElement, touchReferencePoint?: HTMLElement, allowMouseDrag?: boolean): void {\r\n panel.style.setProperty(\"-ms-touch-action\", \"pinch-zoom\");\r\n\r\n this.touchReferencePoint = touchReferencePoint;\r\n\r\n this.touchPanel = panel;\r\n this.allowMouseDrag = allowMouseDrag === undefined ? true : allowMouseDrag;\r\n if (\"ontouchmove\" in panel) {\r\n panel.addEventListener(\"touchstart\", e => this.onTouchStart(e));\r\n panel.addEventListener(\"touchend\", e => this.onTouchEnd(e));\r\n }\r\n else\r\n {\r\n panel.addEventListener(\"mousedown\", e => this.onTouchMouseDown(<MouseEvent>e));\r\n panel.addEventListener(\"mouseup\", e => this.onTouchMouseUp(<MouseEvent>e));\r\n }\r\n }\r\n\r\n private getXYByClient(event: MouseEvent): Point {\r\n let rect: any = this.rect;\r\n let x: number = rect.left;\r\n let y: number = rect.top;\r\n\r\n // Fix for Safari\r\n if (window[\"scrollX\"] !== undefined) {\r\n x += window[\"scrollX\"];\r\n y += window[\"scrollY\"];\r\n }\r\n\r\n let point: Point = new Point(0, 0);\r\n point.offset(event.pageX - x, event.pageY - y);\r\n\r\n return point;\r\n }\r\n\r\n public onTouchStart(e: any): void {\r\n if (e.touches.length === 1) {\r\n e.cancelBubble = true;\r\n this.onTouchMouseDown(e.touches[0]);\r\n }\r\n }\r\n\r\n public onTouchMove(e: any): void {\r\n if (e.touches.length === 1) {\r\n if (e.preventDefault) {\r\n e.preventDefault();\r\n }\r\n\r\n this.onTouchMouseMove(e.touches[0]);\r\n }\r\n }\r\n\r\n public onTouchEnd(e: any): void {\r\n this.onTouchMouseUp(e.touches.length === 1 ? e.touches[0] : e, true);\r\n }\r\n\r\n public onTouchMouseDown(e: MouseEvent): void {\r\n this.scale = HTMLElementUtils.getAccumulatedScale(this.touchPanel);\r\n\r\n //any prior touch scrolling that produced a selection outside Tablix will prevent the next touch scroll (1262519)\r\n document.getSelection().removeAllRanges();\r\n\r\n this.rect = (this.touchReferencePoint ? this.touchReferencePoint : this.touchPanel).getBoundingClientRect();\r\n\r\n if (\"ontouchmove\" in this.touchPanel) {\r\n this.documentMouseMoveWrapper = e => this.onTouchMove(e);\r\n document.addEventListener(\"touchmove\", this.documentMouseMoveWrapper);\r\n this.documentMouseUpWrapper = e => this.onTouchEnd(e);\r\n document.addEventListener(\"touchend\", this.documentMouseUpWrapper);\r\n }\r\n else {\r\n this.documentMouseMoveWrapper = e => this.onTouchMouseMove(e);\r\n document.addEventListener(\"mousemove\", this.documentMouseMoveWrapper);\r\n this.documentMouseUpWrapper = e => this.onTouchMouseUp(e);\r\n document.addEventListener(\"mouseup\", this.documentMouseUpWrapper);\r\n }\r\n\r\n if (\"setCapture\" in this.touchPanel) {\r\n this.touchPanel.setCapture();\r\n }\r\n }\r\n \r\n public onTouchMouseMove(e: MouseEvent): void {\r\n let event: TouchEvent;\r\n let point: Point;\r\n\r\n let validMouseDragEvent: boolean = (this.rect !== null) && (e.which !== MouseButton.NoClick);\r\n\r\n // Ignore events that are not part of a drag event\r\n if (!validMouseDragEvent)\r\n return;\r\n\r\n point = this.getXYByClient(e);\r\n event = new TouchEvent(point.x / this.scale, point.y / this.scale, validMouseDragEvent);\r\n\r\n this.manager.touchEvent(event);\r\n\r\n if (e.preventDefault)\r\n e.preventDefault();\r\n else if (\"returnValue\" in e) //some browsers missing preventDefault() may still use this instead\r\n e[\"returnValue\"] = false;\r\n }\r\n\r\n public onTouchMouseUp(e: MouseEvent, bubble?: boolean): void {\r\n this.rect = null;\r\n\r\n this.manager.upAllTouches();\r\n\r\n if (\"releaseCapture\" in this.touchPanel) {\r\n this.touchPanel.releaseCapture();\r\n }\r\n\r\n if (this.documentMouseMoveWrapper === null)\r\n return;\r\n\r\n if (\"ontouchmove\" in this.touchPanel) {\r\n document.removeEventListener(\"touchmove\", this.documentMouseMoveWrapper);\r\n document.removeEventListener(\"touchend\", this.documentMouseUpWrapper);\r\n }\r\n else {\r\n document.removeEventListener(\"mousemove\", this.documentMouseMoveWrapper);\r\n document.removeEventListener(\"mouseup\", this.documentMouseUpWrapper);\r\n }\r\n\r\n this.documentMouseMoveWrapper = null;\r\n this.documentMouseUpWrapper = null;\r\n }\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../../_references.ts\"/>\r\n\r\nmodule powerbi.visuals.controls {\r\n\r\n export enum TablixType {\r\n Matrix,\r\n Table\r\n }\r\n\r\n export interface TablixFormattingPropertiesTable {\r\n general?: GeneralFormattingPropertiesTable;\r\n columns?: ColumnHeaderFormattingProperties;\r\n header?: BasicFormattingProperties;\r\n rows?: RowHeaderBasicFormattingProperties;\r\n values?: BasicFormattingProperties;\r\n totals?: TotalsBasicFormattingProperties;\r\n }\r\n\r\n export interface TablixFormattingPropertiesMatrix {\r\n general?: GeneralFormattingPropertiesMatrix;\r\n columns?: ColumnHeaderFormattingProperties;\r\n header?: BasicFormattingProperties;\r\n rows?: RowHeaderBasicFormattingProperties;\r\n values?: BasicFormattingProperties;\r\n totals?: TotalsBasicFormattingProperties;\r\n }\r\n\r\n export interface BasicFormattingProperties {\r\n fontColor: string;\r\n backgroundColor: string;\r\n outline: string;\r\n }\r\n\r\n export interface RowHeaderBasicFormattingProperties extends BasicFormattingProperties {\r\n showSeparators: boolean;\r\n }\r\n\r\n export interface TotalsBasicFormattingProperties extends BasicFormattingProperties {\r\n leadingSpace: number;\r\n }\r\n\r\n export interface ColumnHeaderFormattingProperties {\r\n showSeparators: boolean;\r\n separatorColor: string;\r\n separatorWeight: number;\r\n }\r\n\r\n export interface GeneralFormattingPropertiesTable {\r\n /** Property that drives whether columns should use automatically calculated (based on content) sizes for width or use persisted sizes.\r\n Default is true i.e. automatically calculate width based on column content */\r\n autoSizeColumnWidth: boolean;\r\n textSize: number;\r\n totals?: boolean;\r\n outlineColor?: string;\r\n outlineWeight?: number;\r\n }\r\n\r\n export interface GeneralFormattingPropertiesMatrix {\r\n /** Property that drives whether columns should use automatically calculated (based on content) sizes for width or use persisted sizes.\r\n Default is true i.e. automatically calculate width based on column content */\r\n autoSizeColumnWidth: boolean;\r\n textSize: number;\r\n rowSubtotals?: boolean;\r\n columnSubtotals?: boolean;\r\n outlineColor?: string;\r\n outlineWeight?: number;\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../../_references.ts\"/>\r\n\r\nmodule powerbi.visuals.controls {\r\n export const AutoSizeColumnWidthDefault: boolean = true;\r\n\r\n export interface TablixColumnWidthObject {\r\n queryName: string;\r\n width: number;\r\n }\r\n\r\n export class TablixColumnWidthManager {\r\n public static columnWidthProp: DataViewObjectPropertyIdentifier = { objectName: 'general', propertyName: 'columnWidth' };\r\n public static autoSizeWidthProp: DataViewObjectPropertyIdentifier = { objectName: 'general', propertyName: 'autoSizeColumnWidth' };\r\n\r\n private columnWidths: number[];\r\n private tablixColumnWidthsObject: controls.TablixColumnWidthObject[];\r\n private previousAutoColumnSizePropertyValue: boolean;\r\n private tablixQueryNames: string[];\r\n private dataView: DataView;\r\n private visualObjectInstancesToPersist: VisualObjectInstancesToPersist;\r\n private matrixLeafNodes: MatrixVisualNode[];\r\n // TODO: Can we remove isMatrix and suppresNotification flag?\r\n private isMatrix: boolean;\r\n private suppressNotification: boolean;\r\n private currentPersistedWidths: number[];\r\n private callHostPersistProperties: boolean;\r\n private dataViewUpdated: boolean;\r\n private columnResizeCallback: ColumnWidthCallbackType;\r\n\r\n constructor(dataView: DataView, isMatrix: boolean, matrixLeafNodes?: MatrixVisualNode[]) {\r\n this.columnWidths = [];\r\n this.tablixColumnWidthsObject = [];\r\n this.tablixQueryNames = [];\r\n this.dataView = dataView;\r\n this.matrixLeafNodes = matrixLeafNodes;\r\n this.isMatrix = isMatrix;\r\n this.suppressNotification = false;\r\n this.currentPersistedWidths = [];\r\n this.visualObjectInstancesToPersist = [];\r\n this.callHostPersistProperties = false;\r\n this.dataViewUpdated = false;\r\n }\r\n\r\n public getColumnWidths(): number[] {\r\n return this.columnWidths;\r\n }\r\n\r\n public getTablixColumnWidthsObject(): controls.TablixColumnWidthObject[] {\r\n return this.tablixColumnWidthsObject;\r\n }\r\n\r\n public updateDataView(dataView: DataView, matrixLeafNodes?: MatrixVisualNode[]): void {\r\n this.dataView = dataView;\r\n this.matrixLeafNodes = matrixLeafNodes;\r\n this.dataViewUpdated = true;\r\n }\r\n\r\n public getVisualObjectInstancesToPersist(): VisualObjectInstancesToPersist {\r\n return this.visualObjectInstancesToPersist;\r\n }\r\n\r\n public persistColumnWidthsOnHost(): boolean {\r\n return this.callHostPersistProperties;\r\n }\r\n\r\n public getTablixQueryNames(): string[]{\r\n return this.tablixQueryNames;\r\n }\r\n\r\n public get suppressOnDataChangedNotification(): boolean {\r\n return this.suppressNotification;\r\n }\r\n\r\n public set suppressOnDataChangedNotification(notify: boolean) {\r\n this.suppressNotification = notify;\r\n }\r\n\r\n public get columnWidthResizeCallback(): ColumnWidthCallbackType {\r\n return this.columnResizeCallback;\r\n }\r\n\r\n public set columnWidthResizeCallback(colWidthResizeCallback: ColumnWidthCallbackType) {\r\n this.columnResizeCallback = colWidthResizeCallback;\r\n }\r\n\r\n public getPersistedCellWidth(index: number): number {\r\n let widths = this.getColumnWidths();\r\n if (!_.isEmpty(widths) && index < widths.length)\r\n return widths[index];\r\n }\r\n\r\n public deserializeTablixColumnWidths(): void {\r\n let columnMetaData = this.dataView && this.dataView.metadata && this.dataView.metadata.columns;\r\n if (columnMetaData) {\r\n let autoSize = this.shouldAutoSizeColumnWidth();\r\n if (this.previousAutoColumnSizePropertyValue !== undefined && !this.previousAutoColumnSizePropertyValue && this.previousAutoColumnSizePropertyValue !== autoSize) {\r\n // Auto-Size false to true. In this case blow away any saved widths and revert back to default of calculating column sizes\r\n this.columnWidths = [];\r\n this.removePersistedVisualObjectInstances();\r\n this.tablixColumnWidthsObject = [];\r\n this.callHostPersistProperties = true;\r\n }\r\n else {\r\n this.deserializeColumnWidths(columnMetaData);\r\n this.callHostPersistProperties = false;\r\n }\r\n\r\n this.previousAutoColumnSizePropertyValue = autoSize;\r\n }\r\n }\r\n\r\n public columnWidthChanged(index: number, width: number): void {\r\n this.populateTablixQueryNames();\r\n if (this.tablixQueryNames.length === 0)\r\n return;\r\n // Only persist manually resized columns\r\n let colIndex = this.isMatrix ? index : Math.max(index - 1, 0); // Table indices are offset with an empty header.\r\n let newColumnWidthObj = {\r\n queryName: this.tablixQueryNames[colIndex],\r\n width: width\r\n };\r\n\r\n let objExists = false;\r\n for (let i = 0, len = this.tablixColumnWidthsObject.length; i < len; i++) {\r\n if (this.tablixColumnWidthsObject[i].queryName === newColumnWidthObj.queryName) {\r\n this.tablixColumnWidthsObject[i] = newColumnWidthObj;\r\n objExists = true;\r\n }\r\n }\r\n if (!objExists)\r\n this.tablixColumnWidthsObject.push(newColumnWidthObj);\r\n\r\n // Let onDataChanged call pass through so all instances of resized column gets updated for the matrix\r\n this.suppressNotification = !this.isMatrix;\r\n this.generateVisualObjectInstancesToPersist();\r\n this.callHostPersistProperties = true;\r\n // Keep all persisted column widths in sync\r\n if (!this.shouldAutoSizeColumnWidth() && this.currentPersistedWidths.length > 0 && index < this.currentPersistedWidths.length)\r\n this.currentPersistedWidths[index] = width;\r\n }\r\n\r\n public persistAllColumnWidths(widthsToPersist: number[]): void {\r\n if (!this.shouldAutoSizeColumnWidth() && this.dataViewUpdated) {\r\n let shouldPersist = true;\r\n if (!_.isEqual(widthsToPersist, this.currentPersistedWidths)) {\r\n this.currentPersistedWidths = widthsToPersist;\r\n this.suppressNotification = true;\r\n }\r\n else {\r\n shouldPersist = false;\r\n }\r\n // Persist all column widths\r\n let widths = this.isMatrix ? widthsToPersist\r\n : widthsToPersist.slice(1, widthsToPersist.length); // Table indices are offset with an empty header. \r\n let savedColumnWidths: controls.TablixColumnWidthObject[] = [];\r\n\r\n if (this.tablixQueryNames.length !== widths.length) {\r\n shouldPersist = false;\r\n }\r\n\r\n if (!shouldPersist) {\r\n this.suppressNotification = false;\r\n this.callHostPersistProperties = false;\r\n return;\r\n }\r\n\r\n for (let colIndex = 0, len = widths.length; colIndex < len; colIndex++) {\r\n let widthObj = {\r\n queryName: this.tablixQueryNames[colIndex],\r\n width: widths[colIndex]\r\n };\r\n\r\n for (let columnWidthObject of this.tablixColumnWidthsObject) {\r\n if (columnWidthObject.queryName === widthObj.queryName)\r\n widthObj.width = columnWidthObject.width;\r\n }\r\n savedColumnWidths.push(widthObj);\r\n }\r\n\r\n this.tablixColumnWidthsObject = savedColumnWidths;\r\n this.generateVisualObjectInstancesToPersist();\r\n this.callHostPersistProperties = true;\r\n }\r\n }\r\n\r\n public shouldAutoSizeColumnWidth(): boolean {\r\n let objects = this.dataView.metadata.objects;\r\n if (objects && objects[TablixColumnWidthManager.autoSizeWidthProp.objectName]) {\r\n return objects[TablixColumnWidthManager.autoSizeWidthProp.objectName][TablixColumnWidthManager.autoSizeWidthProp.propertyName] !== false;\r\n }\r\n\r\n // Auto adjust is turned on by default\r\n return AutoSizeColumnWidthDefault;\r\n }\r\n\r\n private getAutoSizeColumnWidthObject(): VisualObjectInstance {\r\n return {\r\n selector: null,\r\n objectName: 'general',\r\n properties: {\r\n autoSizeColumnWidth: this.shouldAutoSizeColumnWidth()\r\n }\r\n };\r\n }\r\n\r\n private generateVisualObjectInstancesToPersist(): void {\r\n this.visualObjectInstancesToPersist = {\r\n merge: [this.getAutoSizeColumnWidthObject()]\r\n };\r\n\r\n // Column Widths\r\n for (let columnWidthObject of this.tablixColumnWidthsObject) {\r\n let queryNameSelector = columnWidthObject.queryName;\r\n // Only persist width if we have a valid queryName to use as selector\r\n if (!queryNameSelector)\r\n continue;\r\n this.visualObjectInstancesToPersist.merge.push({\r\n selector: { metadata: queryNameSelector },\r\n objectName: 'general',\r\n properties: {\r\n columnWidth: columnWidthObject.width\r\n }\r\n });\r\n }\r\n }\r\n\r\n private removePersistedVisualObjectInstances(): void {\r\n this.visualObjectInstancesToPersist = {\r\n merge: [this.getAutoSizeColumnWidthObject()],\r\n remove: [],\r\n };\r\n\r\n for (let columnWidthObject of this.tablixColumnWidthsObject) {\r\n this.visualObjectInstancesToPersist.remove.push({\r\n selector: { metadata: columnWidthObject.queryName },\r\n objectName: 'general',\r\n properties: {\r\n columnWidth: undefined\r\n }\r\n });\r\n }\r\n }\r\n\r\n private deserializeColumnWidths(columnMetaData: DataViewMetadataColumn[]): void {\r\n this.columnWidths.length = 0;\r\n this.tablixColumnWidthsObject.length = 0;\r\n this.populateTablixQueryNames();\r\n if (this.tablixQueryNames.length === 0)\r\n return;\r\n for (let column of columnMetaData) {\r\n let columnWidthPropValue = DataViewObjects.getValue<number>(column.objects, TablixColumnWidthManager.columnWidthProp);\r\n if (columnWidthPropValue === null || columnWidthPropValue === undefined)\r\n continue;\r\n for (let colIndex = 0, len = this.tablixQueryNames.length; colIndex < len; colIndex++) {\r\n let propertySelector = this.tablixQueryNames[colIndex];\r\n if (column.queryName === propertySelector) {\r\n let columnWidth = columnWidthPropValue;\r\n let index = this.isMatrix ? colIndex : colIndex + 1; // Table indices are offset with an empty header.\r\n this.columnWidths[index] = columnWidth;\r\n this.tablixColumnWidthsObject.push({\r\n queryName: propertySelector,\r\n width: columnWidth\r\n });\r\n }\r\n }\r\n }\r\n }\r\n\r\n private populateTablixQueryNames(): void {\r\n if (this.isMatrix)\r\n this.getMatrixQueryNames();\r\n else\r\n this.getTableQueryNames();\r\n }\r\n\r\n private getTableQueryNames(): void {\r\n this.tablixQueryNames.length = 0;\r\n let columnMetaData = this.dataView.table.columns;\r\n for (let column of columnMetaData) {\r\n this.tablixQueryNames.push(column.queryName);\r\n }\r\n }\r\n\r\n private getMatrixQueryNames(): void {\r\n this.tablixQueryNames.length = 0;\r\n let matrixRows = this.dataView.matrix.rows;\r\n for (let level of matrixRows.levels) {\r\n for (let source of level.sources) {\r\n this.tablixQueryNames.push(source.queryName);\r\n }\r\n }\r\n\r\n if (this.matrixLeafNodes) {\r\n for (let leafNode of this.matrixLeafNodes) {\r\n this.tablixQueryNames.push(leafNode.queryName);\r\n }\r\n }\r\n }\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved.\r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n *\r\n * The above copyright notice and this permission notice shall be included in\r\n * all copies or substantial portions of the Software.\r\n *\r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n export interface AnimatedTextConfigurationSettings {\r\n align?: string;\r\n maxFontSize?: number;\r\n }\r\n\r\n /**\r\n * Base class for values that are animated when resized.\r\n */\r\n export class AnimatedText {\r\n\r\n /** Note: Public for testability */\r\n public static formatStringProp: DataViewObjectPropertyIdentifier = {\r\n objectName: 'general',\r\n propertyName: 'formatString',\r\n };\r\n\r\n protected animator: IGenericAnimator;\r\n\r\n private name: string;\r\n\r\n /** Note: Public for testability */\r\n public svg: D3.Selection;\r\n public currentViewport: IViewport;\r\n public value: any;\r\n public hostServices: IVisualHostServices;\r\n public style: IVisualStyle;\r\n public visualConfiguration: AnimatedTextConfigurationSettings;\r\n public metaDataColumn: DataViewMetadataColumn;\r\n\r\n private mainText: jsCommon.CssConstants.ClassAndSelector = jsCommon.CssConstants.createClassAndSelector('mainText');\r\n\r\n public constructor(name: string) {\r\n this.name = name;\r\n this.visualConfiguration = { maxFontSize: 60 };\r\n }\r\n\r\n public getMetaDataColumn(dataView: DataView) {\r\n if (dataView && dataView.metadata && dataView.metadata.columns) {\r\n for (let i = 0, ilen = dataView.metadata.columns.length; i < ilen; i++) {\r\n let column = dataView.metadata.columns[i];\r\n if (column.isMeasure) {\r\n this.metaDataColumn = column;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n public getAdjustedFontHeight(\r\n availableWidth: number,\r\n textToMeasure: string,\r\n seedFontHeight: number): number {\r\n\r\n // set up the node so we don't keep appending/removing it during the computation\r\n let nodeSelection = this.svg.append('text').text(textToMeasure);\r\n\r\n let fontHeight = this.getAdjustedFontHeightCore(\r\n nodeSelection,\r\n availableWidth,\r\n seedFontHeight,\r\n 0);\r\n\r\n nodeSelection.remove();\r\n\r\n return fontHeight;\r\n }\r\n\r\n private getAdjustedFontHeightCore(\r\n nodeToMeasure: D3.Selection,\r\n availableWidth: number,\r\n seedFontHeight: number,\r\n iteration: number): number {\r\n\r\n // Too many attempts - just return what we have so we don't sacrifice perf\r\n if (iteration > 10)\r\n return seedFontHeight;\r\n\r\n nodeToMeasure.attr('font-size', seedFontHeight);\r\n let candidateLength = TextMeasurementService.measureSvgTextElementWidth(nodeToMeasure[0][0]);\r\n if (candidateLength < availableWidth)\r\n return seedFontHeight;\r\n\r\n return this.getAdjustedFontHeightCore(nodeToMeasure, availableWidth, seedFontHeight * 0.9, iteration + 1);\r\n }\r\n\r\n public clear() {\r\n this.svg.select(this.mainText.selector).text('');\r\n }\r\n\r\n public doValueTransition(\r\n startValue: any,\r\n endValue: any,\r\n displayUnitSystemType: DisplayUnitSystemType,\r\n animationOptions: AnimationOptions,\r\n duration: number,\r\n forceUpdate: boolean,\r\n formatter?: IValueFormatter): void {\r\n if (!forceUpdate && startValue === endValue && endValue != null)\r\n return;\r\n\r\n if (!startValue)\r\n startValue = 0;\r\n\r\n let svg = this.svg,\r\n viewport = this.currentViewport,\r\n height = viewport.height,\r\n width = viewport.width,\r\n endValueArr = [endValue],\r\n seedFontHeight = this.getSeedFontHeight(width, height),\r\n translateX = this.getTranslateX(width),\r\n translateY = this.getTranslateY(seedFontHeight),\r\n metaDataColumn = this.metaDataColumn;\r\n\r\n // Respect the formatter default value\r\n if (!formatter) {\r\n formatter = valueFormatter.create({\r\n format: this.getFormatString(metaDataColumn),\r\n value: endValue,\r\n displayUnitSystemType: displayUnitSystemType,\r\n formatSingleValues: true,\r\n allowFormatBeautification: true,\r\n columnType: metaDataColumn ? metaDataColumn.type : undefined\r\n });\r\n }\r\n let startText = formatter.format(startValue),\r\n endText = formatter.format(endValue);\r\n\r\n svg.attr('class', this.name);\r\n\r\n let textElement = svg\r\n .selectAll('text')\r\n .data(endValueArr);\r\n\r\n textElement\r\n .enter()\r\n .append('text')\r\n .attr('class', this.mainText.class);\r\n\r\n let fontHeight = this.getAdjustedFontHeight(width, endText, seedFontHeight);\r\n translateY = this.getTranslateY(fontHeight + (height - fontHeight) / 2);\r\n\r\n let textElementUpdate = textElement\r\n .text(startText)\r\n .attr({\r\n 'text-anchor': this.getTextAnchor(),\r\n 'font-size': fontHeight,\r\n 'transform': SVGUtil.translate(translateX, translateY),\r\n })\r\n .style({\r\n 'fill': this.style.titleText.color.value,\r\n })\r\n .call(tooltipUtils.tooltipUpdate, [startText]);\r\n\r\n if (endValue == null) {\r\n textElementUpdate.text(endText).call(tooltipUtils.tooltipUpdate, [endText]);\r\n }\r\n else if (metaDataColumn && AxisHelper.isDateTime(metaDataColumn.type)) {\r\n textElementUpdate.text(endText).call(tooltipUtils.tooltipUpdate, [endText]);\r\n }\r\n else {\r\n let interpolatedValue = startValue;\r\n textElementUpdate\r\n .transition()\r\n .duration(duration)\r\n .tween('text', function (d) {\r\n let i = d3.interpolate(interpolatedValue, d);\r\n return function (t) {\r\n let num = i(t);\r\n this.textContent = formatter.format(num);\r\n };\r\n });\r\n }\r\n\r\n SVGUtil.flushAllD3TransitionsIfNeeded(animationOptions);\r\n }\r\n\r\n public setTextColor(color: string): void {\r\n this.style.titleText.color.value = color;\r\n }\r\n\r\n public getSeedFontHeight(boundingWidth: number, boundingHeight: number) {\r\n // Simply an estimate - it should eventually be modified based on the actual text length\r\n let estimatedSize = Math.floor(Math.min(boundingWidth, boundingHeight) * 0.75);\r\n let maxFontSize = this.visualConfiguration.maxFontSize;\r\n\r\n if (maxFontSize)\r\n return Math.min(maxFontSize, estimatedSize);\r\n\r\n return estimatedSize;\r\n }\r\n\r\n public getTranslateX(width: number): number {\r\n if (this.visualConfiguration) {\r\n switch (this.visualConfiguration.align) {\r\n case 'left':\r\n return 0;\r\n case 'right':\r\n return width;\r\n }\r\n }\r\n return width / 2;\r\n }\r\n\r\n public getTranslateY(height: number): number {\r\n return height;\r\n }\r\n\r\n public getTextAnchor(): string {\r\n if (this.visualConfiguration) {\r\n switch (this.visualConfiguration.align) {\r\n case 'left':\r\n return 'start';\r\n case 'right':\r\n return 'end';\r\n }\r\n }\r\n return 'middle';\r\n }\r\n\r\n protected getFormatString(column: DataViewMetadataColumn): string {\r\n debug.assertAnyValue(column, 'column');\r\n\r\n return valueFormatter.getFormatString(column, AnimatedText.formatStringProp);\r\n }\r\n }\r\n}\r\n","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n /**\r\n * Renders a number that can be animate change in value.\r\n */\r\n export class AnimatedNumber extends AnimatedText implements IVisual {\r\n private options: VisualInitOptions;\r\n\r\n // TODO: Remove this once all visuals have implemented update.\r\n private dataViews: DataView[];\r\n private formatter: IValueFormatter;\r\n\r\n public constructor(svg?: D3.Selection, animator?: IGenericAnimator) {\r\n super('animatedNumber');\r\n\r\n if (svg)\r\n this.svg = svg;\r\n if (animator)\r\n this.animator = animator;\r\n }\r\n\r\n public init(options: VisualInitOptions) {\r\n this.options = options;\r\n let element = options.element;\r\n\r\n if (!this.svg)\r\n this.svg = d3.select(element.get(0)).append('svg');\r\n\r\n this.currentViewport = options.viewport;\r\n this.hostServices = options.host;\r\n this.style = options.style;\r\n this.updateViewportDependantProperties();\r\n }\r\n\r\n public updateViewportDependantProperties() {\r\n let viewport = this.currentViewport;\r\n this.svg.attr('width', viewport.width)\r\n .attr('height', viewport.height);\r\n }\r\n\r\n public update(options: VisualUpdateOptions) {\r\n debug.assertValue(options, 'options');\r\n\r\n this.currentViewport = options.viewport;\r\n let dataViews = this.dataViews = options.dataViews;\r\n\r\n if (!dataViews || !dataViews[0]) {\r\n return;\r\n }\r\n\r\n let dataView = dataViews[0];\r\n this.updateViewportDependantProperties();\r\n this.getMetaDataColumn(dataView);\r\n let newValue = dataView && dataView.single ? dataView.single.value : 0;\r\n if (newValue != null) {\r\n this.updateInternal(newValue, options.suppressAnimations, true, this.formatter);\r\n }\r\n }\r\n\r\n public setFormatter(formatter?: IValueFormatter): void {\r\n this.formatter = formatter;\r\n }\r\n\r\n public onDataChanged(options: VisualDataChangedOptions): void {\r\n // TODO: Remove onDataChanged & onResizing once all visuals have implemented update.\r\n this.update({\r\n dataViews: options.dataViews,\r\n suppressAnimations: options.suppressAnimations,\r\n viewport: this.currentViewport\r\n });\r\n }\r\n\r\n public onResizing(viewport: IViewport): void {\r\n // TODO: Remove onDataChanged & onResizing once all visuals have implemented update.\r\n this.update({\r\n dataViews: this.dataViews,\r\n suppressAnimations: true,\r\n viewport: viewport\r\n });\r\n }\r\n\r\n public canResizeTo(viewport: IViewport): boolean {\r\n // Temporarily disabling resize restriction.\r\n return true;\r\n }\r\n\r\n private updateInternal(target: number, suppressAnimations: boolean, forceUpdate: boolean = false, formatter?: IValueFormatter) {\r\n let start = this.value || 0;\r\n let duration = AnimatorCommon.GetAnimationDuration(this.animator, suppressAnimations);\r\n\r\n this.doValueTransition(\r\n start,\r\n target,\r\n /*displayUnitSystemType*/ null,\r\n this.options.animation,\r\n duration,\r\n forceUpdate,\r\n formatter);\r\n\r\n this.value = target;\r\n }\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n export interface BasicShapeDataViewObjects extends DataViewObjects {\r\n general: BasicShapeDataViewObject;\r\n line: LineObject;\r\n fill: FillObject;\r\n rotation: RotationObject;\r\n }\r\n\r\n export interface LineObject extends DataViewObject {\r\n lineColor: Fill;\r\n roundEdge: number;\r\n weight: number;\r\n transparency: number;\r\n }\r\n\r\n export interface FillObject extends DataViewObject {\r\n transparency: number;\r\n fillColor: Fill;\r\n show: boolean;\r\n }\r\n\r\n export interface RotationObject extends DataViewObject {\r\n angle: number;\r\n }\r\n\r\n export interface BasicShapeDataViewObject extends DataViewObject {\r\n shapeType: string;\r\n shapeSvg: string;\r\n }\r\n\r\n export interface BasicShapeData {\r\n shapeType: string;\r\n lineColor: string;\r\n lineTransparency: number;\r\n lineWeight: number;\r\n showFill: boolean;\r\n fillColor: string;\r\n shapeTransparency: number;\r\n roundEdge: number;\r\n angle: number;\r\n }\r\n\r\n export class BasicShapeVisual implements IVisual {\r\n private currentViewport: IViewport;\r\n private element: JQuery;\r\n private data: BasicShapeData;\r\n private selection: D3.Selection;\r\n\r\n public static DefaultShape: string = basicShapeType.rectangle;\r\n public static DefaultStrokeColor: string = '#00B8AA';\r\n public static DefaultFillColor: string = '#E6E6E6';\r\n public static DefaultFillShowValue: boolean = true; \r\n public static DefaultFillTransValue: number = 100;\r\n public static DefaultWeightValue: number = 3;\r\n public static DefaultLineTransValue: number = 100;\r\n public static DefaultRoundEdgeValue: number = 0;\r\n public static DefaultAngle: number = 0;\r\n\r\n /**property for the shape line color */\r\n get shapeType(): string {\r\n return this.data ? this.data.shapeType : BasicShapeVisual.DefaultShape;\r\n }\r\n set shapeType(shapeType: string) {\r\n this.data.shapeType = shapeType;\r\n }\r\n\r\n /**property for the shape line color */\r\n get lineColor(): string {\r\n return this.data ? this.data.lineColor : BasicShapeVisual.DefaultStrokeColor;\r\n }\r\n set lineColor(color: string) {\r\n this.data.lineColor = color;\r\n }\r\n /**property for the shape line transparency */\r\n get lineTransparency(): number {\r\n return this.data ? this.data.lineTransparency : BasicShapeVisual.DefaultLineTransValue;\r\n }\r\n set lineTransparency(trans: number) {\r\n this.data.lineTransparency = trans;\r\n }\r\n /**property for the shape line weight */\r\n get lineWeight(): number {\r\n return this.data ? this.data.lineWeight : BasicShapeVisual.DefaultWeightValue;\r\n }\r\n set lineWeight(weight: number) {\r\n this.data.lineWeight = weight;\r\n }\r\n /**property for the shape round edge */\r\n get roundEdge(): number {\r\n return this.data ? this.data.roundEdge : BasicShapeVisual.DefaultRoundEdgeValue;\r\n }\r\n set roundEdge(roundEdge: number) {\r\n this.data.roundEdge = roundEdge;\r\n }\r\n /**property for showing the fill properties */\r\n get showFill(): boolean {\r\n return this.data ? this.data.showFill : BasicShapeVisual.DefaultFillShowValue;\r\n }\r\n set showFill(show: boolean) {\r\n this.data.showFill = show;\r\n }\r\n /**property for the shape line color */\r\n get fillColor(): string {\r\n return this.data ? this.data.fillColor : BasicShapeVisual.DefaultFillColor;\r\n }\r\n set fillColor(color: string) {\r\n this.data.fillColor = color;\r\n }\r\n /**property for the shape fill transparency */\r\n get shapeTransparency(): number {\r\n return this.data ? this.data.shapeTransparency : BasicShapeVisual.DefaultFillTransValue;\r\n }\r\n set shapeTransparency(trans: number) {\r\n this.data.shapeTransparency = trans;\r\n }\r\n /**property for the shape angle */\r\n get angle(): number {\r\n return this.data ? this.data.angle : BasicShapeVisual.DefaultAngle;\r\n }\r\n set angle(angle: number) {\r\n this.data.angle = this.scaleTo360Deg(angle);\r\n }\r\n\r\n public init(options: VisualInitOptions) {\r\n this.element = options.element;\r\n this.selection = d3.select(this.element.context);\r\n this.currentViewport = options.viewport;\r\n }\r\n\r\n public constructor(options?: VisualInitOptions) {\r\n }\r\n\r\n public update(options: VisualUpdateOptions): void {\r\n debug.assertValue(options, 'options');\r\n\r\n this.currentViewport = options.viewport;\r\n\r\n let dataViews = options.dataViews;\r\n if (!_.isEmpty(dataViews)) {\r\n let dataView = options.dataViews[0];\r\n if (dataView.metadata && dataView.metadata.objects) {\r\n let dataViewObject = <BasicShapeDataViewObjects>options.dataViews[0].metadata.objects;\r\n this.data = this.getDataFromDataView(dataViewObject);\r\n }\r\n }\r\n\r\n this.render();\r\n }\r\n\r\n private getDataFromDataView(dataViewObject: BasicShapeDataViewObjects): BasicShapeData {\r\n if (dataViewObject) {\r\n return {\r\n shapeType: DataViewObjects.getValue(dataViewObject, basicShapeProps.general.shapeType, BasicShapeVisual.DefaultShape),\r\n lineColor: this.getValueFromColor(DataViewObjects.getValue(dataViewObject, basicShapeProps.line.lineColor, BasicShapeVisual.DefaultStrokeColor)),\r\n lineTransparency: DataViewObjects.getValue(dataViewObject, basicShapeProps.line.transparency, BasicShapeVisual.DefaultLineTransValue),\r\n lineWeight: DataViewObjects.getValue(dataViewObject, basicShapeProps.line.weight, BasicShapeVisual.DefaultWeightValue),\r\n roundEdge: DataViewObjects.getValue(dataViewObject, basicShapeProps.line.roundEdge, BasicShapeVisual.DefaultRoundEdgeValue),\r\n shapeTransparency: DataViewObjects.getValue(dataViewObject, basicShapeProps.fill.transparency, BasicShapeVisual.DefaultFillTransValue),\r\n fillColor: this.getValueFromColor(DataViewObjects.getValue(dataViewObject, basicShapeProps.fill.fillColor, BasicShapeVisual.DefaultFillColor)),\r\n showFill: DataViewObjects.getValue(dataViewObject, basicShapeProps.fill.show, BasicShapeVisual.DefaultFillShowValue),\r\n angle: this.scaleTo360Deg(DataViewObjects.getValue(dataViewObject, basicShapeProps.rotation.angle, BasicShapeVisual.DefaultAngle))\r\n };\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private scaleTo360Deg(angle: number): number {\r\n if (angle !== 0 && (Math.abs(angle) % 360) === 0) return angle;\r\n\r\n angle = angle % 360;\r\n angle = (angle + 360) % 360;\r\n\r\n return angle;\r\n }\r\n\r\n private getValueFromColor(color: any): string {\r\n return color.solid ? color.solid.color : color;\r\n }\r\n\r\n public enumerateObjectInstances(options: EnumerateVisualObjectInstancesOptions): VisualObjectInstance[] {\r\n let objectInstances: VisualObjectInstance[] = [];\r\n\r\n switch (options.objectName) {\r\n case 'line':\r\n let instance: VisualObjectInstance = {\r\n selector: null,\r\n properties: {\r\n lineColor: this.lineColor,\r\n transparency: this.lineTransparency,\r\n weight: this.lineWeight\r\n },\r\n objectName: options.objectName\r\n };\r\n if (this.data.shapeType === basicShapeType.rectangle) {\r\n instance.properties['roundEdge'] = this.roundEdge;\r\n }\r\n\r\n objectInstances.push(instance);\r\n return objectInstances;\r\n case 'fill':\r\n if (this.shapeType !== basicShapeType.line) {\r\n objectInstances.push({\r\n selector: null,\r\n properties: {\r\n show: this.showFill,\r\n fillColor: this.fillColor,\r\n transparency: this.shapeTransparency\r\n },\r\n objectName: options.objectName\r\n });\r\n }\r\n return objectInstances;\r\n case 'rotation':\r\n objectInstances.push({\r\n selector: null,\r\n properties: {\r\n angle: this.angle\r\n },\r\n objectName: options.objectName\r\n });\r\n\r\n return objectInstances;\r\n }\r\n\r\n return null;\r\n\r\n }\r\n\r\n public render(): void {\r\n this.selection.html('');\r\n \r\n switch (this.shapeType) {\r\n case basicShapeType.rectangle:\r\n ShapeFactory.createRectangle(\r\n this.data, this.currentViewport.height, this.currentViewport.width, this.selection, this.angle);\r\n break;\r\n case basicShapeType.oval:\r\n ShapeFactory.createOval(\r\n this.data, this.currentViewport.height, this.currentViewport.width, this.selection, this.angle);\r\n break;\r\n case basicShapeType.line:\r\n ShapeFactory.createLine(\r\n this.data, this.currentViewport.height, this.currentViewport.width, this.selection, this.angle);\r\n break;\r\n case basicShapeType.arrow:\r\n ShapeFactory.createUpArrow(\r\n this.data, this.currentViewport.height, this.currentViewport.width, this.selection, this.angle);\r\n break;\r\n case basicShapeType.triangle:\r\n ShapeFactory.createTriangle(\r\n this.data, this.currentViewport.height, this.currentViewport.width, this.selection, this.angle);\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n }\r\n}\r\n","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n import EnumExtensions = jsCommon.EnumExtensions;\r\n import ClassAndSelector = jsCommon.CssConstants.ClassAndSelector;\r\n import createClassAndSelector = jsCommon.CssConstants.createClassAndSelector;\r\n\r\n const COMBOCHART_DOMAIN_OVERLAP_TRESHOLD_PERCENTAGE = 0.1;\r\n // the interactive right margin is set to be the circle selection radius of the hover line\r\n const INTERACTIVITY_RIGHT_MARGIN = 6;\r\n\r\n export const enum CartesianChartType {\r\n Line,\r\n Area,\r\n StackedArea,\r\n ClusteredColumn,\r\n StackedColumn,\r\n ClusteredBar,\r\n StackedBar,\r\n HundredPercentStackedBar,\r\n HundredPercentStackedColumn,\r\n Scatter,\r\n ComboChart,\r\n DataDot,\r\n Waterfall,\r\n LineClusteredColumnCombo,\r\n LineStackedColumnCombo,\r\n DataDotClusteredColumnCombo,\r\n DataDotStackedColumnCombo,\r\n }\r\n\r\n export interface CalculateScaleAndDomainOptions {\r\n viewport: IViewport;\r\n margin: IMargin;\r\n showCategoryAxisLabel: boolean;\r\n showValueAxisLabel: boolean;\r\n forceMerge: boolean;\r\n categoryAxisScaleType: string;\r\n valueAxisScaleType: string;\r\n trimOrdinalDataOnOverflow: boolean;\r\n // optional\r\n playAxisControlLayout?: IRect;\r\n forcedTickCount?: number;\r\n forcedYDomain?: any[];\r\n forcedXDomain?: any[];\r\n categoryAxisDisplayUnits?: number;\r\n categoryAxisPrecision?: number;\r\n valueAxisDisplayUnits?: number;\r\n valueAxisPrecision?: number;\r\n }\r\n\r\n export interface MergedValueAxisResult {\r\n domain: number[];\r\n merged: boolean;\r\n tickCount: number;\r\n forceStartToZero: boolean;\r\n }\r\n\r\n export interface CartesianSmallViewPortProperties {\r\n hideLegendOnSmallViewPort: boolean;\r\n hideAxesOnSmallViewPort: boolean;\r\n MinHeightLegendVisible: number;\r\n MinHeightAxesVisible: number;\r\n }\r\n\r\n export interface AxisRenderingOptions {\r\n axisLabels: ChartAxesLabels;\r\n viewport: IViewport;\r\n margin: IMargin;\r\n hideXAxisTitle: boolean;\r\n hideYAxisTitle: boolean;\r\n hideY2AxisTitle?: boolean;\r\n xLabelColor?: Fill;\r\n yLabelColor?: Fill;\r\n y2LabelColor?: Fill;\r\n fontSize: number;\r\n }\r\n\r\n export interface CartesianConstructorOptions {\r\n chartType: CartesianChartType;\r\n isScrollable?: boolean;\r\n animator?: IGenericAnimator;\r\n cartesianSmallViewPortProperties?: CartesianSmallViewPortProperties;\r\n behavior?: IInteractiveBehavior;\r\n seriesLabelFormattingEnabled?: boolean;\r\n isLabelInteractivityEnabled?: boolean;\r\n tooltipsEnabled?: boolean;\r\n referenceLinesEnabled?: boolean;\r\n backgroundImageEnabled?: boolean;\r\n lineChartLabelDensityEnabled?: boolean;\r\n trimOrdinalDataOnOverflow?: boolean;\r\n }\r\n\r\n export interface ICartesianVisual {\r\n init(options: CartesianVisualInitOptions): void;\r\n setData(dataViews: DataView[], resized?: boolean): void;\r\n calculateAxesProperties(options: CalculateScaleAndDomainOptions): IAxisProperties[];\r\n overrideXScale(xProperties: IAxisProperties): void;\r\n render(suppressAnimations: boolean): CartesianVisualRenderResult;\r\n calculateLegend(): LegendData;\r\n hasLegend(): boolean;\r\n onClearSelection(): void;\r\n enumerateObjectInstances?(enumeration: ObjectEnumerationBuilder, options: EnumerateVisualObjectInstancesOptions): void;\r\n getVisualCategoryAxisIsScalar?(): boolean;\r\n getSupportedCategoryAxisType?(): string;\r\n getPreferredPlotArea?(isScalar: boolean, categoryCount: number, categoryThickness: number): IViewport;\r\n setFilteredData?(startIndex: number, endIndex: number): CartesianData;\r\n }\r\n\r\n export interface CartesianVisualConstructorOptions {\r\n isScrollable: boolean;\r\n interactivityService?: IInteractivityService;\r\n animator?: IGenericAnimator;\r\n seriesLabelFormattingEnabled?: boolean;\r\n isLabelInteractivityEnabled?: boolean;\r\n tooltipsEnabled?: boolean;\r\n lineChartLabelDensityEnabled?: boolean;\r\n }\r\n\r\n export interface CartesianVisualRenderResult {\r\n dataPoints: SelectableDataPoint[];\r\n behaviorOptions: any;\r\n labelDataPoints: LabelDataPoint[];\r\n labelsAreNumeric: boolean;\r\n labelDataPointGroups?: LabelDataPointsGroup[];\r\n }\r\n\r\n export interface CartesianDataPoint {\r\n categoryValue: any;\r\n value: number;\r\n categoryIndex: number;\r\n seriesIndex: number;\r\n highlight?: boolean;\r\n }\r\n\r\n export interface CartesianSeries {\r\n data: CartesianDataPoint[];\r\n }\r\n\r\n export interface CartesianData {\r\n series: CartesianSeries[];\r\n categoryMetadata: DataViewMetadataColumn;\r\n categories: any[];\r\n hasHighlights?: boolean;\r\n }\r\n\r\n export interface CartesianVisualInitOptions extends VisualInitOptions {\r\n svg: D3.Selection;\r\n cartesianHost: ICartesianVisualHost;\r\n chartType?: CartesianChartType;\r\n labelsContext?: D3.Selection; //TEMPORARY - for PlayAxis\r\n }\r\n \r\n export interface ICartesianVisualHost {\r\n updateLegend(data: LegendData): void;\r\n getSharedColors(): IDataColorPalette;\r\n triggerRender(suppressAnimations: boolean): void;\r\n }\r\n\r\n export interface ChartAxesLabels {\r\n x: string;\r\n y: string;\r\n y2?: string;\r\n }\r\n\r\n export const enum AxisLinesVisibility {\r\n ShowLinesOnXAxis = 1,\r\n ShowLinesOnYAxis = 2,\r\n ShowLinesOnBothAxis = ShowLinesOnXAxis | ShowLinesOnYAxis,\r\n }\r\n\r\n export interface CategoryLayout {\r\n categoryCount: number;\r\n categoryThickness: number;\r\n outerPaddingRatio: number;\r\n isScalar?: boolean;\r\n }\r\n\r\n export interface CategoryLayoutOptions {\r\n availableWidth: number;\r\n categoryCount: number;\r\n domain: any;\r\n trimOrdinalDataOnOverflow: boolean;\r\n isScalar?: boolean;\r\n isScrollable?: boolean;\r\n }\r\n\r\n export interface CartesianAxisProperties {\r\n x: IAxisProperties;\r\n y1: IAxisProperties;\r\n y2?: IAxisProperties;\r\n }\r\n\r\n export interface ReferenceLineOptions {\r\n graphicContext: D3.Selection;\r\n referenceLineProperties: DataViewObject;\r\n axes: CartesianAxisProperties;\r\n viewport: IViewport;\r\n classAndSelector: ClassAndSelector;\r\n defaultColor: string;\r\n isHorizontal: boolean;\r\n }\r\n\r\n export interface ReferenceLineDataLabelOptions {\r\n referenceLineProperties: DataViewObject;\r\n axes: CartesianAxisProperties;\r\n viewport: IViewport;\r\n defaultColor: string;\r\n isHorizontal: boolean;\r\n key: string;\r\n }\r\n\r\n type RenderPlotAreaDelegate = (\r\n layers: ICartesianVisual[],\r\n axesLayout: CartesianAxesLayout,\r\n suppressAnimations: boolean) => void;\r\n\r\n /** \r\n * Renders a data series as a cartestian visual.\r\n */\r\n export class CartesianChart implements IVisual {\r\n public static MinOrdinalRectThickness = 20;\r\n public static MinScalarRectThickness = 2;\r\n public static OuterPaddingRatio = 0.4;\r\n public static InnerPaddingRatio = 0.2;\r\n public static TickLabelPadding = 2; // between text labels, used by AxisHelper\r\n\r\n private static ClassName = 'cartesianChart';\r\n private static PlayAxisBottomMargin = 80; //do not change unless we add dynamic label measurements for play slider\r\n private static FontSize = 11;\r\n private static FontSizeString = jsCommon.PixelConverter.toString(CartesianChart.FontSize);\r\n private static TextProperties: TextProperties = {\r\n fontFamily: 'wf_segoe-ui_normal',\r\n fontSize: CartesianChart.FontSizeString,\r\n };\r\n\r\n private element: JQuery;\r\n private chartAreaSvg: D3.Selection;\r\n private clearCatcher: D3.Selection;\r\n private type: CartesianChartType;\r\n private hostServices: IVisualHostServices;\r\n private layers: ICartesianVisual[];\r\n private legend: ILegend;\r\n private legendMargins: IViewport;\r\n private layerLegendData: LegendData;\r\n private hasSetData: boolean;\r\n private visualInitOptions: VisualInitOptions;\r\n private legendObjectProperties: DataViewObject;\r\n private categoryAxisProperties: DataViewObject;\r\n private valueAxisProperties: DataViewObject;\r\n private xAxisReferenceLines: DataViewObjectMap;\r\n private y1AxisReferenceLines: DataViewObjectMap;\r\n private cartesianSmallViewPortProperties: CartesianSmallViewPortProperties;\r\n private interactivityService: IInteractivityService;\r\n private behavior: IInteractiveBehavior;\r\n private sharedColorPalette: SharedColorPalette;\r\n private seriesLabelFormattingEnabled: boolean;\r\n private isLabelInteractivityEnabled: boolean;\r\n private tooltipsEnabled: boolean;\r\n private lineChartLabelDensityEnabled: boolean;\r\n private trimOrdinalDataOnOverflow: boolean;\r\n\r\n private referenceLinesEnabled: boolean;\r\n private xRefLine: ClassAndSelector = createClassAndSelector('x-ref-line');\r\n private y1RefLine: ClassAndSelector = createClassAndSelector('y1-ref-line');\r\n private backgroundImageEnabled: boolean;\r\n\r\n public animator: IGenericAnimator;\r\n\r\n private axes: CartesianAxes;\r\n private scrollableAxes: ScrollableAxes;\r\n private svgAxes: SvgCartesianAxes;\r\n private svgBrush: SvgBrush;\r\n private renderedPlotArea: IViewport; // to help disable animation when property changes result in layout changes (e.g. 'legend off' should not animate)\r\n\r\n // TODO: Remove onDataChanged & onResizing once all visuals have implemented update.\r\n private dataViews: DataView[];\r\n private currentViewport: IViewport;\r\n private background: VisualBackground;\r\n\r\n private static getAxisVisibility(type: CartesianChartType): AxisLinesVisibility {\r\n switch (type) {\r\n case CartesianChartType.StackedBar:\r\n case CartesianChartType.ClusteredBar:\r\n case CartesianChartType.HundredPercentStackedBar:\r\n return AxisLinesVisibility.ShowLinesOnXAxis;\r\n case CartesianChartType.Scatter:\r\n return AxisLinesVisibility.ShowLinesOnBothAxis;\r\n default:\r\n return AxisLinesVisibility.ShowLinesOnYAxis;\r\n }\r\n }\r\n\r\n constructor(options: CartesianConstructorOptions) {\r\n let isScrollable = false;\r\n this.trimOrdinalDataOnOverflow = true;\r\n if (options) {\r\n this.tooltipsEnabled = options.tooltipsEnabled;\r\n this.type = options.chartType;\r\n this.seriesLabelFormattingEnabled = options.seriesLabelFormattingEnabled;\r\n this.isLabelInteractivityEnabled = options.isLabelInteractivityEnabled;\r\n this.referenceLinesEnabled = options.referenceLinesEnabled;\r\n this.backgroundImageEnabled = options.backgroundImageEnabled;\r\n this.lineChartLabelDensityEnabled = options.lineChartLabelDensityEnabled;\r\n if (options.trimOrdinalDataOnOverflow !== undefined)\r\n this.trimOrdinalDataOnOverflow = options.trimOrdinalDataOnOverflow;\r\n if (options.isScrollable)\r\n isScrollable = options.isScrollable;\r\n this.animator = options.animator;\r\n if (options.cartesianSmallViewPortProperties) {\r\n this.cartesianSmallViewPortProperties = options.cartesianSmallViewPortProperties;\r\n }\r\n\r\n if (options.behavior) {\r\n this.behavior = options.behavior;\r\n }\r\n }\r\n\r\n this.axes = new CartesianAxes(isScrollable, ScrollableAxes.ScrollbarWidth, this.trimOrdinalDataOnOverflow);\r\n this.svgAxes = new SvgCartesianAxes(this.axes);\r\n this.svgBrush = new SvgBrush(ScrollableAxes.ScrollbarWidth);\r\n this.scrollableAxes = new ScrollableAxes(this.axes, this.svgBrush);\r\n }\r\n\r\n public init(options: VisualInitOptions) {\r\n this.visualInitOptions = options;\r\n this.layers = [];\r\n\r\n let element = this.element = options.element;\r\n element.addClass(CartesianChart.ClassName);\r\n\r\n this.currentViewport = options.viewport;\r\n this.hostServices = options.host;\r\n \r\n let chartAreaSvg = this.chartAreaSvg = d3.select(element.get(0)).append('svg');\r\n chartAreaSvg.style('position', 'absolute');\r\n\r\n if (this.behavior) {\r\n this.clearCatcher = appendClearCatcher(chartAreaSvg);\r\n this.interactivityService = createInteractivityService(this.hostServices);\r\n }\r\n\r\n if (options.style.maxMarginFactor != null)\r\n this.axes.setMaxMarginFactor(options.style.maxMarginFactor);\r\n\r\n let axisLinesVisibility = CartesianChart.getAxisVisibility(this.type);\r\n this.axes.setAxisLinesVisibility(axisLinesVisibility);\r\n\r\n this.svgAxes.init(chartAreaSvg);\r\n this.svgBrush.init(chartAreaSvg);\r\n\r\n this.sharedColorPalette = new SharedColorPalette(options.style.colorPalette.dataColors);\r\n\r\n this.legend = createLegend(\r\n element,\r\n options.interactivity && options.interactivity.isInteractiveLegend,\r\n this.type !== CartesianChartType.Waterfall ? this.interactivityService : undefined,\r\n this.axes.isScrollable);\r\n }\r\n\r\n private isPlayAxis(): boolean {\r\n if (!this.dataViews || !this.dataViews[0])\r\n return false;\r\n\r\n let dataView = this.dataViews[0];\r\n let categoryRoleIsPlay: boolean = dataView.categorical\r\n && dataView.categorical.categories\r\n && dataView.categorical.categories[0]\r\n && dataView.categorical.categories[0].source\r\n && dataView.categorical.categories[0].source.roles\r\n && dataView.categorical.categories[0].source.roles['Play'];\r\n\r\n return this.type === CartesianChartType.Scatter\r\n && this.animator\r\n && dataView.matrix != null\r\n && (!dataView.categorical || categoryRoleIsPlay);\r\n }\r\n\r\n public static getIsScalar(objects: DataViewObjects, propertyId: DataViewObjectPropertyIdentifier, type: ValueTypeDescriptor): boolean {\r\n let axisTypeValue = DataViewObjects.getValue(objects, propertyId);\r\n\r\n if (!objects || axisTypeValue === undefined) {\r\n // If we don't have anything set (Auto), show charts as Scalar if the category type is numeric or time. \r\n // If we have the property, it will override the type.\r\n return !AxisHelper.isOrdinal(type);\r\n }\r\n\r\n // also checking type here to be in sync with AxisHelper, which ignores scalar if the type is non-numeric.\r\n return (axisTypeValue === axisType.scalar) && !AxisHelper.isOrdinal(type);\r\n }\r\n\r\n private populateObjectProperties(dataViews: DataView[]) {\r\n if (dataViews && dataViews.length > 0) {\r\n let dataViewMetadata = dataViews[0].metadata;\r\n\r\n if (dataViewMetadata) {\r\n this.legendObjectProperties = DataViewObjects.getObject(dataViewMetadata.objects, 'legend', {});\r\n this.xAxisReferenceLines = DataViewObjects.getUserDefinedObjects(dataViewMetadata.objects, 'xAxisReferenceLine');\r\n this.y1AxisReferenceLines = DataViewObjects.getUserDefinedObjects(dataViewMetadata.objects, 'y1AxisReferenceLine');\r\n }\r\n else {\r\n this.legendObjectProperties = {};\r\n }\r\n\r\n this.categoryAxisProperties = CartesianHelper.getCategoryAxisProperties(dataViewMetadata);\r\n this.valueAxisProperties = CartesianHelper.getValueAxisProperties(dataViewMetadata);\r\n }\r\n }\r\n\r\n public update(options: VisualUpdateOptions) {\r\n debug.assertValue(options, 'options');\r\n\r\n let dataViews = this.dataViews = options.dataViews;\r\n let resized = this.currentViewport && options.viewport\r\n && (this.currentViewport.height !== options.viewport.height || this.currentViewport.width !== options.viewport.width);\r\n this.currentViewport = options.viewport;\r\n\r\n if (!dataViews) return;\r\n\r\n if (this.layers.length === 0) {\r\n // Lazily instantiate the chart layers on the first data load.\r\n this.layers = this.createAndInitLayers(dataViews);\r\n\r\n debug.assert(this.layers.length > 0, 'createAndInitLayers should update the layers.');\r\n }\r\n let layers = this.layers;\r\n\r\n if (dataViews && dataViews.length > 0) {\r\n this.populateObjectProperties(dataViews);\r\n this.axes.update(dataViews);\r\n this.svgAxes.update(this.categoryAxisProperties, this.valueAxisProperties);\r\n let dataView = dataViews[0];\r\n if (dataView.metadata) {\r\n // flatten background data\r\n this.background = {\r\n image: DataViewObjects.getValue<ImageValue>(dataView.metadata.objects, scatterChartProps.plotArea.image),\r\n transparency: DataViewObjects.getValue(dataView.metadata.objects, scatterChartProps.plotArea.transparency, visualBackgroundHelper.getDefaultTransparency()),\r\n };\r\n }\r\n }\r\n\r\n this.sharedColorPalette.clearPreferredScale();\r\n for (let i = 0, len = layers.length; i < len; i++) {\r\n layers[i].setData(getLayerData(dataViews, i, len), resized);\r\n\r\n if (len > 1)\r\n this.sharedColorPalette.rotateScale();\r\n }\r\n\r\n this.render(!this.hasSetData || options.suppressAnimations);\r\n\r\n this.hasSetData = this.hasSetData || (dataViews && dataViews.length > 0);\r\n\r\n if (dataViews && dataViews.length > 0) {\r\n let warnings = getInvalidValueWarnings(\r\n dataViews,\r\n false /*supportsNaN*/,\r\n false /*supportsNegativeInfinity*/,\r\n false /*supportsPositiveInfinity*/);\r\n\r\n this.axes.addWarnings(warnings);\r\n\r\n if (warnings && warnings.length > 0)\r\n this.hostServices.setWarnings(warnings);\r\n }\r\n }\r\n\r\n // TODO: Remove onDataChanged & onResizing once all visuals have implemented update.\r\n public onDataChanged(options: VisualDataChangedOptions): void {\r\n this.update({\r\n dataViews: options.dataViews,\r\n suppressAnimations: options.suppressAnimations,\r\n viewport: this.currentViewport\r\n });\r\n }\r\n\r\n // TODO: Remove onDataChanged & onResizing once all visuals have implemented update.\r\n public onResizing(viewport: IViewport): void {\r\n if (this.currentViewport && (this.currentViewport.height === viewport.height && this.currentViewport.width === viewport.width)) {\r\n return;\r\n }\r\n\r\n this.update({\r\n dataViews: this.dataViews,\r\n suppressAnimations: true,\r\n viewport: viewport\r\n });\r\n }\r\n\r\n public scrollTo(position: number): void {\r\n this.scrollableAxes.scrollTo(position);\r\n }\r\n\r\n public enumerateObjectInstances(options: EnumerateVisualObjectInstancesOptions): VisualObjectInstanceEnumeration {\r\n let enumeration = new ObjectEnumerationBuilder();\r\n let layersLength = this.layers ? this.layers.length : 0;\r\n\r\n if (options.objectName === 'legend') {\r\n if (!this.shouldShowLegendCard())\r\n return;\r\n let show = DataViewObject.getValue(this.legendObjectProperties, legendProps.show, this.legend.isVisible());\r\n let showTitle = DataViewObject.getValue(this.legendObjectProperties, legendProps.showTitle, true);\r\n let titleText = DataViewObject.getValue(this.legendObjectProperties, legendProps.titleText, this.layerLegendData ? this.layerLegendData.title : '');\r\n let labelColor = DataViewObject.getValue(this.legendObjectProperties, legendProps.labelColor, this.layerLegendData ? this.layerLegendData.labelColor : LegendData.DefaultLegendLabelFillColor);\r\n let fontSize = DataViewObject.getValue(this.legendObjectProperties, legendProps.fontSize, this.layerLegendData && this.layerLegendData.fontSize ? this.layerLegendData.fontSize : SVGLegend.DefaultFontSizeInPt);\r\n\r\n enumeration.pushInstance({\r\n selector: null,\r\n properties: {\r\n show: show,\r\n position: LegendPosition[this.legend.getOrientation()],\r\n showTitle: showTitle,\r\n titleText: titleText,\r\n labelColor: labelColor,\r\n fontSize: fontSize,\r\n },\r\n objectName: options.objectName\r\n });\r\n }\r\n else if (options.objectName === 'categoryAxis' && this.axes.hasCategoryAxis()) {\r\n this.getCategoryAxisValues(enumeration);\r\n }\r\n else if (options.objectName === 'valueAxis') {\r\n this.getValueAxisValues(enumeration);\r\n }\r\n else if (options.objectName === 'y1AxisReferenceLine' && this.referenceLinesEnabled) {\r\n let refLinedefaultColor = this.sharedColorPalette.getColorByIndex(0).value;\r\n ReferenceLineHelper.enumerateObjectInstances(enumeration, this.y1AxisReferenceLines, refLinedefaultColor, options.objectName);\r\n }\r\n else if (options.objectName === 'xAxisReferenceLine' && this.referenceLinesEnabled) {\r\n let refLinedefaultColor = this.sharedColorPalette.getColorByIndex(0).value;\r\n ReferenceLineHelper.enumerateObjectInstances(enumeration, this.xAxisReferenceLines, refLinedefaultColor, options.objectName);\r\n }\r\n else if (options.objectName === 'plotArea') {\r\n visualBackgroundHelper.enumeratePlot(enumeration, this.background, this.backgroundImageEnabled);\r\n }\r\n\r\n for (let i = 0, len = layersLength; i < len; i++) {\r\n let layer = this.layers[i];\r\n if (layer.enumerateObjectInstances) {\r\n layer.enumerateObjectInstances(enumeration, options);\r\n }\r\n }\r\n\r\n return enumeration.complete();\r\n }\r\n\r\n private shouldShowLegendCard(): boolean {\r\n let layers = this.layers;\r\n let dataViews = this.dataViews;\r\n\r\n if (layers && dataViews) {\r\n let layersLength = layers.length;\r\n let layersWithValuesCtr = 0;\r\n\r\n for (let i = 0; i < layersLength; i++) {\r\n if (layers[i].hasLegend()) {\r\n return true;\r\n }\r\n\r\n // if there are at least two layers with values legend card should be shown (even if each of the individual layers don't have legend)\r\n let dataView = dataViews[i];\r\n if (dataView && dataView.categorical && dataView.categorical.values && dataView.categorical.values.length > 0) {\r\n layersWithValuesCtr++;\r\n if (layersWithValuesCtr > 1) {\r\n return true;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n private getCategoryAxisValues(enumeration: ObjectEnumerationBuilder): void {\r\n if (!this.categoryAxisProperties) {\r\n return;\r\n }\r\n let supportedType = axisType.both;\r\n let isScalar = false;\r\n let logPossible = this.axes.isLogScaleAllowed(AxisLocation.X);\r\n let scaleOptions = [axisScale.log, axisScale.linear];//until options can be update in propPane, show all options\r\n\r\n if (this.layers && this.layers[0].getSupportedCategoryAxisType) {\r\n supportedType = this.layers[0].getSupportedCategoryAxisType();\r\n if (supportedType === axisType.scalar) {\r\n isScalar = true;\r\n }\r\n else {\r\n isScalar = CartesianHelper.isScalar(supportedType === axisType.both, this.categoryAxisProperties);\r\n }\r\n }\r\n\r\n if (!isScalar) {\r\n this.categoryAxisProperties['start'] = null;\r\n this.categoryAxisProperties['end'] = null;\r\n }\r\n\r\n let instance: VisualObjectInstance = {\r\n selector: null,\r\n properties: {},\r\n objectName: 'categoryAxis',\r\n validValues: {\r\n axisScale: scaleOptions,\r\n axisStyle: this.axes.categoryAxisHasUnitType ? [axisStyle.showTitleOnly, axisStyle.showUnitOnly, axisStyle.showBoth] : [axisStyle.showTitleOnly]\r\n }\r\n };\r\n\r\n instance.properties['show'] = this.categoryAxisProperties['show'] != null ? this.categoryAxisProperties['show'] : true;\r\n if (this.axes.isYAxisCategorical())//in case of e.g. barChart\r\n instance.properties['position'] = this.valueAxisProperties && this.valueAxisProperties['position'] != null ? this.valueAxisProperties['position'] : yAxisPosition.left;\r\n if (supportedType === axisType.both) {\r\n instance.properties['axisType'] = isScalar ? axisType.scalar : axisType.categorical;\r\n }\r\n if (isScalar) {\r\n instance.properties['axisScale'] = (this.categoryAxisProperties['axisScale'] != null && logPossible) ? this.categoryAxisProperties['axisScale'] : axisScale.linear;\r\n instance.properties['start'] = this.categoryAxisProperties['start'];\r\n instance.properties['end'] = this.categoryAxisProperties['end'];\r\n }\r\n instance.properties['showAxisTitle'] = this.categoryAxisProperties['showAxisTitle'] != null ? this.categoryAxisProperties['showAxisTitle'] : false;\r\n\r\n instance.properties['axisStyle'] = this.categoryAxisProperties['axisStyle'] ? this.categoryAxisProperties['axisStyle'] : axisStyle.showTitleOnly;\r\n instance.properties['labelColor'] = this.categoryAxisProperties['labelColor'];\r\n if (isScalar) {\r\n instance.properties['labelDisplayUnits'] = this.categoryAxisProperties['labelDisplayUnits'] ? this.categoryAxisProperties['labelDisplayUnits'] : 0;\r\n let labelPrecision = this.categoryAxisProperties['labelPrecision'];\r\n instance.properties['labelPrecision'] = (labelPrecision === undefined || labelPrecision < 0)\r\n ? dataLabelUtils.defaultLabelPrecision\r\n : labelPrecision;\r\n }\r\n enumeration.pushInstance(instance);\r\n }\r\n\r\n //todo: wrap all these object getters and other related stuff into an interface\r\n private getValueAxisValues(enumeration: ObjectEnumerationBuilder): void {\r\n if (!this.valueAxisProperties) {\r\n return;\r\n }\r\n let scaleOptions = [axisScale.log, axisScale.linear]; //until options can be update in propPane, show all options\r\n let logPossible = this.axes.isLogScaleAllowed(AxisLocation.Y1);\r\n let secLogPossible = this.axes.isLogScaleAllowed(AxisLocation.Y2);\r\n\r\n let instance: VisualObjectInstance = {\r\n selector: null,\r\n properties: {},\r\n objectName: 'valueAxis',\r\n validValues: {\r\n axisScale: scaleOptions,\r\n secAxisScale: scaleOptions,\r\n axisStyle: this.axes.valueAxisHasUnitType ? [axisStyle.showTitleOnly, axisStyle.showUnitOnly, axisStyle.showBoth] : [axisStyle.showTitleOnly]\r\n }\r\n };\r\n\r\n instance.properties['show'] = this.valueAxisProperties['show'] != null ? this.valueAxisProperties['show'] : true;\r\n\r\n if (!this.axes.isYAxisCategorical()) {\r\n instance.properties['position'] = this.valueAxisProperties['position'] != null ? this.valueAxisProperties['position'] : yAxisPosition.left;\r\n }\r\n instance.properties['axisScale'] = (this.valueAxisProperties['axisScale'] != null && logPossible) ? this.valueAxisProperties['axisScale'] : axisScale.linear;\r\n instance.properties['start'] = this.valueAxisProperties['start'];\r\n instance.properties['end'] = this.valueAxisProperties['end'];\r\n instance.properties['showAxisTitle'] = this.valueAxisProperties['showAxisTitle'] != null ? this.valueAxisProperties['showAxisTitle'] : false;\r\n instance.properties['axisStyle'] = this.valueAxisProperties['axisStyle'] != null ? this.valueAxisProperties['axisStyle'] : axisStyle.showTitleOnly;\r\n instance.properties['labelColor'] = this.valueAxisProperties['labelColor'];\r\n\r\n if (this.type !== CartesianChartType.HundredPercentStackedBar && this.type !== CartesianChartType.HundredPercentStackedColumn) {\r\n instance.properties['labelDisplayUnits'] = this.valueAxisProperties['labelDisplayUnits'] ? this.valueAxisProperties['labelDisplayUnits'] : 0;\r\n let labelPrecision = this.valueAxisProperties['labelPrecision'];\r\n instance.properties['labelPrecision'] = (labelPrecision === undefined || labelPrecision < 0)\r\n ? dataLabelUtils.defaultLabelPrecision\r\n : labelPrecision;\r\n }\r\n\r\n enumeration.pushInstance(instance);\r\n\r\n if (this.layers.length === 2) {\r\n instance.properties['secShow'] = this.valueAxisProperties['secShow'] != null ? this.valueAxisProperties['secShow'] : this.axes.hasY2Axis();\r\n if (instance.properties['secShow']) {\r\n instance.properties['axisLabel'] = '';\r\n }\r\n }\r\n\r\n if (this.axes.hasY2Axis() && instance.properties['secShow']) {\r\n enumeration.pushContainer({\r\n displayName: data.createDisplayNameGetter('Visual_YAxis_ShowSecondary'),\r\n });\r\n\r\n let secInstance: VisualObjectInstance = {\r\n selector: null,\r\n properties: {},\r\n objectName: 'valueAxis'\r\n };\r\n secInstance.properties['secAxisLabel'] = '';\r\n secInstance.properties['secPosition'] = this.valueAxisProperties['secPosition'] != null ? this.valueAxisProperties['secPosition'] : yAxisPosition.right;\r\n secInstance.properties['secAxisScale'] = this.valueAxisProperties['secAxisScale'] != null && secLogPossible ? this.valueAxisProperties['secAxisScale'] : axisScale.linear;\r\n secInstance.properties['secStart'] = this.valueAxisProperties['secStart'];\r\n secInstance.properties['secEnd'] = this.valueAxisProperties['secEnd'];\r\n secInstance.properties['secShowAxisTitle'] = this.valueAxisProperties['secShowAxisTitle'] != null ? this.valueAxisProperties['secShowAxisTitle'] : false;\r\n\r\n enumeration\r\n .pushInstance(secInstance)\r\n .pushInstance({\r\n selector: null,\r\n properties: {\r\n secAxisStyle: this.valueAxisProperties['secAxisStyle'] ? this.valueAxisProperties['secAxisStyle'] : axisStyle.showTitleOnly,\r\n labelColor: this.valueAxisProperties['secLabelColor'],\r\n secLabelDisplayUnits: this.valueAxisProperties['secLabelDisplayUnits'] ? this.valueAxisProperties['secLabelDisplayUnits'] : 0,\r\n secLabelPrecision: this.valueAxisProperties['secLabelPrecision'] < 0 ? 0 : this.valueAxisProperties['secLabelPrecision']\r\n },\r\n objectName: 'valueAxis',\r\n validValues: {\r\n secAxisStyle: this.axes.secondaryValueAxisHasUnitType ? [axisStyle.showTitleOnly, axisStyle.showUnitOnly, axisStyle.showBoth] : [axisStyle.showTitleOnly]\r\n },\r\n });\r\n\r\n enumeration.popContainer();\r\n }\r\n }\r\n\r\n public onClearSelection(): void {\r\n if (this.hasSetData) {\r\n for (let i = 0, len = this.layers.length; i < len; i++) {\r\n let layer = this.layers[i];\r\n layer.onClearSelection();\r\n layer.render(true /* suppressAnimations */);\r\n }\r\n }\r\n }\r\n\r\n private createAndInitLayers(dataViews: DataView[]): ICartesianVisual[] {\r\n let objects: DataViewObjects;\r\n if (dataViews && dataViews.length > 0) {\r\n let dataViewMetadata = dataViews[0].metadata;\r\n if (dataViewMetadata)\r\n objects = dataViewMetadata.objects;\r\n }\r\n \r\n // Create the layers\r\n let layers = CartesianLayerFactory.createLayers(\r\n this.type,\r\n objects,\r\n this.interactivityService,\r\n this.animator,\r\n this.axes.isScrollable,\r\n this.seriesLabelFormattingEnabled,\r\n this.tooltipsEnabled,\r\n this.lineChartLabelDensityEnabled);\r\n\r\n // Initialize the layers\r\n let cartesianOptions = <CartesianVisualInitOptions>Prototype.inherit(this.visualInitOptions);\r\n cartesianOptions.svg = this.svgAxes.getScrollableRegion();\r\n cartesianOptions.labelsContext = this.svgAxes.getLabelsRegion();\r\n cartesianOptions.cartesianHost = {\r\n updateLegend: data => this.legend.drawLegend(data, this.currentViewport),\r\n getSharedColors: () => this.sharedColorPalette,\r\n triggerRender: (suppressAnimations: boolean) => this.render(suppressAnimations),\r\n };\r\n cartesianOptions.chartType = this.type;\r\n\r\n for (let i = 0, len = layers.length; i < len; i++)\r\n layers[i].init(cartesianOptions);\r\n\r\n return layers;\r\n }\r\n\r\n private renderLegend(): void {\r\n let layers = this.layers;\r\n let legendData: LegendData = { title: \"\", dataPoints: [] };\r\n\r\n for (let i = 0, len = layers.length; i < len; i++) {\r\n this.layerLegendData = layers[i].calculateLegend();\r\n if (this.layerLegendData) {\r\n legendData.title = i === 0 ? this.layerLegendData.title || \"\"\r\n : legendData.title;\r\n legendData.labelColor = this.layerLegendData.labelColor;\r\n legendData.dataPoints = legendData.dataPoints.concat(this.layerLegendData.dataPoints || []);\r\n legendData.fontSize = this.layerLegendData.fontSize || SVGLegend.DefaultFontSizeInPt;\r\n if (this.layerLegendData.grouped) {\r\n legendData.grouped = true;\r\n }\r\n }\r\n }\r\n\r\n let legendProperties = this.legendObjectProperties;\r\n\r\n if (legendProperties) {\r\n LegendData.update(legendData, legendProperties);\r\n let position = <string>legendProperties[legendProps.position];\r\n\r\n if (position)\r\n this.legend.changeOrientation(LegendPosition[position]);\r\n }\r\n else {\r\n this.legend.changeOrientation(LegendPosition.Top);\r\n }\r\n\r\n if ((legendData.dataPoints.length === 1 && !legendData.grouped) || this.hideLegends()) {\r\n legendData.dataPoints = [];\r\n }\r\n\r\n this.legend.drawLegend(legendData, this.currentViewport);\r\n }\r\n\r\n private hideLegends(): boolean {\r\n if (this.cartesianSmallViewPortProperties) {\r\n if (this.cartesianSmallViewPortProperties.hideLegendOnSmallViewPort && (this.currentViewport.height < this.cartesianSmallViewPortProperties.MinHeightLegendVisible)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n private render(suppressAnimations: boolean): void {\r\n // Note: interactive legend shouldn't be rendered explicitly here\r\n // The interactive legend is being rendered in the render method of ICartesianVisual\r\n if (!(this.visualInitOptions.interactivity && this.visualInitOptions.interactivity.isInteractiveLegend)) {\r\n this.renderLegend();\r\n }\r\n\r\n let legendMargins = this.legendMargins = this.legend.getMargins();\r\n let legendOrientation = this.legend.getOrientation();\r\n let hideAxisLabels = this.hideAxisLabels(legendMargins);\r\n\r\n let plotAreaViewport: IViewport = {\r\n height: this.currentViewport.height - legendMargins.height,\r\n width: this.currentViewport.width - legendMargins.width\r\n };\r\n\r\n let padding = Prototype.inherit(SvgCartesianAxes.AxisPadding);\r\n let playAxisControlLayout: IRect;\r\n if (this.isPlayAxis()) {\r\n plotAreaViewport.height -= CartesianChart.PlayAxisBottomMargin;\r\n playAxisControlLayout = {\r\n left: Legend.isLeft(legendOrientation) ? legendMargins.width : 0,\r\n top: Legend.isTop(legendOrientation) ? legendMargins.height + plotAreaViewport.height : plotAreaViewport.height,\r\n height: CartesianChart.PlayAxisBottomMargin,\r\n width: plotAreaViewport.width\r\n };\r\n }\r\n\r\n this.chartAreaSvg.attr({\r\n 'width': plotAreaViewport.width,\r\n 'height': plotAreaViewport.height,\r\n });\r\n Legend.positionChartArea(this.chartAreaSvg, this.legend);\r\n\r\n let interactivityRightMargin = this.calculateInteractivityRightMargin();\r\n\r\n let axesLayout = this.axes.negotiateAxes(\r\n this.layers,\r\n plotAreaViewport,\r\n padding,\r\n playAxisControlLayout,\r\n hideAxisLabels,\r\n CartesianChart.TextProperties,\r\n interactivityRightMargin );\r\n\r\n // Even if the caller thinks animations are ok, now that we've laid out the axes and legend we should disable animations\r\n // if the plot area changed. Animations for property changes like legend on/off are not desired.\r\n let plotAreaHasChanged: boolean =\r\n !this.renderedPlotArea\r\n || (this.renderedPlotArea.height !== axesLayout.plotArea.height ||\r\n this.renderedPlotArea.width !== axesLayout.plotArea.width);\r\n suppressAnimations = suppressAnimations || plotAreaHasChanged;\r\n\r\n this.scrollableAxes.render(\r\n axesLayout,\r\n this.layers,\r\n suppressAnimations,\r\n (layers, axesLayout, suppressAnimations) => this.renderPlotArea(layers, axesLayout, suppressAnimations, legendMargins));\r\n\r\n this.renderedPlotArea = axesLayout.plotArea;\r\n }\r\n\r\n private getPlotAreaRect(axesLayout: CartesianAxesLayout, legendMargins: IViewport): IRect {\r\n let rect: Rect = {\r\n left: axesLayout.margin.left,\r\n top: axesLayout.margin.top,\r\n width: axesLayout.plotArea.width,\r\n height: axesLayout.plotArea.height,\r\n };\r\n\r\n // Adjust the margins to the legend position \r\n if (this.legend) {\r\n let legendPosition = this.legend.getOrientation();\r\n\r\n if (Legend.isTop(legendPosition)) {\r\n rect.top += legendMargins.height;\r\n }\r\n else if (Legend.isLeft(legendPosition)) {\r\n rect.left += legendMargins.width;\r\n }\r\n }\r\n\r\n return rect;\r\n }\r\n\r\n private renderBackgroundImage(layout: IRect): void {\r\n visualBackgroundHelper.renderBackgroundImage(\r\n this.background,\r\n this.element,\r\n layout);\r\n }\r\n\r\n private hideAxisLabels(legendMargins: IViewport): boolean {\r\n if (this.cartesianSmallViewPortProperties) {\r\n if (this.cartesianSmallViewPortProperties.hideAxesOnSmallViewPort && ((this.currentViewport.height + legendMargins.height) < this.cartesianSmallViewPortProperties.MinHeightAxesVisible) && !this.visualInitOptions.interactivity.isInteractiveLegend) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n private calculateInteractivityRightMargin(): number {\r\n // add right margin in order not to cut the circle selection of the hover line \r\n if (this.visualInitOptions.interactivity && this.visualInitOptions.interactivity.isInteractiveLegend && !this.trimOrdinalDataOnOverflow) {\r\n return INTERACTIVITY_RIGHT_MARGIN;\r\n } else {\r\n return 0;\r\n } \r\n }\r\n\r\n private renderPlotArea(\r\n layers: ICartesianVisual[],\r\n axesLayout: CartesianAxesLayout,\r\n suppressAnimations: boolean,\r\n legendMargins: IViewport): void {\r\n debug.assertValue(layers, 'layers');\r\n\r\n let axes = axesLayout.axes;\r\n let plotArea = axesLayout.plotArea;\r\n let plotAreaRect = this.getPlotAreaRect(axesLayout, legendMargins);\r\n let duration = AnimatorCommon.GetAnimationDuration(this.animator, suppressAnimations);\r\n\r\n this.renderBackgroundImage(plotAreaRect);\r\n\r\n this.svgAxes.renderAxes(axesLayout, duration);\r\n\r\n this.renderReferenceLines(axesLayout);\r\n\r\n this.renderLayers(layers, plotArea, axes, suppressAnimations);\r\n }\r\n\r\n private renderReferenceLines(axesLayout: CartesianAxesLayout): void {\r\n let axes = axesLayout.axes;\r\n let plotArea = axesLayout.plotArea;\r\n let scrollableRegion = this.svgAxes.getScrollableRegion();\r\n let refLineDefaultColor = this.sharedColorPalette.getColorByIndex(0).value;\r\n\r\n let showY1ReferenceLines = false;\r\n if (this.y1AxisReferenceLines) {\r\n for (let referenceLineProperties of this.y1AxisReferenceLines) {\r\n let object: DataViewObject = referenceLineProperties.object;\r\n if (object[ReferenceLineHelper.referenceLineProps.show]) {\r\n\r\n let isHorizontal = !axes.y1.isCategoryAxis;\r\n let y1RefLineOptions = {\r\n graphicContext: scrollableRegion,\r\n referenceLineProperties: object,\r\n axes: axes,\r\n viewport: plotArea,\r\n classAndSelector: this.y1RefLine,\r\n defaultColor: refLineDefaultColor,\r\n isHorizontal: isHorizontal\r\n };\r\n\r\n ReferenceLineHelper.render(y1RefLineOptions);\r\n showY1ReferenceLines = true;\r\n }\r\n }\r\n }\r\n\r\n if (!showY1ReferenceLines) {\r\n scrollableRegion.selectAll(this.y1RefLine.selector).remove();\r\n }\r\n\r\n let showXReferenceLines = false;\r\n if (this.xAxisReferenceLines) {\r\n for (let referenceLineProperties of this.xAxisReferenceLines) {\r\n let object: DataViewObject = referenceLineProperties.object;\r\n if (object[ReferenceLineHelper.referenceLineProps.show]) {\r\n let isHorizontal = false;\r\n let xRefLineOptions = {\r\n graphicContext: scrollableRegion,\r\n referenceLineProperties: object,\r\n axes: axes,\r\n viewport: plotArea,\r\n classAndSelector: this.xRefLine,\r\n defaultColor: refLineDefaultColor,\r\n isHorizontal: isHorizontal\r\n };\r\n\r\n ReferenceLineHelper.render(xRefLineOptions);\r\n showXReferenceLines = true;\r\n }\r\n }\r\n }\r\n\r\n if (!showXReferenceLines) {\r\n scrollableRegion.selectAll(this.xRefLine.selector).remove();\r\n }\r\n }\r\n\r\n private getReferenceLineLabels(axes: CartesianAxisProperties, plotArea: IViewport): LabelDataPoint[] {\r\n let refLineDefaultColor = this.sharedColorPalette.getColorByIndex(0).value;\r\n let referenceLineLabels: LabelDataPoint[] = [];\r\n if (this.y1AxisReferenceLines) {\r\n for (let referenceLineProperties of this.y1AxisReferenceLines) {\r\n let object: DataViewObject = referenceLineProperties.object;\r\n if (object[ReferenceLineHelper.referenceLineProps.show] && object[ReferenceLineHelper.referenceLineProps.dataLabelShow]) {\r\n let isHorizontal = !axes.y1.isCategoryAxis;\r\n let y1RefLineLabelOptions: ReferenceLineDataLabelOptions = {\r\n referenceLineProperties: object,\r\n axes: axes,\r\n viewport: plotArea,\r\n defaultColor: refLineDefaultColor,\r\n isHorizontal: isHorizontal,\r\n key: JSON.stringify({\r\n type: 'y1AxisReferenceLine',\r\n id: referenceLineProperties.id,\r\n }),\r\n };\r\n\r\n referenceLineLabels.push(ReferenceLineHelper.createLabelDataPoint(y1RefLineLabelOptions));\r\n }\r\n }\r\n }\r\n\r\n if (this.xAxisReferenceLines) {\r\n for (let referenceLineProperties of this.xAxisReferenceLines) {\r\n let object: DataViewObject = referenceLineProperties.object;\r\n if (object[ReferenceLineHelper.referenceLineProps.show] && object[ReferenceLineHelper.referenceLineProps.dataLabelShow]) {\r\n let isHorizontal = false;\r\n let xRefLineLabelOptions: ReferenceLineDataLabelOptions = {\r\n referenceLineProperties: object,\r\n axes: axes,\r\n viewport: plotArea,\r\n defaultColor: refLineDefaultColor,\r\n isHorizontal: isHorizontal,\r\n key: JSON.stringify({\r\n type: 'xAxisReferenceLine',\r\n id: referenceLineProperties.id,\r\n }),\r\n };\r\n\r\n referenceLineLabels.push(ReferenceLineHelper.createLabelDataPoint(xRefLineLabelOptions));\r\n }\r\n }\r\n }\r\n\r\n return referenceLineLabels;\r\n }\r\n\r\n private renderDataLabels(labelDataPointGroups: LabelDataPointsGroup[], labelsAreNumeric: boolean, plotArea: IViewport, suppressAnimations: boolean, isCombo: boolean): void {\r\n let labelBackgroundRegion = this.svgAxes.getLabelBackground();\r\n let labelRegion = this.svgAxes.getLabelsRegion();\r\n\r\n if (this.behavior) {\r\n let labelLayoutOptions = NewDataLabelUtils.getDataLabelLayoutOptions(this.type);\r\n let labelLayout = new LabelLayout(labelLayoutOptions);\r\n let dataLabels = labelLayout.layout(labelDataPointGroups, plotArea);\r\n\r\n if (isCombo) {\r\n NewDataLabelUtils.drawLabelBackground(labelBackgroundRegion, dataLabels, \"#FFFFFF\", 0.7);\r\n }\r\n\r\n let svgLabels: D3.UpdateSelection;\r\n if (this.animator && !suppressAnimations) {\r\n let isPlayAxis = this.isPlayAxis();\r\n let duration = isPlayAxis ? PlayChart.FrameAnimationDuration : this.animator.getDuration();\r\n svgLabels = NewDataLabelUtils.animateDefaultLabels(labelRegion, dataLabels, duration, labelsAreNumeric, isPlayAxis ? 'linear' : undefined);\r\n }\r\n else {\r\n svgLabels = NewDataLabelUtils.drawDefaultLabels(labelRegion, dataLabels, labelsAreNumeric);\r\n }\r\n\r\n if (labelLayoutOptions.allowLeaderLines) {\r\n let filteredLabels = _.filter(dataLabels, (d: Label) => d.leaderLinePoints != null && !_.isEmpty(d.leaderLinePoints) && d.identity != null);\r\n NewDataLabelUtils.drawLabelLeaderLines(labelRegion, filteredLabels, (d: Label) => d.identity.getKey());\r\n }\r\n\r\n if (this.interactivityService && this.isLabelInteractivityEnabled) {\r\n let labelsBehaviorOptions: LabelsBehaviorOptions = {\r\n labelItems: svgLabels,\r\n };\r\n this.interactivityService.bind(dataLabels, new LabelsBehavior(), labelsBehaviorOptions, { isLabels: true });\r\n }\r\n }\r\n else {\r\n let labelLayout = new LabelLayout({\r\n maximumOffset: NewDataLabelUtils.maxLabelOffset,\r\n startingOffset: NewDataLabelUtils.startingLabelOffset,\r\n attemptToMoveLabelsIntoViewport: true,\r\n });\r\n\r\n let dataLabels = labelLayout.layout(labelDataPointGroups, plotArea);\r\n\r\n if (isCombo) {\r\n NewDataLabelUtils.drawLabelBackground(labelBackgroundRegion, dataLabels, \"#FFFFFF\", 0.7);\r\n }\r\n NewDataLabelUtils.drawDefaultLabels(labelRegion, dataLabels, labelsAreNumeric);\r\n }\r\n }\r\n\r\n private renderLayers(layers: ICartesianVisual[], plotArea: IViewport, axes: CartesianAxisProperties, suppressAnimations: boolean): void {\r\n let labelDataPointGroups: LabelDataPointsGroup[] = [];\r\n let dataPoints: SelectableDataPoint[] = [];\r\n let layerBehaviorOptions: any[] = [];\r\n let labelsAreNumeric: boolean = true;\r\n for (let i = 0, len = layers.length; i < len; i++) {\r\n let result = layers[i].render(suppressAnimations);\r\n if (result) {\r\n if (this.behavior) {\r\n // NOTE: these are not needed if we don't have interactivity\r\n dataPoints = dataPoints.concat(result.dataPoints);\r\n layerBehaviorOptions.push(result.behaviorOptions);\r\n }\r\n\r\n if (result.labelDataPointGroups) {\r\n let resultLabelDataPointsGroups = result.labelDataPointGroups;\r\n for (let resultLabelDataPointsGroup of resultLabelDataPointsGroups) {\r\n labelDataPointGroups.push({\r\n labelDataPoints: NewDataLabelUtils.removeDuplicates(resultLabelDataPointsGroup.labelDataPoints),\r\n maxNumberOfLabels: resultLabelDataPointsGroup.maxNumberOfLabels,\r\n });\r\n }\r\n }\r\n else {\r\n let resultsLabelDataPoints = result.labelDataPoints;\r\n labelDataPointGroups.push({\r\n labelDataPoints: NewDataLabelUtils.removeDuplicates(resultsLabelDataPoints),\r\n maxNumberOfLabels: resultsLabelDataPoints.length,\r\n });\r\n }\r\n\r\n labelsAreNumeric = labelsAreNumeric && result.labelsAreNumeric;\r\n }\r\n }\r\n\r\n let referenceLineLabels = this.getReferenceLineLabels(axes, plotArea);\r\n if (!_.isEmpty(referenceLineLabels)) {\r\n labelDataPointGroups.unshift({\r\n labelDataPoints: referenceLineLabels,\r\n maxNumberOfLabels: referenceLineLabels.length,\r\n });\r\n }\r\n\r\n this.renderDataLabels(\r\n labelDataPointGroups,\r\n labelsAreNumeric,\r\n plotArea,\r\n suppressAnimations,\r\n (layers.length > 1));\r\n\r\n if (this.interactivityService) {\r\n let behaviorOptions: CartesianBehaviorOptions = {\r\n layerOptions: layerBehaviorOptions,\r\n clearCatcher: this.clearCatcher,\r\n };\r\n\r\n this.interactivityService.bind(dataPoints, this.behavior, behaviorOptions);\r\n }\r\n }\r\n\r\n /**\r\n * Returns the actual viewportWidth if visual is not scrollable.\r\n * @return If visual is scrollable, returns the plot area needed to draw all the datapoints.\r\n */\r\n public static getPreferredPlotArea(\r\n categoryCount: number,\r\n categoryThickness: number,\r\n viewport: IViewport,\r\n isScrollable: boolean,\r\n isScalar: boolean): IViewport {\r\n\r\n let preferredViewport: IViewport = {\r\n height: viewport.height,\r\n width: viewport.width\r\n };\r\n if (!isScalar && isScrollable) {\r\n let preferredWidth = CartesianChart.getPreferredCategorySpan(categoryCount, categoryThickness);\r\n preferredViewport.width = Math.max(preferredWidth, viewport.width);\r\n }\r\n return preferredViewport;\r\n }\r\n\r\n /**\r\n * Returns preferred Category span if the visual is scrollable.\r\n */\r\n public static getPreferredCategorySpan(categoryCount: number, categoryThickness: number): number {\r\n return categoryThickness * (categoryCount + (CartesianChart.OuterPaddingRatio * 2));\r\n }\r\n \r\n /**\r\n * Note: Public for testing access.\r\n */\r\n public static getLayout(data: ColumnChartData, options: CategoryLayoutOptions): CategoryLayout {\r\n let categoryCount = options.categoryCount,\r\n availableWidth = options.availableWidth,\r\n domain = options.domain,\r\n trimOrdinalDataOnOverflow = options.trimOrdinalDataOnOverflow,\r\n isScalar = !!options.isScalar,\r\n isScrollable = !!options.isScrollable;\r\n\r\n let categoryThickness = CartesianChart.getCategoryThickness(data ? data.series : null, categoryCount, availableWidth, domain, isScalar, trimOrdinalDataOnOverflow);\r\n\r\n // Total width of the outer padding, the padding that exist on the far right and far left of the chart.\r\n let totalOuterPadding = categoryThickness * CartesianChart.OuterPaddingRatio * 2;\r\n\r\n // visibleCategoryCount will be used to discard data that overflows on ordinal-axis charts.\r\n // Needed for dashboard visuals \r\n let calculatedBarCount = Math.round((availableWidth - totalOuterPadding) / categoryThickness);\r\n let visibleCategoryCount = Math.min(calculatedBarCount, categoryCount);\r\n\r\n let outerPaddingRatio = CartesianChart.OuterPaddingRatio;\r\n if (!isScalar) {\r\n // use dynamic outer padding\r\n let oneOuterPadding = (availableWidth - (categoryThickness * visibleCategoryCount)) / 2;\r\n outerPaddingRatio = oneOuterPadding / categoryThickness;\r\n }\r\n\r\n // If scrollable, visibleCategoryCount will be total categories\r\n if (!isScalar && isScrollable)\r\n visibleCategoryCount = categoryCount;\r\n\r\n return {\r\n categoryCount: visibleCategoryCount,\r\n categoryThickness: categoryThickness,\r\n outerPaddingRatio: outerPaddingRatio,\r\n isScalar: isScalar\r\n };\r\n }\r\n\r\n /** \r\n * Returns the thickness for each category.\r\n * For clustered charts, you still need to divide by\r\n * the number of series to get column width after calling this method.\r\n * For linear or time scales, category thickness accomodates for\r\n * the minimum interval between consequtive points.\r\n * For all types, return value has accounted for outer padding,\r\n * but not inner padding.\r\n */\r\n public static getCategoryThickness(seriesList: CartesianSeries[], numCategories: number, plotLength: number, domain: number[], isScalar: boolean, trimOrdinalDataOnOverflow: boolean): number {\r\n let thickness;\r\n if (numCategories < 2)\r\n thickness = plotLength * (1 - CartesianChart.OuterPaddingRatio);\r\n else if (isScalar && domain && domain.length > 1) {\r\n // the smallest interval defines the column width.\r\n let minInterval = CartesianChart.getMinInterval(seriesList);\r\n let domainSpan = domain[domain.length - 1] - domain[0];\r\n // account for outside padding\r\n let ratio = minInterval / (domainSpan + (minInterval * CartesianChart.OuterPaddingRatio * 2));\r\n thickness = plotLength * ratio;\r\n thickness = Math.max(thickness, CartesianChart.MinScalarRectThickness);\r\n }\r\n else {\r\n // Divide the available width up including outer padding (in terms of category thickness) on\r\n // both sides of the chart, and categoryCount categories. Reverse math:\r\n // availableWidth = (categoryThickness * categoryCount) + (categoryThickness * (outerPadding * 2)),\r\n // availableWidth = categoryThickness * (categoryCount + (outerPadding * 2)),\r\n // categoryThickness = availableWidth / (categoryCount + (outerpadding * 2))\r\n thickness = plotLength / (numCategories + (CartesianChart.OuterPaddingRatio * 2));\r\n if (trimOrdinalDataOnOverflow) { \r\n thickness = Math.max(thickness, CartesianChart.MinOrdinalRectThickness); \r\n }\r\n }\r\n \r\n // spec calls for using the whole plot area, but the max rectangle thickness is \"as if there were three categories\"\r\n // (outerPaddingRatio has the same units as '# of categories' so they can be added)\r\n let maxRectThickness = plotLength / (3 + (CartesianChart.OuterPaddingRatio * 2));\r\n\r\n thickness = Math.min(thickness, maxRectThickness);\r\n \r\n if (!isScalar && numCategories >= 3 && trimOrdinalDataOnOverflow) {\r\n return Math.max(thickness, CartesianChart.MinOrdinalRectThickness);\r\n }\r\n\r\n return thickness;\r\n }\r\n\r\n private static getMinInterval(seriesList: CartesianSeries[]): number {\r\n let minInterval = Number.MAX_VALUE;\r\n if (seriesList.length > 0) {\r\n let series0data = seriesList[0].data.filter(d => !d.highlight);\r\n for (let i = 0, ilen = series0data.length - 1; i < ilen; i++) {\r\n minInterval = Math.min(minInterval, Math.abs(series0data[i + 1].categoryValue - series0data[i].categoryValue));\r\n }\r\n }\r\n return minInterval;\r\n }\r\n }\r\n\r\n function getLayerData(dataViews: DataView[], currentIdx: number, totalLayers: number): DataView[] {\r\n if (totalLayers > 1) {\r\n if (dataViews && dataViews.length > currentIdx)\r\n return [dataViews[currentIdx]];\r\n return [];\r\n }\r\n\r\n return dataViews;\r\n }\r\n\r\n function hasMultipleYAxes(layers: ICartesianVisual[]): boolean {\r\n debug.assertValue(layers, 'layers');\r\n\r\n return layers.length > 1;\r\n }\r\n\r\n /**\r\n * Returns a boolean, that indicates if y axis title should be displayed.\r\n * @return True if y axis title should be displayed,\r\n * otherwise false.\r\n */\r\n function shouldShowYAxisLabel(layerNumber: number, valueAxisProperties: DataViewObject, yAxisWillMerge: boolean): boolean {\r\n return ((layerNumber === 0 && !!valueAxisProperties && !!valueAxisProperties['showAxisTitle']) ||\r\n (layerNumber === 1 && !yAxisWillMerge && !!valueAxisProperties && !!valueAxisProperties['secShowAxisTitle']));\r\n }\r\n\r\n function tryMergeYDomains(layers: ICartesianVisual[], visualOptions: CalculateScaleAndDomainOptions): MergedValueAxisResult {\r\n debug.assert(layers.length < 3, 'merging of more than 2 layers is not supported');\r\n\r\n let noMerge: MergedValueAxisResult = {\r\n domain: undefined,\r\n merged: false,\r\n tickCount: undefined,\r\n forceStartToZero: false\r\n };\r\n\r\n if (layers.length < 2)\r\n return noMerge;\r\n\r\n let min: number;\r\n let max: number;\r\n let minOfMax: number;\r\n let maxOfMin: number;\r\n\r\n // TODO: replace full calculateAxesProperties with just a data domain calc\r\n // we need to be aware of which chart require zero (column/bar) and which don't (line)\r\n let y1props = layers[0].calculateAxesProperties(visualOptions)[1];\r\n let y2props = layers[1].calculateAxesProperties(visualOptions)[1];\r\n let firstYDomain = y1props.scale.domain();\r\n let secondYDomain = y2props.scale.domain();\r\n\r\n if (firstYDomain[0] >= 0 && secondYDomain[0] >= 0) {\r\n noMerge.forceStartToZero = true;\r\n }\r\n\r\n if (y1props.values && y1props.values.length > 0 && y2props.values && y2props.values.length > 0) {\r\n noMerge.tickCount = Math.max(y1props.values.length, y2props.values.length);\r\n }\r\n\r\n min = Math.min(firstYDomain[0], secondYDomain[0]);\r\n max = Math.max(firstYDomain[1], secondYDomain[1]);\r\n\r\n if (visualOptions.forceMerge) {\r\n return {\r\n domain: [min, max],\r\n merged: true,\r\n tickCount: noMerge.tickCount,\r\n forceStartToZero: false\r\n };\r\n }\r\n\r\n // If domains don't intersect don't merge axis.\r\n if (firstYDomain[0] > secondYDomain[1] || firstYDomain[1] < secondYDomain[0])\r\n return noMerge;\r\n\r\n maxOfMin = Math.max(firstYDomain[0], secondYDomain[0]);\r\n minOfMax = Math.min(firstYDomain[1], secondYDomain[1]);\r\n\r\n let range = (max - min);\r\n\r\n if (range === 0) {\r\n return noMerge;\r\n }\r\n\r\n let intersection = Math.abs((minOfMax - maxOfMin) / range);\r\n\r\n // Only merge if intersection of domains greater than 10% of total range.\r\n if (intersection < COMBOCHART_DOMAIN_OVERLAP_TRESHOLD_PERCENTAGE)\r\n return noMerge;\r\n else\r\n return {\r\n domain: [min, max],\r\n merged: true,\r\n tickCount: noMerge.tickCount,\r\n forceStartToZero: false\r\n };\r\n }\r\n\r\n /** \r\n * Computes the Cartesian Chart axes from the set of layers.\r\n */\r\n function calculateAxes(\r\n layers: ICartesianVisual[],\r\n viewport: IViewport,\r\n margin: IMargin,\r\n playAxisControlLayout: IRect,\r\n categoryAxisProperties: DataViewObject,\r\n valueAxisProperties: DataViewObject,\r\n textProperties: TextProperties,\r\n scrollbarVisible: boolean,\r\n existingAxisProperties: CartesianAxisProperties,\r\n trimOrdinalDataOnOverflow: boolean): CartesianAxisProperties {\r\n debug.assertValue(layers, 'layers');\r\n\r\n let visualOptions: CalculateScaleAndDomainOptions = {\r\n viewport: viewport,\r\n margin: margin,\r\n forcedXDomain: [categoryAxisProperties ? categoryAxisProperties['start'] : null, categoryAxisProperties ? categoryAxisProperties['end'] : null],\r\n forceMerge: valueAxisProperties && valueAxisProperties['secShow'] === false,\r\n showCategoryAxisLabel: false,\r\n showValueAxisLabel: false,\r\n trimOrdinalDataOnOverflow: trimOrdinalDataOnOverflow,\r\n categoryAxisScaleType: categoryAxisProperties && categoryAxisProperties['axisScale'] != null ? <string>categoryAxisProperties['axisScale'] : axisScale.linear,\r\n valueAxisScaleType: valueAxisProperties && valueAxisProperties['axisScale'] != null ? <string>valueAxisProperties['axisScale'] : axisScale.linear,\r\n categoryAxisDisplayUnits: categoryAxisProperties && categoryAxisProperties['labelDisplayUnits'] != null ? <number>categoryAxisProperties['labelDisplayUnits'] : 0,\r\n valueAxisDisplayUnits: valueAxisProperties && valueAxisProperties['labelDisplayUnits'] != null ? <number>valueAxisProperties['labelDisplayUnits'] : 0,\r\n categoryAxisPrecision: categoryAxisProperties ? CartesianHelper.getPrecision(categoryAxisProperties['labelPrecision']) : null,\r\n valueAxisPrecision: valueAxisProperties ? CartesianHelper.getPrecision(valueAxisProperties['labelPrecision']) : null,\r\n playAxisControlLayout: playAxisControlLayout,\r\n };\r\n\r\n let skipMerge = valueAxisProperties && valueAxisProperties['secShow'] === true;\r\n let yAxisWillMerge = false;\r\n let mergeResult: MergedValueAxisResult;\r\n if (hasMultipleYAxes(layers) && !skipMerge) {\r\n mergeResult = tryMergeYDomains(layers, visualOptions);\r\n yAxisWillMerge = mergeResult.merged;\r\n if (yAxisWillMerge) {\r\n visualOptions.forcedYDomain = mergeResult.domain;\r\n }\r\n else {\r\n visualOptions.forcedTickCount = mergeResult.tickCount;\r\n }\r\n }\r\n\r\n if (valueAxisProperties) {\r\n visualOptions.forcedYDomain = AxisHelper.applyCustomizedDomain([valueAxisProperties['start'], valueAxisProperties['end']], visualOptions.forcedYDomain);\r\n }\r\n\r\n let result: CartesianAxisProperties;\r\n for (let layerNumber = 0, len = layers.length; layerNumber < len; layerNumber++) {\r\n let currentlayer = layers[layerNumber];\r\n\r\n if (layerNumber === 1 && !yAxisWillMerge) {\r\n visualOptions.forcedYDomain = valueAxisProperties ? [valueAxisProperties['secStart'], valueAxisProperties['secEnd']] : null;\r\n visualOptions.valueAxisScaleType = valueAxisProperties && valueAxisProperties['secAxisScale'] != null ? <string>valueAxisProperties['secAxisScale'] : axisScale.linear;\r\n visualOptions.valueAxisDisplayUnits = valueAxisProperties && valueAxisProperties['secLabelDisplayUnits'] != null ? <number>valueAxisProperties['secLabelDisplayUnits'] : 0;\r\n visualOptions.valueAxisPrecision = valueAxisProperties ? CartesianHelper.getPrecision(valueAxisProperties['secLabelPrecision']) : null;\r\n if (mergeResult && mergeResult.forceStartToZero) {\r\n if (!visualOptions.forcedYDomain) {\r\n visualOptions.forcedYDomain = [0, undefined];\r\n }\r\n else if (visualOptions.forcedYDomain[0] == null) {\r\n visualOptions.forcedYDomain[0] = 0;//only set when user didn't choose a value\r\n }\r\n }\r\n }\r\n visualOptions.showCategoryAxisLabel = (!!categoryAxisProperties && !!categoryAxisProperties['showAxisTitle']);//here\r\n\r\n visualOptions.showValueAxisLabel = shouldShowYAxisLabel(layerNumber, valueAxisProperties, yAxisWillMerge);\r\n\r\n let axes = currentlayer.calculateAxesProperties(visualOptions);\r\n\r\n if (layerNumber === 0) {\r\n result = {\r\n x: axes[0],\r\n y1: axes[1]\r\n };\r\n }\r\n else if (axes && !result.y2) {\r\n if (axes[0].axis.scale().domain().length > result.x.axis.scale().domain().length) {\r\n visualOptions.showValueAxisLabel = (!!valueAxisProperties && !!valueAxisProperties['showAxisTitle']);\r\n\r\n let axes = currentlayer.calculateAxesProperties(visualOptions);\r\n // no categories returned for the first layer, use second layer x-axis properties\r\n result.x = axes[0];\r\n // and 2nd value axis to be the primary\r\n result.y1 = axes[1];\r\n }\r\n else {\r\n // make sure all layers use the same x-axis/scale for drawing\r\n currentlayer.overrideXScale(result.x);\r\n if (!yAxisWillMerge && !axes[1].usingDefaultDomain)\r\n result.y2 = axes[1];\r\n }\r\n }\r\n\r\n if (existingAxisProperties && existingAxisProperties.x) {\r\n result.x.willLabelsFit = existingAxisProperties.x.willLabelsFit;\r\n result.x.willLabelsWordBreak = existingAxisProperties.x.willLabelsWordBreak;\r\n } else {\r\n let width = viewport.width - (margin.left + margin.right);\r\n result.x.willLabelsFit = AxisHelper.LabelLayoutStrategy.willLabelsFit(\r\n result.x,\r\n width,\r\n TextMeasurementService.measureSvgTextWidth,\r\n textProperties);\r\n\r\n // If labels do not fit and we are not scrolling, try word breaking\r\n result.x.willLabelsWordBreak = (!result.x.willLabelsFit && !scrollbarVisible) && AxisHelper.LabelLayoutStrategy.willLabelsWordBreak(\r\n result.x,\r\n margin,\r\n width,\r\n TextMeasurementService.measureSvgTextWidth,\r\n TextMeasurementService.estimateSvgTextHeight,\r\n TextMeasurementService.getTailoredTextOrDefault,\r\n textProperties);\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n\r\n const enum AxisLocation {\r\n X,\r\n Y1,\r\n Y2,\r\n }\r\n\r\n interface CartesianAxesLayout {\r\n axes: CartesianAxisProperties;\r\n margin: IMargin;\r\n marginLimits: IMargin;\r\n axisLabels: ChartAxesLabels;\r\n viewport: IViewport;\r\n plotArea: IViewport;\r\n preferredPlotArea: IViewport;\r\n tickLabelMargins: any;\r\n tickPadding: IMargin;\r\n }\r\n\r\n class SvgBrush {\r\n private element: D3.Selection;\r\n private brushGraphicsContext: D3.Selection;\r\n private brushContext: D3.Selection;\r\n private brush: D3.Svg.Brush;\r\n private brushWidth: number;\r\n private scrollCallback: () => void;\r\n private isHorizontal: boolean;\r\n\r\n private static Brush = createClassAndSelector('brush');\r\n private static FillOpacity = 0.125;\r\n\r\n constructor(brushWidth: number) {\r\n this.brush = d3.svg.brush();\r\n this.brushWidth = brushWidth;\r\n }\r\n\r\n public init(element: D3.Selection): void {\r\n this.element = element;\r\n }\r\n\r\n public remove(): void {\r\n this.element.selectAll(SvgBrush.Brush.selector).remove();\r\n this.brushGraphicsContext = undefined;\r\n }\r\n\r\n public getExtent(): number[] {\r\n return this.brush.extent();\r\n }\r\n\r\n public setExtent(extent: number[]): void {\r\n this.brush.extent(extent);\r\n }\r\n\r\n public setScale(scale: D3.Scale.OrdinalScale): void {\r\n if (this.isHorizontal)\r\n this.brush.x(scale);\r\n else\r\n this.brush.y(scale);\r\n }\r\n\r\n public setOrientation(isHorizontal: boolean): void {\r\n this.isHorizontal = isHorizontal;\r\n }\r\n\r\n public renderBrush(\r\n extentLength: number,\r\n brushX: number,\r\n brushY: number,\r\n scrollCallback: () => void): void {\r\n if (!this.brushGraphicsContext) {\r\n this.brushGraphicsContext = this.element.append(\"g\")\r\n .classed(SvgBrush.Brush.class, true);\r\n }\r\n\r\n this.scrollCallback = scrollCallback;\r\n\r\n this.brush\r\n .on(\"brush\", () => window.requestAnimationFrame(scrollCallback))\r\n .on(\"brushend\", () => this.resizeExtent(extentLength, this.isHorizontal));\r\n\r\n let brushContext = this.brushContext = this.brushGraphicsContext\r\n .attr({\r\n \"transform\": SVGUtil.translate(brushX, brushY),\r\n \"drag-resize-disabled\": \"true\" /* Disables resizing of the visual when dragging the scrollbar in edit mode */\r\n })\r\n .call(this.brush);\r\n \r\n /* Disabling the zooming feature */\r\n brushContext.selectAll(\".resize rect\")\r\n .remove();\r\n\r\n brushContext.select(\".background\")\r\n .style('cursor', 'default');\r\n\r\n brushContext.selectAll(\".extent\")\r\n .style({\r\n \"fill-opacity\": SvgBrush.FillOpacity,\r\n \"cursor\": \"default\",\r\n });\r\n\r\n if (this.isHorizontal)\r\n brushContext.selectAll(\"rect\").attr(\"height\", this.brushWidth);\r\n else\r\n brushContext.selectAll(\"rect\").attr(\"width\", this.brushWidth);\r\n }\r\n\r\n public scroll(): void {\r\n this.scrollCallback();\r\n }\r\n\r\n private resizeExtent(extentLength: number, isHorizontal: boolean): void {\r\n let brushContext = this.brushContext;\r\n if (isHorizontal)\r\n brushContext.select(\".extent\").attr(\"width\", extentLength);\r\n else\r\n brushContext.select(\".extent\").attr(\"height\", extentLength);\r\n }\r\n }\r\n\r\n class ScrollableAxes {\r\n public static ScrollbarWidth = 10;\r\n\r\n private brush: SvgBrush;\r\n private brushMinExtent: number;\r\n private scrollScale: D3.Scale.OrdinalScale;\r\n\r\n private axes: CartesianAxes;\r\n\r\n constructor(axes: CartesianAxes, svgBrush: SvgBrush) {\r\n this.axes = axes;\r\n this.brush = svgBrush;\r\n }\r\n\r\n private filterDataToViewport(mainAxisScale: D3.Scale.OrdinalScale, layers: ICartesianVisual[], axes: CartesianAxisProperties, scrollScale: D3.Scale.OrdinalScale, extent: number[]): void {\r\n if (scrollScale) {\r\n let selected: number[];\r\n let data: CartesianData[] = [];\r\n\r\n let startValue = extent[0];\r\n let endValue = extent[1];\r\n\r\n let pixelStepSize = scrollScale(1) - scrollScale(0);\r\n let startIndex = Math.floor(startValue / pixelStepSize);\r\n let sliceLength = Math.ceil((endValue - startValue) / pixelStepSize);\r\n let endIndex = startIndex + sliceLength; // NOTE: Intentionally one past the end index for use with slice(start,end)\r\n let domain = scrollScale.domain();\r\n\r\n mainAxisScale.domain(domain);\r\n selected = domain.slice(startIndex, endIndex); // NOTE: Up to but not including 'end'\r\n if (selected && selected.length > 0) {\r\n for (let i = 0; i < layers.length; i++) {\r\n data[i] = layers[i].setFilteredData(selected[0], selected[selected.length - 1] + 1);\r\n }\r\n mainAxisScale.domain(selected);\r\n\r\n let axisPropsToUpdate: IAxisProperties;\r\n if (this.axes.isXScrollBarVisible) {\r\n axisPropsToUpdate = axes.x;\r\n }\r\n else {\r\n axisPropsToUpdate = axes.y1;\r\n }\r\n\r\n axisPropsToUpdate.axis.scale(mainAxisScale);\r\n axisPropsToUpdate.scale(mainAxisScale);\r\n\r\n // tick values are indices for ordinal axes\r\n axisPropsToUpdate.axis.ticks(selected.length);\r\n axisPropsToUpdate.axis.tickValues(selected); \r\n\r\n // use the original tick format to format the tick values\r\n let tickFormat = axisPropsToUpdate.axis.tickFormat();\r\n axisPropsToUpdate.values = _.map(selected, (d) => tickFormat(d));\r\n }\r\n }\r\n }\r\n\r\n public render(axesLayout: CartesianAxesLayout, layers: ICartesianVisual[], suppressAnimations: boolean, renderDelegate: RenderPlotAreaDelegate): void {\r\n let plotArea = axesLayout.plotArea;\r\n\r\n let axisScale: D3.Scale.OrdinalScale;\r\n let brushX: number;\r\n let brushY: number;\r\n let scrollableLength: number;\r\n let scrollbarLength: number;\r\n if (this.axes.isXScrollBarVisible) {\r\n axisScale = <D3.Scale.OrdinalScale>axesLayout.axes.x.scale;\r\n brushX = axesLayout.margin.left;\r\n brushY = axesLayout.viewport.height; // - scrollbar width\r\n scrollableLength = axesLayout.preferredPlotArea.width;\r\n scrollbarLength = plotArea.width;\r\n }\r\n else if (this.axes.isYScrollBarVisible) {\r\n axisScale = <D3.Scale.OrdinalScale>axesLayout.axes.y1.scale;\r\n brushX = axesLayout.viewport.width;\r\n brushY = axesLayout.margin.top;\r\n scrollableLength = axesLayout.preferredPlotArea.height;\r\n scrollbarLength = plotArea.height;\r\n }\r\n else {\r\n // No scrollbars, render the chart normally.\r\n this.brush.remove();\r\n renderDelegate(layers, axesLayout, suppressAnimations);\r\n return;\r\n }\r\n\r\n this.brushMinExtent = ScrollableAxes.getMinExtent(scrollableLength, scrollbarLength);\r\n this.scrollScale = axisScale.copy();\r\n this.scrollScale.rangeBands([0, scrollbarLength]);\r\n this.brush.setOrientation(this.axes.isXScrollBarVisible);\r\n this.brush.setScale(this.scrollScale);\r\n this.brush.setExtent([0, this.brushMinExtent]);\r\n\r\n // This function will be called whenever we scroll.\r\n let renderOnScroll = (extent: number[], suppressAnimations: boolean) => {\r\n this.filterDataToViewport(axisScale, layers, axesLayout.axes, this.scrollScale, extent);\r\n renderDelegate(layers, axesLayout, suppressAnimations);\r\n };\r\n\r\n let scrollCallback = () => this.onBrushed(this.scrollScale, axisScale, axesLayout, scrollbarLength, renderOnScroll);\r\n this.brush.renderBrush(this.brushMinExtent, brushX, brushY, scrollCallback);\r\n\r\n // TODO: why modify original scale?\r\n axisScale.rangeBands([0, scrollbarLength]);\r\n renderOnScroll(this.brush.getExtent(), suppressAnimations);\r\n }\r\n\r\n public scrollTo(position: number): void {\r\n debug.assert(this.axes.isXScrollBarVisible || this.axes.isYScrollBarVisible, 'scrolling is not available');\r\n debug.assertValue(this.scrollScale, 'scrollScale');\r\n\r\n let extent = this.brush.getExtent();\r\n let extentLength = extent[1] - extent[0];\r\n extent[0] = this.scrollScale(position);\r\n extent[1] = extent[0] + extentLength;\r\n this.brush.setExtent(extent);\r\n\r\n let scrollbarLength = this.scrollScale.rangeExtent()[1];\r\n ScrollableAxes.clampBrushExtent(this.brush, scrollbarLength, this.brushMinExtent);\r\n this.brush.scroll();\r\n }\r\n\r\n private static getMinExtent(scrollableLength: number, scrollbarLength: number): number {\r\n return scrollbarLength * scrollbarLength / (scrollableLength);\r\n }\r\n\r\n private onBrushed(scrollScale: any, mainAxisScale: any, axesLayout, scrollbarLength: number, render: (extent: number[], suppressAnimations: boolean) => void): void {\r\n let brush = this.brush;\r\n\r\n if (mainAxisScale && scrollScale) {\r\n ScrollableAxes.clampBrushExtent(this.brush, scrollbarLength, this.brushMinExtent);\r\n let extent = brush.getExtent();\r\n render(extent, /* suppressAnimations */ true);\r\n }\r\n }\r\n\r\n private static clampBrushExtent(brush: SvgBrush, scrollbarLength: number, minExtent: number): void {\r\n let extent = brush.getExtent();\r\n let width = extent[1] - extent[0];\r\n\r\n if (width === minExtent && extent[1] <= scrollbarLength && extent[0] >= 0)\r\n return;\r\n\r\n if (width > minExtent) {\r\n let padding = (width - minExtent) / 2;\r\n extent[0] += padding;\r\n extent[1] -= padding;\r\n }\r\n\r\n else if (width < minExtent) {\r\n let padding = (minExtent - width) / 2;\r\n extent[0] -= padding;\r\n extent[1] += padding;\r\n }\r\n\r\n if (extent[0] < 0) {\r\n extent[0] = 0;\r\n extent[1] = minExtent;\r\n }\r\n\r\n else if (extent[0] > scrollbarLength - minExtent) {\r\n extent[0] = scrollbarLength - minExtent;\r\n extent[1] = scrollbarLength;\r\n }\r\n\r\n brush.setExtent(extent);\r\n }\r\n }\r\n\r\n class SvgCartesianAxes {\r\n public static AxisPadding: IMargin = {\r\n left: 10,\r\n right: 10,\r\n top: 0,\r\n bottom: 12,\r\n };\r\n\r\n private axisGraphicsContext: D3.Selection;\r\n private xAxisGraphicsContext: D3.Selection;\r\n private y1AxisGraphicsContext: D3.Selection;\r\n private y2AxisGraphicsContext: D3.Selection;\r\n private svgScrollable: D3.Selection;\r\n private axisGraphicsContextScrollable: D3.Selection;\r\n private labelRegion: D3.Selection;\r\n private labelBackgroundRegion: D3.Selection;\r\n\r\n private categoryAxisProperties: DataViewObject;\r\n private valueAxisProperties: DataViewObject;\r\n\r\n private static AxisGraphicsContext = createClassAndSelector('axisGraphicsContext');\r\n private static TickPaddingRotatedX = 5;\r\n private static AxisLabelFontSize = 11;\r\n private static Y2TickSize = -6;\r\n\r\n constructor(private axes: CartesianAxes) {\r\n }\r\n\r\n public getScrollableRegion(): D3.Selection {\r\n return this.axisGraphicsContextScrollable;\r\n }\r\n\r\n public getLabelsRegion(): D3.Selection {\r\n return this.labelRegion;\r\n }\r\n\r\n public getLabelBackground(): D3.Selection {\r\n return this.labelBackgroundRegion;\r\n }\r\n\r\n public getXAxis(): D3.Selection {\r\n return this.xAxisGraphicsContext;\r\n }\r\n\r\n public getY1Axis(): D3.Selection {\r\n return this.y1AxisGraphicsContext;\r\n }\r\n\r\n public getY2Axis(): D3.Selection {\r\n return this.y2AxisGraphicsContext;\r\n }\r\n\r\n public update(categoryAxisProperties: DataViewObject, valueAxisProperties: DataViewObject): void {\r\n this.categoryAxisProperties = categoryAxisProperties;\r\n this.valueAxisProperties = valueAxisProperties;\r\n }\r\n\r\n public init(svg: D3.Selection): void {\r\n /*\r\n The layout of the visual will look like:\r\n <svg>\r\n <g>\r\n <nonscrollable axis/>\r\n </g>\r\n <svgScrollable>\r\n <g>\r\n <scrollable axis/>\r\n </g>\r\n </svgScrollable>\r\n <g xbrush/>\r\n </svg>\r\n\r\n */\r\n\r\n let axisGraphicsContext = this.axisGraphicsContext = svg.append('g')\r\n .classed(SvgCartesianAxes.AxisGraphicsContext.class, true);\r\n\r\n this.svgScrollable = svg.append('svg')\r\n .classed('svgScrollable', true)\r\n .style('overflow', 'hidden');\r\n\r\n let axisGraphicsContextScrollable = this.axisGraphicsContextScrollable = this.svgScrollable.append('g')\r\n .classed(SvgCartesianAxes.AxisGraphicsContext.class, true);\r\n\r\n this.labelBackgroundRegion = this.svgScrollable.append('g')\r\n .classed(NewDataLabelUtils.labelBackgroundGraphicsContextClass.class, true);\r\n\r\n this.labelRegion = this.svgScrollable.append('g')\r\n .classed(NewDataLabelUtils.labelGraphicsContextClass.class, true);\r\n\r\n let showLinesOnX = this.axes.showLinesOnX;\r\n let showLinesOnY = this.axes.showLinesOnY;\r\n\r\n // NOTE: We infer the axis which should scroll based on whether or not we draw grid lines for the other axis, and\r\n // only allow one axis to scroll.\r\n let scrollX = showLinesOnY;\r\n let scrollY = !scrollX;\r\n if (scrollY) {\r\n this.y1AxisGraphicsContext = axisGraphicsContextScrollable.append('g').attr('class', 'y axis');\r\n this.y2AxisGraphicsContext = axisGraphicsContextScrollable.append('g').attr('class', 'y axis');\r\n }\r\n else {\r\n this.y1AxisGraphicsContext = axisGraphicsContext.append('g').attr('class', 'y axis');\r\n this.y2AxisGraphicsContext = axisGraphicsContext.append('g').attr('class', 'y axis');\r\n }\r\n\r\n if (scrollX) {\r\n this.xAxisGraphicsContext = axisGraphicsContextScrollable.append('g').attr('class', 'x axis');\r\n }\r\n else {\r\n this.xAxisGraphicsContext = axisGraphicsContext.append('g').attr('class', 'x axis');\r\n }\r\n\r\n this.xAxisGraphicsContext.classed('showLinesOnAxis', showLinesOnX);\r\n this.y1AxisGraphicsContext.classed('showLinesOnAxis', showLinesOnY);\r\n this.y2AxisGraphicsContext.classed('showLinesOnAxis', showLinesOnY);\r\n\r\n this.xAxisGraphicsContext.classed('hideLinesOnAxis', !showLinesOnX);\r\n this.y1AxisGraphicsContext.classed('hideLinesOnAxis', !showLinesOnY);\r\n this.y2AxisGraphicsContext.classed('hideLinesOnAxis', !showLinesOnY);\r\n }\r\n\r\n private static updateAnimatedTickTooltips(axisSelection: D3.Transition.Transition, values: any[]): void {\r\n axisSelection.each('end', function () {\r\n d3.select(this)\r\n .selectAll('text')\r\n .append('title')\r\n .text((d, i) => values[i]);\r\n });\r\n }\r\n\r\n private static updateTickTooltips(axisSelection: D3.Selection, values: any[]): void {\r\n axisSelection.selectAll('text').append('title').text((d, i) => values[i]);\r\n }\r\n\r\n public renderAxes(axesLayout: CartesianAxesLayout, duration: number): void {\r\n let marginLimits = axesLayout.marginLimits;\r\n let plotArea = axesLayout.plotArea;\r\n let viewport = axesLayout.viewport;\r\n let margin = axesLayout.margin;\r\n let axes = axesLayout.axes;\r\n let tickLabelMargins = axesLayout.tickLabelMargins;\r\n\r\n let bottomMarginLimit = marginLimits.bottom;\r\n let leftRightMarginLimit = marginLimits.left;\r\n\r\n let xLabelColor: Fill;\r\n let yLabelColor: Fill;\r\n let y2LabelColor: Fill;\r\n\r\n if (this.axes.shouldRenderAxis(axes.x)) {\r\n if (axes.x.isCategoryAxis) {\r\n xLabelColor = this.categoryAxisProperties && this.categoryAxisProperties['labelColor'] ? this.categoryAxisProperties['labelColor'] : null;\r\n } else {\r\n xLabelColor = this.valueAxisProperties && this.valueAxisProperties['labelColor'] ? this.valueAxisProperties['labelColor'] : null;\r\n }\r\n axes.x.axis.orient(\"bottom\");\r\n if (!axes.x.willLabelsFit)\r\n axes.x.axis.tickPadding(SvgCartesianAxes.TickPaddingRotatedX);\r\n\r\n let xAxisGraphicsElement = this.xAxisGraphicsContext;\r\n if (duration) {\r\n xAxisGraphicsElement\r\n .transition()\r\n .duration(duration)\r\n .call(axes.x.axis)\r\n .call(SvgCartesianAxes.updateAnimatedTickTooltips, axes.x.values);\r\n }\r\n else {\r\n xAxisGraphicsElement\r\n .call(axes.x.axis);\r\n }\r\n\r\n xAxisGraphicsElement\r\n .call(SvgCartesianAxes.darkenZeroLine)\r\n .call(SvgCartesianAxes.setAxisLabelColor, xLabelColor);\r\n\r\n let xAxisTextNodes = xAxisGraphicsElement.selectAll('text');\r\n if (axes.x.willLabelsWordBreak) {\r\n xAxisTextNodes\r\n .call(AxisHelper.LabelLayoutStrategy.wordBreak, axes.x, bottomMarginLimit);\r\n } else {\r\n xAxisTextNodes\r\n .call(AxisHelper.LabelLayoutStrategy.rotate,\r\n bottomMarginLimit,\r\n TextMeasurementService.svgEllipsis,\r\n !axes.x.willLabelsFit,\r\n bottomMarginLimit === tickLabelMargins.xMax,\r\n axes.x,\r\n margin,\r\n this.axes.isXScrollBarVisible || this.axes.isYScrollBarVisible);\r\n }\r\n\r\n if (!duration) {\r\n SvgCartesianAxes.updateTickTooltips(xAxisGraphicsElement, axes.x.values);\r\n }\r\n }\r\n else {\r\n this.xAxisGraphicsContext.selectAll('*').remove();\r\n }\r\n\r\n if (this.axes.shouldRenderAxis(axes.y1)) {\r\n if (axes.y1.isCategoryAxis) {\r\n yLabelColor = this.categoryAxisProperties && this.categoryAxisProperties['labelColor'] ? this.categoryAxisProperties['labelColor'] : null;\r\n } else {\r\n yLabelColor = this.valueAxisProperties && this.valueAxisProperties['labelColor'] ? this.valueAxisProperties['labelColor'] : null;\r\n }\r\n let showY1OnRight = this.axes.shouldShowY1OnRight();\r\n let y1TickPadding = showY1OnRight ? axesLayout.tickPadding.right : axesLayout.tickPadding.left;\r\n axes.y1.axis\r\n .tickSize(-plotArea.width)\r\n .tickPadding(y1TickPadding)\r\n .orient(this.axes.getYAxisOrientation().toLowerCase());\r\n\r\n let y1AxisGraphicsElement = this.y1AxisGraphicsContext;\r\n if (duration) {\r\n y1AxisGraphicsElement\r\n .transition()\r\n .duration(duration)\r\n .call(axes.y1.axis)\r\n .call(SvgCartesianAxes.updateAnimatedTickTooltips, axes.y1.values);\r\n }\r\n else {\r\n y1AxisGraphicsElement\r\n .call(axes.y1.axis);\r\n }\r\n\r\n y1AxisGraphicsElement\r\n .call(SvgCartesianAxes.darkenZeroLine)\r\n .call(SvgCartesianAxes.setAxisLabelColor, yLabelColor);\r\n\r\n if (tickLabelMargins.yLeft >= leftRightMarginLimit) {\r\n y1AxisGraphicsElement.selectAll('text')\r\n .call(AxisHelper.LabelLayoutStrategy.clip,\r\n // Can't use padding space to render text, so subtract that from available space for ellipses calculations\r\n leftRightMarginLimit - y1TickPadding,\r\n TextMeasurementService.svgEllipsis);\r\n }\r\n\r\n if (!duration) {\r\n SvgCartesianAxes.updateTickTooltips(y1AxisGraphicsElement, axes.y1.values);\r\n }\r\n\r\n if (axes.y2 && (!this.valueAxisProperties || this.valueAxisProperties['secShow'] == null || this.valueAxisProperties['secShow'])) {\r\n y2LabelColor = this.valueAxisProperties && this.valueAxisProperties['secLabelColor'] ? this.valueAxisProperties['secLabelColor'] : null;\r\n\r\n let y2TickPadding = showY1OnRight ? axesLayout.tickPadding.left : axesLayout.tickPadding.right;\r\n axes.y2.axis\r\n .tickSize(SvgCartesianAxes.Y2TickSize)\r\n .tickPadding(y2TickPadding)\r\n .orient(showY1OnRight ? yAxisPosition.left.toLowerCase() : yAxisPosition.right.toLowerCase());\r\n\r\n let y2AxisGraphicsElement = this.y2AxisGraphicsContext;\r\n if (duration) {\r\n y2AxisGraphicsElement\r\n .transition()\r\n .duration(duration)\r\n .call(axes.y2.axis)\r\n .call(SvgCartesianAxes.updateAnimatedTickTooltips, axes.y2.values);\r\n }\r\n else {\r\n y2AxisGraphicsElement\r\n .call(axes.y2.axis);\r\n }\r\n\r\n y2AxisGraphicsElement\r\n .call(SvgCartesianAxes.darkenZeroLine)\r\n .call(SvgCartesianAxes.setAxisLabelColor, y2LabelColor);\r\n\r\n if (tickLabelMargins.yRight >= leftRightMarginLimit) {\r\n y2AxisGraphicsElement.selectAll('text')\r\n .call(AxisHelper.LabelLayoutStrategy.clip,\r\n // Can't use padding space to render text, so subtract that from available space for ellipses calculations\r\n leftRightMarginLimit - y2TickPadding,\r\n TextMeasurementService.svgEllipsis);\r\n }\r\n\r\n if (!duration) {\r\n SvgCartesianAxes.updateTickTooltips(y2AxisGraphicsElement, axes.y2.values);\r\n }\r\n }\r\n else {\r\n this.y2AxisGraphicsContext.selectAll('*').remove();\r\n }\r\n }\r\n else {\r\n this.y1AxisGraphicsContext.selectAll('*').remove();\r\n this.y2AxisGraphicsContext.selectAll('*').remove();\r\n }\r\n\r\n // Axis labels\r\n //TODO: Add label for second Y axis for combo chart\r\n let axisLabels = axesLayout.axisLabels;\r\n let chartHasAxisLabels = (axisLabels.x != null) || (axisLabels.y != null || axisLabels.y2 != null);\r\n if (chartHasAxisLabels) {\r\n let hideXAxisTitle = !this.axes.shouldRenderAxisTitle(axes.x, /* defaultValue */ true, /* secondary */ false);\r\n let hideYAxisTitle = !this.axes.shouldRenderAxisTitle(axes.y1, /* defaultValue */ true, /* secondary */false);\r\n let hideY2AxisTitle = !this.axes.shouldRenderAxisTitle(axes.y2, /* defaultValue */ false, /* secondary */true);\r\n\r\n let renderAxisOptions: AxisRenderingOptions = {\r\n axisLabels: axisLabels,\r\n viewport: viewport,\r\n margin: margin,\r\n hideXAxisTitle: hideXAxisTitle,\r\n hideYAxisTitle: hideYAxisTitle,\r\n hideY2AxisTitle: hideY2AxisTitle,\r\n xLabelColor: xLabelColor,\r\n yLabelColor: yLabelColor,\r\n y2LabelColor: y2LabelColor,\r\n fontSize: SvgCartesianAxes.AxisLabelFontSize,\r\n };\r\n\r\n this.renderAxesLabels(renderAxisOptions);\r\n }\r\n else {\r\n this.axisGraphicsContext.selectAll('.xAxisLabel').remove();\r\n this.axisGraphicsContext.selectAll('.yAxisLabel').remove();\r\n }\r\n\r\n this.translateAxes(viewport, margin);\r\n }\r\n\r\n private renderAxesLabels(options: AxisRenderingOptions): void {\r\n debug.assertValue(options, 'options');\r\n debug.assertValue(options.viewport, 'options.viewport');\r\n debug.assertValue(options.axisLabels, 'options.axisLabels');\r\n\r\n this.axisGraphicsContext.selectAll('.xAxisLabel').remove();\r\n this.axisGraphicsContext.selectAll('.yAxisLabel').remove();\r\n\r\n let margin = options.margin;\r\n let width = options.viewport.width - (margin.left + margin.right);\r\n let height = options.viewport.height;\r\n let fontSize = options.fontSize;\r\n\r\n let heightOffset = fontSize;\r\n let showOnRight = this.axes.shouldShowY1OnRight();\r\n\r\n if (!options.hideXAxisTitle) {\r\n let xAxisLabel = this.axisGraphicsContext.append(\"text\")\r\n .style(\"text-anchor\", \"middle\")\r\n .text(options.axisLabels.x)\r\n .call((text: D3.Selection) => {\r\n text.each(function () {\r\n let text = d3.select(this);\r\n text.attr({\r\n \"class\": \"xAxisLabel\",\r\n \"transform\": SVGUtil.translate(width / 2, height - heightOffset)\r\n });\r\n });\r\n });\r\n\r\n xAxisLabel.style(\"fill\", options.xLabelColor ? options.xLabelColor.solid.color : null);\r\n\r\n xAxisLabel.call(AxisHelper.LabelLayoutStrategy.clip,\r\n width,\r\n TextMeasurementService.svgEllipsis)\r\n .call(tooltipUtils.tooltipUpdate, [options.axisLabels.x]);\r\n }\r\n\r\n if (!options.hideYAxisTitle) {\r\n let yAxisLabel = this.axisGraphicsContext.append(\"text\")\r\n .style(\"text-anchor\", \"middle\")\r\n .text(options.axisLabels.y)\r\n .call((text: D3.Selection) => {\r\n text.each(function () {\r\n let text = d3.select(this);\r\n text.attr({\r\n \"class\": \"yAxisLabel\",\r\n \"transform\": \"rotate(-90)\",\r\n \"y\": showOnRight ? width + margin.right - fontSize : -margin.left,\r\n \"x\": -((height - margin.top - margin.bottom) / 2),\r\n \"dy\": \"1em\",\r\n });\r\n });\r\n });\r\n\r\n yAxisLabel.style(\"fill\", options.yLabelColor ? options.yLabelColor.solid.color : null);\r\n\r\n yAxisLabel.call(AxisHelper.LabelLayoutStrategy.clip,\r\n height - (margin.bottom + margin.top),\r\n TextMeasurementService.svgEllipsis)\r\n .call(tooltipUtils.tooltipUpdate, [options.axisLabels.y]);\r\n }\r\n\r\n if (!options.hideY2AxisTitle && options.axisLabels.y2) {\r\n let y2AxisLabel = this.axisGraphicsContext.append(\"text\")\r\n .style(\"text-anchor\", \"middle\")\r\n .text(options.axisLabels.y2)\r\n .call((text: D3.Selection) => {\r\n text.each(function () {\r\n let text = d3.select(this);\r\n text.attr({\r\n \"class\": \"yAxisLabel\",\r\n \"transform\": \"rotate(-90)\",\r\n \"y\": showOnRight ? -margin.left : width + margin.right - fontSize,\r\n \"x\": -((height - margin.top - margin.bottom) / 2),\r\n \"dy\": \"1em\",\r\n });\r\n });\r\n });\r\n\r\n y2AxisLabel.style(\"fill\", options.y2LabelColor ? options.y2LabelColor.solid.color : null);\r\n\r\n y2AxisLabel.call(AxisHelper.LabelLayoutStrategy.clip,\r\n height - (margin.bottom + margin.top),\r\n TextMeasurementService.svgEllipsis)\r\n .call(tooltipUtils.tooltipUpdate, [options.axisLabels.y2]);\r\n }\r\n }\r\n\r\n // Margin convention: http://bl.ocks.org/mbostock/3019563\r\n private translateAxes(viewport: IViewport, margin: IMargin): void {\r\n let width = viewport.width - (margin.left + margin.right);\r\n let height = viewport.height - (margin.top + margin.bottom);\r\n\r\n let showY1OnRight = this.axes.shouldShowY1OnRight();\r\n\r\n this.xAxisGraphicsContext\r\n .attr('transform', SVGUtil.translate(0, height));\r\n\r\n this.y1AxisGraphicsContext\r\n .attr('transform', SVGUtil.translate(showY1OnRight ? width : 0, 0));\r\n\r\n this.y2AxisGraphicsContext\r\n .attr('transform', SVGUtil.translate(showY1OnRight ? 0 : width, 0));\r\n\r\n this.svgScrollable.attr({\r\n 'x': 0,\r\n 'width': viewport.width,\r\n 'height': viewport.height\r\n });\r\n\r\n this.axisGraphicsContext.attr('transform', SVGUtil.translate(margin.left, margin.top));\r\n this.axisGraphicsContextScrollable.attr('transform', SVGUtil.translate(margin.left, margin.top));\r\n this.labelRegion.attr('transform', SVGUtil.translate(margin.left, margin.top));\r\n this.labelBackgroundRegion.attr('transform', SVGUtil.translate(margin.left, margin.top));\r\n\r\n if (this.axes.isXScrollBarVisible) {\r\n this.svgScrollable.attr({\r\n 'x': margin.left\r\n });\r\n this.axisGraphicsContextScrollable.attr('transform', SVGUtil.translate(0, margin.top));\r\n this.labelRegion.attr('transform', SVGUtil.translate(0, margin.top));\r\n this.labelBackgroundRegion.attr('transform', SVGUtil.translate(0, margin.top));\r\n this.svgScrollable.attr('width', width);\r\n }\r\n else if (this.axes.isYScrollBarVisible) {\r\n this.svgScrollable.attr('height', height + margin.top);\r\n }\r\n }\r\n\r\n /**\r\n * Within the context of the given selection (g), find the offset of\r\n * the zero tick using the d3 attached datum of g.tick elements.\r\n * 'Classed' is undefined for transition selections\r\n */\r\n private static darkenZeroLine(g: D3.Selection): void {\r\n let zeroTick = g.selectAll('g.tick').filter((data) => data === 0).node();\r\n if (zeroTick) {\r\n d3.select(zeroTick).select('line').classed('zero-line', true);\r\n }\r\n }\r\n\r\n private static setAxisLabelColor(g: D3.Selection, fill: Fill): void {\r\n g.selectAll('g.tick text').style('fill', fill ? fill.solid.color : null);\r\n }\r\n }\r\n\r\n class CartesianAxes {\r\n private static YAxisLabelPadding = 20;\r\n private static XAxisLabelPadding = 18;\r\n private static MaxMarginFactor = 0.25;\r\n private static MinimumMargin: IMargin = {\r\n left: 1,\r\n right: 1,\r\n top: 8,\r\n bottom: 25,\r\n };\r\n\r\n private categoryAxisProperties: DataViewObject;\r\n private valueAxisProperties: DataViewObject;\r\n\r\n private maxMarginFactor: number;\r\n private yAxisOrientation: string;\r\n private scrollbarWidth: number;\r\n private lastLeft: number;\r\n private trimOrdinalDataOnOverflow: boolean;\r\n public showLinesOnX: boolean;\r\n public showLinesOnY: boolean;\r\n public isScrollable: boolean;\r\n public isXScrollBarVisible: boolean;\r\n public isYScrollBarVisible: boolean;\r\n public categoryAxisHasUnitType: boolean;\r\n public valueAxisHasUnitType: boolean;\r\n public secondaryValueAxisHasUnitType: boolean;\r\n\r\n private layout: CartesianAxesLayout;\r\n\r\n constructor(isScrollable: boolean, scrollbarWidth: number, trimOrdinalDataOnOverflow: boolean) {\r\n this.scrollbarWidth = scrollbarWidth;\r\n this.isScrollable = isScrollable;\r\n this.maxMarginFactor = CartesianAxes.MaxMarginFactor;\r\n this.yAxisOrientation = yAxisPosition.left;\r\n this.lastLeft = 0;\r\n this.trimOrdinalDataOnOverflow = trimOrdinalDataOnOverflow;\r\n }\r\n\r\n public shouldShowY1OnRight(): boolean {\r\n return this.yAxisOrientation === yAxisPosition.right;\r\n }\r\n\r\n public isYAxisCategorical(): boolean {\r\n return this.layout && this.layout.axes.y1.isCategoryAxis;\r\n }\r\n\r\n public hasCategoryAxis(): boolean {\r\n let axes = this.layout && this.layout.axes;\r\n if (!axes)\r\n return false;\r\n\r\n return this.isYAxisCategorical()\r\n ? axes.y1 && axes.y1.values.length > 0\r\n : axes.x && axes.x.values.length > 0;\r\n }\r\n\r\n public hasY2Axis(): boolean {\r\n return this.layout && this.layout.axes.y2 != null;\r\n }\r\n\r\n public getYAxisOrientation(): string {\r\n return this.yAxisOrientation;\r\n }\r\n\r\n public setAxisLinesVisibility(axisLinesVisibility: AxisLinesVisibility): void {\r\n this.showLinesOnX = EnumExtensions.hasFlag(axisLinesVisibility, AxisLinesVisibility.ShowLinesOnBothAxis) ||\r\n EnumExtensions.hasFlag(axisLinesVisibility, AxisLinesVisibility.ShowLinesOnXAxis);\r\n\r\n this.showLinesOnY = EnumExtensions.hasFlag(axisLinesVisibility, AxisLinesVisibility.ShowLinesOnBothAxis) ||\r\n EnumExtensions.hasFlag(axisLinesVisibility, AxisLinesVisibility.ShowLinesOnYAxis);\r\n }\r\n\r\n public setMaxMarginFactor(factor: number): void {\r\n this.maxMarginFactor = factor;\r\n }\r\n\r\n public update(dataViews: DataView[]) {\r\n if (dataViews && dataViews.length > 0) {\r\n let dataViewMetadata = dataViews[0].metadata;\r\n this.categoryAxisProperties = CartesianHelper.getCategoryAxisProperties(dataViewMetadata);\r\n this.valueAxisProperties = CartesianHelper.getValueAxisProperties(dataViewMetadata);\r\n }\r\n\r\n let axisPosition = this.valueAxisProperties['position'];\r\n this.yAxisOrientation = axisPosition ? axisPosition.toString() : yAxisPosition.left;\r\n }\r\n\r\n public addWarnings(warnings: IVisualWarning[]): void {\r\n let axes = this.layout && this.layout.axes;\r\n if (axes && axes.x && axes.x.hasDisallowedZeroInDomain\r\n || axes.y1 && axes.y1.hasDisallowedZeroInDomain\r\n || axes.y2 && axes.y2.hasDisallowedZeroInDomain) {\r\n warnings.unshift(new ZeroValueWarning());\r\n }\r\n }\r\n\r\n public negotiateAxes(\r\n layers: ICartesianVisual[],\r\n parentViewport: IViewport,\r\n padding: IMargin,\r\n playAxisControlLayout: IRect,\r\n hideAxisLabels: boolean,\r\n textProperties: TextProperties,\r\n interactivityRightMargin: number): CartesianAxesLayout {\r\n\r\n let margin: IMargin = Prototype.inherit(CartesianAxes.MinimumMargin);\r\n let viewport: IViewport = Prototype.inherit(parentViewport);\r\n\r\n let leftRightMarginLimit = viewport.width * this.maxMarginFactor;\r\n let bottomMarginLimit = Math.max(CartesianAxes.MinimumMargin.bottom, Math.ceil(viewport.height * this.maxMarginFactor));\r\n let marginLimits = {\r\n left: leftRightMarginLimit,\r\n right: leftRightMarginLimit,\r\n top: 0,\r\n bottom: bottomMarginLimit,\r\n };\r\n\r\n // TODO: Remove this, without regressing tick label margins.\r\n margin.left = this.lastLeft;\r\n\r\n let axes = calculateAxes(\r\n layers,\r\n viewport,\r\n margin,\r\n playAxisControlLayout,\r\n this.categoryAxisProperties,\r\n this.valueAxisProperties,\r\n textProperties,\r\n false,\r\n null,\r\n this.trimOrdinalDataOnOverflow);\r\n\r\n let renderXAxis = this.shouldRenderAxis(axes.x);\r\n let renderY1Axis = this.shouldRenderAxis(axes.y1);\r\n let renderY2Axis = this.shouldRenderAxis(axes.y2, true);\r\n\r\n // TODO: simplify places that width is set by using plot area\r\n let width = viewport.width - (margin.left + margin.right);\r\n\r\n let isScalar = false;\r\n let preferredPlotArea: IViewport;\r\n this.isXScrollBarVisible = false;\r\n this.isYScrollBarVisible = false;\r\n\r\n let showY1OnRight = this.shouldShowY1OnRight();\r\n\r\n if (layers) {\r\n if (layers[0].getVisualCategoryAxisIsScalar)\r\n isScalar = layers[0].getVisualCategoryAxisIsScalar();\r\n\r\n if (!isScalar && this.isScrollable && layers[0].getPreferredPlotArea) {\r\n let categoryThickness = this.showLinesOnY ? axes.x.categoryThickness : axes.y1.categoryThickness;\r\n let categoryCount = this.showLinesOnY ? axes.x.values.length : axes.y1.values.length;\r\n preferredPlotArea = layers[0].getPreferredPlotArea(isScalar, categoryCount, categoryThickness);\r\n if (this.showLinesOnY && preferredPlotArea && preferredPlotArea.width > viewport.width) {\r\n this.isXScrollBarVisible = true;\r\n viewport.height -= this.scrollbarWidth;\r\n }\r\n\r\n if (this.showLinesOnX && preferredPlotArea && preferredPlotArea.height > viewport.height) {\r\n this.isYScrollBarVisible = true;\r\n viewport.width -= this.scrollbarWidth;\r\n width = viewport.width - (margin.left + margin.right);\r\n }\r\n }\r\n }\r\n\r\n // Recalculate axes now that scrollbar visible variables have been set.\r\n axes = calculateAxes(\r\n layers,\r\n viewport,\r\n margin,\r\n playAxisControlLayout,\r\n this.categoryAxisProperties,\r\n this.valueAxisProperties,\r\n textProperties,\r\n this.isXScrollBarVisible || this.isYScrollBarVisible,\r\n axes,\r\n this.trimOrdinalDataOnOverflow);\r\n\r\n // We need to make two passes because the margin changes affect the chosen tick values, which then affect the margins again.\r\n let tickLabelMargins = undefined;\r\n let axisLabels: ChartAxesLabels = undefined;\r\n for (let iteration = 0, doneWithMargins = false; iteration < 2 && !doneWithMargins; iteration++) {\r\n tickLabelMargins = AxisHelper.getTickLabelMargins(\r\n { width: width, height: viewport.height },\r\n marginLimits.left,\r\n TextMeasurementService.measureSvgTextWidth,\r\n TextMeasurementService.estimateSvgTextHeight,\r\n axes,\r\n marginLimits.bottom,\r\n textProperties,\r\n this.isXScrollBarVisible || this.isYScrollBarVisible,\r\n showY1OnRight,\r\n renderXAxis,\r\n renderY1Axis,\r\n renderY2Axis);\r\n\r\n // We look at the y axes as main and second sides, if the y axis orientation is right then the main side represents the right side.\r\n let maxMainYaxisSide = showY1OnRight ? tickLabelMargins.yRight : tickLabelMargins.yLeft,\r\n maxSecondYaxisSide = showY1OnRight ? tickLabelMargins.yLeft : tickLabelMargins.yRight,\r\n xMax = tickLabelMargins.xMax;\r\n\r\n maxMainYaxisSide += padding.left;\r\n if ((renderY2Axis && !showY1OnRight) || (showY1OnRight && renderY1Axis))\r\n maxSecondYaxisSide += padding.right;\r\n xMax += padding.bottom;\r\n\r\n if (hideAxisLabels) {\r\n axes.x.axisLabel = null;\r\n axes.y1.axisLabel = null;\r\n if (axes.y2) {\r\n axes.y2.axisLabel = null;\r\n }\r\n }\r\n\r\n this.addUnitTypeToAxisLabels(axes);\r\n\r\n axisLabels = { x: axes.x.axisLabel, y: axes.y1.axisLabel, y2: axes.y2 ? axes.y2.axisLabel : null };\r\n\r\n if (axisLabels.x != null)\r\n xMax += CartesianAxes.XAxisLabelPadding;\r\n if (axisLabels.y != null)\r\n maxMainYaxisSide += CartesianAxes.YAxisLabelPadding;\r\n if (axisLabels.y2 != null)\r\n maxSecondYaxisSide += CartesianAxes.YAxisLabelPadding;\r\n\r\n margin.left = showY1OnRight ? maxSecondYaxisSide : maxMainYaxisSide;\r\n margin.right = showY1OnRight ? maxMainYaxisSide : maxSecondYaxisSide;\r\n if (!isScalar) {\r\n margin.right += interactivityRightMargin;\r\n } \r\n\r\n margin.bottom = xMax;\r\n\r\n width = viewport.width - (margin.left + margin.right);\r\n\r\n // Re-calculate the axes with the new margins.\r\n let previousTickCountY1 = axes.y1.values.length;\r\n let previousTickCountY2 = axes.y2 && axes.y2.values.length;\r\n axes = calculateAxes(\r\n layers,\r\n viewport,\r\n margin,\r\n playAxisControlLayout,\r\n this.categoryAxisProperties,\r\n this.valueAxisProperties,\r\n textProperties,\r\n this.isXScrollBarVisible || this.isYScrollBarVisible,\r\n /*axes*/ axes,\r\n this.trimOrdinalDataOnOverflow);\r\n\r\n // The minor padding adjustments could have affected the chosen tick values, which in turn requires us to calculate margins again.\r\n // e.g. [0,2,4,6,8] vs. [0,5,10] the 10 is wider and needs more margin.\r\n // TODO: This does not take into account other aspects of the axes that could change, e.g. willLabelsFit, etc.\r\n if (axes.y1.values.length === previousTickCountY1 && (!axes.y2 || axes.y2.values.length === previousTickCountY2))\r\n doneWithMargins = true;\r\n }\r\n\r\n let plotArea: IViewport = {\r\n width: viewport.width - (margin.left + margin.right),\r\n height: viewport.height - (margin.top + margin.bottom),\r\n };\r\n\r\n this.layout = {\r\n axes: axes,\r\n axisLabels: axisLabels,\r\n margin: margin,\r\n marginLimits: marginLimits,\r\n viewport: viewport,\r\n plotArea: plotArea,\r\n preferredPlotArea: preferredPlotArea,\r\n tickLabelMargins: tickLabelMargins,\r\n tickPadding: padding,\r\n };\r\n\r\n this.lastLeft = margin.left;\r\n\r\n return this.layout;\r\n }\r\n\r\n public isLogScaleAllowed(axisType: AxisLocation): boolean {\r\n let axes = this.layout && this.layout.axes;\r\n if (!axes)\r\n return false;\r\n\r\n switch (axisType) {\r\n case AxisLocation.X:\r\n return axes.x.isLogScaleAllowed;\r\n case AxisLocation.Y1:\r\n return axes.y1.isLogScaleAllowed;\r\n case AxisLocation.Y2:\r\n return axes.y2 && axes.y2.isLogScaleAllowed;\r\n }\r\n }\r\n\r\n public axesHaveTicks(viewport: IViewport): boolean {\r\n if (!this.layout)\r\n return false;\r\n\r\n let margin = this.layout.margin;\r\n\r\n let width = viewport.width - (margin.left + margin.right);\r\n let height = viewport.height - (margin.top + margin.bottom);\r\n\r\n // TODO: this is never the case, remove.\r\n if (AxisHelper.getRecommendedNumberOfTicksForXAxis(width) === 0\r\n && AxisHelper.getRecommendedNumberOfTicksForYAxis(height) === 0) {\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n public shouldRenderAxisTitle(axisProperties: IAxisProperties, defaultValue: boolean, secondary: boolean): boolean {\r\n let propertyName = secondary ? 'secShowAxisTitle' : 'showAxisTitle';\r\n\r\n return !!this.getAxisProperty(axisProperties, propertyName, defaultValue);\r\n }\r\n\r\n public shouldRenderAxis(axisProperties: IAxisProperties, secondary: boolean = false): boolean {\r\n if (!axisProperties)\r\n return false;\r\n\r\n let propertyName = secondary ? 'secShow' : 'show';\r\n\r\n return this.getAxisProperty(axisProperties, propertyName, true)\r\n && axisProperties.values\r\n && axisProperties.values.length > 0;\r\n }\r\n\r\n private getAxisProperty(axisProperties: IAxisProperties, propertyName: string, defaultValue: DataViewPropertyValue): DataViewPropertyValue {\r\n if (!axisProperties)\r\n return defaultValue;\r\n\r\n let properties = axisProperties.isCategoryAxis\r\n ? this.categoryAxisProperties\r\n : this.valueAxisProperties;\r\n\r\n if (properties && properties[propertyName] != null)\r\n return properties[propertyName];\r\n else\r\n return defaultValue;\r\n }\r\n\r\n // TODO: clean this up\r\n private addUnitTypeToAxisLabels(axes: CartesianAxisProperties): void {\r\n let unitType = CartesianAxes.getUnitType(axes.x.formatter);\r\n if (axes.x.isCategoryAxis) {\r\n this.categoryAxisHasUnitType = unitType != null;\r\n }\r\n else {\r\n this.valueAxisHasUnitType = unitType != null;\r\n }\r\n\r\n if (axes.x.axisLabel && unitType) {\r\n if (axes.x.isCategoryAxis) {\r\n axes.x.axisLabel = AxisHelper.createAxisLabel(this.categoryAxisProperties, axes.x.axisLabel, unitType);\r\n }\r\n else {\r\n axes.x.axisLabel = AxisHelper.createAxisLabel(this.valueAxisProperties, axes.x.axisLabel, unitType);\r\n }\r\n }\r\n\r\n unitType = CartesianAxes.getUnitType(axes.y1.formatter);\r\n\r\n if (!axes.y1.isCategoryAxis) {\r\n this.valueAxisHasUnitType = unitType != null;\r\n }\r\n else {\r\n this.categoryAxisHasUnitType = unitType != null;\r\n }\r\n\r\n if (axes.y1.axisLabel && unitType) {\r\n if (!axes.y1.isCategoryAxis) {\r\n axes.y1.axisLabel = AxisHelper.createAxisLabel(this.valueAxisProperties, axes.y1.axisLabel, unitType);\r\n }\r\n else {\r\n axes.y1.axisLabel = AxisHelper.createAxisLabel(this.categoryAxisProperties, axes.y1.axisLabel, unitType);\r\n }\r\n }\r\n\r\n if (axes.y2) {\r\n let unitType = CartesianAxes.getUnitType(axes.y2.formatter);\r\n this.secondaryValueAxisHasUnitType = unitType != null;\r\n if (axes.y2.axisLabel && unitType) {\r\n axes.y2.axisLabel = AxisHelper.createAxisLabel(this.valueAxisProperties, axes.y2.axisLabel, unitType, true);\r\n }\r\n }\r\n }\r\n\r\n private static getUnitType(formatter: IValueFormatter) {\r\n if (formatter &&\r\n formatter.displayUnit &&\r\n formatter.displayUnit.value > 1)\r\n return formatter.displayUnit.title;\r\n }\r\n }\r\n\r\n module CartesianLayerFactory {\r\n\r\n export function createLayers(\r\n type: CartesianChartType,\r\n objects: DataViewObjects,\r\n interactivityService: IInteractivityService,\r\n animator?: any,\r\n isScrollable: boolean = false,\r\n seriesLabelFormattingEnabled: boolean = false,\r\n tooltipsEnabled?: boolean,\r\n lineChartLabelDensityEnabled?: boolean): ICartesianVisual[] {\r\n\r\n let layers: ICartesianVisual[] = [];\r\n\r\n let cartesianOptions: CartesianVisualConstructorOptions = {\r\n isScrollable: isScrollable,\r\n animator: animator,\r\n interactivityService: interactivityService,\r\n tooltipsEnabled: tooltipsEnabled,\r\n seriesLabelFormattingEnabled: seriesLabelFormattingEnabled,\r\n lineChartLabelDensityEnabled: lineChartLabelDensityEnabled,\r\n };\r\n\r\n switch (type) {\r\n case CartesianChartType.Area:\r\n layers.push(createLineChartLayer(LineChartType.area, /* inComboChart */ false, cartesianOptions));\r\n break;\r\n case CartesianChartType.Line:\r\n layers.push(createLineChartLayer(LineChartType.default, /* inComboChart */ false, cartesianOptions));\r\n break;\r\n case CartesianChartType.StackedArea:\r\n layers.push(createLineChartLayer(LineChartType.stackedArea, /* inComboChart */ false, cartesianOptions));\r\n break;\r\n case CartesianChartType.Scatter:\r\n layers.push(createScatterChartLayer(cartesianOptions));\r\n break;\r\n case CartesianChartType.Waterfall:\r\n layers.push(createWaterfallChartLayer(cartesianOptions));\r\n break;\r\n case CartesianChartType.DataDot:\r\n layers.push(createDataDotChartLayer(cartesianOptions));\r\n break;\r\n case CartesianChartType.StackedColumn:\r\n layers.push(createColumnChartLayer(ColumnChartType.stackedColumn, cartesianOptions));\r\n break;\r\n case CartesianChartType.ClusteredColumn:\r\n layers.push(createColumnChartLayer(ColumnChartType.clusteredColumn, cartesianOptions));\r\n break;\r\n case CartesianChartType.HundredPercentStackedColumn:\r\n layers.push(createColumnChartLayer(ColumnChartType.hundredPercentStackedColumn, cartesianOptions));\r\n break;\r\n case CartesianChartType.StackedBar:\r\n layers.push(createColumnChartLayer(ColumnChartType.stackedBar, cartesianOptions));\r\n break;\r\n case CartesianChartType.ClusteredBar:\r\n layers.push(createColumnChartLayer(ColumnChartType.clusteredBar, cartesianOptions));\r\n break;\r\n case CartesianChartType.HundredPercentStackedBar:\r\n layers.push(createColumnChartLayer(ColumnChartType.hundredPercentStackedBar, cartesianOptions));\r\n break;\r\n case CartesianChartType.ComboChart:\r\n let columnType = getComboColumnType();\r\n layers.push(createColumnChartLayer(columnType, cartesianOptions));\r\n layers.push(createLineChartLayer(LineChartType.default, /* inComboChart */ true, cartesianOptions));\r\n break;\r\n case CartesianChartType.LineClusteredColumnCombo:\r\n layers.push(createColumnChartLayer(ColumnChartType.clusteredColumn, cartesianOptions));\r\n layers.push(createLineChartLayer(LineChartType.default, /* inComboChart */ true, cartesianOptions));\r\n break;\r\n case CartesianChartType.LineStackedColumnCombo:\r\n layers.push(createColumnChartLayer(ColumnChartType.stackedColumn, cartesianOptions));\r\n layers.push(createLineChartLayer(LineChartType.default, /* inComboChart */ true, cartesianOptions));\r\n break;\r\n case CartesianChartType.DataDotClusteredColumnCombo:\r\n layers.push(createColumnChartLayer(ColumnChartType.clusteredColumn, cartesianOptions));\r\n layers.push(createDataDotChartLayer(cartesianOptions));\r\n break;\r\n case CartesianChartType.DataDotStackedColumnCombo:\r\n layers.push(createColumnChartLayer(ColumnChartType.stackedColumn, cartesianOptions));\r\n layers.push(createDataDotChartLayer(cartesianOptions));\r\n break;\r\n }\r\n\r\n return layers;\r\n }\r\n\r\n function createLineChartLayer(type: LineChartType, inComboChart: boolean, defaultOptions: CartesianVisualConstructorOptions): LineChart {\r\n let options: LineChartConstructorOptions = {\r\n animator: defaultOptions.animator,\r\n interactivityService: defaultOptions.interactivityService,\r\n isScrollable: defaultOptions.isScrollable,\r\n tooltipsEnabled: defaultOptions.tooltipsEnabled,\r\n seriesLabelFormattingEnabled: defaultOptions.seriesLabelFormattingEnabled,\r\n chartType: type,\r\n lineChartLabelDensityEnabled: defaultOptions.lineChartLabelDensityEnabled,\r\n };\r\n\r\n if (inComboChart) {\r\n options.chartType = options.chartType | LineChartType.lineShadow;\r\n }\r\n\r\n return new LineChart(options);\r\n }\r\n\r\n function createScatterChartLayer(defaultOptions: CartesianVisualConstructorOptions): ScatterChart {\r\n defaultOptions.isScrollable = false;\r\n return new ScatterChart(defaultOptions);\r\n }\r\n\r\n function createWaterfallChartLayer(defaultOptions: CartesianVisualConstructorOptions): WaterfallChart {\r\n return new WaterfallChart(defaultOptions);\r\n }\r\n\r\n function createDataDotChartLayer(defaultOptions: CartesianVisualConstructorOptions): DataDotChart {\r\n return new DataDotChart(defaultOptions);\r\n }\r\n\r\n function createColumnChartLayer(type: ColumnChartType, defaultOptions: CartesianVisualConstructorOptions): ColumnChart {\r\n let options: ColumnChartConstructorOptions = {\r\n animator: <IColumnChartAnimator>defaultOptions.animator,\r\n interactivityService: defaultOptions.interactivityService,\r\n isScrollable: defaultOptions.isScrollable,\r\n seriesLabelFormattingEnabled: defaultOptions.seriesLabelFormattingEnabled,\r\n tooltipsEnabled: defaultOptions.tooltipsEnabled,\r\n chartType: type\r\n };\r\n return new ColumnChart(options);\r\n }\r\n\r\n function getComboColumnType(objects?: DataViewObjects): ColumnChartType {\r\n // This supports existing serialized forms of pinned combo-chart visuals\r\n let columnType: ColumnChartType = ColumnChartType.clusteredColumn;\r\n if (objects) {\r\n let comboChartTypes: ComboChartDataViewObject = (<ComboChartDataViewObjects>objects).general;\r\n if (comboChartTypes) {\r\n switch (comboChartTypes.visualType1) {\r\n case 'Column':\r\n columnType = ColumnChartType.clusteredColumn;\r\n break;\r\n case 'ColumnStacked':\r\n columnType = ColumnChartType.stackedColumn;\r\n break;\r\n default:\r\n debug.assertFail('Unsupported cartesian chart type ' + comboChartTypes.visualType1);\r\n }\r\n\r\n // second visual is always LineChart (for now)\r\n if (comboChartTypes.visualType2) {\r\n debug.assert(comboChartTypes.visualType2 === 'Line', 'expecting a LineChart for VisualType2');\r\n }\r\n }\r\n }\r\n\r\n return columnType;\r\n }\r\n }\r\n\r\n export class SharedColorPalette implements IDataColorPalette {\r\n private palette: IDataColorPalette;\r\n private preferredScale: IColorScale;\r\n private rotated: boolean;\r\n\r\n constructor(palette: IDataColorPalette) {\r\n this.palette = palette;\r\n this.clearPreferredScale();\r\n }\r\n\r\n public getColorScaleByKey(scaleKey: string): IColorScale {\r\n this.setPreferredScale(scaleKey);\r\n return this.preferredScale;\r\n }\r\n\r\n public getNewColorScale(): IColorScale {\r\n return this.preferredScale;\r\n }\r\n\r\n public getColorByIndex(index: number): IColorInfo {\r\n return this.palette.getColorByIndex(index);\r\n }\r\n\r\n public getSentimentColors(): IColorInfo[] {\r\n return this.palette.getSentimentColors();\r\n }\r\n\r\n public getBasePickerColors(): IColorInfo[] {\r\n return this.palette.getBasePickerColors();\r\n }\r\n\r\n public clearPreferredScale(): void {\r\n this.preferredScale = this.palette.getNewColorScale();\r\n this.rotated = false;\r\n }\r\n\r\n public rotateScale(): void {\r\n // We create a new rotated the scale such that the first color of the new scale is the first\r\n // free color of the previous scale. Note that the new scale does not have any colors allocated\r\n // to particular keys.\r\n this.preferredScale = this.preferredScale.clone();\r\n this.preferredScale.clearAndRotateScale();\r\n this.rotated = true;\r\n }\r\n\r\n private setPreferredScale(scaleKey: string): void {\r\n if (!this.rotated) {\r\n // The first layer to express a preference sets the preferred scale.\r\n this.preferredScale = this.palette.getColorScaleByKey(scaleKey);\r\n }\r\n }\r\n }\r\n}\r\n","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n /// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n import EnumExtensions = jsCommon.EnumExtensions;\r\n\r\n export interface ColumnChartConstructorOptions extends CartesianVisualConstructorOptions {\r\n chartType: ColumnChartType;\r\n animator: IColumnChartAnimator;\r\n }\r\n\r\n export interface ColumnChartData extends CartesianData {\r\n categoryFormatter: IValueFormatter;\r\n series: ColumnChartSeries[];\r\n valuesMetadata: DataViewMetadataColumn[];\r\n legendData: LegendData;\r\n hasHighlights: boolean;\r\n categoryMetadata: DataViewMetadataColumn;\r\n scalarCategoryAxis: boolean;\r\n labelSettings: VisualDataLabelsSettings;\r\n axesLabels: ChartAxesLabels;\r\n hasDynamicSeries: boolean;\r\n isMultiMeasure: boolean;\r\n defaultDataPointColor?: string;\r\n showAllDataPoints?: boolean;\r\n }\r\n\r\n export interface ColumnChartSeries extends CartesianSeries {\r\n displayName: string;\r\n key: string;\r\n index: number;\r\n data: ColumnChartDataPoint[];\r\n identity: SelectionId;\r\n color: string;\r\n labelSettings: VisualDataLabelsSettings;\r\n }\r\n\r\n export interface ColumnChartDataPoint extends CartesianDataPoint, SelectableDataPoint, TooltipEnabledDataPoint, LabelEnabledDataPoint {\r\n categoryValue: number;\r\n /** Adjusted for 100% stacked if applicable */\r\n value: number;\r\n /** The top (column) or right (bar) of the rectangle, used for positioning stacked rectangles */\r\n position: number;\r\n valueAbsolute: number;\r\n /** Not adjusted for 100% stacked */\r\n valueOriginal: number;\r\n seriesIndex: number;\r\n labelSettings: VisualDataLabelsSettings;\r\n categoryIndex: number;\r\n color: string;\r\n /** The original values from the highlighted rect, used in animations */\r\n originalValue: number;\r\n originalPosition: number;\r\n originalValueAbsolute: number;\r\n\r\n /** \r\n * True if this data point is a highlighted portion and overflows (whether due to the highlight\r\n * being greater than original or of a different sign), so it needs to be thinner to accomodate. \r\n */\r\n drawThinner?: boolean;\r\n key: string;\r\n lastSeries?: boolean;\r\n chartType: ColumnChartType;\r\n }\r\n\r\n const flagBar: number = 1 << 1;\r\n const flagColumn: number = 1 << 2;\r\n const flagClustered: number = 1 << 3;\r\n const flagStacked: number = 1 << 4;\r\n const flagStacked100: number = flagStacked | (1 << 5);\r\n\r\n export enum ColumnChartType {\r\n clusteredBar = flagBar | flagClustered,\r\n clusteredColumn = flagColumn | flagClustered,\r\n hundredPercentStackedBar = flagBar | flagStacked100,\r\n hundredPercentStackedColumn = flagColumn | flagStacked100,\r\n stackedBar = flagBar | flagStacked,\r\n stackedColumn = flagColumn | flagStacked,\r\n }\r\n\r\n export interface ColumnAxisOptions {\r\n xScale: D3.Scale.Scale;\r\n yScale: D3.Scale.Scale;\r\n seriesOffsetScale?: D3.Scale.Scale;\r\n columnWidth: number;\r\n /** Used by clustered only since categoryWidth !== columnWidth */\r\n categoryWidth?: number;\r\n isScalar: boolean;\r\n margin: IMargin;\r\n }\r\n\r\n export interface IColumnLayout {\r\n shapeLayout: {\r\n width: (d: ColumnChartDataPoint) => number;\r\n x: (d: ColumnChartDataPoint) => number;\r\n y: (d: ColumnChartDataPoint) => number;\r\n height: (d: ColumnChartDataPoint) => number;\r\n };\r\n shapeLayoutWithoutHighlights: {\r\n width: (d: ColumnChartDataPoint) => number;\r\n x: (d: ColumnChartDataPoint) => number;\r\n y: (d: ColumnChartDataPoint) => number;\r\n height: (d: ColumnChartDataPoint) => number;\r\n };\r\n zeroShapeLayout: {\r\n width: (d: ColumnChartDataPoint) => number;\r\n x: (d: ColumnChartDataPoint) => number;\r\n y: (d: ColumnChartDataPoint) => number;\r\n height: (d: ColumnChartDataPoint) => number;\r\n };\r\n }\r\n\r\n export interface ColumnChartContext {\r\n height: number;\r\n width: number;\r\n duration: number;\r\n hostService: IVisualHostServices;\r\n margin: IMargin;\r\n mainGraphicsContext: D3.Selection;\r\n labelGraphicsContext: D3.Selection;\r\n layout: CategoryLayout;\r\n animator: IColumnChartAnimator;\r\n onDragStart?: (datum: ColumnChartDataPoint) => void;\r\n interactivityService: IInteractivityService;\r\n viewportHeight: number;\r\n viewportWidth: number;\r\n is100Pct: boolean;\r\n isComboChart: boolean;\r\n }\r\n\r\n export interface IColumnChartStrategy {\r\n setData(data: ColumnChartData): void;\r\n setupVisualProps(columnChartProps: ColumnChartContext): void;\r\n setXScale(is100Pct: boolean, forcedTickCount?: number, forcedXDomain?: any[], axisScaleType?: string, axisDisplayUnits?: number, axisPrecision?: number): IAxisProperties;\r\n setYScale(is100Pct: boolean, forcedTickCount?: number, forcedYDomain?: any[], axisScaleType?: string, axisDisplayUnits?: number, axisPrecision?: number): IAxisProperties;\r\n drawColumns(useAnimation: boolean): ColumnChartDrawInfo;\r\n selectColumn(selectedColumnIndex: number, lastSelectedColumnIndex: number): void;\r\n getClosestColumnIndex(x: number, y: number): number;\r\n }\r\n\r\n export interface IColumnChartConverterStrategy {\r\n getLegend(colors: IDataColorPalette, defaultLegendLabelColor: string, defaultColor?: string): LegendSeriesInfo;\r\n getValueBySeriesAndCategory(series: number, category: number): number;\r\n getMeasureNameByIndex(series: number, category: number): string;\r\n hasHighlightValues(series: number): boolean;\r\n getHighlightBySeriesAndCategory(series: number, category: number): number;\r\n }\r\n\r\n export interface LegendSeriesInfo {\r\n legend: LegendData;\r\n seriesSources: DataViewMetadataColumn[];\r\n seriesObjects: DataViewObjects[][];\r\n }\r\n\r\n export interface ColumnChartDrawInfo {\r\n shapesSelection: D3.Selection;\r\n viewport: IViewport;\r\n axisOptions: ColumnAxisOptions;\r\n labelDataPoints: LabelDataPoint[];\r\n }\r\n const RoleNames = {\r\n category: 'Category',\r\n series: 'Series',\r\n y: 'Y',\r\n };\r\n\r\n /**\r\n * Renders a stacked and clustered column chart.\r\n */\r\n export class ColumnChart implements ICartesianVisual {\r\n private static ColumnChartClassName = 'columnChart';\r\n public static clusteredValidLabelPositions: RectLabelPosition[] = [RectLabelPosition.OutsideEnd, RectLabelPosition.InsideEnd, RectLabelPosition.InsideCenter, RectLabelPosition.InsideBase];\r\n public static stackedValidLabelPositions: RectLabelPosition[] = [RectLabelPosition.InsideCenter, RectLabelPosition.InsideEnd, RectLabelPosition.InsideBase];\r\n public static SeriesClasses: jsCommon.CssConstants.ClassAndSelector = jsCommon.CssConstants.createClassAndSelector('series');\r\n\r\n private svg: D3.Selection;\r\n private mainGraphicsContext: D3.Selection;\r\n private labelGraphicsContext: D3.Selection;\r\n private xAxisProperties: IAxisProperties;\r\n private yAxisProperties: IAxisProperties;\r\n private currentViewport: IViewport;\r\n private data: ColumnChartData;\r\n private style: IVisualStyle;\r\n private colors: IDataColorPalette;\r\n private chartType: ColumnChartType;\r\n private columnChart: IColumnChartStrategy;\r\n private hostService: IVisualHostServices;\r\n private cartesianVisualHost: ICartesianVisualHost;\r\n private interactivity: InteractivityOptions;\r\n private margin: IMargin;\r\n private options: CartesianVisualInitOptions;\r\n private lastInteractiveSelectedColumnIndex: number;\r\n private interactivityService: IInteractivityService;\r\n private dataViewCat: DataViewCategorical;\r\n private categoryAxisType: string;\r\n private animator: IColumnChartAnimator;\r\n private isScrollable: boolean;\r\n private tooltipsEnabled: boolean;\r\n private element: JQuery;\r\n private seriesLabelFormattingEnabled: boolean;\r\n private isComboChart: boolean;\r\n\r\n constructor(options: ColumnChartConstructorOptions) {\r\n debug.assertValue(options, 'options');\r\n\r\n let chartType = options.chartType;\r\n debug.assertValue(chartType, 'chartType');\r\n this.chartType = chartType;\r\n this.categoryAxisType = null;\r\n this.animator = options.animator;\r\n this.isScrollable = options.isScrollable;\r\n this.tooltipsEnabled = options.tooltipsEnabled;\r\n this.interactivityService = options.interactivityService;\r\n this.seriesLabelFormattingEnabled = options.seriesLabelFormattingEnabled;\r\n }\r\n\r\n public static customizeQuery(options: CustomizeQueryOptions): void {\r\n let dataViewMapping = options.dataViewMappings[0];\r\n if (!dataViewMapping || !dataViewMapping.categorical || !dataViewMapping.categorical.categories)\r\n return;\r\n\r\n dataViewMapping.categorical.dataVolume = 4;\r\n\r\n let dataViewCategories = <data.CompiledDataViewRoleForMappingWithReduction>dataViewMapping.categorical.categories;\r\n let categoryItems = dataViewCategories.for.in.items;\r\n if (!_.isEmpty(categoryItems)) {\r\n let categoryType = categoryItems[0].type;\r\n\r\n let objects: DataViewObjects;\r\n if (dataViewMapping.metadata)\r\n objects = dataViewMapping.metadata.objects;\r\n\r\n if (CartesianChart.getIsScalar(objects, columnChartProps.categoryAxis.axisType, categoryType)) {\r\n dataViewCategories.dataReductionAlgorithm = { sample: {} };\r\n }\r\n }\r\n }\r\n\r\n public static getSortableRoles(options: VisualSortableOptions): string[] {\r\n let dataViewMapping = options.dataViewMappings[0];\r\n if (!dataViewMapping || !dataViewMapping.categorical || !dataViewMapping.categorical.categories)\r\n return null;\r\n\r\n let dataViewCategories = <data.CompiledDataViewRoleForMappingWithReduction>dataViewMapping.categorical.categories;\r\n let categoryItems = dataViewCategories.for.in.items;\r\n if (!_.isEmpty(categoryItems)) {\r\n let categoryType = categoryItems[0].type;\r\n\r\n let objects: DataViewObjects;\r\n if (dataViewMapping.metadata)\r\n objects = dataViewMapping.metadata.objects;\r\n\r\n //TODO: column chart should be sortable by X if it has scalar axis\r\n // But currenly it doesn't support this. Return 'category' once\r\n // it is supported.\r\n if (!CartesianChart.getIsScalar(objects, columnChartProps.categoryAxis.axisType, categoryType)) {\r\n return ['Category', 'Y'];\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n public updateVisualMetadata(x: IAxisProperties, y: IAxisProperties, margin) {\r\n this.xAxisProperties = x;\r\n this.yAxisProperties = y;\r\n this.margin = margin;\r\n }\r\n\r\n public init(options: CartesianVisualInitOptions) {\r\n this.svg = options.svg;\r\n this.mainGraphicsContext = this.svg.append('g').classed('columnChartMainGraphicsContext', true);\r\n this.labelGraphicsContext = this.svg.append('g').classed(NewDataLabelUtils.labelGraphicsContextClass.class, true);\r\n this.style = options.style;\r\n this.currentViewport = options.viewport;\r\n this.hostService = options.host;\r\n this.interactivity = options.interactivity;\r\n this.colors = this.style.colorPalette.dataColors;\r\n this.cartesianVisualHost = options.cartesianHost;\r\n this.options = options;\r\n this.isComboChart = ComboChart.isComboChart(options.chartType);\r\n let element = this.element = options.element;\r\n element.addClass(ColumnChart.ColumnChartClassName);\r\n }\r\n\r\n private getCategoryLayout(numCategoryValues: number, options: CalculateScaleAndDomainOptions): CategoryLayout {\r\n let availableWidth: number;\r\n if (EnumExtensions.hasFlag(this.chartType, flagBar)) {\r\n availableWidth = this.currentViewport.height - (this.margin.top + this.margin.bottom);\r\n }\r\n else {\r\n availableWidth = this.currentViewport.width - (this.margin.left + this.margin.right);\r\n }\r\n\r\n let metaDataColumn = this.data ? this.data.categoryMetadata : undefined;\r\n let categoryDataType: ValueTypeDescriptor = AxisHelper.getCategoryValueType(metaDataColumn);\r\n let isScalar = this.data ? this.data.scalarCategoryAxis : false;\r\n let domain = AxisHelper.createDomain(this.data.series, categoryDataType, isScalar, options.forcedXDomain);\r\n return CartesianChart.getLayout(\r\n this.data,\r\n {\r\n availableWidth: availableWidth,\r\n categoryCount: numCategoryValues,\r\n domain: domain,\r\n isScalar: isScalar,\r\n isScrollable: this.isScrollable,\r\n trimOrdinalDataOnOverflow: options.trimOrdinalDataOnOverflow\r\n });\r\n }\r\n\r\n public static converter(\r\n dataView: DataViewCategorical,\r\n colors: IDataColorPalette,\r\n is100PercentStacked: boolean = false,\r\n isScalar: boolean = false,\r\n dataViewMetadata: DataViewMetadata = null,\r\n chartType?: ColumnChartType,\r\n interactivityService?: IInteractivityService): ColumnChartData {\r\n debug.assertValue(dataView, 'dataView');\r\n debug.assertValue(colors, 'colors');\r\n\r\n let xAxisCardProperties = CartesianHelper.getCategoryAxisProperties(dataViewMetadata);\r\n let valueAxisProperties = CartesianHelper.getValueAxisProperties(dataViewMetadata);\r\n isScalar = CartesianHelper.isScalar(isScalar, xAxisCardProperties);\r\n dataView = ColumnUtil.applyUserMinMax(isScalar, dataView, xAxisCardProperties);\r\n\r\n let converterStrategy = new ColumnChartConverterHelper(dataView);\r\n\r\n let categoryInfo = converterHelper.getPivotedCategories(dataView, columnChartProps.general.formatString);\r\n let categories = categoryInfo.categories,\r\n categoryFormatter: IValueFormatter = categoryInfo.categoryFormatter,\r\n categoryIdentities: DataViewScopeIdentity[] = categoryInfo.categoryIdentities,\r\n categoryMetadata: DataViewMetadataColumn = dataView.categories && dataView.categories.length > 0 ? dataView.categories[0].source : undefined;\r\n\r\n let labelSettings: VisualDataLabelsSettings = dataLabelUtils.getDefaultColumnLabelSettings(is100PercentStacked || EnumExtensions.hasFlag(chartType, flagStacked));\r\n let defaultLegendLabelColor = LegendData.DefaultLegendLabelFillColor;\r\n let defaultDataPointColor = undefined;\r\n let showAllDataPoints = undefined;\r\n if (dataViewMetadata && dataViewMetadata.objects){\r\n let objects = dataViewMetadata.objects;\r\n\r\n defaultDataPointColor = DataViewObjects.getFillColor(objects, columnChartProps.dataPoint.defaultColor);\r\n showAllDataPoints = DataViewObjects.getValue<boolean>(objects, columnChartProps.dataPoint.showAllDataPoints);\r\n defaultLegendLabelColor = DataViewObjects.getFillColor(objects, columnChartProps.legend.labelColor, LegendData.DefaultLegendLabelFillColor);\r\n\r\n let labelsObj = <DataLabelObject>objects['labels'];\r\n dataLabelUtils.updateLabelSettingsFromLabelsObject(labelsObj, labelSettings);\r\n }\r\n\r\n // Allocate colors\r\n let legendAndSeriesInfo = converterStrategy.getLegend(colors, defaultLegendLabelColor, defaultDataPointColor);\r\n let legend: LegendDataPoint[] = legendAndSeriesInfo.legend.dataPoints;\r\n let seriesSources: DataViewMetadataColumn[] = legendAndSeriesInfo.seriesSources;\r\n\r\n // Determine data points\r\n let result = ColumnChart.createDataPoints(\r\n dataView,\r\n categories,\r\n categoryIdentities,\r\n legend,\r\n legendAndSeriesInfo.seriesObjects,\r\n converterStrategy,\r\n labelSettings,\r\n is100PercentStacked,\r\n isScalar,\r\n converterHelper.categoryIsAlsoSeriesRole(dataView, RoleNames.series, RoleNames.category),\r\n categoryInfo.categoryObjects,\r\n defaultDataPointColor,\r\n chartType,\r\n categoryMetadata);\r\n let columnSeries: ColumnChartSeries[] = result.series;\r\n\r\n let valuesMetadata: DataViewMetadataColumn[] = [];\r\n for (let j = 0, jlen = legend.length; j < jlen; j++) {\r\n valuesMetadata.push(seriesSources[j]);\r\n }\r\n\r\n let labels = converterHelper.createAxesLabels(xAxisCardProperties, valueAxisProperties, categoryMetadata, valuesMetadata);\r\n\r\n if (!EnumExtensions.hasFlag(chartType, flagColumn)) {\r\n // Replace between x and y axes\r\n let temp = labels.xAxisLabel;\r\n labels.xAxisLabel = labels.yAxisLabel;\r\n labels.yAxisLabel = temp;\r\n }\r\n\r\n if (interactivityService) {\r\n for (let series of columnSeries) {\r\n interactivityService.applySelectionStateToData(series.data);\r\n }\r\n\r\n interactivityService.applySelectionStateToData(legendAndSeriesInfo.legend.dataPoints);\r\n }\r\n\r\n return {\r\n categories: categories,\r\n categoryFormatter: categoryFormatter,\r\n series: columnSeries,\r\n valuesMetadata: valuesMetadata,\r\n legendData: legendAndSeriesInfo.legend,\r\n hasHighlights: result.hasHighlights,\r\n categoryMetadata: categoryMetadata,\r\n scalarCategoryAxis: isScalar,\r\n labelSettings: labelSettings,\r\n axesLabels: { x: labels.xAxisLabel, y: labels.yAxisLabel },\r\n hasDynamicSeries: result.hasDynamicSeries,\r\n isMultiMeasure: result.isMultiMeasure,\r\n defaultDataPointColor: defaultDataPointColor,\r\n showAllDataPoints: showAllDataPoints,\r\n };\r\n }\r\n\r\n private static canSupportOverflow(chartType: ColumnChartType, seriesCount: number): boolean {\r\n return !EnumExtensions.hasFlag(chartType, flagStacked) || seriesCount === 1;\r\n }\r\n\r\n private static createDataPoints(\r\n dataViewCat: DataViewCategorical,\r\n categories: any[],\r\n categoryIdentities: DataViewScopeIdentity[],\r\n legend: LegendDataPoint[],\r\n seriesObjectsList: DataViewObjects[][],\r\n converterStrategy: ColumnChartConverterHelper,\r\n defaultLabelSettings: VisualDataLabelsSettings,\r\n is100PercentStacked: boolean = false,\r\n isScalar: boolean = false,\r\n isCategoryAlsoSeries?: boolean,\r\n categoryObjectsList?: DataViewObjects[],\r\n defaultDataPointColor?: string,\r\n chartType?: ColumnChartType,\r\n categoryMetadata?: DataViewMetadataColumn): { series: ColumnChartSeries[]; hasHighlights: boolean; hasDynamicSeries: boolean; isMultiMeasure: boolean } {\r\n\r\n let grouped = dataViewCat && dataViewCat.values ? dataViewCat.values.grouped() : undefined;\r\n let categoryCount = categories.length;\r\n let seriesCount = legend.length;\r\n let columnSeries: ColumnChartSeries[] = [];\r\n\r\n if (seriesCount < 1 || categoryCount < 1)\r\n return { series: columnSeries, hasHighlights: false, hasDynamicSeries: false, isMultiMeasure: false };\r\n\r\n let dvCategories = dataViewCat.categories;\r\n categoryMetadata = (dvCategories && dvCategories.length > 0)\r\n ? dvCategories[0].source\r\n : null;\r\n let categoryType = AxisHelper.getCategoryValueType(categoryMetadata);\r\n let isDateTime = AxisHelper.isDateTime(categoryType);\r\n let baseValuesPos = [], baseValuesNeg = [];\r\n\r\n let rawValues: number[][] = [];\r\n let rawHighlightValues: number[][] = [];\r\n\r\n let hasDynamicSeries = !!(dataViewCat.values && dataViewCat.values.source);\r\n let isMultiMeasure = !hasDynamicSeries && seriesCount > 1;\r\n\r\n let highlightsOverflow = false; // Overflow means the highlight larger than value or the signs being different\r\n let hasHighlights = converterStrategy.hasHighlightValues(0);\r\n for (let seriesIndex = 0; seriesIndex < seriesCount; seriesIndex++) {\r\n let seriesValues = [];\r\n let seriesHighlightValues = [];\r\n for (let categoryIndex = 0; categoryIndex < categoryCount; categoryIndex++) {\r\n let value = converterStrategy.getValueBySeriesAndCategory(seriesIndex, categoryIndex);\r\n seriesValues[categoryIndex] = value;\r\n if (hasHighlights) {\r\n let highlightValue = converterStrategy.getHighlightBySeriesAndCategory(seriesIndex, categoryIndex);\r\n seriesHighlightValues[categoryIndex] = highlightValue;\r\n // There are two cases where we don't use overflow logic; if all are false, use overflow logic appropriate for the chart.\r\n if (!((value >= 0 && highlightValue >= 0 && value >= highlightValue) || // Both positive; value greater than highlight\r\n (value <= 0 && highlightValue <= 0 && value <= highlightValue))) { // Both negative; value less than highlight\r\n highlightsOverflow = true;\r\n }\r\n }\r\n }\r\n rawValues.push(seriesValues);\r\n if (hasHighlights) {\r\n rawHighlightValues.push(seriesHighlightValues);\r\n }\r\n }\r\n\r\n if (highlightsOverflow && !ColumnChart.canSupportOverflow(chartType, seriesCount)) {\r\n highlightsOverflow = false;\r\n hasHighlights = false;\r\n rawValues = rawHighlightValues;\r\n }\r\n\r\n let dataPointObjects: DataViewObjects[] = categoryObjectsList,\r\n formatStringProp = columnChartProps.general.formatString;\r\n for (let seriesIndex = 0; seriesIndex < seriesCount; seriesIndex++) {\r\n let seriesDataPoints: ColumnChartDataPoint[] = [],\r\n legendItem = legend[seriesIndex],\r\n seriesLabelSettings: VisualDataLabelsSettings;\r\n\r\n if (!hasDynamicSeries) {\r\n let labelsSeriesGroup = grouped && grouped.length > 0 && grouped[0].values ? grouped[0].values[seriesIndex] : null;\r\n let labelObjects = (labelsSeriesGroup && labelsSeriesGroup.source && labelsSeriesGroup.source.objects) ? <DataLabelObject> labelsSeriesGroup.source.objects['labels'] : null;\r\n if (labelObjects) {\r\n seriesLabelSettings = Prototype.inherit(defaultLabelSettings);\r\n dataLabelUtils.updateLabelSettingsFromLabelsObject(labelObjects, seriesLabelSettings);\r\n }\r\n }\r\n\r\n columnSeries.push({\r\n displayName: legendItem.label,\r\n key: 'series' + seriesIndex,\r\n index: seriesIndex,\r\n data: seriesDataPoints,\r\n identity: legendItem.identity,\r\n color: legendItem.color,\r\n labelSettings: seriesLabelSettings,\r\n });\r\n\r\n if (seriesCount > 1)\r\n dataPointObjects = seriesObjectsList[seriesIndex];\r\n let metadata = dataViewCat.values[seriesIndex].source;\r\n\r\n for (let categoryIndex = 0; categoryIndex < categoryCount; categoryIndex++) {\r\n if (seriesIndex === 0) {\r\n baseValuesPos.push(0);\r\n baseValuesNeg.push(0);\r\n }\r\n\r\n let value = AxisHelper.normalizeNonFiniteNumber(rawValues[seriesIndex][categoryIndex]);\r\n if (value == null) {\r\n // Optimization: Ignore null dataPoints from the fabricated category/series combination in the self cross-join.\r\n // However, we must retain the first series because it is used to compute things like axis scales, and value lookups.\r\n if (seriesIndex > 0)\r\n continue;\r\n }\r\n\r\n let originalValue: number = value;\r\n let categoryValue = categories[categoryIndex];\r\n\r\n // ignore variant measures\r\n if (isDateTime && categoryValue != null && !(categoryValue instanceof Date))\r\n continue;\r\n\r\n if (isDateTime && categoryValue)\r\n categoryValue = categoryValue.getTime();\r\n if (isScalar && (categoryValue == null || isNaN(categoryValue)))\r\n continue;\r\n\r\n let multipliers: ValueMultiplers;\r\n if (is100PercentStacked)\r\n multipliers = StackedUtil.getStackedMultiplier(dataViewCat, categoryIndex, seriesCount, categoryCount, converterStrategy);\r\n\r\n let unadjustedValue = value,\r\n isNegative = value < 0;\r\n\r\n if (multipliers) {\r\n if (isNegative)\r\n value *= multipliers.neg;\r\n else\r\n value *= multipliers.pos;\r\n }\r\n\r\n let valueAbsolute = Math.abs(value);\r\n let position: number;\r\n if (isNegative) {\r\n position = baseValuesNeg[categoryIndex];\r\n\r\n if (!isNaN(valueAbsolute))\r\n baseValuesNeg[categoryIndex] -= valueAbsolute;\r\n }\r\n else {\r\n if (!isNaN(valueAbsolute))\r\n baseValuesPos[categoryIndex] += valueAbsolute;\r\n\r\n position = baseValuesPos[categoryIndex];\r\n }\r\n\r\n let seriesGroup = grouped && grouped.length > seriesIndex && grouped[seriesIndex].values ? grouped[seriesIndex].values[0] : null;\r\n let category = dataViewCat.categories && dataViewCat.categories.length > 0 ? dataViewCat.categories[0] : null;\r\n let identity = SelectionIdBuilder.builder()\r\n .withCategory(category, categoryIndex)\r\n .withSeries(dataViewCat.values, seriesGroup)\r\n .withMeasure(converterStrategy.getMeasureNameByIndex(seriesIndex))\r\n .createSelectionId();\r\n\r\n let rawCategoryValue = categories[categoryIndex];\r\n let color = ColumnChart.getDataPointColor(legendItem, categoryIndex, dataPointObjects);\r\n let tooltipInfo: TooltipDataItem[] = TooltipBuilder.createTooltipInfo(formatStringProp, dataViewCat, rawCategoryValue, originalValue, null, null, seriesIndex, categoryIndex);\r\n let series = columnSeries[seriesIndex];\r\n let dataPointLabelSettings = (series.labelSettings) ? series.labelSettings : defaultLabelSettings;\r\n let labelColor = dataPointLabelSettings.labelColor;\r\n let lastValue = undefined;\r\n //Stacked column/bar label color is white by default (except last series)\r\n if ((EnumExtensions.hasFlag(chartType, flagStacked))) {\r\n lastValue = this.getStackedLabelColor(isNegative, seriesIndex, seriesCount, categoryIndex, rawValues);\r\n labelColor = (lastValue || (seriesIndex === seriesCount - 1 && !isNegative)) ? labelColor : dataLabelUtils.defaultInsideLabelColor;\r\n }\r\n\r\n let dataPoint: ColumnChartDataPoint = {\r\n categoryValue: categoryValue,\r\n value: value,\r\n position: position,\r\n valueAbsolute: valueAbsolute,\r\n valueOriginal: unadjustedValue,\r\n seriesIndex: seriesIndex,\r\n labelSettings: dataPointLabelSettings,\r\n categoryIndex: categoryIndex,\r\n color: color,\r\n selected: false,\r\n originalValue: value,\r\n originalPosition: position,\r\n originalValueAbsolute: valueAbsolute,\r\n identity: identity,\r\n key: identity.getKey(),\r\n tooltipInfo: tooltipInfo,\r\n labelFill: labelColor,\r\n labelFormatString: metadata.format,\r\n lastSeries: lastValue,\r\n chartType: chartType\r\n };\r\n\r\n seriesDataPoints.push(dataPoint);\r\n\r\n if (hasHighlights) {\r\n let valueHighlight = rawHighlightValues[seriesIndex][categoryIndex];\r\n let unadjustedValueHighlight = valueHighlight;\r\n\r\n let highlightedTooltip: boolean = true;\r\n if (valueHighlight === null) {\r\n valueHighlight = 0;\r\n highlightedTooltip = false;\r\n }\r\n\r\n if (is100PercentStacked) {\r\n valueHighlight *= multipliers.pos;\r\n }\r\n let absoluteValueHighlight = Math.abs(valueHighlight);\r\n let highlightPosition = position;\r\n\r\n if (valueHighlight > 0) {\r\n highlightPosition -= valueAbsolute - absoluteValueHighlight;\r\n }\r\n else if (valueHighlight === 0 && value > 0) {\r\n highlightPosition -= valueAbsolute;\r\n }\r\n\r\n let highlightIdentity = SelectionId.createWithHighlight(identity);\r\n let rawCategoryValue = categories[categoryIndex];\r\n let highlightedValue: number = highlightedTooltip ? valueHighlight : undefined;\r\n let tooltipInfo: TooltipDataItem[] = TooltipBuilder.createTooltipInfo(formatStringProp, dataViewCat, rawCategoryValue, originalValue, null, null, seriesIndex, categoryIndex, highlightedValue);\r\n\r\n if (highlightedTooltip) {\r\n // Override non highlighted data point\r\n dataPoint.tooltipInfo = tooltipInfo;\r\n }\r\n\r\n let highlightDataPoint: ColumnChartDataPoint = {\r\n categoryValue: categoryValue,\r\n value: valueHighlight,\r\n position: highlightPosition,\r\n valueAbsolute: absoluteValueHighlight,\r\n valueOriginal: unadjustedValueHighlight,\r\n seriesIndex: seriesIndex,\r\n labelSettings: dataPointLabelSettings,\r\n categoryIndex: categoryIndex,\r\n color: color,\r\n selected: false,\r\n highlight: true,\r\n originalValue: value,\r\n originalPosition: position,\r\n originalValueAbsolute: valueAbsolute,\r\n drawThinner: highlightsOverflow,\r\n identity: highlightIdentity,\r\n key: highlightIdentity.getKey(),\r\n tooltipInfo: tooltipInfo,\r\n labelFormatString: metadata.format,\r\n labelFill: labelColor,\r\n lastSeries: lastValue,\r\n chartType: chartType\r\n };\r\n\r\n seriesDataPoints.push(highlightDataPoint);\r\n }\r\n }\r\n }\r\n\r\n return {\r\n series: columnSeries,\r\n hasHighlights: hasHighlights,\r\n hasDynamicSeries: hasDynamicSeries,\r\n isMultiMeasure: isMultiMeasure,\r\n };\r\n }\r\n\r\n private static getDataPointColor(\r\n legendItem: LegendDataPoint,\r\n categoryIndex: number,\r\n dataPointObjects?: DataViewObjects[]): string {\r\n debug.assertValue(legendItem, 'legendItem');\r\n debug.assertValue(categoryIndex, 'categoryIndex');\r\n debug.assertAnyValue(dataPointObjects, 'dataPointObjects');\r\n\r\n if (dataPointObjects) {\r\n let colorOverride = DataViewObjects.getFillColor(dataPointObjects[categoryIndex], columnChartProps.dataPoint.fill);\r\n if (colorOverride)\r\n return colorOverride;\r\n }\r\n\r\n return legendItem.color;\r\n }\r\n\r\n private static getStackedLabelColor(isNegative: boolean, seriesIndex: number, seriesCount: number, categoryIndex: number, rawValues: number[][]): boolean {\r\n let lastValue = !(isNegative && seriesIndex === seriesCount - 1 && seriesCount !== 1);\r\n //run for the next series and check if current series is last\r\n for (let i = seriesIndex + 1; i < seriesCount; i++) {\r\n let nextValues = AxisHelper.normalizeNonFiniteNumber(rawValues[i][categoryIndex]);\r\n if ((nextValues !== null) && (((!isNegative || (isNegative && seriesIndex === 0)) && nextValues > 0) || (isNegative && seriesIndex !== 0))) {\r\n lastValue = false;\r\n break;\r\n }\r\n }\r\n return lastValue;\r\n }\r\n\r\n public static sliceSeries(series: ColumnChartSeries[], endIndex: number, startIndex: number = 0): ColumnChartSeries[] {\r\n let newSeries: ColumnChartSeries[] = [];\r\n if (series && series.length > 0) {\r\n for (let i = 0, len = series.length; i < len; i++) {\r\n let iNewSeries = newSeries[i] = Prototype.inherit(series[i]);\r\n // TODO: [investigate] possible perf improvement.\r\n // if data[n].categoryIndex > endIndex implies data[n+1].categoryIndex > endIndex\r\n // then we could short circuit the filter loop.\r\n iNewSeries.data = series[i].data.filter(d => d.categoryIndex >= startIndex && d.categoryIndex < endIndex);\r\n }\r\n }\r\n return newSeries;\r\n }\r\n\r\n public static getInteractiveColumnChartDomElement(element: JQuery): HTMLElement {\r\n return element.children(\"svg\").get(0);\r\n }\r\n\r\n public setData(dataViews: DataView[]): void {\r\n debug.assertValue(dataViews, \"dataViews\");\r\n let is100PctStacked = EnumExtensions.hasFlag(this.chartType, flagStacked100);\r\n this.data = {\r\n categories: [],\r\n categoryFormatter: null,\r\n series: [],\r\n valuesMetadata: [],\r\n legendData: null,\r\n hasHighlights: false,\r\n categoryMetadata: null,\r\n scalarCategoryAxis: false,\r\n labelSettings: dataLabelUtils.getDefaultColumnLabelSettings(is100PctStacked || EnumExtensions.hasFlag(this.chartType, flagStacked)),\r\n axesLabels: { x: null, y: null },\r\n hasDynamicSeries: false,\r\n defaultDataPointColor: null,\r\n isMultiMeasure: false,\r\n };\r\n\r\n if (dataViews.length > 0) {\r\n let dataView = dataViews[0];\r\n\r\n if (dataView && dataView.categorical) {\r\n let dataViewCat = this.dataViewCat = dataView.categorical;\r\n let dvCategories = dataViewCat.categories;\r\n let categoryMetadata = (dvCategories && dvCategories.length > 0)\r\n ? dvCategories[0].source\r\n : null;\r\n let categoryType = AxisHelper.getCategoryValueType(categoryMetadata);\r\n\r\n this.data = ColumnChart.converter(\r\n dataViewCat,\r\n this.cartesianVisualHost.getSharedColors(),\r\n is100PctStacked,\r\n CartesianChart.getIsScalar(dataView.metadata ? dataView.metadata.objects : null, columnChartProps.categoryAxis.axisType, categoryType),\r\n dataView.metadata,\r\n this.chartType,\r\n this.interactivityService);\r\n }\r\n }\r\n\r\n this.setChartStrategy();\r\n }\r\n\r\n private setChartStrategy(): void {\r\n switch (this.chartType) {\r\n case ColumnChartType.clusteredBar:\r\n this.columnChart = new ClusteredBarChartStrategy();\r\n break;\r\n case ColumnChartType.clusteredColumn:\r\n this.columnChart = new ClusteredColumnChartStrategy();\r\n break;\r\n case ColumnChartType.stackedBar:\r\n case ColumnChartType.hundredPercentStackedBar:\r\n this.columnChart = new StackedBarChartStrategy();\r\n break;\r\n case ColumnChartType.stackedColumn:\r\n case ColumnChartType.hundredPercentStackedColumn:\r\n default:\r\n this.columnChart = new StackedColumnChartStrategy();\r\n break;\r\n }\r\n\r\n // For single series, render stacked as a clustered\r\n if (EnumExtensions.hasFlag(this.chartType, flagStacked) && this.data.series.length === 1) {\r\n switch (this.chartType) {\r\n case (ColumnChartType.stackedBar):\r\n this.columnChart = new ClusteredBarChartStrategy();\r\n break;\r\n case (ColumnChartType.stackedColumn):\r\n this.columnChart = new ClusteredColumnChartStrategy();\r\n break;\r\n }\r\n }\r\n }\r\n\r\n public calculateLegend(): LegendData {\r\n // if we're in interactive mode, return the interactive legend \r\n if (this.interactivity && this.interactivity.isInteractiveLegend) {\r\n return this.createInteractiveLegendDataPoints(0);\r\n }\r\n let legendData = this.data ? this.data.legendData : null;\r\n let legendDataPoints = legendData ? legendData.dataPoints : [];\r\n\r\n if (_.isEmpty(legendDataPoints))\r\n return null;\r\n\r\n return legendData;\r\n }\r\n\r\n public hasLegend(): boolean {\r\n return this.data && (this.data.hasDynamicSeries || (this.data.series && this.data.series.length > 1));\r\n }\r\n\r\n public enumerateObjectInstances(enumeration: ObjectEnumerationBuilder, options: EnumerateVisualObjectInstancesOptions): void {\r\n switch (options.objectName) {\r\n case 'dataPoint':\r\n if (!GradientUtils.hasGradientRole(this.dataViewCat))\r\n this.enumerateDataPoints(enumeration);\r\n break;\r\n case 'labels':\r\n this.enumerateDataLabels(enumeration);\r\n break;\r\n }\r\n }\r\n\r\n private enumerateDataLabels(enumeration: ObjectEnumerationBuilder): void {\r\n let data = this.data,\r\n labelSettings = this.data.labelSettings,\r\n seriesCount = data.series.length,\r\n showLabelPerSeries = !data.hasDynamicSeries && (seriesCount > 1 || !data.categoryMetadata) && this.seriesLabelFormattingEnabled;\r\n\r\n //Draw default settings\r\n dataLabelUtils.enumerateDataLabels(this.getLabelSettingsOptions(enumeration, labelSettings, null, showLabelPerSeries));\r\n\r\n if (seriesCount === 0)\r\n return;\r\n\r\n //Draw series settings\r\n if (showLabelPerSeries && labelSettings.showLabelPerSeries) {\r\n for (let i = 0; i < seriesCount; i++) {\r\n let series = data.series[i],\r\n labelSettings: VisualDataLabelsSettings = (series.labelSettings) ? series.labelSettings : this.data.labelSettings;\r\n\r\n enumeration.pushContainer({ displayName: series.displayName });\r\n dataLabelUtils.enumerateDataLabels(this.getLabelSettingsOptions(enumeration, labelSettings, series));\r\n enumeration.popContainer();\r\n }\r\n }\r\n }\r\n\r\n private getLabelSettingsOptions(enumeration: ObjectEnumerationBuilder, labelSettings: VisualDataLabelsSettings, series?: ColumnChartSeries, showAll?: boolean): VisualDataLabelsSettingsOptions {\r\n return {\r\n enumeration: enumeration,\r\n dataLabelsSettings: labelSettings,\r\n show: true,\r\n displayUnits: !EnumExtensions.hasFlag(this.chartType, flagStacked100),\r\n precision: true,\r\n selector: series && series.identity ? series.identity.getSelector() : null,\r\n showAll: showAll,\r\n fontSize: true,\r\n };\r\n }\r\n\r\n private enumerateDataPoints(enumeration: ObjectEnumerationBuilder): void {\r\n let data = this.data;\r\n if (!data)\r\n return;\r\n\r\n let seriesCount = data.series.length;\r\n\r\n if (seriesCount === 0)\r\n return;\r\n\r\n if (data.hasDynamicSeries || seriesCount > 1 || !data.categoryMetadata) {\r\n for (let i = 0; i < seriesCount; i++) {\r\n let series = data.series[i];\r\n enumeration.pushInstance({\r\n objectName: 'dataPoint',\r\n displayName: series.displayName,\r\n selector: ColorHelper.normalizeSelector(series.identity.getSelector()),\r\n properties: {\r\n fill: { solid: { color: series.color } }\r\n },\r\n });\r\n }\r\n }\r\n else {\r\n // For single-category, single-measure column charts, the user can color the individual bars.\r\n let singleSeriesData = data.series[0].data;\r\n let categoryFormatter = data.categoryFormatter;\r\n\r\n // Add default color and show all slices\r\n enumeration.pushInstance({\r\n objectName: 'dataPoint',\r\n selector: null,\r\n properties: {\r\n defaultColor: { solid: { color: data.defaultDataPointColor || this.colors.getColorByIndex(0).value } }\r\n }\r\n }).pushInstance({\r\n objectName: 'dataPoint',\r\n selector: null,\r\n properties: {\r\n showAllDataPoints: !!data.showAllDataPoints\r\n }\r\n });\r\n\r\n for (let i = 0; i < singleSeriesData.length; i++) {\r\n let singleSeriesDataPoints = singleSeriesData[i],\r\n categoryValue: any = data.categories[i];\r\n enumeration.pushInstance({\r\n objectName: 'dataPoint',\r\n displayName: categoryFormatter ? categoryFormatter.format(categoryValue) : categoryValue,\r\n selector: ColorHelper.normalizeSelector(singleSeriesDataPoints.identity.getSelector(), /*isSingleSeries*/true),\r\n properties: {\r\n fill: { solid: { color: singleSeriesDataPoints.color } }\r\n },\r\n });\r\n }\r\n }\r\n }\r\n\r\n public calculateAxesProperties(options: CalculateScaleAndDomainOptions): IAxisProperties[] {\r\n let data = this.data;\r\n this.currentViewport = options.viewport;\r\n let margin = this.margin = options.margin;\r\n\r\n let origCatgSize = (data && data.categories) ? data.categories.length : 0;\r\n let chartLayout: CategoryLayout = data ? this.getCategoryLayout(origCatgSize, options) : {\r\n categoryCount: 0,\r\n categoryThickness: CartesianChart.MinOrdinalRectThickness,\r\n outerPaddingRatio: CartesianChart.OuterPaddingRatio,\r\n isScalar: false\r\n };\r\n this.categoryAxisType = chartLayout.isScalar ? axisType.scalar : null;\r\n\r\n if (data && !chartLayout.isScalar && !this.isScrollable && options.trimOrdinalDataOnOverflow) {\r\n // trim data that doesn't fit on dashboard\r\n let catgSize = Math.min(origCatgSize, chartLayout.categoryCount);\r\n if (catgSize !== origCatgSize) {\r\n data = Prototype.inherit(data);\r\n data.series = ColumnChart.sliceSeries(data.series, catgSize);\r\n data.categories = data.categories.slice(0, catgSize);\r\n }\r\n }\r\n this.columnChart.setData(data);\r\n\r\n let preferredPlotArea = this.getPreferredPlotArea(chartLayout.isScalar, chartLayout.categoryCount, chartLayout.categoryThickness);\r\n\r\n /* preferredPlotArea would be same as currentViewport width when there is no scrollbar. \r\n In that case we want to calculate the available plot area for the shapes by subtracting the margin from available viewport */\r\n if (preferredPlotArea.width === this.currentViewport.width) {\r\n preferredPlotArea.width -= (margin.left + margin.right);\r\n }\r\n preferredPlotArea.height -= (margin.top + margin.bottom);\r\n\r\n let is100Pct = EnumExtensions.hasFlag(this.chartType, flagStacked100); \r\n\r\n // When the category axis is scrollable the height of the category axis and value axis will be different\r\n // The height of the value axis would be same as viewportHeight \r\n let chartContext: ColumnChartContext = {\r\n height: preferredPlotArea.height,\r\n width: preferredPlotArea.width,\r\n duration: 0,\r\n hostService: this.hostService,\r\n mainGraphicsContext: this.mainGraphicsContext,\r\n labelGraphicsContext: this.labelGraphicsContext,\r\n margin: this.margin,\r\n layout: chartLayout,\r\n animator: this.animator,\r\n interactivityService: this.interactivityService,\r\n viewportHeight: this.currentViewport.height - (margin.top + margin.bottom),\r\n viewportWidth: this.currentViewport.width - (margin.left + margin.right),\r\n is100Pct: is100Pct,\r\n isComboChart: this.isComboChart,\r\n };\r\n this.ApplyInteractivity(chartContext);\r\n this.columnChart.setupVisualProps(chartContext);\r\n\r\n let isBarChart = EnumExtensions.hasFlag(this.chartType, flagBar);\r\n\r\n if (isBarChart) {\r\n let temp = options.forcedXDomain;\r\n options.forcedXDomain = options.forcedYDomain;\r\n options.forcedYDomain = temp;\r\n }\r\n\r\n this.xAxisProperties = this.columnChart.setXScale(\r\n is100Pct,\r\n options.forcedTickCount,\r\n options.forcedXDomain,\r\n isBarChart ? options.valueAxisScaleType : options.categoryAxisScaleType,\r\n isBarChart ? options.valueAxisDisplayUnits : options.categoryAxisDisplayUnits,\r\n isBarChart ? options.valueAxisPrecision : options.categoryAxisPrecision);\r\n\r\n this.yAxisProperties = this.columnChart.setYScale(\r\n is100Pct,\r\n options.forcedTickCount,\r\n options.forcedYDomain,\r\n isBarChart ? options.categoryAxisScaleType : options.valueAxisScaleType,\r\n isBarChart ? options.categoryAxisDisplayUnits : options.valueAxisDisplayUnits,\r\n isBarChart ? options.categoryAxisPrecision : options.valueAxisPrecision);\r\n\r\n if (options.showCategoryAxisLabel && this.xAxisProperties.isCategoryAxis || options.showValueAxisLabel && !this.xAxisProperties.isCategoryAxis) {\r\n this.xAxisProperties.axisLabel = data.axesLabels.x;\r\n }\r\n else {\r\n this.xAxisProperties.axisLabel = null;\r\n }\r\n if (options.showValueAxisLabel && !this.yAxisProperties.isCategoryAxis || options.showCategoryAxisLabel && this.yAxisProperties.isCategoryAxis) {\r\n this.yAxisProperties.axisLabel = data.axesLabels.y;\r\n }\r\n else {\r\n this.yAxisProperties.axisLabel = null;\r\n }\r\n\r\n return [this.xAxisProperties, this.yAxisProperties];\r\n }\r\n\r\n public getPreferredPlotArea(isScalar: boolean, categoryCount: number, categoryThickness: number): IViewport {\r\n let viewport: IViewport = {\r\n height: this.currentViewport.height,\r\n width: this.currentViewport.width\r\n };\r\n\r\n if (this.isScrollable && !isScalar) {\r\n let preferredWidth = CartesianChart.getPreferredCategorySpan(categoryCount, categoryThickness);\r\n if (EnumExtensions.hasFlag(this.chartType, flagBar)) {\r\n viewport.height = Math.max(preferredWidth, viewport.height);\r\n }\r\n else\r\n viewport.width = Math.max(preferredWidth, viewport.width);\r\n }\r\n return viewport;\r\n }\r\n\r\n private ApplyInteractivity(chartContext: ColumnChartContext): void {\r\n let interactivity = this.interactivity;\r\n if (interactivity) {\r\n if (interactivity.dragDataPoint) {\r\n chartContext.onDragStart = (datum: ColumnChartDataPoint) => {\r\n if (!datum.identity)\r\n return;\r\n\r\n this.hostService.onDragStart({\r\n event: <any>d3.event,\r\n data: {\r\n data: datum.identity.getSelector()\r\n }\r\n });\r\n };\r\n }\r\n\r\n if (interactivity.isInteractiveLegend) {\r\n let dragMove = () => {\r\n let mousePoint = d3.mouse(this.mainGraphicsContext[0][0]); // get the x and y for the column area itself\r\n let x: number = mousePoint[0];\r\n let y: number = mousePoint[1];\r\n let index: number = this.columnChart.getClosestColumnIndex(x, y);\r\n this.selectColumn(index);\r\n };\r\n\r\n let ColumnChartSvg: EventTarget = ColumnChart.getInteractiveColumnChartDomElement(this.element);\r\n\r\n //set click interaction on the visual\r\n this.svg.on('click', dragMove);\r\n //set click interaction on the background\r\n d3.select(ColumnChartSvg)\r\n .on('click', dragMove)\r\n .style('touch-action', 'none');\r\n let drag = d3.behavior.drag()\r\n .origin(Object)\r\n .on(\"drag\", dragMove);\r\n //set drag interaction on the visual\r\n this.svg.call(drag);\r\n //set drag interaction on the background\r\n d3.select(ColumnChartSvg).call(drag);\r\n }\r\n }\r\n }\r\n\r\n private selectColumn(indexOfColumnSelected: number, force: boolean = false): void {\r\n if (!force && this.lastInteractiveSelectedColumnIndex === indexOfColumnSelected) return; // same column, nothing to do here\r\n\r\n let legendData: LegendData = this.createInteractiveLegendDataPoints(indexOfColumnSelected);\r\n let legendDataPoints: LegendDataPoint[] = legendData.dataPoints;\r\n this.cartesianVisualHost.updateLegend(legendData);\r\n if (legendDataPoints.length > 0) {\r\n this.columnChart.selectColumn(indexOfColumnSelected, this.lastInteractiveSelectedColumnIndex);\r\n }\r\n this.lastInteractiveSelectedColumnIndex = indexOfColumnSelected;\r\n }\r\n\r\n private createInteractiveLegendDataPoints(columnIndex: number): LegendData {\r\n let data = this.data;\r\n if (!data || _.isEmpty(data.series))\r\n return { dataPoints: [] };\r\n\r\n let formatStringProp = columnChartProps.general.formatString;\r\n let legendDataPoints: LegendDataPoint[] = [];\r\n let category = data.categories && data.categories[columnIndex];\r\n let allSeries = data.series;\r\n let dataPoints = data.legendData && data.legendData.dataPoints;\r\n let converterStrategy = new ColumnChartConverterHelper(this.dataViewCat);\r\n\r\n for (let i = 0, len = allSeries.length; i < len; i++) {\r\n let measure = converterStrategy.getValueBySeriesAndCategory(i, columnIndex);\r\n let valueMetadata = data.valuesMetadata[i];\r\n let formattedLabel = converterHelper.getFormattedLegendLabel(valueMetadata, this.dataViewCat.values, formatStringProp);\r\n let dataPointColor: string;\r\n if (allSeries.length === 1) {\r\n let series = allSeries[0];\r\n dataPointColor = series.data.length > columnIndex && series.data[columnIndex].color;\r\n } else {\r\n dataPointColor = dataPoints.length > i && dataPoints[i].color;\r\n }\r\n\r\n legendDataPoints.push({\r\n color: dataPointColor,\r\n icon: LegendIcon.Box,\r\n label: formattedLabel,\r\n category: data.categoryFormatter ? data.categoryFormatter.format(category) : category,\r\n measure: valueFormatter.format(measure, valueFormatter.getFormatString(valueMetadata, formatStringProp)),\r\n identity: SelectionId.createNull(),\r\n selected: false\r\n });\r\n }\r\n\r\n return { dataPoints: legendDataPoints };\r\n }\r\n\r\n public overrideXScale(xProperties: IAxisProperties): void {\r\n this.xAxisProperties = xProperties;\r\n }\r\n\r\n public render(suppressAnimations: boolean): CartesianVisualRenderResult {\r\n let columnChartDrawInfo = this.columnChart.drawColumns(!suppressAnimations /* useAnimations */);\r\n let data = this.data;\r\n\r\n if (this.tooltipsEnabled)\r\n TooltipManager.addTooltip(columnChartDrawInfo.shapesSelection, (tooltipEvent: TooltipEvent) => tooltipEvent.data.tooltipInfo);\r\n let allDataPoints: ColumnChartDataPoint[] = [];\r\n let behaviorOptions: ColumnBehaviorOptions = undefined;\r\n if (this.interactivityService) {\r\n for (let i = 0, ilen = data.series.length; i < ilen; i++) {\r\n allDataPoints = allDataPoints.concat(data.series[i].data);\r\n }\r\n behaviorOptions = {\r\n datapoints: allDataPoints,\r\n bars: columnChartDrawInfo.shapesSelection,\r\n hasHighlights: data.hasHighlights,\r\n mainGraphicsContext: this.mainGraphicsContext,\r\n viewport: columnChartDrawInfo.viewport,\r\n axisOptions: columnChartDrawInfo.axisOptions,\r\n showLabel: data.labelSettings.show\r\n };\r\n }\r\n\r\n if (this.interactivity && this.interactivity.isInteractiveLegend) {\r\n if (this.data.series.length > 0) {\r\n this.selectColumn(0, true); // start with the first column\r\n }\r\n }\r\n SVGUtil.flushAllD3TransitionsIfNeeded(this.options);\r\n return { dataPoints: allDataPoints, behaviorOptions: behaviorOptions, labelDataPoints: columnChartDrawInfo.labelDataPoints, labelsAreNumeric: true };\r\n }\r\n\r\n public onClearSelection(): void {\r\n if (this.interactivityService) {\r\n this.interactivityService.clearSelection();\r\n }\r\n }\r\n\r\n public getVisualCategoryAxisIsScalar(): boolean {\r\n return this.data ? this.data.scalarCategoryAxis : false;\r\n }\r\n\r\n public getSupportedCategoryAxisType(): string {\r\n let metaDataColumn = this.data ? this.data.categoryMetadata : undefined;\r\n let valueType = AxisHelper.getCategoryValueType(metaDataColumn);\r\n let isOrdinal = AxisHelper.isOrdinal(valueType);\r\n return isOrdinal ? axisType.categorical : axisType.both;\r\n }\r\n\r\n public setFilteredData(startIndex: number, endIndex: number): CartesianData {\r\n let data = Prototype.inherit(this.data);\r\n data.series = ColumnChart.sliceSeries(data.series, endIndex, startIndex);\r\n data.categories = data.categories.slice(startIndex, endIndex);\r\n this.columnChart.setData(data);\r\n return data;\r\n }\r\n\r\n public static getLabelFill(labelColor: string, isInside: boolean, isCombo: boolean): string {\r\n if (labelColor) {\r\n return labelColor;\r\n }\r\n if (isInside && !isCombo) {\r\n return NewDataLabelUtils.defaultInsideLabelColor;\r\n }\r\n return NewDataLabelUtils.defaultLabelColor;\r\n }\r\n }\r\n\r\n class ColumnChartConverterHelper implements IColumnChartConverterStrategy {\r\n private dataView: DataViewCategorical;\r\n\r\n constructor(dataView: DataViewCategorical) {\r\n this.dataView = dataView;\r\n }\r\n\r\n public getLegend(colors: IDataColorPalette, defaultLegendLabelColor: string, defaultColor?: string): LegendSeriesInfo {\r\n let legend: LegendDataPoint[] = [];\r\n let seriesSources: DataViewMetadataColumn[] = [];\r\n let seriesObjects: DataViewObjects[][] = [];\r\n let grouped: boolean = false;\r\n\r\n let colorHelper = new ColorHelper(colors, columnChartProps.dataPoint.fill, defaultColor);\r\n let legendTitle = undefined;\r\n if (this.dataView && this.dataView.values) {\r\n let allValues = this.dataView.values;\r\n let valueGroups = allValues.grouped();\r\n\r\n let hasDynamicSeries = !!(allValues && allValues.source);\r\n\r\n let formatStringProp = columnChartProps.general.formatString;\r\n for (let valueGroupsIndex = 0, valueGroupsLen = valueGroups.length; valueGroupsIndex < valueGroupsLen; valueGroupsIndex++) {\r\n let valueGroup = valueGroups[valueGroupsIndex],\r\n valueGroupObjects = valueGroup.objects,\r\n values = valueGroup.values;\r\n\r\n for (let valueIndex = 0, valuesLen = values.length; valueIndex < valuesLen; valueIndex++) {\r\n let series = values[valueIndex];\r\n let source = series.source;\r\n // Gradient measures do not create series.\r\n if (DataRoleHelper.hasRole(source, 'Gradient') && !DataRoleHelper.hasRole(source, 'Y'))\r\n continue;\r\n\r\n seriesSources.push(source);\r\n seriesObjects.push(series.objects);\r\n\r\n let selectionId = series.identity ?\r\n SelectionId.createWithIdAndMeasure(series.identity, source.queryName) :\r\n SelectionId.createWithMeasure(this.getMeasureNameByIndex(valueIndex));\r\n\r\n let label = converterHelper.getFormattedLegendLabel(source, allValues, formatStringProp);\r\n\r\n let color = hasDynamicSeries\r\n ? colorHelper.getColorForSeriesValue(valueGroupObjects || source.objects, allValues.identityFields, source.groupName)\r\n : colorHelper.getColorForMeasure(valueGroupObjects || source.objects, source.queryName);\r\n\r\n legend.push({\r\n icon: LegendIcon.Box,\r\n color: color,\r\n label: label,\r\n identity: selectionId,\r\n selected: false,\r\n });\r\n\r\n if (series.identity && source.groupName !== undefined) {\r\n grouped = true;\r\n }\r\n }\r\n }\r\n\r\n let dvValues = this.dataView.values;\r\n legendTitle = dvValues && dvValues.source ? dvValues.source.displayName : \"\";\r\n }\r\n\r\n let legendData: LegendData = {\r\n title: legendTitle,\r\n dataPoints: legend,\r\n grouped: grouped,\r\n labelColor: defaultLegendLabelColor,\r\n };\r\n\r\n return {\r\n legend: legendData,\r\n seriesSources: seriesSources,\r\n seriesObjects: seriesObjects,\r\n };\r\n }\r\n\r\n public getValueBySeriesAndCategory(series: number, category: number): number {\r\n return this.dataView.values[series].values[category];\r\n }\r\n\r\n public getMeasureNameByIndex(index: number): string {\r\n return this.dataView.values[index].source.queryName;\r\n }\r\n\r\n public hasHighlightValues(series: number): boolean {\r\n let column = this.dataView && this.dataView.values ? this.dataView.values[series] : undefined;\r\n return column && !!column.highlights;\r\n }\r\n\r\n public getHighlightBySeriesAndCategory(series: number, category: number): number {\r\n return this.dataView.values[series].highlights[category];\r\n }\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n import PixelConverter = jsCommon.PixelConverter;\r\n\r\n export class ClusteredColumnChartStrategy implements IColumnChartStrategy {\r\n private static classes = {\r\n item: {\r\n class: 'column',\r\n selector: '.column',\r\n },\r\n };\r\n\r\n private data: ColumnChartData;\r\n private graphicsContext: ColumnChartContext;\r\n private seriesOffsetScale: D3.Scale.OrdinalScale;\r\n private width: number;\r\n private height: number;\r\n private margin: IMargin;\r\n private xProps: IAxisProperties;\r\n private yProps: IAxisProperties;\r\n private categoryLayout: CategoryLayout;\r\n private viewportHeight: number;\r\n private viewportWidth: number;\r\n private columnsCenters: number[];\r\n private columnSelectionLineHandle: D3.Selection;\r\n private animator: IColumnChartAnimator;\r\n private interactivityService: IInteractivityService;\r\n private layout: IColumnLayout;\r\n private isComboChart: boolean;\r\n\r\n public setupVisualProps(columnChartProps: ColumnChartContext): void {\r\n this.graphicsContext = columnChartProps;\r\n this.margin = columnChartProps.margin;\r\n this.width = this.graphicsContext.width;\r\n this.height = this.graphicsContext.height;\r\n this.categoryLayout = columnChartProps.layout;\r\n this.animator = columnChartProps.animator;\r\n this.interactivityService = columnChartProps.interactivityService;\r\n this.viewportHeight = columnChartProps.viewportHeight;\r\n this.viewportWidth = columnChartProps.viewportWidth;\r\n this.isComboChart = columnChartProps.isComboChart;\r\n }\r\n\r\n public setData(data: ColumnChartData) {\r\n this.data = data;\r\n }\r\n\r\n public setXScale(is100Pct: boolean, forcedTickCount?: number, forcedXDomain?: any[], axisScaleType?: string, axisDisplayUnits?: number, axisPrecision?: number): IAxisProperties {\r\n let width = this.width;\r\n\r\n let forcedXMin, forcedXMax;\r\n\r\n if (forcedXDomain && forcedXDomain.length === 2) {\r\n forcedXMin = forcedXDomain[0];\r\n forcedXMax = forcedXDomain[1];\r\n }\r\n\r\n let props = this.xProps = ColumnUtil.getCategoryAxis(\r\n this.data,\r\n width,\r\n this.categoryLayout,\r\n false,\r\n forcedXMin,\r\n forcedXMax,\r\n axisScaleType,\r\n axisDisplayUnits,\r\n axisPrecision);\r\n\r\n // create clustered offset scale\r\n let seriesLength = this.data.series.length;\r\n let columnWidth = (this.categoryLayout.categoryThickness * (1 - CartesianChart.InnerPaddingRatio)) / seriesLength;\r\n this.seriesOffsetScale = d3.scale.ordinal()\r\n .domain(this.data.series.map(s => s.index))\r\n .rangeBands([0, seriesLength * columnWidth]);\r\n\r\n return props;\r\n }\r\n\r\n public setYScale(is100Pct: boolean, forcedTickCount?: number, forcedYDomain?: any[], axisScaleType?: string, axisDisplayUnits?: number, axisPrecision?: number): IAxisProperties {\r\n debug.assert(!is100Pct, 'Cannot have 100% clustered chart.');\r\n\r\n let height = this.viewportHeight;\r\n let valueDomain = AxisHelper.createValueDomain(this.data.series, true) || fallBackDomain;\r\n let combinedDomain = AxisHelper.combineDomain(forcedYDomain, valueDomain);\r\n let shouldClamp = AxisHelper.scaleShouldClamp(combinedDomain, valueDomain);\r\n \r\n this.yProps = AxisHelper.createAxis({\r\n pixelSpan: height,\r\n dataDomain: combinedDomain,\r\n metaDataColumn: this.data.valuesMetadata[0],\r\n formatString: valueFormatter.getFormatString(this.data.valuesMetadata[0], columnChartProps.general.formatString),\r\n outerPadding: 0,\r\n isScalar: true,\r\n isVertical: true,\r\n forcedTickCount: forcedTickCount,\r\n useTickIntervalForDisplayUnits: true,\r\n isCategoryAxis: false,\r\n scaleType: axisScaleType,\r\n axisDisplayUnits: axisDisplayUnits,\r\n axisPrecision: axisPrecision,\r\n shouldClamp: shouldClamp,\r\n });\r\n\r\n return this.yProps;\r\n }\r\n\r\n public drawColumns(useAnimation: boolean): ColumnChartDrawInfo {\r\n let data = this.data;\r\n debug.assertValue(data, 'data could not be null or undefined');\r\n\r\n this.columnsCenters = null; // invalidate the columnsCenters so that will be calculated again\r\n\r\n let categoryWidth = (this.categoryLayout.categoryThickness * (1 - CartesianChart.InnerPaddingRatio));\r\n let columnWidth = categoryWidth / data.series.length;\r\n let axisOptions: ColumnAxisOptions = {\r\n columnWidth: columnWidth,\r\n categoryWidth: categoryWidth,\r\n xScale: this.xProps.scale,\r\n yScale: this.yProps.scale,\r\n seriesOffsetScale: this.seriesOffsetScale,\r\n isScalar: this.categoryLayout.isScalar,\r\n margin: this.margin,\r\n };\r\n let clusteredColumnLayout = this.layout = ClusteredColumnChartStrategy.getLayout(data, axisOptions);\r\n let dataLabelSettings = data.labelSettings;\r\n let labelDataPoints: LabelDataPoint[] = [];\r\n if (dataLabelSettings && dataLabelSettings.show) {\r\n labelDataPoints = this.createLabelDataPoints();\r\n }\r\n\r\n let result: ColumnChartAnimationResult;\r\n let shapes: D3.UpdateSelection;\r\n let series = ColumnUtil.drawSeries(data, this.graphicsContext.mainGraphicsContext, axisOptions);\r\n if (this.animator && useAnimation) {\r\n result = this.animator.animate({\r\n viewModel: data,\r\n series: series,\r\n layout: clusteredColumnLayout,\r\n itemCS: ClusteredColumnChartStrategy.classes.item,\r\n interactivityService: this.interactivityService,\r\n mainGraphicsContext: this.graphicsContext.mainGraphicsContext,\r\n viewPort: { height: this.height, width: this.width }\r\n });\r\n shapes = result.shapes;\r\n }\r\n if (!this.animator || !useAnimation || result.failed) {\r\n shapes = ColumnUtil.drawDefaultShapes(data, series, clusteredColumnLayout, ClusteredColumnChartStrategy.classes.item, !this.animator, this.interactivityService && this.interactivityService.hasSelection());\r\n }\r\n\r\n ColumnUtil.applyInteractivity(shapes, this.graphicsContext.onDragStart);\r\n \r\n return {\r\n shapesSelection: shapes,\r\n viewport: { height: this.height, width: this.width },\r\n axisOptions: axisOptions,\r\n labelDataPoints: labelDataPoints,\r\n };\r\n }\r\n\r\n public selectColumn(selectedColumnIndex: number, lastSelectedColumnIndex: number): void {\r\n ColumnUtil.setChosenColumnOpacity(this.graphicsContext.mainGraphicsContext, ClusteredColumnChartStrategy.classes.item.selector, selectedColumnIndex, lastSelectedColumnIndex);\r\n this.moveHandle(selectedColumnIndex);\r\n }\r\n\r\n public getClosestColumnIndex(x: number, y: number): number {\r\n return ColumnUtil.getClosestColumnIndex(x, this.getColumnsCenters());\r\n }\r\n\r\n /**\r\n * Get the chart's columns centers (x value).\r\n */\r\n private getColumnsCenters(): number[] {\r\n if (!this.columnsCenters) { // lazy creation\r\n let categoryWidth: number = this.categoryLayout.categoryThickness * (1 - CartesianChart.InnerPaddingRatio);\r\n // use the axis scale and first series data to get category centers\r\n if (this.data.series.length > 0) {\r\n let xScaleOffset = 0;\r\n if (!this.categoryLayout.isScalar)\r\n xScaleOffset = categoryWidth / 2;\r\n let firstSeries = this.data.series[0];\r\n this.columnsCenters = firstSeries.data.map(d => this.xProps.scale(this.categoryLayout.isScalar ? d.categoryValue : d.categoryIndex) + xScaleOffset);\r\n }\r\n }\r\n return this.columnsCenters;\r\n }\r\n\r\n private moveHandle(selectedColumnIndex: number) {\r\n let columnCenters = this.getColumnsCenters();\r\n let x = columnCenters[selectedColumnIndex];\r\n\r\n if (!this.columnSelectionLineHandle) {\r\n let handle = this.columnSelectionLineHandle = this.graphicsContext.mainGraphicsContext.append('g');\r\n handle.append('line')\r\n .classed('interactive-hover-line', true)\r\n .attr({\r\n x1: x,\r\n x2: x,\r\n y1: 0,\r\n y2: this.height,\r\n });\r\n\r\n handle.append('circle')\r\n .attr({\r\n cx: x,\r\n cy: this.height,\r\n r: '6px',\r\n })\r\n .classed('drag-handle', true);\r\n }\r\n else {\r\n let handle = this.columnSelectionLineHandle;\r\n handle.select('line').attr({ x1: x, x2: x });\r\n handle.select('circle').attr({ cx: x });\r\n }\r\n }\r\n\r\n public static getLayout(data: ColumnChartData, axisOptions: ColumnAxisOptions): IColumnLayout {\r\n let columnWidth = axisOptions.columnWidth;\r\n let halfColumnWidth = 0.5 * columnWidth;\r\n let quarterColumnWidth = halfColumnWidth / 2;\r\n let isScalar = axisOptions.isScalar;\r\n let xScale = axisOptions.xScale;\r\n let yScale = axisOptions.yScale;\r\n let seriesOffsetScale = axisOptions.seriesOffsetScale;\r\n let scaledY0 = yScale(0);\r\n let xScaleOffset = 0;\r\n\r\n if (isScalar)\r\n xScaleOffset = axisOptions.categoryWidth / 2;\r\n\r\n return {\r\n shapeLayout: {\r\n width: (d: ColumnChartDataPoint) => d.drawThinner ? halfColumnWidth : columnWidth,\r\n x: (d: ColumnChartDataPoint) => xScale(isScalar ? d.categoryValue : d.categoryIndex) + seriesOffsetScale(d.seriesIndex) - xScaleOffset + (d.drawThinner ? quarterColumnWidth : 0),\r\n y: (d: ColumnChartDataPoint) => scaledY0 + AxisHelper.diffScaled(yScale, Math.max(0, d.value), 0),\r\n height: (d: ColumnChartDataPoint) => Math.abs(AxisHelper.diffScaled(yScale, 0, d.value)),\r\n },\r\n shapeLayoutWithoutHighlights: {\r\n width: (d: ColumnChartDataPoint) => columnWidth,\r\n x: (d: ColumnChartDataPoint) => xScale(isScalar ? d.categoryValue : d.categoryIndex) + seriesOffsetScale(d.seriesIndex) - xScaleOffset,\r\n y: (d: ColumnChartDataPoint) => scaledY0 + AxisHelper.diffScaled(yScale, Math.max(0, d.originalValue), 0),\r\n height: (d: ColumnChartDataPoint) => Math.abs(AxisHelper.diffScaled(yScale, 0, d.originalValue)),\r\n },\r\n zeroShapeLayout: {\r\n width: (d: ColumnChartDataPoint) => d.drawThinner ? halfColumnWidth : columnWidth,\r\n x: (d: ColumnChartDataPoint) => xScale(isScalar ? d.categoryValue : d.categoryIndex) + seriesOffsetScale(d.seriesIndex) - xScaleOffset + (d.drawThinner ? quarterColumnWidth : 0),\r\n y: (d: ColumnChartDataPoint) => scaledY0,\r\n height: (d: ColumnChartDataPoint) => 0,\r\n },\r\n };\r\n }\r\n\r\n private createLabelDataPoints(): LabelDataPoint[] {\r\n let labelDataPoints: LabelDataPoint[] = [];\r\n let data = this.data;\r\n let series = data.series;\r\n let formattersCache = NewDataLabelUtils.createColumnFormatterCacheManager();\r\n let shapeLayout = this.layout.shapeLayout;\r\n\r\n for (let currentSeries of series) {\r\n let labelSettings = currentSeries.labelSettings ? currentSeries.labelSettings : data.labelSettings;\r\n if (!labelSettings.show)\r\n continue;\r\n\r\n let axisFormatter: number = NewDataLabelUtils.getDisplayUnitValueFromAxisFormatter(this.yProps.formatter, labelSettings);\r\n for (let dataPoint of currentSeries.data) {\r\n if ((data.hasHighlights && !dataPoint.highlight) || dataPoint.value == null) {\r\n continue;\r\n }\r\n\r\n // Calculate parent rectangle\r\n let parentRect: IRect = {\r\n left: shapeLayout.x(dataPoint),\r\n top: shapeLayout.y(dataPoint),\r\n width: shapeLayout.width(dataPoint),\r\n height: shapeLayout.height(dataPoint),\r\n };\r\n\r\n // Calculate label text\r\n let formatString = dataPoint.labelFormatString;\r\n let formatter = formattersCache.getOrCreate(formatString, labelSettings, axisFormatter);\r\n let text = NewDataLabelUtils.getLabelFormattedText(formatter.format(dataPoint.value));\r\n\r\n // Calculate text size\r\n let properties: TextProperties = {\r\n text: text,\r\n fontFamily: NewDataLabelUtils.LabelTextProperties.fontFamily,\r\n fontSize: PixelConverter.fromPoint(labelSettings.fontSize || NewDataLabelUtils.DefaultLabelFontSizeInPt),\r\n fontWeight: NewDataLabelUtils.LabelTextProperties.fontWeight,\r\n };\r\n let textWidth = TextMeasurementService.measureSvgTextWidth(properties);\r\n let textHeight = TextMeasurementService.estimateSvgTextHeight(properties, true /* tightFitForNumeric */);\r\n\r\n labelDataPoints.push({\r\n isPreferred: true,\r\n text: text,\r\n textSize: {\r\n width: textWidth,\r\n height: textHeight,\r\n },\r\n outsideFill: ColumnChart.getLabelFill(labelSettings.labelColor, false, this.isComboChart),\r\n insideFill: ColumnChart.getLabelFill(labelSettings.labelColor, true, this.isComboChart),\r\n parentType: LabelDataPointParentType.Rectangle,\r\n parentShape: {\r\n rect: parentRect,\r\n orientation: dataPoint.value >= 0 ? NewRectOrientation.VerticalBottomBased : NewRectOrientation.VerticalTopBased,\r\n validPositions: ColumnChart.clusteredValidLabelPositions,\r\n },\r\n identity: dataPoint.identity,\r\n fontSize: labelSettings.fontSize || NewDataLabelUtils.DefaultLabelFontSizeInPt,\r\n });\r\n }\r\n }\r\n\r\n return labelDataPoints;\r\n }\r\n }\r\n\r\n export class ClusteredBarChartStrategy implements IColumnChartStrategy {\r\n private static classes = {\r\n item: {\r\n class: 'bar',\r\n selector: '.bar'\r\n },\r\n };\r\n\r\n private data: ColumnChartData;\r\n private graphicsContext: ColumnChartContext;\r\n private seriesOffsetScale: D3.Scale.OrdinalScale;\r\n private width: number;\r\n private height: number;\r\n private margin: IMargin;\r\n private xProps: IAxisProperties;\r\n private yProps: IAxisProperties;\r\n private categoryLayout: CategoryLayout;\r\n private viewportHeight: number;\r\n private viewportWidth: number;\r\n private barsCenters: number[];\r\n private columnSelectionLineHandle: D3.Selection;\r\n private animator: IColumnChartAnimator;\r\n private interactivityService: IInteractivityService;\r\n private layout: IColumnLayout;\r\n private isComboChart: boolean;\r\n\r\n public setupVisualProps(barChartProps: ColumnChartContext): void {\r\n this.graphicsContext = barChartProps;\r\n this.margin = barChartProps.margin;\r\n this.width = this.graphicsContext.width;\r\n this.height = this.graphicsContext.height;\r\n this.categoryLayout = barChartProps.layout;\r\n this.animator = barChartProps.animator;\r\n this.interactivityService = barChartProps.interactivityService;\r\n this.viewportHeight = barChartProps.viewportHeight;\r\n this.viewportWidth = barChartProps.viewportWidth;\r\n this.isComboChart = barChartProps.isComboChart;\r\n }\r\n\r\n public setData(data: ColumnChartData) {\r\n this.data = data;\r\n }\r\n\r\n public setYScale(is100Pct: boolean, forcedTickCount?: number, forcedYDomain?: any[], axisScaleType?: string, axisDisplayUnits?: number, axisPrecision?: number): IAxisProperties {\r\n let height = this.height;\r\n let forcedYMin, forcedYMax;\r\n\r\n if (forcedYDomain && forcedYDomain.length === 2) {\r\n forcedYMin = forcedYDomain[0];\r\n forcedYMax = forcedYDomain[1];\r\n }\r\n\r\n let props = this.yProps = ColumnUtil.getCategoryAxis(\r\n this.data,\r\n height,\r\n this.categoryLayout,\r\n true,\r\n forcedYMin,\r\n forcedYMax,\r\n axisScaleType,\r\n axisDisplayUnits,\r\n axisPrecision\r\n );\r\n\r\n // create clustered offset scale\r\n let seriesLength = this.data.series.length;\r\n let columnWidth = (this.categoryLayout.categoryThickness * (1 - CartesianChart.InnerPaddingRatio)) / seriesLength;\r\n this.seriesOffsetScale = d3.scale.ordinal()\r\n .domain(this.data.series.map(s => s.index))\r\n .rangeBands([0, seriesLength * columnWidth]);\r\n\r\n return props;\r\n }\r\n\r\n public setXScale(is100Pct: boolean, forcedTickCount?: number, forcedXDomain?: any[], axisScaleType?: string, axisDisplayUnits?: number, axisPrecision?: number): IAxisProperties {\r\n debug.assert(!is100Pct, 'Cannot have 100% clustered chart.');\r\n debug.assert(forcedTickCount === undefined, 'Cannot have clustered bar chart as combo chart.'); \r\n\r\n let width = this.width;\r\n let valueDomain = AxisHelper.createValueDomain(this.data.series, true) || fallBackDomain;\r\n let combinedDomain = AxisHelper.combineDomain(forcedXDomain, valueDomain);\r\n let shouldClamp = AxisHelper.scaleShouldClamp(combinedDomain, valueDomain);\r\n\r\n this.xProps = AxisHelper.createAxis({\r\n pixelSpan: width,\r\n dataDomain: combinedDomain,\r\n metaDataColumn: this.data.valuesMetadata[0],\r\n formatString: valueFormatter.getFormatString(this.data.valuesMetadata[0], columnChartProps.general.formatString),\r\n outerPadding: 0,\r\n isScalar: true,\r\n isVertical: false,\r\n forcedTickCount: forcedTickCount,\r\n useTickIntervalForDisplayUnits: true,\r\n isCategoryAxis: false,\r\n scaleType: axisScaleType,\r\n axisDisplayUnits: axisDisplayUnits,\r\n axisPrecision: axisPrecision,\r\n shouldClamp: shouldClamp,\r\n });\r\n\r\n this.xProps.axis.tickSize(-this.viewportHeight, 0);\r\n\r\n return this.xProps;\r\n }\r\n\r\n public drawColumns(useAnimation: boolean): ColumnChartDrawInfo {\r\n let data = this.data;\r\n debug.assertValue(data, 'data could not be null or undefined');\r\n\r\n this.barsCenters = null; // invalidate the columnsCenters so that will be calculated again\r\n\r\n let categoryWidth = (this.categoryLayout.categoryThickness * (1 - CartesianChart.InnerPaddingRatio));\r\n let columnWidth = categoryWidth / data.series.length;\r\n let axisOptions: ColumnAxisOptions = {\r\n columnWidth: columnWidth,\r\n categoryWidth: categoryWidth,\r\n xScale: this.xProps.scale,\r\n yScale: this.yProps.scale,\r\n seriesOffsetScale: this.seriesOffsetScale,\r\n isScalar: this.categoryLayout.isScalar,\r\n margin: this.margin,\r\n };\r\n let clusteredBarLayout = this.layout = ClusteredBarChartStrategy.getLayout(data, axisOptions);\r\n let dataLabelSettings = data.labelSettings;\r\n let labelDataPoints: LabelDataPoint[] = [];\r\n if (dataLabelSettings && dataLabelSettings.show) {\r\n labelDataPoints = this.createLabelDataPoints();\r\n }\r\n\r\n let result: ColumnChartAnimationResult;\r\n let shapes: D3.UpdateSelection;\r\n let series = ColumnUtil.drawSeries(data, this.graphicsContext.mainGraphicsContext, axisOptions);\r\n if (this.animator && useAnimation) {\r\n result = this.animator.animate({\r\n viewModel: data,\r\n series: series,\r\n layout: clusteredBarLayout,\r\n itemCS: ClusteredBarChartStrategy.classes.item,\r\n interactivityService: this.interactivityService,\r\n mainGraphicsContext: this.graphicsContext.mainGraphicsContext,\r\n viewPort: { height: this.height, width: this.width }\r\n });\r\n shapes = result.shapes;\r\n }\r\n if (!this.animator || !useAnimation || result.failed) {\r\n shapes = ColumnUtil.drawDefaultShapes(data, series, clusteredBarLayout, ClusteredBarChartStrategy.classes.item, !this.animator, this.interactivityService && this.interactivityService.hasSelection());\r\n }\r\n\r\n ColumnUtil.applyInteractivity(shapes, this.graphicsContext.onDragStart);\r\n\r\n return {\r\n shapesSelection: shapes,\r\n viewport: { height: this.height, width: this.width },\r\n axisOptions: axisOptions,\r\n labelDataPoints: labelDataPoints,\r\n };\r\n }\r\n\r\n public selectColumn(selectedColumnIndex: number, lastSelectedColumnIndex: number): void {\r\n ColumnUtil.setChosenColumnOpacity(this.graphicsContext.mainGraphicsContext, ClusteredBarChartStrategy.classes.item.selector, selectedColumnIndex, lastSelectedColumnIndex);\r\n this.moveHandle(selectedColumnIndex);\r\n }\r\n\r\n public getClosestColumnIndex(x: number, y: number): number {\r\n return ColumnUtil.getClosestColumnIndex(y, this.getBarsCenters());\r\n }\r\n\r\n /** \r\n * Get the chart's columns centers (y value).\r\n */\r\n private getBarsCenters(): number[] {\r\n if (!this.barsCenters) { // lazy creation\r\n let barWidth: number = this.categoryLayout.categoryThickness * (1 - CartesianChart.InnerPaddingRatio);\r\n // use the axis scale and first series data to get category centers\r\n if (this.data.series.length > 0) {\r\n let yScaleOffset = 0;\r\n if (!this.categoryLayout.isScalar)\r\n yScaleOffset = barWidth / 2;\r\n let firstSeries = this.data.series[0];\r\n this.barsCenters = firstSeries.data.map(d => this.yProps.scale(this.categoryLayout.isScalar ? d.categoryValue : d.categoryIndex) + yScaleOffset);\r\n }\r\n }\r\n return this.barsCenters;\r\n }\r\n\r\n private moveHandle(selectedColumnIndex: number) {\r\n let barCenters = this.getBarsCenters();\r\n let y = barCenters[selectedColumnIndex];\r\n\r\n if (!this.columnSelectionLineHandle) {\r\n let handle = this.columnSelectionLineHandle = this.graphicsContext.mainGraphicsContext.append('g');\r\n handle.append('line')\r\n .classed('interactive-hover-line', true)\r\n .attr({\r\n x1: 0,\r\n x2: this.width,\r\n y1: y,\r\n y2: y,\r\n });\r\n handle.append('circle')\r\n .attr({\r\n cx: 0,\r\n cy: y,\r\n r: '6px',\r\n })\r\n .classed('drag-handle', true);\r\n }\r\n else {\r\n let handle = this.columnSelectionLineHandle;\r\n handle.select('line').attr({ y1: y, y2: y });\r\n handle.select('circle').attr({ cy: y });\r\n }\r\n }\r\n\r\n public static getLayout(data: ColumnChartData, axisOptions: ColumnAxisOptions): IColumnLayout {\r\n let columnWidth = axisOptions.columnWidth;\r\n let halfColumnWidth = 0.5 * columnWidth;\r\n let quarterColumnWidth = halfColumnWidth / 2;\r\n let isScalar = axisOptions.isScalar;\r\n let xScale = axisOptions.xScale;\r\n let yScale = axisOptions.yScale;\r\n let seriesOffsetScale = axisOptions.seriesOffsetScale;\r\n let scaledX0 = xScale(0);\r\n let yScaleOffset = 0;\r\n\r\n if (isScalar)\r\n yScaleOffset = axisOptions.categoryWidth / 2;\r\n\r\n return {\r\n shapeLayout: {\r\n width: (d: ColumnChartDataPoint) => Math.abs(AxisHelper.diffScaled(xScale, 0, d.value)),\r\n x: (d: ColumnChartDataPoint) => scaledX0 + AxisHelper.diffScaled(xScale, Math.min(0, d.value), 0),\r\n y: (d: ColumnChartDataPoint) => yScale(isScalar ? d.categoryValue : d.categoryIndex) + seriesOffsetScale(d.seriesIndex) - yScaleOffset + (d.drawThinner ? quarterColumnWidth : 0),\r\n height: (d: ColumnChartDataPoint) => d.drawThinner ? halfColumnWidth : columnWidth,\r\n },\r\n shapeLayoutWithoutHighlights: {\r\n width: (d: ColumnChartDataPoint) => Math.abs(AxisHelper.diffScaled(xScale, 0, d.originalValue)),\r\n x: (d: ColumnChartDataPoint) => scaledX0 + AxisHelper.diffScaled(xScale, Math.min(0, d.originalValue), 0),\r\n y: (d: ColumnChartDataPoint) => yScale(isScalar ? d.categoryValue : d.categoryIndex) + seriesOffsetScale(d.seriesIndex) - yScaleOffset,\r\n height: (d: ColumnChartDataPoint) => columnWidth,\r\n },\r\n zeroShapeLayout: {\r\n width: (d: ColumnChartDataPoint) => 0,\r\n x: (d: ColumnChartDataPoint) => scaledX0 + AxisHelper.diffScaled(xScale, Math.min(0, d.value), 0),\r\n y: (d: ColumnChartDataPoint) => yScale(isScalar ? d.categoryValue : d.categoryIndex) + seriesOffsetScale(d.seriesIndex) - yScaleOffset + (d.drawThinner ? quarterColumnWidth : 0),\r\n height: (d: ColumnChartDataPoint) => d.drawThinner ? halfColumnWidth : columnWidth,\r\n },\r\n };\r\n }\r\n\r\n private createLabelDataPoints(): LabelDataPoint[] {\r\n let labelDataPoints: LabelDataPoint[] = [];\r\n let data = this.data;\r\n let series = data.series;\r\n let formattersCache = NewDataLabelUtils.createColumnFormatterCacheManager();\r\n let shapeLayout = this.layout.shapeLayout;\r\n\r\n for (let currentSeries of series) {\r\n let labelSettings = currentSeries.labelSettings ? currentSeries.labelSettings : data.labelSettings;\r\n if (!labelSettings.show)\r\n continue;\r\n\r\n let axisFormatter: number = NewDataLabelUtils.getDisplayUnitValueFromAxisFormatter(this.yProps.formatter, labelSettings);\r\n for (let dataPoint of currentSeries.data) {\r\n if ((this.interactivityService && this.interactivityService.hasSelection() && !dataPoint.selected) || (data.hasHighlights && !dataPoint.highlight) || dataPoint.value == null) {\r\n continue;\r\n }\r\n\r\n // Calculate label text\r\n let formatString = dataPoint.labelFormatString;\r\n let formatter = formattersCache.getOrCreate(formatString, labelSettings, axisFormatter);\r\n let text = NewDataLabelUtils.getLabelFormattedText(formatter.format(dataPoint.value));\r\n\r\n // Calculate text size\r\n let properties: TextProperties = {\r\n text: text,\r\n fontFamily: NewDataLabelUtils.LabelTextProperties.fontFamily,\r\n fontSize: PixelConverter.fromPoint(labelSettings.fontSize || NewDataLabelUtils.DefaultLabelFontSizeInPt),\r\n fontWeight: NewDataLabelUtils.LabelTextProperties.fontWeight,\r\n };\r\n let textWidth = TextMeasurementService.measureSvgTextWidth(properties);\r\n let textHeight = TextMeasurementService.estimateSvgTextHeight(properties, true /* tightFitForNumeric */);\r\n\r\n // Calculate parent rectangle\r\n let parentRect: IRect = {\r\n left: shapeLayout.x(dataPoint),\r\n top: shapeLayout.y(dataPoint),\r\n width: shapeLayout.width(dataPoint),\r\n height: shapeLayout.height(dataPoint),\r\n };\r\n\r\n labelDataPoints.push({\r\n isPreferred: true,\r\n text: text,\r\n textSize: {\r\n width: textWidth,\r\n height: textHeight,\r\n },\r\n outsideFill: ColumnChart.getLabelFill(labelSettings.labelColor, false, this.isComboChart),\r\n insideFill: ColumnChart.getLabelFill(labelSettings.labelColor, true, this.isComboChart),\r\n parentType: LabelDataPointParentType.Rectangle,\r\n parentShape: {\r\n rect: parentRect,\r\n orientation: dataPoint.value >= 0 ? NewRectOrientation.HorizontalLeftBased : NewRectOrientation.HorizontalRightBased,\r\n validPositions: ColumnChart.clusteredValidLabelPositions,\r\n },\r\n identity: dataPoint.identity,\r\n fontSize: labelSettings.fontSize || NewDataLabelUtils.DefaultLabelFontSizeInPt,\r\n });\r\n }\r\n }\r\n\r\n return labelDataPoints;\r\n }\r\n }\r\n} \r\n","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n import PixelConverter = jsCommon.PixelConverter;\r\n\r\n export class StackedColumnChartStrategy implements IColumnChartStrategy {\r\n private static classes = {\r\n item: {\r\n class: 'column',\r\n selector: '.column'\r\n },\r\n highlightItem: {\r\n class: 'highlightColumn',\r\n selector: '.highlightColumn'\r\n },\r\n };\r\n\r\n private data: ColumnChartData;\r\n private graphicsContext: ColumnChartContext;\r\n private width: number;\r\n private height: number;\r\n private margin: IMargin;\r\n private xProps: IAxisProperties;\r\n private yProps: IAxisProperties;\r\n private categoryLayout: CategoryLayout;\r\n private columnsCenters: number[];\r\n private columnSelectionLineHandle: D3.Selection;\r\n private animator: IColumnChartAnimator;\r\n private interactivityService: IInteractivityService;\r\n private viewportHeight: number;\r\n private viewportWidth: number;\r\n private layout: IColumnLayout;\r\n private isComboChart: boolean;\r\n\r\n public setupVisualProps(columnChartProps: ColumnChartContext): void {\r\n this.graphicsContext = columnChartProps;\r\n this.margin = columnChartProps.margin;\r\n this.width = this.graphicsContext.width;\r\n this.height = this.graphicsContext.height;\r\n this.categoryLayout = columnChartProps.layout;\r\n this.animator = columnChartProps.animator;\r\n this.interactivityService = columnChartProps.interactivityService;\r\n this.viewportHeight = columnChartProps.viewportHeight;\r\n this.viewportWidth = columnChartProps.viewportWidth;\r\n this.isComboChart = columnChartProps.isComboChart;\r\n }\r\n\r\n public setData(data: ColumnChartData) {\r\n this.data = data;\r\n }\r\n\r\n public setXScale(is100Pct: boolean, forcedTickCount?: number, forcedXDomain?: any[], axisScaleType?: string, axisDisplayUnits?: number, axisPrecision?: number): IAxisProperties {\r\n let width = this.width;\r\n\r\n let forcedXMin, forcedXMax;\r\n\r\n if (forcedXDomain && forcedXDomain.length === 2) {\r\n forcedXMin = forcedXDomain[0];\r\n forcedXMax = forcedXDomain[1];\r\n }\r\n\r\n let props = this.xProps = ColumnUtil.getCategoryAxis(\r\n this.data,\r\n width,\r\n this.categoryLayout,\r\n false,\r\n forcedXMin,\r\n forcedXMax,\r\n axisScaleType,\r\n axisDisplayUnits,\r\n axisPrecision);\r\n\r\n return props;\r\n }\r\n\r\n public setYScale(is100Pct: boolean, forcedTickCount?: number, forcedYDomain?: any[], axisScaleType?: string, axisDisplayUnits?: number, axisPrecision?: number): IAxisProperties {\r\n let height = this.viewportHeight;\r\n let valueDomain = StackedUtil.calcValueDomain(this.data.series, is100Pct);\r\n let valueDomainArr = [valueDomain.min, valueDomain.max];\r\n let combinedDomain = AxisHelper.combineDomain(forcedYDomain, valueDomainArr);\r\n let shouldClamp = AxisHelper.scaleShouldClamp(combinedDomain, valueDomainArr);\r\n let metadataColumn = this.data.valuesMetadata[0];\r\n let formatString = is100Pct ?\r\n this.graphicsContext.hostService.getLocalizedString('Percentage')\r\n : valueFormatter.getFormatString(metadataColumn, columnChartProps.general.formatString);\r\n\r\n this.yProps = AxisHelper.createAxis({\r\n pixelSpan: height,\r\n dataDomain: combinedDomain,\r\n metaDataColumn: metadataColumn,\r\n formatString: formatString,\r\n outerPadding: 0,\r\n isScalar: true,\r\n isVertical: true,\r\n forcedTickCount: forcedTickCount,\r\n useTickIntervalForDisplayUnits: true,\r\n isCategoryAxis: false,\r\n scaleType: axisScaleType,\r\n axisDisplayUnits: axisDisplayUnits,\r\n axisPrecision: axisPrecision,\r\n is100Pct: is100Pct,\r\n shouldClamp: shouldClamp,\r\n });\r\n\r\n return this.yProps;\r\n }\r\n\r\n public drawColumns(useAnimation: boolean): ColumnChartDrawInfo {\r\n let data = this.data;\r\n debug.assertValue(data, 'data should not be null or undefined');\r\n\r\n this.columnsCenters = null; // invalidate the columnsCenters so that will be calculated again\r\n\r\n let axisOptions: ColumnAxisOptions = {\r\n columnWidth: this.categoryLayout.categoryThickness * (1 - CartesianChart.InnerPaddingRatio),\r\n xScale: this.xProps.scale,\r\n yScale: this.yProps.scale,\r\n isScalar: this.categoryLayout.isScalar,\r\n margin: this.margin,\r\n };\r\n let stackedColumnLayout = this.layout = StackedColumnChartStrategy.getLayout(data, axisOptions);\r\n let dataLabelSettings = data.labelSettings;\r\n let labelDataPoints: LabelDataPoint[] = [];\r\n if (dataLabelSettings && dataLabelSettings.show) {\r\n labelDataPoints = this.createLabelDataPoints();\r\n }\r\n\r\n let result: ColumnChartAnimationResult;\r\n let shapes: D3.UpdateSelection;\r\n let series = ColumnUtil.drawSeries(data, this.graphicsContext.mainGraphicsContext, axisOptions);\r\n if (this.animator && useAnimation) {\r\n result = this.animator.animate({\r\n viewModel: data,\r\n series: series,\r\n layout: stackedColumnLayout,\r\n itemCS: StackedColumnChartStrategy.classes.item,\r\n interactivityService: this.interactivityService,\r\n mainGraphicsContext: this.graphicsContext.mainGraphicsContext,\r\n viewPort: { height: this.height, width: this.width },\r\n });\r\n shapes = result.shapes;\r\n }\r\n if (!this.animator || !useAnimation || result.failed) {\r\n shapes = ColumnUtil.drawDefaultShapes(data, series, stackedColumnLayout, StackedColumnChartStrategy.classes.item, !this.animator, this.interactivityService && this.interactivityService.hasSelection());\r\n }\r\n\r\n ColumnUtil.applyInteractivity(shapes, this.graphicsContext.onDragStart);\r\n\r\n return {\r\n shapesSelection: shapes,\r\n viewport: { height: this.height, width: this.width },\r\n axisOptions,\r\n labelDataPoints: labelDataPoints,\r\n };\r\n }\r\n\r\n public selectColumn(selectedColumnIndex: number, lastSelectedColumnIndex: number): void {\r\n ColumnUtil.setChosenColumnOpacity(this.graphicsContext.mainGraphicsContext, StackedColumnChartStrategy.classes.item.selector, selectedColumnIndex, lastSelectedColumnIndex);\r\n this.moveHandle(selectedColumnIndex);\r\n }\r\n\r\n public getClosestColumnIndex(x: number, y: number): number {\r\n return ColumnUtil.getClosestColumnIndex(x, this.getColumnsCenters());\r\n }\r\n\r\n /**\r\n * Get the chart's columns centers (x value).\r\n */\r\n private getColumnsCenters(): number[] {\r\n if (!this.columnsCenters) { // lazy creation\r\n let categoryWidth: number = this.categoryLayout.categoryThickness * (1 - CartesianChart.InnerPaddingRatio);\r\n // use the axis scale and first series data to get category centers\r\n if (this.data.series.length > 0) {\r\n let xScaleOffset = 0;\r\n if (!this.categoryLayout.isScalar)\r\n xScaleOffset = categoryWidth / 2;\r\n let firstSeries = this.data.series[0];\r\n this.columnsCenters = firstSeries.data.map(d => this.xProps.scale(this.categoryLayout.isScalar ? d.categoryValue : d.categoryIndex) + xScaleOffset);\r\n }\r\n }\r\n return this.columnsCenters;\r\n }\r\n\r\n private moveHandle(selectedColumnIndex: number) {\r\n let columnCenters = this.getColumnsCenters();\r\n let x = columnCenters[selectedColumnIndex];\r\n\r\n if (!this.columnSelectionLineHandle) {\r\n let handle = this.columnSelectionLineHandle = this.graphicsContext.mainGraphicsContext.append('g');\r\n handle.append('line')\r\n .classed('interactive-hover-line', true)\r\n .attr({\r\n x1: x,\r\n x2: x,\r\n y1: 0,\r\n y2: this.height,\r\n });\r\n\r\n handle.append('circle')\r\n .attr({\r\n cx: x,\r\n cy: this.height,\r\n r: '6px',\r\n })\r\n .classed('drag-handle', true);\r\n }\r\n else {\r\n let handle = this.columnSelectionLineHandle;\r\n handle.select('line').attr({ x1: x, x2: x });\r\n handle.select('circle').attr({ cx: x });\r\n }\r\n }\r\n\r\n public static getLayout(data: ColumnChartData, axisOptions: ColumnAxisOptions): IColumnLayout {\r\n let columnWidth = axisOptions.columnWidth;\r\n let isScalar = axisOptions.isScalar;\r\n let xScale = axisOptions.xScale;\r\n let yScale = axisOptions.yScale;\r\n let xScaleOffset = 0;\r\n if (isScalar)\r\n xScaleOffset = columnWidth / 2;\r\n\r\n // d.position is the top left corner (for drawing) - set in columnChart.converter\r\n // for positive values, this is the previous stack position + the new value,\r\n // for negative values it is just the previous stack position\r\n\r\n return {\r\n shapeLayout: {\r\n width: (d: ColumnChartDataPoint) => columnWidth,\r\n x: (d: ColumnChartDataPoint) => xScale(isScalar ? d.categoryValue : d.categoryIndex) - xScaleOffset,\r\n y: (d: ColumnChartDataPoint) => yScale(d.position),\r\n height: (d: ColumnChartDataPoint) => yScale(d.position - d.valueAbsolute) - yScale(d.position),\r\n },\r\n shapeLayoutWithoutHighlights: {\r\n width: (d: ColumnChartDataPoint) => columnWidth,\r\n x: (d: ColumnChartDataPoint) => xScale(isScalar ? d.categoryValue : d.categoryIndex) - xScaleOffset,\r\n y: (d: ColumnChartDataPoint) => yScale(d.originalPosition),\r\n height: (d: ColumnChartDataPoint) => yScale(d.originalPosition - d.originalValueAbsolute) - yScale(d.originalPosition),\r\n },\r\n zeroShapeLayout: {\r\n width: (d: ColumnChartDataPoint) => columnWidth,\r\n x: (d: ColumnChartDataPoint) => xScale(isScalar ? d.categoryValue : d.categoryIndex) - xScaleOffset,\r\n y: (d: ColumnChartDataPoint) => d.value >= 0 ? yScale(d.position - d.valueAbsolute) : yScale(d.position),\r\n height: (d: ColumnChartDataPoint) => 0\r\n },\r\n };\r\n }\r\n\r\n private createLabelDataPoints(): LabelDataPoint[]{\r\n let labelDataPoints: LabelDataPoint[] = [];\r\n let data = this.data;\r\n let series = data.series;\r\n let formattersCache = NewDataLabelUtils.createColumnFormatterCacheManager();\r\n let shapeLayout = this.layout.shapeLayout;\r\n\r\n for (let currentSeries of series) {\r\n let labelSettings = currentSeries.labelSettings ? currentSeries.labelSettings : data.labelSettings;\r\n if (!labelSettings.show)\r\n continue;\r\n\r\n let axisFormatter: number = NewDataLabelUtils.getDisplayUnitValueFromAxisFormatter(this.yProps.formatter, labelSettings);\r\n for (let dataPoint of currentSeries.data) {\r\n if ((data.hasHighlights && !dataPoint.highlight) || dataPoint.value == null) {\r\n continue;\r\n }\r\n\r\n // Calculate parent rectangle\r\n let parentRect: IRect = {\r\n left: shapeLayout.x(dataPoint),\r\n top: shapeLayout.y(dataPoint),\r\n width: shapeLayout.width(dataPoint),\r\n height: shapeLayout.height(dataPoint),\r\n };\r\n\r\n // Calculate label text\r\n let formatString = \"\";\r\n if (this.graphicsContext.is100Pct) {\r\n formatString = NewDataLabelUtils.hundredPercentFormat;\r\n }\r\n else {\r\n formatString = dataPoint.labelFormatString;\r\n }\r\n let formatter = formattersCache.getOrCreate(formatString, labelSettings, axisFormatter);\r\n let text = NewDataLabelUtils.getLabelFormattedText(formatter.format(dataPoint.value));\r\n\r\n // Calculate text size\r\n let properties: TextProperties = {\r\n text: text,\r\n fontFamily: NewDataLabelUtils.LabelTextProperties.fontFamily,\r\n fontSize: PixelConverter.fromPoint(labelSettings.fontSize || NewDataLabelUtils.DefaultLabelFontSizeInPt),\r\n fontWeight: NewDataLabelUtils.LabelTextProperties.fontWeight,\r\n };\r\n let textWidth = TextMeasurementService.measureSvgTextWidth(properties);\r\n let textHeight = TextMeasurementService.estimateSvgTextHeight(properties, true /* tightFitForNumeric */);\r\n\r\n labelDataPoints.push({\r\n isPreferred: true,\r\n text: text,\r\n textSize: {\r\n width: textWidth,\r\n height: textHeight,\r\n },\r\n outsideFill: ColumnChart.getLabelFill(labelSettings.labelColor, false, this.isComboChart),\r\n insideFill: ColumnChart.getLabelFill(labelSettings.labelColor, true, this.isComboChart),\r\n parentType: LabelDataPointParentType.Rectangle,\r\n parentShape: {\r\n rect: parentRect,\r\n orientation: dataPoint.value >= 0 ? NewRectOrientation.VerticalBottomBased : NewRectOrientation.VerticalTopBased,\r\n validPositions: ColumnChart.stackedValidLabelPositions,\r\n },\r\n identity: dataPoint.identity,\r\n fontSize: labelSettings.fontSize || NewDataLabelUtils.DefaultLabelFontSizeInPt,\r\n });\r\n }\r\n }\r\n \r\n return labelDataPoints;\r\n }\r\n }\r\n\r\n export class StackedBarChartStrategy implements IColumnChartStrategy {\r\n private static classes = {\r\n item: {\r\n class: 'bar',\r\n selector: '.bar'\r\n },\r\n highlightItem: {\r\n class: 'highlightBar',\r\n selector: '.highlightBar'\r\n },\r\n };\r\n\r\n private data: ColumnChartData;\r\n private graphicsContext: ColumnChartContext;\r\n private width: number; height: number;\r\n private margin: IMargin;\r\n private xProps: IAxisProperties;\r\n private yProps: IAxisProperties;\r\n private categoryLayout: CategoryLayout;\r\n private barsCenters: number[];\r\n private columnSelectionLineHandle: D3.Selection;\r\n private animator: IColumnChartAnimator;\r\n private interactivityService: IInteractivityService;\r\n private viewportHeight: number;\r\n private viewportWidth: number;\r\n private layout: IColumnLayout;\r\n private isComboChart: boolean;\r\n\r\n public setupVisualProps(barChartProps: ColumnChartContext): void {\r\n this.graphicsContext = barChartProps;\r\n this.margin = barChartProps.margin;\r\n this.width = this.graphicsContext.width;\r\n this.height = this.graphicsContext.height;\r\n this.categoryLayout = barChartProps.layout;\r\n this.animator = barChartProps.animator;\r\n this.interactivityService = barChartProps.interactivityService;\r\n this.viewportHeight = barChartProps.viewportHeight;\r\n this.viewportWidth = barChartProps.viewportWidth;\r\n this.isComboChart = barChartProps.isComboChart;\r\n }\r\n\r\n public setData(data: ColumnChartData) {\r\n this.data = data;\r\n }\r\n\r\n public setYScale(is100Pct: boolean, forcedTickCount?: number, forcedYDomain?: any[], axisScaleType?: string, axisDisplayUnits?: number, axisPrecision?: number): IAxisProperties {\r\n let height = this.height;\r\n\r\n let forcedYMin, forcedYMax;\r\n\r\n if (forcedYDomain && forcedYDomain.length === 2) {\r\n forcedYMin = forcedYDomain[0];\r\n forcedYMax = forcedYDomain[1];\r\n }\r\n\r\n let props = this.yProps = ColumnUtil.getCategoryAxis(\r\n this.data,\r\n height,\r\n this.categoryLayout,\r\n true,\r\n forcedYMin,\r\n forcedYMax,\r\n axisScaleType,\r\n axisDisplayUnits,\r\n axisPrecision);\r\n\r\n return props;\r\n }\r\n\r\n public setXScale(is100Pct: boolean, forcedTickCount?: number, forcedXDomain?: any[], axisScaleType?: string, axisDisplayUnits?: number, axisPrecision?: number): IAxisProperties {\r\n debug.assert(forcedTickCount === undefined, 'Cannot have stacked bar chart as combo chart.');\r\n\r\n let width = this.width;\r\n let valueDomain = StackedUtil.calcValueDomain(this.data.series, is100Pct);\r\n let valueDomainArr = [valueDomain.min, valueDomain.max];\r\n let combinedDomain = AxisHelper.combineDomain(forcedXDomain, valueDomainArr);\r\n let shouldClamp = AxisHelper.scaleShouldClamp(combinedDomain, valueDomainArr);\r\n let metadataColumn = this.data.valuesMetadata[0];\r\n let formatString = is100Pct ?\r\n this.graphicsContext.hostService.getLocalizedString('Percentage')\r\n : valueFormatter.getFormatString(metadataColumn, columnChartProps.general.formatString);\r\n\r\n this.xProps = AxisHelper.createAxis({\r\n pixelSpan: width,\r\n dataDomain: combinedDomain,\r\n metaDataColumn: metadataColumn,\r\n formatString: formatString,\r\n outerPadding: 0,\r\n isScalar: true,\r\n isVertical: false,\r\n forcedTickCount: forcedTickCount,\r\n useTickIntervalForDisplayUnits: true,\r\n isCategoryAxis: false,\r\n scaleType: axisScaleType,\r\n axisDisplayUnits: axisDisplayUnits,\r\n axisPrecision: axisPrecision,\r\n is100Pct: is100Pct,\r\n shouldClamp: shouldClamp,\r\n });\r\n\r\n this.xProps.axis.tickSize(-this.viewportHeight, 0);\r\n\r\n return this.xProps;\r\n }\r\n\r\n public drawColumns(useAnimation: boolean): ColumnChartDrawInfo {\r\n let data = this.data;\r\n debug.assertValue(data, 'data should not be null or undefined');\r\n\r\n this.barsCenters = null; // invalidate the barsCenters so that will be calculated again\r\n\r\n let axisOptions: ColumnAxisOptions = {\r\n columnWidth: this.categoryLayout.categoryThickness * (1 - CartesianChart.InnerPaddingRatio),\r\n xScale: this.xProps.scale,\r\n yScale: this.yProps.scale,\r\n isScalar: this.categoryLayout.isScalar,\r\n margin: this.margin,\r\n };\r\n let stackedBarLayout = this.layout = StackedBarChartStrategy.getLayout(data, axisOptions);\r\n let dataLabelSettings = data.labelSettings;\r\n let labelDataPoints: LabelDataPoint[] = [];\r\n if (dataLabelSettings && dataLabelSettings.show) {\r\n labelDataPoints = this.createLabelDataPoints();\r\n }\r\n\r\n let result: ColumnChartAnimationResult;\r\n let shapes: D3.UpdateSelection;\r\n let series = ColumnUtil.drawSeries(data, this.graphicsContext.mainGraphicsContext, axisOptions);\r\n if (this.animator && useAnimation) {\r\n result = this.animator.animate({\r\n viewModel: data,\r\n series: series,\r\n layout: stackedBarLayout,\r\n itemCS: StackedBarChartStrategy.classes.item,\r\n interactivityService: this.interactivityService,\r\n mainGraphicsContext: this.graphicsContext.mainGraphicsContext,\r\n viewPort: { height: this.height, width: this.width },\r\n });\r\n shapes = result.shapes;\r\n }\r\n if (!this.animator || !useAnimation || result.failed) {\r\n shapes = ColumnUtil.drawDefaultShapes(data, series, stackedBarLayout, StackedBarChartStrategy.classes.item, !this.animator, this.interactivityService && this.interactivityService.hasSelection());\r\n }\r\n\r\n ColumnUtil.applyInteractivity(shapes, this.graphicsContext.onDragStart);\r\n\r\n return {\r\n shapesSelection: shapes,\r\n viewport: { height: this.height, width: this.width },\r\n axisOptions: axisOptions,\r\n labelDataPoints: labelDataPoints,\r\n };\r\n }\r\n\r\n public selectColumn(selectedColumnIndex: number, lastInteractiveSelectedColumnIndex: number): void {\r\n ColumnUtil.setChosenColumnOpacity(this.graphicsContext.mainGraphicsContext, StackedBarChartStrategy.classes.item.selector, selectedColumnIndex, lastInteractiveSelectedColumnIndex);\r\n this.moveHandle(selectedColumnIndex);\r\n }\r\n\r\n public getClosestColumnIndex(x: number, y: number): number {\r\n return ColumnUtil.getClosestColumnIndex(y, this.getBarsCenters());\r\n }\r\n\r\n /** \r\n * Get the chart's columns centers (y value).\r\n */\r\n private getBarsCenters(): number[] {\r\n if (!this.barsCenters) { // lazy creation\r\n let barWidth: number = this.categoryLayout.categoryThickness * (1 - CartesianChart.InnerPaddingRatio);\r\n // use the axis scale and first series data to get category centers\r\n if (this.data.series.length > 0) {\r\n let yScaleOffset = 0;\r\n if (!this.categoryLayout.isScalar)\r\n yScaleOffset = barWidth / 2;\r\n let firstSeries = this.data.series[0];\r\n this.barsCenters = firstSeries.data.map(d => this.yProps.scale(this.categoryLayout.isScalar ? d.categoryValue : d.categoryIndex) + yScaleOffset);\r\n }\r\n }\r\n return this.barsCenters;\r\n }\r\n\r\n private moveHandle(selectedColumnIndex: number) {\r\n let barCenters = this.getBarsCenters();\r\n let y = barCenters[selectedColumnIndex];\r\n\r\n if (!this.columnSelectionLineHandle) {\r\n let handle = this.columnSelectionLineHandle = this.graphicsContext.mainGraphicsContext.append('g');\r\n handle.append('line')\r\n .classed('interactive-hover-line', true)\r\n .attr({\r\n x1: 0,\r\n x2: this.width,\r\n y1: y,\r\n y2: y\r\n });\r\n handle.append('circle')\r\n .classed('drag-handle', true)\r\n .attr({\r\n cx: 0,\r\n cy: y,\r\n r: '6px',\r\n });\r\n\r\n }\r\n else {\r\n let handle = this.columnSelectionLineHandle;\r\n handle.select('line').attr({ y1: y, y2: y });\r\n handle.select('circle').attr({ cy: y });\r\n }\r\n }\r\n\r\n public static getLayout(data: ColumnChartData, axisOptions: ColumnAxisOptions): IColumnLayout {\r\n let columnWidth = axisOptions.columnWidth;\r\n let isScalar = axisOptions.isScalar;\r\n let xScale = axisOptions.xScale;\r\n let yScale = axisOptions.yScale;\r\n let yScaleOffset = 0;\r\n if (isScalar)\r\n yScaleOffset = columnWidth / 2;\r\n\r\n // d.position is the top right corner for bars - set in columnChart.converter\r\n // for positive values, this is the previous stack position + the new value,\r\n // for negative values it is just the previous stack position\r\n\r\n return {\r\n shapeLayout: {\r\n width: (d: ColumnChartDataPoint) => xScale(d.position) - xScale(d.position - d.valueAbsolute),\r\n x: (d: ColumnChartDataPoint) => xScale(d.position - d.valueAbsolute),\r\n y: (d: ColumnChartDataPoint) => yScale(isScalar ? d.categoryValue : d.categoryIndex) - yScaleOffset,\r\n height: (d: ColumnChartDataPoint) => columnWidth,\r\n },\r\n shapeLayoutWithoutHighlights: {\r\n width: (d: ColumnChartDataPoint) => xScale(d.originalPosition) - xScale(d.originalPosition - d.originalValueAbsolute),\r\n x: (d: ColumnChartDataPoint) => xScale(d.originalPosition - d.originalValueAbsolute),\r\n y: (d: ColumnChartDataPoint) => yScale(isScalar ? d.categoryValue : d.categoryIndex) - yScaleOffset,\r\n height: (d: ColumnChartDataPoint) => columnWidth,\r\n },\r\n zeroShapeLayout: {\r\n width: (d: ColumnChartDataPoint) => 0,\r\n x: (d: ColumnChartDataPoint) => d.value >= 0 ? xScale(d.position - d.valueAbsolute) : xScale(d.position),\r\n y: (d: ColumnChartDataPoint) => yScale(isScalar ? d.categoryValue : d.categoryIndex) - yScaleOffset,\r\n height: (d: ColumnChartDataPoint) => columnWidth,\r\n },\r\n };\r\n }\r\n\r\n private createLabelDataPoints(): LabelDataPoint[] {\r\n let labelDataPoints: LabelDataPoint[] = [];\r\n let data = this.data;\r\n let series = data.series;\r\n let formattersCache = NewDataLabelUtils.createColumnFormatterCacheManager();\r\n let shapeLayout = this.layout.shapeLayout;\r\n\r\n for (let currentSeries of series) {\r\n let labelSettings = currentSeries.labelSettings ? currentSeries.labelSettings : data.labelSettings;\r\n if (!labelSettings.show)\r\n continue;\r\n\r\n let axisFormatter: number = NewDataLabelUtils.getDisplayUnitValueFromAxisFormatter(this.yProps.formatter, labelSettings);\r\n for (let dataPoint of currentSeries.data) {\r\n if ((this.interactivityService && this.interactivityService.hasSelection() && !dataPoint.selected) || (data.hasHighlights && !dataPoint.highlight) || dataPoint.value == null) {\r\n continue;\r\n }\r\n\r\n // Calculate label text\r\n let formatString = undefined;\r\n if (this.graphicsContext.is100Pct) {\r\n formatString = NewDataLabelUtils.hundredPercentFormat;\r\n }\r\n else {\r\n formatString = dataPoint.labelFormatString;\r\n }\r\n let formatter = formattersCache.getOrCreate(formatString, labelSettings, axisFormatter);\r\n let text = NewDataLabelUtils.getLabelFormattedText(formatter.format(dataPoint.value));\r\n\r\n // Calculate text size\r\n let properties: TextProperties = {\r\n text: text,\r\n fontFamily: NewDataLabelUtils.LabelTextProperties.fontFamily,\r\n fontSize: PixelConverter.fromPoint(labelSettings.fontSize || NewDataLabelUtils.DefaultLabelFontSizeInPt),\r\n fontWeight: NewDataLabelUtils.LabelTextProperties.fontWeight,\r\n };\r\n let textWidth = TextMeasurementService.measureSvgTextWidth(properties);\r\n let textHeight = TextMeasurementService.estimateSvgTextHeight(properties, true /* tightFitForNumeric */);\r\n\r\n // Calculate parent rectangle\r\n let parentRect: IRect = {\r\n left: shapeLayout.x(dataPoint),\r\n top: shapeLayout.y(dataPoint),\r\n width: shapeLayout.width(dataPoint),\r\n height: shapeLayout.height(dataPoint),\r\n };\r\n\r\n labelDataPoints.push({\r\n isPreferred: true,\r\n text: text,\r\n textSize: {\r\n width: textWidth,\r\n height: textHeight,\r\n },\r\n outsideFill: ColumnChart.getLabelFill(labelSettings.labelColor, false, this.isComboChart),\r\n insideFill: ColumnChart.getLabelFill(labelSettings.labelColor, true, this.isComboChart),\r\n parentType: LabelDataPointParentType.Rectangle,\r\n parentShape: {\r\n rect: parentRect,\r\n orientation: dataPoint.value >= 0 ? NewRectOrientation.HorizontalLeftBased : NewRectOrientation.HorizontalRightBased,\r\n validPositions: ColumnChart.stackedValidLabelPositions,\r\n },\r\n identity: dataPoint.identity,\r\n fontSize: labelSettings.fontSize || NewDataLabelUtils.DefaultLabelFontSizeInPt,\r\n });\r\n }\r\n }\r\n\r\n return labelDataPoints;\r\n }\r\n }\r\n} ","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n export interface ComboChartDataViewObjects extends DataViewObjects {\r\n general: ComboChartDataViewObject;\r\n }\r\n\r\n export interface ComboChartDataViewObject extends DataViewObject {\r\n visualType1: string;\r\n visualType2: string;\r\n }\r\n\r\n /**\r\n * This module only supplies the capabilities for comboCharts.\r\n * Implementation is in cartesianChart and the various ICartesianVisual implementations.\r\n */\r\n export module ComboChart {\r\n export const capabilities = comboChartCapabilities;\r\n\r\n export function customizeQuery(options: CustomizeQueryOptions): void {\r\n // If there is a dynamic series but no values on the column data view mapping, remove the dynamic series\r\n let columnMapping = !_.isEmpty(options.dataViewMappings) && options.dataViewMappings[0];\r\n if (columnMapping) {\r\n let columnValuesMapping: data.CompiledDataViewGroupedRoleMapping = columnMapping.categorical && <data.CompiledDataViewGroupedRoleMapping>columnMapping.categorical.values;\r\n let seriesSelect = columnValuesMapping.group && !_.isEmpty(columnValuesMapping.group.select) && <data.CompiledDataViewRoleForMapping>columnValuesMapping.group.select[0];\r\n if (_.isEmpty(seriesSelect.for.in.items))\r\n columnValuesMapping.group.by.items = undefined;\r\n }\r\n }\r\n\r\n export function isComboChart(chartType: CartesianChartType): boolean {\r\n return chartType === CartesianChartType.ComboChart\r\n || chartType === CartesianChartType.LineClusteredColumnCombo\r\n || chartType === CartesianChartType.LineStackedColumnCombo\r\n || chartType === CartesianChartType.DataDotClusteredColumnCombo\r\n || chartType === CartesianChartType.DataDotStackedColumnCombo;\r\n }\r\n }\r\n}\r\n","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n import ArrayExtensions = jsCommon.ArrayExtensions;\r\n\r\n export class DataColorPalette implements IDataColorPalette {\r\n private scales: { [index: string]: IColorScale };\r\n private colors: IColorInfo[];\r\n\r\n /**\r\n * Colors used for sentiment visuals, e.g. KPI, Gauge. Since this is only a temporary implementation which will\r\n * eventually be superseded by conditional formatting, we don't declare them as part of the theme and instead\r\n * use a hardcoded color scheme here until conditional formatting is ready.\r\n */\r\n private sentimentColors: IColorInfo[] = [\r\n { value: '#C0433A' }, // Red\r\n { value: '#E8D62E' }, // Yellow\r\n { value: '#79C75B' }, // Green\r\n ];\r\n\r\n // Hardcoded values for Color Picker.\r\n private basePickerColors: IColorInfo[] = [\r\n { value: '#FFFFFF' },\r\n { value: '#000000' },\r\n { value: '#00B8AA' },\r\n { value: '#374649' },\r\n { value: '#FD625E' },\r\n { value: '#F2C811' },\r\n { value: '#5F6B6D' },\r\n { value: '#8AD4EB' },\r\n { value: '#FE9666' },\r\n { value: '#A66999' }\r\n ];\r\n\r\n /**\r\n * Creates a DataColorPalette using the given theme, or the default theme.\r\n */\r\n constructor(colors?: IColorInfo[]) {\r\n // TODO: Default theme is currently hardcoded. Theme should eventually come from PV and be added as a parameter in the ctor. \r\n this.colors = colors || ThemeManager.getDefaultTheme();\r\n this.scales = {};\r\n }\r\n\r\n public getColorScaleByKey(key: string): IColorScale {\r\n let scale = this.scales[key];\r\n if (scale === undefined) {\r\n scale = this.createScale();\r\n this.scales[key] = scale;\r\n }\r\n\r\n return scale;\r\n }\r\n\r\n public getNewColorScale(): IColorScale {\r\n return this.createScale();\r\n }\r\n\r\n public getColorByIndex(index: number): IColorInfo {\r\n debug.assert(index >= 0 && index < this.colors.length, 'index is out of bounds');\r\n return this.colors[index];\r\n }\r\n\r\n public getSentimentColors(): IColorInfo[] {\r\n return this.sentimentColors;\r\n }\r\n\r\n public getBasePickerColors(): IColorInfo[] {\r\n return this.basePickerColors;\r\n }\r\n\r\n public getAllColors(): IColorInfo[] {\r\n return this.colors;\r\n }\r\n\r\n private createScale(): IColorScale {\r\n return D3ColorScale.createFromColors(this.colors);\r\n }\r\n }\r\n\r\n export class D3ColorScale implements IColorScale {\r\n private scale: D3.Scale.OrdinalScale;\r\n\r\n constructor(scale: D3.Scale.OrdinalScale) {\r\n this.scale = scale;\r\n }\r\n\r\n public getColor(key: any): IColorInfo {\r\n return this.scale(key);\r\n }\r\n\r\n public clearAndRotateScale(): void {\r\n let offset = this.scale.domain().length;\r\n let rotatedColors = ArrayExtensions.rotate(this.scale.range(), offset);\r\n this.scale = d3.scale.ordinal().range(rotatedColors);\r\n }\r\n\r\n public clone(): IColorScale {\r\n return new D3ColorScale(this.scale.copy());\r\n }\r\n\r\n public getDomain(): any[]{\r\n return this.scale.domain();\r\n }\r\n\r\n public static createFromColors(colors: IColorInfo[]): D3ColorScale {\r\n return new D3ColorScale(d3.scale.ordinal().range(colors));\r\n }\r\n }\r\n\r\n // TODO: When theming support is added, this should be changed into a fully fledged service. For now though we will\r\n class ThemeManager {\r\n private static colorSectorCount = 12;\r\n \r\n // declare the Theme code as a private implementation detail inside the DataColorPalette so that the code stays hidden\r\n // until it's ready for wider use.\r\n private static defaultBaseColors: IColorInfo[] = [\r\n // First loop\r\n { value: '#01B8AA' },\r\n { value: '#374649' },\r\n { value: '#FD625E' },\r\n { value: '#F2C80F' },\r\n { value: '#5F6B6D' },\r\n { value: '#8AD4EB' },\r\n { value: '#FE9666' }, // Bethany's Mango\r\n { value: '#A66999' },\r\n { value: '#3599B8' },\r\n { value: '#DFBFBF' },\r\n\r\n // Second loop\r\n { value: '#4AC5BB' },\r\n { value: '#5F6B6D' },\r\n { value: '#FB8281' },\r\n { value: '#F4D25A' },\r\n { value: '#7F898A' },\r\n { value: '#A4DDEE' },\r\n { value: '#FDAB89' },\r\n { value: '#B687AC' },\r\n { value: '#28738A' },\r\n { value: '#A78F8F' },\r\n\r\n // Third loop\r\n { value: '#168980' },\r\n { value: '#293537' },\r\n { value: '#BB4A4A' },\r\n { value: '#B59525' },\r\n { value: '#475052' },\r\n { value: '#6A9FB0' },\r\n { value: '#BD7150' },\r\n { value: '#7B4F71' },\r\n { value: '#1B4D5C' },\r\n { value: '#706060' },\r\n\r\n // Fourth loop\r\n { value: '#0F5C55' },\r\n { value: '#1C2325' },\r\n { value: '#7D3231' },\r\n { value: '#796419' },\r\n { value: '#303637' },\r\n { value: '#476A75' },\r\n { value: '#7E4B36' },\r\n { value: '#52354C' },\r\n { value: '#0D262E' },\r\n { value: '#544848' },\r\n ];\r\n\r\n private static defaultTheme: IColorInfo[];\r\n\r\n public static getDefaultTheme(): IColorInfo[] {\r\n if (!ThemeManager.defaultTheme) {\r\n // Extend the list of available colors by cycling the base colors\r\n ThemeManager.defaultTheme = [];\r\n let baseColors = ThemeManager.defaultBaseColors;\r\n for (let i = 0; i < ThemeManager.colorSectorCount; ++i) {\r\n for (let j = 0, jlen = baseColors.length; j < jlen; ++j) {\r\n ThemeManager.defaultTheme.push(\r\n {\r\n value: jsCommon.Color.rotate(baseColors[j].value, i / ThemeManager.colorSectorCount)\r\n });\r\n }\r\n }\r\n }\r\n\r\n return ThemeManager.defaultTheme;\r\n }\r\n }\r\n} ","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\n/**\r\n * IMPORTANT: This chart is not currently enabled in the PBI system and is under development.\r\n */\r\nmodule powerbi.visuals {\r\n\r\n export interface IDataDotChartConfiguration {\r\n xAxisProperties: IAxisProperties;\r\n yAxisProperties: IAxisProperties;\r\n margin: any;\r\n }\r\n\r\n export interface DataDotChartData {\r\n series: DataDotChartSeries;\r\n hasHighlights: boolean;\r\n hasDynamicSeries: boolean;\r\n }\r\n\r\n export interface DataDotChartSeries extends CartesianSeries {\r\n xCol: DataViewMetadataColumn;\r\n yCol: DataViewMetadataColumn;\r\n data: DataDotChartDataPoint[]; //overridden type of array \r\n }\r\n\r\n export interface DataDotChartDataPoint extends CartesianDataPoint, SelectableDataPoint {\r\n highlight: boolean;\r\n }\r\n\r\n export interface DataDotChartConstructorOptions extends CartesianVisualConstructorOptions {\r\n }\r\n\r\n /**\r\n * The data dot chart shows a set of circles with the data value inside them.\r\n * The circles are regularly spaced similar to column charts.\r\n * The radius of all dots is the same across the chart.\r\n * This is most often combined with a column chart to create the 'chicken pox' chart.\r\n * If any of the data values do not fit within the circles, then the data values are hidden\r\n * and the y axis for the dots is displayed instead.\r\n * This chart only supports a single series of data.\r\n * This chart does not display a legend.\r\n */\r\n export class DataDotChart implements ICartesianVisual {\r\n public static formatStringProp: DataViewObjectPropertyIdentifier = { objectName: 'general', propertyName: 'formatString' };\r\n private static ClassName = 'dataDotChart';\r\n\r\n private static DotClassName = 'dot';\r\n private static DotClassSelector = '.dot';\r\n private static DotColorKey = 'dataDot';\r\n\r\n private static DotLabelClassName = 'label';\r\n private static DotLabelClassSelector = '.label';\r\n private static DotLabelVerticalOffset = '0.4em';\r\n private static DotLabelTextAnchor = 'middle';\r\n\r\n private options: CartesianVisualInitOptions;\r\n\r\n // Chart properties\r\n private svg: D3.Selection;\r\n private element: JQuery;\r\n private mainGraphicsG: D3.Selection;\r\n private mainGraphicsContext: D3.Selection;\r\n private currentViewport: IViewport;\r\n private hostService: IVisualHostServices;\r\n private cartesianVisualHost: ICartesianVisualHost;\r\n private style: IVisualStyle;\r\n private colors: IDataColorPalette;\r\n private isScrollable: boolean;\r\n\r\n // Cartesian chart properties\r\n private xAxisProperties: IAxisProperties;\r\n private yAxisProperties: IAxisProperties;\r\n private margin;\r\n\r\n // Data properties\r\n private data: DataDotChartData;\r\n private dataViewCategorical: DataViewCategorical;\r\n private clippedData: DataDotChartData;\r\n\r\n // Interactivity properties\r\n private interactivityService: IInteractivityService;\r\n private interactivity: InteractivityOptions;\r\n\r\n constructor(options: DataDotChartConstructorOptions) {\r\n this.isScrollable = options.isScrollable;\r\n this.interactivityService = options.interactivityService;\r\n }\r\n\r\n public init(options: CartesianVisualInitOptions): void {\r\n this.options = options;\r\n\r\n // Common properties\r\n this.svg = options.svg;\r\n this.mainGraphicsG = this.svg.append('g')\r\n .classed('dataDotChartMainGraphicsContext', true);\r\n this.mainGraphicsContext = this.mainGraphicsG.append('svg');\r\n this.currentViewport = options.viewport;\r\n this.hostService = options.host;\r\n this.cartesianVisualHost = options.cartesianHost;\r\n this.style = options.style;\r\n this.colors = this.style.colorPalette.dataColors;\r\n\r\n // Interactivity properties\r\n this.interactivity = options.interactivity;\r\n\r\n let element = this.element = options.element;\r\n element.addClass(DataDotChart.ClassName);\r\n element.css('overflow', 'visible');\r\n }\r\n\r\n public setData(dataViews: DataView[]): void {\r\n this.data = {\r\n series: <DataDotChartSeries>{\r\n data: <DataDotChartDataPoint[]>[]\r\n },\r\n hasHighlights: false,\r\n hasDynamicSeries: false,\r\n };\r\n\r\n if (dataViews.length > 0) {\r\n\r\n // I only handle a single data view\r\n let dataView = dataViews[0];\r\n if (dataView && dataView.categorical) {\r\n\r\n let dataViewCategorical = this.dataViewCategorical = dataView.categorical;\r\n let dvCategories = dataViewCategorical.categories;\r\n\r\n // I default to text unless there is a category type\r\n let categoryType = ValueType.fromDescriptor({ text: true });\r\n if (dvCategories && dvCategories.length > 0 && dvCategories[0].source && dvCategories[0].source.type)\r\n categoryType = <ValueType>dvCategories[0].source.type;\r\n\r\n this.data = DataDotChart.converter(dataView, valueFormatter.format(null), this.interactivityService);\r\n }\r\n }\r\n }\r\n\r\n public setFilteredData(startIndex: number, endIndex: number): any {\r\n let data = this.clippedData = Prototype.inherit(this.data);\r\n\r\n if (data && data.series && data.series.data)\r\n data.series = { data: data.series.data.slice(startIndex, endIndex), xCol: data.series.xCol, yCol: data.series.yCol };\r\n\r\n return data;\r\n }\r\n\r\n public calculateAxesProperties(options: CalculateScaleAndDomainOptions): IAxisProperties[] {\r\n this.currentViewport = options.viewport;\r\n this.margin = options.margin;\r\n\r\n let data = this.clippedData = this.data;\r\n let viewport = this.currentViewport;\r\n let margin = this.margin;\r\n let series: DataDotChartSeries = data ? data.series : null;\r\n let seriesArray = series && series.data && series.data.length > 0 ? [series] : [];\r\n let categoryCount = series && series.data ? series.data.length : 0;\r\n\r\n // If there are highlights, then the series is 2x in length and highlights are interwoven.\r\n if (data.hasHighlights) {\r\n categoryCount = categoryCount / 2;\r\n }\r\n\r\n let width = viewport.width - (margin.left + margin.right);\r\n let height = viewport.height - (margin.top + margin.bottom);\r\n\r\n let xMetaDataColumn: DataViewMetadataColumn;\r\n let yMetaDataColumn: DataViewMetadataColumn;\r\n\r\n if (DataDotChart.hasDataPoint(series)) {\r\n xMetaDataColumn = series.xCol;\r\n yMetaDataColumn = series.yCol;\r\n }\r\n\r\n let layout = CartesianChart.getLayout(\r\n null,\r\n {\r\n availableWidth: width,\r\n categoryCount: categoryCount,\r\n domain: null,\r\n isScalar: false,\r\n isScrollable: this.isScrollable,\r\n trimOrdinalDataOnOverflow: options.trimOrdinalDataOnOverflow\r\n });\r\n let outerPadding = layout.categoryThickness * CartesianChart.OuterPaddingRatio;\r\n\r\n // clip data that won't fit\r\n if (!this.isScrollable) {\r\n this.clippedData = DataDotChart.createClippedDataIfOverflowed(data, layout.categoryCount);\r\n }\r\n\r\n let yDomain = AxisHelper.createValueDomain(seriesArray, /*includeZero:*/ true) || fallBackDomain;\r\n\r\n let combinedDomain = AxisHelper.combineDomain(options.forcedYDomain, yDomain);\r\n\r\n this.yAxisProperties = AxisHelper.createAxis({\r\n pixelSpan: height,\r\n dataDomain: combinedDomain,\r\n metaDataColumn: yMetaDataColumn,\r\n formatString: valueFormatter.getFormatString(yMetaDataColumn, DataDotChart.formatStringProp),\r\n outerPadding: 0,\r\n isScalar: true,\r\n isVertical: true,\r\n forcedTickCount: options.forcedTickCount,\r\n useTickIntervalForDisplayUnits: true,\r\n isCategoryAxis: true\r\n });\r\n\r\n let axisType = this.xAxisProperties ? this.xAxisProperties.axisType : ValueType.fromDescriptor({ text: true });\r\n let xDomain = AxisHelper.createDomain(seriesArray, axisType, /*isScalar:*/ false, options.forcedXDomain);\r\n this.xAxisProperties = AxisHelper.createAxis({\r\n pixelSpan: width,\r\n dataDomain: xDomain,\r\n metaDataColumn: xMetaDataColumn,\r\n formatString: valueFormatter.getFormatString(xMetaDataColumn, DataDotChart.formatStringProp),\r\n outerPadding: outerPadding,\r\n isScalar: false,\r\n isVertical: false,\r\n forcedTickCount: options.forcedTickCount,\r\n useTickIntervalForDisplayUnits: true,\r\n categoryThickness: layout.categoryThickness,\r\n getValueFn: (index, type) => this.lookupXValue(index, type),\r\n isCategoryAxis: false\r\n });\r\n\r\n return [this.xAxisProperties, this.yAxisProperties];\r\n }\r\n\r\n private static createClippedDataIfOverflowed(data: DataDotChartData, categoryCount: number): DataDotChartData {\r\n\r\n // If there are highlights, then the series is 2x in length and highlights are interwoven.\r\n let requiredLength = data.hasHighlights ? Math.min(data.series.data.length, categoryCount * 2) : Math.min(data.series.data.length, categoryCount);\r\n\r\n if (requiredLength >= data.series.data.length) {\r\n return data;\r\n }\r\n\r\n let clipped: DataDotChartData = Prototype.inherit(data);\r\n clipped.series = Prototype.inherit(data.series); // This prevents clipped and data from sharing the series object\r\n clipped.series.data = clipped.series.data.slice(0, requiredLength);\r\n return clipped;\r\n }\r\n\r\n private static hasDataPoint(series: DataDotChartSeries): boolean {\r\n return (series && series.data && series.data.length > 0);\r\n }\r\n\r\n private lookupXValue(index: number, type: ValueType): any {\r\n let data = this.data;\r\n\r\n let isDateTime = AxisHelper.isDateTime(type);\r\n if (isDateTime)\r\n return new Date(index);\r\n\r\n if (data && data.series) {\r\n let seriesData = data.series.data;\r\n\r\n if (seriesData) {\r\n let dataAtIndex = seriesData[index];\r\n if (dataAtIndex) {\r\n return dataAtIndex.categoryValue;\r\n }\r\n }\r\n }\r\n\r\n return index;\r\n }\r\n\r\n public overrideXScale(xProperties: IAxisProperties): void {\r\n this.xAxisProperties = xProperties;\r\n }\r\n\r\n public render(suppressAnimations: boolean): CartesianVisualRenderResult {\r\n if (!this.clippedData)\r\n return;\r\n let data = this.clippedData;\r\n let dataPoints = data.series.data;\r\n let hasHighlights = data.hasHighlights;\r\n\r\n let margin = this.margin;\r\n let viewport = this.currentViewport;\r\n let width = viewport.width - (margin.left + margin.right);\r\n let height = viewport.height - (margin.top + margin.bottom);\r\n let xScale = <D3.Scale.OrdinalScale>this.xAxisProperties.scale;\r\n let yScale = this.yAxisProperties.scale;\r\n let dotWidth = this.xAxisProperties.categoryThickness * (1 - CartesianChart.InnerPaddingRatio);\r\n let dotRadius = dotWidth / 2;\r\n let dotColor = this.cartesianVisualHost.getSharedColors().getNewColorScale().getColor(DataDotChart.DotColorKey);\r\n\r\n let hasSelection = this.interactivityService ? this.interactivityService.hasSelection() : false;\r\n\r\n this.mainGraphicsContext.attr('width', width)\r\n .attr('height', height);\r\n\r\n let dots = this.mainGraphicsContext.selectAll(DataDotChart.DotClassSelector).data(dataPoints, d => d.identity.getKey());\r\n\r\n dots.enter()\r\n .append('circle')\r\n .classed(DataDotChart.DotClassName, true);\r\n\r\n dots\r\n .style({ 'fill': dotColor.value })\r\n .style('fill-opacity', (d: DataDotChartDataPoint) => ColumnUtil.getFillOpacity(d.selected, d.highlight, hasSelection, hasHighlights))\r\n .classed('null-value', (d: DataDotChartDataPoint) => d.value === null)\r\n .attr({\r\n r: (d: DataDotChartDataPoint) => dotRadius,\r\n cx: d => xScale(d.categoryIndex) + dotRadius,\r\n cy: d => yScale(d.value)\r\n });\r\n\r\n dots.exit().remove();\r\n\r\n let dotLabels = this.mainGraphicsContext.selectAll(DataDotChart.DotLabelClassSelector).data(dataPoints, d => d.identity.getKey());\r\n\r\n dotLabels.enter()\r\n .append('text')\r\n .classed(DataDotChart.DotLabelClassName, true)\r\n .attr({\r\n 'text-anchor': DataDotChart.DotLabelTextAnchor,\r\n dy: DataDotChart.DotLabelVerticalOffset\r\n });\r\n\r\n dotLabels\r\n .classed('null-value', (d: DataDotChartDataPoint) => d.value === null)\r\n .classed('overflowed', false)\r\n .attr({\r\n x: d => xScale(d.categoryIndex) + dotRadius,\r\n y: d => yScale(d.value)\r\n })\r\n .text(d => this.yAxisProperties.formatter.format(d.value));\r\n\r\n let overflowed = false;\r\n dotLabels\r\n .each(function () {\r\n // jQuery fails to properly inspect SVG class elements, the $('<div>') notation works around it.\r\n if (!overflowed && !$(\"<div>\").addClass($(this).attr(\"class\")).hasClass(\"null-value\")) {\r\n let width = TextMeasurementService.measureSvgTextElementWidth(this);\r\n if (width > dotWidth) {\r\n dotLabels.classed('overflowed', true);\r\n overflowed = true;\r\n }\r\n }\r\n });\r\n\r\n dotLabels.exit().remove();\r\n let behaviorOptions: DataDotChartBehaviorOptions = undefined;\r\n if (this.interactivityService) {\r\n behaviorOptions = {\r\n dots: dots,\r\n dotLabels: dotLabels,\r\n datapoints: dataPoints\r\n };\r\n } \r\n\r\n // This should always be the last line in the render code.\r\n SVGUtil.flushAllD3TransitionsIfNeeded(this.options);\r\n\r\n return { dataPoints: dataPoints, behaviorOptions: behaviorOptions, labelDataPoints: [], labelsAreNumeric: true };\r\n }\r\n\r\n public calculateLegend(): LegendData {\r\n return this.createLegendDataPoints(0); // start with index 0\r\n }\r\n\r\n public hasLegend(): boolean {\r\n return this.data && this.data.hasDynamicSeries;\r\n }\r\n\r\n private createLegendDataPoints(columnIndex: number): LegendData {\r\n let data = this.data;\r\n if (!data)\r\n return null;\r\n\r\n let series = data.series;\r\n let seriesData = series.data;\r\n\r\n let legendDataPoints: LegendDataPoint[] = [];\r\n let category: any;\r\n\r\n let axisType = this.xAxisProperties ? this.xAxisProperties.axisType : ValueType.fromDescriptor({ text: true });\r\n\r\n // Category will be the same for all series. This is an optimization.\r\n if (data.series && data.series.data) {\r\n let firstDataPoint: DataDotChartDataPoint = data.series.data[0];\r\n category = firstDataPoint && this.lookupXValue(firstDataPoint.categoryValue, axisType);\r\n }\r\n\r\n // Create a legend data point for the specified column \r\n if (series.yCol) {\r\n\r\n let formatStringProp = DataDotChart.formatStringProp;\r\n let lineDataPoint = seriesData[columnIndex];\r\n let measure = lineDataPoint && lineDataPoint.value;\r\n\r\n let label = converterHelper.getFormattedLegendLabel(series.yCol, this.dataViewCategorical.values, formatStringProp);\r\n\r\n let dotColor = this.cartesianVisualHost.getSharedColors().getNewColorScale().getColor(DataDotChart.DotColorKey);\r\n let dataViewCategoricalValues = this.dataViewCategorical.values;\r\n let identity = dataViewCategoricalValues && dataViewCategoricalValues.length > columnIndex ?\r\n SelectionId.createWithIdAndMeasure(dataViewCategoricalValues[columnIndex].identity, dataViewCategoricalValues[columnIndex].source.queryName) :\r\n SelectionId.createWithMeasure(dataViewCategoricalValues.source.queryName);\r\n legendDataPoints.push({\r\n color: dotColor.value,\r\n icon: LegendIcon.Line,\r\n label: label,\r\n category: valueFormatter.format(category, valueFormatter.getFormatString(series.xCol, formatStringProp)),\r\n measure: valueFormatter.format(measure, valueFormatter.getFormatString(series.yCol, formatStringProp)),\r\n identity: identity,\r\n selected: false\r\n });\r\n }\r\n\r\n return { dataPoints: legendDataPoints };\r\n }\r\n\r\n public onClearSelection(): void {\r\n if (this.interactivityService)\r\n this.interactivityService.clearSelection();\r\n\r\n // cartesianChart handles calling render again.\r\n }\r\n\r\n public static converter(dataView: DataView, blankCategoryValue: string, interactivityService: IInteractivityService): DataDotChartData {\r\n let categorical = dataView.categorical;\r\n\r\n let category: DataViewCategoryColumn = categorical.categories && categorical.categories.length > 0\r\n ? categorical.categories[0]\r\n : {\r\n source: undefined,\r\n values: [blankCategoryValue],\r\n identity: undefined\r\n };\r\n\r\n let categoryType: ValueTypeDescriptor = AxisHelper.getCategoryValueType(category.source);\r\n let isDateTime = AxisHelper.isDateTime(categoryType);\r\n let categoryValues = category.values;\r\n\r\n // I only handle a single series\r\n if (!_.isEmpty(categorical.values)) {\r\n let measure = categorical.values[0];\r\n\r\n let hasHighlights: boolean = !!measure.highlights;\r\n\r\n let dataPoints: DataDotChartDataPoint[] = [];\r\n for (let categoryIndex = 0, len = measure.values.length; categoryIndex < len; categoryIndex++) {\r\n\r\n debug.assert(!category.identity || categoryIndex < category.identity.length, 'Category identities is smaller than category values.');\r\n\r\n // I create the identity from the category. If there is no category, then I use the measure name to create identity\r\n let identity = category.identity ?\r\n SelectionId.createWithIdAndMeasure(category.identity[categoryIndex], measure.source.queryName) :\r\n SelectionId.createWithMeasure(measure.source.queryName);\r\n\r\n let categoryValue = categoryValues[categoryIndex];\r\n\r\n // ignore variant measures\r\n if (isDateTime && categoryValue != null && !(categoryValue instanceof Date))\r\n continue;\r\n\r\n dataPoints.push({\r\n categoryValue: isDateTime && categoryValue ? categoryValue.getTime() : categoryValue,\r\n value: measure.values[categoryIndex],\r\n categoryIndex: categoryIndex,\r\n seriesIndex: 0,\r\n selected: false,\r\n identity: identity,\r\n highlight: false\r\n });\r\n\r\n if (hasHighlights) {\r\n\r\n let highlightIdentity = SelectionId.createWithHighlight(identity);\r\n let highlightValue = measure.highlights[categoryIndex];\r\n\r\n dataPoints.push({\r\n categoryValue: isDateTime && categoryValue ? categoryValue.getTime() : categoryValue,\r\n value: highlightValue,\r\n categoryIndex: categoryIndex,\r\n seriesIndex: 0,\r\n selected: false,\r\n identity: highlightIdentity,\r\n highlight: true\r\n });\r\n }\r\n }\r\n\r\n if (interactivityService)\r\n interactivityService.applySelectionStateToData(dataPoints);\r\n\r\n return {\r\n series: {\r\n xCol: category.source,\r\n yCol: measure.source,\r\n data: dataPoints\r\n },\r\n hasHighlights: hasHighlights,\r\n hasDynamicSeries: true,\r\n };\r\n }\r\n\r\n return {\r\n series: <DataDotChartSeries> {\r\n data: <DataDotChartDataPoint[]>[]\r\n },\r\n hasHighlights: false,\r\n hasDynamicSeries: false,\r\n };\r\n }\r\n }\r\n} ","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n import ClassAndSelector = jsCommon.CssConstants.ClassAndSelector;\r\n import createClassAndSelector = jsCommon.CssConstants.createClassAndSelector;\r\n import PixelConverter = jsCommon.PixelConverter;\r\n\r\n export interface FunnelChartConstructorOptions {\r\n animator?: IFunnelAnimator;\r\n funnelSmallViewPortProperties?: FunnelSmallViewPortProperties;\r\n behavior?: FunnelWebBehavior;\r\n tooltipsEnabled?: boolean;\r\n }\r\n\r\n export interface FunnelPercent {\r\n value: number;\r\n percent: number;\r\n isTop: boolean;\r\n }\r\n\r\n /**\r\n * value and highlightValue may be modified in the converter to\r\n * allow rendering non-standard values, such as negatives.\r\n * Store the original values for non-rendering, user-facing elements\r\n * e.g. data labels\r\n */\r\n export interface FunnelSlice extends SelectableDataPoint, TooltipEnabledDataPoint, LabelEnabledDataPoint {\r\n value: number;\r\n originalValue: number;\r\n label: string;\r\n key: string;\r\n categoryOrMeasureIndex: number;\r\n highlight?: boolean;\r\n highlightValue?: number;\r\n originalHighlightValue?: number;\r\n color: string;\r\n }\r\n\r\n export interface FunnelData {\r\n slices: FunnelSlice[];\r\n categoryLabels: string[];\r\n valuesMetadata: DataViewMetadataColumn[];\r\n hasHighlights: boolean;\r\n highlightsOverflow: boolean;\r\n dataLabelsSettings: VisualDataLabelsSettings;\r\n percentBarLabelSettings: VisualDataLabelsSettings;\r\n canShowDataLabels: boolean;\r\n hasNegativeValues: boolean;\r\n allValuesAreNegative: boolean;\r\n }\r\n\r\n export interface FunnelAxisOptions {\r\n maxScore: number;\r\n xScale: D3.Scale.OrdinalScale;\r\n yScale: D3.Scale.LinearScale;\r\n verticalRange: number;\r\n margin: IMargin;\r\n rangeStart: number;\r\n rangeEnd: number;\r\n barToSpaceRatio: number;\r\n categoryLabels: string[];\r\n }\r\n\r\n export interface IFunnelLayout {\r\n percentBarLayout: {\r\n mainLine: {\r\n x2: (d: FunnelPercent) => number;\r\n transform: (d: FunnelPercent) => string;\r\n },\r\n leftTick: {\r\n y2: (d: FunnelPercent) => number;\r\n transform: (d: FunnelPercent) => string;\r\n },\r\n rightTick: {\r\n y2: (d: FunnelPercent) => number;\r\n transform: (d: FunnelPercent) => string;\r\n },\r\n text: {\r\n x: (d: FunnelPercent) => number;\r\n y: (d: FunnelPercent) => number;\r\n style: () => string;\r\n transform: (d: FunnelPercent) => string;\r\n fill: string;\r\n maxWidth: number,\r\n },\r\n };\r\n shapeLayout: {\r\n width: (d: FunnelSlice) => number;\r\n height: (d: FunnelSlice) => number;\r\n x: (d: FunnelSlice) => number;\r\n y: (d: FunnelSlice) => number;\r\n };\r\n shapeLayoutWithoutHighlights: {\r\n width: (d: FunnelSlice) => number;\r\n height: (d: FunnelSlice) => number;\r\n x: (d: FunnelSlice) => number;\r\n y: (d: FunnelSlice) => number;\r\n };\r\n zeroShapeLayout: {\r\n width: (d: FunnelSlice) => number;\r\n height: (d: FunnelSlice) => number;\r\n x: (d: FunnelSlice) => number;\r\n y: (d: FunnelSlice) => number;\r\n };\r\n interactorLayout: {\r\n width: (d: FunnelSlice) => number;\r\n height: (d: FunnelSlice) => number;\r\n x: (d: FunnelSlice) => number;\r\n y: (d: FunnelSlice) => number;\r\n };\r\n }\r\n\r\n export interface IFunnelChartSelectors {\r\n funnel: {\r\n bars: ClassAndSelector;\r\n highlights: ClassAndSelector;\r\n interactors: ClassAndSelector;\r\n };\r\n percentBar: {\r\n root: ClassAndSelector;\r\n mainLine: ClassAndSelector;\r\n leftTick: ClassAndSelector;\r\n rightTick: ClassAndSelector;\r\n text: ClassAndSelector;\r\n };\r\n }\r\n\r\n export interface FunnelSmallViewPortProperties {\r\n hideFunnelCategoryLabelsOnSmallViewPort: boolean;\r\n minHeightFunnelCategoryLabelsVisible: number;\r\n }\r\n\r\n /**\r\n * Renders a funnel chart.\r\n */\r\n export class FunnelChart implements IVisual {\r\n public static DefaultBarOpacity = 1;\r\n public static DimmedBarOpacity = 0.4;\r\n public static PercentBarToBarRatio = 0.75;\r\n public static TickPadding = 0;\r\n public static InnerTickSize = 0;\r\n public static MinimumInteractorSize = 15;\r\n public static InnerTextClassName = 'labelSeries';\r\n public static Selectors: IFunnelChartSelectors = {\r\n funnel: {\r\n bars: createClassAndSelector('funnelBar'),\r\n highlights: createClassAndSelector('highlight'),\r\n interactors: createClassAndSelector('funnelBarInteractor'),\r\n },\r\n percentBar: {\r\n root: createClassAndSelector('percentBars'),\r\n mainLine: createClassAndSelector('mainLine'),\r\n leftTick: createClassAndSelector('leftTick'),\r\n rightTick: createClassAndSelector('rightTick'),\r\n text: createClassAndSelector('value'),\r\n },\r\n };\r\n public static FunnelBarHighlightClass = [FunnelChart.Selectors.funnel.bars.class, FunnelChart.Selectors.funnel.highlights.class].join(' ');\r\n\r\n private static VisualClassName = 'funnelChart';\r\n private static DefaultFontFamily = 'wf_standard-font';\r\n private static BarToSpaceRatio = 0.1;\r\n private static MaxBarWidth = 40;\r\n private static MinBarThickness = 12;\r\n private static LabelFunnelPadding = 6;\r\n private static InnerTextMinimumPadding = 10;\r\n private static OverflowingHighlightWidthRatio = 0.5;\r\n\r\n private svg: D3.Selection;\r\n private funnelGraphicsContext: D3.Selection;\r\n private percentGraphicsContext: D3.Selection;\r\n private clearCatcher: D3.Selection;\r\n private axisGraphicsContext: D3.Selection;\r\n private currentViewport: IViewport;\r\n private colors: IDataColorPalette;\r\n private data: FunnelData;\r\n private hostServices: IVisualHostServices;\r\n private margin: IMargin;\r\n private options: VisualInitOptions;\r\n private interactivityService: IInteractivityService;\r\n private behavior: FunnelWebBehavior;\r\n private defaultDataPointColor: string;\r\n private labelPositionObjects: string[] = [labelPosition.outsideEnd, labelPosition.insideCenter];\r\n // TODO: Remove onDataChanged & onResizing once all visuals have implemented update.\r\n private dataViews: DataView[];\r\n private funnelSmallViewPortProperties: FunnelSmallViewPortProperties;\r\n private tooltipsEnabled: boolean;\r\n\r\n /**\r\n * Note: Public for testing.\r\n */\r\n public animator: IFunnelAnimator;\r\n\r\n constructor(options?: FunnelChartConstructorOptions) {\r\n if (options) {\r\n this.tooltipsEnabled = options.tooltipsEnabled;\r\n if (options.funnelSmallViewPortProperties) {\r\n this.funnelSmallViewPortProperties = options.funnelSmallViewPortProperties;\r\n }\r\n if (options.animator) {\r\n this.animator = options.animator;\r\n }\r\n if (options.behavior) {\r\n this.behavior = options.behavior;\r\n }\r\n }\r\n }\r\n\r\n private static isValidValueColumn(valueColumn: DataViewValueColumn): boolean {\r\n debug.assertValue(valueColumn, 'valueColumn');\r\n return DataRoleHelper.hasRole(valueColumn.source, 'Y');\r\n }\r\n\r\n private static getFirstValidValueColumn(values: DataViewValueColumns): DataViewValueColumn {\r\n for (let valueColumn of values) {\r\n if (!FunnelChart.isValidValueColumn(valueColumn))\r\n continue;\r\n return valueColumn;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n public static converter(dataView: DataView, colors: IDataColorPalette, hostServices: IVisualHostServices, defaultDataPointColor?: string): FunnelData {\r\n let slices: FunnelSlice[] = [];\r\n let formatStringProp = funnelChartProps.general.formatString;\r\n let categorical: DataViewCategorical = dataView.categorical;\r\n let categories = categorical.categories || [];\r\n let values = categorical.values;\r\n let valueMetaData: DataViewMetadataColumn[] = [];\r\n if (values) {\r\n valueMetaData = _.map(values, (v) => { return v.source; });\r\n }\r\n let hasHighlights = values && values.length > 0 && values[0] && !!values[0].highlights;\r\n let highlightsOverflow = false;\r\n let hasNegativeValues = false;\r\n let allValuesAreNegative = false;\r\n let categoryLabels = [];\r\n let dataLabelsSettings: VisualDataLabelsSettings = dataLabelUtils.getDefaultFunnelLabelSettings();\r\n let percentBarLabelSettings: VisualDataLabelsSettings = dataLabelUtils.getDefaultLabelSettings(true);\r\n let colorHelper = new ColorHelper(colors, funnelChartProps.dataPoint.fill, defaultDataPointColor);\r\n let firstValue: number;\r\n let firstHighlight: number;\r\n let previousValue: number;\r\n let previousHighlight: number;\r\n\r\n if (dataView && dataView.metadata && dataView.metadata.objects) {\r\n let labelsObj = <DataLabelObject>dataView.metadata.objects['labels'];\r\n if (labelsObj)\r\n dataLabelUtils.updateLabelSettingsFromLabelsObject(labelsObj, dataLabelsSettings);\r\n\r\n let percentLabelsObj = <DataLabelObject>dataView.metadata.objects['percentBarLabel'];\r\n if (percentLabelsObj)\r\n dataLabelUtils.updateLabelSettingsFromLabelsObject(percentLabelsObj, percentBarLabelSettings);\r\n }\r\n\r\n // Always take the first valid value field\r\n let firstValueColumn = !_.isEmpty(values) && FunnelChart.getFirstValidValueColumn(values);\r\n \r\n // If we don't have a valid value column, just return\r\n if (!firstValueColumn)\r\n return {\r\n slices: slices,\r\n categoryLabels: categoryLabels,\r\n valuesMetadata: valueMetaData,\r\n hasHighlights: hasHighlights,\r\n highlightsOverflow: highlightsOverflow,\r\n canShowDataLabels: true,\r\n dataLabelsSettings: dataLabelsSettings,\r\n hasNegativeValues: hasNegativeValues,\r\n allValuesAreNegative: allValuesAreNegative,\r\n percentBarLabelSettings: percentBarLabelSettings,\r\n };\r\n\r\n // Calculate the first value for percent tooltip values\r\n firstValue = firstValueColumn.values[0];\r\n if (hasHighlights) {\r\n firstHighlight = firstValueColumn.highlights[0];\r\n }\r\n\r\n if (categories.length === 1) {\r\n // Single Category, Value and (optional) Gradient\r\n let category = categories[0];\r\n let categoryValues = category.values;\r\n let categorySourceFormatString = valueFormatter.getFormatString(category.source, formatStringProp);\r\n\r\n for (let i = 0, ilen = categoryValues.length; i < ilen; i++) {\r\n let measureName = firstValueColumn.source.queryName;\r\n\r\n let identity = SelectionIdBuilder.builder()\r\n .withCategory(category, i)\r\n .withMeasure(measureName)\r\n .createSelectionId();\r\n\r\n let value = firstValueColumn.values[i];\r\n let formattedCategoryValue = valueFormatter.format(categoryValues[i], categorySourceFormatString);\r\n let tooltipInfo: TooltipDataItem[] = TooltipBuilder.createTooltipInfo(formatStringProp, categorical, formattedCategoryValue, value, null, null, 0, i);\r\n\r\n if (hasHighlights) {\r\n let highlight = firstValueColumn.highlights[i];\r\n if (highlight !== 0) {\r\n tooltipInfo = TooltipBuilder.createTooltipInfo(formatStringProp, categorical, formattedCategoryValue, value, null, null, 0, i, highlight);\r\n }\r\n }\r\n FunnelChart.addFunnelPercentsToTooltip(tooltipInfo, hostServices, firstValue ? value / firstValue : null, previousValue ? value / previousValue : null);\r\n\r\n // Same color for all bars\r\n let color = colorHelper.getColorForMeasure(category.objects && category.objects[i], '');\r\n\r\n slices.push({\r\n label: formattedCategoryValue,\r\n value: value,\r\n originalValue: value,\r\n categoryOrMeasureIndex: i,\r\n identity: identity,\r\n selected: false,\r\n key: identity.getKey(),\r\n tooltipInfo: tooltipInfo,\r\n color: color,\r\n labelFill: dataLabelsSettings.labelColor,\r\n });\r\n if (hasHighlights) {\r\n let highlightIdentity = SelectionId.createWithHighlight(identity);\r\n let highlight = firstValueColumn.highlights[i];\r\n let highlightedValue = highlight !== 0 ? highlight : undefined;\r\n let tooltipInfo: TooltipDataItem[] = TooltipBuilder.createTooltipInfo(formatStringProp, categorical, formattedCategoryValue, value, null, null, 0, i, highlightedValue);\r\n FunnelChart.addFunnelPercentsToTooltip(tooltipInfo, hostServices, firstHighlight ? highlight / firstHighlight : null, previousHighlight ? highlight / previousHighlight : null, true);\r\n\r\n slices.push({\r\n label: formattedCategoryValue,\r\n value: value,\r\n originalValue: value,\r\n categoryOrMeasureIndex: i,\r\n identity: highlightIdentity,\r\n selected: false,\r\n key: highlightIdentity.getKey(),\r\n highlight: true,\r\n highlightValue: highlight,\r\n originalHighlightValue: highlight,\r\n tooltipInfo: tooltipInfo,\r\n color: color,\r\n });\r\n previousHighlight = highlight;\r\n }\r\n previousValue = value;\r\n }\r\n }\r\n else if (valueMetaData.length > 0 && values && values.length > 0) {\r\n // Multi-measures\r\n for (let i = 0, len = values.length; i < len; i++) {\r\n let valueColumn = values[i];\r\n\r\n if (!FunnelChart.isValidValueColumn(valueColumn))\r\n continue;\r\n\r\n let value = valueColumn.values[0];\r\n let identity = SelectionId.createWithMeasure(valueColumn.source.queryName);\r\n let categoryValue: any = valueMetaData[i].displayName;\r\n let valueIndex: number = categorical.categories ? null : i;\r\n let tooltipInfo: TooltipDataItem[] = TooltipBuilder.createTooltipInfo(formatStringProp, categorical, categoryValue, value, null, null, valueIndex, i);\r\n\r\n // Same color for all bars\r\n let color = colorHelper.getColorForMeasure(valueColumn.source.objects, '');\r\n\r\n if (hasHighlights) {\r\n let highlight = valueColumn.highlights[0];\r\n if (highlight !== 0) {\r\n tooltipInfo = TooltipBuilder.createTooltipInfo(formatStringProp, categorical, categoryValue, value, null, null, 0, i, highlight);\r\n }\r\n }\r\n FunnelChart.addFunnelPercentsToTooltip(tooltipInfo, hostServices, firstValue ? value / firstValue : null, previousValue ? value / previousValue : null);\r\n\r\n slices.push({\r\n label: valueMetaData[i].displayName,\r\n value: value,\r\n originalValue: value,\r\n categoryOrMeasureIndex: i,\r\n identity: identity,\r\n selected: false,\r\n key: identity.getKey(),\r\n tooltipInfo: tooltipInfo,\r\n color: color,\r\n labelFill: dataLabelsSettings.labelColor,\r\n });\r\n if (hasHighlights) {\r\n let highlightIdentity = SelectionId.createWithHighlight(identity);\r\n let highlight = valueColumn.highlights[0];\r\n if (highlight > value) {\r\n highlightsOverflow = true;\r\n }\r\n let highlightedValue = highlight !== 0 ? highlight : undefined;\r\n let tooltipInfo: TooltipDataItem[] = TooltipBuilder.createTooltipInfo(formatStringProp, categorical, categoryValue, value, null, null, 0, i, highlightedValue);\r\n FunnelChart.addFunnelPercentsToTooltip(tooltipInfo, hostServices, firstHighlight ? highlight / firstHighlight : null, previousHighlight ? highlight / previousHighlight : null, true);\r\n\r\n slices.push({\r\n label: valueMetaData[i].displayName,\r\n value: value,\r\n originalValue: value,\r\n categoryOrMeasureIndex: i,\r\n identity: highlightIdentity,\r\n key: highlightIdentity.getKey(),\r\n selected: false,\r\n highlight: true,\r\n originalHighlightValue: highlight,\r\n highlightValue: highlight,\r\n tooltipInfo: tooltipInfo,\r\n color: color,\r\n });\r\n previousHighlight = highlight;\r\n }\r\n previousValue = value;\r\n }\r\n }\r\n\r\n for (let i = 0; i < slices.length; i += hasHighlights ? 2 : 1) {\r\n let slice = slices[i];\r\n categoryLabels.push(slice.label);\r\n }\r\n\r\n // Calculate negative value warning flags\r\n allValuesAreNegative = slices.length > 0 && _.every(slices, (slice: FunnelSlice) => (slice.highlight ? slice.highlightValue <= 0 : true) && slice.value < 0);\r\n for (let slice of slices) {\r\n if (allValuesAreNegative) {\r\n slice.value = Math.abs(slice.value);\r\n if (slice.highlight)\r\n slice.highlightValue = Math.abs(slice.highlightValue);\r\n }\r\n else {\r\n let value = slice.value;\r\n let isValueNegative = value < 0;\r\n if (isValueNegative)\r\n slice.value = 0;\r\n\r\n let isHighlightValueNegative = false;\r\n if (slice.highlight) {\r\n let highlightValue = slice.highlightValue;\r\n isHighlightValueNegative = highlightValue < 0;\r\n slice.highlightValue = isHighlightValueNegative ? 0 : highlightValue;\r\n }\r\n\r\n if (!hasNegativeValues)\r\n hasNegativeValues = isValueNegative || isHighlightValueNegative;\r\n }\r\n\r\n if (slice.highlightValue > slice.value) {\r\n highlightsOverflow = true;\r\n }\r\n }\r\n\r\n return {\r\n slices: slices,\r\n categoryLabels: categoryLabels,\r\n valuesMetadata: valueMetaData,\r\n hasHighlights: hasHighlights,\r\n highlightsOverflow: highlightsOverflow,\r\n canShowDataLabels: true,\r\n dataLabelsSettings: dataLabelsSettings,\r\n hasNegativeValues: hasNegativeValues,\r\n allValuesAreNegative: allValuesAreNegative,\r\n percentBarLabelSettings: percentBarLabelSettings,\r\n };\r\n }\r\n\r\n public enumerateObjectInstances(options: EnumerateVisualObjectInstancesOptions): VisualObjectInstanceEnumeration {\r\n let enumeration = new ObjectEnumerationBuilder();\r\n\r\n switch (options.objectName) {\r\n case 'dataPoint':\r\n let dataViewCat: DataViewCategorical = this.dataViews && this.dataViews.length > 0 && this.dataViews[0] && this.dataViews[0].categorical;\r\n let hasGradientRole = GradientUtils.hasGradientRole(dataViewCat);\r\n if (!hasGradientRole) {\r\n this.enumerateDataPoints(enumeration);\r\n }\r\n break;\r\n case 'labels':\r\n let labelSettingsOptions = FunnelChart.getLabelSettingsOptions(enumeration, this.data.dataLabelsSettings, true, this.labelPositionObjects);\r\n dataLabelUtils.enumerateDataLabels(labelSettingsOptions);\r\n break;\r\n case 'percentBarLabel':\r\n let percentLabelSettingOptions = FunnelChart.getLabelSettingsOptions(enumeration, this.data.percentBarLabelSettings, false);\r\n dataLabelUtils.enumerateDataLabels(percentLabelSettingOptions);\r\n break;\r\n }\r\n\r\n return enumeration.complete();\r\n }\r\n\r\n private static getLabelSettingsOptions(enumeration: ObjectEnumerationBuilder, labelSettings: VisualDataLabelsSettings, isDataLabels: boolean, positionObject?: any): VisualDataLabelsSettingsOptions {\r\n return {\r\n enumeration: enumeration,\r\n dataLabelsSettings: labelSettings,\r\n show: true,\r\n displayUnits: isDataLabels,\r\n precision: isDataLabels,\r\n position: isDataLabels,\r\n positionObject: positionObject,\r\n fontSize: true,\r\n };\r\n }\r\n\r\n private enumerateDataPoints(enumeration: ObjectEnumerationBuilder): void {\r\n let data = this.data;\r\n if (!data)\r\n return;\r\n\r\n let slices = data.slices;\r\n\r\n enumeration.pushInstance({\r\n objectName: 'dataPoint',\r\n selector: null,\r\n properties: {\r\n defaultColor: { solid: { color: this.defaultDataPointColor || this.colors.getColorByIndex(0).value } }\r\n },\r\n });\r\n\r\n for (let i = 0; i < slices.length; i++) {\r\n let slice = slices[i];\r\n if (slice.highlight)\r\n continue;\r\n\r\n let color = slice.color;\r\n let selector = slice.identity.getSelector();\r\n let isSingleSeries = !!selector.data;\r\n\r\n enumeration.pushInstance({\r\n objectName: 'dataPoint',\r\n displayName: slice.label,\r\n selector: ColorHelper.normalizeSelector(selector, isSingleSeries),\r\n properties: {\r\n fill: { solid: { color: color } }\r\n },\r\n });\r\n }\r\n }\r\n\r\n public init(options: VisualInitOptions) {\r\n this.options = options;\r\n let element = options.element;\r\n let svg = this.svg = d3.select(element.get(0))\r\n .append('svg')\r\n .classed(FunnelChart.VisualClassName, true);\r\n\r\n if (this.behavior)\r\n this.clearCatcher = appendClearCatcher(this.svg);\r\n\r\n this.currentViewport = options.viewport;\r\n this.margin = {\r\n left: 5,\r\n right: 5,\r\n top: 0,\r\n bottom: 0\r\n };\r\n let style = options.style;\r\n this.colors = style.colorPalette.dataColors;\r\n this.hostServices = options.host;\r\n if (this.behavior) {\r\n this.interactivityService = createInteractivityService(this.hostServices);\r\n }\r\n this.percentGraphicsContext = svg.append('g').classed(FunnelChart.Selectors.percentBar.root.class, true);\r\n this.funnelGraphicsContext = svg.append('g');\r\n this.axisGraphicsContext = svg.append('g');\r\n\r\n this.updateViewportProperties();\r\n }\r\n\r\n private updateViewportProperties() {\r\n let viewport = this.currentViewport;\r\n this.svg.attr('width', viewport.width)\r\n .attr('height', viewport.height);\r\n }\r\n\r\n public update(options: VisualUpdateOptions): void {\r\n debug.assertValue(options, 'options');\r\n this.data = {\r\n slices: [],\r\n categoryLabels: [],\r\n valuesMetadata: [],\r\n hasHighlights: false,\r\n highlightsOverflow: false,\r\n canShowDataLabels: true,\r\n dataLabelsSettings: dataLabelUtils.getDefaultFunnelLabelSettings(),\r\n hasNegativeValues: false,\r\n allValuesAreNegative: false,\r\n percentBarLabelSettings: dataLabelUtils.getDefaultLabelSettings(true),\r\n };\r\n\r\n let dataViews = this.dataViews = options.dataViews;\r\n this.currentViewport = options.viewport;\r\n\r\n if (dataViews && dataViews.length > 0) {\r\n let dataView = dataViews[0];\r\n\r\n if (dataView.metadata && dataView.metadata.objects) {\r\n let defaultColor = DataViewObjects.getFillColor(dataView.metadata.objects, funnelChartProps.dataPoint.defaultColor);\r\n if (defaultColor)\r\n this.defaultDataPointColor = defaultColor;\r\n }\r\n\r\n if (dataView.categorical) {\r\n this.data = FunnelChart.converter(dataView, this.colors, this.hostServices, this.defaultDataPointColor);\r\n\r\n if (this.interactivityService) {\r\n this.interactivityService.applySelectionStateToData(this.data.slices);\r\n }\r\n }\r\n\r\n let warnings = getInvalidValueWarnings(\r\n dataViews,\r\n false /*supportsNaN*/,\r\n false /*supportsNegativeInfinity*/,\r\n false /*supportsPositiveInfinity*/);\r\n\r\n if (this.data.allValuesAreNegative) {\r\n warnings.unshift(new AllNegativeValuesWarning());\r\n }\r\n else if (this.data.hasNegativeValues) {\r\n warnings.unshift(new NegativeValuesNotSupportedWarning());\r\n }\r\n\r\n this.hostServices.setWarnings(warnings);\r\n }\r\n\r\n this.updateViewportProperties();\r\n this.updateInternal(options.suppressAnimations);\r\n }\r\n\r\n // TODO: Remove onDataChanged & onResizing once all visuals have implemented update.\r\n public onDataChanged(options: VisualDataChangedOptions): void {\r\n this.update({\r\n dataViews: options.dataViews,\r\n suppressAnimations: options.suppressAnimations,\r\n viewport: this.currentViewport\r\n });\r\n }\r\n\r\n // TODO: Remove onDataChanged & onResizing once all visuals have implemented update.\r\n public onResizing(viewport: IViewport): void {\r\n this.currentViewport = viewport;\r\n this.update({\r\n dataViews: this.dataViews,\r\n suppressAnimations: true,\r\n viewport: this.currentViewport\r\n });\r\n }\r\n\r\n private getMaxLeftMargin(labels: string[], properties: TextProperties): number {\r\n let max = 0;\r\n let textMeasurer: ITextAsSVGMeasurer = TextMeasurementService.measureSvgTextWidth;\r\n for (let i = 0, len = labels.length; i < len; i++) {\r\n properties.text = labels[i];\r\n max = Math.max(max, textMeasurer(properties));\r\n }\r\n return max + FunnelChart.LabelFunnelPadding;\r\n }\r\n\r\n private updateInternal(suppressAnimations: boolean) {\r\n if (this.data == null)\r\n return;\r\n\r\n let data = this.data;\r\n let slices = data.slices;\r\n let slicesWithoutHighlights = slices.filter((d: FunnelSlice) => !d.highlight);\r\n let isHidingPercentBars = this.isHidingPercentBars();\r\n\r\n let axisOptions = this.setUpAxis();\r\n let margin = axisOptions.margin;\r\n let verticalRange = axisOptions.verticalRange;\r\n\r\n let funnelContext = this.funnelGraphicsContext.attr('transform',\r\n SVGUtil.translateAndRotate(margin.left, margin.top, verticalRange / 2, verticalRange / 2, 90));\r\n\r\n this.percentGraphicsContext.attr('transform',\r\n SVGUtil.translate(margin.left, margin.top));\r\n\r\n this.svg.style('font-family', dataLabelUtils.StandardFontFamily);\r\n\r\n let layout = FunnelChart.getLayout(data, axisOptions);\r\n let labelLayout = dataLabelUtils.getFunnelChartLabelLayout(\r\n data,\r\n axisOptions,\r\n FunnelChart.InnerTextMinimumPadding,\r\n data.dataLabelsSettings,\r\n this.currentViewport);\r\n\r\n let result: FunnelAnimationResult;\r\n let shapes: D3.UpdateSelection;\r\n let dataLabels: D3.UpdateSelection;\r\n\r\n if (this.animator && !suppressAnimations) {\r\n let animationOptions: FunnelAnimationOptions = {\r\n viewModel: data,\r\n interactivityService: this.interactivityService,\r\n layout: layout,\r\n axisGraphicsContext: this.axisGraphicsContext,\r\n shapeGraphicsContext: funnelContext,\r\n percentGraphicsContext: this.percentGraphicsContext,\r\n labelGraphicsContext: this.svg,\r\n axisOptions: axisOptions,\r\n slicesWithoutHighlights: slicesWithoutHighlights,\r\n labelLayout: labelLayout,\r\n isHidingPercentBars: isHidingPercentBars,\r\n visualInitOptions: this.options,\r\n };\r\n result = this.animator.animate(animationOptions);\r\n shapes = result.shapes;\r\n dataLabels = result.dataLabels;\r\n }\r\n if (!this.animator || suppressAnimations || result.failed) {\r\n FunnelChart.drawDefaultAxis(this.axisGraphicsContext, axisOptions, isHidingPercentBars);\r\n shapes = FunnelChart.drawDefaultShapes(data, slices, funnelContext, layout, this.interactivityService && this.interactivityService.hasSelection());\r\n FunnelChart.drawPercentBars(data, this.percentGraphicsContext, layout, isHidingPercentBars);\r\n if (data.dataLabelsSettings.show && data.canShowDataLabels) {\r\n dataLabels = dataLabelUtils.drawDefaultLabelsForFunnelChart(data.slices, this.svg, labelLayout);\r\n }\r\n else {\r\n dataLabelUtils.cleanDataLabels(this.svg);\r\n }\r\n }\r\n\r\n if (this.interactivityService) {\r\n let interactors: D3.UpdateSelection = FunnelChart.drawInteractorShapes(slices, funnelContext, layout);\r\n let behaviorOptions: FunnelBehaviorOptions = {\r\n bars: shapes,\r\n interactors: interactors,\r\n clearCatcher: this.clearCatcher,\r\n hasHighlights: data.hasHighlights,\r\n };\r\n\r\n this.interactivityService.bind(slices, this.behavior, behaviorOptions);\r\n\r\n if (this.tooltipsEnabled) {\r\n TooltipManager.addTooltip(interactors, (tooltipEvent: TooltipEvent) => tooltipEvent.data.tooltipInfo);\r\n }\r\n }\r\n if (this.tooltipsEnabled) {\r\n TooltipManager.addTooltip(shapes, (tooltipEvent: TooltipEvent) => tooltipEvent.data.tooltipInfo);\r\n }\r\n\r\n SVGUtil.flushAllD3TransitionsIfNeeded(this.options);\r\n }\r\n\r\n private getUsableVerticalSpace(): number {\r\n let categoryLabels = this.data.categoryLabels;\r\n let margin = this.margin;\r\n let verticalSpace = this.currentViewport.height - (margin.top + margin.bottom);\r\n return verticalSpace - (FunnelChart.MinBarThickness * categoryLabels.length);\r\n }\r\n\r\n private isHidingPercentBars(): boolean {\r\n let data = this.data;\r\n\r\n if (data.percentBarLabelSettings.show) {\r\n let percentBarTextHeight = this.getPercentBarTextHeight();\r\n let verticalSpace = this.getUsableVerticalSpace() - (2 * FunnelChart.MinBarThickness * FunnelChart.PercentBarToBarRatio) - (2 * percentBarTextHeight);\r\n return verticalSpace <= 0;\r\n }\r\n return true;\r\n }\r\n\r\n private isSparklines(): boolean {\r\n return this.getUsableVerticalSpace() <= 0;\r\n }\r\n\r\n private setUpAxis(): FunnelAxisOptions {\r\n let data = this.data;\r\n let slices = data.slices;\r\n let categoryLabels = data.categoryLabels;\r\n let viewport = this.currentViewport;\r\n let margin = this.margin;\r\n let isSparklines = this.isSparklines();\r\n let isHidingPercentBars = this.isHidingPercentBars();\r\n let percentBarTextHeight = isHidingPercentBars ? 0 : this.getPercentBarTextHeight();\r\n let horizontalRange = viewport.height - (margin.top + margin.bottom) - (2 * percentBarTextHeight);\r\n\r\n if (categoryLabels.length > 0 && isSparklines) {\r\n categoryLabels = [];\r\n data.canShowDataLabels = false;\r\n } else if (this.showCategoryLabels()) {\r\n let textProperties = FunnelChart.getTextProperties();\r\n margin.left = this.getMaxLeftMargin(categoryLabels, textProperties);\r\n } else {\r\n categoryLabels = [];\r\n }\r\n\r\n let verticalRange = viewport.width - (margin.left + margin.right);\r\n let barToSpaceRatio = FunnelChart.BarToSpaceRatio;\r\n let maxScore = d3.max(slices.map(d=> d.value));\r\n let minScore = 0;\r\n let rangeStart = 0;\r\n let rangeEnd = horizontalRange;\r\n\r\n let delta: number;\r\n if (isHidingPercentBars)\r\n delta = horizontalRange - (categoryLabels.length * FunnelChart.MaxBarWidth);\r\n else\r\n delta = horizontalRange - (categoryLabels.length * FunnelChart.MaxBarWidth) - (2 * FunnelChart.MaxBarWidth * FunnelChart.PercentBarToBarRatio);\r\n\r\n if (categoryLabels.length > 0 && delta > 0) {\r\n rangeStart = Math.ceil(delta / 2);\r\n rangeEnd = Math.ceil(horizontalRange - delta / 2);\r\n }\r\n\r\n // Offset funnel axis start and end by percent bar text height\r\n if (!isHidingPercentBars) {\r\n rangeStart += percentBarTextHeight;\r\n rangeEnd += percentBarTextHeight;\r\n }\r\n\r\n let yScale = d3.scale.linear()\r\n .domain([minScore, maxScore])\r\n .range([verticalRange, 0]);\r\n let xScale = d3.scale.ordinal()\r\n .domain(d3.range(0, data.categoryLabels.length))\r\n .rangeBands([rangeStart, rangeEnd], barToSpaceRatio, isHidingPercentBars ? barToSpaceRatio : FunnelChart.PercentBarToBarRatio);\r\n\r\n return {\r\n margin: margin,\r\n xScale: xScale,\r\n yScale: yScale,\r\n maxScore: maxScore,\r\n verticalRange: verticalRange,\r\n rangeStart: rangeStart,\r\n rangeEnd: rangeEnd,\r\n barToSpaceRatio: barToSpaceRatio,\r\n categoryLabels: categoryLabels,\r\n };\r\n }\r\n\r\n private getPercentBarTextHeight(): number {\r\n let percentBarTextProperties = FunnelChart.getTextProperties(this.data.percentBarLabelSettings.fontSize);\r\n return TextMeasurementService.estimateSvgTextHeight(percentBarTextProperties);\r\n }\r\n\r\n public onClearSelection(): void {\r\n if (this.interactivityService)\r\n this.interactivityService.clearSelection();\r\n }\r\n\r\n public static getLayout(data: FunnelData, axisOptions: FunnelAxisOptions): IFunnelLayout {\r\n let highlightsOverflow = data.highlightsOverflow;\r\n let yScale = axisOptions.yScale;\r\n let xScale = axisOptions.xScale;\r\n let maxScore = axisOptions.maxScore;\r\n let columnWidth = xScale.rangeBand();\r\n let halfColumnWidth = Math.ceil(columnWidth / 2);\r\n let percentBarTickHeight = halfColumnWidth;\r\n let overFlowHighlightColumnWidth = columnWidth * FunnelChart.OverflowingHighlightWidthRatio;\r\n let overFlowHighlightOffset = overFlowHighlightColumnWidth / 2;\r\n let lastCategoryIndex = axisOptions.categoryLabels.length - 1;\r\n let horizontalDistance = Math.abs(yScale(maxScore) - yScale(0));\r\n let emptyHorizontalSpace = (value: number): number => (horizontalDistance - Math.abs(yScale(value) - yScale(0))) / 2;\r\n let getMinimumShapeSize = (value: number): number => Math.max(FunnelChart.MinimumInteractorSize, Math.abs(yScale(value) - yScale(0)));\r\n let percentBarFontSize = PixelConverter.fromPoint(data.percentBarLabelSettings.fontSize);\r\n let percentBarTextProperties = FunnelChart.getTextProperties(data.percentBarLabelSettings.fontSize);\r\n let baselineDelta = TextMeasurementService.estimateSvgTextBaselineDelta(percentBarTextProperties);\r\n let percentBarYOffset = TextMeasurementService.estimateSvgTextHeight(percentBarTextProperties) - baselineDelta;\r\n\r\n return {\r\n percentBarLayout: {\r\n mainLine: {\r\n x2: (d: FunnelPercent) => Math.abs(yScale(d.value) - yScale(0)),\r\n transform: (d: FunnelPercent) => {\r\n let xOffset = yScale(d.value) - emptyHorizontalSpace(d.value);\r\n let yOffset = d.isTop\r\n ? xScale(0) - halfColumnWidth\r\n : xScale(lastCategoryIndex) + columnWidth + halfColumnWidth;\r\n return SVGUtil.translate(xOffset, yOffset);\r\n },\r\n },\r\n leftTick: {\r\n y2: (d: FunnelPercent) => percentBarTickHeight,\r\n transform: (d: FunnelPercent) => {\r\n let xOffset = yScale(d.value) - emptyHorizontalSpace(d.value);\r\n let yOffset = d.isTop\r\n ? xScale(0) - halfColumnWidth - (percentBarTickHeight / 2)\r\n : xScale(lastCategoryIndex) + columnWidth + halfColumnWidth - (percentBarTickHeight / 2);\r\n return SVGUtil.translate(xOffset, yOffset);\r\n },\r\n },\r\n rightTick: {\r\n y2: (d: FunnelPercent) => percentBarTickHeight,\r\n transform: (d: FunnelPercent) => {\r\n let columnOffset = yScale(d.value) - emptyHorizontalSpace(d.value);\r\n let columnHeight = Math.abs(yScale(d.value) - yScale(0));\r\n let xOffset = columnOffset + columnHeight;\r\n let yOffset = d.isTop\r\n ? xScale(0) - halfColumnWidth - (percentBarTickHeight / 2)\r\n : xScale(lastCategoryIndex) + columnWidth + halfColumnWidth - (percentBarTickHeight / 2);\r\n return SVGUtil.translate(xOffset, yOffset);\r\n },\r\n },\r\n text: {\r\n x: (d: FunnelPercent) => Math.ceil((Math.abs(yScale(maxScore) - yScale(0)) / 2)),\r\n y: (d: FunnelPercent) => {\r\n return d.isTop\r\n ? -percentBarTickHeight / 2 - baselineDelta\r\n : percentBarYOffset + (percentBarTickHeight / 2);\r\n },\r\n style: () => `font-size: ${percentBarFontSize};`,\r\n transform: (d: FunnelPercent) => {\r\n let yOffset = d.isTop\r\n ? xScale(0) - halfColumnWidth\r\n : xScale(lastCategoryIndex) + columnWidth + halfColumnWidth;\r\n return SVGUtil.translate(0, yOffset);\r\n },\r\n fill: data.percentBarLabelSettings.labelColor,\r\n maxWidth: horizontalDistance,\r\n },\r\n },\r\n shapeLayout: {\r\n width: ((d: FunnelSlice) => d.highlight && highlightsOverflow ? overFlowHighlightColumnWidth : columnWidth),\r\n height: (d: FunnelSlice) => {\r\n return Math.abs(yScale(FunnelChart.getFunnelSliceValue(d)) - yScale(0));\r\n },\r\n x: (d: FunnelSlice) => {\r\n return xScale(d.categoryOrMeasureIndex) + (d.highlight && highlightsOverflow ? overFlowHighlightOffset : 0);\r\n },\r\n y: (d: FunnelSlice) => {\r\n let value = FunnelChart.getFunnelSliceValue(d);\r\n return yScale(value) - emptyHorizontalSpace(value);\r\n },\r\n },\r\n shapeLayoutWithoutHighlights: {\r\n width: ((d: FunnelSlice) => columnWidth),\r\n height: (d: FunnelSlice) => {\r\n return Math.abs(yScale(d.value) - yScale(0));\r\n },\r\n x: (d: FunnelSlice) => {\r\n return xScale(d.categoryOrMeasureIndex) + (0);\r\n },\r\n y: (d: FunnelSlice) => {\r\n return yScale(d.value) - emptyHorizontalSpace(d.value);\r\n },\r\n },\r\n zeroShapeLayout: {\r\n width: ((d: FunnelSlice) => d.highlight && highlightsOverflow ? overFlowHighlightColumnWidth : columnWidth),\r\n height: (d: FunnelSlice) => 0,\r\n x: (d: FunnelSlice) => {\r\n return xScale(d.categoryOrMeasureIndex) + (d.highlight && highlightsOverflow ? overFlowHighlightOffset : 0);\r\n },\r\n y: (d: FunnelSlice) => {\r\n return yScale((yScale.domain()[0] + yScale.domain()[1]) / 2);\r\n },\r\n },\r\n interactorLayout: {\r\n width: ((d: FunnelSlice) => d.highlight && highlightsOverflow ? overFlowHighlightColumnWidth : columnWidth),\r\n height: (d: FunnelSlice) => getMinimumShapeSize(FunnelChart.getFunnelSliceValue(d)),\r\n x: (d: FunnelSlice) => {\r\n return xScale(d.categoryOrMeasureIndex) + (d.highlight && highlightsOverflow ? overFlowHighlightOffset : 0);\r\n },\r\n y: (d: FunnelSlice) => {\r\n let size = getMinimumShapeSize(FunnelChart.getFunnelSliceValue(d));\r\n return (horizontalDistance - size) / 2;\r\n },\r\n },\r\n };\r\n }\r\n\r\n public static drawDefaultAxis(graphicsContext: D3.Selection, axisOptions: FunnelAxisOptions, isHidingPercentBars: boolean): void {\r\n //Generate ordinal domain\r\n var indices = d3.range(0, axisOptions.categoryLabels.length);\r\n let xScaleForAxis = d3.scale.ordinal()\r\n .domain(indices)\r\n .rangeBands([axisOptions.rangeStart, axisOptions.rangeEnd], axisOptions.barToSpaceRatio, isHidingPercentBars ? axisOptions.barToSpaceRatio : FunnelChart.PercentBarToBarRatio);\r\n let xAxis = d3.svg.axis()\r\n .scale(xScaleForAxis)\r\n .orient(\"right\")\r\n .tickPadding(FunnelChart.TickPadding)\r\n .innerTickSize(FunnelChart.InnerTickSize)\r\n .ticks(indices.length)\r\n .tickValues(indices)\r\n .tickFormat((i) => { return axisOptions.categoryLabels[i]; }); //To output the category label\r\n graphicsContext.attr('class', 'axis hideLinesOnAxis')\r\n .attr('transform', SVGUtil.translate(0, axisOptions.margin.top))\r\n .call(xAxis);\r\n\r\n graphicsContext.selectAll('.tick')\r\n .call(tooltipUtils.tooltipUpdate, axisOptions.categoryLabels);\r\n }\r\n\r\n public static drawDefaultShapes(data: FunnelData, slices: FunnelSlice[], graphicsContext: D3.Selection, layout: IFunnelLayout, hasSelection: boolean): D3.UpdateSelection {\r\n let hasHighlights = data.hasHighlights;\r\n let columns = graphicsContext.selectAll(FunnelChart.Selectors.funnel.bars.selector).data(slices, (d: FunnelSlice) => d.key);\r\n\r\n columns.enter()\r\n .append('rect')\r\n .attr(\"class\", (d: FunnelSlice) => d.highlight ? FunnelChart.FunnelBarHighlightClass : FunnelChart.Selectors.funnel.bars.class);\r\n\r\n columns\r\n .style(\"fill\", d => {\r\n return d.color;\r\n })\r\n .style(\"fill-opacity\", d => (d: FunnelSlice) => ColumnUtil.getFillOpacity(d.selected, d.highlight, hasSelection, hasHighlights))\r\n .attr(layout.shapeLayout);\r\n\r\n columns.exit().remove();\r\n\r\n return columns;\r\n }\r\n\r\n public static getFunnelSliceValue(slice: FunnelSlice, asOriginal: boolean = false) {\r\n if (asOriginal)\r\n return slice.highlight ? slice.originalHighlightValue : slice.originalValue;\r\n else\r\n return slice.highlight ? slice.highlightValue : slice.value;\r\n }\r\n\r\n public static drawInteractorShapes(slices: FunnelSlice[], graphicsContext: D3.Selection, layout: IFunnelLayout): D3.UpdateSelection {\r\n // Draw invsible ineractors for just data points which are below threshold\r\n let needInteractors = slices.filter((d: FunnelSlice) => {\r\n return !d.highlight && layout.interactorLayout.height(d) === FunnelChart.MinimumInteractorSize;\r\n });\r\n let columns = graphicsContext.selectAll(FunnelChart.Selectors.funnel.interactors.selector).data(needInteractors, (d: FunnelSlice) => d.key);\r\n\r\n columns.enter()\r\n .append('rect')\r\n .attr(\"class\", FunnelChart.Selectors.funnel.interactors.class);\r\n\r\n columns\r\n .style(\"fill-opacity\", 0)\r\n .attr(layout.interactorLayout);\r\n\r\n columns.exit().remove();\r\n\r\n return columns;\r\n }\r\n\r\n private static drawPercentBarComponents(graphicsContext: D3.Selection, data: FunnelPercent[], layout: IFunnelLayout, percentLabelSettings: VisualDataLabelsSettings) {\r\n // Main line\r\n let mainLine: D3.UpdateSelection = graphicsContext.selectAll(FunnelChart.Selectors.percentBar.mainLine.selector).data(data);\r\n mainLine.exit().remove();\r\n mainLine.enter()\r\n .append('line')\r\n .classed(FunnelChart.Selectors.percentBar.mainLine.class, true);\r\n mainLine\r\n .attr(layout.percentBarLayout.mainLine);\r\n\r\n // Left tick\r\n let leftTick: D3.UpdateSelection = graphicsContext.selectAll(FunnelChart.Selectors.percentBar.leftTick.selector).data(data);\r\n leftTick.exit().remove();\r\n leftTick.enter()\r\n .append('line')\r\n .classed(FunnelChart.Selectors.percentBar.leftTick.class, true);\r\n leftTick\r\n .attr(layout.percentBarLayout.leftTick);\r\n\r\n // Right tick\r\n let rightTick: D3.UpdateSelection = graphicsContext.selectAll(FunnelChart.Selectors.percentBar.rightTick.selector).data(data);\r\n rightTick.exit().remove();\r\n rightTick.enter()\r\n .append('line')\r\n .classed(FunnelChart.Selectors.percentBar.rightTick.class, true);\r\n rightTick\r\n .attr(layout.percentBarLayout.rightTick);\r\n\r\n // Text\r\n let text: D3.UpdateSelection = graphicsContext.selectAll(FunnelChart.Selectors.percentBar.text.selector).data(data);\r\n let localizedString: string = valueFormatter.getLocalizedString(\"Percentage1\");\r\n text.exit().remove();\r\n text.enter().append('text').classed(FunnelChart.Selectors.percentBar.text.class, true);\r\n text\r\n .attr(layout.percentBarLayout.text)\r\n .text((fp: FunnelPercent) => {\r\n return dataLabelUtils.getLabelFormattedText({\r\n label: fp.percent,\r\n format: localizedString,\r\n fontSize: percentLabelSettings.fontSize,\r\n maxWidth: layout.percentBarLayout.text.maxWidth,\r\n });\r\n })\r\n .append('title').text((d: FunnelPercent) => formattingService.formatValue(d.percent, localizedString)); \r\n }\r\n\r\n public static drawPercentBars(data: FunnelData, graphicsContext: D3.Selection, layout: IFunnelLayout, isHidingPercentBars: boolean): void {\r\n if (isHidingPercentBars || !data.slices || (data.hasHighlights ? data.slices.length / 2 : data.slices.length) < 2) {\r\n FunnelChart.drawPercentBarComponents(graphicsContext, [], layout, data.percentBarLabelSettings);\r\n return;\r\n }\r\n\r\n let slices = [data.slices[data.hasHighlights ? 1 : 0], data.slices[data.slices.length - 1]];\r\n let baseline = FunnelChart.getFunnelSliceValue(slices[0]);\r\n\r\n if (baseline <= 0) {\r\n FunnelChart.drawPercentBarComponents(graphicsContext, [], layout, data.percentBarLabelSettings);\r\n return;\r\n }\r\n\r\n let percentData: FunnelPercent[] = [\r\n {\r\n value: FunnelChart.getFunnelSliceValue(slices[0]),\r\n percent: 1,\r\n isTop: true,\r\n },\r\n {\r\n value: FunnelChart.getFunnelSliceValue(slices[1]),\r\n percent: FunnelChart.getFunnelSliceValue(slices[1]) / baseline,\r\n isTop: false,\r\n },\r\n ];\r\n\r\n FunnelChart.drawPercentBarComponents(graphicsContext, percentData, layout, data.percentBarLabelSettings);\r\n }\r\n\r\n private showCategoryLabels(): boolean {\r\n if (this.funnelSmallViewPortProperties) {\r\n if ((this.funnelSmallViewPortProperties.hideFunnelCategoryLabelsOnSmallViewPort) && (this.currentViewport.height < this.funnelSmallViewPortProperties.minHeightFunnelCategoryLabelsVisible)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n private static addFunnelPercentsToTooltip(tooltipInfo: TooltipDataItem[], hostServices: IVisualHostServices, percentOfFirst?: number, percentOfPrevious?: number, highlight?: boolean): void {\r\n if (percentOfFirst != null) {\r\n tooltipInfo.push({\r\n displayName: hostServices.getLocalizedString(\"Funnel_PercentOfFirst\" + (highlight ? \"_Highlight\" : \"\")),\r\n value: valueFormatter.format(percentOfFirst, '0.00 %;-0.00 %;0.00 %'),\r\n });\r\n }\r\n if (percentOfPrevious != null) {\r\n tooltipInfo.push({\r\n displayName: hostServices.getLocalizedString(\"Funnel_PercentOfPrevious\" + (highlight ? \"_Highlight\" : \"\")),\r\n value: valueFormatter.format(percentOfPrevious, '0.00 %;-0.00 %;0.00 %'),\r\n });\r\n }\r\n }\r\n\r\n private static getTextProperties(fontSize?: number): TextProperties {\r\n return {\r\n fontSize: PixelConverter.fromPoint(fontSize || dataLabelUtils.DefaultFontSizeInPt),\r\n fontFamily: FunnelChart.DefaultFontFamily,\r\n };\r\n }\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n import ClassAndSelector = jsCommon.CssConstants.ClassAndSelector;\r\n import createClassAndSelector = jsCommon.CssConstants.createClassAndSelector;\r\n import PixelConverter = jsCommon.PixelConverter;\r\n\r\n export interface GaugeData extends TooltipEnabledDataPoint {\r\n percent: number;\r\n adjustedTotal: number;\r\n total: number;\r\n metadataColumn: DataViewMetadataColumn;\r\n targetSettings: GaugeTargetSettings;\r\n dataLabelsSettings: VisualDataLabelsSettings;\r\n calloutValueLabelsSettings: VisualDataLabelsSettings;\r\n }\r\n\r\n interface KpiArcAttributes {\r\n start: number;\r\n end: number;\r\n fill: string;\r\n }\r\n\r\n export interface GaugeTargetSettings {\r\n min: number;\r\n max: number;\r\n target: number;\r\n }\r\n\r\n export interface GaugeTargetData extends GaugeTargetSettings {\r\n total: number;\r\n tooltipItems: TooltipSeriesDataItem[];\r\n }\r\n\r\n interface GaugeStyle {\r\n transition: {\r\n ease: string\r\n };\r\n arcColors: {\r\n background: string;\r\n foreground: string;\r\n };\r\n targetLine: {\r\n show: boolean;\r\n color: string;\r\n thickness: number;\r\n };\r\n labels: {\r\n count: number;\r\n padding: number;\r\n fontSize: number;\r\n };\r\n kpiBands: {\r\n show: boolean;\r\n separationRadians: number;\r\n thickness: number;\r\n };\r\n }\r\n\r\n export interface GaugeSmallViewPortProperties {\r\n hideGaugeSideNumbersOnSmallViewPort: boolean;\r\n smallGaugeMarginsOnSmallViewPort: boolean;\r\n MinHeightGaugeSideNumbersVisible: number;\r\n GaugeMarginsOnSmallViewPort: number;\r\n }\r\n\r\n export interface GaugeVisualProperties {\r\n radius: number;\r\n innerRadiusOfArc: number;\r\n innerRadiusFactor: number;\r\n left: number;\r\n top: number;\r\n height: number;\r\n width: number;\r\n margin: IMargin;\r\n transformString: string;\r\n }\r\n\r\n export interface AnimatedNumberProperties {\r\n transformString: string;\r\n viewport: IViewport;\r\n }\r\n\r\n export interface GaugeConstructorOptions {\r\n gaugeSmallViewPortProperties?: GaugeSmallViewPortProperties;\r\n animator?: IGenericAnimator;\r\n tooltipsEnabled?: boolean;\r\n }\r\n\r\n export interface GaugeDataViewObjects extends DataViewObjects {\r\n axis: GaugeDataViewObject;\r\n }\r\n\r\n export interface GaugeDataViewObject extends DataViewObject {\r\n min?: number;\r\n max?: number;\r\n target?: number;\r\n }\r\n\r\n /** \r\n * Renders a number that can be animate change in value.\r\n */\r\n export class Gauge implements IVisual {\r\n private static MIN_VALUE = -Infinity;\r\n private static MAX_VALUE = +Infinity;\r\n private static MinDistanceFromBottom = 10;\r\n private static MinWidthForTargetLabel = 150;\r\n private static DefaultTopBottomMargin = 20;\r\n private static DefaultLeftRightMargin = 45;\r\n private static ReducedLeftRightMargin = 15;\r\n private static DEFAULT_MAX = 1;\r\n private static DEFAULT_MIN = 0;\r\n private static VisualClassName = 'gauge';\r\n private static DefaultStyleProperties: GaugeStyle = {\r\n transition: {\r\n ease: 'bounce'\r\n },\r\n arcColors: {\r\n background: '#e9e9e9',\r\n foreground: '#00B8AA'\r\n },\r\n targetLine: {\r\n show: true,\r\n color: '#666666',\r\n thickness: 2\r\n },\r\n labels: {\r\n count: 2,\r\n padding: 5,\r\n fontSize: NewDataLabelUtils.DefaultLabelFontSizeInPt,\r\n },\r\n kpiBands: {\r\n show: false,\r\n separationRadians: Math.PI / 128,\r\n thickness: 5\r\n },\r\n };\r\n private static DefaultTargetSettings: GaugeTargetSettings = {\r\n min: 0,\r\n max: 1,\r\n target: undefined\r\n };\r\n\r\n private static InnerRadiusFactor = 0.7;\r\n private static KpiBandDistanceFromMainArc = 2;\r\n private static MainGaugeGroupClassName = 'mainGroup';\r\n private static LabelText: ClassAndSelector = createClassAndSelector('labelText');\r\n private static TargetConnector: ClassAndSelector = createClassAndSelector('targetConnector');\r\n private static TargetText: ClassAndSelector = createClassAndSelector('targetText');\r\n\r\n /** Note: Public for testability */\r\n public static formatStringProp: DataViewObjectPropertyIdentifier = {\r\n objectName: 'general',\r\n propertyName: 'formatString',\r\n };\r\n\r\n private svg: D3.Selection;\r\n private mainGraphicsContext: D3.Selection;\r\n private currentViewport: IViewport;\r\n private element: JQuery;\r\n private style: IVisualStyle;\r\n private data: GaugeData;\r\n private color: D3.Scale.OrdinalScale;\r\n\r\n private backgroundArc: D3.Svg.Arc;\r\n private foregroundArc: D3.Svg.Arc;\r\n private kpiArcs: D3.Svg.Arc[];\r\n\r\n private kpiArcPaths: D3.Selection[];\r\n private foregroundArcPath: D3.Selection;\r\n private backgroundArcPath: D3.Selection;\r\n private targetLine: D3.Selection;\r\n private targetConnector: D3.Selection;\r\n private targetText: D3.Selection;\r\n private options: VisualInitOptions;\r\n\r\n private lastAngle = -Math.PI / 2;\r\n private margin: IMargin;\r\n private animatedNumberGrapicsContext: D3.Selection;\r\n private animatedNumber: AnimatedNumber;\r\n private settings: GaugeStyle;\r\n private targetSettings: GaugeTargetSettings;\r\n private gaugeVisualProperties: GaugeVisualProperties;\r\n private gaugeSmallViewPortProperties: GaugeSmallViewPortProperties;\r\n private showTargetLabel: boolean;\r\n\r\n private tooltipsEnabled: boolean;\r\n\r\n private hostService: IVisualHostServices;\r\n\r\n // TODO: Remove this once all visuals have implemented update.\r\n private dataViews: DataView[];\r\n\r\n public animator: IGenericAnimator;\r\n\r\n constructor(options?: GaugeConstructorOptions) {\r\n if (options) {\r\n if (options.gaugeSmallViewPortProperties) {\r\n this.gaugeSmallViewPortProperties = options.gaugeSmallViewPortProperties;\r\n }\r\n this.animator = options.animator;\r\n this.tooltipsEnabled = options.tooltipsEnabled;\r\n }\r\n }\r\n\r\n public enumerateObjectInstances(options: EnumerateVisualObjectInstancesOptions): VisualObjectInstanceEnumeration {\r\n let enumeration = new ObjectEnumerationBuilder();\r\n\r\n switch (options.objectName) {\r\n case 'axis':\r\n this.enumerateAxis(enumeration);\r\n break;\r\n case 'labels': {\r\n let labelSettings = this.data ? this.data.dataLabelsSettings : dataLabelUtils.getDefaultGaugeLabelSettings();\r\n dataLabelUtils.enumerateDataLabels(this.getDataLabelSettingsOptions(enumeration, labelSettings));\r\n break;\r\n }\r\n case 'calloutValue': {\r\n let labelSettings = this.data ? this.data.calloutValueLabelsSettings : dataLabelUtils.getDefaultGaugeLabelSettings();\r\n dataLabelUtils.enumerateDataLabels(this.getDataLabelSettingsOptions(enumeration, labelSettings));\r\n break;\r\n }\r\n }\r\n return enumeration.complete();\r\n }\r\n\r\n private getDataLabelSettingsOptions(enumeration: ObjectEnumerationBuilder, labelSettings: VisualDataLabelsSettings): VisualDataLabelsSettingsOptions {\r\n return {\r\n dataLabelsSettings: labelSettings,\r\n show: true,\r\n precision: true,\r\n displayUnits: true,\r\n fontSize: true,\r\n enumeration: enumeration,\r\n };\r\n }\r\n\r\n private enumerateAxis(enumeration: ObjectEnumerationBuilder): void {\r\n let dataView: DataView = this.dataViews[0];\r\n\r\n if (dataView && dataView.metadata) {\r\n let properties: GaugeTargetSettings = Gauge.getGaugeObjectsProperties(dataView);\r\n enumeration.pushInstance({\r\n selector: null,\r\n objectName: 'axis',\r\n properties: <any>properties,\r\n });\r\n }\r\n }\r\n\r\n private static getGaugeObjectsProperties(dataView: DataView): GaugeTargetSettings {\r\n let properties: any = {};\r\n let objects: GaugeDataViewObjects = <GaugeDataViewObjects>dataView.metadata.objects;\r\n let hasAxisObject: boolean = !!objects && !!objects.axis;\r\n\r\n if (!DataRoleHelper.hasRoleInDataView(dataView, gaugeRoleNames.minValue))\r\n properties.min = hasAxisObject ? objects.axis.min : undefined;\r\n\r\n if (!DataRoleHelper.hasRoleInDataView(dataView, gaugeRoleNames.maxValue))\r\n properties.max = hasAxisObject ? objects.axis.max : undefined;\r\n\r\n if (!DataRoleHelper.hasRoleInDataView(dataView, gaugeRoleNames.targetValue))\r\n properties.target = hasAxisObject ? objects.axis.target : undefined;\r\n\r\n return properties;\r\n }\r\n\r\n public init(options: VisualInitOptions) {\r\n this.element = options.element;\r\n this.currentViewport = options.viewport;\r\n this.style = options.style;\r\n this.options = options;\r\n this.settings = Gauge.DefaultStyleProperties;\r\n this.targetSettings = Gauge.DefaultTargetSettings;\r\n\r\n this.setMargins();\r\n\r\n this.color = d3.scale.ordinal().range(\r\n this.style.colorPalette.dataColors.getSentimentColors().map(\r\n color => color.value));\r\n\r\n this.hostService = options.host;\r\n let svg = this.svg = d3.select(this.element.get(0)).append('svg');\r\n svg.classed(Gauge.VisualClassName, true);\r\n let mainGraphicsContext = this.mainGraphicsContext = svg.append('g');\r\n mainGraphicsContext.attr('class', Gauge.MainGaugeGroupClassName);\r\n\r\n this.initKpiBands();\r\n\r\n let backgroundArc = this.backgroundArc = d3.svg.arc()\r\n .innerRadius(0)\r\n .outerRadius(0)\r\n .startAngle(-Math.PI / 2)\r\n .endAngle(Math.PI / 2);\r\n\r\n let foregroundArc = this.foregroundArc = d3.svg.arc()\r\n .innerRadius(0)\r\n .outerRadius(0)\r\n .startAngle(-Math.PI / 2);\r\n\r\n this.backgroundArcPath = mainGraphicsContext.append('path')\r\n .classed('backgroundArc', true)\r\n .attr('d', backgroundArc);\r\n\r\n this.foregroundArcPath = mainGraphicsContext.append('path')\r\n .datum({ endAngle: -Math.PI / 2 })\r\n .classed('foregroundArc', true)\r\n .attr('d', foregroundArc);\r\n\r\n let g = this.animatedNumberGrapicsContext = svg.append('g');\r\n\r\n this.animatedNumber = new AnimatedNumber(g);\r\n this.animatedNumber.init(options);\r\n\r\n let gaugeDrawingOptions = this.gaugeVisualProperties = this.getGaugeVisualProperties();\r\n let animatedNumberProperties = this.getAnimatedNumberProperties(\r\n gaugeDrawingOptions.radius,\r\n gaugeDrawingOptions.innerRadiusFactor,\r\n gaugeDrawingOptions.top,\r\n gaugeDrawingOptions.left);\r\n this.animatedNumberGrapicsContext.attr('transform', animatedNumberProperties.transformString);\r\n this.animatedNumber.onResizing(animatedNumberProperties.viewport);\r\n }\r\n\r\n public update(options: VisualUpdateOptions) {\r\n debug.assertValue(options, 'options');\r\n\r\n this.currentViewport = options.viewport;\r\n let dataViews = this.dataViews = options.dataViews;\r\n\r\n if (!dataViews || !dataViews[0]) {\r\n return;\r\n }\r\n\r\n this.data = Gauge.converter(dataViews[0]);\r\n this.targetSettings = this.data.targetSettings;\r\n\r\n if (dataViews[0])\r\n dataViews[0].single = { value: this.data.total };\r\n\r\n // Only show the target label if:\r\n // 1. There is a target\r\n // 2. The viewport width is big enough for a target\r\n // 3. We're showing label text for side numbers\r\n // 4. Data label settings specify to show\r\n this.showTargetLabel = this.targetSettings.target != null\r\n && (this.currentViewport.width > Gauge.MinWidthForTargetLabel || !this.showMinMaxLabelsOnBottom())\r\n && this.showSideNumbersLabelText()\r\n && this.data.dataLabelsSettings.show;\r\n\r\n this.setMargins();\r\n\r\n this.gaugeVisualProperties = this.getGaugeVisualProperties();\r\n this.drawViewPort(this.gaugeVisualProperties);\r\n this.updateInternal(options.suppressAnimations);\r\n this.updateCalloutValue(options.suppressAnimations);\r\n\r\n let warnings = getInvalidValueWarnings(\r\n dataViews,\r\n false /*supportsNaN*/,\r\n false /*supportsNegativeInfinity*/,\r\n false /*supportsPositiveInfinity*/);\r\n\r\n this.hostService.setWarnings(warnings);\r\n }\r\n\r\n private updateCalloutValue(suppressAnimations: boolean): void {\r\n if (this.data.calloutValueLabelsSettings.show) {\r\n let animatedNumberProperties = this.getAnimatedNumberProperties(\r\n this.gaugeVisualProperties.radius,\r\n this.gaugeVisualProperties.innerRadiusFactor,\r\n this.gaugeVisualProperties.top,\r\n this.gaugeVisualProperties.left);\r\n this.animatedNumberGrapicsContext.attr('transform', animatedNumberProperties.transformString);\r\n this.animatedNumber.setTextColor(this.data.calloutValueLabelsSettings.labelColor);\r\n\r\n let calloutValue: number = this.data ? this.data.total : null;\r\n let formatter = this.getFormatter(this.data.calloutValueLabelsSettings, calloutValue);\r\n\r\n this.animatedNumber.setFormatter(formatter);\r\n this.animatedNumber.update({\r\n viewport: animatedNumberProperties.viewport,\r\n dataViews: this.dataViews,\r\n suppressAnimations: suppressAnimations,\r\n });\r\n\r\n this.animatedNumberGrapicsContext.selectAll('title').remove();\r\n this.animatedNumberGrapicsContext.append('title').text([formatter.format(calloutValue)]);\r\n }\r\n else {\r\n this.animatedNumber.clear();\r\n this.animatedNumberGrapicsContext.selectAll('title').remove();\r\n }\r\n }\r\n\r\n public onDataChanged(options: VisualDataChangedOptions): void {\r\n // TODO: Remove onDataChanged & onResizing once all visuals have implemented update.\r\n this.update({\r\n dataViews: options.dataViews,\r\n suppressAnimations: options.suppressAnimations,\r\n viewport: this.currentViewport\r\n });\r\n }\r\n\r\n public onResizing(viewport: IViewport): void {\r\n // TODO: Remove onDataChanged & onResizing once all visuals have implemented update.\r\n this.update({\r\n dataViews: this.dataViews,\r\n suppressAnimations: true,\r\n viewMode: ViewMode.View,\r\n viewport: viewport\r\n });\r\n }\r\n\r\n public onStyleChanged(newStyle: IVisualStyle) {\r\n this.style = newStyle;\r\n this.color = d3.scale.ordinal().range(\r\n newStyle.colorPalette.dataColors.getSentimentColors().map(\r\n color => color.value));\r\n this.updateInternal(true /* suppressAnimations */);\r\n }\r\n\r\n private static getValidSettings(targetData: GaugeTargetData): GaugeTargetSettings {\r\n let maxVal = (targetData.max === Gauge.MAX_VALUE) ? Gauge.DEFAULT_MAX : targetData.max;\r\n let minVal = (targetData.min === Gauge.MIN_VALUE) ? Gauge.DEFAULT_MIN : targetData.min;\r\n let targetVal = targetData.target;\r\n\r\n return {\r\n min: minVal,\r\n max: maxVal,\r\n target: targetVal\r\n };\r\n }\r\n\r\n private static getGaugeData(dataView: DataView): GaugeTargetData {\r\n let settings: GaugeTargetData = {\r\n max: Gauge.MAX_VALUE,\r\n min: Gauge.MIN_VALUE,\r\n target: undefined,\r\n total: 0,\r\n tooltipItems: []\r\n };\r\n\r\n if (dataView && dataView.categorical && dataView.categorical.values && dataView.metadata && dataView.metadata.columns) {\r\n let values = dataView.categorical.values;\r\n let metadataColumns = dataView.metadata.columns;\r\n\r\n debug.assert(metadataColumns.length >= values.length, 'length');\r\n\r\n for (let i = 0; i < values.length; i++) {\r\n let col = metadataColumns[i],\r\n value = values[i].values[0] || 0;\r\n if (col && col.roles) {\r\n if (col.roles[gaugeRoleNames.y]) {\r\n settings.total = value;\r\n if (value)\r\n settings.tooltipItems.push({ value: value, metadata: values[i] });\r\n } else if (col.roles[gaugeRoleNames.minValue]) {\r\n settings.min = value;\r\n } else if (col.roles[gaugeRoleNames.maxValue]) {\r\n settings.max = value;\r\n } else if (col.roles[gaugeRoleNames.targetValue]) {\r\n settings.target = value;\r\n if (value)\r\n settings.tooltipItems.push({ value: value, metadata: values[i] });\r\n }\r\n }\r\n }\r\n\r\n // Override settings according to property pane axis values\r\n let gaugeObjectsSettings: GaugeTargetSettings = Gauge.getGaugeObjectsProperties(dataView);\r\n if (gaugeObjectsSettings && !$.isEmptyObject(gaugeObjectsSettings))\r\n Gauge.overrideGaugeSettings(settings, gaugeObjectsSettings);\r\n }\r\n\r\n return settings;\r\n }\r\n\r\n private static overrideGaugeSettings(settings: GaugeTargetData, gaugeObjectsSettings: GaugeTargetSettings) {\r\n if ($.isNumeric(gaugeObjectsSettings.min))\r\n settings.min = gaugeObjectsSettings.min;\r\n\r\n if ($.isNumeric(gaugeObjectsSettings.max))\r\n settings.max = gaugeObjectsSettings.max;\r\n\r\n if ($.isNumeric(gaugeObjectsSettings.target))\r\n settings.target = gaugeObjectsSettings.target;\r\n }\r\n \r\n /** Note: Made public for testability */\r\n public static converter(dataView: DataView): GaugeData {\r\n let gaugeData = Gauge.getGaugeData(dataView),\r\n total = gaugeData.total,\r\n formatString: string = null,\r\n hasPercent = false;\r\n\r\n if (dataView.metadata && !_.isEmpty(dataView.metadata.columns)) {\r\n formatString = valueFormatter.getFormatString(dataView.metadata.columns[0], Gauge.formatStringProp, true);\r\n if (formatString != null)\r\n hasPercent = valueFormatter.getFormatMetadata(formatString).hasPercent;\r\n }\r\n\r\n if (total > 0 && gaugeData.max === Gauge.MAX_VALUE) {\r\n gaugeData.max = hasPercent ? Gauge.DEFAULT_MAX : total * 2;\r\n }\r\n\r\n let settings: GaugeTargetSettings = Gauge.getValidSettings(gaugeData);\r\n\r\n //Checking that the value is plotted inside the guage boundries\r\n let adjustedTotal = Math.max(total, settings.min);\r\n adjustedTotal = Math.min(adjustedTotal, settings.max);\r\n\r\n let percent: number = (settings.min !== settings.max)\r\n ? (adjustedTotal - settings.min) / (settings.max - settings.min)\r\n : 0;\r\n\r\n let tooltipInfo: TooltipDataItem[];\r\n\r\n if (dataView) {\r\n if (gaugeData.tooltipItems.length > 0) {\r\n tooltipInfo = TooltipBuilder.createTooltipInfo(Gauge.formatStringProp, null, null, null, null, gaugeData.tooltipItems);\r\n }\r\n else {\r\n let dataViewCat = dataView.categorical;\r\n\r\n if (dataViewCat && dataViewCat.values && dataViewCat.values.length > 0) {\r\n let categoryValue: DataViewValueColumn = dataViewCat.values[0];\r\n let value = categoryValue.values[0];\r\n\r\n tooltipInfo = TooltipBuilder.createTooltipInfo(Gauge.formatStringProp, dataViewCat, null, value);\r\n }\r\n }\r\n }\r\n\r\n return {\r\n percent: percent,\r\n adjustedTotal: adjustedTotal,\r\n total: total,\r\n metadataColumn: Gauge.getMetaDataColumn(dataView),\r\n targetSettings: settings,\r\n tooltipInfo: tooltipInfo,\r\n dataLabelsSettings: Gauge.convertDataLableSettings(dataView, \"labels\"),\r\n calloutValueLabelsSettings: Gauge.convertDataLableSettings(dataView, \"calloutValue\"),\r\n };\r\n }\r\n\r\n private static convertDataLableSettings(dataview: DataView, objectName: string): VisualDataLabelsSettings {\r\n let dataViewMetadata = dataview.metadata;\r\n let dataLabelsSettings = dataLabelUtils.getDefaultGaugeLabelSettings();\r\n if (dataViewMetadata) {\r\n let objects: DataViewObjects = dataViewMetadata.objects;\r\n if (objects) {\r\n // Handle lables settings\r\n let labelsObj = <DataLabelObject>objects[objectName];\r\n dataLabelUtils.updateLabelSettingsFromLabelsObject(labelsObj, dataLabelsSettings);\r\n }\r\n }\r\n\r\n return dataLabelsSettings;\r\n }\r\n\r\n public static getMetaDataColumn(dataView: DataView) {\r\n if (dataView && dataView.metadata && dataView.metadata.columns) {\r\n for (let i = 0, ilen = dataView.metadata.columns.length; i < ilen; i++) {\r\n let column = dataView.metadata.columns[i];\r\n if (column.isMeasure) {\r\n return column;\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n private initKpiBands() {\r\n if (!this.settings.kpiBands.show)\r\n return;\r\n let kpiArcs = this.kpiArcs = [];\r\n let kpiArcPaths = this.kpiArcPaths = [];\r\n let mainGraphicsContext = this.mainGraphicsContext;\r\n\r\n for (let i = 0; i < 3; i++) {\r\n let arc = d3.svg.arc()\r\n .innerRadius(0)\r\n .outerRadius(0)\r\n .startAngle(0)\r\n .endAngle(0);\r\n\r\n kpiArcs.push(arc);\r\n\r\n let arcPath = mainGraphicsContext.append('path')\r\n .attr(\"d\", arc);\r\n\r\n kpiArcPaths.push(arcPath);\r\n }\r\n }\r\n\r\n private updateKpiBands(radius: number, innerRadiusFactor: number, tString: string, kpiAngleAttr: KpiArcAttributes[]) {\r\n if (!this.settings.kpiBands.show)\r\n return;\r\n\r\n for (let i = 0; i < kpiAngleAttr.length; i++) {\r\n this.kpiArcs[i]\r\n .innerRadius(radius * innerRadiusFactor - (Gauge.KpiBandDistanceFromMainArc + this.settings.kpiBands.thickness))\r\n .outerRadius(radius * innerRadiusFactor - Gauge.KpiBandDistanceFromMainArc)\r\n .startAngle(kpiAngleAttr[i].start)\r\n .endAngle(kpiAngleAttr[i].end);\r\n\r\n this.kpiArcPaths[i]\r\n .attr('fill', kpiAngleAttr[i].fill)\r\n .attr('d', this.kpiArcs[i])\r\n .attr('transform', tString);\r\n }\r\n }\r\n\r\n private removeTargetElements() {\r\n if (this.targetLine) {\r\n this.targetLine.remove();\r\n this.targetText.remove();\r\n this.targetConnector.remove();\r\n this.targetLine = this.targetConnector = this.targetText = null;\r\n }\r\n }\r\n\r\n private getTargetRatio(): number {\r\n let targetSettings = this.targetSettings;\r\n let range = targetSettings.max - targetSettings.min;\r\n if (range !== 0)\r\n return (targetSettings.target - targetSettings.min) / range;\r\n\r\n return 0;\r\n }\r\n\r\n private updateTargetLine(radius: number, innerRadius: number, left, top) {\r\n if (!this.targetLine) {\r\n this.targetLine = this.mainGraphicsContext.append('line');\r\n }\r\n\r\n let angle = this.getTargetRatio() * Math.PI;\r\n\r\n let outY = top - radius * Math.sin(angle);\r\n let outX = left - radius * Math.cos(angle);\r\n\r\n let inY = top - innerRadius * Math.sin(angle);\r\n let inX = left - innerRadius * Math.cos(angle);\r\n\r\n this.targetLine.attr({\r\n x1: inX,\r\n y1: inY,\r\n x2: outX,\r\n y2: outY\r\n });\r\n }\r\n\r\n /** Note: public for testability */\r\n public getAnimatedNumberProperties(radius: number,\r\n innerRadiusFactor: number,\r\n top: number, left: number): AnimatedNumberProperties {\r\n let boxAngle = Math.PI / 4;\r\n let scale = 1;\r\n let innerRadiusOfArc = radius * innerRadiusFactor;\r\n let innerRadiusForTextBoundingBox = innerRadiusOfArc - (this.settings.kpiBands.show\r\n ? (Gauge.KpiBandDistanceFromMainArc + this.settings.kpiBands.thickness)\r\n : 0);\r\n let innerRCos = innerRadiusForTextBoundingBox * Math.cos(boxAngle);\r\n let innerRSin = innerRadiusForTextBoundingBox * Math.sin(boxAngle);\r\n let innerY = top - innerRSin;\r\n let innerX = left - innerRCos;\r\n innerY = innerY * scale;\r\n innerX = innerX * scale;\r\n let animatedNumberWidth = innerRCos * 2;\r\n\r\n let properties: AnimatedNumberProperties = {\r\n transformString: SVGUtil.translate(innerX, innerY),\r\n viewport: { height: innerRSin, width: animatedNumberWidth }\r\n };\r\n return properties;\r\n }\r\n\r\n /** Note: public for testability */\r\n public getGaugeVisualProperties(): GaugeVisualProperties {\r\n let viewport = this.currentViewport;\r\n let margin: IMargin = this.margin;\r\n let width = viewport.width - margin.right - margin.left;\r\n let halfWidth = width / 2;\r\n let height = viewport.height - margin.top - margin.bottom;\r\n let radius = Math.min(halfWidth, height);\r\n let innerRadiusFactor = Gauge.InnerRadiusFactor;\r\n let left = margin.left + halfWidth;\r\n let top = radius + (height - radius) / 2 + margin.top;\r\n let tString = SVGUtil.translate(left, top);\r\n let innerRadiusOfArc = radius * innerRadiusFactor;\r\n\r\n let gaugeData: GaugeVisualProperties = {\r\n radius: radius,\r\n innerRadiusOfArc: innerRadiusOfArc,\r\n left: left,\r\n top: top,\r\n height: height,\r\n width: width,\r\n margin: margin,\r\n transformString: tString,\r\n innerRadiusFactor: innerRadiusFactor\r\n };\r\n\r\n return gaugeData;\r\n }\r\n\r\n /** Note: public for testability */\r\n public drawViewPort(drawOptions: GaugeVisualProperties): void {\r\n debug.assertAnyValue(drawOptions, \"Gauge options\");\r\n\r\n let separation = this.settings.kpiBands.separationRadians;\r\n let innerRadiusFactor = Gauge.InnerRadiusFactor;\r\n\r\n let backgroudArc = this.backgroundArc;\r\n let color = this.color;\r\n\r\n let attrs: KpiArcAttributes[] = [{\r\n fill: color(0),\r\n start: -Math.PI / 2,\r\n end: -Math.PI / 2 + Math.PI / 4 - separation\r\n }, {\r\n fill: color(1),\r\n start: -Math.PI / 2 + Math.PI * 1 / 4 + separation,\r\n end: -Math.PI / 2 + Math.PI * 3 / 4 - separation\r\n }, {\r\n fill: color(2),\r\n start: -Math.PI / 2 + Math.PI * 3 / 4 + separation,\r\n end: Math.PI / 2\r\n }];\r\n\r\n let radius = drawOptions.radius;\r\n let transformString = drawOptions.transformString;\r\n this.updateKpiBands(radius, innerRadiusFactor, transformString, attrs);\r\n\r\n backgroudArc\r\n .innerRadius(radius * innerRadiusFactor)\r\n .outerRadius(radius)\r\n .startAngle(-Math.PI / 2)\r\n .endAngle(Math.PI / 2);\r\n\r\n this.backgroundArcPath\r\n .attr(\"d\", backgroudArc)\r\n .attr(\"transform\", transformString);\r\n\r\n let foregroundArc = this.foregroundArc;\r\n\r\n foregroundArc\r\n .innerRadius(radius * innerRadiusFactor)\r\n .outerRadius(radius)\r\n .startAngle(-Math.PI / 2);\r\n\r\n this.foregroundArcPath\r\n .datum({ endAngle: this.lastAngle })\r\n .attr(\"transform\", transformString)\r\n .attr(\"d\", foregroundArc);\r\n\r\n let innerRadiusOfArc = drawOptions.innerRadiusOfArc;\r\n let left = drawOptions.left;\r\n let top = drawOptions.top;\r\n let margin = drawOptions.margin;\r\n let height = drawOptions.height;\r\n let targetSettings = this.targetSettings;\r\n\r\n if (!this.settings.targetLine.show || targetSettings.target == null) {\r\n this.removeTargetElements();\r\n } else {\r\n if (targetSettings.min > targetSettings.target || targetSettings.max < targetSettings.target) {\r\n this.removeTargetElements();\r\n } else {\r\n this.updateTargetLine(radius, innerRadiusOfArc, left, top);\r\n this.appendTargetTextAlongArc(radius, height, drawOptions.width, margin);\r\n }\r\n }\r\n this.svg.attr('height', this.currentViewport.height).attr('width', this.currentViewport.width);\r\n }\r\n\r\n private createTicks(): string[] {\r\n let settings = this.settings;\r\n let targetSettings = this.targetSettings;\r\n let total = targetSettings.max - targetSettings.min;\r\n let numberOfLabels = settings.labels.count;\r\n let step = total / numberOfLabels;\r\n let arr: string[] = [];\r\n let formatter = this.getFormatter(this.data.dataLabelsSettings, targetSettings.max);\r\n\r\n for (let i = 0; i < numberOfLabels + 1; i++) {\r\n arr.push(formatter.format(targetSettings.min + (i * step)));\r\n }\r\n\r\n return arr;\r\n }\r\n\r\n private updateInternal(suppressAnimations: boolean) {\r\n let height = this.gaugeVisualProperties.height;\r\n let width = this.gaugeVisualProperties.width;\r\n let radius = this.gaugeVisualProperties.radius;\r\n let margin: IMargin = this.margin;\r\n let duration = AnimatorCommon.GetAnimationDuration(this.animator, suppressAnimations);\r\n\r\n let data = this.data;\r\n let lastAngle = this.lastAngle = -Math.PI / 2 + Math.PI * data.percent;\r\n\r\n let ticks = this.createTicks();\r\n\r\n this.foregroundArcPath\r\n .transition()\r\n .ease(this.settings.transition.ease)\r\n .duration(duration)\r\n .call(this.arcTween, [lastAngle, this.foregroundArc]);\r\n\r\n this.appendTextAlongArc(ticks, radius, height, width, margin);\r\n this.updateVisualConfigurations();\r\n this.updateVisualStyles();\r\n if (this.tooltipsEnabled) {\r\n TooltipManager.addTooltip(this.foregroundArcPath, (tooltipEvent: TooltipEvent) => data.tooltipInfo);\r\n TooltipManager.addTooltip(this.backgroundArcPath, (tooltipEvent: TooltipEvent) => data.tooltipInfo);\r\n }\r\n }\r\n\r\n private updateVisualStyles() {\r\n let fillColor: string = this.data.dataLabelsSettings.labelColor || this.style.labelText.color.value;\r\n this.mainGraphicsContext.selectAll('text')\r\n .style({\r\n 'fill': fillColor,\r\n });\r\n }\r\n\r\n private updateVisualConfigurations() {\r\n let configOptions = this.settings;\r\n\r\n this.mainGraphicsContext\r\n .select('line')\r\n .attr({\r\n stroke: configOptions.targetLine.color,\r\n 'stroke-width': configOptions.targetLine.thickness,\r\n });\r\n\r\n this.backgroundArcPath.style('fill', configOptions.arcColors.background);\r\n this.foregroundArcPath.style('fill', configOptions.arcColors.foreground);\r\n }\r\n\r\n private appendTextAlongArc(ticks: string[], radius: number, height: number, width: number, margin: IMargin) {\r\n this.svg.selectAll(Gauge.LabelText.selector).remove();\r\n if (!this.data.dataLabelsSettings.show) return;\r\n\r\n let total = ticks.length;\r\n let divisor = total - 1;\r\n let top = (radius + (height - radius) / 2 + margin.top);\r\n let showMinMaxLabelsOnBottom = this.showMinMaxLabelsOnBottom();\r\n let fontSize = PixelConverter.fromPoint(this.data.dataLabelsSettings.fontSize || NewDataLabelUtils.DefaultLabelFontSizeInPt);\r\n let padding = this.settings.labels.padding;\r\n\r\n for (let count = 0; count < total; count++) {\r\n if (Math.floor(total / 2) === count)\r\n continue; // Skip Middle label, by design\r\n\r\n if (this.showSideNumbersLabelText()) {\r\n\r\n let x = (margin.left + width / 2) - (radius * Math.cos(Math.PI * count / divisor));\r\n let y = top - (radius * Math.sin(Math.PI * count / divisor));\r\n let anchor: string;\r\n let onRight = count * 2 > total;\r\n let onBottom = false;\r\n\r\n if (showMinMaxLabelsOnBottom && (count === 0 || count === total - 1)) {\r\n // If this is a min or max label and we're showing them on the bottom rather than the sides\r\n // Adjust the label display properties to appear under the arc\r\n onBottom = true;\r\n y += padding / 2;\r\n\r\n // Align the labels with the outer edge of the arc\r\n anchor = onRight ? 'end' : 'start';\r\n }\r\n else {\r\n // For all other labels, display around the arc\r\n anchor = onRight ? 'start' : 'end';\r\n x += padding * (onRight ? 1 : -1);\r\n }\r\n\r\n let text = this.mainGraphicsContext\r\n .append('text')\r\n .attr({\r\n 'x': x,\r\n 'y': y,\r\n 'dy': onBottom ? fontSize : 0,\r\n 'class': Gauge.LabelText.class\r\n })\r\n .style({\r\n 'text-anchor': anchor,\r\n 'font-size': fontSize\r\n })\r\n .text(ticks[count])\r\n .append('title').text(ticks[count]);\r\n\r\n if (!onBottom)\r\n this.truncateTextIfNeeded(text, x, onRight);\r\n }\r\n }\r\n }\r\n\r\n private truncateTextIfNeeded(text: D3.Selection, positionX: number, onRight: boolean) {\r\n let availableSpace = (onRight ? this.currentViewport.width - positionX : positionX);\r\n text.call(AxisHelper.LabelLayoutStrategy.clip,\r\n availableSpace,\r\n TextMeasurementService.svgEllipsis);\r\n }\r\n\r\n private getFormatter(dataLabelSettings: VisualDataLabelsSettings, value2?: number): IValueFormatter {\r\n let realValue2 = dataLabelSettings.displayUnits === 0 ? value2 : null;\r\n let formatString: string = valueFormatter.getFormatString(this.data.metadataColumn, Gauge.formatStringProp);\r\n let precision = dataLabelUtils.getLabelPrecision(dataLabelSettings.precision, formatString);\r\n let valueFormatterOptions: ValueFormatterOptions = dataLabelUtils.getOptionsForLabelFormatter(dataLabelSettings, formatString, realValue2, precision);\r\n valueFormatterOptions.formatSingleValues = dataLabelSettings.displayUnits > 0 ? false : true;\r\n return valueFormatter.create(valueFormatterOptions);\r\n }\r\n\r\n private appendTargetTextAlongArc(radius: number, height: number, width: number, margin: IMargin) {\r\n let targetSettings = this.targetSettings;\r\n\r\n let target = targetSettings.target;\r\n let tRatio = this.getTargetRatio();\r\n let top = (radius + (height - radius) / 2 + margin.top);\r\n let flag = tRatio > 0.5;\r\n let padding = this.settings.labels.padding;\r\n let anchor = flag ? 'start' : 'end';\r\n let formatter = this.getFormatter(this.data.dataLabelsSettings, targetSettings.max);\r\n let maxRatio = Math.asin(Gauge.MinDistanceFromBottom / radius) / Math.PI;\r\n\r\n let finalRatio = tRatio < maxRatio || tRatio > (1 - maxRatio)\r\n ? flag\r\n ? 1 - maxRatio\r\n : maxRatio\r\n : tRatio;\r\n\r\n let targetX = (margin.left + width / 2) - ((radius + padding) * Math.cos(Math.PI * finalRatio));\r\n let targetY = top - ((radius + padding) * Math.sin(Math.PI * finalRatio));\r\n\r\n if (!this.targetText) {\r\n this.targetText = this.mainGraphicsContext\r\n .append('text')\r\n .classed(Gauge.TargetText.class, true);\r\n }\r\n\r\n this.targetText\r\n .attr({\r\n 'x': targetX,\r\n 'y': targetY,\r\n })\r\n .style({\r\n 'text-anchor': anchor,\r\n 'display': this.showTargetLabel ? '' : 'none',\r\n 'font-size': this.style.labelText.fontSize\r\n })\r\n .text(formatter.format(target));\r\n\r\n this.truncateTextIfNeeded(this.targetText, targetX, flag);\r\n this.targetText.call(tooltipUtils.tooltipUpdate, [formatter.format(target)]);\r\n\r\n if (!this.targetConnector) {\r\n this.targetConnector = this.mainGraphicsContext\r\n .append('line')\r\n .classed(Gauge.TargetConnector.class, true);\r\n }\r\n\r\n // Hide the target connector if the text is going to align with the target line in the arc\r\n // It should only be shown if the target text is displaced (ex. when the target is very close to min/max)\r\n if (tRatio === finalRatio) {\r\n this.targetConnector.style('display', 'none');\r\n }\r\n else {\r\n this.targetConnector\r\n .attr({\r\n 'x1': (margin.left + width / 2) - (radius * Math.cos(Math.PI * tRatio)),\r\n 'y1': top - (radius * Math.sin(Math.PI * tRatio)),\r\n 'x2': targetX,\r\n 'y2': targetY\r\n })\r\n .style({\r\n 'stroke-width': this.settings.targetLine.thickness,\r\n 'stroke': this.settings.targetLine.color,\r\n 'display': ''\r\n });\r\n }\r\n }\r\n\r\n private arcTween(transition, arr): void {\r\n transition.attrTween('d', (d) => {\r\n let interpolate = d3.interpolate(d.endAngle, arr[0]);\r\n return (t) => {\r\n d.endAngle = interpolate(t);\r\n return arr[1](d);\r\n };\r\n });\r\n }\r\n\r\n private showMinMaxLabelsOnBottom(): boolean {\r\n // More vertical space, put labels on bottom\r\n if (this.currentViewport.height > this.currentViewport.width)\r\n return true;\r\n\r\n // We want to show the start/end ticks on the bottom when there\r\n // is insufficient space for the left and right label text\r\n if (this.data && this.gaugeVisualProperties) {\r\n let ticks = this.createTicks();\r\n let visualWhitespace = (this.currentViewport.width - (this.gaugeVisualProperties.radius * 2)) / 2;\r\n let maxLabelWidth = visualWhitespace - this.settings.labels.padding;\r\n let textProperties: TextProperties = TextMeasurementService.getMeasurementProperties($(this.svg.node()));\r\n textProperties.fontSize = PixelConverter.fromPoint(this.data.dataLabelsSettings.fontSize || NewDataLabelUtils.DefaultLabelFontSizeInPt);\r\n\r\n let width: number;\r\n for (let tickValue of [ticks[0], ticks[ticks.length - 1]]) {\r\n textProperties.text = tickValue;\r\n width = TextMeasurementService.measureSvgTextWidth(textProperties);\r\n if (width > maxLabelWidth)\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n private setMargins(): void {\r\n if (this.gaugeSmallViewPortProperties) {\r\n if (this.gaugeSmallViewPortProperties.smallGaugeMarginsOnSmallViewPort && (this.currentViewport.height < this.gaugeSmallViewPortProperties.MinHeightGaugeSideNumbersVisible)) {\r\n let margins = this.gaugeSmallViewPortProperties.GaugeMarginsOnSmallViewPort;\r\n this.margin = { top: margins, bottom: margins, left: margins, right: margins };\r\n return;\r\n }\r\n }\r\n\r\n this.margin = {\r\n top: Gauge.DefaultTopBottomMargin,\r\n bottom: Gauge.DefaultTopBottomMargin,\r\n left: Gauge.DefaultLeftRightMargin,\r\n right: Gauge.DefaultLeftRightMargin\r\n };\r\n\r\n // If we're not showing side labels, reduce the margin so that the gauge has more room to display\r\n if (!this.showSideNumbersLabelText() || this.showMinMaxLabelsOnBottom()) {\r\n let targetSettings = this.targetSettings;\r\n\r\n if (this.showTargetLabel) {\r\n // If we're showing the target label, only reduce the margin on the side that doesn't have a target label\r\n let tRatio = (targetSettings.target - targetSettings.min) / (targetSettings.max - targetSettings.min);\r\n\r\n if (tRatio > 0.5)\r\n this.margin.left = Gauge.ReducedLeftRightMargin;\r\n else\r\n this.margin.right = Gauge.ReducedLeftRightMargin;\r\n }\r\n else {\r\n // Otherwise, reduce both margins\r\n this.margin.left = this.margin.right = Gauge.ReducedLeftRightMargin;\r\n }\r\n }\r\n\r\n let fontSize = 0;\r\n if (this.data && this.data.dataLabelsSettings && this.data.dataLabelsSettings.fontSize && this.data.dataLabelsSettings.fontSize >= NewDataLabelUtils.DefaultLabelFontSizeInPt) {\r\n fontSize = PixelConverter.fromPointToPixel(this.data.dataLabelsSettings.fontSize - NewDataLabelUtils.DefaultLabelFontSizeInPt);\r\n }\r\n\r\n if (fontSize !== 0) {\r\n this.margin.bottom += fontSize;\r\n this.margin.left += fontSize;\r\n this.margin.right += fontSize;\r\n }\r\n }\r\n\r\n private showSideNumbersLabelText(): boolean {\r\n if (this.gaugeSmallViewPortProperties) {\r\n if (this.gaugeSmallViewPortProperties.hideGaugeSideNumbersOnSmallViewPort) {\r\n if (this.currentViewport.height < this.gaugeSmallViewPortProperties.MinHeightGaugeSideNumbersVisible) {\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n }\r\n}\r\n","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n import Utility = jsCommon.Utility;\r\n\r\n export interface ImageDataViewObjects extends DataViewObjects {\r\n general: ImageDataViewObject;\r\n imageScaling: ImageScalingDataViewObject;\r\n }\r\n\r\n export interface ImageDataViewObject extends DataViewObject {\r\n imageUrl: string;\r\n }\r\n\r\n export interface ImageScalingDataViewObject extends DataViewObject {\r\n imageScalingType: string;\r\n }\r\n\r\n export class ImageVisual implements IVisual {\r\n\r\n private element: JQuery;\r\n private imageBackgroundElement: JQuery;\r\n private scalingType: string = imageScalingType.normal;\r\n\r\n public init(options: VisualInitOptions) {\r\n this.element = options.element;\r\n }\r\n\r\n public enumerateObjectInstances(options: EnumerateVisualObjectInstancesOptions): VisualObjectInstance[] {\r\n switch (options.objectName) {\r\n case 'imageScaling':\r\n return this.enumerateImageScaling();\r\n }\r\n return null;\r\n }\r\n\r\n private enumerateImageScaling(): VisualObjectInstance[] {\r\n return [{\r\n selector: null,\r\n objectName: 'imageScaling',\r\n properties: {\r\n imageScalingType: this.scalingType,\r\n }\r\n }];\r\n }\r\n\r\n public update(options: VisualUpdateOptions): void {\r\n let dataViews = options.dataViews;\r\n if (!dataViews || dataViews.length === 0)\r\n return;\r\n\r\n let objects = <ImageDataViewObjects>dataViews[0].metadata.objects;\r\n if (!objects || !objects.general)\r\n return;\r\n\r\n let div: JQuery = this.imageBackgroundElement;\r\n if (!div) {\r\n div = $(\"<div class='imageBackground' />\");\r\n this.imageBackgroundElement = div;\r\n this.imageBackgroundElement.appendTo(this.element);\r\n }\r\n\r\n let viewport = options.viewport;\r\n div.css('height', viewport.height);\r\n\r\n if (objects.imageScaling)\r\n this.scalingType = objects.imageScaling.imageScalingType.toString();\r\n else\r\n this.scalingType = imageScalingType.normal;\r\n\r\n let imageUrl = objects.general.imageUrl;\r\n if (Utility.isValidImageDataUrl(imageUrl))\r\n div.css(\"backgroundImage\", \"url(\" + imageUrl + \")\");\r\n\r\n if (this.scalingType === imageScalingType.fit)\r\n div.css(\"background-size\", \"100% 100%\");\r\n else if (this.scalingType === imageScalingType.fill)\r\n div.css(\"background-size\", \"cover\");\r\n else\r\n div.css(\"background-size\", \"contain\");\r\n }\r\n }\r\n} ","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\nmodule powerbi.visuals {\r\n\r\n export interface KPIStatusWithHistoryData {\r\n dataPoints: KPIStatusWithHistoryDataPoint[];\r\n directionType: string;\r\n goals: number[];\r\n formattedGoalString: string;\r\n actual: number;\r\n targetExists: boolean;\r\n historyExists: boolean;\r\n indicatorExists: boolean;\r\n trendExists: boolean;\r\n formattedValue: string;\r\n showGoal: boolean;\r\n showDistanceFromGoal: boolean;\r\n showTrendLine: boolean;\r\n textSize: number;\r\n }\r\n\r\n export interface KPIStatusWithHistoryDataPoint {\r\n x: number;\r\n y: number;\r\n actual: number;\r\n goals: number[];\r\n }\r\n\r\n export class KPIStatusWithHistory implements IVisual {\r\n\r\n public static directionTypeStringProp: DataViewObjectPropertyIdentifier = { objectName: 'status', propertyName: 'direction' };\r\n public static showKPIGoal: DataViewObjectPropertyIdentifier = { objectName: 'goals', propertyName: 'showGoal' };\r\n public static showKPIDistance: DataViewObjectPropertyIdentifier = { objectName: 'goals', propertyName: 'showDistance' };\r\n public static showKPITrendLine: DataViewObjectPropertyIdentifier = { objectName: 'trendline', propertyName: 'show' };\r\n public static indicatorDisplayUnitsProp: DataViewObjectPropertyIdentifier = { objectName: 'indicator', propertyName: 'indicatorDisplayUnits' };\r\n public static indicatorPrecisionProp: DataViewObjectPropertyIdentifier = { objectName: 'indicator', propertyName: 'indicatorPrecision' };\r\n public static indicatorTextSize: DataViewObjectPropertyIdentifier = { objectName: 'indicator', propertyName: 'fontSize' };\r\n\r\n public static status = { INCREASE: \"increase\", DROP: \"drop\", IN_BETWEEN: \"in-between\", NOGOAL: \"no-goal\" };\r\n public static textStatusColor = { RED: \"#ee0000\", GREEN: \"#3bb44a\", YELLOW: \"#f2b311\", NOGOAL: \"#212121\" };\r\n public static statusColor = { RED: \"#fef0f0\", GREEN: \"#ebf7ec\", YELLOW: \"#fdf9e7\", NOGOAL: \"#f2f2f2\" };\r\n public static statusBandingType = { Below: \"BELOW\", Above: \"ABOVE\" };\r\n public static actualTextConsts = { VERTICAL_OFFSET_FROM_HALF_HEIGHT: 20, FONT_WIDTH_FACTOR: 14, RIGHT_MARGIN: 10 };\r\n\r\n public static trendAreaFilePercentage = 0.34;\r\n\r\n private svg: D3.Selection;\r\n private dataView: DataView;\r\n private mainGroupElement: D3.Selection;\r\n private mainRect: D3.Selection;\r\n private kpiActualText: D3.Selection;\r\n private absoluteGoalDistanceText: D3.Selection;\r\n private areaFill: D3.Selection;\r\n private host: IVisualHostServices;\r\n\r\n private static getLocalizedString: (stringId: string) => string;\r\n\r\n private static defaultCardFormatSetting: CardFormatSetting;\r\n private static defaultLabelSettings;\r\n\r\n public init(options: VisualInitOptions): void {\r\n KPIStatusWithHistory.getLocalizedString = options.host.getLocalizedString;\r\n this.svg = d3.select(options.element.get(0)).append('svg');\r\n let mainGroupElement = this.mainGroupElement = this.svg.append('g').classed('kpiVisual', true);\r\n this.mainRect = mainGroupElement.append(\"rect\");\r\n this.areaFill = mainGroupElement.append(\"path\");\r\n this.kpiActualText = mainGroupElement.append(\"text\");\r\n this.absoluteGoalDistanceText = mainGroupElement.append(\"text\").classed('goalText', true);\r\n this.host = options.host;\r\n }\r\n\r\n public update(options: VisualUpdateOptions) {\r\n if (!options.dataViews || !options.dataViews[0]) return;\r\n let dataView = this.dataView = options.dataViews[0];\r\n let viewport = options.viewport;\r\n \r\n // We must have at least one measure\r\n if ((!dataView.categorical || !dataView.categorical.values || dataView.categorical.values.length < 1) &&\r\n (!dataView.categorical || !dataView.categorical.categories || dataView.categorical.categories.length < 1)) {\r\n this.svg.attr(\"visibility\", \"hidden\");\r\n return;\r\n }\r\n this.svg.attr(\"visibility\", \"visible\");\r\n\r\n let kpiViewModel: KPIStatusWithHistoryData = KPIStatusWithHistory.converter(\r\n dataView,\r\n viewport,\r\n KPIStatusWithHistory.getProp_KPIDirection(dataView));\r\n\r\n this.render(kpiViewModel, viewport);\r\n }\r\n\r\n private render(kpiViewModel: KPIStatusWithHistoryData, viewport: IViewport) {\r\n\r\n this.setShowDataMissingWarning(!(kpiViewModel.indicatorExists && kpiViewModel.trendExists));\r\n\r\n if (kpiViewModel.dataPoints.length === 0 || !kpiViewModel.historyExists || !kpiViewModel.indicatorExists || !kpiViewModel.trendExists) {\r\n this.areaFill.attr(\"visibility\", \"hidden\");\r\n this.svg.attr(\"visibility\", \"hidden\");\r\n return;\r\n }\r\n\r\n this.svg.attr({\r\n 'height': viewport.height,\r\n 'width': viewport.width\r\n });\r\n\r\n let status = KPIStatusWithHistory.status.NOGOAL;\r\n if (kpiViewModel.targetExists && kpiViewModel.indicatorExists && kpiViewModel.trendExists) {\r\n status = GetStatus(kpiViewModel.actual, kpiViewModel.goals, kpiViewModel.directionType);\r\n }\r\n\r\n let actualText = kpiViewModel.formattedValue;\r\n\r\n this.kpiActualText\r\n .attr(\"x\", viewport.width * 0.5)\r\n .attr(\"y\", viewport.height * 0.5 + KPIStatusWithHistory.actualTextConsts.VERTICAL_OFFSET_FROM_HALF_HEIGHT)\r\n .attr(\"fill\", GetTextColorByStatus(status))\r\n .attr(\"style\", \"font-family:wf_standard-font_light,helvetica,arial,sans-serif;font-size:\" + kpiViewModel.textSize + \"px\")\r\n .attr(\"text-anchor\", \"middle\")\r\n .text(actualText);\r\n\r\n let shownGoalString = kpiViewModel.showGoal ? kpiViewModel.formattedGoalString + \" \" : \"\";\r\n let shownDistanceFromGoalString = kpiViewModel.showDistanceFromGoal ? getDistanceFromGoalInPercentageString(kpiViewModel.actual, kpiViewModel.goals, kpiViewModel.directionType) : \"\";\r\n\r\n this.absoluteGoalDistanceText\r\n .attr(\"x\", viewport.width * 0.5)\r\n .attr(\"y\", viewport.height * 0.5 + 2.2 * KPIStatusWithHistory.actualTextConsts.VERTICAL_OFFSET_FROM_HALF_HEIGHT)\r\n .text(shownGoalString + shownDistanceFromGoalString);\r\n\r\n if (kpiViewModel.showTrendLine) {\r\n let area = d3.svg.area()\r\n .x(function (d) { return d.x; })\r\n .y0(viewport.height)\r\n .y1(function (d) { return d.y; });\r\n\r\n this.areaFill\r\n .attr(\"d\", area(kpiViewModel.dataPoints))\r\n .attr(\"stroke\", \"none\")\r\n .attr(\"visibility\", \"visible\")\r\n .attr(\"fill\", GetColorByStatus(status));\r\n } else {\r\n this.areaFill.attr(\"visibility\", \"hidden\");\r\n }\r\n\r\n }\r\n\r\n private setShowDataMissingWarning(show: boolean) {\r\n this.host.setWarnings(show ? [new VisualKPIDataMissingWarning()] : []);\r\n }\r\n\r\n private static getDefaultFormatSettings(): CardFormatSetting {\r\n return {\r\n labelSettings: dataLabelUtils.getDefaultLabelSettings(true, Card.DefaultStyle.value.color),\r\n textSize: 23,\r\n wordWrap: false\r\n };\r\n }\r\n\r\n private static getMetaDataColumn(dataView: DataView): DataViewMetadataColumn {\r\n if (dataView && dataView.metadata && dataView.metadata.columns) {\r\n for (let column of dataView.metadata.columns) {\r\n if (column.isMeasure) {\r\n return column;\r\n }\r\n }\r\n }\r\n }\r\n\r\n private static getFormatString(column: DataViewMetadataColumn): string {\r\n debug.assertAnyValue(column, 'column');\r\n return valueFormatter.getFormatString(column, AnimatedText.formatStringProp);\r\n }\r\n\r\n private static getProp_Show_KPIGoal(dataView: DataView) {\r\n if (dataView && dataView.metadata) {\r\n return DataViewObjects.getValue<boolean>(dataView.metadata.objects, KPIStatusWithHistory.showKPIGoal, true);\r\n }\r\n\r\n return true;\r\n }\r\n\r\n private static getProp_Show_KPITrendLine(dataView: DataView) {\r\n if (dataView && dataView.metadata) {\r\n return DataViewObjects.getValue<boolean>(dataView.metadata.objects, KPIStatusWithHistory.showKPITrendLine, true);\r\n }\r\n\r\n return true;\r\n }\r\n\r\n private static getProp_Show_KPIDistance(dataView: DataView) {\r\n if (dataView && dataView.metadata) {\r\n return DataViewObjects.getValue<boolean>(dataView.metadata.objects, KPIStatusWithHistory.showKPIDistance, true);\r\n }\r\n\r\n return true;\r\n }\r\n\r\n private static getProp_KPIDirection(dataView: DataView) {\r\n if (dataView && dataView.metadata) {\r\n return DataViewObjects.getValue<string>(dataView.metadata.objects, KPIStatusWithHistory.directionTypeStringProp, kpiDirection.positive);\r\n }\r\n\r\n return kpiDirection.positive;\r\n }\r\n\r\n private static getProp_Indicator_DisplayUnits(dataView: DataView) {\r\n KPIStatusWithHistory.initDefaultLabelSettings();\r\n if (dataView && dataView.metadata) {\r\n return DataViewObjects.getValue<number>(dataView.metadata.objects, KPIStatusWithHistory.indicatorDisplayUnitsProp, KPIStatusWithHistory.defaultLabelSettings.displayUnits);\r\n }\r\n\r\n return KPIStatusWithHistory.defaultLabelSettings.displayUnits;\r\n }\r\n\r\n private static getProp_Indicator_Precision(dataView: DataView) {\r\n KPIStatusWithHistory.initDefaultLabelSettings();\r\n if (dataView && dataView.metadata) {\r\n return DataViewObjects.getValue<number>(dataView.metadata.objects, KPIStatusWithHistory.indicatorPrecisionProp, KPIStatusWithHistory.defaultLabelSettings.precision);\r\n }\r\n\r\n return KPIStatusWithHistory.defaultLabelSettings.precision;\r\n }\r\n\r\n private static getProp_Indicator_TextSize(dataView: DataView) {\r\n KPIStatusWithHistory.initDefaultLabelSettings();\r\n if (dataView && dataView.metadata) {\r\n return DataViewObjects.getValue<number>(dataView.metadata.objects, KPIStatusWithHistory.indicatorTextSize, KPIStatusWithHistory.defaultCardFormatSetting.textSize);\r\n }\r\n\r\n return KPIStatusWithHistory.defaultCardFormatSetting.textSize;\r\n }\r\n\r\n private static initDefaultLabelSettings() {\r\n if (!KPIStatusWithHistory.defaultCardFormatSetting) {\r\n KPIStatusWithHistory.defaultCardFormatSetting = KPIStatusWithHistory.getDefaultFormatSettings();\r\n KPIStatusWithHistory.defaultLabelSettings = KPIStatusWithHistory.defaultCardFormatSetting.labelSettings;\r\n }\r\n }\r\n\r\n private static getFormattedValue(metaDataColumn: DataViewMetadataColumn, theValue: number, precision: number, displayUnits: number): string {\r\n let isDefaultDisplayUnit = displayUnits === 0;\r\n let formatter = valueFormatter.create({\r\n format: KPIStatusWithHistory.getFormatString(metaDataColumn),\r\n value: displayUnits,\r\n precision: precision,\r\n displayUnitSystemType: DisplayUnitSystemType.WholeUnits, // keeps this.displayUnitSystemType as the displayUnitSystemType unless the user changed the displayUnits or the precision\r\n formatSingleValues: isDefaultDisplayUnit ? true : false,\r\n allowFormatBeautification: true,\r\n columnType: metaDataColumn ? metaDataColumn.type : undefined\r\n });\r\n return formatter.format(theValue);\r\n }\r\n\r\n private static getFormattedGoalString(metaDataColumn: DataViewMetadataColumn, goals: any[], precision: number, displayUnits: number): string {\r\n if (!goals || goals.length === 0) {\r\n return \"\";\r\n }\r\n\r\n let goalsString = KPIStatusWithHistory.getLocalizedString('Visual_KPI_Goal_Title') + \": \" + KPIStatusWithHistory.getFormattedValue(metaDataColumn, goals[0], precision, displayUnits);\r\n\r\n if (goals.length === 2) {\r\n goalsString += \", \" + KPIStatusWithHistory.getFormattedValue(metaDataColumn, goals[1], precision, displayUnits);\r\n }\r\n\r\n return goalsString;\r\n }\r\n\r\n public static converter(dataView: DataView, viewPort: powerbi.IViewport, directionType: string): KPIStatusWithHistoryData {\r\n let dataPoints: KPIStatusWithHistoryDataPoint[] = [];\r\n let catDv: DataViewCategorical = dataView.categorical;\r\n let metaDataColumn = KPIStatusWithHistory.getMetaDataColumn(dataView);\r\n let formattedGoalString = \"\";\r\n let formattedValue = \"\";\r\n let targetExists = false;\r\n let indicatorExists = false;\r\n let trendExists = false;\r\n\r\n let historyExists = true;\r\n if (!dataView.categorical.categories) {\r\n historyExists = false;\r\n }\r\n\r\n let values = catDv.values;\r\n\r\n let columns = dataView.metadata.columns;\r\n\r\n for (let column of columns) {\r\n if (DataRoleHelper.hasRole(column, 'Indicator')) {\r\n indicatorExists = true;\r\n }\r\n\r\n if (DataRoleHelper.hasRole(column, 'TrendLine')) {\r\n trendExists = true;\r\n }\r\n }\r\n\r\n if (!indicatorExists || !trendExists || !values || values.length === 0 || !values[0].values || !dataView.categorical.values) {\r\n return {\r\n dataPoints: dataPoints,\r\n directionType: directionType,\r\n actual: 0,\r\n goals: [],\r\n formattedGoalString,\r\n targetExists: targetExists,\r\n historyExists: historyExists,\r\n indicatorExists,\r\n trendExists,\r\n formattedValue,\r\n showGoal: false,\r\n showDistanceFromGoal: false,\r\n showTrendLine: false,\r\n textSize: 0\r\n };\r\n }\r\n\r\n var category, categoryValues;\r\n if (historyExists) {\r\n category = catDv.categories[0]; // This only works if we have a category axis\r\n categoryValues = category.values;\r\n }\r\n\r\n let historyActualData = [];\r\n let historyGoalData = [];\r\n\r\n let indicatorColumns: DataViewValueColumn[] = KPIStatusWithHistory.getColumnsByRole(values, \"Indicator\");\r\n\r\n let goalColumns: DataViewValueColumn[] = KPIStatusWithHistory.getColumnsByRole(values, \"Goal\");\r\n\r\n if (goalColumns.length > 0) {\r\n targetExists = true;\r\n }\r\n\r\n let actualValue;\r\n\r\n for (let i = 0, len = values[0].values.length; i < len; i++) {\r\n\r\n actualValue = indicatorColumns[0].values[i];\r\n\r\n let goals = [];\r\n\r\n for (let goalCnt = 0; goalCnt < goalColumns.length; goalCnt++) {\r\n goals.push(goalColumns[goalCnt].values[i]);\r\n }\r\n\r\n historyGoalData.push(goals);\r\n\r\n historyActualData.push(actualValue);\r\n }\r\n\r\n let maxActualData = Math.max.apply(Math, historyActualData);\r\n let minActualData = Math.min.apply(Math, historyActualData);\r\n let areaMaxHight = viewPort.height * KPIStatusWithHistory.trendAreaFilePercentage;\r\n\r\n let precision = KPIStatusWithHistory.getProp_Indicator_Precision(dataView);\r\n let displayUnits = KPIStatusWithHistory.getProp_Indicator_DisplayUnits(dataView);\r\n\r\n for (let i = 0; i < historyActualData.length; i++) {\r\n let yPos = areaMaxHight * (historyActualData[i] - minActualData) / (maxActualData - minActualData);\r\n\r\n let selectorId = null;\r\n if (historyExists) {\r\n selectorId = SelectionId.createWithId(category.identity[i]).getSelector();\r\n }\r\n\r\n dataPoints.push({\r\n x: i * viewPort.width / (historyActualData.length - 1),\r\n y: viewPort.height - yPos,\r\n actual: historyActualData[i],\r\n goals: historyGoalData[i],\r\n });\r\n }\r\n\r\n var actual, goals;\r\n if (dataPoints.length > 0) {\r\n actual = dataPoints[dataPoints.length - 1].actual;\r\n goals = dataPoints[dataPoints.length - 1].goals;\r\n }\r\n\r\n if (dataPoints.length === 1) {\r\n historyExists = false;\r\n }\r\n\r\n formattedValue = KPIStatusWithHistory.getFormattedValue(metaDataColumn, actual, precision, displayUnits);\r\n\r\n formattedGoalString = KPIStatusWithHistory.getFormattedGoalString(metaDataColumn, goals, precision, displayUnits);\r\n\r\n let showGoal = KPIStatusWithHistory.getProp_Show_KPIGoal(dataView);\r\n\r\n let showDistanceFromGoal = KPIStatusWithHistory.getProp_Show_KPIDistance(dataView);\r\n\r\n let showTrendLine = KPIStatusWithHistory.getProp_Show_KPITrendLine(dataView);\r\n\r\n let textSize = KPIStatusWithHistory.getProp_Indicator_TextSize(dataView);\r\n\r\n return {\r\n dataPoints: dataPoints,\r\n directionType: directionType,\r\n actual: actual,\r\n goals: goals,\r\n formattedGoalString,\r\n targetExists: targetExists,\r\n historyExists: historyExists,\r\n indicatorExists,\r\n trendExists,\r\n formattedValue,\r\n showGoal,\r\n showDistanceFromGoal,\r\n showTrendLine,\r\n textSize: textSize\r\n };\r\n }\r\n\r\n public static getColumnsByRole(values: DataViewValueColumns, roleString: string): DataViewValueColumn[] {\r\n let retval: DataViewValueColumn[] = [];\r\n\r\n for (let i = 0; i < values.length; i++) {\r\n if (DataRoleHelper.hasRole(values[i].source, roleString)) {\r\n retval.push(values[i]);\r\n }\r\n }\r\n\r\n return retval;\r\n }\r\n\r\n public enumerateObjectInstances(options: EnumerateVisualObjectInstancesOptions): VisualObjectInstance[] {\r\n let instances: VisualObjectInstance[] = [];\r\n let dataView = this.dataView;\r\n switch (options.objectName) {\r\n case 'indicator':\r\n instances.push({\r\n selector: null,\r\n objectName: 'indicator',\r\n properties: {\r\n indicatorDisplayUnits: KPIStatusWithHistory.getProp_Indicator_DisplayUnits(dataView),\r\n indicatorPrecision: KPIStatusWithHistory.getProp_Indicator_Precision(dataView),\r\n fontSize: KPIStatusWithHistory.getProp_Indicator_TextSize(dataView)\r\n }\r\n });\r\n case 'trendline':\r\n instances.push({\r\n selector: null,\r\n objectName: 'trendline',\r\n properties: {\r\n show: KPIStatusWithHistory.getProp_Show_KPITrendLine(dataView)\r\n }\r\n });\r\n case 'goals':\r\n instances.push({\r\n selector: null,\r\n objectName: 'goals',\r\n properties: {\r\n showGoal: KPIStatusWithHistory.getProp_Show_KPIGoal(dataView),\r\n showDistance: KPIStatusWithHistory.getProp_Show_KPIDistance(dataView)\r\n }\r\n });\r\n case 'status':\r\n instances.push({\r\n selector: null,\r\n objectName: 'status',\r\n properties: {\r\n direction: KPIStatusWithHistory.getProp_KPIDirection(dataView)\r\n }\r\n });\r\n }\r\n return instances;\r\n }\r\n\r\n public destroy(): void {\r\n this.svg = null;\r\n }\r\n }\r\n\r\n function GetStatus(actual, goals: any[], directionType) {\r\n if (!goals || goals.length === 0) {\r\n return KPIStatusWithHistory.status.NOGOAL;\r\n }\r\n\r\n let maxGoal, minGoal;\r\n\r\n if (goals.length === 2) {\r\n maxGoal = Math.max.apply(Math, goals);\r\n minGoal = Math.min.apply(Math, goals);\r\n\r\n if (actual >= minGoal && actual <= maxGoal) {\r\n return KPIStatusWithHistory.status.IN_BETWEEN;\r\n }\r\n }\r\n else {\r\n maxGoal = goals[0];\r\n minGoal = goals[0];\r\n }\r\n\r\n switch (directionType) {\r\n case kpiDirection.positive:\r\n if (actual < minGoal) {\r\n return KPIStatusWithHistory.status.DROP;\r\n }\r\n break;\r\n\r\n case kpiDirection.negative:\r\n if (actual > maxGoal) {\r\n return KPIStatusWithHistory.status.DROP;\r\n }\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n\r\n return KPIStatusWithHistory.status.INCREASE;\r\n }\r\n\r\n function getDistanceFromGoalInPercentageString(actual, goals: any[], directionType) {\r\n if (!goals || goals.length !== 1 || goals[0] === 0) {\r\n return \"\";\r\n }\r\n\r\n let sign = \"+\";\r\n let distance;\r\n\r\n let goal: number = goals[0];\r\n\r\n distance = Math.abs(actual - goal);\r\n\r\n switch (directionType) {\r\n case kpiDirection.positive:\r\n if (actual < goal) {\r\n sign = \"-\";\r\n }\r\n break;\r\n\r\n case kpiDirection.negative:\r\n if (actual > goal) {\r\n sign = \"-\";\r\n }\r\n break;\r\n }\r\n\r\n let percent = Number((100 * distance / goal).toFixed(2));\r\n\r\n return \"(\" + sign + percent + \"%)\";\r\n }\r\n\r\n function GetColorByStatus(status) {\r\n switch (status) {\r\n case KPIStatusWithHistory.status.NOGOAL:\r\n return KPIStatusWithHistory.statusColor.NOGOAL;\r\n\r\n case KPIStatusWithHistory.status.INCREASE:\r\n return KPIStatusWithHistory.statusColor.GREEN;\r\n\r\n case KPIStatusWithHistory.status.IN_BETWEEN:\r\n return KPIStatusWithHistory.statusColor.YELLOW;\r\n\r\n case KPIStatusWithHistory.status.DROP:\r\n return KPIStatusWithHistory.statusColor.RED;\r\n }\r\n }\r\n\r\n function GetTextColorByStatus(status) {\r\n switch (status) {\r\n case KPIStatusWithHistory.status.NOGOAL:\r\n return KPIStatusWithHistory.textStatusColor.NOGOAL;\r\n\r\n case KPIStatusWithHistory.status.INCREASE:\r\n return KPIStatusWithHistory.textStatusColor.GREEN;\r\n\r\n case KPIStatusWithHistory.status.IN_BETWEEN:\r\n return KPIStatusWithHistory.textStatusColor.YELLOW;\r\n\r\n case KPIStatusWithHistory.status.DROP:\r\n return KPIStatusWithHistory.textStatusColor.RED;\r\n }\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n import EnumExtensions = jsCommon.EnumExtensions;\r\n import ClassAndSelector = jsCommon.CssConstants.ClassAndSelector;\r\n import createClassAndSelector = jsCommon.CssConstants.createClassAndSelector;\r\n import PixelConverter = jsCommon.PixelConverter;\r\n\r\n export interface LineChartConstructorOptions extends CartesianVisualConstructorOptions {\r\n chartType?: LineChartType;\r\n lineChartLabelDensityEnabled?: boolean;\r\n }\r\n\r\n export interface LineChartDataLabelsSettings extends PointDataLabelsSettings {\r\n labelDensity: number;\r\n }\r\n\r\n export interface ILineChartConfiguration {\r\n xAxisProperties: IAxisProperties;\r\n yAxisProperties: IAxisProperties;\r\n margin: any;\r\n }\r\n\r\n export interface LineChartCategoriesData extends LineChartDataPoint { }\r\n\r\n export interface LineChartData extends CartesianData {\r\n series: LineChartSeries[];\r\n isScalar?: boolean;\r\n dataLabelsSettings: LineChartDataLabelsSettings;\r\n axesLabels: ChartAxesLabels;\r\n hasDynamicSeries?: boolean;\r\n defaultSeriesColor?: string;\r\n categoryData?: LineChartCategoriesData[];\r\n }\r\n\r\n export interface LineChartSeries extends CartesianSeries, SelectableDataPoint {\r\n displayName: string;\r\n key: string;\r\n lineIndex: number;\r\n color: string;\r\n xCol: DataViewMetadataColumn;\r\n yCol: DataViewMetadataColumn;\r\n data: LineChartDataPoint[];\r\n labelSettings: LineChartDataLabelsSettings;\r\n }\r\n\r\n export interface LineChartDataPoint extends CartesianDataPoint, TooltipEnabledDataPoint, SelectableDataPoint, LabelEnabledDataPoint {\r\n value: number;\r\n categoryIndex: number;\r\n seriesIndex: number;\r\n key: string;\r\n labelSettings: LineChartDataLabelsSettings;\r\n pointColor?: string;\r\n stackedValue?: number;\r\n weight?: number;\r\n }\r\n\r\n export interface HoverLineDataPoint {\r\n color: string;\r\n label: string;\r\n category: string;\r\n measure: any;\r\n value: number;\r\n stackedValue: number;\r\n }\r\n\r\n export const enum LineChartType {\r\n default = 1 << 0,\r\n area = 1 << 1,\r\n smooth = 1 << 2,\r\n lineShadow = 1 << 3,\r\n stackedArea = 1 << 4\r\n }\r\n\r\n const enum LineChartRelativePosition {\r\n none,\r\n equal,\r\n lesser,\r\n greater,\r\n };\r\n\r\n /** \r\n * Renders a data series as a line visual.\r\n */\r\n export class LineChart implements ICartesianVisual {\r\n private static ClassName = 'lineChart';\r\n private static MainGraphicsContextClassName = 'mainGraphicsContext';\r\n private static CategorySelector: ClassAndSelector = createClassAndSelector('cat');\r\n private static CategoryValuePoint: ClassAndSelector = createClassAndSelector('dot');\r\n private static CategoryPointSelector: ClassAndSelector = createClassAndSelector('point');\r\n private static CategoryAreaSelector: ClassAndSelector = createClassAndSelector('catArea');\r\n private static HoverLineCircleDot: ClassAndSelector = createClassAndSelector('circle-item');\r\n private static PointRadius = 5;\r\n private static CircleRadius = 4;\r\n private static PathElementName = 'path';\r\n private static CircleElementName = 'circle';\r\n private static CircleClassName = 'selection-circle';\r\n private static LineElementName = 'line';\r\n private static RectOverlayName = 'rect';\r\n private static ScalarOuterPadding = 10;\r\n public static AreaFillOpacity = 0.4;\r\n public static DimmedAreaFillOpacity = 0.2;\r\n\r\n private isInteractiveChart: boolean;\r\n private isScrollable: boolean;\r\n private tooltipsEnabled: boolean;\r\n\r\n private element: JQuery;\r\n private cartesainSVG: D3.Selection;\r\n private mainGraphicsContext: D3.Selection;\r\n private mainGraphicsSVG: D3.Selection;\r\n private hoverLineContext: D3.Selection;\r\n private options: CartesianVisualInitOptions;\r\n private dataViewCat: DataViewCategorical;\r\n\r\n private colors: IDataColorPalette;\r\n private host: IVisualHostServices;\r\n private data: LineChartData;\r\n private clippedData: LineChartData;\r\n private lineType: LineChartType;\r\n private cartesianVisualHost: ICartesianVisualHost;\r\n\r\n private xAxisProperties: IAxisProperties;\r\n private yAxisProperties: IAxisProperties;\r\n private margin: IMargin;\r\n private currentViewport: IViewport;\r\n\r\n private selectionCircles: D3.Selection[];\r\n private dragHandle: D3.Selection;\r\n private hoverLine: D3.Selection;\r\n private lastInteractiveSelectedColumnIndex: number;\r\n\r\n private interactivityService: IInteractivityService;\r\n private animator: IGenericAnimator;\r\n private seriesLabelFormattingEnabled: boolean;\r\n private lineChartLabelDensityEnabled: boolean;\r\n\r\n private static validLabelPositions = [\r\n NewPointLabelPosition.Above,\r\n NewPointLabelPosition.Below,\r\n NewPointLabelPosition.Right,\r\n NewPointLabelPosition.Left,\r\n NewPointLabelPosition.AboveRight,\r\n NewPointLabelPosition.AboveLeft,\r\n NewPointLabelPosition.BelowRight,\r\n NewPointLabelPosition.BelowLeft\r\n ];\r\n private static validStackedLabelPositions = [RectLabelPosition.InsideCenter, RectLabelPosition.InsideEnd, RectLabelPosition.InsideBase];\r\n\r\n private overlayRect: D3.Selection;\r\n private isComboChart: boolean;\r\n\r\n private lastDragMoveXPosition: number;\r\n private deferDragMoveOperation = jsCommon.DeferUtility.deferUntilNextFrame(() => {\r\n if (this.lastDragMoveXPosition) {\r\n let index: number = this.findIndex(this.lastDragMoveXPosition - this.margin.left);\r\n this.selectColumn(index);\r\n this.lastDragMoveXPosition = undefined;\r\n }\r\n });\r\n\r\n public static customizeQuery(options: CustomizeQueryOptions): void {\r\n let dataViewMapping = options.dataViewMappings[0];\r\n if (!dataViewMapping || !dataViewMapping.categorical || !dataViewMapping.categorical.categories)\r\n return;\r\n\r\n let dataViewCategories = <data.CompiledDataViewRoleForMappingWithReduction>dataViewMapping.categorical.categories;\r\n let categoryItems = dataViewCategories.for.in.items;\r\n if (!_.isEmpty(categoryItems)) {\r\n let categoryType = categoryItems[0].type;\r\n\r\n let objects: DataViewObjects;\r\n if (dataViewMapping.metadata)\r\n objects = dataViewMapping.metadata.objects;\r\n\r\n if (CartesianChart.getIsScalar(objects, lineChartProps.categoryAxis.axisType, categoryType)) {\r\n dataViewCategories.dataReductionAlgorithm = { sample: {} };\r\n }\r\n }\r\n }\r\n\r\n public static getSortableRoles(options: VisualSortableOptions): string[] {\r\n let dataViewMapping = options.dataViewMappings[0];\r\n if (!dataViewMapping || !dataViewMapping.categorical || !dataViewMapping.categorical.categories)\r\n return null;\r\n\r\n let dataViewCategories = <data.CompiledDataViewRoleForMappingWithReduction>dataViewMapping.categorical.categories;\r\n let categoryItems = dataViewCategories.for.in.items;\r\n\r\n if (!_.isEmpty(categoryItems)) {\r\n let categoryType = categoryItems[0].type;\r\n\r\n let objects: DataViewObjects;\r\n if (dataViewMapping.metadata)\r\n objects = dataViewMapping.metadata.objects;\r\n\r\n //TODO: line chart should be sortable by X if it has scalar axis\r\n // But currently it doesn't support this. Always return 'category' \r\n // once it is supported.\r\n if (!CartesianChart.getIsScalar(objects, lineChartProps.categoryAxis.axisType, categoryType))\r\n return ['Category'];\r\n }\r\n\r\n return null;\r\n }\r\n\r\n public static converter(\r\n dataView: DataView,\r\n blankCategoryValue: string,\r\n colors: IDataColorPalette,\r\n isScalar: boolean,\r\n interactivityService?: IInteractivityService,\r\n shouldCalculateStacked?: boolean,\r\n isComboChart?: boolean): LineChartData {\r\n let categorical = dataView.categorical;\r\n let category = categorical.categories && categorical.categories.length > 0\r\n ? categorical.categories[0]\r\n : {\r\n source: undefined,\r\n values: [blankCategoryValue],\r\n identity: undefined,\r\n };\r\n\r\n let xAxisCardProperties = CartesianHelper.getCategoryAxisProperties(dataView.metadata);\r\n isScalar = CartesianHelper.isScalar(isScalar, xAxisCardProperties);\r\n categorical = ColumnUtil.applyUserMinMax(isScalar, categorical, xAxisCardProperties);\r\n\r\n let formatStringProp = lineChartProps.general.formatString;\r\n let categoryType: ValueType = AxisHelper.getCategoryValueType(category.source, isScalar);\r\n let isDateTime = AxisHelper.isDateTime(categoryType);\r\n let categoryValues = category.values;\r\n let categoryData = [];\r\n let series: LineChartSeries[] = [];\r\n let seriesLen = categorical.values ? categorical.values.length : 0;\r\n let hasDynamicSeries = !!(categorical.values && categorical.values.source);\r\n let values = categorical.values;\r\n let defaultLabelSettings: LineChartDataLabelsSettings = dataLabelUtils.getDefaultLineChartLabelSettings(isComboChart);\r\n let defaultSeriesColor: string;\r\n\r\n if (dataView.metadata && dataView.metadata.objects) {\r\n let objects = dataView.metadata.objects;\r\n defaultSeriesColor = DataViewObjects.getFillColor(objects, lineChartProps.dataPoint.defaultColor);\r\n\r\n let labelsObj = <DataLabelObject>objects['labels'];\r\n dataLabelUtils.updateLineChartLabelSettingsFromLabelsObject(labelsObj, defaultLabelSettings);\r\n }\r\n\r\n let colorHelper = new ColorHelper(colors, lineChartProps.dataPoint.fill, defaultSeriesColor);\r\n\r\n let grouped: DataViewValueColumnGroup[];\r\n if (dataView.categorical.values)\r\n grouped = dataView.categorical.values.grouped();\r\n\r\n let stackedValues;\r\n if (shouldCalculateStacked) {\r\n //initialize array with zeros \r\n stackedValues = categorical.values && categorical.values.length > 0 ? _.times(categorical.values[0].values.length, () => 0) : [];\r\n }\r\n\r\n for (let seriesIndex = 0; seriesIndex < seriesLen; seriesIndex++) {\r\n let column = categorical.values[seriesIndex];\r\n let valuesMetadata = column.source;\r\n let dataPoints: LineChartDataPoint[] = [];\r\n let groupedIdentity = grouped[seriesIndex];\r\n let identity = hasDynamicSeries && groupedIdentity\r\n ? SelectionId.createWithIdAndMeasure(groupedIdentity.identity, column.source.queryName)\r\n : SelectionId.createWithMeasure(column.source.queryName);\r\n let key = identity.getKey();\r\n let color = this.getColor(colorHelper, hasDynamicSeries, values, grouped, seriesIndex, groupedIdentity);\r\n let seriesLabelSettings: LineChartDataLabelsSettings;\r\n\r\n if (!hasDynamicSeries) {\r\n let labelsSeriesGroup = grouped && grouped.length > 0 && grouped[0].values ? grouped[0].values[seriesIndex] : null;\r\n let labelObjects = (labelsSeriesGroup && labelsSeriesGroup.source && labelsSeriesGroup.source.objects) ? <DataLabelObject> labelsSeriesGroup.source.objects['labels'] : null;\r\n if (labelObjects) {\r\n seriesLabelSettings = Prototype.inherit(defaultLabelSettings);\r\n dataLabelUtils.updateLineChartLabelSettingsFromLabelsObject(labelObjects, seriesLabelSettings);\r\n }\r\n }\r\n\r\n let dataPointLabelSettings = (seriesLabelSettings) ? seriesLabelSettings : defaultLabelSettings;\r\n\r\n let useHighlightValues = column.highlights && column.highlights.length > 0;\r\n // NOTE: line capabilities don't allow highlights, but comboChart does - so only use highlight values if we are in \"combo\" mode\r\n let valuesArray = useHighlightValues ? column.highlights : column.values;\r\n for (let categoryIndex = 0, len = valuesArray.length; categoryIndex < len; categoryIndex++) {\r\n let categoryValue = categoryValues[categoryIndex];\r\n let value = AxisHelper.normalizeNonFiniteNumber(valuesArray[categoryIndex]);\r\n\r\n // When Scalar, skip null categories and null values so we draw connected lines and never draw isolated dots.\r\n if (isScalar && (categoryValue == null || value == null))\r\n continue;\r\n\r\n // ignore variant measures\r\n if (isDateTime && categoryValue != null && !(categoryValue instanceof Date))\r\n continue;\r\n\r\n let categorical: DataViewCategorical = dataView.categorical;\r\n let tooltipInfo: TooltipDataItem[] = TooltipBuilder.createTooltipInfo(formatStringProp, categorical, categoryValue, value, null, null, seriesIndex);\r\n\r\n let categoryKey = category && !_.isEmpty(category.identity) && category.identity[categoryIndex] ? category.identity[categoryIndex].key : categoryIndex;\r\n\r\n let dataPoint: LineChartDataPoint = {\r\n categoryValue: isDateTime && categoryValue ? categoryValue.getTime() : categoryValue,\r\n value: value,\r\n categoryIndex: categoryIndex,\r\n seriesIndex: seriesIndex,\r\n tooltipInfo: tooltipInfo,\r\n selected: false,\r\n identity: identity,\r\n key: JSON.stringify({ series: key, category: categoryKey }),\r\n labelFill: dataPointLabelSettings.labelColor,\r\n labelFormatString: valuesMetadata.format,\r\n labelSettings: dataPointLabelSettings\r\n };\r\n\r\n if (shouldCalculateStacked) {\r\n stackedValues[categoryIndex] += value;\r\n dataPoint.stackedValue = stackedValues[categoryIndex];\r\n }\r\n\r\n if (category.objects && category.objects[categoryIndex]) {\r\n dataPoint['pointColor'] = DataViewObjects.getFillColor(category.objects[categoryIndex], lineChartProps.dataPoint.fill);\r\n }\r\n\r\n dataPoints.push(dataPoint);\r\n\r\n if (!categoryData[categoryIndex]) {\r\n categoryData[categoryIndex] = dataPoint;\r\n }\r\n }\r\n\r\n if (interactivityService) {\r\n interactivityService.applySelectionStateToData(dataPoints);\r\n }\r\n\r\n if (dataPoints.length > 0) {\r\n series.push({\r\n displayName: valuesMetadata.displayName,\r\n key: key,\r\n lineIndex: seriesIndex,\r\n color: color,\r\n xCol: category.source,\r\n yCol: column.source,\r\n data: dataPoints,\r\n identity: identity,\r\n selected: false,\r\n labelSettings: seriesLabelSettings,\r\n });\r\n }\r\n }\r\n\r\n xAxisCardProperties = CartesianHelper.getCategoryAxisProperties(dataView.metadata);\r\n let valueAxisProperties = CartesianHelper.getValueAxisProperties(dataView.metadata);\r\n \r\n // Convert to DataViewMetadataColumn\r\n let valuesMetadataArray: powerbi.DataViewMetadataColumn[] = [];\r\n if (values) {\r\n for (let i = 0; i < values.length; i++) {\r\n\r\n if (values[i] && values[i].source && values[i].source.displayName) {\r\n valuesMetadataArray.push({ displayName: values[i].source.displayName });\r\n }\r\n }\r\n }\r\n\r\n let axesLabels = converterHelper.createAxesLabels(xAxisCardProperties, valueAxisProperties, category.source, valuesMetadataArray);\r\n if (interactivityService) {\r\n interactivityService.applySelectionStateToData(series);\r\n }\r\n\r\n return {\r\n series: series,\r\n isScalar: isScalar,\r\n dataLabelsSettings: defaultLabelSettings,\r\n axesLabels: { x: axesLabels.xAxisLabel, y: axesLabels.yAxisLabel },\r\n hasDynamicSeries: hasDynamicSeries,\r\n categoryMetadata: category.source,\r\n categories: categoryValues,\r\n categoryData: categoryData\r\n };\r\n }\r\n\r\n public static getInteractiveLineChartDomElement(element: JQuery): HTMLElement {\r\n return element.children(\"svg\").get(0);\r\n }\r\n\r\n private static getColor(\r\n colorHelper: ColorHelper,\r\n hasDynamicSeries: boolean,\r\n values: DataViewValueColumns,\r\n grouped: DataViewValueColumnGroup[],\r\n seriesIndex: number,\r\n groupedIdentity: DataViewValueColumnGroup): string {\r\n\r\n let objects: DataViewObjects;\r\n if (hasDynamicSeries) {\r\n if (grouped && grouped[seriesIndex])\r\n objects = grouped[seriesIndex].objects;\r\n }\r\n else if (values[seriesIndex]) {\r\n objects = values[seriesIndex].source.objects;\r\n }\r\n\r\n return hasDynamicSeries && groupedIdentity\r\n ? colorHelper.getColorForSeriesValue(objects, values.identityFields, groupedIdentity.name)\r\n : colorHelper.getColorForMeasure(objects, values[seriesIndex].source.queryName);\r\n }\r\n\r\n private static createStackedValueDomain(data: LineChartSeries[]): number[] {\r\n debug.assertValue(data, 'data');\r\n if (data.length === 0)\r\n return null;\r\n\r\n let minY = <number>d3.min(data, (kv) => { return d3.min(kv.data, d => { return d.stackedValue; }); });\r\n let maxY = <number>d3.max(data, (kv) => { return d3.max(kv.data, d => { return d.stackedValue; }); });\r\n\r\n return [minY, maxY];\r\n }\r\n\r\n constructor(options: LineChartConstructorOptions) {\r\n this.isScrollable = options.isScrollable ? options.isScrollable : false;\r\n this.tooltipsEnabled = options.tooltipsEnabled;\r\n this.lineType = options.chartType ? options.chartType : LineChartType.default;\r\n this.interactivityService = options.interactivityService;\r\n this.animator = options.animator;\r\n this.seriesLabelFormattingEnabled = options.seriesLabelFormattingEnabled;\r\n this.lineChartLabelDensityEnabled = options.lineChartLabelDensityEnabled;\r\n }\r\n\r\n public init(options: CartesianVisualInitOptions) {\r\n this.options = options;\r\n let element = this.element = options.element;\r\n this.cartesainSVG = options.svg;\r\n this.host = options.host;\r\n this.currentViewport = options.viewport;\r\n this.colors = options.style.colorPalette.dataColors;\r\n this.isInteractiveChart = options.interactivity && options.interactivity.isInteractiveLegend;\r\n this.cartesianVisualHost = options.cartesianHost;\r\n\r\n let chartType = options.chartType;\r\n this.isComboChart = chartType === CartesianChartType.ComboChart || chartType === CartesianChartType.LineClusteredColumnCombo || chartType === CartesianChartType.LineStackedColumnCombo;\r\n\r\n element.addClass(LineChart.ClassName);\r\n\r\n let svg = options.svg;\r\n\r\n let graphicsContextParent = this.mainGraphicsSVG = svg.append('svg')\r\n .classed('lineChartSVG', true);\r\n\r\n if (!this.isComboChart && !this.isInteractiveChart) {\r\n this.overlayRect = graphicsContextParent\r\n .append(LineChart.RectOverlayName)\r\n .style(\"opacity\", SVGUtil.AlmostZero);\r\n }\r\n this.mainGraphicsContext = graphicsContextParent\r\n .append('g')\r\n .classed(LineChart.MainGraphicsContextClassName, true);\r\n\r\n this.hoverLineContext = svg.append('g')\r\n .classed('hover-line', true);\r\n\r\n this.hoverLineContext.append(LineChart.LineElementName)\r\n .attr(\"x1\", 0).attr(\"x2\", 0)\r\n .attr(\"y1\", 0).attr(\"y2\", 0);\r\n\r\n let hoverLine = this.hoverLine = this.hoverLineContext.select(LineChart.LineElementName);\r\n if (this.isInteractiveChart) {\r\n hoverLine.classed('interactive', true);\r\n }\r\n hoverLine.style('opacity', SVGUtil.AlmostZero);\r\n\r\n // define circles object - which will hold the handle circles. \r\n // this object will be populated on render() function, with number of circles which matches the nubmer of lines.\r\n this.selectionCircles = [];\r\n\r\n this.xAxisProperties = {\r\n axis: null,\r\n scale: null,\r\n axisType: null,\r\n formatter: null,\r\n graphicsContext: null,\r\n values: null,\r\n axisLabel: null,\r\n isCategoryAxis: true\r\n };\r\n\r\n if (this.isInteractiveChart) {\r\n let rootSvg: EventTarget = LineChart.getInteractiveLineChartDomElement(this.element);\r\n let dragMove = () => {\r\n this.lastDragMoveXPosition = d3.mouse(rootSvg)[0];\r\n this.deferDragMoveOperation();\r\n };\r\n\r\n // assign drag and onClick events\r\n let drag = d3.behavior.drag()\r\n .origin(Object)\r\n .on(\"drag\", dragMove);\r\n d3.select(rootSvg)\r\n .style('touch-action', 'none')\r\n .call(drag)\r\n .on('click', dragMove);\r\n }\r\n }\r\n\r\n public setData(dataViews: DataView[]): void {\r\n this.data = {\r\n series: [],\r\n dataLabelsSettings: dataLabelUtils.getDefaultLineChartLabelSettings(this.isComboChart),\r\n axesLabels: { x: null, y: null },\r\n hasDynamicSeries: false,\r\n categories: [],\r\n categoryMetadata: undefined,\r\n categoryData: [],\r\n };\r\n\r\n if (dataViews.length > 0) {\r\n let dataView = dataViews[0];\r\n\r\n if (dataView) {\r\n if (dataView.categorical) {\r\n let dataViewCat = this.dataViewCat = dataView.categorical;\r\n let dvCategories = dataViewCat.categories;\r\n let categoryType = ValueType.fromDescriptor({ text: true });\r\n if (dvCategories && dvCategories.length > 0 && dvCategories[0].source && dvCategories[0].source.type)\r\n categoryType = <ValueType>dvCategories[0].source.type;\r\n\r\n let convertedData = LineChart.converter(\r\n dataView,\r\n valueFormatter.format(null),\r\n this.cartesianVisualHost.getSharedColors(),\r\n CartesianChart.getIsScalar(dataView.metadata ? dataView.metadata.objects : null, lineChartProps.categoryAxis.axisType, categoryType),\r\n this.interactivityService,\r\n EnumExtensions.hasFlag(this.lineType, LineChartType.stackedArea),\r\n this.isComboChart);\r\n this.data = convertedData;\r\n }\r\n }\r\n }\r\n }\r\n\r\n public calculateLegend(): LegendData {\r\n return this.createLegendDataPoints(0); // start with index 0 \r\n }\r\n\r\n public hasLegend(): boolean {\r\n return this.data && (this.data.hasDynamicSeries || (this.data.series && this.data.series.length > 1));\r\n }\r\n\r\n public setFilteredData(startIndex: number, endIndex: number): CartesianData {\r\n let catgSize = endIndex - startIndex;\r\n let data = this.clippedData = Prototype.inherit(this.data);\r\n data.series = LineChart.sliceSeries(data.series, catgSize, startIndex);\r\n data.categories = data.categories.slice(startIndex, endIndex);\r\n return data;\r\n }\r\n\r\n public calculateAxesProperties(options: CalculateScaleAndDomainOptions): IAxisProperties[] {\r\n let data = this.data;\r\n let viewport = options.viewport;\r\n let margin = options.margin;\r\n this.currentViewport = viewport;\r\n this.margin = margin;\r\n\r\n let origCatgSize = data.series && data.series.length > 0 ? data.series[0].data.length : 0;\r\n let categoryWidth = CartesianChart.MinOrdinalRectThickness;\r\n let isScalar = this.data.isScalar;\r\n let trimOrdinalDataOnOverflow = options.trimOrdinalDataOnOverflow;\r\n\r\n let preferredPlotArea = this.getPreferredPlotArea(isScalar, origCatgSize, categoryWidth);\r\n\r\n /* preferredPlotArea would be same as currentViewport width when there is no scrollbar. \r\n In that case we want to calculate the available plot area for the shapes by subtracting the margin from available viewport */\r\n if (preferredPlotArea.width === this.currentViewport.width) {\r\n preferredPlotArea.width -= (margin.left + margin.right);\r\n }\r\n preferredPlotArea.height -= (margin.top + margin.bottom);\r\n\r\n this.clippedData = undefined;\r\n if (data && !isScalar && !this.isScrollable && trimOrdinalDataOnOverflow) {\r\n // trim data that doesn't fit on dashboard\r\n let categoryCount = this.getCategoryCount(origCatgSize);\r\n let catgSize = Math.min(origCatgSize, categoryCount);\r\n\r\n if (catgSize !== origCatgSize) {\r\n data = this.clippedData = Prototype.inherit(data);\r\n this.clippedData.series = LineChart.sliceSeries(data.series, catgSize);\r\n }\r\n }\r\n\r\n let xMetaDataColumn: DataViewMetadataColumn;\r\n let yMetaDataColumn: DataViewMetadataColumn;\r\n if (data.series && data.series.length > 0) {\r\n xMetaDataColumn = data.series[0].xCol;\r\n yMetaDataColumn = data.series[0].yCol;\r\n }\r\n\r\n let valueDomain = EnumExtensions.hasFlag(this.lineType, LineChartType.stackedArea) ? LineChart.createStackedValueDomain(data.series) : AxisHelper.createValueDomain(data.series, false);\r\n let hasZeroValueInYDomain = options.valueAxisScaleType === axisScale.log && !AxisHelper.isLogScalePossible(valueDomain);\r\n let combinedDomain = AxisHelper.combineDomain(options.forcedYDomain, valueDomain);\r\n this.yAxisProperties = AxisHelper.createAxis({\r\n pixelSpan: preferredPlotArea.height,\r\n dataDomain: combinedDomain,\r\n metaDataColumn: yMetaDataColumn,\r\n formatString: valueFormatter.getFormatString(yMetaDataColumn, lineChartProps.general.formatString),\r\n outerPadding: 0,\r\n isScalar: true,\r\n isVertical: true,\r\n forcedTickCount: options.forcedTickCount,\r\n useTickIntervalForDisplayUnits: true,\r\n isCategoryAxis: false,\r\n scaleType: options.valueAxisScaleType,\r\n axisDisplayUnits: options.valueAxisDisplayUnits,\r\n axisPrecision: options.valueAxisPrecision,\r\n shouldClamp: false, // clamping causes incorrect lines when you have axis extents specified, do not enable this.\r\n });\r\n\r\n let xDomain = AxisHelper.createDomain(data.series, this.xAxisProperties.axisType, this.data.isScalar, options.forcedXDomain);\r\n let hasZeroValueInXDomain = options.valueAxisScaleType === axisScale.log && !AxisHelper.isLogScalePossible(xDomain);\r\n this.xAxisProperties = AxisHelper.createAxis({\r\n pixelSpan: preferredPlotArea.width,\r\n dataDomain: xDomain,\r\n metaDataColumn: xMetaDataColumn,\r\n formatString: valueFormatter.getFormatString(xMetaDataColumn, lineChartProps.general.formatString),\r\n outerPadding: this.data.isScalar ? LineChart.ScalarOuterPadding : 0,\r\n isScalar: this.data.isScalar,\r\n isVertical: false,\r\n forcedTickCount: options.forcedTickCount,\r\n useTickIntervalForDisplayUnits: true,\r\n getValueFn: (index, type) => CartesianHelper.lookupXValue(this.data, index, type, this.data.isScalar),\r\n categoryThickness: CartesianChart.getCategoryThickness(data.series, origCatgSize, this.getAvailableWidth(), xDomain, isScalar, trimOrdinalDataOnOverflow),\r\n isCategoryAxis: true,\r\n scaleType: options.categoryAxisScaleType,\r\n axisDisplayUnits: options.categoryAxisDisplayUnits,\r\n axisPrecision: options.categoryAxisPrecision\r\n });\r\n\r\n this.xAxisProperties.axisLabel = options.showCategoryAxisLabel ? data.axesLabels.x : null;\r\n this.yAxisProperties.axisLabel = options.showValueAxisLabel ? data.axesLabels.y : null;\r\n\r\n this.xAxisProperties.hasDisallowedZeroInDomain = hasZeroValueInXDomain;\r\n this.yAxisProperties.hasDisallowedZeroInDomain = hasZeroValueInYDomain;\r\n\r\n return [this.xAxisProperties, this.yAxisProperties];\r\n }\r\n\r\n public enumerateObjectInstances(enumeration: ObjectEnumerationBuilder, options: EnumerateVisualObjectInstancesOptions): void {\r\n switch (options.objectName) {\r\n case 'dataPoint':\r\n this.enumerateDataPoints(enumeration);\r\n break;\r\n case 'labels':\r\n this.enumerateDataLabels(enumeration);\r\n break;\r\n }\r\n }\r\n\r\n private enumerateDataPoints(enumeration: ObjectEnumerationBuilder): void {\r\n let data = this.data;\r\n if (!data || !data.series || data.series.length === 0)\r\n return;\r\n\r\n let formatStringProp = lineChartProps.general.formatString;\r\n let singleSeriesData = data.series;\r\n let seriesLength = singleSeriesData.length;\r\n\r\n for (let i = 0; i < seriesLength; i++) {\r\n let selector = ColorHelper.normalizeSelector(singleSeriesData[i].identity.getSelector());\r\n\r\n let label = converterHelper.getFormattedLegendLabel(singleSeriesData[i].yCol, this.dataViewCat.values, formatStringProp);\r\n enumeration.pushInstance({\r\n objectName: 'dataPoint',\r\n displayName: label,\r\n selector: selector,\r\n properties: {\r\n fill: { solid: { color: data.defaultSeriesColor || singleSeriesData[i].color } }\r\n },\r\n });\r\n }\r\n }\r\n\r\n private enumerateDataLabels(enumeration: ObjectEnumerationBuilder): void {\r\n let data = this.data,\r\n labelSettings = this.data.dataLabelsSettings,\r\n seriesCount = data.series.length,\r\n showLabelPerSeries = this.showLabelPerSeries();\r\n\r\n //Draw default settings\r\n dataLabelUtils.enumerateDataLabels(this.getLabelSettingsOptions(enumeration, labelSettings, null, showLabelPerSeries));\r\n\r\n if (seriesCount === 0)\r\n return;\r\n\r\n //Draw series settings\r\n if (showLabelPerSeries && labelSettings.showLabelPerSeries) {\r\n for (let i = 0; i < seriesCount; i++) {\r\n let series = data.series[i],\r\n labelSettings: LineChartDataLabelsSettings = (series.labelSettings) ? series.labelSettings : this.data.dataLabelsSettings;\r\n\r\n enumeration.pushContainer({ displayName: series.displayName });\r\n dataLabelUtils.enumerateDataLabels(this.getLabelSettingsOptions(enumeration, labelSettings, series));\r\n enumeration.popContainer();\r\n }\r\n }\r\n }\r\n\r\n private getLabelSettingsOptions(enumeration: ObjectEnumerationBuilder, labelSettings: LineChartDataLabelsSettings, series?: LineChartSeries, showAll?: boolean): VisualDataLabelsSettingsOptions {\r\n return {\r\n enumeration: enumeration,\r\n dataLabelsSettings: labelSettings,\r\n show: true,\r\n displayUnits: true,\r\n precision: true,\r\n selector: series && series.identity ? series.identity.getSelector() : null,\r\n showAll: showAll,\r\n fontSize: true,\r\n labelDensity: this.lineChartLabelDensityEnabled,\r\n };\r\n }\r\n\r\n public overrideXScale(xProperties: IAxisProperties): void {\r\n this.xAxisProperties = xProperties;\r\n }\r\n\r\n public onClearSelection(): void {\r\n if (this.interactivityService)\r\n this.interactivityService.clearSelection();\r\n }\r\n\r\n public render(suppressAnimations: boolean): CartesianVisualRenderResult {\r\n let duration = AnimatorCommon.GetAnimationDuration(this.animator, suppressAnimations);\r\n let result: CartesianVisualRenderResult;\r\n if (!this.isInteractiveChart) // If we're not a mobile interactive chart, use the new render path\r\n result = this.renderNew(duration);\r\n else // If not, use the old path kept around for mobile compatibility until mobile code can be moved and tested within the new render path\r\n result = this.renderOld(duration);\r\n\r\n // This should always be the last line in the render code.\r\n SVGUtil.flushAllD3TransitionsIfNeeded(this.options);\r\n\r\n return result;\r\n }\r\n\r\n private renderNew(duration: number): CartesianVisualRenderResult {\r\n let data = this.clippedData ? this.clippedData : this.data;\r\n if (!data)\r\n return;\r\n let isStackedArea = EnumExtensions.hasFlag(this.lineType, LineChartType.stackedArea);\r\n let margin = this.margin;\r\n let viewport = this.currentViewport;\r\n let height = viewport.height - (margin.top + margin.bottom);\r\n let width = viewport.width - (margin.left + margin.right);\r\n let xScale = this.xAxisProperties.scale;\r\n let yScale = this.yAxisProperties.scale;\r\n let horizontalOffset = this.extraLineShift();\r\n\r\n let hasSelection = this.interactivityService && this.interactivityService.hasSelection();\r\n let renderAreas: boolean = EnumExtensions.hasFlag(this.lineType, LineChartType.area) || EnumExtensions.hasFlag(this.lineType, LineChartType.stackedArea);\r\n let xPosition = (d: LineChartDataPoint) => { return xScale(this.getXValue(d)) + horizontalOffset; };\r\n\r\n let y0Position, yPosition;\r\n if (isStackedArea) {\r\n y0Position = (d: LineChartDataPoint) => { return yScale(d.stackedValue - d.value); };\r\n yPosition = (d: LineChartDataPoint) => { return yScale(d.stackedValue); };\r\n }\r\n else {\r\n y0Position = yScale(0);\r\n yPosition = (d: LineChartDataPoint) => { return yScale(d.value); };\r\n } \r\n\r\n let area;\r\n if (renderAreas) {\r\n area = d3.svg.area()\r\n .x(xPosition)\r\n .y0(y0Position)\r\n .y1(yPosition)\r\n .defined((d: LineChartDataPoint) => { return d.value !== null; });\r\n }\r\n\r\n let line = d3.svg.line()\r\n .x(xPosition)\r\n .y(yPosition)\r\n .defined((d: LineChartDataPoint) => {\r\n return d.value !== null;\r\n });\r\n\r\n if (EnumExtensions.hasFlag(this.lineType, LineChartType.smooth)) {\r\n line.interpolate('basis');\r\n if (area) {\r\n area.interpolate('basis');\r\n }\r\n }\r\n\r\n this.mainGraphicsSVG\r\n .attr('height', height)\r\n .attr('width', width);\r\n let areas = undefined;\r\n // Render Areas\r\n if (renderAreas) {\r\n areas = this.mainGraphicsContext.selectAll(LineChart.CategoryAreaSelector.selector).data(data.series, (d: LineChartSeries) => d.identity.getKey());\r\n areas.enter()\r\n .append(LineChart.PathElementName)\r\n .classed(LineChart.CategoryAreaSelector.class, true);\r\n areas\r\n .style('fill', (d: LineChartSeries) => d.color)\r\n .style('fill-opacity', (d: LineChartSeries) => (hasSelection && !d.selected) ? LineChart.DimmedAreaFillOpacity : LineChart.AreaFillOpacity)\r\n .transition()\r\n .ease('linear')\r\n .duration(duration)\r\n .attr('d', (d: LineChartSeries) => area(d.data));\r\n areas.exit()\r\n .remove();\r\n }\r\n \r\n // Render Lines\r\n let lines = this.mainGraphicsContext.selectAll(\".line\").data(data.series, (d: LineChartSeries) => d.identity.getKey());\r\n lines.enter()\r\n .append(LineChart.PathElementName)\r\n .classed('line', true);\r\n lines\r\n .style('stroke', (d: LineChartSeries) => d.color)\r\n .style('stroke-opacity', (d: LineChartSeries) => ColumnUtil.getFillOpacity(d.selected, false, hasSelection, false))\r\n .transition()\r\n .ease('linear')\r\n .duration(duration)\r\n .attr('d', (d: LineChartSeries) => {\r\n return line(d.data);\r\n });\r\n lines.exit()\r\n .remove(); \r\n\r\n // Render extra lines that are wider and invisible used for better interactivity\r\n let interactivityLines;\r\n if (this.interactivityService) {\r\n interactivityLines = this.mainGraphicsContext.selectAll(\".interactivity-line\").data(data.series, (d: LineChartSeries) => d.identity.getKey());\r\n interactivityLines.enter()\r\n .append(LineChart.PathElementName)\r\n .classed('interactivity-line', true);\r\n interactivityLines\r\n .attr('d', (d: LineChartSeries) => {\r\n return line(d.data);\r\n });\r\n interactivityLines.exit()\r\n .remove();\r\n }\r\n\r\n // Prepare grouping for dots\r\n let dotGroups = this.mainGraphicsContext.selectAll(LineChart.CategorySelector.selector)\r\n .data(data.series, (d: LineChartSeries) => d.identity.getKey());\r\n\r\n dotGroups.enter()\r\n .append('g')\r\n .classed(LineChart.CategorySelector.class, true);\r\n\r\n dotGroups.exit()\r\n .remove();\r\n\r\n // Render dots\r\n let dots = dotGroups.selectAll(LineChart.CategoryValuePoint.selector)\r\n .data((series: LineChartSeries) => {\r\n return series.data.filter((value: LineChartDataPoint, i: number) => {\r\n return this.shouldDrawCircle(series, i);\r\n });\r\n }, (d: LineChartDataPoint) => d.key);\r\n dots.enter()\r\n .append(LineChart.CircleElementName)\r\n .classed(LineChart.CategoryValuePoint.class, true);\r\n dots\r\n .style('fill', function () {\r\n let lineSeries = d3.select(this.parentNode).datum();\r\n return lineSeries.color;\r\n })\r\n .style('fill-opacity', function () {\r\n let lineSeries = d3.select(this.parentNode).datum();\r\n return ColumnUtil.getFillOpacity(lineSeries.selected, false, hasSelection, false);\r\n })\r\n .transition()\r\n .duration(duration)\r\n .attr({\r\n cx: (d: LineChartDataPoint, i: number) => xScale(this.getXValue(d)) + horizontalOffset,\r\n cy: (d: LineChartDataPoint, i: number) => yScale(d.value),\r\n r: LineChart.CircleRadius\r\n });\r\n dots.exit()\r\n .remove();\r\n\r\n // Render highlights\r\n let highlights = dotGroups.selectAll(LineChart.CategoryPointSelector.selector)\r\n .data((series: LineChartSeries) => {\r\n return _.filter(series.data, (value: LineChartDataPoint) => { return value.pointColor != null; });\r\n }, (d: LineChartDataPoint) => d.key);\r\n highlights.enter()\r\n .append(LineChart.CircleElementName)\r\n .classed(LineChart.CategoryPointSelector.class, true);\r\n highlights\r\n .style('fill', (d: LineChartDataPoint) => d.pointColor)\r\n .transition()\r\n .duration(duration)\r\n .attr({\r\n cx: (d: LineChartDataPoint) => xScale(this.getXValue(d)),\r\n cy: (d: LineChartDataPoint) => yScale(d.value),\r\n r: LineChart.PointRadius\r\n });\r\n highlights.exit()\r\n .remove();\r\n \r\n // Add data labels\r\n let LabelDataPointsGroups: LabelDataPointsGroup[];\r\n if (data.dataLabelsSettings.show)\r\n LabelDataPointsGroups = this.createLabelDataPoints();\r\n \r\n if (this.tooltipsEnabled) {\r\n if (!this.isComboChart) {\r\n this.overlayRect\r\n .attr({\r\n x: 0,\r\n width: width,\r\n height: height\r\n });\r\n\r\n let seriesTooltipApplier = (tooltipEvent: TooltipEvent) => {\r\n let pointX: number = tooltipEvent.elementCoordinates[0];\r\n let index: number = this.findIndex(pointX);\r\n let categoryData = this.selectColumnForTooltip(index);\r\n return this.getSeriesTooltipInfo(categoryData);\r\n };\r\n\r\n let clearHoverLine = () => {\r\n this.hoverLine.style('opacity', SVGUtil.AlmostZero);\r\n this.hoverLineContext.selectAll(LineChart.HoverLineCircleDot.selector).remove();\r\n };\r\n TooltipManager.addTooltip(this.mainGraphicsSVG, seriesTooltipApplier, true, clearHoverLine);\r\n } else {\r\n let seriesTooltipApplier = (tooltipEvent: TooltipEvent) => {\r\n let pointX: number = tooltipEvent.elementCoordinates[0];\r\n return this.getTooltipInfoByPathPointX(tooltipEvent, pointX);\r\n };\r\n\r\n if (interactivityLines)\r\n TooltipManager.addTooltip(interactivityLines, seriesTooltipApplier, true);\r\n\r\n TooltipManager.addTooltip(dots, (tooltipEvent: TooltipEvent) => tooltipEvent.data.tooltipInfo, true);\r\n TooltipManager.addTooltip(highlights, (tooltipEvent: TooltipEvent) => tooltipEvent.data.tooltipInfo, true);\r\n }\r\n }\r\n\r\n let dataPointsToBind: SelectableDataPoint[] = undefined;\r\n let behaviorOptions: LineChartBehaviorOptions = undefined;\r\n if (this.interactivityService) {\r\n // Register interactivity\r\n dataPointsToBind = data.series.slice();\r\n\r\n for (let i = 0, ilen = data.series.length; i < ilen; i++) {\r\n dataPointsToBind = dataPointsToBind.concat(data.series[i].data);\r\n }\r\n\r\n behaviorOptions = {\r\n lines: lines,\r\n interactivityLines: interactivityLines,\r\n dots: dots,\r\n areas: areas,\r\n tooltipOverlay: this.overlayRect,\r\n };\r\n }\r\n\r\n return {\r\n dataPoints: dataPointsToBind,\r\n behaviorOptions: behaviorOptions,\r\n labelDataPoints: [],\r\n labelsAreNumeric: true,\r\n labelDataPointGroups: LabelDataPointsGroups,\r\n };\r\n }\r\n\r\n private renderOld(duration: number): CartesianVisualRenderResult {\r\n let data = this.clippedData ? this.clippedData : this.data;\r\n if (!data)\r\n return;\r\n\r\n let margin = this.margin;\r\n let viewport = this.currentViewport;\r\n let height = viewport.height - (margin.top + margin.bottom);\r\n let xScale = this.xAxisProperties.scale;\r\n let yScale = this.yAxisProperties.scale;\r\n\r\n let hasSelection = this.interactivityService && this.interactivityService.hasSelection();\r\n\r\n let area;\r\n if (EnumExtensions.hasFlag(this.lineType, LineChartType.area)) {\r\n area = d3.svg.area()\r\n .x((d: LineChartDataPoint) => { return xScale(this.getXValue(d)); })\r\n .y0(height)\r\n .y1((d: LineChartDataPoint) => { return yScale(d.value); })\r\n .defined((d: LineChartDataPoint) => { return d.value !== null; });\r\n }\r\n\r\n let line = d3.svg.line()\r\n .x((d: LineChartDataPoint) => {\r\n return xScale(this.getXValue(d));\r\n })\r\n .y((d: LineChartDataPoint) => {\r\n return yScale(d.value);\r\n })\r\n .defined((d: LineChartDataPoint) => {\r\n return d.value !== null;\r\n });\r\n\r\n if (EnumExtensions.hasFlag(this.lineType, LineChartType.smooth)) {\r\n line.interpolate('basis');\r\n if (area) {\r\n area.interpolate('basis');\r\n }\r\n }\r\n\r\n let extraLineShift = this.extraLineShift();\r\n\r\n this.mainGraphicsContext.attr('transform', SVGUtil.translate(extraLineShift, 0));\r\n\r\n this.mainGraphicsSVG.attr('height', this.getAvailableHeight())\r\n .attr('width', this.getAvailableWidth());\r\n this.hoverLineContext.attr('transform', SVGUtil.translate(extraLineShift, 0));\r\n\r\n if (EnumExtensions.hasFlag(this.lineType, LineChartType.area)) {\r\n let catAreaSelect = this.mainGraphicsContext.selectAll(LineChart.CategoryAreaSelector.selector)\r\n .data(data.series, (d: LineChartDataPoint) => d.identity.getKey());\r\n\r\n let catAreaEnter =\r\n catAreaSelect\r\n .enter().append('g')\r\n .classed(LineChart.CategoryAreaSelector.class, true);\r\n\r\n catAreaEnter.append(LineChart.PathElementName);\r\n\r\n let catAreaUpdate = this.mainGraphicsContext.selectAll(LineChart.CategoryAreaSelector.selector);\r\n\r\n catAreaUpdate.select(LineChart.PathElementName)\r\n .transition()\r\n .ease('linear')\r\n .duration(duration)\r\n .attr('d', (d: LineChartSeries) => area(d.data))\r\n .style('fill', (d: LineChartSeries) => d.color)\r\n .style('fill-opacity', (d: LineChartSeries) => (hasSelection && !d.selected) ? LineChart.DimmedAreaFillOpacity : LineChart.AreaFillOpacity);\r\n\r\n catAreaSelect.exit().remove();\r\n }\r\n\r\n let catSelect = this.mainGraphicsContext.selectAll(LineChart.CategorySelector.selector)\r\n .data(data.series, (d: LineChartDataPoint) => d.identity.getKey());\r\n\r\n let catEnter = catSelect\r\n .enter()\r\n .append('g')\r\n .classed(LineChart.CategorySelector.class, true);\r\n\r\n catEnter.append(LineChart.PathElementName);\r\n catEnter.selectAll(LineChart.CategoryValuePoint.selector)\r\n .data((d: LineChartSeries) => d.data)\r\n .enter()\r\n .append(LineChart.CircleElementName)\r\n .classed(LineChart.CategoryValuePoint.class, true);\r\n\r\n // moving this up to avoid using the svg path generator with NaN values\r\n // do not move this without validating that no errors are thrown in the browser console\r\n catSelect.exit().remove();\r\n\r\n // add the drag handle, if needed\r\n if (this.isInteractiveChart && !this.dragHandle) {\r\n let handleTop = this.getAvailableHeight();\r\n this.dragHandle = this.hoverLineContext.append('circle')\r\n .attr('cx', 0)\r\n .attr('cy', handleTop)\r\n .attr('r', '6px')\r\n .classed('drag-handle', true);\r\n }\r\n\r\n // Create the selection circles \r\n let linesCount = catSelect.data().length; // number of lines plotted\r\n while (this.selectionCircles.length < linesCount) {\r\n let addedCircle = this.hoverLineContext.append(LineChart.CircleElementName)\r\n .classed(LineChart.CircleClassName, true)\r\n .attr('r', LineChart.CircleRadius).style('opacity', 0);\r\n this.selectionCircles.push(addedCircle);\r\n }\r\n\r\n while (this.selectionCircles.length > linesCount) {\r\n this.selectionCircles.pop().remove();\r\n }\r\n\r\n let catUpdate = this.mainGraphicsContext.selectAll(LineChart.CategorySelector.selector);\r\n\r\n let lineSelection = catUpdate.select(LineChart.PathElementName)\r\n .classed('line', true)\r\n .style('stroke', (d: LineChartSeries) => d.color)\r\n .style('stroke-opacity', (d: LineChartSeries) => ColumnUtil.getFillOpacity(d.selected, false, hasSelection, false));\r\n lineSelection\r\n .transition()\r\n .ease('linear')\r\n .duration(duration)\r\n .attr('d', (d: LineChartSeries) => {\r\n return line(d.data);\r\n });\r\n\r\n let that = this;\r\n let updateSelection = catUpdate.selectAll(LineChart.CategoryValuePoint.selector);\r\n let transitions = updateSelection\r\n .style('fill', function () {\r\n let lineSeries = d3.select(this.parentNode).datum();\r\n return lineSeries.color;\r\n })\r\n .style('fill-opacity', function () {\r\n let lineSeries = d3.select(this.parentNode).datum();\r\n return ColumnUtil.getFillOpacity(lineSeries.selected, false, hasSelection, false);\r\n })\r\n .transition()\r\n .duration(duration)\r\n .attr({\r\n 'cx': function (d: LineChartDataPoint, i: number) {\r\n let lineSeries = d3.select(this.parentNode).datum();\r\n let circleIndex = that.shouldDrawCircle(lineSeries, i);\r\n return circleIndex ? xScale(that.getXValue(d)) : 0;\r\n },\r\n 'cy': function (d: LineChartDataPoint, i: number) {\r\n let lineSeries = d3.select(this.parentNode).datum();\r\n let circleIndex = that.shouldDrawCircle(lineSeries, i);\r\n return circleIndex ? yScale(d.value) : 0;\r\n },\r\n 'r': function (d: LineChartDataPoint, i: number) {\r\n let lineSeries = d3.select(this.parentNode).datum();\r\n let circleIndex = that.shouldDrawCircle(lineSeries, i);\r\n return circleIndex ? LineChart.CircleRadius : 0;\r\n }\r\n });\r\n if (this.isInteractiveChart && this.hasDataPoint(data.series)) {\r\n let selectionSize = updateSelection.size();\r\n let endedTransitionCount = 0;\r\n transitions.each('end', () => {\r\n // When transitions finish, and it's an interactive chart - select the last column (draw the legend and the handle)\r\n endedTransitionCount++;\r\n if (endedTransitionCount === selectionSize) { // all transitions had finished\r\n this.selectColumn(this.findMaxDataPoint(data.series), true);\r\n }\r\n });\r\n }\r\n\r\n if (data.dataLabelsSettings.show) {\r\n let layout = dataLabelUtils.getLineChartLabelLayout(xScale, yScale, data.dataLabelsSettings, data.isScalar, this.yAxisProperties.formatter);\r\n let dataPoints: LineChartDataPoint[] = [];\r\n\r\n for (let i = 0, ilen = data.series.length; i < ilen; i++) {\r\n Array.prototype.push.apply(dataPoints, data.series[i].data);\r\n }\r\n\r\n dataLabelUtils.drawDefaultLabelsForDataPointChart(dataPoints, this.mainGraphicsSVG, layout, this.currentViewport);\r\n this.mainGraphicsSVG.select('.labels').attr('transform', SVGUtil.translate(extraLineShift, 0));\r\n }\r\n else {\r\n dataLabelUtils.cleanDataLabels(this.mainGraphicsSVG);\r\n }\r\n \r\n catSelect.exit().remove();\r\n\r\n return null; // This render path doesn't use the interactivity service\r\n }\r\n\r\n /**\r\n * Note: Static for tests.\r\n */\r\n public getSeriesTooltipInfo(pointData: HoverLineDataPoint[]): TooltipDataItem[] {\r\n\r\n let tooltipinfo: TooltipDataItem[] = [];\r\n const maxNumberOfItems = 10; // to limit the number of rows we display\r\n \r\n // count to the maximum number of rows we can display\r\n let count = 0;\r\n for (let point of pointData) {\r\n if (count >= maxNumberOfItems) break;\r\n if (point.value != null) {\r\n tooltipinfo.push({\r\n header: point.category,\r\n color: point.color,\r\n displayName: point.label,\r\n value: point.measure\r\n });\r\n count++;\r\n }\r\n }\r\n\r\n if (tooltipinfo.length === 0)\r\n return null; //don't draw an empty tooltip container\r\n\r\n return tooltipinfo;\r\n }\r\n\r\n public getTooltipInfoByPathPointX(tooltipEvent: TooltipEvent, pointX: number): TooltipDataItem[] {\r\n // update pointX, the mouse coordinate, with the left-offset of the SVGRect from the x-scale space so we can use the d3.scale to get the index.\r\n let seriesData = <LineChartSeries>tooltipEvent.data;\r\n let seriesOffset = 0;\r\n if (seriesData && seriesData.data && seriesData.data.length && this.xAxisProperties) {\r\n let firstNonNullPoint = _.find(seriesData.data, (dp: LineChartDataPoint) => dp.value != null);\r\n seriesOffset = this.xAxisProperties.scale(this.getXValue(firstNonNullPoint));\r\n }\r\n let index: number = this.findIndex(pointX, seriesOffset + this.extraLineShift());\r\n let dataPoint = _.find(seriesData.data, (dp: LineChartDataPoint) => dp.categoryIndex === index);\r\n if (dataPoint)\r\n return dataPoint.tooltipInfo;\r\n // return undefined so we don't show an empty tooltip\r\n }\r\n\r\n public getVisualCategoryAxisIsScalar(): boolean {\r\n return this.data ? this.data.isScalar : false;\r\n }\r\n\r\n public getSupportedCategoryAxisType(): string {\r\n let dvCategories = this.dataViewCat ? this.dataViewCat.categories : undefined;\r\n let categoryType = ValueType.fromDescriptor({ text: true });\r\n if (dvCategories && dvCategories.length > 0 && dvCategories[0].source && dvCategories[0].source.type)\r\n categoryType = <ValueType>dvCategories[0].source.type;\r\n\r\n let isOrdinal = AxisHelper.isOrdinal(categoryType);\r\n return isOrdinal ? axisType.categorical : axisType.both;\r\n }\r\n\r\n public getPreferredPlotArea(isScalar: boolean, categoryCount: number, categoryThickness: number): IViewport {\r\n return CartesianChart.getPreferredPlotArea(\r\n categoryCount,\r\n categoryThickness,\r\n this.currentViewport,\r\n this.isScrollable,\r\n isScalar);\r\n }\r\n\r\n private getCategoryCount(origCatgSize): number {\r\n let availableWidth = this.getAvailableWidth();\r\n let categoryThickness = CartesianChart.MinOrdinalRectThickness;\r\n return Math.min(Math.round((availableWidth - categoryThickness * CartesianChart.OuterPaddingRatio * 2) / categoryThickness), origCatgSize);\r\n }\r\n\r\n private getAvailableWidth(): number {\r\n return this.currentViewport.width - (this.margin.left + this.margin.right);\r\n }\r\n\r\n private getAvailableHeight(): number {\r\n return this.currentViewport.height - (this.margin.top + this.margin.bottom);\r\n }\r\n\r\n private static sliceSeries(series: LineChartSeries[], newLength: number, startIndex: number = 0): LineChartSeries[] {\r\n let newSeries: LineChartSeries[] = [];\r\n if (series && series.length > 0) {\r\n debug.assert(series[0].data.length >= newLength, \"invalid newLength\");\r\n for (let i = 0, len = series.length; i < len; i++) {\r\n newSeries[i] = Prototype.inherit(series[i]);\r\n newSeries[i].data = series[i].data.slice(startIndex, startIndex + newLength);\r\n }\r\n }\r\n return newSeries;\r\n }\r\n\r\n private extraLineShift(): number {\r\n if (!this.data.isScalar) {\r\n // This will place the line points in the middle of the bands\r\n // So they center with Labels when scale is ordinal.\r\n let xScale = <D3.Scale.OrdinalScale>this.xAxisProperties.scale;\r\n if (xScale.rangeBand) {\r\n return xScale.rangeBand() / 2;\r\n }\r\n }\r\n return 0;\r\n }\r\n\r\n private hasDataPoint(series: LineChartSeries[]): boolean {\r\n if (series.length === 0)\r\n return false;\r\n for (let i = 0, len = series.length; i < len; i++) {\r\n if (series[i].data.length > 0)\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n private findMaxDataPoint(series: LineChartSeries[]): number {\r\n if (series.length === 0)\r\n return 0;\r\n let maxLength: number = 0; \r\n for (let singleSeries of series) {\r\n let length = singleSeries.data.length;\r\n if (length > maxLength)\r\n maxLength = length;\r\n }\r\n return maxLength - 1;\r\n }\r\n\r\n private getXValue(d: LineChartDataPoint): any {\r\n return this.data.isScalar ? d.categoryValue : d.categoryIndex;\r\n }\r\n\r\n /**\r\n * This checks to see if a data point is isolated, which means\r\n * the previous and next data point are both null.\r\n */\r\n private shouldDrawCircle(d: LineChartSeries, i: number): boolean {\r\n let dataLength = d.data.length;\r\n let isLastPoint = i === (dataLength - 1);\r\n let isFirstPoint = i === 0;\r\n\r\n if (i > dataLength - 1 || d.data[i] === null || d.data[i].value === null)\r\n return false;\r\n\r\n if (isFirstPoint && isLastPoint)\r\n return true;\r\n if (isFirstPoint && dataLength > 1 && d.data[i + 1].value === null)\r\n return true;\r\n if (!isFirstPoint && isLastPoint && d.data[i - 1].value === null)\r\n return true;\r\n if (!isFirstPoint && !isLastPoint && d.data[i - 1].value === null && d.data[i + 1].value === null)\r\n return true;\r\n return false;\r\n }\r\n\r\n public selectColumnForTooltip(columnIndex: number, force: boolean = false): HoverLineDataPoint[] {\r\n let x = this.getChartX(columnIndex) + this.extraLineShift();\r\n\r\n let dataPoints = this.createTooltipDataPoints(columnIndex);\r\n if (dataPoints.length > 0) {\r\n this.setHoverLineForTooltip(x);\r\n }\r\n this.setDotsForTooltip(x, dataPoints);\r\n\r\n return dataPoints;\r\n }\r\n\r\n private setHoverLineForTooltip(chartX: number) {\r\n chartX = chartX || 0;\r\n this.hoverLine\r\n .attr('x1', chartX)\r\n .attr('x2', chartX)\r\n .attr(\"y1\", 0)\r\n .attr(\"y2\", this.getAvailableHeight())\r\n .style('opacity', 1);\r\n }\r\n\r\n private setDotsForTooltip(chartX: number, dataPoints: HoverLineDataPoint[]) {\r\n let isStackedArea = EnumExtensions.hasFlag(this.lineType, LineChartType.stackedArea);\r\n let dotYPosition = isStackedArea ? d => this.yAxisProperties.scale(d.stackedValue) : d => this.yAxisProperties.scale(d.value);\r\n let tooltipDots = this.hoverLineContext.selectAll(LineChart.HoverLineCircleDot.selector).data(dataPoints);\r\n tooltipDots\r\n .enter()\r\n .append(LineChart.CircleElementName)\r\n .classed(LineChart.HoverLineCircleDot.class, true);\r\n tooltipDots\r\n .filter(d => d.value)\r\n .attr('fill', d => d.color)\r\n .attr(\"r\", 3)\r\n .attr(\"cx\", chartX)\r\n .attr(\"cy\", dotYPosition);\r\n tooltipDots.exit().remove();\r\n }\r\n\r\n /**\r\n * Updates the hover line and the legend with the selected colums (given by columnIndex).\r\n * This is for the Mobile renderer with InteractiveLegend\r\n */\r\n public selectColumn(columnIndex: number, force: boolean = false) {\r\n if (!force && this.lastInteractiveSelectedColumnIndex === columnIndex) return; // same column, nothing to do here\r\n\r\n this.lastInteractiveSelectedColumnIndex = columnIndex;\r\n let x = this.getChartX(columnIndex);\r\n this.setHoverLine(x);\r\n let legendItems = this.createLegendDataPoints(columnIndex);\r\n this.options.cartesianHost.updateLegend(legendItems);\r\n }\r\n\r\n private setHoverLine(chartX: number) {\r\n this.hoverLine\r\n .attr('x1', chartX)\r\n .attr('x2', chartX)\r\n .attr(\"y1\", 0).attr(\"y2\", this.getAvailableHeight())\r\n .style('opacity', 1);\r\n\r\n let that = this;\r\n this.mainGraphicsContext\r\n .selectAll(LineChart.CategorySelector.selector)\r\n .selectAll(LineChart.PathElementName)\r\n .each(function (series: LineChartSeries) {\r\n // Get the item color for the handle dots\r\n let color = series.color;\r\n let circleToChange = that.selectionCircles[series.lineIndex];\r\n\r\n circleToChange\r\n .attr({\r\n 'cx': chartX,\r\n 'cy': () => {\r\n let pathElement = d3.select(this).node<D3.D3Element>();\r\n let pos = that.getPosition(chartX, pathElement);\r\n return pos.y;\r\n }\r\n })\r\n .style({\r\n 'opacity': 1,\r\n 'fill': color\r\n });\r\n\r\n if (that.dragHandle) that.dragHandle.attr('cx', chartX);\r\n });\r\n }\r\n\r\n private getChartX(columnIndex: number): number {\r\n let x: number = 0;\r\n if (this.data.isScalar) {\r\n if (columnIndex >= 0 && columnIndex < this.data.categoryData.length)\r\n x = Math.max(0, this.xAxisProperties.scale(this.data.categoryData[columnIndex].categoryValue));\r\n } else {\r\n x = Math.max(0, this.xAxisProperties.scale(columnIndex));\r\n }\r\n\r\n let rangeEnd = powerbi.visuals.AxisHelper.extent(this.xAxisProperties.scale)[1];\r\n x = Math.min(x, rangeEnd);\r\n if (!isNaN(x))\r\n return x;\r\n return 0;\r\n }\r\n\r\n /**\r\n * Finds the index of the category of the given x coordinate given.\r\n * pointX is in non-scaled screen-space, and offsetX is in render-space.\r\n * offsetX does not need any scaling adjustment.\r\n * @param {number} pointX The mouse coordinate in screen-space, without scaling applied\r\n * @param {number} offsetX Any left offset in d3.scale render-space\r\n * @return {number}\r\n */\r\n private findIndex(pointX: number, offsetX?: number): number {\r\n // we are using mouse coordinates that do not know about any potential CSS transform scale\r\n let svgNode = <SVGSVGElement>(this.mainGraphicsSVG.node());\r\n let ratios = SVGUtil.getTransformScaleRatios(svgNode);\r\n if (!Double.equalWithPrecision(ratios.x, 1.0, 0.00001)) {\r\n pointX = pointX / ratios.x;\r\n }\r\n if (offsetX) {\r\n pointX += offsetX;\r\n }\r\n\r\n let scaleX = powerbi.visuals.AxisHelper.invertScale(this.xAxisProperties.scale, pointX);\r\n if (this.data.isScalar) {\r\n scaleX = AxisHelper.findClosestXAxisIndex(scaleX, this.data.categoryData);\r\n }\r\n\r\n return scaleX;\r\n }\r\n\r\n private getPosition(x: number, pathElement: D3.D3Element): SVGPoint {\r\n let pathLength = pathElement.getTotalLength();\r\n let pos: SVGPoint;\r\n let beginning = 0, end = pathLength, target;\r\n\r\n while (true) {\r\n target = Math.floor((beginning + end) / 2);\r\n pos = pathElement.getPointAtLength(target);\r\n SVGUtil.ensureValidSVGPoint(pos);\r\n if ((target === end || target === beginning) && pos.x !== x)\r\n break;\r\n if (pos.x > x) end = target;\r\n else if (pos.x < x) beginning = target;\r\n else\r\n break;\r\n }\r\n return pos;\r\n }\r\n\r\n private createTooltipDataPoints(columnIndex: number): HoverLineDataPoint[] {\r\n let data = this.data;\r\n if (!data || data.series.length === 0 || !data.categoryData)\r\n return [];\r\n\r\n let dataPoints: HoverLineDataPoint[] = [];\r\n let category: any;\r\n\r\n debug.assert(columnIndex < data.categoryData.length, 'category index out of range');\r\n let categoryDataPoint: LineChartDataPoint = data.categoryData[columnIndex];\r\n if (this.data.isScalar) {\r\n if (categoryDataPoint) {\r\n if (AxisHelper.isDateTime(this.xAxisProperties.axisType)) {\r\n category = CartesianHelper.lookupXValue(this.data, categoryDataPoint.categoryValue, this.xAxisProperties.axisType, this.data.isScalar);\r\n }\r\n else {\r\n category = categoryDataPoint.categoryValue;\r\n }\r\n }\r\n }\r\n else {\r\n category = CartesianHelper.lookupXValue(this.data, columnIndex, this.xAxisProperties.axisType, this.data.isScalar);\r\n }\r\n\r\n let formatStringProp = lineChartProps.general.formatString;\r\n\r\n for (let series of data.series) {\r\n let lineData = series.data;\r\n let lineDataPoint: LineChartDataPoint;\r\n if (this.data.isScalar) {\r\n if (categoryDataPoint) {\r\n lineDataPoint = lineData.filter((data) => {\r\n return data.categoryValue === categoryDataPoint.categoryValue;\r\n })[0];\r\n }\r\n }\r\n else {\r\n lineDataPoint = lineData[columnIndex];\r\n }\r\n\r\n let value = lineDataPoint && lineDataPoint.value;\r\n if (value != null) {\r\n let label = converterHelper.getFormattedLegendLabel(series.yCol, this.dataViewCat.values, formatStringProp);\r\n dataPoints.push({\r\n color: series.color,\r\n label: label,\r\n category: valueFormatter.format(category, valueFormatter.getFormatString(series.xCol, formatStringProp)),\r\n measure: valueFormatter.format(value, valueFormatter.getFormatString(series.yCol, formatStringProp)),\r\n value: value,\r\n stackedValue: lineDataPoint.stackedValue\r\n });\r\n }\r\n }\r\n\r\n return dataPoints;\r\n }\r\n\r\n private createLegendDataPoints(columnIndex: number): LegendData {\r\n let data = this.data;\r\n if (!data || !data.series || data.series.length < 1)\r\n return;\r\n\r\n let legendDataPoints: LegendDataPoint[] = [];\r\n let category: any;\r\n\r\n // 'category' and 'measure' are only for Mobile interactive legend, Minerva legend does not need them\r\n let categoryDataPoint: LineChartDataPoint = data.categoryData[columnIndex];\r\n if (this.isInteractiveChart && categoryDataPoint) {\r\n if (this.data.isScalar) {\r\n category = categoryDataPoint.categoryValue;\r\n if (AxisHelper.isDateTime(this.xAxisProperties.axisType))\r\n category = new Date(category);\r\n }\r\n else {\r\n category = CartesianHelper.lookupXValue(this.data, columnIndex, this.xAxisProperties.axisType, this.data.isScalar);\r\n }\r\n }\r\n\r\n let formatStringProp = lineChartProps.general.formatString;\r\n let seriesYCol: DataViewMetadataColumn = null;\r\n // iterating over the line data (i is for a line)\r\n for (let i = 0, len = data.series.length; i < len; i++) {\r\n let series = data.series[i];\r\n let lineData = series.data;\r\n\r\n // 'category' and 'measure' are only for Mobile interactive legend, Minerva legend does not need them\r\n let measure: any;\r\n if (this.isInteractiveChart) {\r\n let lineDataPoint;\r\n if (this.data.isScalar) {\r\n // Scalar series skip null values, and therefore do not share the same category index\r\n // Search this series for the categoryValue - it may not exist\r\n if (categoryDataPoint) {\r\n let targetCategoryValue = categoryDataPoint.categoryValue;\r\n for (let i = 0; i < lineData.length; i++) {\r\n if (lineData[i].categoryValue === targetCategoryValue) {\r\n lineDataPoint = lineData[i];\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n // ordinal series all share the same x-indicies\r\n lineDataPoint = lineData[columnIndex];\r\n }\r\n measure = lineDataPoint && lineDataPoint.value;\r\n }\r\n\r\n let label = converterHelper.getFormattedLegendLabel(series.yCol, this.dataViewCat.values, formatStringProp);\r\n seriesYCol = series.yCol;\r\n legendDataPoints.push({\r\n color: series.color,\r\n icon: LegendIcon.Line,\r\n label: label,\r\n // TODO: category: CartesianChartInteractiveLegend only needs one category value for part of the Title, we don't need to put it on each point.\r\n category: valueFormatter.format(category, valueFormatter.getFormatString(series.xCol, formatStringProp)),\r\n measure: valueFormatter.format(measure, valueFormatter.getFormatString(series.yCol, formatStringProp)),\r\n identity: series.identity,\r\n selected: series.selected,\r\n });\r\n }\r\n\r\n let dvValues = this.dataViewCat ? this.dataViewCat.values : null;\r\n let title = dvValues && dvValues.source ? dvValues.source.displayName : \"\";\r\n return {\r\n title: title,\r\n dataPoints: legendDataPoints\r\n };\r\n }\r\n\r\n private createLabelDataPoints(): LabelDataPointsGroup[] {\r\n let xScale = this.xAxisProperties.scale;\r\n let yScale = this.yAxisProperties.scale;\r\n let horizontalOffset = this.extraLineShift();\r\n let data = this.data;\r\n let series = data.series;\r\n let formattersCache = NewDataLabelUtils.createColumnFormatterCacheManager();\r\n let dataLabelsSettings = data.dataLabelsSettings;\r\n let isStackedArea = EnumExtensions.hasFlag(this.lineType, LineChartType.stackedArea);\r\n let labelDataPointsGroups: LabelDataPointsGroup[] = [];\r\n let labelSettings: LineChartDataLabelsSettings;\r\n let axisFormatter: number;\r\n let seriesLabelDataPoints: LabelDataPoint[];\r\n let seriesDataPointsCandidates: LineChartDataPoint[];\r\n let seriesIndex;\r\n let seriesCount;\r\n\r\n for (seriesIndex = 0, seriesCount = series.length; seriesIndex < seriesCount; seriesIndex++) {\r\n let currentSeries = series[seriesIndex];\r\n labelSettings = (currentSeries.labelSettings) ? currentSeries.labelSettings : dataLabelsSettings;\r\n if (!labelSettings.show)\r\n continue;\r\n\r\n axisFormatter = NewDataLabelUtils.getDisplayUnitValueFromAxisFormatter(this.yAxisProperties.formatter, labelSettings);\r\n let dataPoints = currentSeries.data;\r\n seriesLabelDataPoints = [];\r\n seriesDataPointsCandidates = [];\r\n \r\n let createLabelDataPoint: (dataPoint: LineChartDataPoint, seriesIndex) => LabelDataPoint = (dataPoint: LineChartDataPoint) => {\r\n if (dataPoint.value == null)\r\n return null;\r\n\r\n let formatString = \"\";\r\n formatString = dataPoint.labelFormatString;\r\n let formatter = formattersCache.getOrCreate(formatString, labelSettings, axisFormatter);\r\n let text = NewDataLabelUtils.getLabelFormattedText(formatter.format(dataPoint.value));\r\n\r\n let properties: TextProperties = {\r\n text: text,\r\n fontFamily: NewDataLabelUtils.LabelTextProperties.fontFamily,\r\n fontSize: PixelConverter.fromPoint(labelSettings.fontSize),\r\n fontWeight: NewDataLabelUtils.LabelTextProperties.fontWeight,\r\n };\r\n let textWidth = TextMeasurementService.measureSvgTextWidth(properties) + NewDataLabelUtils.LabelDensityPadding;\r\n let textHeight = TextMeasurementService.estimateSvgTextHeight(properties, true /* tightFitForNumeric */);\r\n let parentShape: LabelParentRect | LabelParentPoint;\r\n let isParentRect: boolean = false;\r\n\r\n if (isStackedArea) {\r\n let bottomPos = Math.max(dataPoint.stackedValue - dataPoint.value, yScale.domain()[0]);//this is to make sure the bottom position doesn't go below the domain\r\n parentShape = {\r\n rect: {\r\n left: xScale(this.getXValue(dataPoint)),\r\n top: yScale(Math.max(dataPoint.stackedValue, dataPoint.stackedValue - dataPoint.value)),\r\n width: horizontalOffset * 2,\r\n height: Math.abs(yScale(dataPoint.stackedValue) - yScale(bottomPos))\r\n },\r\n orientation: dataPoint.value >= 0 ? NewRectOrientation.VerticalBottomBased : NewRectOrientation.VerticalTopBased,\r\n validPositions: LineChart.validStackedLabelPositions,\r\n };\r\n\r\n isParentRect = true;\r\n }\r\n else {\r\n parentShape = {\r\n point: {\r\n x: xScale(this.getXValue(dataPoint)) + horizontalOffset,\r\n y: yScale(dataPoint.value),\r\n },\r\n radius: 0,\r\n validPositions: this.lineChartLabelDensityEnabled ? LineChart.validLabelPositions : [NewPointLabelPosition.Above],\r\n };\r\n }\r\n\r\n let labelDataPoint: LabelDataPoint = {\r\n isPreferred: false,\r\n text: text,\r\n textSize: {\r\n width: textWidth,\r\n height: textHeight,\r\n },\r\n outsideFill: labelSettings.labelColor ? labelSettings.labelColor : NewDataLabelUtils.defaultLabelColor,\r\n insideFill: labelSettings.labelColor && isStackedArea ? labelSettings.labelColor : NewDataLabelUtils.defaultInsideLabelColor,\r\n parentType: isParentRect ? LabelDataPointParentType.Rectangle : LabelDataPointParentType.Point,\r\n parentShape: parentShape,\r\n fontSize: labelSettings.fontSize,\r\n identity: dataPoint.identity,\r\n key: dataPoint.key,\r\n };\r\n return labelDataPoint;\r\n };\r\n\r\n if (!_.isEmpty(dataPoints)) {\r\n let categoryCount = dataPoints.length;\r\n let lastDataPoint = dataPoints[categoryCount - 1];\r\n let lastLabelDataPoint = createLabelDataPoint(lastDataPoint, seriesIndex);\r\n if (lastLabelDataPoint)\r\n seriesLabelDataPoints.push(lastLabelDataPoint);\r\n for (let categoryIndex = 0; categoryIndex < categoryCount - 1; categoryIndex++) {\r\n let labelDataPoint = createLabelDataPoint(dataPoints[categoryIndex], seriesIndex);\r\n if (labelDataPoint)\r\n seriesLabelDataPoints.push(labelDataPoint);\r\n }\r\n }\r\n \r\n let maxLabelsToRender = dataPoints.length;\r\n labelDataPointsGroups[seriesIndex] = {\r\n labelDataPoints: seriesLabelDataPoints,\r\n maxNumberOfLabels: maxLabelsToRender,\r\n };\r\n }\r\n\r\n return labelDataPointsGroups;\r\n }\r\n\r\n //private isMinMax(index: number, dataPoints: LineChartDataPoint[]): boolean {\r\n // // Check if the point is the start/end point\r\n // if (!dataPoints[index - 1] || !dataPoints[index + 1])\r\n // return true;\r\n\r\n // let currentValue = dataPoints[index].value;\r\n // let prevValue = dataPoints[index - 1].value;\r\n // let nextValue = dataPoints[index + 1].value;\r\n // return (prevValue > currentValue && currentValue < nextValue) // Min point\r\n // || (prevValue < currentValue && currentValue > nextValue); // Max point\r\n //}\r\n\r\n //private calculatePointsWeight(labelDataPoints: LabelDataPoint[], dataPointsCandidates: LineChartDataPoint[], minIndex: number, maxIndex: number) {\r\n // let previousMinMaxIndex = 0;\r\n // labelDataPoints[0].weight = dataPointsCandidates[0].weight = 0;\r\n // let previousMinMax: LineChartDataPoint = dataPointsCandidates[0];\r\n // let dataPointCount = labelDataPoints.length;\r\n // let yScale = this.yAxisProperties.scale;\r\n // let totalValueDelta = yScale(dataPointsCandidates[maxIndex].value) - yScale(dataPointsCandidates[minIndex].value);\r\n\r\n // for (let i = 1; i < dataPointCount; i++) {\r\n // let dataPoint = dataPointsCandidates[i];\r\n // let weight = (Math.abs(yScale(previousMinMax.value) - yScale(dataPoint.value))) / totalValueDelta + (i - previousMinMaxIndex) / dataPointCount;\r\n // labelDataPoints[i].weight = weight;\r\n // if (this.isMinMax(i, dataPointsCandidates)) {\r\n // previousMinMax.weight += weight;\r\n // previousMinMax = dataPoint;\r\n // previousMinMaxIndex = i;\r\n // }\r\n // }\r\n //}\r\n\r\n //private sortByWeightAndPreferrance(a: LabelDataPoint, b: LabelDataPoint): number {\r\n // // Compare by prederrance first\r\n // if (!a.isPreferred && b.isPreferred) return 1;\r\n // if (a.isPreferred && !b.isPreferred) return -1;\r\n // // Compare by weight\r\n // if ((!a.weight && b.weight) || (a.weight < b.weight)) return 1;\r\n // if ((a.weight && !b.weight) || (a.weight > b.weight)) return -1;\r\n // return 0;\r\n //}\r\n \r\n private showLabelPerSeries(): boolean {\r\n let data = this.data;\r\n return !data.hasDynamicSeries && (data.series.length > 1 || !data.categoryMetadata) && this.seriesLabelFormattingEnabled;\r\n }\r\n \r\n /**\r\n * Obtains the pointLabelPosition for the category index within the given series\r\n * \r\n * Rules for line chart data labels:\r\n * 1. Top and bottom > left and right\r\n * 2. Top > bottom unless we're at a local minimum\r\n * 3. Right > left unless:\r\n * a. There is no data point to the left and there is one to the right\r\n * b. There is an equal data point to the right, but not to the left\r\n */\r\n //private getValidLabelPositions(series: LineChartSeries, categoryIndex: number): NewPointLabelPosition[]{\r\n // let data = series.data;\r\n // let dataLength = data.length;\r\n // let isLastPoint = categoryIndex === (dataLength - 1);\r\n // let isFirstPoint = categoryIndex === 0;\r\n \r\n // let currentValue = data[categoryIndex].value;\r\n // let previousValue = !isFirstPoint ? data[categoryIndex - 1].value : undefined;\r\n // let nextValue = !isLastPoint ? data[categoryIndex + 1].value : undefined;\r\n // let previousRelativePosition = LineChartRelativePosition.equal;\r\n // let nextRelativePosition = LineChartRelativePosition.equal;\r\n // if (previousValue === null || previousValue === undefined) {\r\n // previousRelativePosition = LineChartRelativePosition.none;\r\n // }\r\n // else if (previousValue > currentValue) {\r\n // previousRelativePosition = LineChartRelativePosition.greater;\r\n // }\r\n // else if (previousValue < currentValue) {\r\n // previousRelativePosition = LineChartRelativePosition.lesser;\r\n // }\r\n // if (nextValue === null || nextValue === undefined) {\r\n // nextRelativePosition = LineChartRelativePosition.none;\r\n // }\r\n // else if (nextValue > currentValue) {\r\n // nextRelativePosition = LineChartRelativePosition.greater;\r\n // }\r\n // else if (nextValue < currentValue) {\r\n // nextRelativePosition = LineChartRelativePosition.lesser;\r\n // }\r\n\r\n // switch (previousRelativePosition) {\r\n // case LineChartRelativePosition.none:\r\n // switch (nextRelativePosition) {\r\n // case LineChartRelativePosition.none:\r\n // return [NewPointLabelPosition.Above, NewPointLabelPosition.Below, NewPointLabelPosition.Right, NewPointLabelPosition.Left];\r\n // case LineChartRelativePosition.equal:\r\n // return [NewPointLabelPosition.Above, NewPointLabelPosition.Below, NewPointLabelPosition.Left, NewPointLabelPosition.Right];\r\n // case LineChartRelativePosition.greater:\r\n // return [NewPointLabelPosition.Below, NewPointLabelPosition.Above, NewPointLabelPosition.Left, NewPointLabelPosition.Right];\r\n // case LineChartRelativePosition.lesser:\r\n // return [NewPointLabelPosition.Above, NewPointLabelPosition.Below, NewPointLabelPosition.Left, NewPointLabelPosition.Right];\r\n // }\r\n // case LineChartRelativePosition.equal:\r\n // switch (nextRelativePosition) {\r\n // case LineChartRelativePosition.none:\r\n // return [NewPointLabelPosition.Above, NewPointLabelPosition.Below, NewPointLabelPosition.Right, NewPointLabelPosition.Left];\r\n // case LineChartRelativePosition.equal:\r\n // return [NewPointLabelPosition.Above, NewPointLabelPosition.Below, NewPointLabelPosition.Right, NewPointLabelPosition.Left];\r\n // case LineChartRelativePosition.greater:\r\n // return [NewPointLabelPosition.Below, NewPointLabelPosition.Above, NewPointLabelPosition.Right, NewPointLabelPosition.Left];\r\n // case LineChartRelativePosition.lesser:\r\n // return [NewPointLabelPosition.Above, NewPointLabelPosition.Below, NewPointLabelPosition.Right, NewPointLabelPosition.Left];\r\n // }\r\n // case LineChartRelativePosition.greater:\r\n // switch (nextRelativePosition) {\r\n // case LineChartRelativePosition.none:\r\n // return [NewPointLabelPosition.Below, NewPointLabelPosition.Above, NewPointLabelPosition.Right, NewPointLabelPosition.Left];\r\n // case LineChartRelativePosition.equal:\r\n // return [NewPointLabelPosition.Below, NewPointLabelPosition.Above, NewPointLabelPosition.Left, NewPointLabelPosition.Right];\r\n // case LineChartRelativePosition.greater:\r\n // return [NewPointLabelPosition.Below, NewPointLabelPosition.Above, NewPointLabelPosition.Right, NewPointLabelPosition.Left];\r\n // case LineChartRelativePosition.lesser:\r\n // return [NewPointLabelPosition.Above, NewPointLabelPosition.Below, NewPointLabelPosition.Right, NewPointLabelPosition.Left];\r\n // }\r\n // case LineChartRelativePosition.lesser:\r\n // switch (nextRelativePosition) {\r\n // case LineChartRelativePosition.none:\r\n // return [NewPointLabelPosition.Above, NewPointLabelPosition.Below, NewPointLabelPosition.Right, NewPointLabelPosition.Left];\r\n // case LineChartRelativePosition.equal:\r\n // return [NewPointLabelPosition.Above, NewPointLabelPosition.Below, NewPointLabelPosition.Left, NewPointLabelPosition.Right];\r\n // case LineChartRelativePosition.greater:\r\n // return [NewPointLabelPosition.Above, NewPointLabelPosition.Below, NewPointLabelPosition.Right, NewPointLabelPosition.Left];\r\n // case LineChartRelativePosition.lesser:\r\n // return [NewPointLabelPosition.Above, NewPointLabelPosition.Below, NewPointLabelPosition.Right, NewPointLabelPosition.Left];\r\n // }\r\n // }\r\n //}\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n import Color = jsCommon.Color;\r\n import PixelConverter = jsCommon.PixelConverter;\r\n import Polygon = shapes.Polygon;\r\n\r\n export interface MapConstructionOptions {\r\n filledMap?: boolean;\r\n geocoder?: IGeocoder;\r\n mapControlFactory?: IMapControlFactory;\r\n behavior?: MapBehavior;\r\n tooltipsEnabled?: boolean;\r\n filledMapDataLabelsEnabled?: boolean; \r\n disableZooming?: boolean;\r\n disablePanning?: boolean;\r\n isLegendScrollable?: boolean;\r\n viewChangeThrottleInterval?: number; // Minimum interval between viewChange events (in milliseconds)\r\n }\r\n\r\n export interface IMapControlFactory {\r\n createMapControl(element: HTMLElement, options?: Microsoft.Maps.MapOptions): Microsoft.Maps.Map;\r\n ensureMap(locale: string, action: () => void): void;\r\n }\r\n\r\n /** Note: public for UnitTest */\r\n export interface MapDataPoint {\r\n geocodingQuery: string;\r\n location?: IGeocodeCoordinate; // Value from the loaded data\r\n cachedLocation?: IGeocodeCoordinate; // Value either loaded or geocoded\r\n paths?: IGeocodeBoundaryPolygon[];\r\n value: number;\r\n radius?: number;\r\n seriesInfo: MapSeriesInfo;\r\n categoryIdentity: DataViewScopeIdentity;\r\n categoryValue: string;\r\n }\r\n\r\n /** Note: public for UnitTest */\r\n export interface MapPieSlice {\r\n value: number;\r\n index: number;\r\n fill: string;\r\n stroke: string;\r\n seriesId: DataViewScopeIdentity;\r\n }\r\n\r\n /** Note: public for UnitTest */\r\n export interface MapSeriesInfo {\r\n sizeValuesForGroup: MapPieSlice[];\r\n latitude?: number;\r\n longitude?: number;\r\n }\r\n\r\n export interface MapData {\r\n bubbleData?: MapBubble[];\r\n sliceData?: MapSlice[][];\r\n shapeData?: MapShape[];\r\n }\r\n\r\n export interface MapVisualDataPoint extends TooltipEnabledDataPoint, SelectableDataPoint {\r\n x: number;\r\n y: number;\r\n radius: number;\r\n fill: string;\r\n stroke: string;\r\n strokeWidth: number;\r\n labeltext: string;\r\n labelFill: string;\r\n }\r\n\r\n export interface MapBubble extends MapVisualDataPoint {\r\n }\r\n\r\n export interface MapSlice extends MapVisualDataPoint {\r\n value: number;\r\n startAngle?: number;\r\n endAngle?: number;\r\n }\r\n\r\n export interface MapShape extends TooltipEnabledDataPoint, SelectableDataPoint {\r\n absolutePointArray: Float64Array;\r\n path: string;\r\n fill: string;\r\n stroke: string;\r\n strokeWidth: number;\r\n key: string;\r\n labeltext: string;\r\n displayLabel: boolean;\r\n catagoryLabeltext?: string;\r\n labelFormatString: string;\r\n }\r\n\r\n /** \r\n * Used because data points used in D3 pie layouts are placed within a container with pie information.\r\n */\r\n interface MapSliceContainer {\r\n data: MapSlice;\r\n }\r\n\r\n /** Note: public for UnitTest */\r\n export interface IMapDataPointRenderer {\r\n init(mapControl: Microsoft.Maps.Map, mapDiv: JQuery, addClearCatcher: boolean): void;\r\n beginDataPointUpdate(geocodingCategory: string, dataPointCount: number): void;\r\n addDataPoint(dataPoint: MapDataPoint): void;\r\n getDataPointCount(): number;\r\n converter(viewPort: IViewport, dataView: DataView, labelSettings: PointDataLabelsSettings, interactivityService: IInteractivityService): MapData;\r\n updateInternal(data: MapData, viewport: IViewport, dataChanged: boolean, interactivityService: IInteractivityService, redrawDataLabels: boolean): MapBehaviorOptions;\r\n updateInternalDataLabels(viewport: IViewport, redrawDataLabels: boolean): void;\r\n getDataPointPadding(): number;\r\n clearDataPoints(): void;\r\n }\r\n\r\n export interface DataViewMetadataAutoGeneratedColumn extends DataViewMetadataColumn {\r\n /**\r\n * Indicates that the column was added manually.\r\n */\r\n isAutoGeneratedColumn?: boolean;\r\n }\r\n\r\n export const MaxLevelOfDetail = 23;\r\n export const MinLevelOfDetail = 1;\r\n export const DefaultFillOpacity = 0.5;\r\n export const DefaultBackgroundColor = \"#000000\";\r\n export const LeaderLineColor = \"#000000\";\r\n\r\n export class MapBubbleDataPointRenderer implements IMapDataPointRenderer {\r\n private mapControl: Microsoft.Maps.Map;\r\n private values: MapDataPoint[];\r\n private maxDataPointRadius: number;\r\n private svg: D3.Selection;\r\n private clearSvg: D3.Selection;\r\n private clearCatcher: D3.Selection;\r\n private bubbleGraphicsContext: D3.Selection;\r\n private sliceGraphicsContext: D3.Selection;\r\n private labelGraphicsContext: D3.Selection;\r\n private labelBackgroundGraphicsContext: D3.Selection;\r\n private sliceLayout: D3.Layout.PieLayout;\r\n private arc: D3.Svg.Arc;\r\n private dataLabelsSettings: PointDataLabelsSettings;\r\n private tooltipsEnabled: boolean;\r\n private static validLabelPositions: NewPointLabelPosition[] = [NewPointLabelPosition.Above, NewPointLabelPosition.Below, NewPointLabelPosition.Left, NewPointLabelPosition.Right];\r\n private mapData: MapData;\r\n private root: JQuery;\r\n\r\n public constructor(tooltipsEnabled: boolean) {\r\n this.values = [];\r\n this.tooltipsEnabled = tooltipsEnabled;\r\n }\r\n\r\n public init(mapControl: Microsoft.Maps.Map, mapDiv: JQuery, addClearCatcher: boolean): void {\r\n /*\r\n The layout of the visual would look like :\r\n <div class=\"visual mapControl\">\r\n <div class=\"MicrosoftMap\">\r\n <!-- Bing maps stuff -->\r\n <svg>\r\n <rect class=\"clearCatcher\"></rect>\r\n </svg>\r\n </div>\r\n <svg>\r\n <g class=\"mapBubbles>\r\n <!-- our geometry -->\r\n </g>\r\n <g class=\"mapSlices>\r\n <!-- our geometry -->\r\n </g>\r\n </svg>\r\n </div> \r\n\r\n */\r\n\r\n this.mapControl = mapControl;\r\n this.root = mapDiv;\r\n let root = d3.select(mapDiv[0]);\r\n root.attr(\"drag-resize-disabled\", \"true\"); // Enable panning within the maps in IE\r\n let svg = this.svg = root\r\n .append('svg')\r\n .style(\"position\", \"absolute\") // Absolute position so that the svg will overlap with the canvas.\r\n .style(\"pointer-events\", \"none\");\r\n if (addClearCatcher) {\r\n let clearSvg = this.clearSvg = d3.select(<HTMLElement>this.mapControl.getRootElement())\r\n .append('svg')\r\n .style('position', 'absolute'); // Absolute position so that the svg will overlap with the canvas.\r\n this.clearCatcher = appendClearCatcher(clearSvg);\r\n }\r\n this.bubbleGraphicsContext = svg\r\n .append(\"g\")\r\n .classed(\"mapBubbles\", true);\r\n this.sliceGraphicsContext = svg\r\n .append(\"g\")\r\n .classed(\"mapSlices\", true);\r\n this.labelBackgroundGraphicsContext = svg\r\n .append(\"g\")\r\n .classed(NewDataLabelUtils.labelBackgroundGraphicsContextClass.class, true);\r\n this.labelGraphicsContext = svg\r\n .append(\"g\")\r\n .classed(NewDataLabelUtils.labelGraphicsContextClass.class, true);\r\n this.sliceLayout = d3.layout.pie()\r\n .sort(null)\r\n .value((d: MapSlice) => {\r\n return d.value;\r\n });\r\n this.arc = d3.svg.arc();\r\n this.clearMaxDataPointRadius();\r\n this.dataLabelsSettings = dataLabelUtils.getDefaultMapLabelSettings();\r\n }\r\n\r\n public addDataPoint(dataPoint: MapDataPoint): void {\r\n this.values.push(dataPoint);\r\n }\r\n\r\n public clearDataPoints(): void {\r\n this.values = [];\r\n }\r\n\r\n public getDataPointCount(): number {\r\n // Filter out any data points without a location since those aren't actually being drawn\r\n return _.filter(this.values, (value: MapDataPoint) => !!value.cachedLocation).length;\r\n }\r\n\r\n public getDataPointPadding(): number {\r\n return this.maxDataPointRadius * 2;\r\n }\r\n\r\n private clearMaxDataPointRadius(): void {\r\n this.maxDataPointRadius = 0;\r\n }\r\n\r\n private setMaxDataPointRadius(dataPointRadius: number): void {\r\n this.maxDataPointRadius = Math.max(dataPointRadius, this.maxDataPointRadius);\r\n }\r\n\r\n public beginDataPointUpdate(geocodingCategory: string, dataPointCount: number): void {\r\n this.values.length = 0;\r\n }\r\n\r\n public getDefaultMap(geocodingCategory: string, dataPointCount: number): void {\r\n this.values.length = 0;\r\n }\r\n\r\n public converter(viewport: IViewport, dataView: DataView, labelSettings: PointDataLabelsSettings, interactivityService: IInteractivityService): MapData {\r\n let mapControl = this.mapControl;\r\n let widthOverTwo = viewport.width / 2;\r\n let heightOverTwo = viewport.height / 2;\r\n\r\n let strokeWidth = 1;\r\n\r\n //update data label settings\r\n this.dataLabelsSettings = labelSettings;\r\n\r\n // See MapSeriesPresenter::GetDataPointRadius for the PV behavior\r\n let radiusScale = Math.min(viewport.width, viewport.height) / 384;\r\n this.clearMaxDataPointRadius();\r\n\r\n let bubbleData: MapBubble[] = [];\r\n let sliceData: MapSlice[][] = [];\r\n let formatStringProp = mapProps.general.formatString;\r\n let categorical: DataViewCategorical = dataView ? dataView.categorical : null;\r\n\r\n let grouped: DataViewValueColumnGroup[];\r\n let sizeIndex = -1;\r\n let dataValuesSource: DataViewMetadataColumn;\r\n if (categorical && categorical.values) {\r\n grouped = categorical.values.grouped();\r\n sizeIndex = DataRoleHelper.getMeasureIndexOfRole(grouped, \"Size\");\r\n dataValuesSource = categorical.values.source;\r\n }\r\n\r\n for (let i = 0, len = this.values.length; i < len; i++) {\r\n let canvasDataPoint = this.values[i];\r\n let categoryValue = canvasDataPoint.categoryValue;\r\n let location = canvasDataPoint.cachedLocation;\r\n\r\n if (location) {\r\n let xy = mapControl.tryLocationToPixel(new Microsoft.Maps.Location(location.latitude, location.longitude));\r\n let x = xy.x + widthOverTwo;\r\n let y = xy.y + heightOverTwo;\r\n\r\n let radius = canvasDataPoint.radius * radiusScale;\r\n this.setMaxDataPointRadius(radius);\r\n let sizeValuesForGroup = canvasDataPoint.seriesInfo.sizeValuesForGroup;\r\n\r\n let categoryColumn = categorical.categories[0];\r\n let dataMap: SelectorForColumn = {};\r\n\r\n let sliceCount = sizeValuesForGroup ? sizeValuesForGroup.length : 1;\r\n if (sliceCount === 1) {\r\n let sizeValueForGroup: MapPieSlice = sizeValuesForGroup[0];\r\n let value = sizeValueForGroup.value;\r\n let index = sizeValueForGroup.index;\r\n\r\n let seriesData: TooltipSeriesDataItem[] = [];\r\n if (dataValuesSource) {\r\n // Dynamic series\r\n seriesData.push({ value: grouped[index].name, metadata: { source: dataValuesSource, values: [] } });\r\n }\r\n if (sizeIndex > -1) {\r\n seriesData.push({ value: value, metadata: grouped[0].values[sizeIndex] });\r\n }\r\n\r\n let tooltipInfo: TooltipDataItem[] = TooltipBuilder.createTooltipInfo(formatStringProp, null, categoryValue, null, categorical.categories, seriesData);\r\n let mapBubble = sizeValuesForGroup[0];\r\n dataMap[categoryColumn.source.queryName] = canvasDataPoint.categoryIdentity;\r\n let identity = SelectionId.createWithSelectorForColumnAndMeasure(dataMap, null);\r\n\r\n bubbleData.push({\r\n x: x,\r\n y: y,\r\n labeltext: categoryValue,\r\n radius: radius,\r\n fill: mapBubble.fill,\r\n stroke: mapBubble.stroke,\r\n strokeWidth: strokeWidth,\r\n tooltipInfo: tooltipInfo,\r\n identity: identity,\r\n selected: false,\r\n labelFill: labelSettings.labelColor,\r\n });\r\n }\r\n else {\r\n let slices = [];\r\n let measureColumn = categorical.values[0];\r\n dataMap[categoryColumn.source.queryName] = canvasDataPoint.categoryIdentity;\r\n\r\n for (let j = 0; j < sliceCount; ++j) {\r\n let sizeValueForGroup: MapPieSlice = sizeValuesForGroup[j];\r\n let value = sizeValueForGroup.value;\r\n let index = sizeValueForGroup.index;\r\n\r\n let seriesData: TooltipSeriesDataItem[] = [];\r\n if (dataValuesSource) {\r\n // Dynamic series\r\n seriesData.push({ value: grouped[index].name, metadata: { source: dataValuesSource, values: [] } });\r\n }\r\n if (sizeIndex > -1) {\r\n seriesData.push({ value: value, metadata: grouped[0].values[sizeIndex] });\r\n }\r\n\r\n let tooltipInfo: TooltipDataItem[] = TooltipBuilder.createTooltipInfo(formatStringProp, null, categoryValue, null, categorical.categories, seriesData);\r\n let mapSlice = sizeValuesForGroup[j];\r\n dataMap[measureColumn.source.queryName] = mapSlice.seriesId;\r\n let identity = SelectionId.createWithSelectorForColumnAndMeasure(dataMap, null);\r\n\r\n slices.push({\r\n x: x,\r\n y: y,\r\n labeltext: categoryValue,\r\n radius: radius,\r\n fill: mapSlice.fill,\r\n stroke: mapSlice.stroke,\r\n strokeWidth: strokeWidth,\r\n value: value,\r\n tooltipInfo: tooltipInfo,\r\n identity: identity,\r\n selected: false,\r\n labelFill: labelSettings.labelColor,\r\n });\r\n }\r\n if (interactivityService) {\r\n interactivityService.applySelectionStateToData(slices);\r\n }\r\n sliceData.push(slices);\r\n }\r\n }\r\n }\r\n\r\n if (interactivityService) {\r\n interactivityService.applySelectionStateToData(bubbleData);\r\n }\r\n\r\n return { bubbleData: bubbleData, sliceData: sliceData };\r\n }\r\n\r\n public updateInternal(data: MapData, viewport: IViewport, dataChanged: boolean, interactivityService: IInteractivityService, redrawDataLabels: boolean): MapBehaviorOptions {\r\n debug.assertValue(viewport, \"viewport\");\r\n Map.removeTransform3d(this.root);\r\n\r\n this.mapData = data;\r\n if (this.svg) {\r\n this.svg\r\n .style(\"width\", viewport.width.toString() + \"px\")\r\n .style(\"height\", viewport.height.toString() + \"px\");\r\n }\r\n if (this.clearSvg) {\r\n this.clearSvg\r\n .style(\"width\", viewport.width.toString() + \"px\")\r\n .style(\"height\", viewport.height.toString() + \"px\");\r\n }\r\n\r\n let arc = this.arc;\r\n\r\n let hasSelection = interactivityService && interactivityService.hasSelection();\r\n\r\n let bubbles = this.bubbleGraphicsContext.selectAll(\".bubble\").data(data.bubbleData, (d: MapBubble) => d.identity.getKey());\r\n\r\n bubbles.enter()\r\n .append(\"circle\")\r\n .classed(\"bubble\", true);\r\n bubbles\r\n .attr(\"cx\", (d: MapBubble) => d.x)\r\n .attr(\"cy\", (d: MapBubble) => d.y)\r\n .attr(\"r\", (d: MapBubble) => d.radius)\r\n .style(\"fill\", (d: MapBubble) => d.fill)\r\n .style(\"stroke\", (d: MapBubble) => d.stroke)\r\n .style(\"fill-opacity\", (d: MapBubble) => ColumnUtil.getFillOpacity(d.selected, false, hasSelection, false))\r\n .style(\"strokeWidth\", (d: MapBubble) => d.strokeWidth)\r\n .style(\"stroke-opacity\", (d: MapBubble) => ColumnUtil.getFillOpacity(d.selected, false, hasSelection, false))\r\n .style(\"cursor\", \"default\");\r\n bubbles.exit().remove();\r\n\r\n if (this.tooltipsEnabled) {\r\n TooltipManager.addTooltip(bubbles, (tooltipEvent: TooltipEvent) => tooltipEvent.data.tooltipInfo);\r\n bubbles.style(\"pointer-events\", \"all\");\r\n }\r\n\r\n let sliceData = data.sliceData;\r\n\r\n let sliceContainers = this.sliceGraphicsContext.selectAll(\".sliceContainer\").data(sliceData);\r\n sliceContainers.enter()\r\n .append(\"g\")\r\n .classed(\"sliceContainer\", true);\r\n\r\n sliceContainers.exit().remove();\r\n\r\n let sliceLayout = this.sliceLayout;\r\n let slices = sliceContainers.selectAll(\".slice\")\r\n .data(function (d) {\r\n return sliceLayout(d);\r\n }, (d: MapSliceContainer) => d.data.identity.getKey());\r\n\r\n slices.enter()\r\n .append(\"path\")\r\n .classed(\"slice\", true);\r\n\r\n slices\r\n .style(\"fill\", (t: MapSliceContainer) => t.data.fill)\r\n .style(\"fill-opacity\", (d) => ColumnUtil.getFillOpacity(d.data.selected, false, hasSelection, false))\r\n .style(\"stroke\", (t: MapSliceContainer) => t.data.stroke)\r\n .style(\"strokeWidth\", (t: MapSliceContainer) => t.data.strokeWidth)\r\n .style(\"stroke-opacity\", (d) => ColumnUtil.getFillOpacity(d.data.selected, false, hasSelection, false))\r\n .style(\"cursor\", \"default\")\r\n .attr(\"transform\", (t: MapSliceContainer) => SVGUtil.translate(t.data.x, t.data.y))\r\n .attr('d', (t: MapSliceContainer) => {\r\n return arc.innerRadius(0).outerRadius((t: MapSliceContainer) => t.data.radius)(t);\r\n });\r\n\r\n slices.exit().remove();\r\n\r\n this.updateInternalDataLabels(viewport, redrawDataLabels);\r\n\r\n if (this.tooltipsEnabled) {\r\n TooltipManager.addTooltip(slices, (tooltipEvent: TooltipEvent) => tooltipEvent.data.data.tooltipInfo);\r\n slices.style(\"pointer-events\", \"all\");\r\n }\r\n\r\n let allData: SelectableDataPoint[] = data.bubbleData.slice();\r\n for (let i = 0, ilen = sliceData.length; i < ilen; i++) {\r\n allData.push.apply(allData, sliceData[i]);\r\n }\r\n\r\n let behaviorOptions: MapBehaviorOptions = {\r\n bubbles: bubbles,\r\n slices: this.sliceGraphicsContext.selectAll(\"path\"),\r\n clearCatcher: this.clearCatcher,\r\n dataPoints: allData,\r\n };\r\n return behaviorOptions;\r\n }\r\n\r\n public updateInternalDataLabels(viewport: IViewport, redrawDataLabels: boolean): void {\r\n let labelSettings = this.dataLabelsSettings;\r\n let dataLabels: Label[] = [];\r\n if (labelSettings && (labelSettings.show || labelSettings.showCategory)) {\r\n let labelDataPoints = this.createLabelDataPoints();\r\n let labelLayout = new LabelLayout({\r\n maximumOffset: NewDataLabelUtils.maxLabelOffset,\r\n startingOffset: NewDataLabelUtils.startingLabelOffset\r\n });\r\n let labelDataPointsGroup: LabelDataPointsGroup = {\r\n labelDataPoints: labelDataPoints,\r\n maxNumberOfLabels: labelDataPoints.length\r\n };\r\n dataLabels = labelLayout.layout([labelDataPointsGroup], { width: viewport.width, height: viewport.height });\r\n }\r\n\r\n NewDataLabelUtils.drawLabelBackground(this.labelGraphicsContext, dataLabels, powerbi.visuals.DefaultBackgroundColor, powerbi.visuals.DefaultFillOpacity);\r\n NewDataLabelUtils.drawDefaultLabels(this.labelGraphicsContext, dataLabels, false); // Once we properly split up and handle show and showCategory, the false here should change to !labelSettings.showCategory\r\n }\r\n\r\n private createLabelDataPoints(): LabelDataPoint[] {\r\n let data = this.mapData;\r\n let labelDataPoints: LabelDataPoint[] = [];\r\n let dataPoints = data.bubbleData;\r\n dataPoints = dataPoints.concat(_.map(data.sliceData, (value: MapSlice[]) => value[0]));\r\n let labelSettings = this.dataLabelsSettings;\r\n\r\n for (let dataPoint of dataPoints) {\r\n let text = dataPoint.labeltext;\r\n\r\n let properties: TextProperties = {\r\n text: text,\r\n fontFamily: NewDataLabelUtils.LabelTextProperties.fontFamily,\r\n fontSize: PixelConverter.fromPoint(labelSettings.fontSize),\r\n fontWeight: NewDataLabelUtils.LabelTextProperties.fontWeight,\r\n };\r\n let textWidth = TextMeasurementService.measureSvgTextWidth(properties);\r\n let textHeight = TextMeasurementService.estimateSvgTextHeight(properties);\r\n\r\n labelDataPoints.push({\r\n isPreferred: true,\r\n text: text,\r\n textSize: {\r\n width: textWidth,\r\n height: textHeight,\r\n },\r\n outsideFill: labelSettings.labelColor ? labelSettings.labelColor : NewDataLabelUtils.defaultInsideLabelColor, // Use inside for outside colors because we draw backgrounds for map labels\r\n insideFill: NewDataLabelUtils.defaultInsideLabelColor,\r\n parentType: LabelDataPointParentType.Point,\r\n parentShape: {\r\n point: {\r\n x: dataPoint.x,\r\n y: dataPoint.y,\r\n },\r\n radius: dataPoint.radius,\r\n validPositions: MapBubbleDataPointRenderer.validLabelPositions,\r\n },\r\n fontSize: labelSettings.fontSize,\r\n identity: undefined,\r\n hasBackground: true,\r\n });\r\n }\r\n\r\n return labelDataPoints;\r\n }\r\n }\r\n\r\n export interface FilledMapParams {\r\n level: number;\r\n maxPolygons: number;\r\n strokeWidth: number;\r\n }\r\n\r\n export class MapShapeDataPointRenderer implements IMapDataPointRenderer {\r\n\r\n private mapControl: Microsoft.Maps.Map;\r\n private svg: D3.Selection;\r\n private clearSvg: D3.Selection;\r\n private clearCatcher: D3.Selection;\r\n private geocodingCategory: string;\r\n private polygonInfo: MapPolygonInfo;\r\n private values: MapDataPoint[];\r\n private shapeGraphicsContext: D3.Selection;\r\n private labelGraphicsContext: D3.Selection;\r\n private labelBackgroundGraphicsContext: D3.Selection;\r\n private maxShapeDimension: number;\r\n private mapData: MapData;\r\n private dataLabelsSettings: PointDataLabelsSettings;\r\n private filledMapDataLabelsEnabled: boolean;\r\n private tooltipsEnabled: boolean;\r\n private labelLayout: FilledMapLabelLayout;\r\n private static validLabelPolygonPositions: NewPointLabelPosition[] = [NewPointLabelPosition.Center, NewPointLabelPosition.Below, NewPointLabelPosition.Above, NewPointLabelPosition.Right, NewPointLabelPosition.Left, NewPointLabelPosition.BelowRight, NewPointLabelPosition.BelowLeft, NewPointLabelPosition.AboveRight, NewPointLabelPosition.AboveLeft];\r\n private root: JQuery;\r\n\r\n public static getFilledMapParams(category: string, dataCount: number): FilledMapParams {\r\n switch (category) {\r\n case MapUtil.CategoryTypes.Continent:\r\n case MapUtil.CategoryTypes.CountryRegion:\r\n if (dataCount < 10) {\r\n return { level: 2, maxPolygons: 50, strokeWidth: 0 };\r\n }\r\n else if (dataCount < 30) {\r\n return { level: 2, maxPolygons: 20, strokeWidth: 0 };\r\n }\r\n return { level: 1, maxPolygons: 3, strokeWidth: 0 };\r\n default:\r\n if (dataCount < 100) {\r\n return { level: 1, maxPolygons: 5, strokeWidth: 6 };\r\n }\r\n if (dataCount < 200) {\r\n return { level: 0, maxPolygons: 5, strokeWidth: 6 };\r\n }\r\n return { level: 0, maxPolygons: 5, strokeWidth: 0 };\r\n }\r\n }\r\n\r\n public static buildPaths(locations: IGeocodeBoundaryPolygon[]): IGeocodeBoundaryPolygon[] {\r\n let paths = [];\r\n for (let i = 0; i < locations.length; i++) {\r\n let location = locations[i];\r\n let polygon = location.geographic;\r\n\r\n if (polygon.length > 2) {\r\n paths.push(location);\r\n }\r\n }\r\n\r\n return paths;\r\n }\r\n\r\n public constructor(fillMapDataLabelsEnabled: boolean, tooltipsEnabled: boolean) {\r\n this.values = [];\r\n this.filledMapDataLabelsEnabled = fillMapDataLabelsEnabled;\r\n this.tooltipsEnabled = tooltipsEnabled;\r\n }\r\n\r\n public init(mapControl: Microsoft.Maps.Map, mapDiv: JQuery, addClearCatcher: boolean): void {\r\n /*\r\n The layout of the visual would look like :\r\n <div class=\"visual mapControl\">\r\n <div class=\"MicrosoftMap\">\r\n <!-- Bing maps stuff -->\r\n <svg>\r\n <rect class=\"clearCatcher\"></rect>\r\n </svg>\r\n </div>\r\n <svg>\r\n <g class=\"mapShapes>\r\n <!-- our geometry -->\r\n </g>\r\n </svg>\r\n </div> \r\n\r\n */\r\n\r\n this.mapControl = mapControl;\r\n this.polygonInfo = new MapPolygonInfo();\r\n\r\n this.root = mapDiv;\r\n let root = d3.select(mapDiv[0]);\r\n root.attr('drag-resize-disabled', 'true'); // Enable panning within the maps in IE\r\n let svg = this.svg = root\r\n .append('svg')\r\n .style('position', 'absolute') // Absolute position so that the svg will overlap with the canvas.\r\n .style(\"pointer-events\", \"none\");\r\n if (addClearCatcher) {\r\n let clearSvg = this.clearSvg = d3.select(<HTMLElement>this.mapControl.getRootElement())\r\n .append('svg')\r\n .style('position', 'absolute'); // Absolute position so that the svg will overlap with the canvas.\r\n this.clearCatcher = appendClearCatcher(clearSvg);\r\n }\r\n this.shapeGraphicsContext = svg\r\n .append('g')\r\n .classed('mapShapes', true);\r\n this.labelBackgroundGraphicsContext = svg\r\n .append(\"g\")\r\n .classed(NewDataLabelUtils.labelBackgroundGraphicsContextClass.class, true);\r\n this.labelGraphicsContext = svg\r\n .append(\"g\")\r\n .classed(NewDataLabelUtils.labelGraphicsContextClass.class, true);\r\n\r\n this.clearMaxShapeDimension();\r\n this.dataLabelsSettings = dataLabelUtils.getDefaultMapLabelSettings();\r\n }\r\n\r\n public beginDataPointUpdate(geocodingCategory: string, dataPointCount: number) {\r\n this.geocodingCategory = geocodingCategory;\r\n this.values = [];\r\n }\r\n\r\n public addDataPoint(dataPoint: MapDataPoint) {\r\n this.values.push(dataPoint);\r\n }\r\n\r\n public clearDataPoints(): void {\r\n this.values = [];\r\n }\r\n\r\n public getDataPointCount(): number {\r\n // Filter out any data points without a location since those aren't actually being drawn\r\n return _.filter(this.values, (value: MapDataPoint) => !!value.paths).length;\r\n }\r\n\r\n public converter(viewport: IViewport, dataView: DataView, labelSettings: PointDataLabelsSettings, interactivityService?: IInteractivityService): MapData {\r\n this.clearMaxShapeDimension();\r\n this.dataLabelsSettings = labelSettings;\r\n let strokeWidth = 1;\r\n\r\n let shapeData: MapShape[] = [];\r\n let formatStringProp = mapProps.general.formatString;\r\n\r\n for (let categoryIndex = 0, categoryCount = this.values.length; categoryIndex < categoryCount; categoryIndex++) {\r\n let categorical: DataViewCategorical = dataView ? dataView.categorical : null;\r\n let canvasDataPoint: MapDataPoint = this.values[categoryIndex];\r\n let value = canvasDataPoint.categoryValue;\r\n let paths = canvasDataPoint.paths;\r\n let sizeValuesForGroup = canvasDataPoint.seriesInfo.sizeValuesForGroup;\r\n let sizeValueForGroup: MapPieSlice = sizeValuesForGroup && sizeValuesForGroup[0];\r\n\r\n let grouped: DataViewValueColumnGroup[];\r\n let sizeIndex = -1;\r\n let dataValuesSource: DataViewMetadataColumn;\r\n\r\n if (categorical && categorical.values) {\r\n grouped = categorical.values.grouped();\r\n sizeIndex = DataRoleHelper.getMeasureIndexOfRole(grouped, \"Size\");\r\n dataValuesSource = categorical.values.source;\r\n }\r\n\r\n if (paths && sizeValueForGroup) {\r\n let catagoryValue = sizeValueForGroup.value;\r\n let index = sizeValueForGroup.index;\r\n\r\n let seriesData: TooltipSeriesDataItem[] = [];\r\n if (dataValuesSource) {\r\n // Dynamic series\r\n seriesData.push({ value: grouped[index].name, metadata: { source: dataValuesSource, values: [] } });\r\n }\r\n if (sizeIndex > -1) {\r\n seriesData.push({ value: catagoryValue, metadata: grouped[0].values[sizeIndex] });\r\n }\r\n\r\n let tooltipInfo: TooltipDataItem[] = TooltipBuilder.createTooltipInfo(formatStringProp, null, value, null, categorical.categories, seriesData);\r\n let categoryColumn = categorical.categories[0];\r\n let dataMap: SelectorForColumn = {};\r\n dataMap[categoryColumn.source.queryName] = canvasDataPoint.categoryIdentity;\r\n let identity = SelectionId.createWithSelectorForColumnAndMeasure(dataMap, null);\r\n let idKey = identity.getKey();\r\n let formattersCache = NewDataLabelUtils.createColumnFormatterCacheManager();\r\n\r\n //Determine Largest Shape\r\n let mainShapeIndex = MapShapeDataPointRenderer.getIndexOfLargestShape(paths);\r\n\r\n for (let pathIndex = 0, pathCount = paths.length; pathIndex < pathCount; pathIndex++) {\r\n let path = paths[pathIndex];\r\n let labelFormatString = (dataView && dataView.categorical && !_.isEmpty(dataView.categorical.values)) ? valueFormatter.getFormatString(dataView.categorical.values[0].source, filledMapProps.general.formatString) : undefined;\r\n this.setMaxShapeDimension(path.absoluteBounds.width, path.absoluteBounds.height);\r\n let formatter = formattersCache.getOrCreate(labelFormatString, labelSettings);\r\n\r\n shapeData.push({\r\n absolutePointArray: canvasDataPoint.paths[pathIndex].absolute,\r\n path: path.absoluteString,\r\n fill: sizeValueForGroup.fill,\r\n stroke: sizeValueForGroup.stroke,\r\n strokeWidth: strokeWidth,\r\n tooltipInfo: tooltipInfo,\r\n identity: identity,\r\n selected: false,\r\n key: JSON.stringify({ id: idKey, pIdx: pathIndex }),\r\n displayLabel: pathIndex === mainShapeIndex,\r\n labeltext: value,\r\n catagoryLabeltext: (catagoryValue != null) ? NewDataLabelUtils.getLabelFormattedText(formatter.format(catagoryValue)) : undefined,\r\n labelFormatString: labelFormatString,\r\n });\r\n }\r\n }\r\n }\r\n\r\n if (interactivityService)\r\n interactivityService.applySelectionStateToData(shapeData);\r\n\r\n return { shapeData: shapeData };\r\n }\r\n\r\n public updateInternal(data: MapData, viewport: IViewport, dataChanged: boolean, interactivityService: IInteractivityService, redrawDataLabels: boolean): MapBehaviorOptions {\r\n debug.assertValue(viewport, \"viewport\");\r\n Map.removeTransform3d(this.root);\r\n\r\n this.mapData = data;\r\n if (this.svg) {\r\n this.svg\r\n .style(\"width\", viewport.width.toString() + \"px\")\r\n .style(\"height\", viewport.height.toString() + \"px\");\r\n }\r\n if (this.clearSvg) {\r\n this.clearSvg\r\n .style(\"width\", viewport.width.toString() + \"px\")\r\n .style(\"height\", viewport.height.toString() + \"px\");\r\n }\r\n\r\n this.polygonInfo.reCalc(this.mapControl, viewport.width, viewport.height);\r\n this.shapeGraphicsContext.attr(\"transform\", this.polygonInfo.transformToString(this.polygonInfo.transform));\r\n\r\n let hasSelection = interactivityService && interactivityService.hasSelection();\r\n\r\n let shapes = this.shapeGraphicsContext.selectAll(\"polygon\").data(data.shapeData, (d: MapShape) => d.key);\r\n\r\n shapes.enter()\r\n .append(\"polygon\")\r\n .classed(\"shape\", true)\r\n .attr(\"points\", (d: MapShape) => { // Always add paths to any new data points\r\n return d.path;\r\n });\r\n\r\n shapes\r\n .style(\"fill\", (d: MapShape) => d.fill)\r\n .style(\"fill-opacity\", (d: MapShape) => ColumnUtil.getFillOpacity(d.selected, false, hasSelection, false))\r\n .style(\"cursor\", \"default\");\r\n\r\n if (dataChanged) {\r\n // We only update the paths of existing shapes if we have a change in the data. Updating the lengthy path\r\n // strings every update during resize or zooming/panning is extremely bad for performance.\r\n shapes\r\n .attr(\"points\", (d: MapShape) => {\r\n return d.path;\r\n });\r\n }\r\n\r\n shapes.exit()\r\n .remove();\r\n\r\n this.updateInternalDataLabels(viewport, redrawDataLabels);\r\n\r\n if (this.tooltipsEnabled) {\r\n TooltipManager.addTooltip(shapes, (tooltipEvent: TooltipEvent) => tooltipEvent.data.tooltipInfo);\r\n shapes.style(\"pointer-events\", \"all\");\r\n }\r\n\r\n let behaviorOptions: MapBehaviorOptions = {\r\n shapes: shapes,\r\n clearCatcher: this.clearCatcher,\r\n dataPoints: data.shapeData,\r\n };\r\n\r\n return behaviorOptions;\r\n }\r\n\r\n public getDataPointPadding() {\r\n return 12;\r\n }\r\n\r\n public static getIndexOfLargestShape(paths: IGeocodeBoundaryPolygon[]): number {\r\n let largestShapeIndex = 0;\r\n let largestShapeArea = 0;\r\n\r\n for (let pathIndex = 0, pathCount = paths.length; pathIndex < pathCount; pathIndex++) {\r\n let path = paths[pathIndex];\r\n \r\n // Using the area of the bounding box (and taking the largest)\r\n let currentShapeArea = path.absoluteBounds.width * path.absoluteBounds.height;\r\n\r\n if (currentShapeArea > largestShapeArea) {\r\n largestShapeIndex = pathIndex;\r\n largestShapeArea = currentShapeArea;\r\n }\r\n }\r\n\r\n return largestShapeIndex;\r\n }\r\n\r\n public updateInternalDataLabels(viewport: IViewport, redrawDataLabels: boolean): void {\r\n let labelSettings = this.dataLabelsSettings;\r\n let labels: Label[];\r\n\r\n if (labelSettings && (labelSettings.show || labelSettings.showCategory)) {\r\n let labelDataPoints = this.createLabelDataPoints();\r\n\r\n if (this.labelLayout === undefined) {\r\n this.labelLayout = new FilledMapLabelLayout();\r\n }\r\n labels = this.labelLayout.layout(labelDataPoints, { width: viewport.width, height: viewport.height }, this.polygonInfo.transform, redrawDataLabels);\r\n }\r\n\r\n this.drawLabelStems(this.labelGraphicsContext, labels, labelSettings.show, labelSettings.showCategory);\r\n NewDataLabelUtils.drawLabelBackground(this.labelGraphicsContext, labels, powerbi.visuals.DefaultBackgroundColor, powerbi.visuals.DefaultFillOpacity);\r\n NewDataLabelUtils.drawDefaultLabels(this.labelGraphicsContext, labels, false, labelSettings.show && labelSettings.showCategory);\r\n }\r\n\r\n private clearMaxShapeDimension(): void {\r\n this.maxShapeDimension = 0;\r\n }\r\n\r\n private setMaxShapeDimension(width: number, height: number): void {\r\n this.maxShapeDimension = Math.max(width, this.maxShapeDimension);\r\n this.maxShapeDimension = Math.max(height, this.maxShapeDimension);\r\n }\r\n\r\n private createLabelDataPoints(): LabelDataPoint[] {\r\n let data = this.mapData;\r\n let labelDataPoints: LabelDataPoint[] = [];\r\n if (this.filledMapDataLabelsEnabled) {\r\n let dataShapes = data.shapeData;\r\n let labelSettings = this.dataLabelsSettings;\r\n\r\n for (let dataShape of dataShapes) {\r\n\r\n if (!dataShape.displayLabel) {\r\n continue;\r\n }\r\n let text, secondRowText: string;\r\n let secondRowTextWidth: number = 0;\r\n let hasSecondRow: boolean = false;\r\n\r\n if (this.dataLabelsSettings.show && !this.dataLabelsSettings.showCategory) {\r\n text = dataShape.catagoryLabeltext;\r\n if (text === undefined)\r\n continue;\r\n } else if (this.dataLabelsSettings.showCategory && !this.dataLabelsSettings.show) {\r\n text = dataShape.labeltext;\r\n if (text === undefined)\r\n continue;\r\n } else if (this.dataLabelsSettings.showCategory && this.dataLabelsSettings.show) {\r\n text = dataShape.catagoryLabeltext;\r\n secondRowText = dataShape.labeltext;\r\n if (text === undefined && secondRowText === undefined)\r\n continue;\r\n hasSecondRow = true;\r\n }\r\n\r\n if (hasSecondRow) {\r\n let secondRowProperties: TextProperties = {\r\n text: secondRowText,\r\n fontFamily: NewDataLabelUtils.LabelTextProperties.fontFamily,\r\n fontSize: NewDataLabelUtils.LabelTextProperties.fontSize,\r\n fontWeight: NewDataLabelUtils.LabelTextProperties.fontWeight,\r\n };\r\n secondRowTextWidth = TextMeasurementService.measureSvgTextWidth(secondRowProperties);\r\n }\r\n\r\n let firstRowProperties: TextProperties = {\r\n text: text,\r\n fontFamily: NewDataLabelUtils.LabelTextProperties.fontFamily,\r\n fontSize: NewDataLabelUtils.LabelTextProperties.fontSize,\r\n fontWeight: NewDataLabelUtils.LabelTextProperties.fontWeight,\r\n };\r\n let textWidth = TextMeasurementService.measureSvgTextWidth(firstRowProperties);\r\n let textHeight = TextMeasurementService.estimateSvgTextHeight(firstRowProperties);\r\n\r\n if (secondRowText && dataShape.labeltext !== undefined && dataShape.catagoryLabeltext !== undefined) {\r\n textHeight = textHeight * 2;\r\n }\r\n\r\n let labelDataPoint: LabelDataPoint = {\r\n parentType: LabelDataPointParentType.Polygon,\r\n parentShape:\r\n {\r\n polygon: new Polygon(dataShape.absolutePointArray),\r\n validPositions: MapShapeDataPointRenderer.validLabelPolygonPositions,\r\n },\r\n text: text,\r\n secondRowText: secondRowText,\r\n textSize: {\r\n width: Math.max(textWidth, secondRowTextWidth),\r\n height: textHeight,\r\n },\r\n insideFill: labelSettings.labelColor,\r\n outsideFill: labelSettings.labelColor ? labelSettings.labelColor : NewDataLabelUtils.defaultInsideLabelColor, // Use inside for outside colors because we draw backgrounds for map labels \r\n isPreferred: false,\r\n identity: undefined,\r\n hasBackground: true,\r\n };\r\n labelDataPoints.push(labelDataPoint);\r\n }\r\n }\r\n return labelDataPoints;\r\n }\r\n\r\n private drawLabelStems(labelsContext: D3.Selection, dataLabels: Label[], showText: boolean, showCategory: boolean) {\r\n let filteredLabels = _.filter(dataLabels, (d: Label) => d.isVisible);\r\n let key = (d: Label, index: number) => { return d.identity ? d.identity.getKeyWithoutHighlight() : index; };\r\n NewDataLabelUtils.drawLabelLeaderLines(labelsContext, filteredLabels, key, LeaderLineColor);\r\n }\r\n }\r\n\r\n /** Note: public for UnitTest */\r\n export interface SimpleRange {\r\n min: number;\r\n max: number;\r\n }\r\n\r\n export class Map implements IVisual {\r\n public currentViewport: IViewport;\r\n\r\n private pendingGeocodingRender: boolean;\r\n private mapControl: Microsoft.Maps.Map;\r\n private minLongitude: number;\r\n private maxLongitude: number;\r\n private minLatitude: number;\r\n private maxLatitude: number;\r\n private valueScale: SimpleRange;\r\n private style: IVisualStyle;\r\n private colors: IDataColorPalette;\r\n private dataPointRenderer: IMapDataPointRenderer;\r\n private geocodingCategory: string;\r\n private legend: ILegend;\r\n private legendHeight;\r\n private legendData: LegendData;\r\n private element: JQuery;\r\n private dataView: DataView;\r\n private dataLabelsSettings: PointDataLabelsSettings;\r\n private static MapContainer = {\r\n cssClass: 'mapControl',\r\n selector: '.mapControl'\r\n };\r\n public static StrokeDarkenColorValue = 255 * 0.25;\r\n private interactivityService: IInteractivityService;\r\n private behavior: MapBehavior;\r\n private defaultDataPointColor: string;\r\n private showAllDataPoints: boolean;\r\n private dataPointsToEnumerate: LegendDataPoint[];\r\n private hasDynamicSeries: boolean;\r\n private geoTaggingAnalyzerService: powerbi.IGeoTaggingAnalyzerService;\r\n private enableGeoShaping: boolean;\r\n private host: IVisualHostServices;\r\n private receivedExternalViewChange = false;\r\n private executingInternalViewChange = false;\r\n private geocoder: IGeocoder;\r\n private mapControlFactory: IMapControlFactory;\r\n private tooltipsEnabled: boolean;\r\n private filledMapDataLabelsEnabled: boolean;\r\n private disableZooming: boolean;\r\n private disablePanning: boolean;\r\n private locale: string;\r\n private isLegendScrollable: boolean;\r\n private viewChangeThrottleInterval: number;\r\n private root: JQuery;\r\n\r\n constructor(options: MapConstructionOptions) {\r\n if (options.filledMap) {\r\n this.dataPointRenderer = new MapShapeDataPointRenderer(options.filledMapDataLabelsEnabled, options.tooltipsEnabled);\r\n this.filledMapDataLabelsEnabled = options.filledMapDataLabelsEnabled;\r\n this.enableGeoShaping = true;\r\n }\r\n else {\r\n this.dataPointRenderer = new MapBubbleDataPointRenderer(options.tooltipsEnabled);\r\n this.enableGeoShaping = false;\r\n }\r\n this.mapControlFactory = options.mapControlFactory ? options.mapControlFactory : this.getDefaultMapControlFactory();\r\n this.behavior = options.behavior;\r\n this.tooltipsEnabled = options.tooltipsEnabled;\r\n this.disableZooming = options.disableZooming;\r\n this.disablePanning = options.disablePanning;\r\n this.isLegendScrollable = !!options.behavior;\r\n this.viewChangeThrottleInterval = options.viewChangeThrottleInterval;\r\n }\r\n\r\n public init(options: VisualInitOptions) {\r\n debug.assertValue(options, 'options');\r\n let element = this.element = options.element;\r\n this.pendingGeocodingRender = false;\r\n this.currentViewport = options.viewport;\r\n this.style = options.style;\r\n this.colors = this.style.colorPalette.dataColors;\r\n if (this.behavior)\r\n this.interactivityService = createInteractivityService(options.host);\r\n this.dataLabelsSettings = dataLabelUtils.getDefaultMapLabelSettings();\r\n this.legend = powerbi.visuals.createLegend(element, options.interactivity && options.interactivity.isInteractiveLegend, this.interactivityService, this.isLegendScrollable);\r\n this.legendHeight = 0;\r\n this.legendData = { dataPoints: [] };\r\n this.geoTaggingAnalyzerService = powerbi.createGeoTaggingAnalyzerService(options.host.getLocalizedString);\r\n this.host = options.host;\r\n if (options.host.locale)\r\n this.locale = options.host.locale();\r\n this.geocoder = options.host.geocoder();\r\n\r\n this.resetBounds();\r\n\r\n this.mapControlFactory.ensureMap(this.locale, () => {\r\n Microsoft.Maps.loadModule('Microsoft.Maps.Overlays.Style', {\r\n callback: () => {\r\n this.initialize(element[0]);\r\n }\r\n });\r\n });\r\n }\r\n\r\n private addDataPoint(dataPoint: MapDataPoint): void {\r\n let location = dataPoint.cachedLocation;\r\n this.updateBounds(location.latitude, location.longitude);\r\n\r\n this.scheduleRedraw();\r\n }\r\n\r\n private scheduleRedraw(): void {\r\n if (!this.pendingGeocodingRender && this.mapControl) {\r\n this.pendingGeocodingRender = true;\r\n // Maintain a 3 second delay between redraws from geocoded geometry\r\n setTimeout(() => {\r\n this.updateInternal(true, true);\r\n this.pendingGeocodingRender = false;\r\n }, 3000);\r\n }\r\n }\r\n\r\n private enqueueGeoCode(dataPoint: MapDataPoint): void {\r\n this.geocoder.geocode(dataPoint.geocodingQuery, this.geocodingCategory).then((location) => {\r\n if (location) {\r\n dataPoint.cachedLocation = location;\r\n this.addDataPoint(dataPoint);\r\n }\r\n });\r\n }\r\n\r\n private enqueueGeoCodeAndGeoShape(dataPoint: MapDataPoint, params: FilledMapParams): void {\r\n this.geocoder.geocode(dataPoint.geocodingQuery, this.geocodingCategory).then((location) => {\r\n if (location) {\r\n dataPoint.cachedLocation = location;\r\n this.enqueueGeoShape(dataPoint, params);\r\n }\r\n });\r\n }\r\n\r\n private enqueueGeoShape(dataPoint: MapDataPoint, params: FilledMapParams): void {\r\n debug.assertValue(dataPoint.cachedLocation, \"cachedLocation\");\r\n this.geocoder.geocodeBoundary(dataPoint.cachedLocation.latitude, dataPoint.cachedLocation.longitude, this.geocodingCategory, params.level, params.maxPolygons)\r\n .then((result: IGeocodeBoundaryCoordinate) => {\r\n let paths;\r\n if (result.locations.length === 0 || result.locations[0].geographic) {\r\n paths = MapShapeDataPointRenderer.buildPaths(result.locations);\r\n }\r\n else {\r\n MapUtil.calcGeoData(result);\r\n paths = MapShapeDataPointRenderer.buildPaths(result.locations);\r\n }\r\n dataPoint.paths = paths;\r\n this.addDataPoint(dataPoint);\r\n });\r\n }\r\n\r\n private getOptimumLevelOfDetail(width: number, height: number): number {\r\n let dataPointCount = this.dataPointRenderer.getDataPointCount();\r\n if (dataPointCount === 0)\r\n return MapUtil.MinLevelOfDetail;\r\n\r\n let threshold: number = this.dataPointRenderer.getDataPointPadding();\r\n\r\n for (let levelOfDetail = MapUtil.MaxLevelOfDetail; levelOfDetail >= MapUtil.MinLevelOfDetail; levelOfDetail--) {\r\n let minXmaxY = MapUtil.latLongToPixelXY(this.minLatitude, this.minLongitude, levelOfDetail);\r\n let maxXminY = MapUtil.latLongToPixelXY(this.maxLatitude, this.maxLongitude, levelOfDetail);\r\n\r\n if (maxXminY.x - minXmaxY.x + threshold <= width && minXmaxY.y - maxXminY.y + threshold <= height) {\r\n // if we have less than 2 data points we should not zoom in \"too much\"\r\n if (dataPointCount < 2)\r\n levelOfDetail = Math.min(MapUtil.MaxAutoZoomLevel, levelOfDetail);\r\n\r\n return levelOfDetail;\r\n }\r\n }\r\n\r\n return MapUtil.MinLevelOfDetail;\r\n }\r\n\r\n private getViewCenter(levelOfDetail: number): Microsoft.Maps.Location {\r\n let minXmaxY = MapUtil.latLongToPixelXY(this.minLatitude, this.minLongitude, levelOfDetail);\r\n let maxXminY = MapUtil.latLongToPixelXY(this.maxLatitude, this.maxLongitude, levelOfDetail);\r\n return MapUtil.pixelXYToLocation((minXmaxY.x + maxXminY.x) / 2.0, (maxXminY.y + minXmaxY.y) / 2.0, levelOfDetail);\r\n }\r\n\r\n private resetBounds(): void {\r\n this.minLongitude = MapUtil.MaxAllowedLongitude;\r\n this.maxLongitude = MapUtil.MinAllowedLongitude;\r\n this.minLatitude = MapUtil.MaxAllowedLatitude;\r\n this.maxLatitude = MapUtil.MinAllowedLatitude;\r\n }\r\n\r\n private updateBounds(latitude: number, longitude: number): void {\r\n if (longitude < this.minLongitude) {\r\n this.minLongitude = longitude;\r\n }\r\n\r\n if (longitude > this.maxLongitude) {\r\n this.maxLongitude = longitude;\r\n }\r\n\r\n if (latitude < this.minLatitude) {\r\n this.minLatitude = latitude;\r\n }\r\n\r\n if (latitude > this.maxLatitude) {\r\n this.maxLatitude = latitude;\r\n }\r\n }\r\n\r\n public static legendObject(dataView: DataView): DataViewObject {\r\n return dataView &&\r\n dataView.metadata &&\r\n dataView.metadata.objects &&\r\n <DataViewObject>dataView.metadata.objects['legend'];\r\n }\r\n\r\n public static isLegendHidden(dataView: DataView): boolean {\r\n let legendObject = Map.legendObject(dataView);\r\n return legendObject != null && legendObject[legendProps.show] === false;\r\n }\r\n\r\n public static legendPosition(dataView: DataView): LegendPosition {\r\n let legendObject = Map.legendObject(dataView);\r\n return legendObject && LegendPosition[<string>legendObject[legendProps.position]];\r\n }\r\n\r\n public static getLegendFontSize(dataView: DataView): number {\r\n let legendObject = Map.legendObject(dataView);\r\n return (legendObject && <number>legendObject[legendProps.fontSize]) || SVGLegend.DefaultFontSizeInPt;\r\n }\r\n\r\n public static isShowLegendTitle(dataView: DataView): boolean {\r\n let legendObject = Map.legendObject(dataView);\r\n return legendObject && <boolean>legendObject[legendProps.showTitle];\r\n }\r\n\r\n private legendTitle(): string {\r\n let legendObject = Map.legendObject(this.dataView);\r\n return (legendObject && <string>legendObject[legendProps.titleText]) || this.legendData.title;\r\n }\r\n\r\n private renderLegend(legendData: LegendData): void {\r\n let hideLegend = Map.isLegendHidden(this.dataView);\r\n let showTitle = Map.isShowLegendTitle(this.dataView);\r\n let title = this.legendTitle();\r\n // Update the legendData based on the hide flag. Cartesian passes in no-datapoints. OnResize reuses the legendData, so this can't mutate.\r\n let clonedLegendData: LegendData = {\r\n dataPoints: hideLegend ? [] : legendData.dataPoints,\r\n grouped: legendData.grouped,\r\n title: showTitle ? title : \"\",\r\n fontSize: Map.getLegendFontSize(this.dataView)\r\n };\r\n\r\n // Update the orientation to match what's in the dataView\r\n let targetOrientation = Map.legendPosition(this.dataView);\r\n if (targetOrientation !== undefined) {\r\n this.legend.changeOrientation(targetOrientation);\r\n } else {\r\n this.legend.changeOrientation(LegendPosition.Top);\r\n }\r\n\r\n this.legend.drawLegend(clonedLegendData, this.currentViewport);\r\n }\r\n\r\n /** Note: public for UnitTest */\r\n public static calculateGroupSizes(categorical: DataViewCategorical, grouped: DataViewValueColumnGroup[], groupSizeTotals: number[], sizeMeasureIndex: number, currentValueScale: SimpleRange): SimpleRange {\r\n let categoryCount = categorical.values[0].values.length;\r\n let seriesCount = grouped.length;\r\n\r\n for (let i = 0, len = categoryCount; i < len; ++i) {\r\n let groupTotal = null;\r\n if (sizeMeasureIndex >= 0) {\r\n for (let j = 0; j < seriesCount; ++j) {\r\n let value = grouped[j].values[sizeMeasureIndex].values[i];\r\n if (value) {\r\n if (groupTotal === null) {\r\n groupTotal = value;\r\n } else {\r\n groupTotal += value;\r\n }\r\n }\r\n }\r\n }\r\n\r\n groupSizeTotals.push(groupTotal);\r\n\r\n if (groupTotal) {\r\n if (!currentValueScale) {\r\n currentValueScale = {\r\n min: groupTotal,\r\n max: groupTotal\r\n };\r\n } else {\r\n currentValueScale.min = Math.min(currentValueScale.min, groupTotal);\r\n currentValueScale.max = Math.max(currentValueScale.max, groupTotal);\r\n }\r\n }\r\n }\r\n\r\n return currentValueScale;\r\n }\r\n\r\n /** Note: public for UnitTest */\r\n public static createMapDataPoint(group: string, value: number, seriesInfo: MapSeriesInfo, radius: number, colors: IDataColorPalette, categoryIdentity: DataViewScopeIdentity): MapDataPoint {\r\n if (seriesInfo) {\r\n // Not supporting Pies yet\r\n let latitude = seriesInfo.latitude;\r\n let longitude = seriesInfo.longitude;\r\n let dp: MapDataPoint = {\r\n geocodingQuery: group,\r\n location: (latitude !== null && longitude !== null) ? new Microsoft.Maps.Location(latitude, longitude) : null,\r\n value: value,\r\n radius: radius,\r\n seriesInfo: seriesInfo,\r\n categoryIdentity: categoryIdentity,\r\n categoryValue: group\r\n };\r\n\r\n if (dp.geocodingQuery === null && dp.location === null) {\r\n // The user should be warned that the data isn't all shown. Can't geocode null\r\n return null;\r\n }\r\n\r\n // Update the location so the remaining code can rely upon the cachedLocation\r\n dp.cachedLocation = dp.location;\r\n\r\n return dp;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n public static calculateSeriesLegend(\r\n grouped: DataViewValueColumnGroup[],\r\n groupIndex: number,\r\n sizeMeasureIndex: number,\r\n colors: IDataColorPalette,\r\n defaultDataPointColor?: string,\r\n seriesSource?: data.SQExpr[],\r\n interactivityService?: IInteractivityService): LegendDataPoint[] {\r\n\r\n let seriesCount = grouped ? grouped.length : 0;\r\n let legendData: LegendDataPoint[] = [];\r\n let colorHelper = new ColorHelper(colors, mapProps.dataPoint.fill, defaultDataPointColor);\r\n\r\n for (let i = 0; i < seriesCount; ++i) {\r\n let seriesValues = grouped[i];\r\n let sizeValueForCategory: any;\r\n let measureQueryName: string;\r\n if (sizeMeasureIndex >= 0) {\r\n let sizeMeasure = seriesValues.values[sizeMeasureIndex];\r\n sizeValueForCategory = sizeMeasure.values[groupIndex];\r\n measureQueryName = sizeMeasure.source.queryName;\r\n }\r\n else {\r\n sizeValueForCategory = null;\r\n measureQueryName = '';\r\n }\r\n if (sizeValueForCategory !== null || sizeMeasureIndex < 0) {\r\n let identity = seriesValues.identity ? SelectionId.createWithId(seriesValues.identity) : SelectionId.createNull();\r\n let color = seriesSource !== undefined\r\n ? colorHelper.getColorForSeriesValue(seriesValues.objects, seriesSource, seriesValues.name)\r\n : colorHelper.getColorForMeasure(seriesValues.objects, measureQueryName);\r\n\r\n legendData.push({\r\n color: color,\r\n label: valueFormatter.format(seriesValues.name),\r\n icon: LegendIcon.Circle,\r\n identity: identity,\r\n selected: false\r\n });\r\n }\r\n }\r\n\r\n if (interactivityService)\r\n interactivityService.applySelectionStateToData(legendData);\r\n\r\n return legendData;\r\n }\r\n\r\n /** Note: public for UnitTest */\r\n public static calculateSeriesInfo(\r\n grouped: DataViewValueColumnGroup[],\r\n groupIndex: number,\r\n sizeMeasureIndex: number,\r\n longitudeMeasureIndex: number,\r\n latitudeMeasureIndex: number,\r\n colors: IDataColorPalette,\r\n defaultDataPointColor?: string,\r\n objectsDefinitions?: DataViewObjects[],\r\n seriesSource?: data.SQExpr[]): MapSeriesInfo {\r\n\r\n let latitude: number = null;\r\n let longitude: number = null;\r\n let sizeValuesForGroup: MapPieSlice[] = [];\r\n let seriesCount = grouped ? grouped.length : 0;\r\n let colorHelper = new ColorHelper(colors, mapProps.dataPoint.fill, defaultDataPointColor);\r\n\r\n if (seriesCount > 0) {\r\n for (let i = 0; i < seriesCount; ++i) {\r\n let seriesValues = grouped[i];\r\n let sizeValueForCategory: any;\r\n let measureQueryName: string;\r\n if (sizeMeasureIndex >= 0) {\r\n let sizeMeasure = seriesValues.values[sizeMeasureIndex];\r\n sizeValueForCategory = sizeMeasure.values[groupIndex];\r\n measureQueryName = sizeMeasure.source.queryName;\r\n }\r\n else {\r\n sizeValueForCategory = null;\r\n measureQueryName = '';\r\n }\r\n\r\n let objects = (objectsDefinitions && objectsDefinitions[groupIndex]) || (seriesValues && seriesValues.objects);\r\n\r\n if (sizeValueForCategory !== null || sizeMeasureIndex < 0) {\r\n let seriesIdentity = grouped[i].identity;\r\n let color = seriesSource !== undefined\r\n ? colorHelper.getColorForSeriesValue(objects, seriesSource, seriesValues.name)\r\n : colorHelper.getColorForMeasure(objects, measureQueryName);\r\n\r\n let colorRgb = Color.parseColorString(color);\r\n let stroke = Color.hexString(Color.darken(colorRgb, Map.StrokeDarkenColorValue));\r\n colorRgb.A = 0.6;\r\n let fill = Color.rgbString(colorRgb);\r\n\r\n sizeValuesForGroup.push({\r\n value: sizeValueForCategory,\r\n index: i,\r\n fill: fill,\r\n stroke: stroke,\r\n seriesId: seriesIdentity,\r\n });\r\n }\r\n\r\n latitude = Map.getOptionalMeasure(seriesValues, latitudeMeasureIndex, groupIndex, latitude);\r\n longitude = Map.getOptionalMeasure(seriesValues, longitudeMeasureIndex, groupIndex, longitude);\r\n }\r\n }\r\n else {\r\n let objects = (objectsDefinitions && objectsDefinitions[groupIndex]);\r\n let color = colorHelper.getColorForMeasure(objects, '');\r\n\r\n let colorRgb = Color.parseColorString(color);\r\n let stroke = Color.hexString(Color.darken(colorRgb, Map.StrokeDarkenColorValue));\r\n colorRgb.A = 0.6;\r\n let fill = Color.rgbString(colorRgb);\r\n sizeValuesForGroup = [{\r\n value: null,\r\n index: 0,\r\n fill: fill,\r\n stroke: stroke,\r\n seriesId: null,\r\n }];\r\n }\r\n\r\n return {\r\n sizeValuesForGroup: sizeValuesForGroup,\r\n latitude: latitude,\r\n longitude: longitude\r\n };\r\n }\r\n\r\n private static getOptionalMeasure(\r\n seriesValues: DataViewValueColumnGroup,\r\n measureIndex: number,\r\n groupIndex: number,\r\n defaultValue: number): number {\r\n\r\n if (measureIndex >= 0) {\r\n let value = seriesValues.values[measureIndex].values[groupIndex];\r\n if (value != null)\r\n return value;\r\n }\r\n\r\n return defaultValue;\r\n }\r\n\r\n /** Note: public for UnitTest */\r\n public static calculateRadius(range: SimpleRange, rangeDiff: number, value?: number): number {\r\n let radius = 6;\r\n if (range != null && rangeDiff !== 0) {\r\n radius = (14 * ((value - range.min) / rangeDiff)) + 6;\r\n }\r\n\r\n return radius;\r\n }\r\n\r\n /** Note: public for UnitTest */\r\n public static getGeocodingCategory(categorical: DataViewCategorical, geoTaggingAnalyzerService: IGeoTaggingAnalyzerService): string {\r\n if (categorical && categorical.categories && categorical.categories.length > 0 && categorical.categories[0].source) {\r\n // Check categoryString for manually specified information in the model\r\n let type = <ValueType>categorical.categories[0].source.type;\r\n if (type && type.categoryString) {\r\n return geoTaggingAnalyzerService.getFieldType(type.categoryString);\r\n }\r\n\r\n // Check the category name\r\n let categoryName = categorical.categories[0].source.displayName;\r\n let geotaggedResult = geoTaggingAnalyzerService.getFieldType(categoryName);\r\n if (geotaggedResult)\r\n return geotaggedResult;\r\n\r\n // Checking roles for VRM backwards compatibility\r\n let roles = categorical.categories[0].source.roles;\r\n if (roles) {\r\n let roleNames = Object.keys(roles);\r\n for (let i = 0, len = roleNames.length; i < len; ++i) {\r\n let typeFromRoleName = geoTaggingAnalyzerService.getFieldType(roleNames[i]);\r\n if (typeFromRoleName)\r\n return typeFromRoleName;\r\n }\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n /** Note: public for UnitTest */\r\n public static hasSizeField(values: DataViewValueColumns, defaultIndexIfNoRole?: number): boolean {\r\n if (_.isEmpty(values))\r\n return false;\r\n\r\n for (let i = 0, ilen = values.length; i < ilen; i++) {\r\n let roles = values[i].source.roles;\r\n\r\n // case for Power Q&A since Power Q&A does not assign role to measures.\r\n if (!roles && i === defaultIndexIfNoRole && values[i].source.type.numeric)\r\n return true;\r\n\r\n if (roles) {\r\n let roleNames = Object.keys(roles);\r\n for (let j = 0, jlen = roleNames.length; j < jlen; j++) {\r\n let role = roleNames[j];\r\n if (role === \"Size\")\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n public static shouldEnumerateDataPoints(dataView: DataView, usesSizeForGradient: boolean): boolean {\r\n let hasSeries = DataRoleHelper.hasRoleInDataView(dataView, 'Series');\r\n let gradientRole = usesSizeForGradient ? 'Size' : 'Gradient';\r\n let hasGradientRole = DataRoleHelper.hasRoleInDataView(dataView, gradientRole);\r\n return hasSeries || !hasGradientRole;\r\n }\r\n\r\n public static shouldEnumerateCategoryLabels(enableGeoShaping: boolean, filledMapDataLabelsEnabled: boolean): boolean {\r\n return (!enableGeoShaping || filledMapDataLabelsEnabled);\r\n }\r\n\r\n public enumerateObjectInstances(options: EnumerateVisualObjectInstancesOptions): VisualObjectInstanceEnumeration {\r\n let enumeration = new ObjectEnumerationBuilder();\r\n switch (options.objectName) {\r\n case 'dataPoint':\r\n if (Map.shouldEnumerateDataPoints(this.dataView, this.enableGeoShaping)) {\r\n let bubbleData: MapBubble[] = [];\r\n //TODO: better way of getting this data\r\n let hasDynamicSeries = this.hasDynamicSeries;\r\n if (!hasDynamicSeries) {\r\n let mapData = this.dataPointRenderer.converter(this.getMapViewPort(), this.dataView, this.dataLabelsSettings, this.interactivityService);\r\n bubbleData = mapData.bubbleData;\r\n }\r\n Map.enumerateDataPoints(enumeration, this.dataPointsToEnumerate, this.colors, hasDynamicSeries, this.defaultDataPointColor, this.showAllDataPoints, bubbleData);\r\n }\r\n break;\r\n case 'categoryLabels':\r\n if (Map.shouldEnumerateCategoryLabels(this.enableGeoShaping, this.filledMapDataLabelsEnabled)) {\r\n dataLabelUtils.enumerateCategoryLabels(enumeration, this.dataLabelsSettings, true, true);\r\n }\r\n break;\r\n case 'legend':\r\n if (this.hasDynamicSeries) {\r\n Map.enumerateLegend(enumeration, this.dataView, this.legend, this.legendTitle());\r\n }\r\n break;\r\n case 'labels':\r\n if (this.filledMapDataLabelsEnabled) {\r\n this.dataLabelsSettings = this.dataLabelsSettings ? this.dataLabelsSettings : dataLabelUtils.getDefaultMapLabelSettings();\r\n let labelSettingOptions: VisualDataLabelsSettingsOptions = {\r\n enumeration: enumeration,\r\n dataLabelsSettings: this.dataLabelsSettings,\r\n show: true,\r\n displayUnits: true,\r\n precision: true,\r\n };\r\n dataLabelUtils.enumerateDataLabels(labelSettingOptions);\r\n }\r\n break;\r\n }\r\n return enumeration.complete();\r\n }\r\n\r\n public static enumerateDataPoints(enumeration: ObjectEnumerationBuilder, dataPoints: LegendDataPoint[], colors: IDataColorPalette, hasDynamicSeries: boolean, defaultDataPointColor: string, showAllDataPoints: boolean, bubbleData: MapBubble[]): void {\r\n let seriesLength = dataPoints && dataPoints.length;\r\n\r\n if (hasDynamicSeries) {\r\n for (let i = 0; i < seriesLength; i++) {\r\n\r\n let dataPoint = dataPoints[i];\r\n enumeration.pushInstance({\r\n objectName: 'dataPoint',\r\n displayName: dataPoint.label,\r\n selector: dataPoint.identity.getSelector(),\r\n properties: {\r\n fill: { solid: { color: dataPoint.color } }\r\n },\r\n });\r\n }\r\n }\r\n else {\r\n enumeration.pushInstance({\r\n objectName: 'dataPoint',\r\n selector: null,\r\n properties: {\r\n defaultColor: { solid: { color: defaultDataPointColor || colors.getColorByIndex(0).value } }\r\n },\r\n }).pushInstance({\r\n objectName: 'dataPoint',\r\n selector: null,\r\n properties: {\r\n showAllDataPoints: !!showAllDataPoints\r\n },\r\n });\r\n\r\n if (bubbleData) {\r\n for (let i = 0; i < bubbleData.length; i++) {\r\n let bubbleDataPoint = bubbleData[i];\r\n enumeration.pushInstance({\r\n objectName: 'dataPoint',\r\n displayName: bubbleDataPoint.labeltext,\r\n selector: bubbleDataPoint.identity.getSelector(),\r\n properties: {\r\n fill: { solid: { color: Color.normalizeToHexString(bubbleDataPoint.fill) } }\r\n },\r\n });\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n public static enumerateLegend(enumeration: ObjectEnumerationBuilder, dataView: DataView, legend: ILegend, legendTitle: string): void {\r\n enumeration.pushInstance({\r\n selector: null,\r\n properties: {\r\n show: !Map.isLegendHidden(dataView),\r\n position: LegendPosition[legend.getOrientation()],\r\n showTitle: Map.isShowLegendTitle(dataView),\r\n titleText: legendTitle,\r\n fontSize: Map.getLegendFontSize(dataView)\r\n },\r\n objectName: 'legend'\r\n });\r\n }\r\n\r\n public onDataChanged(options: VisualDataChangedOptions): void {\r\n debug.assertValue(options, 'options');\r\n\r\n this.receivedExternalViewChange = false;\r\n\r\n let dataView = options.dataViews[0];\r\n this.dataView = dataView;\r\n let enableGeoShaping = this.enableGeoShaping;\r\n\r\n //Revert Back \r\n this.dataLabelsSettings = dataLabelUtils.getDefaultMapLabelSettings();\r\n this.defaultDataPointColor = null;\r\n this.showAllDataPoints = null;\r\n let warnings = undefined;\r\n if (dataView) {\r\n if (dataView.metadata && dataView.metadata.objects) {\r\n let objects = dataView.metadata.objects;\r\n\r\n this.defaultDataPointColor = DataViewObjects.getFillColor(objects, mapProps.dataPoint.defaultColor);\r\n this.showAllDataPoints = DataViewObjects.getValue<boolean>(objects, mapProps.dataPoint.showAllDataPoints);\r\n\r\n this.dataLabelsSettings.showCategory = DataViewObjects.getValue<boolean>(objects, filledMapProps.categoryLabels.show, this.dataLabelsSettings.showCategory);\r\n\r\n if (enableGeoShaping) {\r\n this.dataLabelsSettings.precision = DataViewObjects.getValue(objects, filledMapProps.labels.labelPrecision, this.dataLabelsSettings.precision);\r\n this.dataLabelsSettings.precision = (this.dataLabelsSettings.precision !== dataLabelUtils.defaultLabelPrecision && this.dataLabelsSettings.precision < 0) ? 0 : this.dataLabelsSettings.precision;\r\n this.dataLabelsSettings.displayUnits = DataViewObjects.getValue<number>(objects, filledMapProps.labels.labelDisplayUnits, this.dataLabelsSettings.displayUnits);\r\n let datalabelsObj = objects['labels'];\r\n if (datalabelsObj) {\r\n this.dataLabelsSettings.show = (datalabelsObj['show'] !== undefined) ? <boolean>datalabelsObj['show'] : this.dataLabelsSettings.show;\r\n if (datalabelsObj['color'] !== undefined) {\r\n this.dataLabelsSettings.labelColor = (<Fill>datalabelsObj['color']).solid.color;\r\n }\r\n }\r\n }\r\n else {\r\n let categoryLabelsObj = <DataLabelObject>objects['categoryLabels'];\r\n if (categoryLabelsObj)\r\n dataLabelUtils.updateLabelSettingsFromLabelsObject(categoryLabelsObj, this.dataLabelsSettings);\r\n }\r\n }\r\n\r\n warnings = Map.showLocationMissingWarningIfNecessary(dataView);\r\n\r\n let categorical = dataView.categorical;\r\n if (categorical && categorical.categories && categorical.categories.length > 0) {\r\n this.resetBounds();\r\n\r\n let grouped: DataViewValueColumnGroup[];\r\n if (categorical.values)\r\n grouped = categorical.values.grouped();\r\n\r\n let hasDynamicSeries = grouped && !!categorical.values.source;\r\n this.hasDynamicSeries = hasDynamicSeries;\r\n\r\n let seriesSource: data.SQExpr[];\r\n if (hasDynamicSeries) {\r\n seriesSource = <data.SQExpr[]>categorical.values.identityFields;\r\n }\r\n else if (categorical.values && categorical.values.length > 0) {\r\n seriesSource = <data.SQExpr[]>categorical.categories[0].identityFields;\r\n }\r\n\r\n let sizeIndex = DataRoleHelper.getMeasureIndexOfRole(grouped, \"Size\");\r\n let longIndex = DataRoleHelper.getMeasureIndexOfRole(grouped, \"X\");\r\n let latIndex = DataRoleHelper.getMeasureIndexOfRole(grouped, \"Y\");\r\n\r\n let groupSizeTotals: number[] = [];\r\n this.valueScale = null; // Clear scale\r\n if (sizeIndex !== -1)\r\n this.valueScale = Map.calculateGroupSizes(categorical, grouped, groupSizeTotals, sizeIndex, this.valueScale);\r\n this.geocodingCategory = Map.getGeocodingCategory(categorical, this.geoTaggingAnalyzerService);\r\n let scaleDiff = this.valueScale ? this.valueScale.max - this.valueScale.min : 0;\r\n\r\n if (enableGeoShaping && (!this.geocodingCategory || !this.geoTaggingAnalyzerService.isGeoshapable(this.geocodingCategory))) {\r\n warnings.push(new FilledMapWithoutValidGeotagCategoryWarning());\r\n }\r\n\r\n this.mapControlFactory.ensureMap(this.locale, () => {\r\n // NOTE: We calculate the legend first so that colors are guaranteed to be assigned in series order.\r\n let legendDataPoints = Map.calculateSeriesLegend(grouped, i, sizeIndex, this.colors, this.defaultDataPointColor, seriesSource, this.interactivityService);\r\n if (legendDataPoints.length === 1)\r\n legendDataPoints = [];\r\n\r\n let groupValues = categorical.categories[0].values;\r\n let categoryIdentities = dataView.categorical.categories[0].identity;\r\n this.dataPointRenderer.beginDataPointUpdate(this.geocodingCategory, groupValues.length);\r\n let objectDefinitions = dataView.categorical.categories[0].objects;\r\n for (var i = 0, ilen = groupValues.length; i < ilen; i++) {\r\n let group = groupValues[i];\r\n let value = groupSizeTotals[i];\r\n let seriesInfo = Map.calculateSeriesInfo(grouped, i, sizeIndex, longIndex, latIndex, this.colors, this.defaultDataPointColor, objectDefinitions, seriesSource);\r\n let radius = Map.calculateRadius(this.valueScale, scaleDiff, value);\r\n\r\n let params;\r\n if (enableGeoShaping) {\r\n params = MapShapeDataPointRenderer.getFilledMapParams(this.geocodingCategory, groupValues.length);\r\n }\r\n\r\n let dp = Map.createMapDataPoint(group, value, seriesInfo, radius, this.colors, categoryIdentities ? categoryIdentities[i] : undefined);\r\n if (dp) {\r\n this.dataPointRenderer.addDataPoint(dp);\r\n if (!dp.location) {\r\n if (enableGeoShaping)\r\n this.enqueueGeoCodeAndGeoShape(dp, params);\r\n else\r\n this.enqueueGeoCode(dp);\r\n }\r\n else if (enableGeoShaping && !dp.paths) {\r\n this.enqueueGeoShape(dp, params);\r\n }\r\n else {\r\n this.addDataPoint(dp);\r\n }\r\n }\r\n }\r\n\r\n let dvValues = categorical.values;\r\n let title = dvValues && dvValues.source ? dvValues.source.displayName : \"\";\r\n this.legendData = { title: title, dataPoints: legendDataPoints };\r\n this.dataPointsToEnumerate = legendDataPoints;\r\n\r\n this.renderLegend(this.legendData);\r\n });\r\n }\r\n else {\r\n this.clearDataPoints();\r\n }\r\n }\r\n else {\r\n this.clearDataPoints();\r\n }\r\n\r\n this.host.setWarnings(warnings);\r\n\r\n this.updateInternal(true /* dataChanged */, true);\r\n }\r\n\r\n private swapLogoContainerChildElement() {\r\n // This is a workaround that allow maps to be printed from the IE and Edge browsers.\r\n // For some unknown reason, the presence of an <a> child element in the .LogoContainer\r\n // prevents dashboard map visuals from showing up when printed.\r\n // The trick is to swap out the <a> element with a <div> container.\r\n // There are no user impacts or visual changes.\r\n let logoContainer = this.element.find('.LogoContainer');\r\n\r\n if (logoContainer) {\r\n let aNode = logoContainer.find('a');\r\n if (aNode == null)\r\n return;\r\n\r\n let divNode = $('<div>');\r\n aNode.children().clone().appendTo(divNode);\r\n aNode.remove();\r\n divNode.appendTo(logoContainer);\r\n }\r\n }\r\n\r\n /** Note: Public for UnitTests */\r\n public static showLocationMissingWarningIfNecessary(dataView: powerbi.DataView): IVisualWarning[] {\r\n let metadata = dataView.metadata;\r\n\r\n if (metadata && metadata.columns) {\r\n let columns = metadata.columns;\r\n let foundLocation: boolean = false;\r\n\r\n for (let i = 0; i < columns.length; i++) {\r\n if (DataRoleHelper.hasRole(columns[i], 'Category')) {\r\n // Found location\r\n foundLocation = true;\r\n }\r\n }\r\n\r\n if (!foundLocation) {\r\n return [new NoMapLocationWarning()];\r\n }\r\n }\r\n\r\n return [];\r\n }\r\n\r\n public onResizing(viewport: IViewport): void {\r\n if (this.currentViewport.width !== viewport.width || this.currentViewport.height !== viewport.height) {\r\n this.currentViewport = viewport;\r\n this.renderLegend(this.legendData);\r\n this.updateInternal(false /* dataChanged */, false);\r\n }\r\n }\r\n\r\n private initialize(container: HTMLElement): void {\r\n let mapOptions = {\r\n credentials: MapUtil.Settings.BingKey,\r\n showMapTypeSelector: false,\r\n enableClickableLogo: false,\r\n enableSearchLogo: false,\r\n mapTypeId: Microsoft.Maps.MapTypeId.road,\r\n customizeOverlays: true,\r\n showDashboard: false,\r\n showScalebar: false,\r\n disableKeyboardInput: true, // Workaround for the BingMaps control moving focus from QnA\r\n disableZooming: this.disableZooming,\r\n disablePanning: this.disablePanning,\r\n };\r\n let divQuery = this.root = InJs.DomFactory.div().addClass(Map.MapContainer.cssClass).appendTo(container);\r\n this.mapControl = this.mapControlFactory.createMapControl(divQuery[0], mapOptions);\r\n\r\n if (this.viewChangeThrottleInterval !== undefined) {\r\n Microsoft.Maps.Events.addThrottledHandler(this.mapControl, \"viewchange\", () => { this.onViewChanged(); },\r\n this.viewChangeThrottleInterval);\r\n } else {\r\n Microsoft.Maps.Events.addHandler(this.mapControl, \"viewchange\", () => { this.onViewChanged(); });\r\n }\r\n\r\n Microsoft.Maps.Events.addHandler(this.mapControl, \"viewchangeend\", () => { this.onViewChangeEnded(); });\r\n this.dataPointRenderer.init(this.mapControl, divQuery, !!this.behavior);\r\n\r\n if (!this.pendingGeocodingRender) {\r\n this.updateInternal(true /* dataChanged */, true);\r\n }\r\n }\r\n\r\n private onViewChanged() {\r\n if (!this.executingInternalViewChange)\r\n this.receivedExternalViewChange = true;\r\n else\r\n this.executingInternalViewChange = false;\r\n this.updateOffsets(false, false /* dataChanged */);\r\n if (this.behavior)\r\n this.behavior.viewChanged();\r\n\r\n this.swapLogoContainerChildElement();\r\n }\r\n\r\n private onViewChangeEnded() {\r\n\r\n this.dataPointRenderer.updateInternalDataLabels(this.currentViewport, true);\r\n }\r\n\r\n private getMapViewPort(): IViewport {\r\n let currentViewport = this.currentViewport;\r\n let legendMargins = this.legend.getMargins();\r\n\r\n let mapViewport = {\r\n width: currentViewport.width - legendMargins.width,\r\n height: currentViewport.height - legendMargins.height,\r\n };\r\n\r\n return mapViewport;\r\n }\r\n\r\n public static removeTransform3d(mapRoot: JQuery): void {\r\n // don't remove transform3d from bing maps images in safari (using applewebkit engine)\r\n let userAgent = window.navigator.userAgent.toLowerCase();\r\n if (mapRoot && userAgent.indexOf('applewebkit') === -1) {\r\n let imageTiles = mapRoot.find('img');\r\n imageTiles.css('transform', '');\r\n }\r\n }\r\n\r\n private updateInternal(dataChanged: boolean, redrawDataLabels: boolean) {\r\n if (this.mapControl) {\r\n let isLegendVisible = this.legend.isVisible();\r\n\r\n if (!isLegendVisible)\r\n this.legendData = { dataPoints: [] };\r\n\r\n let mapDiv = this.element.children(Map.MapContainer.selector);\r\n let mapViewport = this.getMapViewPort();\r\n mapDiv.height(mapViewport.height);\r\n mapDiv.width(mapViewport.width);\r\n\r\n // With the risk of double drawing, if the position updates to nearly the same, the map control won't call viewchange, so explicitly update the points\r\n this.updateOffsets(dataChanged, redrawDataLabels);\r\n\r\n // Set zoom level after we rendered that map as we need the max size of the bubbles/ pie slices to calculate it\r\n let levelOfDetail = this.getOptimumLevelOfDetail(mapViewport.width, mapViewport.height);\r\n let center = this.getViewCenter(levelOfDetail);\r\n\r\n if (!this.receivedExternalViewChange || !this.interactivityService) {\r\n this.executingInternalViewChange = true;\r\n this.mapControl.setView({ center: center, zoom: levelOfDetail, animate: true });\r\n }\r\n }\r\n }\r\n\r\n private updateOffsets(dataChanged: boolean, redrawDataLabels: boolean) {\r\n let dataView = this.dataView;\r\n let data: MapData;\r\n let viewport = this.getMapViewPort();\r\n if (dataView && dataView.categorical) {\r\n // currentViewport may not exist in UnitTests\r\n data = this.dataPointRenderer.converter(viewport, this.dataView, this.dataLabelsSettings, this.interactivityService);\r\n }\r\n else {\r\n data = {\r\n bubbleData: [],\r\n shapeData: [],\r\n sliceData: [],\r\n };\r\n }\r\n\r\n let behaviorOptions = this.dataPointRenderer.updateInternal(data, viewport, dataChanged, this.interactivityService, redrawDataLabels);\r\n Legend.positionChartArea(d3.select(this.root[0]), this.legend);\r\n\r\n if (this.interactivityService && behaviorOptions) {\r\n this.interactivityService.bind(behaviorOptions.dataPoints, this.behavior, behaviorOptions);\r\n }\r\n }\r\n\r\n public onClearSelection(): void {\r\n this.interactivityService.clearSelection();\r\n this.updateOffsets(false, false /* dataChanged */);\r\n }\r\n\r\n private clearDataPoints(): void {\r\n this.dataPointRenderer.clearDataPoints();\r\n this.legend.drawLegend({ dataPoints: [] }, this.currentViewport);\r\n }\r\n\r\n private getDefaultMapControlFactory(): IMapControlFactory {\r\n return {\r\n createMapControl: (element: HTMLElement, options: Microsoft.Maps.MapOptions) => new Microsoft.Maps.Map(element, options),\r\n ensureMap: jsCommon.ensureMap,\r\n };\r\n }\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n import getKpiImageMetadata = powerbi.visuals.KpiUtil.getKpiImageMetadata;\r\n import ClassAndSelector = jsCommon.CssConstants.ClassAndSelector;\r\n import createClassAndSelector = jsCommon.CssConstants.createClassAndSelector;\r\n import PixelConverter = jsCommon.PixelConverter;\r\n\r\n const TitleFontFamily = 'wf_segoe-ui_semibold';\r\n const DefaultFontFamily = 'wf_segoe-ui_normal';\r\n const DefaultCaptionFontSizeInPt = 10;\r\n const DefaultTitleFontSizeInPt = 13;\r\n const DefaultDetailFontSizeInPt = 9;\r\n const DefaultTitleColor = '#767676';\r\n const DefaultTextColor = '#333333';\r\n\r\n export interface CardItemData {\r\n caption: string;\r\n details: string;\r\n showURL: boolean;\r\n showImage: boolean;\r\n showKPI: boolean;\r\n columnIndex: number;\r\n }\r\n\r\n export interface MultiRowCardData {\r\n dataModel: CardData[];\r\n cardTitleSettings: VisualDataLabelsSettings;\r\n dataLabelsSettings: VisualDataLabelsSettings;\r\n categoryLabelsSettings: VisualDataLabelsSettings;\r\n }\r\n\r\n export interface CardData {\r\n title?: string;\r\n showTitleAsURL?: boolean;\r\n showTitleAsImage?: boolean;\r\n showTitleAsKPI?: boolean;\r\n cardItemsData: CardItemData[];\r\n }\r\n\r\n interface ImageStyle {\r\n maxWidth?: number;\r\n maxHeight?: number;\r\n }\r\n\r\n interface MediaQuery {\r\n maxWidth?: number;\r\n style?: MultiRowCardStyle;\r\n }\r\n\r\n interface MultiRowCardStyle {\r\n card?: {\r\n marginBottom?: number;\r\n maxRows?: number;\r\n };\r\n cardItemContainer?: {\r\n paddingRight?: number;\r\n minWidth?: number;\r\n };\r\n details?: {\r\n fontSize?: number;\r\n color?: string,\r\n isVisible?: boolean;\r\n };\r\n caption?: {\r\n fontSize?: number;\r\n color?: string,\r\n };\r\n title?: {\r\n fontSize?: number;\r\n color?: string,\r\n };\r\n imageCaption?: ImageStyle;\r\n imageTitle?: ImageStyle;\r\n }\r\n\r\n export class MultiRowCard implements IVisual {\r\n private currentViewport: IViewport;\r\n private options: VisualInitOptions;\r\n private dataView: DataView;\r\n private style: IVisualStyle;\r\n private element: JQuery;\r\n private listView: IListView;\r\n /**\r\n * This includes card height with margin that will be passed to list view.\r\n */\r\n private interactivity: InteractivityOptions;\r\n private isInteractivityOverflowHidden: boolean = false;\r\n private waitingForData: boolean;\r\n private cardHasTitle: boolean;\r\n private isSingleRowCard: boolean;\r\n private maxColPerRow: number;\r\n private data: MultiRowCardData;\r\n\r\n /**\r\n * Note: Public for testability.\r\n */\r\n public static formatStringProp: DataViewObjectPropertyIdentifier = {\r\n objectName: 'general',\r\n propertyName: 'formatString',\r\n };\r\n\r\n private static MultiRowCardRoot = createClassAndSelector('multiRowCard');\r\n private static Card: ClassAndSelector = createClassAndSelector('card');\r\n private static Title: ClassAndSelector = createClassAndSelector('title');\r\n private static CardItemContainer: ClassAndSelector = createClassAndSelector('cardItemContainer');\r\n private static Caption: ClassAndSelector = createClassAndSelector('caption');\r\n private static Details: ClassAndSelector = createClassAndSelector('details');\r\n private static TitleUrlSelector: string = MultiRowCard.Title.selector + ' a';\r\n private static CaptionUrlSelector: string = MultiRowCard.Caption.selector + ' a';\r\n private static TitleImageSelector: string = MultiRowCard.Title.selector + ' img';\r\n private static CaptionImageSelector: string = MultiRowCard.Caption.selector + ' img';\r\n private static KPITitle: ClassAndSelector = createClassAndSelector('kpiTitle');\r\n\r\n /**\r\n * Cards have specific styling so defined inline styles and also to support theming and improve performance.\r\n */\r\n private static DefaultStyle: MultiRowCardStyle = {\r\n card: {\r\n marginBottom: 20\r\n },\r\n cardItemContainer: {\r\n paddingRight: 20,\r\n minWidth: 120,\r\n },\r\n imageCaption: {\r\n maxHeight: 75,\r\n maxWidth: 100,\r\n },\r\n imageTitle: {\r\n maxHeight: 75,\r\n maxWidth: 100,\r\n }\r\n };\r\n\r\n // queries should be ordered by maxWidth in ascending order\r\n private static tileMediaQueries: MediaQuery[] = [\r\n {\r\n maxWidth: 250,\r\n style: {\r\n card: {\r\n maxRows: 2,\r\n },\r\n cardItemContainer: {\r\n minWidth: 110,\r\n },\r\n imageCaption: {\r\n maxHeight: 45,\r\n }\r\n }\r\n },\r\n {\r\n maxWidth: 490,\r\n style: {\r\n card: {\r\n maxRows: 2,\r\n },\r\n cardItemContainer: {\r\n minWidth: 130,\r\n },\r\n imageCaption: {\r\n maxHeight: 52,\r\n }\r\n }\r\n },\r\n {\r\n maxWidth: 750,\r\n style: {\r\n card: {\r\n maxRows: 1,\r\n },\r\n cardItemContainer: {\r\n minWidth: 120,\r\n },\r\n imageCaption: {\r\n maxHeight: 53,\r\n }\r\n }\r\n }\r\n ];\r\n\r\n public init(options: VisualInitOptions) {\r\n debug.assertValue(options, 'options');\r\n this.options = options;\r\n this.style = options.style;\r\n let viewport = this.currentViewport = options.viewport;\r\n let interactivity = this.interactivity = options.interactivity;\r\n \r\n if (interactivity && interactivity.overflow === 'hidden')\r\n this.isInteractivityOverflowHidden = true;\r\n\r\n let multiRowCardDiv = this.element = $('<div/>')\r\n .addClass(MultiRowCard.MultiRowCardRoot.class)\r\n .css({\r\n 'height': getPixelString(viewport.height),\r\n });\r\n options.element.append(multiRowCardDiv);\r\n this.initializeCardRowSelection();\r\n }\r\n\r\n public onDataChanged(options: VisualDataChangedOptions): void {\r\n debug.assertValue(options, 'options');\r\n\r\n let dataViews = options.dataViews;\r\n if (dataViews && dataViews.length > 0) {\r\n let dataView = this.dataView = dataViews[0];\r\n let columnMetadata: DataViewMetadataColumn[] = dataView.table.columns;\r\n let tableRows: any[][] = dataView.table.rows;\r\n let resetScrollbarPosition = options.operationKind !== VisualDataChangeOperationKind.Append;\r\n let data = this.data = MultiRowCard.converter(dataView, columnMetadata.length, tableRows.length, this.isInteractivityOverflowHidden);\r\n this.setCardDimensions();\r\n this.listView.data(data.dataModel, (d: CardData) => data.dataModel.indexOf(d), resetScrollbarPosition);\r\n }\r\n else {\r\n this.data = {\r\n dataModel: [],\r\n cardTitleSettings: dataLabelUtils.getDefaultLabelSettings(true, DefaultTitleColor, DefaultTitleFontSizeInPt),\r\n categoryLabelsSettings: dataLabelUtils.getDefaultLabelSettings(true, DefaultTextColor, DefaultDetailFontSizeInPt),\r\n dataLabelsSettings: dataLabelUtils.getDefaultLabelSettings(true, DefaultTextColor, DefaultCaptionFontSizeInPt),\r\n };\r\n }\r\n\r\n this.waitingForData = false;\r\n }\r\n\r\n public onResizing(viewport: IViewport): void {\r\n let heightNotChanged = (this.currentViewport.height === viewport.height);\r\n this.currentViewport = viewport;\r\n this.element.css('height', getPixelString(viewport.height));\r\n if (!this.dataView)\r\n return;\r\n\r\n let previousMaxColPerRow = this.maxColPerRow;\r\n this.maxColPerRow = this.getMaxColPerRow();\r\n let widthNotChanged = (previousMaxColPerRow === this.maxColPerRow);\r\n if (heightNotChanged && widthNotChanged)\r\n return;\r\n\r\n this.listView.viewport(viewport);\r\n }\r\n\r\n public static converter(dataView: DataView, columnCount: number, maxCards: number, isDashboardVisual: boolean = false): MultiRowCardData {\r\n let details: CardData[] = [];\r\n let tableDataRows = dataView.table.rows;\r\n let columnMetadata: DataViewMetadataColumn[] = dataView.table.columns;\r\n let cardTitleSettings: VisualDataLabelsSettings ,\r\n dataLabelsSettings: VisualDataLabelsSettings,\r\n categoryLabelsSettings: VisualDataLabelsSettings;\r\n\r\n cardTitleSettings = dataLabelUtils.getDefaultLabelSettings(true, DefaultTitleColor, DefaultTitleFontSizeInPt);\r\n dataLabelsSettings = dataLabelUtils.getDefaultLabelSettings(true, DefaultTextColor, DefaultCaptionFontSizeInPt);\r\n categoryLabelsSettings = dataLabelUtils.getDefaultLabelSettings(true, DefaultTextColor, DefaultDetailFontSizeInPt);\r\n\r\n if (dataView.metadata && dataView.metadata.objects) {\r\n let cardTitleLabelObjects = <DataLabelObject>DataViewObjects.getObject(dataView.metadata.objects, 'cardTitle');\r\n dataLabelUtils.updateLabelSettingsFromLabelsObject(cardTitleLabelObjects, cardTitleSettings);\r\n\r\n let dataLabelObject = <DataLabelObject>DataViewObjects.getObject(dataView.metadata.objects, 'dataLabels');\r\n dataLabelUtils.updateLabelSettingsFromLabelsObject(dataLabelObject, dataLabelsSettings);\r\n\r\n let categoryLabelObject = <DataLabelObject>DataViewObjects.getObject(dataView.metadata.objects, 'categoryLabels');\r\n dataLabelUtils.updateLabelSettingsFromLabelsObject(categoryLabelObject, categoryLabelsSettings);\r\n }\r\n\r\n for (let i = 0, len = maxCards; i < len; i++) {\r\n let row = tableDataRows[i];\r\n let isValuePromoted: boolean = undefined;\r\n var title: string = undefined;\r\n let showTitleAsURL: boolean = false;\r\n let showTitleAsImage: boolean = false;\r\n let showTitleAsKPI: boolean = false;\r\n let cardData: CardItemData[] = [];\r\n for (let j = 0; j < columnCount; j++) {\r\n let column = columnMetadata[j];\r\n\r\n let statusGraphicInfo = getKpiImageMetadata(column, row[j]);\r\n let columnCaption: string;\r\n let statusGraphic: string;\r\n\r\n if (statusGraphicInfo) {\r\n columnCaption = statusGraphicInfo.class;\r\n statusGraphic = statusGraphicInfo.statusGraphic;\r\n }\r\n\r\n //TODO: seems we are duplicating this logic in many places. Consider putting it in KPIUtil\r\n if (!columnCaption)\r\n columnCaption = valueFormatter.format(row[j], valueFormatter.getFormatString(column, MultiRowCard.formatStringProp));\r\n\r\n let showKPI = statusGraphicInfo !== undefined && statusGraphicInfo.caption !== undefined;\r\n\r\n // The columnDetail represents column name. In card the column name is shown as details\r\n let columnDetail: string = columnMetadata[j].displayName;\r\n\r\n //Title is shown only on Canvas and only if there is one Category field.\r\n if (!isDashboardVisual && !column.type.numeric) {\r\n if (isValuePromoted === undefined) {\r\n isValuePromoted = true;\r\n title = columnCaption;\r\n showTitleAsURL = UrlHelper.isValidUrl(column, title);\r\n showTitleAsImage = UrlHelper.isValidImage(column, columnCaption);\r\n showTitleAsKPI = showKPI;\r\n }\r\n else if (isValuePromoted) {\r\n isValuePromoted = false;\r\n }\r\n }\r\n cardData.push({\r\n caption: columnCaption,\r\n details: columnDetail,\r\n showURL: UrlHelper.isValidUrl(column, columnCaption),\r\n showImage: UrlHelper.isValidImage(column, columnCaption),\r\n showKPI: showKPI,\r\n columnIndex: j\r\n });\r\n }\r\n details.push({\r\n title: isValuePromoted ? title : undefined,\r\n showTitleAsURL: showTitleAsURL,\r\n showTitleAsImage: showTitleAsImage,\r\n showTitleAsKPI: showTitleAsKPI,\r\n cardItemsData: isValuePromoted ? cardData.filter((d: CardItemData) => d.caption !== title) : cardData\r\n });\r\n }\r\n return {\r\n dataModel: details,\r\n cardTitleSettings: cardTitleSettings,\r\n categoryLabelsSettings: categoryLabelsSettings,\r\n dataLabelsSettings: dataLabelsSettings,\r\n };\r\n }\r\n\r\n private initializeCardRowSelection() {\r\n let isDashboardVisual = this.isInteractivityOverflowHidden;\r\n\r\n let rowEnter = (rowSelection: D3.Selection) => {\r\n let cardRow = rowSelection\r\n .append(\"div\")\r\n .classed(MultiRowCard.Card.class, true);\r\n\r\n // The card top padding is not needed when card items are wrapped as top padding is added to each carditemcontainer when wrapped\r\n if (isDashboardVisual) {\r\n cardRow.classed('mrtile', true);\r\n }\r\n else {\r\n if (this.cardHasTitle) {\r\n cardRow.append(\"div\").classed(MultiRowCard.Title.class, true)\r\n .each(function (d: CardData) {\r\n if (d.showTitleAsImage)\r\n appendImage(d3.select(this));\r\n else if (d.showTitleAsURL)\r\n d3.select(this).append('a');\r\n else if (d.showTitleAsKPI)\r\n d3.select(this).append('div')\r\n .classed(MultiRowCard.KPITitle.class, true)\r\n .classed(d.title, true)\r\n .style({\r\n display: 'inline-block',\r\n verticalAlign: 'sub'\r\n });\r\n });\r\n }\r\n }\r\n\r\n let cardItem = cardRow\r\n .selectAll(MultiRowCard.CardItemContainer.selector)\r\n .data((d: CardData) => d.cardItemsData)\r\n .enter()\r\n .append('div')\r\n .classed(MultiRowCard.CardItemContainer.class, true);\r\n\r\n cardItem\r\n .append('div')\r\n .classed(MultiRowCard.Caption.class, true)\r\n .each(function (d: CardItemData) {\r\n if (d.showURL) {\r\n d3.select(this).append('a');\r\n }\r\n else if (d.showImage) {\r\n appendImage(d3.select(this));\r\n }\r\n else if (d.showKPI) {\r\n d3.select(this).append('div')\r\n .classed(d.caption, true)\r\n .style({\r\n display: 'inline-block',\r\n verticalAlign: 'sub'\r\n });\r\n }\r\n });\r\n\r\n cardItem\r\n .append('div')\r\n .classed(MultiRowCard.Details.class, true);\r\n };\r\n\r\n /**\r\n * Row update should:\r\n * 1. bind Data\r\n * 2. Manipulate DOM (likely just updating CSS properties) affected by data\r\n */\r\n let rowUpdate = (rowSelection: D3.Selection) => {\r\n let style = this.getStyle();\r\n let dataLabelHeight = TextMeasurementService.estimateSvgTextHeight(MultiRowCard.getTextProperties(false, style.caption.fontSize));\r\n let categoryLabelHeight = TextMeasurementService.estimateSvgTextHeight(MultiRowCard.getTextProperties(false, style.details.fontSize));\r\n let titleLabelHeight = TextMeasurementService.estimateSvgTextHeight(MultiRowCard.getTextProperties(true, style.title.fontSize));\r\n\r\n if (!isDashboardVisual && this.cardHasTitle) {\r\n rowSelection.selectAll(MultiRowCard.Title.selector)\r\n .filter((d: CardData) => !d.showTitleAsImage && !d.showTitleAsKPI)\r\n .style({\r\n 'font-size': PixelConverter.fromPoint(style.title.fontSize),\r\n 'line-height': PixelConverter.toString(titleLabelHeight),\r\n 'color': style.title.color,\r\n });\r\n\r\n rowSelection.selectAll(MultiRowCard.Title.selector)\r\n .filter((d: CardData) => !d.showTitleAsURL && !d.showTitleAsImage && !d.showTitleAsKPI)\r\n .text((d: CardData) => d.title)\r\n .attr('title', (d: CardData) => d.title);\r\n\r\n rowSelection\r\n .selectAll(MultiRowCard.TitleUrlSelector)\r\n .text((d: CardData) => d.title)\r\n .attr({\r\n 'href': (d: CardData) => d.title,\r\n 'target': '_blank',\r\n });\r\n\r\n rowSelection\r\n .selectAll(MultiRowCard.TitleImageSelector)\r\n .attr('src', (d: CardData) => d.title);\r\n setImageStyle(rowSelection.selectAll(MultiRowCard.Title.selector), style.imageTitle);\r\n\r\n rowSelection\r\n .selectAll(MultiRowCard.KPITitle.selector)\r\n .each(function (d: CardData) {\r\n let element = d3.select(this);\r\n element.classed(d.title);\r\n });\r\n }\r\n\r\n let cardSelection = rowSelection.selectAll(MultiRowCard.Card.selector);\r\n\r\n cardSelection\r\n .selectAll(MultiRowCard.Caption.selector)\r\n .filter((d: CardItemData) => !(d.showImage || d.showKPI))\r\n .style({\r\n 'line-height': PixelConverter.toString(dataLabelHeight),\r\n 'font-size': PixelConverter.fromPoint(style.caption.fontSize),\r\n 'color': style.caption.color,\r\n })\r\n .filter((d: CardItemData) => !d.showURL)\r\n .text((d: CardItemData) => d.caption)\r\n .attr('title', (d: CardItemData) => d.caption);\r\n\r\n cardSelection\r\n .selectAll(MultiRowCard.CaptionImageSelector)\r\n .attr('src', (d: CardItemData) => d.caption)\r\n .style(style.imageCaption);\r\n\r\n cardSelection\r\n .selectAll(MultiRowCard.CardItemContainer.selector)\r\n .style({\r\n 'padding-right': (d: CardItemData) => {\r\n return this.isLastRowItem(d.columnIndex, this.dataView.metadata.columns.length) ? '0px' : getPixelString(style.cardItemContainer.paddingRight);\r\n },\r\n 'width': (d: CardItemData) => {\r\n return this.getColumnWidth(d.columnIndex, this.dataView.metadata.columns.length);\r\n },\r\n 'display': (d: CardItemData) => {\r\n return (this.hideColumn(d.columnIndex) ? 'none' : 'inline-block');\r\n },\r\n });\r\n\r\n setImageStyle(cardSelection.selectAll(MultiRowCard.Caption.selector), style.imageCaption);\r\n\r\n cardSelection\r\n .selectAll(MultiRowCard.CaptionUrlSelector)\r\n .attr({\r\n 'href': (d: CardItemData) => d.caption,\r\n 'target': '_blank',\r\n })\r\n .text((d: CardItemData) => d.caption);\r\n \r\n if (style.details.isVisible) {\r\n cardSelection\r\n .selectAll(MultiRowCard.Details.selector)\r\n .text((d: CardItemData) => d.details)\r\n .style({\r\n 'font-size': PixelConverter.fromPoint(style.details.fontSize),\r\n 'line-height': PixelConverter.toString(categoryLabelHeight),\r\n 'color': style.details.color\r\n })\r\n .attr('title', (d: CardItemData) => d.details);\r\n }\r\n\r\n cardSelection\r\n .style('margin-bottom', isDashboardVisual ? '0px' : (this.isSingleRowCard ? '0px' : getPixelString(style.card.marginBottom)));\r\n };\r\n\r\n let rowExit = (rowSelection: D3.Selection) => {\r\n rowSelection.remove();\r\n };\r\n\r\n let listViewOptions: ListViewOptions = {\r\n rowHeight: undefined,\r\n enter: rowEnter,\r\n exit: rowExit,\r\n update: rowUpdate,\r\n loadMoreData: () => this.onLoadMoreData(),\r\n viewport: this.currentViewport,\r\n baseContainer: d3.select(this.element.get(0)),\r\n scrollEnabled: !this.isInteractivityOverflowHidden,\r\n };\r\n\r\n this.listView = ListViewFactory.createListView(listViewOptions);\r\n }\r\n\r\n private getMaxColPerRow(): number {\r\n let rowWidth = this.currentViewport.width;\r\n let minColumnWidth = this.getStyle().cardItemContainer.minWidth;\r\n let columnCount = this.dataView.metadata.columns.length;\r\n //atleast one column fits in a row\r\n let maxColumnPerRow = Math.floor(rowWidth / minColumnWidth) || 1;\r\n return Math.min(columnCount, maxColumnPerRow);\r\n }\r\n\r\n private getRowIndex(fieldIndex: number): number {\r\n return Math.floor((fieldIndex * 1.0) / this.getMaxColPerRow());\r\n }\r\n\r\n private getStyle(): MultiRowCardStyle {\r\n let defaultStyle = this.getOverridenStyle();\r\n if (!this.isInteractivityOverflowHidden)\r\n return $.extend(true, {}, defaultStyle);\r\n\r\n let viewportWidth = this.currentViewport.width;\r\n let overrideStyle: MultiRowCardStyle = {};\r\n for (let currentQuery of MultiRowCard.tileMediaQueries)\r\n if (viewportWidth <= currentQuery.maxWidth) {\r\n overrideStyle = currentQuery.style;\r\n break;\r\n }\r\n return $.extend(true, {}, defaultStyle, overrideStyle);\r\n }\r\n\r\n private getOverridenStyle(): MultiRowCardStyle {\r\n let defaultStyle = MultiRowCard.DefaultStyle;\r\n let dataLabelsSettings = this.data.dataLabelsSettings;\r\n let categoryLabelSettings = this.data.categoryLabelsSettings;\r\n let titleLabelSettings = this.data.cardTitleSettings;\r\n\r\n let overrideStyle: MultiRowCardStyle = {\r\n caption: {\r\n fontSize: dataLabelsSettings.fontSize,\r\n color: dataLabelsSettings.labelColor,\r\n },\r\n title: {\r\n fontSize: titleLabelSettings.fontSize,\r\n color: titleLabelSettings.labelColor,\r\n },\r\n details: {\r\n fontSize: categoryLabelSettings.fontSize,\r\n color: categoryLabelSettings.labelColor,\r\n isVisible: categoryLabelSettings.show,\r\n }\r\n };\r\n\r\n return $.extend(true, overrideStyle, defaultStyle);\r\n }\r\n\r\n private static getTextProperties(isTitle: boolean, fontSizeInPt: number): TextProperties {\r\n return {\r\n fontFamily: isTitle ? TitleFontFamily : DefaultFontFamily,\r\n fontSize: PixelConverter.fromPoint(fontSizeInPt),\r\n };\r\n }\r\n\r\n private hideColumn(fieldIndex: number): boolean {\r\n //calculate the number of items apearing in the same row as the columnIndex\r\n let rowIndex = this.getRowIndex(fieldIndex);\r\n\r\n // when interactivity is disabled (pinned tile), don't wrap the row\r\n let maxRows = this.getStyle().card.maxRows;\r\n return (maxRows && rowIndex >= maxRows);\r\n }\r\n\r\n private getColumnWidth(fieldIndex: number, columnCount: number): string {\r\n //atleast one column fits in a row\r\n let maxColumnPerRow = this.getMaxColPerRow();\r\n if (maxColumnPerRow >= columnCount)\r\n //all columns fit in the same row, divide the space equaly\r\n return (100.0 / columnCount) + '%';\r\n\r\n //calculate the number of items apearing in the same row as the columnIndex\r\n let rowIndex = this.getRowIndex(fieldIndex);\r\n\r\n let totalRows = Math.ceil((columnCount * 1.0) / maxColumnPerRow);\r\n let lastRowCount = columnCount % maxColumnPerRow;\r\n if (rowIndex < totalRows || lastRowCount === 0)\r\n // items is not on the last row or last row contains max columns allowed per row\r\n return (100.0 / maxColumnPerRow) + '%';\r\n\r\n // items is on the last row\r\n return (100.0 / lastRowCount) + '%';\r\n }\r\n\r\n private isLastRowItem(fieldIndex: number, columnCount: number) {\r\n if (fieldIndex + 1 === columnCount)\r\n return true;\r\n let maxColumnPerRow = this.getMaxColPerRow();\r\n if (maxColumnPerRow - (fieldIndex % maxColumnPerRow) === 1)\r\n return true;\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * This contains the card column wrapping logic.\r\n * Determines how many columns can be shown per each row inside a Card.\r\n * To place the fields evenly along the card,\r\n * the width of each card item is calculated based on the available viewport width.\r\n */\r\n private setCardDimensions(): void {\r\n this.cardHasTitle = false;\r\n\r\n let dataModel = this.data.dataModel;\r\n\r\n if (!this.isInteractivityOverflowHidden && dataModel && dataModel.length > 0) {\r\n this.cardHasTitle = dataModel[0].title !== undefined;\r\n this.isSingleRowCard = dataModel.length === 1 ? true : false;\r\n }\r\n }\r\n\r\n private onLoadMoreData(): void {\r\n if (!this.waitingForData && this.dataView.metadata && this.dataView.metadata.segment) {\r\n this.options.host.loadMoreData();\r\n this.waitingForData = true;\r\n }\r\n }\r\n\r\n private static getDataLabelSettingsOptions(enumeration: ObjectEnumerationBuilder, labelSettings: VisualDataLabelsSettings, show: boolean = false): VisualDataLabelsSettingsOptions {\r\n return {\r\n enumeration: enumeration,\r\n dataLabelsSettings: labelSettings,\r\n show: show,\r\n fontSize: true,\r\n };\r\n }\r\n\r\n public enumerateObjectInstances(options: EnumerateVisualObjectInstancesOptions): VisualObjectInstanceEnumeration {\r\n let enumeration = new ObjectEnumerationBuilder();\r\n\r\n let cardTitleSettings = this.data.cardTitleSettings;\r\n let dataLabelsSettings = this.data.dataLabelsSettings;\r\n let categoryLabelsSettings = this.data.categoryLabelsSettings;\r\n\r\n switch (options.objectName) {\r\n case 'cardTitle':\r\n //display title options only if title visible\r\n if (!this.isInteractivityOverflowHidden && this.cardHasTitle)\r\n dataLabelUtils.enumerateDataLabels(MultiRowCard.getDataLabelSettingsOptions(enumeration, cardTitleSettings));\r\n break;\r\n case 'dataLabels':\r\n dataLabelUtils.enumerateDataLabels(MultiRowCard.getDataLabelSettingsOptions(enumeration, dataLabelsSettings));\r\n break;\r\n case 'categoryLabels':\r\n dataLabelUtils.enumerateDataLabels(MultiRowCard.getDataLabelSettingsOptions(enumeration, categoryLabelsSettings, true));\r\n break;\r\n }\r\n\r\n return enumeration.complete();\r\n }\r\n }\r\n\r\n function appendImage(selection: D3.Selection): void {\r\n selection\r\n .append('div')\r\n .classed('imgCon', true)\r\n .append('img');\r\n }\r\n\r\n function setImageStyle(selection: D3.Selection, imageStyle: ImageStyle): void {\r\n selection\r\n .selectAll('.imgCon')\r\n .style({\r\n 'height': getPixelString(imageStyle.maxHeight),\r\n })\r\n .selectAll('img')\r\n .style({\r\n 'max-height': getPixelString(imageStyle.maxHeight),\r\n 'max-width': getPixelString(imageStyle.maxWidth),\r\n });\r\n }\r\n\r\n function getPixelString(value: number): string {\r\n return value + \"px\";\r\n }\r\n}\r\n","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n import createClassAndSelector = jsCommon.CssConstants.createClassAndSelector;\r\n import StringExtensions = jsCommon.StringExtensions;\r\n import Utility = jsCommon.Utility;\r\n\r\n export interface TextboxDataViewObjects extends DataViewObjects {\r\n general: TextboxDataViewObject;\r\n }\r\n\r\n export interface TextboxDataViewObject extends DataViewObject {\r\n paragraphs: Paragraphs;\r\n }\r\n \r\n /** Represents a rich text box that supports view & edit mode. */\r\n export class Textbox implements IVisual {\r\n private editor: RichText.QuillWrapper;\r\n private element: JQuery;\r\n private host: IVisualHostServices;\r\n private viewport: IViewport;\r\n private readOnly: boolean;\r\n private paragraphs: Paragraphs;\r\n\r\n public init(options: VisualInitOptions) {\r\n this.element = options.element;\r\n this.host = options.host;\r\n this.viewport = options.viewport;\r\n this.element.addClass('richtextbox');\r\n this.element.css({\r\n 'font-family': RichText.defaultFont,\r\n 'font-size': RichText.defaultFontSize,\r\n });\r\n\r\n this.readOnly = (this.host.getViewMode() === ViewMode.View);\r\n this.paragraphs = [];\r\n this.refreshView();\r\n }\r\n\r\n public onResizing(viewport: IViewport): void {\r\n this.viewport = viewport;\r\n this.updateSize();\r\n }\r\n\r\n public onDataChanged(options: VisualDataChangedOptions): void {\r\n debug.assertValue(options, 'options');\r\n let dataViews = options.dataViews;\r\n\r\n this.paragraphs = [];\r\n if (dataViews && dataViews.length > 0) {\r\n let objects = <TextboxDataViewObjects>dataViews[0].metadata.objects;\r\n\r\n if (objects && objects.general)\r\n this.paragraphs = objects.general.paragraphs;\r\n }\r\n\r\n this.refreshView();\r\n }\r\n\r\n public destroy(): void {\r\n }\r\n\r\n public focus(): boolean {\r\n if (!this.editor)\r\n return;\r\n\r\n this.editor.focus();\r\n return true;\r\n }\r\n\r\n public onViewModeChanged(viewMode: ViewMode): void {\r\n this.readOnly = (viewMode === ViewMode.View);\r\n this.refreshView();\r\n }\r\n\r\n public setSelection(start: number, end: number): void {\r\n debug.assertValue(this.editor, 'editor');\r\n\r\n if (this.editor)\r\n this.editor.setSelection(start, end);\r\n }\r\n\r\n private refreshView() {\r\n if (this.readOnly) {\r\n // Showing just HTML, no editor.\r\n // If we are in view-mode and we have an editor, we can remove it (after saving).\r\n if (this.editor) {\r\n this.editor.formatUrls();\r\n this.saveContents();\r\n this.editor.destroy();\r\n this.editor = null;\r\n }\r\n\r\n this.element.empty();\r\n this.element.append(RichTextConversion.convertParagraphsToHtml(this.paragraphs));\r\n }\r\n else {\r\n // Showing the Quill editor.\r\n // If we are in edit-mode and we don't have an editor we need to create it.\r\n if (!this.editor) {\r\n this.editor = new RichText.QuillWrapper(this.readOnly, this.host);\r\n this.editor.textChanged = (delta, source) => this.saveContents();\r\n\r\n this.element.empty();\r\n this.element.append(this.editor.getElement());\r\n }\r\n\r\n this.editor.setContents(RichTextConversion.convertParagraphsToOps(this.paragraphs));\r\n }\r\n\r\n this.updateSize();\r\n }\r\n\r\n private saveContents(): void {\r\n // It's possible to get here via a throttled text-changed event after a view-mode change has occured and\r\n // we are now in view mode. Since we save changes on view-mode change it is safe to ignore this call.\r\n if (!this.editor)\r\n return;\r\n\r\n let contents: quill.Delta = this.editor.getContents();\r\n this.paragraphs = RichTextConversion.convertDeltaToParagraphs(contents);\r\n\r\n let changes: VisualObjectInstance[] = [{\r\n objectName: 'general',\r\n properties: {\r\n paragraphs: this.paragraphs\r\n },\r\n selector: null, // TODO: need something here?\r\n }];\r\n\r\n this.host.persistProperties(changes);\r\n }\r\n\r\n private updateSize(): void {\r\n if (this.editor)\r\n this.editor.resize(this.viewport);\r\n }\r\n }\r\n\r\n module RichTextConversion {\r\n export function convertDeltaToParagraphs(contents: quill.Delta): Paragraphs {\r\n let paragraphs: Paragraphs = [];\r\n let paragraph: Paragraph = { textRuns: [] };\r\n\r\n for (let i = 0, len = contents.ops.length; i < len; i++) {\r\n let insertOp = <quill.InsertOp>contents.ops[i];\r\n debug.assertValue(insertOp, \"operation should be an insert\");\r\n\r\n if (typeof insertOp.insert === \"string\") {\r\n // string insert values represent text.\r\n let text = <string>insertOp.insert;\r\n let attributes: quill.FormatAttributes = insertOp.attributes;\r\n\r\n if (attributes && attributes.align) {\r\n // Sometimes horizontal alignment is set after the first \"insert\" of the paragraph, which is likely a bug\r\n // in Quill. In any case we should never see different horizontal alignments in a single paragraph.\r\n debug.assert(\r\n paragraph.horizontalTextAlignment === undefined || paragraph.horizontalTextAlignment === attributes.align,\r\n 'paragraph should not have more than one horizontal alignment');\r\n paragraph.horizontalTextAlignment = attributes.align;\r\n }\r\n\r\n // Quill gives us back text runs that may have \\n's in them. We want to create a new paragraph for each \\n we see.\r\n let start = 0;\r\n let end = 0;\r\n let newParagraph: boolean;\r\n do {\r\n end = text.indexOf('\\n', start);\r\n if (end < 0) {\r\n newParagraph = false;\r\n end = text.length;\r\n }\r\n else {\r\n newParagraph = true;\r\n }\r\n\r\n if (end - start > 0) {\r\n let span = text.substring(start, end);\r\n let textRun: TextRun = { value: span };\r\n if (attributes) {\r\n if (attributes.link !== undefined && jsCommon.Utility.isValidUrl(attributes.link))\r\n textRun.url = attributes.link;\r\n\r\n let textStyle = convertFormatAttributesToTextStyle(attributes);\r\n if (textStyle)\r\n textRun.textStyle = textStyle;\r\n }\r\n\r\n paragraph.textRuns.push(textRun);\r\n }\r\n\r\n // If we actually saw a '\\n' then create a new paragraph\r\n if (newParagraph) {\r\n if (paragraph.textRuns.length === 0)\r\n paragraph.textRuns.push({ value: '' });\r\n\r\n paragraphs.push(paragraph);\r\n paragraph = { textRuns: [] };\r\n }\r\n\r\n start = end + 1;\r\n } while (start < text.length);\r\n }\r\n else {\r\n // numeric insert values represent embeds.\r\n debug.assertFail(\"embeds not supported\");\r\n }\r\n }\r\n\r\n if (paragraph.textRuns.length > 0) {\r\n // Quill appears to always insert an extra '\\n' at the end of the text, skip it\r\n if (paragraph.textRuns[0].value.length > 0)\r\n paragraphs.push(paragraph);\r\n }\r\n\r\n return paragraphs;\r\n }\r\n\r\n export function convertParagraphsToHtml(paragraphs: Paragraphs): JQuery {\r\n let $paragraphs: JQuery = $();\r\n\r\n for (let paragraphIndex = 0, len = paragraphs.length; paragraphIndex < len; ++paragraphIndex) {\r\n let paragraphDef = paragraphs[paragraphIndex];\r\n let isParagraphEmpty = true;\r\n\r\n let $paragraph = $('<div>');\r\n\r\n if (paragraphDef.horizontalTextAlignment)\r\n $paragraph.css('text-align', paragraphDef.horizontalTextAlignment);\r\n\r\n for (let textRunIndex = 0, jlen = paragraphDef.textRuns.length; textRunIndex < jlen; ++textRunIndex) {\r\n let textRunDef = paragraphDef.textRuns[textRunIndex];\r\n\r\n let $textRun = $('<span>');\r\n\r\n let styleDef = textRunDef.textStyle;\r\n if (styleDef) {\r\n let css = {};\r\n if (styleDef.fontFamily) {\r\n css['font-family'] = RichText.getFontFamily(removeQuotes(styleDef.fontFamily));\r\n }\r\n\r\n if (styleDef.fontSize) {\r\n css['font-size'] = styleDef.fontSize;\r\n }\r\n\r\n if (styleDef.fontStyle) {\r\n css['font-style'] = styleDef.fontStyle;\r\n }\r\n\r\n if (styleDef.fontWeight) {\r\n css['font-weight'] = styleDef.fontWeight;\r\n }\r\n\r\n if (styleDef.textDecoration) {\r\n css['text-decoration'] = styleDef.textDecoration;\r\n }\r\n\r\n $textRun.css(css);\r\n }\r\n\r\n let text = textRunDef.value;\r\n if (!_.isEmpty(text))\r\n isParagraphEmpty = false;\r\n\r\n if (textRunDef.url !== undefined) {\r\n let $link: JQuery;\r\n if (jsCommon.Utility.isValidUrl(textRunDef.url)) {\r\n $link = $('<a>')\r\n .attr('href', textRunDef.url)\r\n .attr('target', '_blank')\r\n .text(text);\r\n }\r\n else {\r\n $link = $('<span>').text(text);\r\n }\r\n\r\n $textRun.append($link);\r\n }\r\n else {\r\n $textRun.text(text);\r\n }\r\n\r\n $paragraph.append($textRun);\r\n }\r\n\r\n // If the entire paragraph is empty we need to make sure we enforce a line-break.\r\n if (isParagraphEmpty)\r\n $paragraph.append($('<br>'));\r\n\r\n $paragraphs = $paragraphs.add($paragraph);\r\n }\r\n\r\n return $paragraphs;\r\n }\r\n\r\n export function convertParagraphsToOps(paragraphs: Paragraphs): quill.Op[] {\r\n let ops: quill.InsertOp[] = [];\r\n\r\n for (let paragraphIndex = 0, len = paragraphs.length; paragraphIndex < len; ++paragraphIndex) {\r\n let paragraphDef = paragraphs[paragraphIndex];\r\n\r\n for (let textRunIndex = 0, jlen = paragraphDef.textRuns.length; textRunIndex < jlen; ++textRunIndex) {\r\n let textRunDef = paragraphDef.textRuns[textRunIndex];\r\n let formats: quill.FormatAttributes = {};\r\n\r\n if (paragraphDef.horizontalTextAlignment)\r\n formats.align = paragraphDef.horizontalTextAlignment;\r\n\r\n let styleDef = textRunDef.textStyle;\r\n if (styleDef) {\r\n if (styleDef.fontFamily) {\r\n formats.font = RichText.getFontFamily(removeQuotes(styleDef.fontFamily));\r\n }\r\n\r\n if (styleDef.fontSize) {\r\n formats.size = styleDef.fontSize;\r\n }\r\n\r\n formats.italic = (styleDef.fontStyle === 'italic');\r\n formats.bold = (styleDef.fontWeight === 'bold');\r\n formats.underline = (styleDef.textDecoration === 'underline');\r\n }\r\n\r\n let text = textRunDef.value;\r\n\r\n if (textRunDef.url && Utility.isValidUrl(textRunDef.url))\r\n formats.link = textRunDef.url;\r\n\r\n let op: quill.InsertOp = {\r\n insert: text,\r\n attributes: formats,\r\n };\r\n\r\n ops.push(op);\r\n\r\n // The last text run of the paragraph needs to end with '\\n' to get Quill to handle the text alignment correctly.\r\n if (textRunIndex === (jlen - 1) && !StringExtensions.endsWith(text, '\\n')) {\r\n ops.push({\r\n insert: '\\n',\r\n attributes: formats,\r\n });\r\n }\r\n }\r\n }\r\n\r\n return ops;\r\n }\r\n\r\n function convertFormatAttributesToTextStyle(attributes: quill.FormatAttributes): TextRunStyle {\r\n let style: TextRunStyle = {};\r\n\r\n // NOTE: Align is taken care of when converting to paragraphs.\r\n if (attributes.bold) {\r\n style.fontWeight = 'bold';\r\n }\r\n if (attributes.font) {\r\n // TODO: \"Heading\"?\r\n // NOTE: We should always save font names without any quotes.\r\n style.fontFamily = removeQuotes(attributes.font);\r\n }\r\n if (attributes.italic) {\r\n style.fontStyle = 'italic';\r\n }\r\n if (attributes.size) {\r\n style.fontSize = attributes.size;\r\n }\r\n if (attributes.underline) {\r\n style.textDecoration = 'underline';\r\n }\r\n /*\r\n TODO:\r\n if (attributes.background) {\r\n }\r\n if (attributes.color) {\r\n }\r\n */\r\n\r\n return style;\r\n }\r\n\r\n function removeQuotes(text: string): string {\r\n if (!StringExtensions.startsWith(text, \"'\"))\r\n return text;\r\n\r\n debug.assert(StringExtensions.endsWith(text, \"'\"), \"mismatched quotes\");\r\n\r\n return text.slice(1, text.length - 1);\r\n }\r\n }\r\n\r\n export module RichText {\r\n interface ListValueOption {\r\n label: string;\r\n value: string;\r\n }\r\n \r\n /**\r\n * These fonts are embedded using CSS, or are aliases to other fonts.\r\n */\r\n const fontMap = {\r\n 'Segoe (Bold)': 'wf_segoe-ui_bold',\r\n 'Segoe UI': 'wf_segoe-ui_normal',\r\n 'Segoe UI Light': 'wf_segoe-ui_light',\r\n 'Heading': 'wf_segoe-ui_light',\r\n 'Body': 'wf_segoe-ui_normal',\r\n };\r\n\r\n const fonts: ListValueOption[] = [\r\n 'Arial',\r\n 'Arial Black',\r\n 'Arial Unicode MS',\r\n 'Calibri',\r\n 'Cambria',\r\n 'Cambria Math',\r\n 'Candara',\r\n 'Comic Sans MS',\r\n 'Consolas',\r\n 'Constantia',\r\n 'Corbel',\r\n 'Courier New',\r\n 'Georgia',\r\n 'Lucida Sans Unicode',\r\n 'Segoe (Bold)',\r\n 'Segoe UI',\r\n 'Segoe UI Light',\r\n 'Symbol',\r\n 'Tahoma',\r\n 'Times New Roman',\r\n 'Trebuchet MS',\r\n 'Verdana',\r\n 'Wingdings',\r\n 'Wingdings 2',\r\n 'Wingdings 3',\r\n ].map((font) => <ListValueOption> { label: font, value: getFontFamily(font) });\r\n export let defaultFont = getFontFamily('Segoe UI Light');\r\n\r\n const fontSizes: ListValueOption[] = [\r\n '8', '9', '10', '10.5', '11', '12', '14', '16', '18', '20', '24', '28', '32', '36', '40', '42', '44', '54', '60', '66', '72', '80', '88', '96'\r\n ].map((size) => <ListValueOption> { label: size, value: size + 'px' });\r\n export const defaultFontSize = '14px';\r\n\r\n const textAlignments: ListValueOption[] = [\r\n 'Left',\r\n 'Center',\r\n 'Right',\r\n ].map((alignment) => <ListValueOption> { label: alignment, value: alignment.toLowerCase() });\r\n\r\n export function getFontFamily(font: string): string {\r\n let family: string = fontMap[font];\r\n if (family == null)\r\n family = font;\r\n\r\n // Quote the font in case it has spaces (which will confuse the JQuery css() call).\r\n if (!StringExtensions.startsWith(family, \"'\")) {\r\n family = \"'\" + family + \"'\";\r\n }\r\n\r\n return family;\r\n }\r\n\r\n export class QuillWrapper {\r\n private editor: quill.Quill;\r\n private $editorDiv: JQuery;\r\n private $toolbarDiv: JQuery;\r\n private $container: JQuery;\r\n private dependenciesLoaded: JQueryDeferred<void>;\r\n private localizationProvider: jsCommon.IStringResourceProvider;\r\n private host: IVisualHostServices;\r\n private static textChangeThrottle = 200; // ms\r\n private static formatUrlThrottle = 1000; // ms\r\n\r\n public static preventDefaultKeys: number[] = [\r\n jsCommon.DOMConstants.aKeyCode, // A\r\n jsCommon.DOMConstants.cKeyCode, // C\r\n jsCommon.DOMConstants.xKeyCode, // X\r\n jsCommon.DOMConstants.vKeyCode, // V\r\n ];\r\n\r\n public static loadQuillResources: boolean = true;\r\n\r\n // TODO: How to choose between minified/unminified?\r\n // TODO: Consider loading this from the CDN.\r\n private static quillJsFiles = [powerbi.build + '/externals/quill.min.js'];\r\n private static quillCssFiles = [powerbi.build + '/externals/quill.base.css'];\r\n private QuillPackage: jsCommon.IDependency = {\r\n javaScriptFiles: QuillWrapper.quillJsFiles,\r\n cssFiles: QuillWrapper.quillCssFiles,\r\n };\r\n\r\n public initialized: boolean;\r\n public readOnly: boolean;\r\n public textChanged: (delta, source) => void = (d, s) => { };\r\n \r\n /**\r\n * JavaScript and CSS resources are typically resolved asynchronously.\r\n * This means we potentially defer certain events which typically occur\r\n * synchronously until resources are loaded.\r\n * Setting the global loadQuillResources flag to true will override\r\n * this behavior and cause the wrapper to assume these resources are already loaded\r\n * and not try to load them asynchronously (e.g. for use in unit tests).\r\n */ \r\n constructor(readOnly: boolean, host: IVisualHostServices) {\r\n this.host = host;\r\n this.$container = $('<div>');\r\n this.readOnly = readOnly;\r\n\r\n this.localizationProvider = {\r\n get: (stringId: string) => this.host.getLocalizedString(stringId)\r\n };\r\n\r\n this.dependenciesLoaded = $.Deferred<void>();\r\n if (QuillWrapper.loadQuillResources) {\r\n // Defer creation of the editor until after resources are loaded.\r\n this.initialized = false;\r\n\r\n // Note that these are called in the order registered so this will always be called before other callbacks.\r\n this.dependenciesLoaded.done(() => {\r\n this.rebuildQuillEditor();\r\n this.initialized = true;\r\n });\r\n\r\n jsCommon.requires(this.QuillPackage, () => this.dependenciesLoaded.resolve());\r\n }\r\n else {\r\n this.rebuildQuillEditor();\r\n this.initialized = true;\r\n this.dependenciesLoaded.resolve();\r\n }\r\n }\r\n\r\n public addModule(name: any, options: any): any {\r\n if (this.editor)\r\n return this.editor.addModule(name, options);\r\n }\r\n\r\n public getElement(): JQuery {\r\n return this.$container;\r\n }\r\n\r\n public getContents(): quill.Delta {\r\n if (this.initialized)\r\n return this.editor.getContents();\r\n }\r\n\r\n public setContents(contents: quill.Delta | quill.Op[]): void {\r\n // If we haven't loaded the editor yet, defer this call until we do\r\n // TODO: prevent these from stacking up?\r\n if (!this.initialized) {\r\n this.dependenciesLoaded.done(() => this.setContents(contents));\r\n return;\r\n }\r\n\r\n this.editor.setHTML('', 'api'); // Clear contents\r\n if (contents)\r\n this.editor.setContents(contents, 'api');\r\n this.formatUrls();\r\n }\r\n\r\n public resize(viewport: IViewport): void {\r\n this.$container.width(viewport.width);\r\n this.$container.height(viewport.height);\r\n }\r\n\r\n public setReadOnly(readOnly: boolean): void {\r\n let readOnlyChanged = readOnly !== this.readOnly;\r\n this.readOnly = readOnly;\r\n\r\n if (this.initialized && readOnlyChanged) {\r\n this.rebuildQuillEditor();\r\n }\r\n }\r\n\r\n public formatUrls(): void {\r\n if (this.editor == null)\r\n return;\r\n\r\n let text = this.editor.getText();\r\n\r\n let urlMatches = jsCommon.Utility.findAllValidUrls(text);\r\n for (let match of urlMatches) {\r\n // Remove existing link\r\n this.editor.formatText(match.start, match.end, 'link', false, 'api');\r\n\r\n // Format as link\r\n this.editor.formatText(match.start, match.end, 'link', match.text, 'api');\r\n }\r\n\r\n // Force link tooltip to update on URL change\r\n this.editor.emit(Quill.events.SELECTION_CHANGE, this.getSelection(), 'api');\r\n }\r\n\r\n public setSelection(start: number, end: number): void {\r\n if (this.editor)\r\n this.editor.setSelection(start, end, 'api');\r\n }\r\n\r\n public getSelection(): quill.Range {\r\n if (this.editor)\r\n return this.editor.getSelection();\r\n }\r\n\r\n public focus(): void {\r\n if (!this.editor)\r\n return;\r\n\r\n if ($(document.activeElement).closest(this.$container).length === 0)\r\n this.editor.focus();\r\n }\r\n\r\n public destroy(): void {\r\n this.host.setToolbar(null);\r\n this.$container.remove();\r\n this.$container = null;\r\n this.$toolbarDiv = null;\r\n this.$editorDiv = null;\r\n this.editor = null;\r\n }\r\n\r\n public getSelectionAtCursor(): quill.Range {\r\n let text = this.getTextWithoutTrailingBreak();\r\n\r\n // Ensure editor has focus before selection interactions\r\n this.editor.focus();\r\n \r\n let selection = this.getSelection();\r\n if (selection && selection.start === selection.end) {\r\n return jsCommon.WordBreaker.find(selection.start, text);\r\n }\r\n\r\n return selection;\r\n }\r\n\r\n public getWord() {\r\n let selection = this.getSelectionAtCursor();\r\n return this.getTextWithoutTrailingBreak().slice(selection.start, selection.end);\r\n }\r\n\r\n public insertLinkAtCursor(link: string, index: number): number {\r\n let endIndex = index + link.length;\r\n \r\n this.editor.insertText(index, link, 'api');\r\n this.editor.formatText(index, endIndex, 'link', link, 'api');\r\n this.setSelection(index, endIndex);\r\n return endIndex;\r\n }\r\n\r\n public getEditorContainer(): JQuery {\r\n if (this.editor)\r\n return $(this.editor.container);\r\n };\r\n\r\n private getTextWithoutTrailingBreak(): string {\r\n return this.editor.getText().slice(0, -1);\r\n }\r\n\r\n private rebuildQuillEditor(): void {\r\n // Preserve contents if we already have an editor.\r\n let contents: quill.Delta = null;\r\n if (this.editor) {\r\n this.editor.removeAllListeners();\r\n contents = this.editor.getContents();\r\n }\r\n\r\n this.$container.empty();\r\n\r\n // Prevent parent elements from handling keyboard shortcuts (e.g. ctrl+a) that have special meaning for textboxes.\r\n // Quill will also capture and prevent bubbling of some keyboard shortcuts, such as ctrl+c, ctrl+b, etc.\r\n this.$container.keydown((e) => {\r\n if (e.ctrlKey && _.contains(QuillWrapper.preventDefaultKeys, e.which))\r\n e.stopPropagation();\r\n });\r\n\r\n let $editorDiv = this.$editorDiv = $('<div>');\r\n\r\n // HACK: Quill does not apply the correct default styling if you clear all the content and add new content.\r\n $editorDiv.css('font-family', defaultFont);\r\n $editorDiv.css('font-size', defaultFontSize);\r\n\r\n let configs = {\r\n readOnly: this.readOnly,\r\n formats: ['bold', 'italic', 'underline', 'font', 'size', 'link', 'align', /* TODO: 'color', 'background' */],\r\n styles: false,\r\n };\r\n this.editor = new Quill($editorDiv.get(0), configs);\r\n\r\n // If not readonly we add a toolbar and disable drag/resize\r\n if (!this.readOnly) {\r\n let $toolbarDiv = this.$toolbarDiv;\r\n if (!$toolbarDiv) {\r\n this.$toolbarDiv = $toolbarDiv = Toolbar.buildToolbar(this, this.localizationProvider);\r\n }\r\n\r\n $toolbarDiv.addClass('unselectable');\r\n this.host.setToolbar($toolbarDiv);\r\n this.editor.addModule('toolbar', { container: $toolbarDiv.get(0) });\r\n\r\n // Disable this so we can select text in the editor.\r\n $editorDiv.attr('drag-resize-disabled', 'true');\r\n }\r\n\r\n this.$container.append($editorDiv);\r\n\r\n if (contents)\r\n this.setContents(contents);\r\n\r\n // Throttle text-changed events to not more frequent than once per 200ms\r\n let textChangeThrottler = new jsCommon.ThrottleUtility(QuillWrapper.textChangeThrottle);\r\n this.editor.on('text-change', (delta, source) => {\r\n if (source !== 'api')\r\n textChangeThrottler.run(() => this.onTextChanged(delta, source));\r\n });\r\n\r\n // TODO: Actually, probably want something that continually defers until you stop typing, this is probably fine for now though.\r\n let formatUrlThrottler = new jsCommon.ThrottleUtility(QuillWrapper.formatUrlThrottle);\r\n this.editor.on('text-change', (delta, source) => {\r\n if (source !== 'api')\r\n formatUrlThrottler.run(() => this.formatUrls());\r\n });\r\n\r\n /*\r\n Webkit browsers have a bug with regard to focus on div elements\r\n with the contenteditable attribute:\r\n\r\n https://bugs.webkit.org/show_bug.cgi?id=38696\r\n\r\n When we blur our rich text box editor the focus remains with the selection\r\n instead of the focused element. This allows the user to continue typing as\r\n if focus remains within the RichTextbox.\r\n\r\n To fix this issue we add an event listener to the contenteditable div\r\n which listens for the 'blur' event and will properly blur our quill\r\n editor as well.\r\n\r\n http://quilljs.com/docs/api/#quillprototypesetselection\r\n\r\n Verified in Chrome 43.0.2357.130 m\r\n\r\n In IE10+ the setSelection method explicitly sets focus to the body which\r\n causes a bug where the user must click twice when attempting to interact\r\n with a <select> element. To prevent this issue we explicitly do not call\r\n setSelection to blur if the user is changing focus to a <select> element.\r\n This issue is also present for link tooltips from the Quill module which\r\n will cause a blur onto the tooltip.\r\n */\r\n this.editor.root.addEventListener('blur', (event) => {\r\n let target: HTMLElement = <HTMLElement>(event.relatedTarget || document.activeElement);\r\n\r\n // The browser will handle moving the cursor and setting focus properly for these types of elements.\r\n if (target &&\r\n target.tagName === 'SELECT' || target.tagName === 'INPUT' || target.getAttribute('contentEditable')) {\r\n return;\r\n }\r\n\r\n this.setSelection(null, null);\r\n }, false);\r\n }\r\n\r\n private onTextChanged(delta, source): void {\r\n this.textChanged(delta, source);\r\n }\r\n }\r\n\r\n module Toolbar {\r\n const DefaultLinkInputValue = 'http://';\r\n\r\n export const selectors = {\r\n linkTooltip: createClassAndSelector('ql-link-tooltip'),\r\n toolbarUrlInput: createClassAndSelector('toolbar-url-input'),\r\n };\r\n\r\n export function buildToolbar(quillWrapper: QuillWrapper, localizationProvider: jsCommon.IStringResourceProvider) {\r\n // Module for adding custom hyperlinks\r\n let linkTooltipTemplate = buildToolbarLinkInputTemplate(localizationProvider);\r\n quillWrapper.addModule('link-tooltip', { template: linkTooltipTemplate });\r\n\r\n let toolbarLinkInput: JQuery = buildToolbarLinkInput(quillWrapper, getTooltip('Link', localizationProvider), localizationProvider.get('RichTextbox_Link_DefaultText'));\r\n\r\n let fontPicker = picker(getTooltip('Font', localizationProvider), fonts, 'font', defaultFont,\r\n // Show the fonts in their own font face.\r\n ($option, option) => { $option.css('font-family', option.value); return $option; }\r\n );\r\n\r\n let $container = div()\r\n .addClass('toolbar ql-toolbar')\r\n .append(\r\n formatGroup()\r\n .append(label(localizationProvider.get('RichTextbox_Font_Label')))\r\n .append(fontPicker)\r\n .append(picker(getTooltip('Size', localizationProvider), fontSizes, 'size', defaultFontSize))\r\n )\r\n .append(\r\n formatGroup()\r\n .append(formatButton(getTooltip('Bold', localizationProvider), 'bold'))\r\n .append(formatButton(getTooltip('Italic', localizationProvider), 'italic'))\r\n .append(formatButton(getTooltip('Underline', localizationProvider), 'underline'))\r\n )\r\n .append(\r\n formatGroup()\r\n .append(toggleGroup('Text Alignment', textAlignments, 'align', 'Left', localizationProvider))\r\n )\r\n .append(toolbarLinkInput);\r\n\r\n // Prevent mousedown from triggering subsequent blur on editor\r\n $container.on('mousedown', (event) => {\r\n let target = <HTMLElement>(event.target || document.activeElement);\r\n if (target.tagName !== 'INPUT' && target.tagName !== 'SELECT')\r\n event.preventDefault();\r\n });\r\n\r\n return $container;\r\n }\r\n\r\n export function setSelectValue($select: JQuery, value: any): void {\r\n $select.val(value);\r\n // NOTE: The 'change' event is not raised when the value of the SELECT element is changed programatically,\r\n // and Quill uses it's own, non-JQuery, method to hook up to the 'change' event, therefore, we need to dispatch\r\n // this event manually on the SELECT element.\r\n let evt = document.createEvent('UIEvent');\r\n evt.initUIEvent('change', false, false, null, 0);\r\n $select.get(0).dispatchEvent(evt);\r\n }\r\n\r\n function linkTooltipTemplateGenerator(removeText: string, doneText: string): JQuery {\r\n return $(`\r\n <a href=\"#\" class=\"url\" target=\"_blank\"></a>\r\n <input class=\"input\" type=\"text\">\r\n <span class=\"bar\">&nbsp;|&nbsp;</span>\r\n <a class=\"change\"></a>\r\n <a class=\"remove\">${removeText}</a>\r\n <a class=\"done\">${doneText}</a>\r\n `);\r\n };\r\n\r\n function buildToolbarLinkInputTemplate(localizationProvider: jsCommon.IStringResourceProvider): string {\r\n let template: JQuery = div();\r\n let doneText = localizationProvider.get('RichTextbox_Link_Done');\r\n let removeText = localizationProvider.get('RichTextbox_Link_Remove');\r\n\r\n template.append(linkTooltipTemplateGenerator(removeText, doneText));\r\n\r\n return template.html();\r\n }\r\n\r\n function formatGroup(): JQuery {\r\n return span()\r\n .addClass('ql-format-group')\r\n .attr('drag-resize-disabled', 'true');\r\n }\r\n\r\n function label(text: string): JQuery {\r\n return $('<label>').text(text);\r\n }\r\n\r\n function div(): JQuery {\r\n return $('<div>');\r\n }\r\n\r\n function span(): JQuery {\r\n return $('<span>');\r\n }\r\n\r\n function toggleGroup(title: string, list: ListValueOption[], format: string, defaultValue: string, localizationProvider: jsCommon.IStringResourceProvider): JQuery {\r\n let tooltip = getTooltip(title, localizationProvider);\r\n let $group = span()\r\n .attr('title', tooltip)\r\n .addClass('ql-toggle-group');\r\n\r\n // Hidden selector that Quill will use to hook up change listeners.\r\n let $select = selector(tooltip, list, defaultValue)\r\n .addClass('ql-picker ql-' + format)\r\n .css('display', 'none');\r\n\r\n let $buttons = list.map((option) => {\r\n let $button = formatButton(getTooltip(option.label, localizationProvider), 'align' + option.value)\r\n .attr('data-value', option.value)\r\n .click((e) => setSelectValue($select, option.value));\r\n return $button;\r\n });\r\n\r\n // Quill will change the value of the selector when the text selection changes, so we need to set the state of the buttons to match.\r\n $select.change((e) => {\r\n let newValue = $select.val();\r\n for (let i = 0; i < $buttons.length; i++) {\r\n $buttons[i].toggleClass('ql-active', $buttons[i].attr('data-value') === newValue);\r\n }\r\n });\r\n\r\n $group.append($select);\r\n $group.append($buttons);\r\n\r\n return $group;\r\n }\r\n\r\n function picker(tooltip: string, list: ListValueOption[], format: string, defaultValue: string, optionModifier?: (JQuery, ListValueOption) => JQuery): JQuery {\r\n let $selector = selector(tooltip, list, defaultValue, optionModifier)\r\n .addClass('ql-picker ql-' + format);\r\n\r\n return $selector;\r\n }\r\n\r\n function selector(tooltip: string, list: ListValueOption[], defaultValue?: string, optionModifier?: (JQuery, ListValueOption) => JQuery): JQuery {\r\n let $selector = $('<select>')\r\n .attr('title', tooltip);\r\n\r\n for (let i = 0; i < list.length; i++) {\r\n let option = list[i];\r\n let $option = $('<option>')\r\n .attr('value', option.value)\r\n .text(option.label);\r\n\r\n if (option.value === defaultValue)\r\n $option.attr('selected', 'selected');\r\n\r\n if (optionModifier !== undefined)\r\n $option = optionModifier($option, option);\r\n\r\n $selector.append($option);\r\n }\r\n\r\n return $selector;\r\n }\r\n\r\n function formatButton(tooltip?: string, format?: string) {\r\n let $button = span()\r\n .addClass('ql-format-button');\r\n\r\n if (tooltip != null)\r\n $button.attr('title', tooltip);\r\n\r\n if (format != null) {\r\n $button.addClass('ql-' + format);\r\n $button.addClass('powervisuals-glyph ' + format);\r\n }\r\n\r\n return $button;\r\n }\r\n\r\n function getTooltip(name: string, localizationProvider: jsCommon.IStringResourceProvider): string {\r\n return localizationProvider.get('RichTextbox_' + name + '_ToolTip');\r\n }\r\n\r\n function clearLinkInput(linkTooltip: JQuery): void {\r\n linkTooltip.removeClass('editing');\r\n linkTooltip.removeClass('blank-editing');\r\n linkTooltip.find('.input').val(DefaultLinkInputValue);\r\n }\r\n\r\n function buildToolbarLinkInput(quillWrapper: QuillWrapper, buttonTooltip: string, defaultLinkText: string): JQuery {\r\n // Pull out link tooltip\r\n let linkTooltip = quillWrapper.getEditorContainer().find(Toolbar.selectors.linkTooltip.selector);\r\n\r\n // Append link tooltip to a new toolbar format group\r\n let toolbarLinkInput: JQuery = formatGroup()\r\n .addClass(Toolbar.selectors.toolbarUrlInput.class)\r\n .append(formatButton(buttonTooltip, 'link').append('<div>'))\r\n .append(linkTooltip);\r\n\r\n // Special case for blank selection (no text near cursor) when enter key or done button clicked\r\n toolbarLinkInput.on('keydown mousedown', (event: JQueryEventObject) => {\r\n if (event.keyCode === jsCommon.DOMConstants.enterKeyCode || (<HTMLElement>event.target).classList.contains('done')) {\r\n if (!linkTooltip.hasClass('blank-editing'))\r\n return true;\r\n\r\n // Only perform these steps if tooltip was not in editing mode (special case for blank)\r\n let link = toolbarLinkInput.find('.input').val();\r\n let selection = quillWrapper.getSelectionAtCursor();\r\n let word = quillWrapper.getWord();\r\n if (!word) {\r\n // Insert the input text as a link\r\n let endCursor = quillWrapper.insertLinkAtCursor(link, selection.start);\r\n clearLinkInput(linkTooltip);\r\n quillWrapper.setSelection(endCursor, endCursor);\r\n return false;\r\n }\r\n }\r\n });\r\n\r\n toolbarLinkInput.find('.input').blur((event: JQueryEventObject) => {\r\n let blurTarget = event.relatedTarget;\r\n // Remove editing class from insert link tooltip (to hide via CSS)\r\n // only when we are not blurring to the 'done' button (tab from input field)\r\n if (blurTarget === null || blurTarget && !blurTarget.classList.contains('done'))\r\n clearLinkInput(linkTooltip);\r\n });\r\n\r\n toolbarLinkInput.find('.ql-link div')\r\n .click((event: JQueryEventObject) => {\r\n // Handle click on button before Quill removes link (default behavior)\r\n let target = (<HTMLElement>event.target).parentElement;\r\n if (target && target.classList.contains('ql-active')) {\r\n toolbarLinkInput.find('.change')[0].click();\r\n return false;\r\n }\r\n\r\n // If blank selection (no text near cursor), special case for link button\r\n let word = quillWrapper.getWord();\r\n if (!word) {\r\n linkTooltip.addClass('editing blank-editing');\r\n let inputElem = (<HTMLInputElement>toolbarLinkInput.find('.input').get(0));\r\n inputElem.value = DefaultLinkInputValue;\r\n inputElem.selectionStart = inputElem.selectionEnd = DefaultLinkInputValue.length;\r\n inputElem.focus();\r\n return false;\r\n }\r\n })\r\n .mousedown((event: JQueryEventObject) => {\r\n // Properly set selection before we handle the click\r\n let linkButton = (<HTMLElement>event.target).parentElement;\r\n if (linkButton && !linkButton.classList.contains('ql-active')) {\r\n let selection = quillWrapper.getSelectionAtCursor();\r\n quillWrapper.setSelection(selection.start, selection.end);\r\n }\r\n });\r\n\r\n return toolbarLinkInput;\r\n }\r\n }\r\n }\r\n}\r\n","/*\r\n* Power BI Visualizations\r\n*\r\n* Copyright (c) Microsoft Corporation\r\n* All rights reserved. \r\n* MIT License\r\n*\r\n* Permission is hereby granted, free of charge, to any person obtaining a copy\r\n* of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n* in the Software without restriction, including without limitation the rights\r\n* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n* copies of the Software, and to permit persons to whom the Software is\r\n* furnished to do so, subject to the following conditions:\r\n* \r\n* The above copyright notice and this permission notice shall be included in \r\n* all copies or substantial portions of the Software.\r\n* \r\n* THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n* THE SOFTWARE.\r\n*/\r\n \r\n/// <reference path=\"../_references.ts\"/>\r\n \r\nmodule powerbi.visuals {\r\nimport SelectionManager = utility.SelectionManager;\r\n\r\nexport const cheerMeterProps = {\r\n dataPoint: {\r\n defaultColor: <DataViewObjectPropertyIdentifier>{\r\n objectName: 'dataPoint',\r\n propertyName: 'defaultColor'\r\n },\r\n fill: <DataViewObjectPropertyIdentifier>{\r\n objectName: 'dataPoint',\r\n propertyName: 'fill'\r\n },\r\n },\r\n };\r\n\r\n export interface TeamData {\r\n name: string;\r\n value: number;\r\n color: string;\r\n identity: SelectionId;\r\n }\r\n\r\n export interface CheerData {\r\n teamA: TeamData;\r\n teamB: TeamData;\r\n background: string;\r\n }\r\n\r\n interface CheerLayout {\r\n x1: number;\r\n x2: number;\r\n y1: number;\r\n y2: number;\r\n fontSize: string;\r\n }\r\n\r\n export class CheerMeter implements IVisual {\r\n public static capabilities: VisualCapabilities = {\r\n dataRoles: [\r\n {\r\n name: 'Category',\r\n kind: powerbi.VisualDataRoleKind.Grouping,\r\n },\r\n {\r\n displayName: 'Noise Measure',\r\n name: 'Y',\r\n kind: powerbi.VisualDataRoleKind.Measure,\r\n },\r\n ],\r\n dataViewMappings: [{\r\n categorical: {\r\n categories: {\r\n for: { in: 'Category' },\r\n },\r\n values: {\r\n select: [{ bind: { to: 'Y' } }]\r\n },\r\n },\r\n }],\r\n objects: {\r\n dataPoint: {\r\n displayName: data.createDisplayNameGetter('Visual_DataPoint'),\r\n description: data.createDisplayNameGetter('Visual_DataPointDescription'),\r\n properties: {\r\n fill: {\r\n displayName: data.createDisplayNameGetter('Visual_Fill'),\r\n type: { fill: { solid: { color: true } } }\r\n },\r\n width: {\r\n displayName: '',\r\n type: { numeric: true }\r\n }\r\n }\r\n },\r\n general: {\r\n displayName: 'General',\r\n properties: {\r\n fill: {\r\n displayName: 'Background color',\r\n type: { fill: { solid: { color: true } } }\r\n },\r\n\r\n }\r\n }\r\n }\r\n };\r\n\r\n private static DefaultFontFamily = 'cursive';\r\n private static DefaultFontColor = 'rgb(165, 172, 175)';\r\n private static DefaultBackgroundColor = '#243C18';\r\n private static PaddingBetweenText = 15;\r\n\r\n private textOne: D3.Selection;\r\n private textTwo: D3.Selection;\r\n private svg: D3.Selection;\r\n private isFirstTime: boolean = true;\r\n private data: CheerData;\r\n private selectionManager: SelectionManager;\r\n\r\n public static converter(dataView: DataView): CheerData {\r\n if (!dataView.categorical || !dataView.categorical.categories) return null;\r\n let cat = dataView.categorical.categories[0];\r\n if (!cat) return null;\r\n let catValues = cat.values;\r\n if (!catValues || _.isEmpty(dataView.categorical.values)) return null;\r\n let values = dataView.categorical.values[0].values;\r\n let objects = dataView.categorical.categories[0].objects;\r\n let object1 = objects && objects.length > 0 ? objects[0] : undefined;\r\n let object2 = objects && objects.length > 1 ? objects[1] : undefined;\r\n let metadataObjects = dataView.metadata.objects;\r\n let backgroundColor = CheerMeter.DefaultBackgroundColor;\r\n if (metadataObjects) {\r\n let general = metadataObjects['general'];\r\n if (general) {\r\n let fill = <Fill>general['fill'];\r\n if (fill) {\r\n backgroundColor = fill.solid.color;\r\n }\r\n }\r\n }\r\n\r\n let color1 = DataViewObjects.getFillColor(\r\n object1,\r\n cheerMeterProps.dataPoint.fill,\r\n CheerMeter.DefaultFontColor);\r\n\r\n let color2 = DataViewObjects.getFillColor(\r\n object2,\r\n cheerMeterProps.dataPoint.fill,\r\n CheerMeter.DefaultFontColor);\r\n\r\n let idn1 = SelectionIdBuilder.builder()\r\n .withCategory(cat, 0)\r\n .createSelectionId();\r\n let idn2 = SelectionIdBuilder.builder()\r\n .withCategory(cat, 1)\r\n .createSelectionId();\r\n\r\n let data = {\r\n teamA: {\r\n name: catValues[0],\r\n value: values[0],\r\n color: color1,\r\n identity: idn1\r\n },\r\n teamB: {\r\n name: catValues[1],\r\n value: values[1],\r\n color: color2,\r\n identity: idn2\r\n },\r\n background: backgroundColor\r\n };\r\n\r\n return data;\r\n }\r\n\r\n public init(options: VisualInitOptions): void {\r\n this.selectionManager = new SelectionManager({ hostServices: options.host });\r\n let svg = this.svg = d3.select(options.element.get(0)).append('svg');\r\n\r\n this.textOne = svg.append('text')\r\n .style('font-family', CheerMeter.DefaultFontFamily);\r\n\r\n this.textTwo = svg.append('text')\r\n .style('font-family', CheerMeter.DefaultFontFamily);\r\n }\r\n\r\n public update(options: VisualUpdateOptions) {\r\n if (!options.dataViews[0]) { return; }\r\n let data = this.data = CheerMeter.converter(options.dataViews[0]);\r\n if (!data) return;\r\n let duration = options.suppressAnimations ? 0 : AnimatorCommon.MinervaAnimationDuration;\r\n this.draw(data, duration, options.viewport);\r\n }\r\n\r\n private getRecomendedFontProperties(text1: string, text2: string, parentViewport: IViewport): TextProperties {\r\n let textProperties: TextProperties = {\r\n fontSize: '',\r\n fontFamily: CheerMeter.DefaultFontFamily,\r\n text: text1 + text2\r\n };\r\n\r\n let min = 1;\r\n let max = 1000;\r\n let i;\r\n let maxWidth = parentViewport.width;\r\n let width = 0;\r\n\r\n while (min <= max) {\r\n i = (min + max) / 2 | 0;\r\n\r\n textProperties.fontSize = i + 'px';\r\n width = TextMeasurementService.measureSvgTextWidth(textProperties);\r\n\r\n if (maxWidth > width)\r\n min = i + 1;\r\n else if (maxWidth < width)\r\n max = i - 1;\r\n else\r\n break;\r\n }\r\n\r\n textProperties.fontSize = i + 'px';\r\n width = TextMeasurementService.measureSvgTextWidth(textProperties);\r\n if (width > maxWidth) {\r\n i--;\r\n textProperties.fontSize = i + 'px';\r\n }\r\n\r\n return textProperties;\r\n }\r\n\r\n private calculateLayout(data: CheerData, viewport: IViewport): CheerLayout {\r\n let text1 = data.teamA.name;\r\n let text2 = data.teamB.name;\r\n\r\n let avaliableViewport: IViewport = {\r\n height: viewport.height,\r\n width: viewport.width - CheerMeter.PaddingBetweenText\r\n };\r\n let recomendedFontProperties = this.getRecomendedFontProperties(text1, text2, avaliableViewport);\r\n\r\n recomendedFontProperties.text = text1;\r\n let width1 = TextMeasurementService.measureSvgTextWidth(recomendedFontProperties) | 0;\r\n\r\n recomendedFontProperties.text = text2;\r\n let width2 = TextMeasurementService.measureSvgTextWidth(recomendedFontProperties) | 0;\r\n\r\n let padding = ((viewport.width - width1 - width2 - CheerMeter.PaddingBetweenText) / 2) | 0;\r\n\r\n recomendedFontProperties.text = text1 + text2;\r\n let offsetHeight = (TextMeasurementService.measureSvgTextHeight(recomendedFontProperties)) | 0;\r\n\r\n let max = data.teamA.value + data.teamB.value;\r\n let availableHeight = viewport.height - offsetHeight;\r\n let y1 = (((max - data.teamA.value) / max) * availableHeight + offsetHeight / 2) | 0;\r\n let y2 = (((max - data.teamB.value) / max) * availableHeight + offsetHeight / 2) | 0;\r\n\r\n return {\r\n x1: padding,\r\n x2: padding + width1 + CheerMeter.PaddingBetweenText,\r\n y1: y1,\r\n y2: y2,\r\n fontSize: recomendedFontProperties.fontSize\r\n };\r\n }\r\n\r\n private ensureStartState(layout: CheerLayout, viewport: IViewport) {\r\n if (this.isFirstTime) {\r\n this.isFirstTime = false;\r\n let startY = viewport.height / 2;\r\n this.textOne.attr(\r\n {\r\n 'x': layout.x1,\r\n 'y': startY\r\n });\r\n\r\n this.textTwo.attr(\r\n {\r\n 'x': layout.x2,\r\n 'y': startY\r\n });\r\n }\r\n }\r\n\r\n private clearSelection() {\r\n this.selectionManager.clear().then(() => {\r\n this.clearSelectionUI();\r\n });\r\n }\r\n\r\n private clearSelectionUI() {\r\n this.textOne.style('stroke', '#FFF').style('stroke-width', 0);\r\n this.textTwo.style('stroke', '#FFF').style('stroke-width', 0);\r\n }\r\n\r\n private updateSelectionUI(ids: SelectionId[]) {\r\n this.textOne.style('stroke', '#FFF').style('stroke-width', SelectionManager.containsSelection(ids, this.data.teamA.identity) ? '2px' : '0px');\r\n this.textTwo.style('stroke', '#FFF').style('stroke-width', SelectionManager.containsSelection(ids, this.data.teamB.identity) ? '2px' : '0px');\r\n }\r\n\r\n private draw(data: CheerData, duration: number, viewport: IViewport) {\r\n let easeName = 'back';\r\n let textOne = this.textOne;\r\n let textTwo = this.textTwo;\r\n\r\n this.svg\r\n .attr({\r\n 'height': viewport.height,\r\n 'width': viewport.width\r\n })\r\n .on('click', () => {\r\n this.clearSelection();\r\n })\r\n .style('background-color', data.background);\r\n\r\n let layout = this.calculateLayout(data, viewport);\r\n\r\n this.ensureStartState(layout, viewport);\r\n\r\n textOne\r\n .style('font-size', layout.fontSize)\r\n .style('fill', data.teamA.color)\r\n .on('click', () => {\r\n this.selectionManager.select(data.teamA.identity, d3.event.ctrlKey).then((ids) => {\r\n this.updateSelectionUI(ids);\r\n });\r\n d3.event.stopPropagation();\r\n })\r\n .text(data.teamA.name);\r\n\r\n textTwo\r\n .style('font-size', layout.fontSize)\r\n .style('fill', data.teamB.color)\r\n .on('click', () => {\r\n this.selectionManager.select(data.teamB.identity, d3.event.ctrlKey).then((ids) => {\r\n this.updateSelectionUI(ids);\r\n });\r\n d3.event.stopPropagation();\r\n })\r\n .text(data.teamB.name);\r\n\r\n textOne.transition()\r\n .duration(duration)\r\n .ease(easeName)\r\n .attr({\r\n y: layout.y1,\r\n x: layout.x1\r\n });\r\n\r\n textTwo.transition()\r\n .duration(duration)\r\n .ease(easeName)\r\n .attr({\r\n y: layout.y2,\r\n x: layout.x2\r\n });\r\n }\r\n\r\n public destroy(): void {\r\n this.svg = null;\r\n this.textOne = this.textTwo = null;\r\n }\r\n\r\n public enumerateObjectInstances(options: EnumerateVisualObjectInstancesOptions): VisualObjectInstance[] {\r\n let instances: VisualObjectInstance[] = [];\r\n let data = this.data;\r\n switch (options.objectName) {\r\n case 'dataPoint':\r\n if (data) {\r\n let teams = [data.teamA, data.teamB];\r\n\r\n for (let i = 0; i < teams.length; i++) {\r\n let slice = teams[i];\r\n\r\n let color = slice.color;\r\n let selector = slice.identity;\r\n\r\n let dataPointInstance: VisualObjectInstance = {\r\n objectName: 'dataPoint',\r\n displayName: slice.name,\r\n selector: selector,\r\n properties: {\r\n fill: { solid: { color: color } }\r\n },\r\n };\r\n\r\n instances.push(dataPointInstance);\r\n };\r\n }\r\n break;\r\n case 'general':\r\n let general: VisualObjectInstance = {\r\n objectName: 'general',\r\n displayName: 'General',\r\n selector: null,\r\n properties: {\r\n fill: { solid: { color: data ? data.background : CheerMeter.DefaultBackgroundColor } }\r\n }\r\n };\r\n instances.push(general);\r\n break;\r\n }\r\n\r\n return instances;\r\n }\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n import ClassAndSelector = jsCommon.CssConstants.ClassAndSelector;\r\n import Color = jsCommon.Color;\r\n import createClassAndSelector = jsCommon.CssConstants.createClassAndSelector;\r\n import PixelConverter = jsCommon.PixelConverter;\r\n\r\n export interface ScatterChartConstructorOptions extends CartesianVisualConstructorOptions {\r\n }\r\n\r\n export interface ScatterChartDataPoint extends SelectableDataPoint, TooltipEnabledDataPoint, LabelEnabledDataPoint {\r\n x: any;\r\n y: any;\r\n size: any;\r\n radius: RadiusData;\r\n fill: string;\r\n category: string;\r\n fontSize?: number;\r\n }\r\n\r\n export interface RadiusData {\r\n sizeMeasure: DataViewValueColumn;\r\n index: number;\r\n }\r\n\r\n export interface DataRange {\r\n minRange: number;\r\n maxRange: number;\r\n delta: number;\r\n }\r\n\r\n export interface ScatterChartData extends PlayableChartData {\r\n xCol: DataViewMetadataColumn;\r\n yCol: DataViewMetadataColumn;\r\n dataPoints: ScatterChartDataPoint[];\r\n legendData: LegendData;\r\n axesLabels: ChartAxesLabels;\r\n size?: DataViewMetadataColumn;\r\n sizeRange: NumberRange;\r\n dataLabelsSettings: PointDataLabelsSettings;\r\n defaultDataPointColor?: string;\r\n showAllDataPoints?: boolean;\r\n hasDynamicSeries?: boolean;\r\n fillPoint?: boolean;\r\n colorBorder?: boolean;\r\n colorByCategory?: boolean;\r\n }\r\n\r\n export interface ScatterChartViewModel {\r\n xAxisProperties: IAxisProperties;\r\n yAxisProperties: IAxisProperties;\r\n viewport: IViewport;\r\n data: ScatterChartData;\r\n drawBubbles: boolean;\r\n fillMarkers: boolean;\r\n hasSelection: boolean;\r\n animationDuration: number;\r\n animationOptions: AnimationOptions;\r\n easeType: string;\r\n }\r\n\r\n interface ScatterChartMeasureMetadata {\r\n idx: {\r\n x?: number;\r\n y?: number;\r\n size?: number;\r\n };\r\n cols: {\r\n x?: DataViewMetadataColumn;\r\n y?: DataViewMetadataColumn;\r\n size?: DataViewMetadataColumn;\r\n };\r\n axesLabels: ChartAxesLabels;\r\n }\r\n\r\n interface MouseCoordinates {\r\n x: number;\r\n y: number;\r\n }\r\n\r\n export interface ScatterConverterOptions {\r\n viewport: IViewport;\r\n colors: any;\r\n interactivityService?: any;\r\n categoryAxisProperties?: any;\r\n valueAxisProperties?: any;\r\n }\r\n\r\n interface ScatterObjectProperties {\r\n fillPoint?: boolean;\r\n colorBorder?: boolean;\r\n showAllDataPoints?: boolean;\r\n defaultDataPointColor?: string;\r\n colorByCategory?: boolean;\r\n }\r\n\r\n export interface CartesianExtents {\r\n minX: number;\r\n maxX: number;\r\n minY: number;\r\n maxY: number;\r\n }\r\n\r\n export class ScatterChart implements ICartesianVisual {\r\n private static BubbleRadius = 3 * 2;\r\n public static DefaultBubbleOpacity = 0.85;\r\n public static DimmedBubbleOpacity = 0.4;\r\n public static StrokeDarkenColorValue = 255 * 0.25;\r\n //label layout settings\r\n public static dataLabelLayoutStartingOffset: number = 2;\r\n public static dataLabelLayoutOffsetIterationDelta: number = 6;\r\n public static dataLabelLayoutMaximumOffset: number = ScatterChart.dataLabelLayoutStartingOffset + (2 * ScatterChart.dataLabelLayoutOffsetIterationDelta);\r\n // Chart Area and size range values as defined by PV charts\r\n private static AreaOf300By300Chart = 90000;\r\n private static MinSizeRange = 200;\r\n private static MaxSizeRange = 3000;\r\n private static ClassName = 'scatterChart';\r\n\r\n private svg: D3.Selection;\r\n private element: JQuery;\r\n private currentViewport: IViewport;\r\n private style: IVisualStyle;\r\n private data: ScatterChartData;\r\n private dataView: DataView;\r\n private host: IVisualHostServices;\r\n private margin: IMargin;\r\n\r\n private colors: IDataColorPalette;\r\n private options: CartesianVisualInitOptions;\r\n private interactivity: InteractivityOptions;\r\n private cartesianVisualHost: ICartesianVisualHost;\r\n private isMobileChart: boolean;\r\n private interactivityService: IInteractivityService;\r\n private categoryAxisProperties: DataViewObject;\r\n private valueAxisProperties: DataViewObject;\r\n private animator: IGenericAnimator;\r\n private tooltipsEnabled: boolean;\r\n\r\n private xAxisProperties: IAxisProperties;\r\n private yAxisProperties: IAxisProperties;\r\n\r\n private renderer: SvgRenderer;\r\n private playAxis: PlayAxis<ScatterChartData>;\r\n\r\n constructor(options: ScatterChartConstructorOptions) {\r\n if (options) {\r\n this.tooltipsEnabled = options.tooltipsEnabled;\r\n this.interactivityService = options.interactivityService;\r\n this.animator = options.animator;\r\n }\r\n\r\n this.renderer = new SvgRenderer();\r\n }\r\n\r\n public init(options: CartesianVisualInitOptions) {\r\n this.options = options;\r\n let element = this.element = options.element;\r\n this.currentViewport = options.viewport;\r\n this.style = options.style;\r\n this.host = options.host;\r\n this.colors = this.style.colorPalette.dataColors;\r\n this.interactivity = options.interactivity;\r\n this.cartesianVisualHost = options.cartesianHost;\r\n this.isMobileChart = options.interactivity && options.interactivity.isInteractiveLegend;\r\n\r\n // TODO: should we always be adding the playchart class name?\r\n element.addClass(ScatterChart.ClassName + ' ' + PlayChart.ClassName);\r\n\r\n let svg = this.svg = options.svg;\r\n\r\n this.renderer.init(svg, options.labelsContext, this.isMobileChart);\r\n }\r\n\r\n private static getObjectProperties(dataView: DataView, dataLabelsSettings?: PointDataLabelsSettings): ScatterObjectProperties {\r\n let objects: DataViewObjects;\r\n if (dataView && dataView.metadata && dataView.metadata.objects)\r\n objects = dataView.metadata.objects;\r\n else\r\n objects = {};\r\n\r\n let objectProperties: ScatterObjectProperties = {};\r\n\r\n objectProperties.defaultDataPointColor = DataViewObjects.getFillColor(objects, columnChartProps.dataPoint.defaultColor);\r\n objectProperties.showAllDataPoints = DataViewObjects.getValue<boolean>(objects, columnChartProps.dataPoint.showAllDataPoints, false);\r\n\r\n let labelsObj = <DataLabelObject>objects['categoryLabels'];\r\n if (labelsObj && dataLabelsSettings)\r\n dataLabelUtils.updateLabelSettingsFromLabelsObject(labelsObj, dataLabelsSettings);\r\n\r\n // NOTE: \"fill point\" defaults to on when we have a gradient role.\r\n let hasGradient = dataView && GradientUtils.hasGradientRole(dataView.categorical);\r\n objectProperties.fillPoint = DataViewObjects.getValue(objects, scatterChartProps.fillPoint.show, hasGradient);\r\n\r\n objectProperties.colorBorder = DataViewObjects.getValue(objects, scatterChartProps.colorBorder.show, false);\r\n objectProperties.colorByCategory = DataViewObjects.getValue(objects, scatterChartProps.colorByCategory.show, false);\r\n\r\n return objectProperties;\r\n }\r\n\r\n public static converter(dataView: DataView, options: ScatterConverterOptions, playFrameInfo?: PlayFrameInfo): ScatterChartData {\r\n let categoryValues: any[],\r\n categoryFormatter: IValueFormatter,\r\n categoryObjects: DataViewObjects[],\r\n categoryIdentities: DataViewScopeIdentity[],\r\n categoryQueryName: string;\r\n\r\n let currentViewport = options.viewport;\r\n let colorPalette = options.colors;\r\n let interactivityService = options.interactivityService;\r\n let categoryAxisProperties = options.categoryAxisProperties;\r\n let valueAxisProperties = options.valueAxisProperties;\r\n\r\n let dataViewCategorical: DataViewCategorical = dataView.categorical;\r\n\r\n if (dataViewCategorical.categories && dataViewCategorical.categories.length > 0) {\r\n categoryValues = dataViewCategorical.categories[0].values;\r\n categoryFormatter = valueFormatter.create({ format: valueFormatter.getFormatString(dataViewCategorical.categories[0].source, scatterChartProps.general.formatString), value: categoryValues[0], value2: categoryValues[categoryValues.length - 1] });\r\n categoryIdentities = dataViewCategorical.categories[0].identity;\r\n categoryObjects = dataViewCategorical.categories[0].objects;\r\n categoryQueryName = dataViewCategorical.categories[0].source.queryName;\r\n }\r\n else {\r\n categoryValues = [null];\r\n // creating default formatter for null value (to get the right string of empty value from the locale)\r\n categoryFormatter = valueFormatter.createDefaultFormatter(null);\r\n }\r\n\r\n let categories = dataViewCategorical.categories;\r\n let dataValues = dataViewCategorical.values;\r\n let hasDynamicSeries = !!dataValues.source;\r\n let grouped = dataValues.grouped();\r\n let dvSource = dataValues.source;\r\n let scatterMetadata = ScatterChart.getMetadata(grouped, dvSource);\r\n let dataLabelsSettings = dataLabelUtils.getDefaultPointLabelSettings();\r\n\r\n let objProps = ScatterChart.getObjectProperties(dataView, dataLabelsSettings);\r\n\r\n let dataPoints = ScatterChart.createDataPoints(\r\n dataValues,\r\n scatterMetadata,\r\n categories,\r\n categoryValues,\r\n categoryFormatter,\r\n categoryIdentities,\r\n categoryObjects,\r\n colorPalette,\r\n currentViewport,\r\n hasDynamicSeries,\r\n dataLabelsSettings,\r\n objProps.defaultDataPointColor,\r\n categoryQueryName,\r\n objProps.colorByCategory,\r\n playFrameInfo);\r\n\r\n let legendItems = hasDynamicSeries\r\n ? ScatterChart.createSeriesLegend(dataValues, colorPalette, dataValues, valueFormatter.getFormatString(dvSource, scatterChartProps.general.formatString), objProps.defaultDataPointColor)\r\n : [];\r\n\r\n let legendTitle = dataValues && dvSource ? dvSource.displayName : \"\";\r\n if (!legendTitle) {\r\n legendTitle = categories && categories.length > 0 && categories[0].source.displayName ? categories[0].source.displayName : \"\";\r\n }\r\n\r\n let sizeRange = ScatterChart.getSizeRangeForGroups(grouped, scatterMetadata.idx.size);\r\n\r\n if (categoryAxisProperties && categoryAxisProperties[\"showAxisTitle\"] !== null && categoryAxisProperties[\"showAxisTitle\"] === false) {\r\n scatterMetadata.axesLabels.x = null;\r\n }\r\n if (valueAxisProperties && valueAxisProperties[\"showAxisTitle\"] !== null && valueAxisProperties[\"showAxisTitle\"] === false) {\r\n scatterMetadata.axesLabels.y = null;\r\n }\r\n\r\n if (interactivityService) {\r\n interactivityService.applySelectionStateToData(dataPoints);\r\n interactivityService.applySelectionStateToData(legendItems);\r\n }\r\n\r\n return {\r\n xCol: scatterMetadata.cols.x,\r\n yCol: scatterMetadata.cols.y,\r\n dataPoints: dataPoints,\r\n legendData: { title: legendTitle, dataPoints: legendItems },\r\n axesLabels: scatterMetadata.axesLabels,\r\n size: scatterMetadata.cols.size,\r\n sizeRange: sizeRange,\r\n dataLabelsSettings: dataLabelsSettings,\r\n defaultDataPointColor: objProps.defaultDataPointColor,\r\n hasDynamicSeries: hasDynamicSeries,\r\n showAllDataPoints: objProps.showAllDataPoints,\r\n fillPoint: objProps.fillPoint,\r\n colorBorder: objProps.colorBorder,\r\n colorByCategory: objProps.colorByCategory,\r\n };\r\n }\r\n\r\n private static getSizeRangeForGroups(\r\n dataViewValueGroups: DataViewValueColumnGroup[],\r\n sizeColumnIndex: number): NumberRange {\r\n\r\n let result: NumberRange = {};\r\n if (dataViewValueGroups) {\r\n dataViewValueGroups.forEach((group) => {\r\n let sizeColumn = ScatterChart.getMeasureValue(sizeColumnIndex, group.values);\r\n let currentRange: NumberRange = AxisHelper.getRangeForColumn(sizeColumn);\r\n if (result.min == null || result.min > currentRange.min) {\r\n result.min = currentRange.min;\r\n }\r\n if (result.max == null || result.max < currentRange.max) {\r\n result.max = currentRange.max;\r\n }\r\n });\r\n }\r\n return result;\r\n }\r\n\r\n private static createDataPoints(\r\n dataValues: DataViewValueColumns,\r\n metadata: ScatterChartMeasureMetadata,\r\n categories: DataViewCategoryColumn[],\r\n categoryValues: any[],\r\n categoryFormatter: IValueFormatter,\r\n categoryIdentities: DataViewScopeIdentity[],\r\n categoryObjects: DataViewObjects[],\r\n colorPalette: IDataColorPalette,\r\n viewport: IViewport,\r\n hasDynamicSeries: boolean,\r\n labelSettings: PointDataLabelsSettings,\r\n defaultDataPointColor?: string,\r\n categoryQueryName?: string,\r\n colorByCategory?: boolean,\r\n playFrameInfo?: PlayFrameInfo): ScatterChartDataPoint[] {\r\n\r\n let dataPoints: ScatterChartDataPoint[] = [],\r\n indicies = metadata.idx,\r\n formatStringProp = scatterChartProps.general.formatString,\r\n dataValueSource = dataValues.source,\r\n grouped = dataValues.grouped();\r\n\r\n let colorHelper = new ColorHelper(colorPalette, scatterChartProps.dataPoint.fill, defaultDataPointColor);\r\n\r\n for (let categoryIdx = 0, ilen = categoryValues.length; categoryIdx < ilen; categoryIdx++) {\r\n let categoryValue = categoryValues[categoryIdx];\r\n\r\n for (let seriesIdx = 0, len = grouped.length; seriesIdx < len; seriesIdx++) {\r\n let grouping = grouped[seriesIdx];\r\n let seriesValues = grouping.values;\r\n let measureX = ScatterChart.getMeasureValue(indicies.x, seriesValues);\r\n let measureY = ScatterChart.getMeasureValue(indicies.y, seriesValues);\r\n let measureSize = ScatterChart.getMeasureValue(indicies.size, seriesValues);\r\n\r\n let xVal = measureX && measureX.values ? measureX.values[categoryIdx] : null;\r\n let yVal = measureY && measureY.values ? measureY.values[categoryIdx] : 0;\r\n let size = measureSize && measureSize.values ? measureSize.values[categoryIdx] : null;\r\n\r\n let hasNullValue = (xVal == null) || (yVal == null);\r\n\r\n if (hasNullValue)\r\n continue;\r\n\r\n let color: string;\r\n if (hasDynamicSeries) {\r\n color = colorHelper.getColorForSeriesValue(grouping.objects, dataValues.identityFields, grouping.name);\r\n }\r\n else if (colorByCategory) {\r\n color = colorHelper.getColorForSeriesValue(categoryObjects && categoryObjects[categoryIdx], dataValues.identityFields, categoryValue);\r\n }\r\n else {\r\n // If we have no Size measure then use a blank query name\r\n let measureSource = (measureSize != null)\r\n ? measureSize.source.queryName\r\n : '';\r\n\r\n color = colorHelper.getColorForMeasure(categoryObjects && categoryObjects[categoryIdx], measureSource);\r\n }\r\n\r\n let category = categories && categories.length > 0 ? categories[0] : null;\r\n let identity = SelectionIdBuilder.builder()\r\n .withCategory(category, categoryIdx)\r\n .withSeries(dataValues, grouping)\r\n .createSelectionId();\r\n\r\n let seriesData: TooltipSeriesDataItem[] = [];\r\n if (dataValueSource) {\r\n // Dynamic series\r\n seriesData.push({ value: grouping.name, metadata: { source: dataValueSource, values: [] } });\r\n }\r\n if (measureX) {\r\n seriesData.push({ value: xVal, metadata: measureX });\r\n }\r\n if (measureY) {\r\n seriesData.push({ value: yVal, metadata: measureY });\r\n }\r\n if (measureSize && measureSize.values && measureSize.values.length > 0) {\r\n seriesData.push({ value: measureSize.values[categoryIdx], metadata: measureSize });\r\n }\r\n if (playFrameInfo) {\r\n seriesData.push({ value: playFrameInfo.label, metadata: { source: playFrameInfo.column, values: [] } });\r\n }\r\n\r\n let tooltipInfo: TooltipDataItem[] = TooltipBuilder.createTooltipInfo(formatStringProp, null, categoryValue, null, categories, seriesData);\r\n\r\n let dataPoint: ScatterChartDataPoint = {\r\n x: xVal,\r\n y: yVal,\r\n size: size,\r\n radius: { sizeMeasure: measureSize, index: categoryIdx },\r\n fill: color,\r\n category: categories != null ? categoryFormatter.format(categoryValue) : grouping.name,\r\n selected: false,\r\n identity: identity,\r\n tooltipInfo: tooltipInfo,\r\n labelFill: labelSettings.labelColor,\r\n };\r\n\r\n dataPoints.push(dataPoint);\r\n }\r\n }\r\n return dataPoints;\r\n }\r\n\r\n private static createSeriesLegend(\r\n dataValues: DataViewValueColumns,\r\n colorPalette: IDataColorPalette,\r\n categorical: DataViewValueColumns,\r\n formatString: string,\r\n defaultDataPointColor: string): LegendDataPoint[] {\r\n\r\n let grouped = dataValues.grouped();\r\n let colorHelper = new ColorHelper(colorPalette, scatterChartProps.dataPoint.fill, defaultDataPointColor);\r\n\r\n let legendItems: LegendDataPoint[] = [];\r\n for (let i = 0, len = grouped.length; i < len; i++) {\r\n let grouping = grouped[i];\r\n let color = colorHelper.getColorForSeriesValue(grouping.objects, dataValues.identityFields, grouping.name);\r\n legendItems.push({\r\n color: color,\r\n icon: LegendIcon.Circle,\r\n label: valueFormatter.format(grouping.name, formatString),\r\n identity: grouping.identity ? SelectionId.createWithId(grouping.identity) : SelectionId.createNull(),\r\n selected: false\r\n });\r\n }\r\n\r\n return legendItems;\r\n }\r\n\r\n public static getBubbleRadius(radiusData: RadiusData, sizeRange: NumberRange, viewport: IViewport): number {\r\n let actualSizeDataRange = null;\r\n let bubblePixelAreaSizeRange = null;\r\n let measureSize = radiusData.sizeMeasure;\r\n\r\n if (!measureSize)\r\n return ScatterChart.BubbleRadius;\r\n\r\n let minSize = sizeRange.min ? sizeRange.min : 0;\r\n let maxSize = sizeRange.max ? sizeRange.max : 0;\r\n\r\n let min = Math.min(minSize, 0);\r\n let max = Math.max(maxSize, 0);\r\n actualSizeDataRange = {\r\n minRange: min,\r\n maxRange: max,\r\n delta: max - min\r\n };\r\n\r\n bubblePixelAreaSizeRange = ScatterChart.getBubblePixelAreaSizeRange(viewport, ScatterChart.MinSizeRange, ScatterChart.MaxSizeRange);\r\n\r\n if (measureSize.values) {\r\n let sizeValue = measureSize.values[radiusData.index];\r\n if (sizeValue != null) {\r\n return ScatterChart.projectSizeToPixels(sizeValue, actualSizeDataRange, bubblePixelAreaSizeRange) / 2;\r\n }\r\n }\r\n\r\n return ScatterChart.BubbleRadius;\r\n }\r\n\r\n public static getMeasureValue(measureIndex: number, seriesValues: DataViewValueColumn[]): DataViewValueColumn {\r\n if (measureIndex >= 0)\r\n return seriesValues[measureIndex];\r\n\r\n return null;\r\n }\r\n\r\n private static getMetadata(grouped: DataViewValueColumnGroup[], source: DataViewMetadataColumn): ScatterChartMeasureMetadata {\r\n let xIndex = DataRoleHelper.getMeasureIndexOfRole(grouped, 'X');\r\n let yIndex = DataRoleHelper.getMeasureIndexOfRole(grouped, 'Y');\r\n let sizeIndex = DataRoleHelper.getMeasureIndexOfRole(grouped, 'Size');\r\n let xCol: DataViewMetadataColumn;\r\n let yCol: DataViewMetadataColumn;\r\n let sizeCol: DataViewMetadataColumn;\r\n let xAxisLabel = \"\";\r\n let yAxisLabel = \"\";\r\n\r\n if (grouped && grouped.length) {\r\n let firstGroup = grouped[0];\r\n if (xIndex >= 0) {\r\n xCol = firstGroup.values[xIndex].source;\r\n xAxisLabel = firstGroup.values[xIndex].source.displayName;\r\n }\r\n if (yIndex >= 0) {\r\n yCol = firstGroup.values[yIndex].source;\r\n yAxisLabel = firstGroup.values[yIndex].source.displayName;\r\n }\r\n if (sizeIndex >= 0) {\r\n sizeCol = firstGroup.values[sizeIndex].source;\r\n }\r\n }\r\n\r\n return {\r\n idx: {\r\n x: xIndex,\r\n y: yIndex,\r\n size: sizeIndex,\r\n },\r\n cols: {\r\n x: xCol,\r\n y: yCol,\r\n size: sizeCol,\r\n },\r\n axesLabels: {\r\n x: xAxisLabel,\r\n y: yAxisLabel\r\n }\r\n };\r\n }\r\n\r\n /** Create a new viewmodel with default data. */\r\n public static getDefaultData(): ScatterChartData {\r\n return {\r\n xCol: undefined,\r\n yCol: undefined,\r\n dataPoints: [],\r\n legendData: { dataPoints: [] },\r\n axesLabels: { x: '', y: '' },\r\n sizeRange: [],\r\n dataLabelsSettings: dataLabelUtils.getDefaultPointLabelSettings(),\r\n defaultDataPointColor: null,\r\n hasDynamicSeries: false,\r\n };\r\n }\r\n\r\n private renderAtFrame(data: ScatterChartData): void {\r\n this.data = data;\r\n this.cartesianVisualHost.triggerRender(false);\r\n }\r\n\r\n public setData(dataViews: DataView[], resized?: boolean) {\r\n this.data = ScatterChart.getDefaultData();\r\n\r\n if (dataViews.length > 0) {\r\n let dataView = dataViews[0] || dataViews[1];\r\n\r\n if (dataView) {\r\n this.categoryAxisProperties = CartesianHelper.getCategoryAxisProperties(dataView.metadata, true);\r\n this.valueAxisProperties = CartesianHelper.getValueAxisProperties(dataView.metadata, true);\r\n this.dataView = dataView;\r\n\r\n let converterOptions: ScatterConverterOptions = {\r\n viewport: this.currentViewport,\r\n colors: this.colors,\r\n interactivityService: this.interactivityService,\r\n categoryAxisProperties: this.categoryAxisProperties,\r\n valueAxisProperties: this.valueAxisProperties,\r\n };\r\n\r\n if (PlayChart.isDataViewPlayable(dataView)) {\r\n if (!this.playAxis) {\r\n this.playAxis = new PlayAxis<ScatterChartData>({\r\n animator: this.animator,\r\n interactivityService: this.interactivityService,\r\n isScrollable: false,\r\n });\r\n this.playAxis.init(this.options);\r\n }\r\n\r\n let playData = this.playAxis.setData(\r\n dataView,\r\n (dataView: DataView, playFrameInfo?: PlayFrameInfo) =>\r\n ScatterChart.converter(dataView, converterOptions, playFrameInfo), resized);\r\n this.mergeSizeRanges(playData);\r\n this.data = playData.currentViewModel;\r\n\r\n this.playAxis.setRenderFunction((data) => this.renderAtFrame(data));\r\n }\r\n else {\r\n if (this.playAxis) {\r\n this.playAxis.remove();\r\n this.playAxis = null;\r\n }\r\n\r\n if (dataView.categorical && dataView.categorical.values) {\r\n this.data = ScatterChart.converter(dataView, converterOptions);\r\n }\r\n }\r\n }\r\n }\r\n else if (this.playAxis) {\r\n this.playAxis.remove();\r\n this.playAxis = null;\r\n }\r\n }\r\n\r\n private mergeSizeRanges(playData: PlayChartData<ScatterChartData>): void {\r\n if (playData && playData.currentViewModel) {\r\n let mergedSizeRange: NumberRange = playData.currentViewModel.sizeRange;\r\n for (let data of playData.allViewModels) {\r\n let sizeRange = data.sizeRange;\r\n if (sizeRange.min != null)\r\n mergedSizeRange.min = Math.min(mergedSizeRange.min, sizeRange.min);\r\n if (sizeRange.max != null)\r\n mergedSizeRange.max = Math.max(mergedSizeRange.max, sizeRange.max);\r\n }\r\n for (let data of playData.allViewModels) {\r\n data.sizeRange = mergedSizeRange;\r\n }\r\n }\r\n }\r\n\r\n public calculateLegend(): LegendData {\r\n return this.data.legendData;\r\n }\r\n\r\n public hasLegend(): boolean {\r\n return this.data && this.data.hasDynamicSeries;\r\n }\r\n\r\n public enumerateObjectInstances(enumeration: ObjectEnumerationBuilder, options: EnumerateVisualObjectInstancesOptions): void {\r\n switch (options.objectName) {\r\n case 'colorByCategory':\r\n if (this.data) {\r\n // Color by Legend takes precedent during render. Hide the slice but keep the colorByCategory value unchanged in case they remove the Legend field.\r\n if (!this.data.hasDynamicSeries) {\r\n enumeration.pushInstance({\r\n objectName: 'colorByCategory',\r\n selector: null,\r\n properties: {\r\n show: this.data.colorByCategory,\r\n },\r\n });\r\n }\r\n }\r\n break;\r\n case 'dataPoint':\r\n // TODO: DataViewMatix (for PlayAxis) doesn't support category- or series-specific properties yet.\r\n if (!this.playAxis) {\r\n let categoricalDataView: DataViewCategorical = this.dataView && this.dataView.categorical ? this.dataView.categorical : null;\r\n if (!GradientUtils.hasGradientRole(categoricalDataView))\r\n return this.enumerateDataPoints(enumeration);\r\n }\r\n break;\r\n case 'categoryAxis':\r\n enumeration.pushInstance({\r\n selector: null,\r\n properties: {\r\n showAxisTitle: !this.categoryAxisProperties || this.categoryAxisProperties[\"showAxisTitle\"] == null ? true : this.categoryAxisProperties[\"showAxisTitle\"]\r\n },\r\n objectName: 'categoryAxis'\r\n });\r\n break;\r\n case 'valueAxis':\r\n enumeration.pushInstance({\r\n selector: null,\r\n properties: {\r\n showAxisTitle: !this.valueAxisProperties || this.valueAxisProperties[\"showAxisTitle\"] == null ? true : this.valueAxisProperties[\"showAxisTitle\"]\r\n },\r\n objectName: 'valueAxis'\r\n });\r\n break;\r\n case 'categoryLabels':\r\n if (this.data)\r\n dataLabelUtils.enumerateCategoryLabels(enumeration, this.data.dataLabelsSettings, true);\r\n else\r\n dataLabelUtils.enumerateCategoryLabels(enumeration, null, true);\r\n break;\r\n case 'fillPoint':\r\n // Check if the card should be shown or not based on the existence of size measure\r\n if (this.hasSizeMeasure())\r\n return;\r\n\r\n enumeration.pushInstance({\r\n objectName: 'fillPoint',\r\n selector: null,\r\n properties: {\r\n show: this.data.fillPoint,\r\n },\r\n });\r\n break;\r\n case 'colorBorder':\r\n // Check if the card should be shown or not based on the existence of size measure\r\n if (this.hasSizeMeasure())\r\n enumeration.pushInstance({\r\n objectName: 'colorBorder',\r\n selector: null,\r\n properties: {\r\n show: this.data.colorBorder,\r\n },\r\n });\r\n break;\r\n }\r\n }\r\n\r\n private hasSizeMeasure(): boolean {\r\n let sizeRange = this.data.sizeRange;\r\n return sizeRange && sizeRange.min !== undefined;\r\n }\r\n\r\n private enumerateDataPoints(enumeration: ObjectEnumerationBuilder): void {\r\n let data = this.data;\r\n if (!data)\r\n return;\r\n\r\n let seriesCount = data.dataPoints.length;\r\n\r\n if (!data.hasDynamicSeries) {\r\n enumeration.pushInstance({\r\n objectName: 'dataPoint',\r\n selector: null,\r\n properties: {\r\n defaultColor: { solid: { color: data.defaultDataPointColor || this.colors.getColorByIndex(0).value } }\r\n }\r\n }).pushInstance({\r\n objectName: 'dataPoint',\r\n selector: null,\r\n properties: {\r\n showAllDataPoints: !!data.showAllDataPoints\r\n }\r\n });\r\n\r\n for (let i = 0; i < seriesCount; i++) {\r\n let seriesDataPoints = data.dataPoints[i];\r\n enumeration.pushInstance({\r\n objectName: 'dataPoint',\r\n displayName: seriesDataPoints.category,\r\n selector: ColorHelper.normalizeSelector(seriesDataPoints.identity.getSelector(), /*isSingleSeries*/ true),\r\n properties: {\r\n fill: { solid: { color: seriesDataPoints.fill } }\r\n },\r\n });\r\n }\r\n }\r\n else {\r\n let legendDataPointLength = data.legendData.dataPoints.length;\r\n for (let i = 0; i < legendDataPointLength; i++) {\r\n let series = data.legendData.dataPoints[i];\r\n enumeration.pushInstance({\r\n objectName: 'dataPoint',\r\n displayName: series.label,\r\n selector: ColorHelper.normalizeSelector(series.identity.getSelector()),\r\n properties: {\r\n fill: { solid: { color: series.color } }\r\n },\r\n });\r\n }\r\n }\r\n }\r\n\r\n private static getExtents(data: ScatterChartData): CartesianExtents {\r\n let dps = data.dataPoints;\r\n if (_.isEmpty(dps)) {\r\n return {\r\n minY: 0,\r\n maxY: 0,\r\n minX: 0,\r\n maxX: 0,\r\n };\r\n }\r\n\r\n return {\r\n minY: d3.min<ScatterChartDataPoint, number>(dps, d => d.y),\r\n maxY: d3.max<ScatterChartDataPoint, number>(dps, d => d.y),\r\n minX: d3.min<ScatterChartDataPoint, number>(dps, d => d.x),\r\n maxX: d3.max<ScatterChartDataPoint, number>(dps, d => d.x),\r\n };\r\n }\r\n\r\n public calculateAxesProperties(options: CalculateScaleAndDomainOptions): IAxisProperties[] {\r\n let data = this.data;\r\n let viewport = this.currentViewport = options.viewport;\r\n let margin = options.margin;\r\n\r\n this.currentViewport = viewport;\r\n this.margin = margin;\r\n\r\n let width = viewport.width - (margin.left + margin.right);\r\n let height = viewport.height - (margin.top + margin.bottom);\r\n\r\n let extents: CartesianExtents = {\r\n minY: 0,\r\n maxY: 10,\r\n minX: 0,\r\n maxX: 10\r\n };\r\n\r\n if (this.playAxis) {\r\n extents = this.playAxis.getCartesianExtents(extents, ScatterChart.getExtents);\r\n this.playAxis.setPlayControlPosition(options.playAxisControlLayout);\r\n }\r\n else if (!_.isEmpty(data.dataPoints)) {\r\n extents = ScatterChart.getExtents(data);\r\n }\r\n\r\n let xDomain = [extents.minX, extents.maxX];\r\n let combinedXDomain = AxisHelper.combineDomain(options.forcedXDomain, xDomain);\r\n\r\n this.xAxisProperties = AxisHelper.createAxis({\r\n pixelSpan: width,\r\n dataDomain: combinedXDomain,\r\n metaDataColumn: data.xCol,\r\n formatString: valueFormatter.getFormatString(data.xCol, scatterChartProps.general.formatString),\r\n outerPadding: 0,\r\n isScalar: true,\r\n isVertical: false,\r\n forcedTickCount: options.forcedTickCount,\r\n useTickIntervalForDisplayUnits: true,\r\n isCategoryAxis: true, //scatter doesn't have a categorical axis, but this is needed for the pane to react correctly to the x-axis toggle one/off\r\n scaleType: options.categoryAxisScaleType,\r\n axisDisplayUnits: options.categoryAxisDisplayUnits,\r\n axisPrecision: options.categoryAxisPrecision\r\n });\r\n this.xAxisProperties.axis.tickSize(-height, 0);\r\n this.xAxisProperties.axisLabel = this.data.axesLabels.x;\r\n\r\n let combinedDomain = AxisHelper.combineDomain(options.forcedYDomain, [extents.minY, extents.maxY]);\r\n\r\n this.yAxisProperties = AxisHelper.createAxis({\r\n pixelSpan: height,\r\n dataDomain: combinedDomain,\r\n metaDataColumn: data.yCol,\r\n formatString: valueFormatter.getFormatString(data.yCol, scatterChartProps.general.formatString),\r\n outerPadding: 0,\r\n isScalar: true,\r\n isVertical: true,\r\n forcedTickCount: options.forcedTickCount,\r\n useTickIntervalForDisplayUnits: true,\r\n isCategoryAxis: false,\r\n scaleType: options.valueAxisScaleType,\r\n axisDisplayUnits: options.valueAxisDisplayUnits,\r\n axisPrecision: options.valueAxisPrecision\r\n });\r\n this.yAxisProperties.axisLabel = this.data.axesLabels.y;\r\n\r\n // TODO: these should be passed into the render method.\r\n return [this.xAxisProperties, this.yAxisProperties];\r\n }\r\n\r\n public overrideXScale(xProperties: IAxisProperties): void {\r\n this.xAxisProperties = xProperties;\r\n }\r\n\r\n public render(suppressAnimations: boolean): CartesianVisualRenderResult {\r\n if (!this.data)\r\n return;\r\n\r\n let data = this.data;\r\n\r\n let margin = this.margin;\r\n let viewport = this.currentViewport;\r\n\r\n let hasSelection = this.interactivityService && this.interactivityService.hasSelection();\r\n\r\n let plotArea: IViewport = {\r\n width: viewport.width - (margin.left + margin.right),\r\n height: viewport.height - (margin.top + margin.bottom)\r\n };\r\n\r\n let duration = AnimatorCommon.GetAnimationDuration(this.animator, suppressAnimations);\r\n if (this.playAxis && duration > 0) {\r\n duration = PlayChart.FrameAnimationDuration;\r\n }\r\n\r\n let easeType = this.playAxis ? 'linear' : 'cubic-in-out'; // cubic-in-out is the d3.ease default\r\n let fillMarkers = (!data.sizeRange || !data.sizeRange.min) && data.fillPoint;\r\n let drawBubbles = this.hasSizeMeasure();\r\n\r\n let viewModel: ScatterChartViewModel = {\r\n data: data,\r\n drawBubbles: drawBubbles,\r\n xAxisProperties: this.xAxisProperties,\r\n yAxisProperties: this.yAxisProperties,\r\n viewport: plotArea,\r\n hasSelection: hasSelection,\r\n animationDuration: duration,\r\n animationOptions: this.options.animation,\r\n fillMarkers: fillMarkers,\r\n easeType: easeType,\r\n };\r\n\r\n if (drawBubbles) {\r\n // Bubbles must be drawn from largest to smallest.\r\n let sortedData = data.dataPoints.sort(ScatterChart.sortBubbles);\r\n viewModel.data = Prototype.inherit(viewModel.data);\r\n viewModel.data.dataPoints = sortedData;\r\n }\r\n\r\n let labelDataPoints: LabelDataPoint[] = [];\r\n if (data.dataLabelsSettings && data.dataLabelsSettings.show || data.dataLabelsSettings.showCategory) {\r\n labelDataPoints = ScatterChartDataLabels.createLabelDataPoints(viewModel);\r\n }\r\n\r\n let behaviorOptions = this.renderer.render(viewModel, this.interactivityService);\r\n\r\n if (this.isMobileChart) {\r\n behaviorOptions = <ScatterMobileBehaviorOptions> {\r\n data: behaviorOptions.data,\r\n dataPointsSelection: behaviorOptions.dataPointsSelection,\r\n plotContext: behaviorOptions.plotContext,\r\n host: this.cartesianVisualHost,\r\n root: this.svg,\r\n visualInitOptions: this.options,\r\n xAxisProperties: this.xAxisProperties,\r\n yAxisProperties: this.yAxisProperties,\r\n background: d3.select(this.element.get(0)),\r\n };\r\n }\r\n\r\n let playRenderResult: PlayChartRenderResult<ScatterChartData, ScatterChartViewModel>;\r\n if (this.playAxis) {\r\n playRenderResult = this.playAxis.render(suppressAnimations, viewModel, viewport, margin);\r\n\r\n if (this.interactivityService) {\r\n let playBehaviorOptions: PlayBehaviorOptions = {\r\n traceLineRenderer: this.renderer.createTraceLineRenderer(playRenderResult.viewModel),\r\n };\r\n\r\n if (hasSelection) {\r\n PlayChart.renderTraceLines(playRenderResult.allDataPoints, playBehaviorOptions.traceLineRenderer, !suppressAnimations);\r\n }\r\n\r\n behaviorOptions.playOptions = playBehaviorOptions;\r\n }\r\n }\r\n\r\n return {\r\n dataPoints: playRenderResult ? playRenderResult.allDataPoints : data.dataPoints,\r\n behaviorOptions: behaviorOptions,\r\n labelDataPoints: labelDataPoints,\r\n labelsAreNumeric: false,\r\n };\r\n }\r\n\r\n public static getStrokeFill(d: ScatterChartDataPoint, colorBorder: boolean): string {\r\n if (d.size != null && colorBorder) {\r\n let colorRgb = Color.parseColorString(d.fill);\r\n return Color.hexString(Color.darken(colorRgb, ScatterChart.StrokeDarkenColorValue));\r\n }\r\n return d.fill;\r\n }\r\n\r\n public static getBubblePixelAreaSizeRange(viewPort: IViewport, minSizeRange: number, maxSizeRange: number): DataRange {\r\n let ratio = 1.0;\r\n if (viewPort.height > 0 && viewPort.width > 0) {\r\n let minSize = Math.min(viewPort.height, viewPort.width);\r\n ratio = (minSize * minSize) / ScatterChart.AreaOf300By300Chart;\r\n }\r\n\r\n let minRange = Math.round(minSizeRange * ratio);\r\n let maxRange = Math.round(maxSizeRange * ratio);\r\n return {\r\n minRange: minRange,\r\n maxRange: maxRange,\r\n delta: maxRange - minRange\r\n };\r\n }\r\n\r\n public static project(value: number, actualSizeDataRange: DataRange, bubblePixelAreaSizeRange: DataRange): number {\r\n if (actualSizeDataRange.delta === 0 || bubblePixelAreaSizeRange.delta === 0) {\r\n return (ScatterChart.rangeContains(actualSizeDataRange, value)) ? bubblePixelAreaSizeRange.minRange : null;\r\n }\r\n\r\n let relativeX = (value - actualSizeDataRange.minRange) / actualSizeDataRange.delta;\r\n return bubblePixelAreaSizeRange.minRange + relativeX * bubblePixelAreaSizeRange.delta;\r\n }\r\n\r\n public static projectSizeToPixels(size: number, actualSizeDataRange: DataRange, bubblePixelAreaSizeRange: DataRange): number {\r\n let projectedSize = 0;\r\n if (actualSizeDataRange) {\r\n // Project value on the required range of bubble area sizes\r\n projectedSize = bubblePixelAreaSizeRange.maxRange;\r\n if (actualSizeDataRange.delta !== 0) {\r\n let value = Math.min(Math.max(size, actualSizeDataRange.minRange), actualSizeDataRange.maxRange);\r\n projectedSize = ScatterChart.project(value, actualSizeDataRange, bubblePixelAreaSizeRange);\r\n }\r\n\r\n projectedSize = Math.sqrt(projectedSize / Math.PI) * 2;\r\n }\r\n\r\n return Math.round(projectedSize);\r\n }\r\n\r\n public static rangeContains(range: DataRange, value: number): boolean {\r\n return range.minRange <= value && value <= range.maxRange;\r\n }\r\n\r\n public static getBubbleOpacity(d: ScatterChartDataPoint, hasSelection: boolean): number {\r\n if (hasSelection && !d.selected) {\r\n return ScatterChart.DimmedBubbleOpacity;\r\n }\r\n return ScatterChart.DefaultBubbleOpacity;\r\n }\r\n\r\n public onClearSelection(): void {\r\n if (this.interactivityService)\r\n this.interactivityService.clearSelection();\r\n }\r\n\r\n public getSupportedCategoryAxisType(): string {\r\n return axisType.scalar;\r\n }\r\n\r\n public static sortBubbles(a: ScatterChartDataPoint, b: ScatterChartDataPoint): number {\r\n let diff = (b.radius.sizeMeasure.values[b.radius.index] - a.radius.sizeMeasure.values[a.radius.index]);\r\n if (diff !== 0)\r\n return diff;\r\n\r\n // Tie-break equal size bubbles using identity.\r\n return b.identity.getKey().localeCompare(a.identity.getKey());\r\n }\r\n }\r\n\r\n class SvgRenderer {\r\n private static DotClass: ClassAndSelector = createClassAndSelector('dot');\r\n private static MainGraphicsContext = createClassAndSelector('mainGraphicsContext');\r\n\r\n private mainGraphicsContext: D3.Selection;\r\n private mainGraphicsG: D3.Selection;\r\n private mainGraphicsBackgroundRect: D3.Selection;\r\n private labelGraphicsContext: D3.Selection;\r\n private isMobileChart: boolean;\r\n\r\n public init(element: D3.Selection, labelsContext: D3.Selection, isMobileChart: boolean): void {\r\n this.mainGraphicsG = element.append('g')\r\n .classed(SvgRenderer.MainGraphicsContext.class, true);\r\n\r\n this.isMobileChart = isMobileChart;\r\n if (isMobileChart) {\r\n // The backgroundRect catch user interactions when clicking/dragging on the background of the chart.\r\n this.mainGraphicsBackgroundRect = this.mainGraphicsG\r\n .append(\"rect\")\r\n .classed(\"backgroundRect\", true)\r\n .attr({ width: \"100%\", height: \"100%\" });\r\n }\r\n\r\n this.mainGraphicsContext = this.mainGraphicsG.append('svg');\r\n this.labelGraphicsContext = labelsContext;\r\n }\r\n\r\n public render(viewModel: ScatterChartViewModel, interactivityService: IInteractivityService): ScatterBehaviorOptions {\r\n let viewport = viewModel.viewport;\r\n\r\n this.mainGraphicsContext\r\n .attr({\r\n 'width': viewport.width,\r\n 'height': viewport.height\r\n });\r\n\r\n let scatterMarkers: D3.UpdateSelection;\r\n if (viewModel.drawBubbles) {\r\n scatterMarkers = this.drawScatterMarkers(viewModel);\r\n scatterMarkers.order();\r\n }\r\n else {\r\n scatterMarkers = this.drawScatterMarkers(viewModel);\r\n }\r\n\r\n TooltipManager.addTooltip(scatterMarkers, (tooltipEvent: TooltipEvent) => tooltipEvent.data.tooltipInfo);\r\n\r\n SVGUtil.flushAllD3TransitionsIfNeeded(viewModel.animationOptions);\r\n\r\n return <ScatterBehaviorOptions> {\r\n dataPointsSelection: scatterMarkers,\r\n data: viewModel.data,\r\n plotContext: this.mainGraphicsContext,\r\n };\r\n }\r\n\r\n public createTraceLineRenderer(viewModel: PlayChartViewModel<ScatterChartData, ScatterChartViewModel>): ScatterTraceLineRenderer {\r\n return new ScatterTraceLineRenderer(viewModel, this.mainGraphicsContext);\r\n }\r\n\r\n private drawScatterMarkers(viewModel: ScatterChartViewModel): D3.UpdateSelection {\r\n let data = viewModel.data;\r\n let xScale = viewModel.xAxisProperties.scale;\r\n let yScale = viewModel.yAxisProperties.scale;\r\n\r\n let markers = this.mainGraphicsContext.selectAll(SvgRenderer.DotClass.selector).data(data.dataPoints, (d: ScatterChartDataPoint) => d.identity.getKey());\r\n\r\n markers.enter().append('circle')\r\n .classed(SvgRenderer.DotClass.class, true)\r\n .style('opacity', 0) // Fade new bubbles into visibility\r\n .attr('r', 0);\r\n\r\n markers\r\n .style({\r\n 'stroke-opacity': (d: ScatterChartDataPoint) => (d.size != null && data.colorBorder) ? 1 : ScatterChart.getBubbleOpacity(d, viewModel.hasSelection),\r\n 'stroke-width': '1px',\r\n 'stroke': (d: ScatterChartDataPoint) => ScatterChart.getStrokeFill(d, data.colorBorder),\r\n 'fill': (d: ScatterChartDataPoint) => d.fill,\r\n 'fill-opacity': (d: ScatterChartDataPoint) => (d.size != null || viewModel.fillMarkers) ? ScatterChart.getBubbleOpacity(d, viewModel.hasSelection) : 0,\r\n })\r\n .transition()\r\n .ease(viewModel.easeType)\r\n .duration(viewModel.animationDuration)\r\n .style('opacity', 1) // Fill-opacity is used for selected / highlight changes, opacity is for enter/exit fadein/fadeout\r\n .attr({\r\n r: (d: ScatterChartDataPoint) => ScatterChart.getBubbleRadius(d.radius, data.sizeRange, viewModel.viewport),\r\n cx: d => xScale(d.x),\r\n cy: d => yScale(d.y),\r\n });\r\n\r\n markers\r\n .exit()\r\n .transition()\r\n .ease(viewModel.easeType)\r\n .duration(viewModel.animationDuration)\r\n .style('opacity', 0) // Fade out bubbles that are removed\r\n .attr('r', 0)\r\n .remove();\r\n\r\n return markers;\r\n }\r\n }\r\n\r\n module ScatterChartDataLabels {\r\n let validLabelPositions = [\r\n NewPointLabelPosition.Below,\r\n NewPointLabelPosition.Above,\r\n NewPointLabelPosition.Right,\r\n NewPointLabelPosition.Left,\r\n NewPointLabelPosition.BelowRight,\r\n NewPointLabelPosition.BelowLeft,\r\n NewPointLabelPosition.AboveRight,\r\n NewPointLabelPosition.AboveLeft\r\n ];\r\n\r\n /*\r\n * Represents standard Cartesian quadrant numbering:\r\n * 2 1\r\n * 3 4\r\n */\r\n export const enum QuadrantNumber {\r\n First,\r\n Second,\r\n Third,\r\n Fourth\r\n }\r\n\r\n export function createLabelDataPoints(viewModel: ScatterChartViewModel): LabelDataPoint[] {\r\n let xScale = viewModel.xAxisProperties.scale;\r\n let yScale = viewModel.yAxisProperties.scale;\r\n let sizeRange = viewModel.data.sizeRange;\r\n let labelDataPoints: LabelDataPoint[] = [];\r\n let dataPoints = viewModel.data.dataPoints;\r\n let labelSettings = viewModel.data.dataLabelsSettings;\r\n let preferredLabelsKeys = getPreferredLabelsKeys(viewModel);\r\n\r\n for (let dataPoint of dataPoints) {\r\n let text = dataPoint.category;\r\n\r\n let properties: TextProperties = {\r\n text: text,\r\n fontFamily: NewDataLabelUtils.LabelTextProperties.fontFamily,\r\n fontSize: PixelConverter.fromPoint(labelSettings.fontSize || NewDataLabelUtils.DefaultLabelFontSizeInPt),\r\n fontWeight: NewDataLabelUtils.LabelTextProperties.fontWeight,\r\n };\r\n let textWidth = TextMeasurementService.measureSvgTextWidth(properties);\r\n let textHeight = TextMeasurementService.estimateSvgTextHeight(properties);\r\n\r\n labelDataPoints.push({\r\n isPreferred: preferredLabelsKeys ? isLabelPreferred(dataPoint.identity.getKey(), preferredLabelsKeys) : false,\r\n text: text,\r\n textSize: {\r\n width: textWidth,\r\n height: textHeight,\r\n },\r\n outsideFill: labelSettings.labelColor ? labelSettings.labelColor : NewDataLabelUtils.defaultLabelColor,\r\n insideFill: NewDataLabelUtils.defaultInsideLabelColor,\r\n parentType: LabelDataPointParentType.Point,\r\n parentShape: {\r\n point: {\r\n x: xScale(dataPoint.x),\r\n y: yScale(dataPoint.y),\r\n },\r\n radius: ScatterChart.getBubbleRadius(dataPoint.radius, sizeRange, viewModel.viewport),\r\n validPositions: validLabelPositions,\r\n },\r\n identity: dataPoint.identity,\r\n fontSize: labelSettings.fontSize || NewDataLabelUtils.DefaultLabelFontSizeInPt,\r\n });\r\n }\r\n\r\n return labelDataPoints;\r\n }\r\n\r\n function getPreferredLabelsKeys(viewModel: ScatterChartViewModel): string[] {\r\n let width = viewModel.viewport.width;\r\n let height = viewModel.viewport.height;\r\n\r\n let visualCenter = new Point(width / 2, height / 2);\r\n let quadrantsCenters: Point[] = getQuadrantsCenters(width, height);\r\n\r\n return getCandidateLabels(visualCenter, quadrantsCenters, viewModel);\r\n }\r\n\r\n function getQuadrantsCenters(visualWidth: number, visualHeight: number): Point[] {\r\n let quadrantsCenters: Point[] = [];\r\n let quarterWidth = visualWidth / 4;\r\n let quarterHeight = visualHeight / 4;\r\n\r\n quadrantsCenters.push(new Point(quarterWidth, quarterHeight));\r\n quadrantsCenters.push(new Point(quarterWidth * 3, quarterHeight));\r\n quadrantsCenters.push(new Point(quarterWidth, quarterHeight * 3));\r\n quadrantsCenters.push(new Point(quarterWidth * 3, quarterHeight * 3));\r\n\r\n return quadrantsCenters;\r\n }\r\n\r\n function getCandidateLabels(\r\n visualCenter: Point,\r\n quadrantsCenters: Point[],\r\n viewModel: ScatterChartViewModel): string[] {\r\n let minDistances: number[] = [Number.MAX_VALUE, Number.MAX_VALUE, Number.MAX_VALUE, Number.MAX_VALUE];\r\n let ids: SelectionId[] = [];\r\n\r\n let xScale = viewModel.xAxisProperties.scale;\r\n let yScale = viewModel.yAxisProperties.scale;\r\n\r\n let distance: number;\r\n\r\n for (let dp of viewModel.data.dataPoints) {\r\n let x = xScale(dp.x);\r\n let y = yScale(dp.y);\r\n let quadrantNumber = getPointQuadrantNumber(x, y, visualCenter);\r\n if (viewModel.drawBubbles) {\r\n // Since the array is sorted by size the preferred label will be the first label in the quadrant\r\n if (!ids[quadrantNumber])\r\n ids[quadrantNumber] = dp.identity;\r\n }\r\n else {\r\n distance = getDistanceBetweenPoints(quadrantsCenters[quadrantNumber].x, quadrantsCenters[quadrantNumber].y, x, y);\r\n if (distance < minDistances[quadrantNumber]) {\r\n ids[quadrantNumber] = dp.identity;\r\n minDistances[quadrantNumber] = distance;\r\n }\r\n }\r\n\r\n }\r\n\r\n let preferredLabelsKeys: string[] = [];\r\n for (let id of ids) {\r\n if (id)\r\n preferredLabelsKeys.push(id.getKey());\r\n }\r\n\r\n return preferredLabelsKeys;\r\n }\r\n\r\n function getPointQuadrantNumber(x: number, y: number, centerPoint: Point): number {\r\n if (x > centerPoint.x && y <= centerPoint.y)\r\n return QuadrantNumber.First;\r\n if (x <= centerPoint.x && y <= centerPoint.y)\r\n return QuadrantNumber.Second;\r\n if (x <= centerPoint.x && y > centerPoint.y)\r\n return QuadrantNumber.Third;\r\n else\r\n return QuadrantNumber.Fourth;\r\n }\r\n\r\n function getDistanceBetweenPoints(x1: number, y1: number, x2: number, y2: number): number {\r\n return Math.sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));\r\n }\r\n\r\n function isLabelPreferred(key: string, preferredLabelsKeys: string[]) {\r\n for (let preferredLabel of preferredLabelsKeys) {\r\n if (key.localeCompare(preferredLabel) === 0)\r\n return true;\r\n }\r\n return false;\r\n }\r\n }\r\n\r\n class ScatterTraceLineRenderer implements ITraceLineRenderer {\r\n private static TraceLine: ClassAndSelector = createClassAndSelector('traceLine');\r\n private static TraceBubble: ClassAndSelector = createClassAndSelector('traceBubble');\r\n\r\n private viewModel: PlayChartViewModel<ScatterChartData, ScatterChartViewModel>;\r\n private element: D3.Selection;\r\n\r\n constructor(viewModel: PlayChartViewModel<ScatterChartData, ScatterChartViewModel>, element: D3.Selection) {\r\n this.viewModel = viewModel;\r\n this.element = element;\r\n }\r\n\r\n public remove() {\r\n this.element.selectAll(ScatterTraceLineRenderer.TraceLine.selector).remove();\r\n this.element.selectAll(ScatterTraceLineRenderer.TraceBubble.selector).remove();\r\n }\r\n\r\n public render(selectedPoints: SelectableDataPoint[], shouldAnimate: boolean): void {\r\n let viewModel = this.viewModel;\r\n let scatterViewModel = viewModel.viewModel;\r\n let seriesPoints: ScatterChartDataPoint[][] = [];\r\n\r\n if (!_.isEmpty(selectedPoints)) {\r\n let currentFrameIndex = viewModel.data.currentFrameIndex;\r\n\r\n // filter to the selected identity, only up to and including the current frame. Add frames during play.\r\n let hasBubbleAtCurrentFrame: boolean[] = [];\r\n for (var selectedIndex = 0, selectedLen = selectedPoints.length; selectedIndex < selectedLen; selectedIndex++) {\r\n seriesPoints[selectedIndex] = [];\r\n hasBubbleAtCurrentFrame[selectedIndex] = false;\r\n for (let frameIndex = 0, frameLen = viewModel.data.allViewModels.length; frameIndex < frameLen && frameIndex <= currentFrameIndex; frameIndex++) {\r\n let value = _.find(viewModel.data.allViewModels[frameIndex].dataPoints, (value, index) => {\r\n return value.identity.getKey() === selectedPoints[selectedIndex].identity.getKey();\r\n });\r\n\r\n if (value != null) {\r\n // TODO: Revisit this, we should be able to keep track without modifying Scatter's data points.\r\n (<PlayChartDataPoint>value).frameIndex = frameIndex;\r\n seriesPoints[selectedIndex].push(value);\r\n if (frameIndex === currentFrameIndex)\r\n hasBubbleAtCurrentFrame[selectedIndex] = true;\r\n }\r\n }\r\n }\r\n\r\n let xScale = scatterViewModel.xAxisProperties.scale;\r\n let yScale = scatterViewModel.yAxisProperties.scale;\r\n\r\n let line = d3.svg.line()\r\n .x((d: ScatterChartDataPoint) => xScale(d.x))\r\n .y((d: ScatterChartDataPoint) => yScale(d.y))\r\n .defined((d: ScatterChartDataPoint) => d.x !== null && d.y !== null);\r\n\r\n // Render Lines\r\n let traceLines = this.element.selectAll(ScatterTraceLineRenderer.TraceLine.selector)\r\n .data(selectedPoints, (sp: ScatterChartDataPoint) => sp.identity.getKey());\r\n\r\n traceLines.enter()\r\n .append('path')\r\n .classed(ScatterTraceLineRenderer.TraceLine.class, true);\r\n\r\n // prepare array of new/previous lengths\r\n // NOTE: can't use lambda because we need the \"this\" context to be the DOM Element associated with the .each()\r\n let previousLengths: number[] = [], newLengths: number[] = [];\r\n let reverse = false;\r\n traceLines.each(function (d, i) {\r\n let existingPath = (<SVGPathElement>this);\r\n let previousLength = existingPath.hasAttribute('d') ? existingPath.getTotalLength() : 0;\r\n previousLengths.push(previousLength);\r\n // create offline SVG for new path measurement\r\n let tempSvgPath = $('<svg><path></path></svg>');\r\n let tempPath = $('path', tempSvgPath);\r\n tempPath.attr('d', line(seriesPoints[i]));\r\n let newLength = seriesPoints[i].length > 0 ? (<SVGPathElement>tempPath.get()[0]).getTotalLength() : 0;\r\n newLengths.push(newLength);\r\n\r\n reverse = reverse || (newLength < previousLength);\r\n });\r\n\r\n // animate using stroke-dash* trick\r\n if (!reverse) {\r\n // growing line\r\n traceLines\r\n .style('stroke', (d: ScatterChartDataPoint) => ScatterChart.getStrokeFill(d, true))\r\n .attr({\r\n 'd': (d, i: number) => {\r\n return line(seriesPoints[i]);\r\n },\r\n 'stroke-dasharray': (d, i) => newLengths[i] + \" \" + newLengths[i],\r\n 'stroke-dashoffset': (d, i) => newLengths[i] - previousLengths[i],\r\n });\r\n if (shouldAnimate) {\r\n traceLines\r\n .transition()\r\n .ease('linear')\r\n .duration(PlayChart.FrameAnimationDuration)\r\n .attr('stroke-dashoffset', 0);\r\n }\r\n else {\r\n traceLines.attr('stroke-dashoffset', 0);\r\n }\r\n }\r\n else {\r\n // shrinking line\r\n if (shouldAnimate) {\r\n traceLines\r\n .transition()\r\n .ease('linear')\r\n .duration(PlayChart.FrameAnimationDuration)\r\n .attr('stroke-dashoffset', (d, i) => previousLengths[i] - newLengths[i])\r\n .transition()\r\n .ease('linear')\r\n .duration(1) // animate the shrink first, then update with new line properties\r\n .delay(PlayChart.FrameAnimationDuration)\r\n .style('stroke', (d: ScatterChartDataPoint) => ScatterChart.getStrokeFill(d, true))\r\n .attr({\r\n 'd': (d, i) => {\r\n return line(seriesPoints[i]);\r\n },\r\n 'stroke-dasharray': (d, i) => newLengths[i] + \" \" + newLengths[i],\r\n 'stroke-dashoffset': 0,\r\n });\r\n }\r\n else {\r\n traceLines\r\n .style('stroke', (d: ScatterChartDataPoint) => ScatterChart.getStrokeFill(d, true))\r\n .attr({\r\n 'd': (d, i) => {\r\n return line(seriesPoints[i]);\r\n },\r\n 'stroke-dasharray': (d, i) => newLengths[i] + \" \" + newLengths[i],\r\n 'stroke-dashoffset': 0,\r\n });\r\n }\r\n }\r\n\r\n traceLines.exit()\r\n .remove();\r\n\r\n // Render circles\r\n let circlePoints: ScatterChartDataPoint[] = [];\r\n for (let selectedIndex = 0; selectedIndex < seriesPoints.length; selectedIndex++) {\r\n let points = seriesPoints[selectedIndex];\r\n\r\n // slice to length-1 because we draw lines to the current bubble but we don't need to draw the current frame's bubble\r\n let newPoints = hasBubbleAtCurrentFrame[selectedIndex] ? points.slice(0, points.length - 1) : points;\r\n\r\n circlePoints = circlePoints.concat(newPoints);\r\n }\r\n\r\n let circles = this.element.selectAll(ScatterTraceLineRenderer.TraceBubble.selector)\r\n .data(circlePoints, (d: ScatterChartDataPoint) => d.identity.getKey() + d.x + d.y + d.size);\r\n\r\n circles.enter()\r\n .append('circle')\r\n .style('opacity', 0) //fade new bubbles into visibility\r\n .classed(ScatterTraceLineRenderer.TraceBubble.class, true);\r\n\r\n circles\r\n .attr('cx', (d: ScatterChartDataPoint) => xScale(d.x))\r\n .attr('cy', (d: ScatterChartDataPoint) => yScale(d.y))\r\n .attr('r', (d: ScatterChartDataPoint) => ScatterChart.getBubbleRadius(d.radius, (<ScatterChartData>viewModel.data.currentViewModel).sizeRange, viewModel.viewport))\r\n .style({\r\n 'stroke-opacity': (d: ScatterChartDataPoint) => ScatterChart.getBubbleOpacity(d, true),\r\n 'stroke-width': '1px',\r\n 'stroke': (d: ScatterChartDataPoint) => ScatterChart.getStrokeFill(d, viewModel.data.currentViewModel.colorBorder),\r\n 'fill': (d: ScatterChartDataPoint) => d.fill,\r\n // vary the opacity along the traceline from 0.20 to 0.80, with 0.85 left for the circle already drawn by scatterChart\r\n 'fill-opacity': (d: ScatterChartDataPoint) => d.size != null ? 0.20 + ((<PlayChartDataPoint>d).frameIndex / currentFrameIndex) * 0.60 : 0,\r\n })\r\n .transition()\r\n .ease('linear')\r\n .duration(PlayChart.FrameAnimationDuration)\r\n .style('opacity', 1);\r\n\r\n circles.exit()\r\n .transition()\r\n .ease('linear')\r\n .duration(PlayChart.FrameAnimationDuration)\r\n .style('opacity', 0) // fade exiting bubbles out\r\n .remove();\r\n\r\n TooltipManager.addTooltip(circles, (tooltipEvent: TooltipEvent) => tooltipEvent.data.tooltipInfo);\r\n\r\n // sort the z-order, smallest size on top\r\n circles.sort((d1: ScatterChartDataPoint, d2: ScatterChartDataPoint) => { return d2.size - d1.size; });\r\n }\r\n else {\r\n this.remove();\r\n }\r\n }\r\n }\r\n}\r\n","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n import createClassAndSelector = jsCommon.CssConstants.createClassAndSelector;\r\n\r\n export interface PlayConstructorOptions extends CartesianVisualConstructorOptions {\r\n }\r\n\r\n export interface PlayInitOptions extends CartesianVisualInitOptions {\r\n }\r\n \r\n export interface PlayChartDataPoint {\r\n frameIndex?: number;\r\n };\r\n\r\n export interface PlayChartData<T extends PlayableChartData> {\r\n frameKeys: string[];\r\n allViewModels: T[];\r\n currentViewModel: T;\r\n currentFrameIndex: number;\r\n labelData: PlayAxisTickLabelData;\r\n }\r\n\r\n export interface PlayChartViewModel<TData extends PlayableChartData, TViewModel> {\r\n data: PlayChartData<TData>;\r\n viewModel: TViewModel;\r\n viewport: IViewport;\r\n }\r\n\r\n // TODO: consider a template for the datapoint type <T> instead of any[]\r\n // I tried this an it is quite hard to express correctly with TypeScript.\r\n export interface PlayableChartData {\r\n dataPoints: any[];\r\n }\r\n\r\n interface PlayObjectProperties {\r\n currentFrameIndex?: number;\r\n }\r\n\r\n export interface PlayAxisTickLabelInfo {\r\n label: string;\r\n labelWidth: number;\r\n }\r\n\r\n export interface PlayAxisTickLabelData {\r\n labelInfo: PlayAxisTickLabelInfo[];\r\n anyWordBreaks: boolean;\r\n labelFieldName?: string;\r\n }\r\n\r\n export interface PlayChartRenderResult<TData extends PlayableChartData, TViewModel> {\r\n allDataPoints: SelectableDataPoint[];\r\n viewModel: PlayChartViewModel<TData, TViewModel>;\r\n }\r\n\r\n export interface PlayChartRenderFrameDelegate<T> {\r\n (data: T): void;\r\n }\r\n\r\n export interface PlayFrameInfo {\r\n label: string;\r\n column: DataViewMetadataColumn;\r\n }\r\n\r\n export interface VisualDataConverterDelegate<T> {\r\n (dataView: DataView, playFrameInfo?: PlayFrameInfo): T;\r\n }\r\n\r\n export interface ITraceLineRenderer {\r\n render(selectedPoints: SelectableDataPoint[], shouldAnimate: boolean): void;\r\n remove(): void;\r\n }\r\n\r\n export class PlayAxis<T extends PlayableChartData> {\r\n private element: JQuery;\r\n private svg: D3.Selection;\r\n\r\n private playData: PlayChartData<T>;\r\n private renderDelegate: PlayChartRenderFrameDelegate<T>;\r\n private isPlaying: boolean;\r\n private lastViewport: IViewport;\r\n\r\n // do not call converter() when we call persistProperties and a new update() happens\r\n // NOTE: calling persistProperties will still cause a render() call to come from cartesianChart\r\n // TODO: make persist properties only optionally trigger a new onDataChagned, as most charts don't want this (only slicer needs it)\r\n private ridiculousFlagForPersistProperties: boolean;\r\n\r\n private playControl: PlayControl;\r\n\r\n private host: IVisualHostServices;\r\n private interactivityService: IInteractivityService;\r\n private isMobileChart: boolean;\r\n\r\n private static PlayCallout = createClassAndSelector('play-callout');\r\n private static calloutOffsetMultiplier = 0.3;\r\n\r\n constructor(options: PlayConstructorOptions) {\r\n if (options) {\r\n this.interactivityService = options.interactivityService;\r\n }\r\n }\r\n\r\n public init(options: PlayInitOptions) {\r\n debug.assertValue(options, 'options');\r\n\r\n this.element = options.element;\r\n this.svg = options.svg;\r\n this.host = options.host;\r\n\r\n this.isMobileChart = options.interactivity && options.interactivity.isInteractiveLegend;\r\n\r\n if (this.interactivityService && !this.isMobileChart) {\r\n this.playControl = new PlayControl(this.element, (frameIndex: number) => this.moveToFrameAndRender(frameIndex));\r\n this.playControl.onPlay(() => this.play());\r\n }\r\n }\r\n\r\n public setData(dataView: DataView, visualConverter: VisualDataConverterDelegate<T>, onlyResized: boolean): PlayChartData<T> {\r\n if (dataView) {\r\n if (this.ridiculousFlagForPersistProperties && dataView.metadata) {\r\n // BUG FIX: customer feedback has been strong that we should always default to show the last frame.\r\n // This is essential for dashboard tiles to refresh properly.\r\n\r\n // Only copy frameIndex since it is the only property using persistProperties\r\n //let objectProps = getObjectProperties(dataView.metadata);\r\n //playData.currentFrameIndex = objectProps.currentFrameIndex;\r\n \r\n // Turn off the flag that was set by our persistProperties call\r\n this.ridiculousFlagForPersistProperties = false;\r\n return this.playData;\r\n }\r\n else if (dataView.matrix || dataView.categorical) {\r\n if (onlyResized)\r\n return this.playData;\r\n\r\n this.playData = PlayChart.converter<T>(dataView, visualConverter);\r\n }\r\n else {\r\n this.playData = PlayChart.getDefaultPlayData<T>();\r\n }\r\n }\r\n else {\r\n this.playData = PlayChart.getDefaultPlayData<T>();\r\n }\r\n\r\n // Next render should be a full one.\r\n this.lastViewport = undefined;\r\n\r\n return this.playData;\r\n }\r\n\r\n public render<TViewModel>(suppressAnimations: boolean, viewModel: TViewModel, viewport: IViewport, margin: IMargin): PlayChartRenderResult<T, TViewModel> {\r\n let playData = this.playData;\r\n\r\n let resized = !this.lastViewport || (this.lastViewport.height !== viewport.height || this.lastViewport.width !== viewport.width);\r\n this.lastViewport = viewport;\r\n\r\n if (resized)\r\n this.stop();\r\n\r\n if (!playData)\r\n return;\r\n\r\n let playViewModel: PlayChartViewModel<T, TViewModel> = {\r\n data: this.playData,\r\n viewModel: viewModel,\r\n viewport: viewport,\r\n };\r\n\r\n let hasSelection = false;\r\n if (this.interactivityService) {\r\n let data = <PlayableChartData>playData.currentViewModel;\r\n this.interactivityService.applySelectionStateToData(data.dataPoints);\r\n hasSelection = this.interactivityService.hasSelection();\r\n }\r\n\r\n let frameKeys = playData.frameKeys;\r\n let currentFrameIndex = playData.currentFrameIndex;\r\n let height = viewport.height;\r\n let plotAreaHeight = height - margin.top - margin.bottom;\r\n let width = viewport.width;\r\n let plotAreaWidth = width - margin.left - margin.right;\r\n\r\n if (this.playControl && resized) {\r\n this.playControl.rebuild(playData, viewport);\r\n }\r\n\r\n // update callout to current frame index\r\n let calloutDimension = Math.min(height, width * 1.3); //1.3 to compensate for tall, narrow-width viewport\r\n let fontSize = Math.max(12, Math.round(calloutDimension / 7));\r\n fontSize = Math.min(fontSize, 70);\r\n let textProperties = {\r\n fontSize: \"\" + fontSize,\r\n text: frameKeys[currentFrameIndex] || \"\",\r\n fontFamily: \"Segoe UI\",\r\n };\r\n let textHeight = TextMeasurementService.estimateSvgTextHeight(textProperties) - TextMeasurementService.estimateSvgTextBaselineDelta(textProperties);\r\n\r\n let calloutData: string[] = [];;\r\n if (currentFrameIndex < frameKeys.length && currentFrameIndex >= 0 && textHeight < plotAreaHeight)\r\n calloutData = [TextMeasurementService.getTailoredTextOrDefault(textProperties, plotAreaWidth - (2 * PlayAxis.calloutOffsetMultiplier * textHeight))];\r\n\r\n let callout = this.svg.selectAll(PlayAxis.PlayCallout.selector).data(calloutData);\r\n\r\n callout.enter()\r\n .append('text')\r\n .classed(PlayAxis.PlayCallout.class, true);\r\n\r\n callout\r\n .text((d: string) => d)\r\n .attr({\r\n x: plotAreaWidth - PlayAxis.calloutOffsetMultiplier * textHeight,\r\n y: () => textHeight,\r\n })\r\n .style({\r\n 'font-size': fontSize + 'px',\r\n 'text-anchor': 'end',\r\n });\r\n\r\n callout.exit().remove();\r\n\r\n let allDataPoints = playData.allViewModels.map((vm) => vm.dataPoints);\r\n let flatAllDataPoints = _.flatten<SelectableDataPoint>(allDataPoints);\r\n \r\n // NOTE: Return data points to keep track of current selected bubble even if it drops out for a few frames\r\n return {\r\n allDataPoints: flatAllDataPoints,\r\n viewModel: playViewModel,\r\n };\r\n }\r\n\r\n public play(): void {\r\n let playData = this.playData;\r\n\r\n if (this.isPlaying) {\r\n this.stop();\r\n }\r\n else if (this.playControl) {\r\n this.isPlaying = true;\r\n this.playControl.play();\r\n\r\n let indexToShow = Math.round(this.playControl.getCurrentIndex());\r\n if (indexToShow >= playData.allViewModels.length - 1) {\r\n playData.currentFrameIndex = -1;\r\n } else {\r\n playData.currentFrameIndex = indexToShow - 1;\r\n }\r\n\r\n this.playNextFrame(playData);\r\n }\r\n }\r\n\r\n private playNextFrame(playData: PlayChartData<T>, startFrame?: number, endFrame?: number): void {\r\n if (!this.isPlaying) {\r\n this.stop();\r\n return;\r\n }\r\n\r\n let nextFrame = playData.currentFrameIndex + 1;\r\n if (startFrame != null && endFrame != null) {\r\n nextFrame = Math.abs(endFrame - startFrame + 1);\r\n startFrame = nextFrame;\r\n }\r\n\r\n if (nextFrame < playData.allViewModels.length && nextFrame > -1) {\r\n playData.currentFrameIndex = nextFrame;\r\n playData.currentViewModel = playData.allViewModels[nextFrame];\r\n\r\n this.renderDelegate(playData.currentViewModel);\r\n this.playControl.setFrame(nextFrame);\r\n\r\n if (nextFrame < playData.allViewModels.length) {\r\n window.setTimeout(() => {\r\n this.playNextFrame(playData, startFrame, endFrame);\r\n }, PlayChart.FrameStepDuration);\r\n }\r\n } else {\r\n this.stop();\r\n }\r\n }\r\n\r\n public stop(): void {\r\n if (this.playControl)\r\n this.playControl.pause();\r\n this.isPlaying = false;\r\n }\r\n\r\n public remove(): void {\r\n if (this.playControl)\r\n this.playControl.remove();\r\n d3.selectAll(PlayAxis.PlayCallout.selector).remove();\r\n\r\n // TODO: remove any tracelines\r\n }\r\n\r\n public setRenderFunction(fn: PlayChartRenderFrameDelegate<T>): void {\r\n this.renderDelegate = fn;\r\n }\r\n\r\n public getCartesianExtents(existingExtents: CartesianExtents, getExtents: (T) => CartesianExtents): CartesianExtents {\r\n if (this.playData && this.playData.allViewModels && this.playData.allViewModels.length > 0) {\r\n return PlayChart.getMinMaxForAllFrames(this.playData, getExtents);\r\n }\r\n\r\n return existingExtents;\r\n }\r\n\r\n public setPlayControlPosition(playControlLayout: IRect): void {\r\n if (this.playControl) {\r\n let container = this.playControl.getContainer();\r\n container.css('left', playControlLayout.left ? playControlLayout.left + 'px' : '');\r\n container.css('top', playControlLayout.top ? playControlLayout.top + 'px' : '');\r\n // width is set elsewhere (calculateSliderWidth), where we check for playaxis tick label overflow.\r\n // height is constant\r\n }\r\n }\r\n\r\n private moveToFrameAndRender(frameIndex: number): void {\r\n let playData = this.playData;\r\n\r\n this.isPlaying = false;\r\n\r\n if (frameIndex < 0 || frameIndex === playData.currentFrameIndex || frameIndex >= playData.allViewModels.length)\r\n return;\r\n\r\n playData.currentFrameIndex = frameIndex;\r\n let data = playData.allViewModels[frameIndex];\r\n playData.currentViewModel = data;\r\n this.renderDelegate(data);\r\n }\r\n }\r\n\r\n class PlayControl {\r\n private playAxisContainer: JQuery;\r\n private playButton: JQuery;\r\n private playButtonCircle: JQuery;\r\n private slider: JQuery;\r\n private noUiSlider: noUiSlider.noUiSlider;\r\n private renderDelegate: (index: number) => void;\r\n\r\n private static SliderMarginLeft = 24 + 10 * 2; // playButton width + playButton margin * 2\r\n private static SliderMarginRight = 20;\r\n private static SliderMaxMargin = 100;\r\n private static PlayControlHeight = 80; //tuned for two rows of label text to be perfectly clipped before the third row. Dependent on current font sizes in noui-pips.css\r\n\r\n constructor(element: JQuery, renderDelegate: (index: number) => void) {\r\n this.createSliderDOM(element);\r\n this.renderDelegate = renderDelegate;\r\n }\r\n\r\n public getContainer(): JQuery {\r\n return this.playAxisContainer;\r\n }\r\n\r\n public remove(): void {\r\n if (this.playAxisContainer)\r\n this.playAxisContainer.remove();\r\n }\r\n\r\n public pause(): void {\r\n this.playButton.removeClass('pause').addClass('play');\r\n }\r\n\r\n public play(): void {\r\n this.playButton.removeClass('play').addClass('pause');\r\n }\r\n\r\n public getCurrentIndex(): number {\r\n // TODO: round() necessary?\r\n return Math.round(<number>this.noUiSlider.get());\r\n }\r\n\r\n public onPlay(handler: (eventObject: JQueryEventObject) => void): void {\r\n this.playButtonCircle.off('click');\r\n this.playButtonCircle.on('click', handler);\r\n }\r\n\r\n private static calculateSliderWidth(labelData: PlayAxisTickLabelData, viewportWidth: number): number {\r\n let leftMargin = 0, rightMargin = 0;\r\n if (!_.isEmpty(labelData.labelInfo)) {\r\n leftMargin = _.first(labelData.labelInfo).labelWidth / 2;\r\n rightMargin = _.last(labelData.labelInfo).labelWidth / 2;\r\n }\r\n\r\n let sliderLeftMargin = Math.max(leftMargin, PlayControl.SliderMarginLeft);\r\n let sliderRightMargin = Math.max(rightMargin, PlayControl.SliderMarginRight);\r\n \r\n sliderLeftMargin = Math.min(PlayControl.SliderMaxMargin, sliderLeftMargin);\r\n sliderRightMargin = Math.min(PlayControl.SliderMaxMargin, sliderRightMargin);\r\n \r\n let sliderWidth = Math.max((viewportWidth - sliderLeftMargin - sliderRightMargin), 1);\r\n return sliderWidth;\r\n }\r\n\r\n private createSliderDOM(element: JQuery): void {\r\n this.playAxisContainer = $('<div class=\"play-axis-container\"></div>')\r\n .appendTo(element)\r\n .css('height', PlayControl.PlayControlHeight + 'px');\r\n\r\n this.playButtonCircle = $('<div class=\"button-container\"></div>')\r\n .appendTo(this.playAxisContainer);\r\n\r\n this.playButton = $('<div class=\"play\"></div>')\r\n .appendTo(this.playButtonCircle);\r\n\r\n this.slider = $('<div class=\"sliders\"></div>')\r\n .appendTo(this.playAxisContainer);\r\n }\r\n\r\n public rebuild<T extends PlayableChartData>(playData: PlayChartData<T>, viewport: IViewport): void {\r\n let slider = this.slider;\r\n\r\n // re-create the slider\r\n if (this.noUiSlider)\r\n this.noUiSlider.destroy();\r\n\r\n let sliderElement = <noUiSlider.Instance>this.slider.get(0);\r\n\r\n let labelData = playData.labelData;\r\n let sliderWidth = PlayControl.calculateSliderWidth(labelData, viewport.width);\r\n this.slider.css('width', sliderWidth + 'px');\r\n\r\n let numFrames = playData.frameKeys.length;\r\n if (numFrames > 0) {\r\n let filterPipLabels = PlayChart.createPipsFilterFn(playData, sliderWidth, labelData);\r\n let lastIndex = numFrames - 1;\r\n noUiSlider.create(\r\n sliderElement,\r\n {\r\n step: 1,\r\n start: [playData.currentFrameIndex],\r\n range: {\r\n min: [0],\r\n max: [lastIndex],\r\n },\r\n pips: {\r\n mode: 'steps',\r\n density: Math.round(100 / numFrames), //only draw ticks where we have labels\r\n format: {\r\n to: (index) => playData.frameKeys[index],\r\n from: (value) => playData.frameKeys.indexOf(value),\r\n },\r\n filter: filterPipLabels,\r\n },\r\n }\r\n );\r\n }\r\n else {\r\n noUiSlider.create(\r\n sliderElement,\r\n {\r\n step: 1,\r\n start: [0],\r\n range: {\r\n min: [0],\r\n max: [0],\r\n },\r\n });\r\n }\r\n\r\n this.noUiSlider = sliderElement.noUiSlider;\r\n\r\n this.noUiSlider.on('slide', () => {\r\n let indexToShow = this.getCurrentIndex();\r\n this.renderDelegate(indexToShow);\r\n });\r\n\r\n // update the width and margin-left to center up each label\r\n $('.noUi-value', slider).each((idx, elem) => {\r\n // TODO: better way to get the label info for an element?\r\n let actualWidth = labelData.labelInfo.filter(l => l.label === $(elem).text())[0].labelWidth;\r\n $(elem).width(actualWidth);\r\n $(elem).css('margin-left', -actualWidth / 2 + 'px');\r\n });\r\n }\r\n\r\n public setFrame(frameIndex: number): void {\r\n this.noUiSlider.set([frameIndex]);\r\n };\r\n }\r\n\r\n export module PlayChart {\r\n // TODO: add speed control to property pane\r\n // NOTE: current noUiSlider speed is a CSS property of the class .noUi-state-tap, and also is hard-coded in noUiSlider.js. We'll need to add a new create param for transition time.\r\n // 800ms matches Silverlight frame speed\r\n export const FrameStepDuration = 800;\r\n export const FrameAnimationDuration = 750; //leave 50ms for the traceline animation - to avoid being cancelled. TODO: add a proper wait impl.\r\n\r\n export const ClassName = 'playChart';\r\n\r\n export function convertMatrixToCategorical(matrix: DataViewMatrix, frame: number): DataViewCategorical {\r\n\r\n let categorical: DataViewCategorical = {\r\n categories: [],\r\n values: powerbi.data.DataViewTransform.createValueColumns()\r\n };\r\n\r\n // If we only have a Play field, we don't have series or categories, then just return early\r\n if (matrix.rows.levels.length < 2 && matrix.columns.levels.length === 0)\r\n return categorical;\r\n\r\n let category: DataViewCategoryColumn = {\r\n source: matrix.rows.levels.length > 1 ? matrix.rows.levels[1].sources[0] : matrix.columns.levels[0].sources[0],\r\n values: [],\r\n objects: undefined,\r\n identity: []\r\n };\r\n\r\n // Matrix shape for Play:\r\n //\r\n // Series1 | Series2 | ...\r\n // --------- -------- \r\n // Play1 | Category1 | values | values\r\n // | Category2 | values | values\r\n // | ...\r\n // Play2 | Category1 | values | values\r\n // | Category2 | values | values\r\n // ...\r\n\r\n // we are guaranteed at least one row (it will be the Play field)\r\n let hasRowChildren = matrix.rows.root.children;\r\n let hasColChildren = matrix.columns.root.children;\r\n let hasSeries = matrix.columns.levels.length > 1 && hasColChildren;\r\n let hasPlayAndCategory = matrix.rows.levels.length > 1 && hasRowChildren;\r\n\r\n if (hasSeries && !hasPlayAndCategory) {\r\n // special case - series but no categories - use series as categories\r\n \r\n // set categories to undefined\r\n categorical.categories = undefined;\r\n\r\n let node = matrix.columns.root;\r\n categorical.values.source = matrix.columns.levels[0].sources[0];\r\n let columnLength = matrix.valueSources.length;\r\n for (let i = 0, len = node.children.length; i < len; i++) {\r\n // add all the value sources for each series\r\n let columnNode = node.children[i];\r\n for (let j = 0; j < columnLength; j++) {\r\n let source = <any>_.create(matrix.valueSources[j], { groupName: columnNode.value });\r\n let dataViewColumn: DataViewValueColumn = {\r\n identity: columnNode.identity,\r\n values: [],\r\n source: source\r\n };\r\n categorical.values.push(dataViewColumn);\r\n }\r\n }\r\n\r\n let innerValueNode = matrix.rows.root.children[frame];\r\n for (let i = 0, len = node.children.length; i < len; i++) {\r\n for (let j = 0; j < columnLength; j++) {\r\n categorical.values[i * columnLength + j].values.push(innerValueNode.values[i * columnLength + j].value);\r\n }\r\n }\r\n }\r\n else if (hasSeries && hasRowChildren) {\r\n // series and categories\r\n let node = matrix.rows.root.children[frame];\r\n \r\n // create the categories first\r\n for (let i = 0, len = node.children.length; i < len; i++) {\r\n let innerNode = node.children[i];\r\n category.identity.push(innerNode.identity);\r\n category.values.push(innerNode.value);\r\n }\r\n\r\n // now add the series info\r\n categorical.values.source = matrix.columns.levels[0].sources[0];\r\n let nodeQueue = [];\r\n let columnNode = matrix.columns.root;\r\n let seriesIndex = -1;\r\n while (columnNode) {\r\n if (columnNode.children && columnNode.children[0].children) {\r\n for (let j = 0, jlen = columnNode.children.length; j < jlen; j++) {\r\n // each of these is a \"series\"\r\n nodeQueue.push(columnNode.children[j]);\r\n }\r\n } else if (columnNode.children && node.children) {\r\n // Processing a single series under here, push all the value sources for every series.\r\n let columnLength = columnNode.children.length;\r\n for (let j = 0; j < columnLength; j++) {\r\n let source = <any>_.create(matrix.valueSources[j], { groupName: columnNode.value });\r\n let dataViewColumn: DataViewValueColumn = {\r\n identity: columnNode.identity,\r\n values: [],\r\n source: source,\r\n };\r\n categorical.values.push(dataViewColumn);\r\n }\r\n for (let i = 0, len = node.children.length; i < len; i++) {\r\n let innerNode = node.children[i];\r\n for (let j = 0; j < columnLength; j++) {\r\n categorical.values[seriesIndex * columnLength + j].values.push(innerNode.values[seriesIndex * columnLength + j].value);\r\n }\r\n }\r\n }\r\n\r\n if (nodeQueue.length > 0) {\r\n columnNode = nodeQueue[0];\r\n nodeQueue = nodeQueue.splice(1);\r\n seriesIndex++;\r\n } else\r\n columnNode = undefined;\r\n }\r\n }\r\n else if (hasPlayAndCategory) {\r\n // no series, just play and category\r\n let node = matrix.rows.root.children[frame];\r\n let measureLength = matrix.valueSources.length;\r\n for (let j = 0; j < measureLength; j++) {\r\n let dataViewColumn: DataViewValueColumn = {\r\n identity: undefined,\r\n values: [],\r\n source: matrix.valueSources[j]\r\n };\r\n categorical.values.push(dataViewColumn);\r\n }\r\n\r\n for (let i = 0, len = node.children.length; i < len; i++) {\r\n let innerNode = node.children[i];\r\n category.identity.push(innerNode.identity);\r\n category.values.push(innerNode.value);\r\n\r\n for (let j = 0; j < measureLength; j++) {\r\n categorical.values[j].values.push(innerNode.values[j].value);\r\n }\r\n }\r\n }\r\n\r\n if (categorical.categories)\r\n categorical.categories.push(category);\r\n\r\n return categorical;\r\n }\r\n\r\n function getObjectProperties(dataViewMetadata: DataViewMetadata, dataLabelsSettings?: PointDataLabelsSettings): PlayObjectProperties {\r\n let objectProperties: PlayObjectProperties = {};\r\n\r\n if (dataViewMetadata && dataViewMetadata.objects) {\r\n let objects = dataViewMetadata.objects;\r\n // TODO: remove?\r\n objectProperties.currentFrameIndex = DataViewObjects.getValue(objects, scatterChartProps.currentFrameIndex.index, null);\r\n }\r\n return objectProperties;\r\n }\r\n\r\n function buildDataViewForFrame(metadata: DataViewMetadata, categorical: DataViewCategorical): DataView {\r\n return {\r\n metadata: metadata,\r\n categorical: categorical,\r\n };\r\n }\r\n\r\n export function converter<T extends PlayableChartData>(dataView: DataView, visualConverter: VisualDataConverterDelegate<T>): PlayChartData<T> {\r\n let dataViewMetadata: DataViewMetadata = dataView.metadata;\r\n let dataLabelsSettings = dataLabelUtils.getDefaultPointLabelSettings();\r\n let objectProperties = getObjectProperties(dataViewMetadata, dataLabelsSettings);\r\n\r\n let allViewModels: T[] = [];\r\n let frameKeys: string[] = [];\r\n let convertedData: T = undefined;\r\n let matrixRows = dataView.matrix.rows;\r\n let rowChildrenLength = matrixRows.root.children ? matrixRows.root.children.length : 0;\r\n let keySourceColumn: DataViewMetadataColumn;\r\n if (dataView.matrix && rowChildrenLength > 0) {\r\n keySourceColumn = matrixRows.levels[0].sources[0];\r\n\r\n // TODO: this should probably defer to the visual which knows how to format the categories.\r\n let formatString = valueFormatter.getFormatString(keySourceColumn, scatterChartProps.general.formatString);\r\n let keyFormatter: IValueFormatter;\r\n if (keySourceColumn.type.numeric) {\r\n // use value range, not actual values\r\n let valueRange = Math.abs(matrixRows.root.children[rowChildrenLength - 1].value - matrixRows.root.children[0].value);\r\n keyFormatter = valueFormatter.create({\r\n format: formatString,\r\n value: valueRange,\r\n value2: 0,\r\n });\r\n } else {\r\n keyFormatter = valueFormatter.createDefaultFormatter(formatString, true);\r\n }\r\n\r\n for (let i = 0, len = rowChildrenLength; i < len; i++) {\r\n let key = matrixRows.root.children[i];\r\n let frameLabel = keyFormatter.format(key.value);\r\n frameKeys.push(frameLabel);\r\n\r\n let dataViewCategorical = convertMatrixToCategorical(dataView.matrix, i);\r\n let frameInfo = { label: frameLabel, column: keySourceColumn };\r\n convertedData = visualConverter(buildDataViewForFrame(dataView.metadata, dataViewCategorical), frameInfo);\r\n allViewModels.push(convertedData);\r\n }\r\n }\r\n else {\r\n let dataViewCategorical = convertMatrixToCategorical(dataView.matrix, 0);\r\n convertedData = visualConverter(buildDataViewForFrame(dataView.metadata, dataViewCategorical));\r\n allViewModels.push(convertedData);\r\n }\r\n \r\n // NOTE: currentViewModel is already set to the last frame\r\n objectProperties.currentFrameIndex = frameKeys.length - 1;\r\n\r\n return {\r\n allViewModels: allViewModels,\r\n currentViewModel: convertedData,\r\n frameKeys: frameKeys,\r\n currentFrameIndex: objectProperties.currentFrameIndex,\r\n labelData: getLabelData(frameKeys, keySourceColumn),\r\n };\r\n }\r\n\r\n export function getDefaultPlayData<T extends PlayableChartData>(): PlayChartData<T> {\r\n let defaultData: PlayChartData<T> = {\r\n frameKeys: [],\r\n allViewModels: [],\r\n currentFrameIndex: 0,\r\n currentViewModel: undefined,\r\n labelData: {\r\n anyWordBreaks: false,\r\n labelInfo: [],\r\n },\r\n };\r\n return defaultData;\r\n }\r\n\r\n export function getMinMaxForAllFrames<T extends PlayableChartData>(playData: PlayChartData<T>, getExtents: (T) => CartesianExtents): CartesianExtents {\r\n let extents: CartesianExtents = {\r\n minY: 0,\r\n maxY: 10,\r\n minX: 0,\r\n maxX: 10,\r\n };\r\n\r\n if (playData.allViewModels && playData.allViewModels.length > 0) {\r\n extents.minY = extents.minX = Number.MAX_VALUE;\r\n extents.maxY = extents.maxX = Number.MIN_VALUE;\r\n for (let i = 0, len = playData.allViewModels.length; i < len; i++) {\r\n let data = playData.allViewModels[i];\r\n let e = getExtents(data);\r\n\r\n // NOTE: D3.min/max handle undefined and NaN nicely, as opposed to Math.min/max\r\n extents = {\r\n minY: d3.min([e.minY, extents.minY]),\r\n maxY: d3.max([e.maxY, extents.maxY]),\r\n minX: d3.min([e.minX, extents.minX]),\r\n maxX: d3.max([e.maxX, extents.maxX]),\r\n };\r\n }\r\n }\r\n\r\n return extents;\r\n }\r\n\r\n function getLabelData(keys: string[], keyColumn?: DataViewMetadataColumn): PlayAxisTickLabelData {\r\n let textProperties: TextProperties = {\r\n fontFamily: 'wf_segoe-ui_normal',\r\n fontSize: jsCommon.PixelConverter.toString(14),\r\n };\r\n\r\n let labelInfo: PlayAxisTickLabelInfo[] = [];\r\n let anyWordBreaks = false;\r\n for (let key of keys) {\r\n let labelWidth = jsCommon.WordBreaker.getMaxWordWidth(key, TextMeasurementService.measureSvgTextWidth, textProperties);\r\n anyWordBreaks = anyWordBreaks || jsCommon.WordBreaker.hasBreakers(key) || (key).indexOf('-') > -1; // TODO: Why isn't this last part included in hasBreakers()?\r\n labelInfo.push({ label: key, labelWidth });\r\n }\r\n\r\n return {\r\n labelInfo: labelInfo,\r\n anyWordBreaks: anyWordBreaks,\r\n labelFieldName: keyColumn && keyColumn.displayName,\r\n };\r\n }\r\n\r\n export function createPipsFilterFn<T extends PlayableChartData>(playData: PlayChartData<T>, sliderWidth: number, labelData: PlayAxisTickLabelData): (index: any, type: any) => number {\r\n let maxLabelWidth = _.max(_.map(labelData.labelInfo, (l) => l.labelWidth));\r\n\r\n let pipSize = 1; //0=hide, 1=large, 2=small\r\n let skipMod = 1;\r\n let maxAllowedLabelWidth = playData.frameKeys.length > 1 ? sliderWidth / (playData.frameKeys.length - 1) : sliderWidth;\r\n let widthRatio = maxLabelWidth / maxAllowedLabelWidth;\r\n\r\n if (widthRatio > 1.25) {\r\n skipMod = Math.ceil(widthRatio);\r\n pipSize = 2;\r\n }\r\n else if (widthRatio > 1.0 || labelData.anyWordBreaks) {\r\n // wordbreak line wrapping is automatic, and we don't reserve enough space to show two lines of text with the larger font\r\n pipSize = 2;\r\n }\r\n\r\n let filterPipLabels = (index: any, type: any) => {\r\n // noUiSlider will word break / wrap to new lines, so max width is the max word length\r\n if (index % skipMod === 0) {\r\n return pipSize;\r\n }\r\n return 0; //hide\r\n };\r\n\r\n return filterPipLabels;\r\n }\r\n\r\n export function isDataViewPlayable(dataView: DataView, playRole: string = 'Play'): boolean {\r\n debug.assertValue(dataView, 'dataView');\r\n\r\n let categoryRoleIsPlay = dataView.categorical\r\n && dataView.categorical.categories\r\n && dataView.categorical.categories[0]\r\n && dataView.categorical.categories[0].source\r\n && dataView.categorical.categories[0].source.roles\r\n && dataView.categorical.categories[0].source.roles[playRole];\r\n\r\n return (dataView.matrix && (!dataView.categorical || categoryRoleIsPlay));\r\n }\r\n\r\n /** Render trace-lines for selected data points. */\r\n export function renderTraceLines(allDataPoints: SelectableDataPoint[], traceLineRenderer: ITraceLineRenderer, shouldAnimate: boolean): void {\r\n let selectedDataPoints = _.filter(allDataPoints, (d: SelectableDataPoint) => d.selected);\r\n selectedDataPoints = _.uniq(selectedDataPoints, (d: SelectableDataPoint) => d.identity.getKey());\r\n traceLineRenderer.render(selectedDataPoints, shouldAnimate);\r\n }\r\n }\r\n}\r\n","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n import PixelConverter = jsCommon.PixelConverter;\r\n import SlicerOrientation = slicerOrientation.Orientation;\r\n\r\n export interface CheckboxStyle {\r\n transform: string;\r\n 'transform-origin': string;\r\n 'font-size': string;\r\n }\r\n\r\n export class VerticalSlicerRenderer implements ISlicerRenderer, SlicerDefaultValueHandler {\r\n private element: JQuery;\r\n private currentViewport: IViewport;\r\n private dataView: DataView;\r\n private header: D3.Selection;\r\n private body: D3.Selection;\r\n private container: D3.Selection;\r\n private listView: IListView;\r\n private data: SlicerData;\r\n private settings: SlicerSettings;\r\n private behavior: IInteractiveBehavior;\r\n private hostServices: IVisualHostServices;\r\n private renderAsImage: (url: string) => boolean;\r\n private textProperties: TextProperties = {\r\n 'fontFamily': 'wf_segoe-ui_normal, helvetica, arial, sans-serif',\r\n 'fontSize': '14px',\r\n };\r\n private domHelper: SlicerUtil.DOMHelper;\r\n\r\n constructor(options?: SlicerConstructorOptions) {\r\n if (options) {\r\n this.behavior = options.behavior;\r\n }\r\n this.renderAsImage = $.noop;\r\n this.domHelper = options.domHelper;\r\n }\r\n\r\n // SlicerDefaultValueHandler\r\n public getDefaultValue(): data.SQConstantExpr {\r\n if (this.data && this.data.defaultValue)\r\n return <data.SQConstantExpr>this.data.defaultValue.value;\r\n }\r\n\r\n public getIdentityFields(): data.SQExpr[] {\r\n return SlicerUtil.DefaultValueHandler.getIdentityFields(this.dataView);\r\n }\r\n\r\n public init(slicerInitOptions: SlicerInitOptions): IInteractivityService {\r\n this.element = slicerInitOptions.visualInitOptions.element;\r\n this.currentViewport = slicerInitOptions.visualInitOptions.viewport;\r\n let hostServices = this.hostServices = slicerInitOptions.visualInitOptions.host;\r\n\r\n let settings = this.settings = Slicer.DefaultStyleProperties();\r\n let domHelper = this.domHelper;\r\n let bodyViewport = domHelper.getSlicerBodyViewport(this.currentViewport, settings, this.textProperties);\r\n let interactivityService: IInteractivityService;\r\n\r\n if (this.behavior)\r\n interactivityService = createInteractivityService(hostServices);\r\n\r\n let containerDiv = document.createElement('div');\r\n containerDiv.className = Selectors.Container.class;\r\n let container = this.container = d3.select(containerDiv);\r\n\r\n let header = domHelper.createSlicerHeader(hostServices);\r\n containerDiv.appendChild(header);\r\n this.header = d3.select(header);\r\n\r\n this.body = container.append('div').classed(SlicerUtil.Selectors.Body.class, true)\r\n .style({\r\n 'height': PixelConverter.toString(bodyViewport.height),\r\n 'width': PixelConverter.toString(bodyViewport.width),\r\n });\r\n\r\n let rowEnter = (rowSelection: D3.Selection) => {\r\n this.onEnterSelection(rowSelection);\r\n };\r\n\r\n let rowUpdate = (rowSelection: D3.Selection) => {\r\n this.onUpdateSelection(rowSelection, interactivityService);\r\n };\r\n\r\n let rowExit = (rowSelection: D3.Selection) => {\r\n rowSelection.remove();\r\n };\r\n\r\n let listViewOptions: ListViewOptions = {\r\n rowHeight: domHelper.getRowHeight(settings, this.textProperties),\r\n enter: rowEnter,\r\n exit: rowExit,\r\n update: rowUpdate,\r\n loadMoreData: () => slicerInitOptions.loadMoreData(),\r\n scrollEnabled: true,\r\n viewport: domHelper.getSlicerBodyViewport(this.currentViewport, settings, this.textProperties),\r\n baseContainer: this.body,\r\n };\r\n\r\n this.listView = ListViewFactory.createListView(listViewOptions);\r\n\r\n // Append container to DOM\r\n this.element.get(0).appendChild(containerDiv);\r\n\r\n return interactivityService;\r\n }\r\n\r\n public render(options: SlicerRenderOptions): void {\r\n let data = this.data = options.data;\r\n this.currentViewport = options.viewport;\r\n let dataView = options.dataView;\r\n\r\n if (!dataView || !data) {\r\n this.listView.empty();\r\n return;\r\n }\r\n\r\n this.dataView = dataView;\r\n this.renderAsImage = options.renderAsImage;\r\n let settings = this.settings = data.slicerSettings;\r\n let domHelper = this.domHelper;\r\n\r\n domHelper.updateSlicerBodyDimensions(this.currentViewport, this.body, settings);\r\n this.updateSelectionStyle();\r\n this.listView\r\n .viewport(domHelper.getSlicerBodyViewport(this.currentViewport, settings, this.textProperties))\r\n .rowHeight(domHelper.getRowHeight(settings, this.textProperties))\r\n .data(\r\n data.slicerDataPoints,\r\n (d: SlicerDataPoint) => $.inArray(d, data.slicerDataPoints),\r\n options.resetScrollbarPosition\r\n );\r\n }\r\n\r\n private updateSelectionStyle(): void {\r\n let settings = this.settings;\r\n this.container.classed('isMultiSelectEnabled', settings && settings.selection && !settings.selection.singleSelect);\r\n }\r\n\r\n private onEnterSelection(rowSelection: D3.Selection): void {\r\n let settings = this.settings;\r\n let listItemElement = rowSelection.append('li')\r\n .classed(Selectors.ItemContainer.class, true);\r\n\r\n let labelElement = listItemElement.append('div')\r\n .classed(Selectors.Input.class, true);\r\n\r\n labelElement.append('input')\r\n .attr('type', 'checkbox');\r\n\r\n labelElement.append('span')\r\n .classed(Selectors.Checkbox.class, true)\r\n .style(Styles.buildCheckboxStyle(settings));\r\n\r\n listItemElement.append('span')\r\n .classed(SlicerUtil.Selectors.LabelText.class, true)\r\n .style('font-size', PixelConverter.fromPoint(settings.slicerText.textSize));\r\n\r\n listItemElement.append('span')\r\n .classed(SlicerUtil.Selectors.CountText.class, true)\r\n .style('font-size', PixelConverter.fromPoint(settings.slicerText.textSize));\r\n }\r\n\r\n private onUpdateSelection(rowSelection: D3.Selection, interactivityService: IInteractivityService): void {\r\n let settings = this.settings;\r\n let data = this.data;\r\n if (data && settings) {\r\n // Style Slicer Header\r\n let domHelper = this.domHelper;\r\n domHelper.styleSlicerHeader(this.header, settings, data.categorySourceName);\r\n this.header.attr('title', data.categorySourceName);\r\n\r\n let labelText = rowSelection.selectAll(SlicerUtil.Selectors.LabelText.selector);\r\n labelText.html((d: SlicerDataPoint) => {\r\n if (!this.renderAsImage(d.value))\r\n return d.value;\r\n else\r\n return `<img src=\"${d.value}\" />`;\r\n });\r\n labelText.attr('title', (d: SlicerDataPoint) => d.tooltip);\r\n domHelper.setSlicerTextStyle(labelText, settings);\r\n\r\n let countText = rowSelection.selectAll(SlicerUtil.Selectors.CountText.selector);\r\n countText.text((d: SlicerDataPoint) => d.count);\r\n domHelper.setSlicerTextStyle(countText, settings);\r\n\r\n let slicerCheckbox = rowSelection.selectAll(Selectors.Input.selector).selectAll('span');\r\n slicerCheckbox.style(Styles.buildCheckboxStyle(settings));\r\n\r\n if (interactivityService && this.body) {\r\n let body = this.body.attr('width', this.currentViewport.width);\r\n let slicerItemContainers = body.selectAll(Selectors.ItemContainer.selector);\r\n let slicerItemLabels = body.selectAll(SlicerUtil.Selectors.LabelText.selector);\r\n let slicerItemInputs = body.selectAll(Selectors.Input.selector);\r\n let slicerClear = this.header.select(SlicerUtil.Selectors.Clear.selector);\r\n\r\n let behaviorOptions: VerticalSlicerBehaviorOptions = {\r\n dataPoints: data.slicerDataPoints,\r\n slicerContainer: this.container,\r\n itemContainers: slicerItemContainers,\r\n itemLabels: slicerItemLabels,\r\n itemInputs: slicerItemInputs,\r\n clear: slicerClear,\r\n interactivityService: interactivityService,\r\n settings: data.slicerSettings,\r\n };\r\n\r\n let orientationBehaviorOptions: SlicerOrientationBehaviorOptions = {\r\n behaviorOptions: behaviorOptions,\r\n orientation: SlicerOrientation.Vertical,\r\n };\r\n\r\n interactivityService.bind(\r\n data.slicerDataPoints,\r\n this.behavior,\r\n orientationBehaviorOptions,\r\n { overrideSelectionFromData: true, hasSelectionOverride: data.hasSelectionOverride, slicerDefaultValueHandler: this });\r\n SlicerWebBehavior.styleSlicerItems(rowSelection.select(Selectors.Input.selector), data.hasSelectionOverride, interactivityService.isSelectionModeInverted());\r\n }\r\n else {\r\n SlicerWebBehavior.styleSlicerItems(rowSelection.select(Selectors.Input.selector), false, false);\r\n }\r\n }\r\n }\r\n }\r\n\r\n module Selectors {\r\n import createClassAndSelector = jsCommon.CssConstants.createClassAndSelector;\r\n\r\n export const Container = createClassAndSelector('slicerContainer');\r\n export const ItemContainer = createClassAndSelector('slicerItemContainer');\r\n export const Input = createClassAndSelector('slicerCheckbox');\r\n export const Checkbox = createClassAndSelector('checkbox');\r\n }\r\n\r\n module CheckboxSprite {\r\n export const MinimumSize = 8;\r\n export const Size = 13;\r\n export const SizeRange = Size - MinimumSize;\r\n }\r\n\r\n /** Helper class for managing slicer styles. */\r\n module Styles {\r\n export function buildCheckboxStyle(settings: SlicerSettings): CheckboxStyle {\r\n let checkboxScale = getCheckboxScale(settings);\r\n let checkboxTransformOrigin = SVGUtil.transformOrigin('left', 'center');\r\n return {\r\n 'transform': checkboxScale,\r\n 'transform-origin': checkboxTransformOrigin,\r\n 'font-size': PixelConverter.fromPoint(settings.slicerText.textSize),\r\n };\r\n }\r\n\r\n function getCheckboxScale(settings: SlicerSettings): string {\r\n let scale = jsCommon.TextSizeDefaults.getScale(settings.slicerText.textSize);\r\n let size = (CheckboxSprite.MinimumSize + (CheckboxSprite.SizeRange * scale));\r\n let relativeZoom = size / CheckboxSprite.Size;\r\n\r\n let rounded = powerbi.Double.toIncrement(relativeZoom, 0.05);\r\n\r\n return SVGUtil.scale(rounded);\r\n }\r\n\r\n }\r\n}\r\n","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n import PixelConverter = jsCommon.PixelConverter;\r\n import SlicerOrientation = slicerOrientation.Orientation;\r\n\r\n const ItemWidthSampleSize = 50;\r\n const MinTextWidth = 80;\r\n const LoadMoreDataThreshold = 0.8; // The value indicates the percentage of data already shown that triggers a loadMoreData call.\r\n const DefaultStyleProperties = {\r\n labelText: {\r\n marginRight: 2,\r\n paddingLeft: 8,\r\n paddingRight: 8,\r\n },\r\n };\r\n\r\n export class HorizontalSlicerRenderer implements ISlicerRenderer, SlicerDefaultValueHandler {\r\n private element: JQuery;\r\n private currentViewport: IViewport;\r\n private data: SlicerData;\r\n private interactivityService: IInteractivityService;\r\n private behavior: IInteractiveBehavior;\r\n private hostServices: IVisualHostServices;\r\n private dataView: DataView;\r\n private container: D3.Selection;\r\n private header: D3.Selection;\r\n private body: D3.Selection;\r\n private bodyViewport: IViewport;\r\n private itemsContainer: D3.Selection;\r\n private rightNavigationArrow: D3.Selection;\r\n private leftNavigationArrow: D3.Selection;\r\n private dataStartIndex: number;\r\n private itemsToDisplay: number;\r\n private textProperties: TextProperties = {\r\n fontFamily: 'wf_segoe-ui_normal',\r\n fontSize: '14px'\r\n };\r\n private maxItemWidth: number;\r\n private totalItemWidth: number;\r\n private loadMoreData: () => void;\r\n private domHelper: SlicerUtil.DOMHelper;\r\n\r\n constructor(options?: SlicerConstructorOptions) {\r\n if (options) {\r\n this.behavior = options.behavior;\r\n }\r\n this.domHelper = options.domHelper;\r\n this.dataStartIndex = 0;\r\n }\r\n\r\n // SlicerDefaultValueHandler\r\n public getDefaultValue(): data.SQConstantExpr {\r\n if (this.data && this.data.defaultValue)\r\n return <data.SQConstantExpr>this.data.defaultValue.value;\r\n }\r\n\r\n public getIdentityFields(): data.SQExpr[] {\r\n return SlicerUtil.DefaultValueHandler.getIdentityFields(this.dataView);\r\n }\r\n\r\n public init(slicerInitOptions: SlicerInitOptions): IInteractivityService {\r\n this.element = slicerInitOptions.visualInitOptions.element;\r\n this.currentViewport = slicerInitOptions.visualInitOptions.viewport;\r\n let hostServices = this.hostServices = slicerInitOptions.visualInitOptions.host;\r\n\r\n if (this.behavior) {\r\n this.interactivityService = createInteractivityService(hostServices);\r\n }\r\n this.loadMoreData = () => slicerInitOptions.loadMoreData();\r\n\r\n let containerDiv = document.createElement('div');\r\n containerDiv.className = Selectors.container.class;\r\n let container: D3.Selection = this.container = d3.select(containerDiv);\r\n\r\n let header = this.domHelper.createSlicerHeader(this.hostServices);\r\n containerDiv.appendChild(header);\r\n this.header = d3.select(header);\r\n\r\n let body = this.body = container.append('div').classed(SlicerUtil.Selectors.Body.class + \" \" + Selectors.FlexDisplay.class, true);\r\n\r\n this.leftNavigationArrow = body.append(\"button\")\r\n .classed(Selectors.NavigationArrow.class + \" \" + Selectors.LeftNavigationArrow.class, true);\r\n\r\n this.itemsContainer = body.append(\"div\")\r\n .classed(Selectors.ItemsContainer.class + \" \" + Selectors.FlexDisplay.class, true);\r\n\r\n this.rightNavigationArrow = body.append(\"button\")\r\n .classed(Selectors.NavigationArrow.class + \" \" + Selectors.RightNavigationArrow.class, true);\r\n\r\n // Append container to DOM\r\n this.element.get(0).appendChild(containerDiv);\r\n\r\n this.bindNavigationEvents();\r\n\r\n return this.interactivityService;\r\n }\r\n\r\n public render(options: SlicerRenderOptions): void {\r\n let data = options.data;\r\n let dataView = options.dataView;\r\n\r\n if (!dataView || !data) {\r\n this.itemsContainer.selectAll(\"*\").remove();\r\n return;\r\n }\r\n\r\n this.data = data;\r\n this.dataView = dataView;\r\n let resized = this.currentViewport && options.viewport\r\n && (this.currentViewport.height !== options.viewport.height || this.currentViewport.width !== options.viewport.width);\r\n if (!(this.isMaxWidthCalculated() && resized)) {\r\n // Max width calculation is not required during resize, but required on data changes like changes to formatting properties fontSize, outline, outline weight, etc...\r\n // So calculating only on data updates\r\n this.calculateAndSetMaxItemWidth();\r\n this.calculateAndSetTotalItemWidth();\r\n }\r\n\r\n this.currentViewport = options.viewport;\r\n this.updateStyle();\r\n let availableWidthForItemsContainer = this.element.find(Selectors.ItemsContainer.selector).width();\r\n this.itemsToDisplay = this.getNumberOfItemsToDisplay(availableWidthForItemsContainer);\r\n if (this.itemsToDisplay === 0)\r\n return;\r\n\r\n this.renderCore();\r\n }\r\n\r\n private renderCore(): void {\r\n let data = this.data;\r\n if (!data || !data.slicerDataPoints)\r\n return;\r\n\r\n this.normalizePosition(data.slicerDataPoints);\r\n\r\n let itemsToDisplay = this.itemsToDisplay;\r\n let dataStartIndex = this.dataStartIndex;\r\n // Update Navigation Arrows\r\n this.container.classed(Selectors.CanScrollRight.class, dataStartIndex + this.itemsToDisplay <= data.slicerDataPoints.length - 1);\r\n this.container.classed(Selectors.CanScrollLeft.class, dataStartIndex > 0);\r\n\r\n // Manipulate DOM\r\n this.renderItems(data.slicerSettings);\r\n\r\n // Bind Interactivity Service\r\n this.bindInteractivityService();\r\n\r\n // Load More Data\r\n if (dataStartIndex + itemsToDisplay >= data.slicerDataPoints.length * LoadMoreDataThreshold) {\r\n this.loadMoreData();\r\n }\r\n }\r\n\r\n private updateStyle(): void {\r\n let viewport = this.currentViewport;\r\n let data = this.data;\r\n let defaultSettings: SlicerSettings = data.slicerSettings;\r\n let domHelper = this.domHelper;\r\n\r\n this.container\r\n .classed(Selectors.MultiSelectEnabled.class, !defaultSettings.selection.singleSelect)\r\n .style({\r\n \"width\": PixelConverter.toString(viewport.width),\r\n \"height\": PixelConverter.toString(viewport.height),\r\n });\r\n\r\n // Style Slicer Header\r\n domHelper.styleSlicerHeader(this.header, defaultSettings, data.categorySourceName);\r\n let headerTextProperties = domHelper.getHeaderTextProperties(defaultSettings);\r\n this.header.attr('title', data.categorySourceName);\r\n \r\n // Update body width and height\r\n let bodyViewport = this.bodyViewport = domHelper.getSlicerBodyViewport(viewport, defaultSettings, headerTextProperties);\r\n this.body.style({\r\n \"height\": PixelConverter.toString(bodyViewport.height),\r\n \"width\": PixelConverter.toString(bodyViewport.width),\r\n });\r\n }\r\n\r\n private renderItems(defaultSettings: SlicerSettings): void {\r\n let itemsToDisplay = this.itemsToDisplay;\r\n debug.assert(itemsToDisplay > 0, 'items to display should be greater than zero');\r\n let dataStartIndex = this.dataStartIndex;\r\n let materializedDataPoints = this.data.slicerDataPoints.slice(dataStartIndex, dataStartIndex + itemsToDisplay);\r\n let items = this.itemsContainer\r\n .selectAll(SlicerUtil.Selectors.LabelText.selector)\r\n .data(materializedDataPoints, (d: SlicerDataPoint) => _.indexOf(this.data.slicerDataPoints, d));\r\n\r\n items\r\n .enter()\r\n .append(\"div\")\r\n .classed(SlicerUtil.Selectors.LabelText.class + \" \" + Selectors.FlexDisplay.class, true);\r\n\r\n items.order();\r\n\r\n items\r\n .style({\r\n \"font-family\": this.textProperties.fontFamily,\r\n \"padding-left\": PixelConverter.toString(DefaultStyleProperties.labelText.paddingLeft),\r\n \"padding-right\": PixelConverter.toString(DefaultStyleProperties.labelText.paddingRight),\r\n \"margin-right\": (d: SlicerDataPoint, i) => this.isLastRowItem(i, itemsToDisplay) ? \"0px\" : PixelConverter.toString(DefaultStyleProperties.labelText.marginRight),\r\n });\r\n\r\n // Default style settings from formatting pane settings\r\n this.domHelper.setSlicerTextStyle(items, defaultSettings);\r\n\r\n items.exit().remove();\r\n\r\n window.setTimeout(() => {\r\n items\r\n .attr(\"title\", (d: SlicerDataPoint) => d.tooltip)\r\n .text((d: SlicerDataPoint) => d.value);\r\n // Wrap long text into multiple columns based on height availbale\r\n let labels = this.element.find(SlicerUtil.Selectors.LabelText.selector);\r\n let item = labels.first();\r\n let itemWidth = item.width();\r\n let itemHeight = item.height();\r\n labels.each((i, element) => {\r\n TextMeasurementService.wordBreakOverflowingText(element, itemWidth, itemHeight);\r\n });\r\n });\r\n }\r\n\r\n private bindInteractivityService(): void {\r\n if (this.interactivityService && this.body) {\r\n let body = this.body;\r\n let itemsContainer = body.selectAll(Selectors.ItemsContainer.selector);\r\n let itemLabels = body.selectAll(SlicerUtil.Selectors.LabelText.selector);\r\n let clear = this.header.select(SlicerUtil.Selectors.Clear.selector);\r\n let data = this.data;\r\n\r\n let behaviorOptions: HorizontalSlicerBehaviorOptions = {\r\n dataPoints: data.slicerDataPoints,\r\n slicerContainer: this.container,\r\n itemsContainer: itemsContainer,\r\n itemLabels: itemLabels,\r\n clear: clear,\r\n interactivityService: this.interactivityService,\r\n settings: data.slicerSettings,\r\n };\r\n\r\n let orientationBehaviorOptions: SlicerOrientationBehaviorOptions = {\r\n behaviorOptions: behaviorOptions,\r\n orientation: SlicerOrientation.Horizontal,\r\n };\r\n\r\n this.interactivityService.bind(data.slicerDataPoints, this.behavior, orientationBehaviorOptions, { overrideSelectionFromData: true, hasSelectionOverride: data.hasSelectionOverride });\r\n SlicerWebBehavior.styleSlicerItems(this.itemsContainer.selectAll(SlicerUtil.Selectors.LabelText.selector), this.interactivityService.hasSelection(), this.interactivityService.isSelectionModeInverted());\r\n }\r\n else {\r\n SlicerWebBehavior.styleSlicerItems(this.itemsContainer.selectAll(SlicerUtil.Selectors.LabelText.selector), false, false);\r\n }\r\n }\r\n\r\n private normalizePosition(points: SlicerDataPoint[]): void {\r\n let dataStartIndex = this.dataStartIndex;\r\n // if dataStartIndex >= points.length\r\n dataStartIndex = Math.min(dataStartIndex, points.length - 1);\r\n\r\n // if dataStartIndex < 0 \r\n this.dataStartIndex = Math.max(dataStartIndex, 0);\r\n }\r\n\r\n private bindNavigationEvents(): void {\r\n this.registerMouseWheelScrollEvents();\r\n this.registerMouseClickEvents();\r\n }\r\n\r\n private registerMouseClickEvents(): void {\r\n let rightNavigationArrow = this.container.selectAll(Selectors.RightNavigationArrow.selector);\r\n let leftNavigationArrow = this.container.selectAll(Selectors.LeftNavigationArrow.selector);\r\n\r\n rightNavigationArrow\r\n .on(\"click\", () => {\r\n this.scrollRight();\r\n });\r\n\r\n leftNavigationArrow\r\n .on(\"click\", () => {\r\n this.scrollLeft();\r\n });\r\n }\r\n\r\n // Register for mouse wheel scroll events\r\n private registerMouseWheelScrollEvents(): void {\r\n let scrollableElement = this.body.node();\r\n\r\n scrollableElement.addEventListener(\"mousewheel\", (e) => {\r\n this.onMouseWheel((<MouseWheelEvent>e).wheelDelta);\r\n });\r\n\r\n scrollableElement.addEventListener(\"DOMMouseScroll\", (e) => {\r\n this.onMouseWheel((<MouseWheelEvent>e).detail);\r\n });\r\n }\r\n\r\n private onMouseWheel(wheelDelta: number): void {\r\n if (wheelDelta < 0) {\r\n this.scrollRight();\r\n }\r\n else if (wheelDelta > 0) {\r\n this.scrollLeft();\r\n }\r\n }\r\n\r\n /* If there is only one item being displayed, we show the next item when navigation arrows are clicked \r\n * But when there are more than 1 item, n-1 items are shown say we have 10 items in total , in initial page if we show 1 to 5 items when right button is clicked we will show items from 5 to 10\r\n */\r\n private scrollRight(): void {\r\n let itemsToDisplay = this.itemsToDisplay;\r\n let startIndex = this.dataStartIndex;\r\n let dataPointsLength = this.data.slicerDataPoints.length;\r\n let lastItemIndex = dataPointsLength - 1;\r\n\r\n // If it is the last page stay on the same page and don't navigate\r\n if (itemsToDisplay + startIndex > lastItemIndex) {\r\n return;\r\n }\r\n\r\n if (itemsToDisplay === 1) {\r\n startIndex += itemsToDisplay;\r\n }\r\n else {\r\n startIndex += itemsToDisplay - 1;\r\n }\r\n\r\n // Adjust the startIndex to show last n items if startIndex + itemsToDisplay is greater than total datapoints\r\n if (itemsToDisplay + startIndex > lastItemIndex) {\r\n startIndex = lastItemIndex - itemsToDisplay + 1;\r\n }\r\n\r\n this.dataStartIndex = startIndex;\r\n this.renderCore();\r\n }\r\n\r\n /* If there is only one item being displayed, we show the next item when navigation arrows are clicked \r\n * But when there are more than 1 item, n-1 items are shown\r\n */\r\n private scrollLeft(): void {\r\n let itemsToDisplay = this.itemsToDisplay;\r\n let startIndex = this.dataStartIndex;\r\n let firstItemIndex = 0; \r\n // If it is the first page stay on the same page and don't navigate\r\n if (startIndex === 0) {\r\n return;\r\n } \r\n\r\n // If there is only item shown when left navigation button is clicked we want to navigate back to show previous item\r\n if (itemsToDisplay === 1) {\r\n startIndex -= itemsToDisplay;\r\n }\r\n\r\n if (startIndex - itemsToDisplay < firstItemIndex) {\r\n startIndex = firstItemIndex;\r\n }\r\n else {\r\n startIndex = startIndex - itemsToDisplay + 1;\r\n }\r\n this.dataStartIndex = startIndex;\r\n this.renderCore();\r\n }\r\n\r\n private isLastRowItem(fieldIndex: number, columnsToDisplay: number): boolean {\r\n return fieldIndex === columnsToDisplay - 1;\r\n }\r\n\r\n private getScaledTextWidth(textSize: number): number {\r\n return (textSize / jsCommon.TextSizeDefaults.TextSizeMin) * MinTextWidth;\r\n }\r\n\r\n private isMaxWidthCalculated(): boolean {\r\n return this.maxItemWidth !== undefined;\r\n }\r\n\r\n // Sampling a subset of total datapoints to calculate max item width\r\n private calculateAndSetMaxItemWidth(): void { \r\n let dataPointsLength: number = this.getDataPointsCount();\r\n let maxItemWidth = 0;\r\n if (dataPointsLength === 0) {\r\n this.maxItemWidth = maxItemWidth;\r\n return;\r\n }\r\n let data = this.data;\r\n let dataPoints = data.slicerDataPoints;\r\n let sampleSize = Math.min(dataPointsLength, ItemWidthSampleSize);\r\n let properties = jQuery.extend(true, {}, this.textProperties);\r\n let textSize = data.slicerSettings.slicerText.textSize; \r\n // Update text properties from formatting pane values\r\n properties.fontSize = PixelConverter.fromPoint(textSize);\r\n let getMaxWordWidth = jsCommon.WordBreaker.getMaxWordWidth;\r\n\r\n for (let i = 0; i < sampleSize; i++) {\r\n let itemText = dataPoints[i].value;\r\n properties.text = itemText;\r\n maxItemWidth = Math.max(maxItemWidth, getMaxWordWidth(itemText, TextMeasurementService.measureSvgTextWidth, properties));\r\n }\r\n\r\n this.maxItemWidth = Math.min(maxItemWidth, this.getScaledTextWidth(textSize));\r\n }\r\n\r\n private calculateAndSetTotalItemWidth(): void {\r\n let data = this.data;\r\n let itemPadding = DefaultStyleProperties.labelText.paddingLeft + DefaultStyleProperties.labelText.paddingRight + DefaultStyleProperties.labelText.marginRight;\r\n let borderWidth = this.domHelper.getRowsOutlineWidth(data.slicerSettings.slicerText.outline, data.slicerSettings.general.outlineWeight);\r\n this.totalItemWidth = this.maxItemWidth + itemPadding + borderWidth;\r\n }\r\n\r\n private getNumberOfItemsToDisplay(widthAvailable: number): number {\r\n let totalItemWidth = this.totalItemWidth;\r\n if (totalItemWidth === 0)\r\n return 0;\r\n\r\n let dataPointsLength = this.getDataPointsCount();\r\n let numberOfItems = Math.min(dataPointsLength, Math.round(widthAvailable / totalItemWidth));\r\n\r\n // Show atleast 1 item by default \r\n return Math.max(numberOfItems, 1);\r\n\r\n }\r\n\r\n private getDataPointsCount(): number {\r\n return _.size(this.data.slicerDataPoints);\r\n }\r\n }\r\n\r\n module Selectors {\r\n import createClassAndSelector = jsCommon.CssConstants.createClassAndSelector;\r\n\r\n export const container = createClassAndSelector('horizontalSlicerContainer');\r\n export const ItemsContainer = createClassAndSelector('slicerItemsContainer');\r\n export const NavigationArrow = createClassAndSelector('navigationArrow');\r\n export const LeftNavigationArrow = createClassAndSelector('left');\r\n export const RightNavigationArrow = createClassAndSelector('right');\r\n export const MultiSelectEnabled = createClassAndSelector('isMultiSelectEnabled');\r\n export const FlexDisplay = createClassAndSelector('flexDisplay');\r\n export const CanScrollRight = createClassAndSelector('canScrollRight');\r\n export const CanScrollLeft = createClassAndSelector('canScrollLeft');\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n import DisplayNameKeys = SlicerUtil.DisplayNameKeys;\r\n import DOMHelper = SlicerUtil.DOMHelper;\r\n import SettingsHelper = SlicerUtil.SettingsHelper;\r\n import SlicerOrientation = slicerOrientation.Orientation;\r\n\r\n export interface SlicerDefaultValueHandler {\r\n getDefaultValue(): data.SQConstantExpr;\r\n getIdentityFields(): data.SQExpr[];\r\n }\r\n\r\n export interface SlicerConstructorOptions {\r\n domHelper?: DOMHelper;\r\n behavior?: IInteractiveBehavior;\r\n }\r\n\r\n export interface ISlicerRenderer {\r\n init(options: SlicerInitOptions): IInteractivityService;\r\n render(options: SlicerRenderOptions): void;\r\n }\r\n\r\n export interface SlicerRenderOptions {\r\n dataView: DataView;\r\n data: SlicerData;\r\n viewport: IViewport;\r\n renderAsImage: (url: string) => boolean;\r\n resetScrollbarPosition?: boolean;\r\n }\r\n\r\n export interface SlicerData {\r\n categorySourceName: string;\r\n slicerDataPoints: SlicerDataPoint[];\r\n slicerSettings: SlicerSettings;\r\n hasSelectionOverride?: boolean;\r\n defaultValue?: DefaultValueDefinition;\r\n }\r\n\r\n export interface SlicerDataPoint extends SelectableDataPoint {\r\n value: string;\r\n tooltip: string;\r\n isSelectAllDataPoint?: boolean;\r\n count: number;\r\n }\r\n\r\n export interface SlicerSettings {\r\n general: {\r\n outlineColor: string;\r\n outlineWeight: number;\r\n orientation: SlicerOrientation;\r\n };\r\n header: {\r\n borderBottomWidth: number;\r\n show: boolean;\r\n outline: string;\r\n fontColor: string;\r\n background?: string;\r\n textSize: number;\r\n };\r\n slicerText: {\r\n color: string;\r\n outline: string;\r\n background?: string;\r\n textSize: number;\r\n };\r\n selection: {\r\n selectAllCheckboxEnabled: boolean;\r\n singleSelect: boolean;\r\n };\r\n }\r\n\r\n export interface SlicerInitOptions {\r\n visualInitOptions: VisualInitOptions;\r\n loadMoreData: () => void;\r\n }\r\n\r\n export class Slicer implements IVisual {\r\n private element: JQuery;\r\n private currentViewport: IViewport;\r\n private dataView: DataView;\r\n private slicerData: SlicerData;\r\n private settings: SlicerSettings;\r\n private interactivityService: IInteractivityService;\r\n private behavior: IInteractiveBehavior;\r\n private hostServices: IVisualHostServices;\r\n private slicerRenderer: ISlicerRenderer;\r\n private slicerOrientation: SlicerOrientation;\r\n private waitingForData: boolean;\r\n private renderAsImage: (url: string) => boolean;\r\n private domHelper: DOMHelper;\r\n private initOptions: VisualInitOptions;\r\n public static DefaultStyleProperties(): SlicerSettings {\r\n return {\r\n general: {\r\n outlineColor: '#808080',\r\n outlineWeight: 1,\r\n orientation: SlicerOrientation.Vertical,\r\n },\r\n header: {\r\n borderBottomWidth: 1,\r\n show: true,\r\n outline: 'BottomOnly',\r\n fontColor: '#000000',\r\n textSize: 10,\r\n },\r\n slicerText: {\r\n color: '#666666',\r\n outline: 'None',\r\n textSize: 10,\r\n },\r\n selection: {\r\n selectAllCheckboxEnabled: false,\r\n singleSelect: true,\r\n },\r\n };\r\n }\r\n\r\n constructor(options?: SlicerConstructorOptions) {\r\n if (options) {\r\n this.behavior = options.behavior;\r\n }\r\n this.domHelper = new DOMHelper();\r\n }\r\n\r\n public init(options: VisualInitOptions): void {\r\n this.initOptions = options;\r\n this.element = options.element;\r\n this.currentViewport = options.viewport;\r\n this.hostServices = options.host;\r\n let settings = this.settings = Slicer.DefaultStyleProperties();\r\n this.slicerOrientation = settings.general.orientation;\r\n this.waitingForData = false;\r\n\r\n this.initializeSlicerRenderer(this.slicerOrientation);\r\n }\r\n\r\n public onDataChanged(options: VisualDataChangedOptions): void {\r\n debug.assertValue(options, 'options');\r\n\r\n let dataViews = options.dataViews;\r\n debug.assertValue(dataViews, 'dataViews');\r\n\r\n if (_.isEmpty(dataViews)) {\r\n return;\r\n }\r\n\r\n let existingDataView = this.dataView;\r\n this.dataView = dataViews[0];\r\n // Reset scrollbar by default, unless it's an Append operation or Selecting an item\r\n let resetScrollbarPosition = options.operationKind !== VisualDataChangeOperationKind.Append\r\n && !DataViewAnalysis.hasSameCategoryIdentity(existingDataView, this.dataView);\r\n\r\n let metadata = this.dataView.metadata;\r\n this.renderAsImage = metadata &&\r\n !_.isEmpty(metadata.columns) &&\r\n metadata.columns[0].type &&\r\n metadata.columns[0].type.misc &&\r\n metadata.columns[0].type.misc.imageUrl ? jsCommon.Utility.isValidUrl : $.noop;\r\n\r\n this.render(resetScrollbarPosition, true);\r\n }\r\n\r\n public onResizing(finalViewport: IViewport): void {\r\n this.currentViewport = finalViewport;\r\n this.render(false /* resetScrollbarPosition */);\r\n }\r\n\r\n public enumerateObjectInstances(options: EnumerateVisualObjectInstancesOptions): VisualObjectInstance[] {\r\n return ObjectEnumerator.enumerateObjectInstances(options, this.slicerData, this.settings);\r\n }\r\n\r\n // public for testability\r\n public loadMoreData(): void {\r\n let dataView = this.dataView;\r\n if (!dataView)\r\n return;\r\n\r\n let dataViewMetadata = dataView.metadata;\r\n // Making sure that hostservices.loadMoreData is not invoked when waiting for server to load the next segment of data\r\n if (!this.waitingForData && dataViewMetadata && dataViewMetadata.segment) {\r\n this.hostServices.loadMoreData();\r\n this.waitingForData = true;\r\n }\r\n }\r\n\r\n public onClearSelection(): void {\r\n if (this.interactivityService)\r\n this.interactivityService.clearSelection();\r\n }\r\n\r\n private render(resetScrollbarPosition: boolean, stopWaitingForData?: boolean): void {\r\n let localizedSelectAllText = this.hostServices.getLocalizedString(DisplayNameKeys.SelectAll);\r\n this.slicerData = DataConversion.convert(this.dataView, localizedSelectAllText, this.interactivityService, this.hostServices);\r\n if (this.slicerData) {\r\n this.slicerData.slicerSettings.general.outlineWeight = Math.max(this.slicerData.slicerSettings.general.outlineWeight, 0);\r\n this.settings = this.slicerData.slicerSettings;\r\n // TODO: Do we need to check SettingsHelper.areSettingsDefined(), etc. here? Can we just do value validation and coercion in the same place that we create the slicerSettings?\r\n let slicerOrientation = SettingsHelper.areSettingsDefined(this.slicerData) && this.slicerData.slicerSettings.general && this.slicerData.slicerSettings.general.orientation ?\r\n this.slicerData.slicerSettings.general.orientation : Slicer.DefaultStyleProperties().general.orientation;\r\n\r\n let orientationHasChanged = this.orientationHasChanged(slicerOrientation);\r\n if (orientationHasChanged) {\r\n this.slicerOrientation = slicerOrientation;\r\n // Clear the previous slicer type when rendering the new slicer type\r\n this.element.empty();\r\n this.initializeSlicerRenderer(slicerOrientation);\r\n }\r\n }\r\n this.slicerRenderer.render({ dataView: this.dataView, data: this.slicerData, viewport: this.currentViewport, renderAsImage: this.renderAsImage, resetScrollbarPosition: resetScrollbarPosition });\r\n\r\n if (stopWaitingForData)\r\n this.waitingForData = false;\r\n }\r\n\r\n private orientationHasChanged(slicerOrientation: SlicerOrientation): boolean {\r\n return this.slicerOrientation !== slicerOrientation;\r\n }\r\n\r\n private initializeSlicerRenderer(slicerOrientation: SlicerOrientation): void {\r\n switch (slicerOrientation) {\r\n case SlicerOrientation.Horizontal:\r\n this.initializeHorizontalSlicer();\r\n break;\r\n\r\n case SlicerOrientation.Vertical:\r\n this.initializeVerticalSlicer();\r\n break;\r\n }\r\n }\r\n\r\n private initializeVerticalSlicer(): void {\r\n let verticalSlicerRenderer = this.slicerRenderer = new VerticalSlicerRenderer({ domHelper: this.domHelper, behavior: this.behavior });\r\n let options = this.createInitOptions();\r\n this.interactivityService = verticalSlicerRenderer.init(options);\r\n }\r\n\r\n private initializeHorizontalSlicer(): void {\r\n let horizontalSlicerRenderer = this.slicerRenderer = new HorizontalSlicerRenderer({ domHelper: this.domHelper, behavior: this.behavior });\r\n let options = this.createInitOptions();\r\n this.interactivityService = horizontalSlicerRenderer.init(options);\r\n }\r\n\r\n private createInitOptions(): SlicerInitOptions {\r\n return {\r\n visualInitOptions: this.initOptions,\r\n loadMoreData: () => this.loadMoreData()\r\n };\r\n }\r\n }\r\n\r\n /** Helper class for calculating the current slicer settings. */\r\n module ObjectEnumerator {\r\n export function enumerateObjectInstances(options: EnumerateVisualObjectInstancesOptions, data: SlicerData, settings: SlicerSettings): VisualObjectInstance[] {\r\n if (!data)\r\n return;\r\n\r\n switch (options.objectName) {\r\n case 'items':\r\n return enumerateItems(data, settings);\r\n case 'header':\r\n return enumerateHeader(data, settings);\r\n case 'general':\r\n return enumerateGeneral(data, settings);\r\n case 'selection':\r\n return enumerateSelection(data, settings);\r\n }\r\n }\r\n\r\n function enumerateSelection(data: SlicerData, settings: SlicerSettings): VisualObjectInstance[] {\r\n let slicerSettings = settings;\r\n let areSelectionSettingsDefined = SettingsHelper.areSettingsDefined(data) && data.slicerSettings.selection;\r\n let selectAllCheckboxEnabled = areSelectionSettingsDefined && data.slicerSettings.selection.selectAllCheckboxEnabled ?\r\n data.slicerSettings.selection.selectAllCheckboxEnabled : slicerSettings.selection.selectAllCheckboxEnabled;\r\n let singleSelect = data && data.slicerSettings && data.slicerSettings.selection && data.slicerSettings.selection.singleSelect !== undefined ?\r\n data.slicerSettings.selection.singleSelect : slicerSettings.selection.singleSelect;\r\n\r\n return [{\r\n selector: null,\r\n objectName: 'selection',\r\n properties: {\r\n selectAllCheckboxEnabled: selectAllCheckboxEnabled,\r\n singleSelect: singleSelect,\r\n }\r\n }];\r\n }\r\n\r\n function enumerateHeader(data: SlicerData, settings: SlicerSettings): VisualObjectInstance[] {\r\n let slicerSettings = settings;\r\n let areHeaderSettingsDefined = SettingsHelper.areSettingsDefined(data) && data.slicerSettings.header;\r\n let fontColor = areHeaderSettingsDefined && data.slicerSettings.header.fontColor ?\r\n data.slicerSettings.header.fontColor : slicerSettings.header.fontColor;\r\n let background = areHeaderSettingsDefined && data.slicerSettings.header.background ?\r\n data.slicerSettings.header.background : slicerSettings.header.background;\r\n return [{\r\n selector: null,\r\n objectName: 'header',\r\n properties: {\r\n show: slicerSettings.header.show,\r\n fontColor: fontColor,\r\n background: background,\r\n outline: slicerSettings.header.outline,\r\n textSize: slicerSettings.header.textSize,\r\n }\r\n }];\r\n }\r\n\r\n function enumerateItems(data: SlicerData, settings: SlicerSettings): VisualObjectInstance[] {\r\n let slicerSettings = settings;\r\n let areTextSettingsDefined = SettingsHelper.areSettingsDefined(data) && data.slicerSettings.slicerText;\r\n let fontColor = areTextSettingsDefined && data.slicerSettings.slicerText.color ?\r\n data.slicerSettings.slicerText.color : slicerSettings.slicerText.color;\r\n let background = areTextSettingsDefined && data.slicerSettings.slicerText.background ?\r\n data.slicerSettings.slicerText.background : slicerSettings.slicerText.background;\r\n return [{\r\n selector: null,\r\n objectName: 'items',\r\n properties: {\r\n fontColor: fontColor,\r\n background: background,\r\n outline: slicerSettings.slicerText.outline,\r\n textSize: slicerSettings.slicerText.textSize,\r\n }\r\n }];\r\n }\r\n\r\n function enumerateGeneral(data: SlicerData, settings: SlicerSettings): VisualObjectInstance[] {\r\n let slicerSettings = settings;\r\n let areGeneralSettingsDefined = SettingsHelper.areSettingsDefined(data) && data.slicerSettings.general != null;\r\n let outlineColor = areGeneralSettingsDefined && data.slicerSettings.general.outlineColor ?\r\n data.slicerSettings.general.outlineColor : slicerSettings.general.outlineColor;\r\n let outlineWeight = areGeneralSettingsDefined && data.slicerSettings.general.outlineWeight ?\r\n data.slicerSettings.general.outlineWeight : slicerSettings.general.outlineWeight;\r\n let orientation = areGeneralSettingsDefined && data.slicerSettings.general.orientation != null ?\r\n data.slicerSettings.general.orientation : slicerSettings.general.orientation;\r\n\r\n return [{\r\n selector: null,\r\n objectName: 'general',\r\n properties: {\r\n outlineColor: outlineColor,\r\n outlineWeight: outlineWeight,\r\n orientation: orientation,\r\n }\r\n }];\r\n }\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n import TablixFormattingProperties = powerbi.visuals.controls.TablixFormattingPropertiesTable;\r\n import TablixUtils = controls.internal.TablixUtils;\r\n\r\n export interface DataViewVisualTable extends DataViewTable {\r\n visualRows?: DataViewVisualTableRow[];\r\n formattingProperties?: TablixFormattingProperties;\r\n }\r\n\r\n export interface DataViewVisualTableRow {\r\n index: number;\r\n values: any[];\r\n }\r\n\r\n export interface TableDataAdapter {\r\n update(table: DataViewTable): void;\r\n }\r\n\r\n export interface TableCell {\r\n textContent?: string;\r\n domContent?: JQuery;\r\n isMeasure: boolean;\r\n isTotal: boolean;\r\n isBottomMost: boolean;\r\n isLeftMost: boolean;\r\n showUrl: boolean;\r\n showImage?: boolean;\r\n }\r\n\r\n export interface TableTotal {\r\n totalCells: any[];\r\n }\r\n\r\n export class TableHierarchyNavigator implements controls.ITablixHierarchyNavigator, TableDataAdapter {\r\n\r\n private tableDataView: DataViewVisualTable;\r\n private formatter: ICustomValueColumnFormatter;\r\n\r\n constructor(tableDataView: DataViewVisualTable, formatter: ICustomValueColumnFormatter) {\r\n debug.assertValue(tableDataView, 'tableDataView');\r\n debug.assertValue(formatter, 'formatter');\r\n\r\n this.tableDataView = tableDataView;\r\n this.formatter = formatter;\r\n }\r\n \r\n /**\r\n * Returns the depth of a hierarchy.\r\n */\r\n public getDepth(hierarchy: any): number {\r\n return 1;\r\n }\r\n \r\n /**\r\n * Returns the leaf count of a hierarchy.\r\n */\r\n public getLeafCount(hierarchy: any): number {\r\n return hierarchy.length;\r\n }\r\n \r\n /**\r\n * Returns the leaf member of a hierarchy at a specified index.\r\n */\r\n public getLeafAt(hierarchy: any, index: number): any {\r\n return hierarchy[index];\r\n }\r\n \r\n /**\r\n * Returns the specified hierarchy member parent.\r\n */\r\n public getParent(item: any): any {\r\n return null;\r\n }\r\n \r\n /**\r\n * Returns the index of the hierarchy member relative to its parent.\r\n */\r\n public getIndex(item: any): number {\r\n if (!item)\r\n return -1;\r\n\r\n if (this.isRow(item))\r\n return (<DataViewVisualTableRow>item).index;\r\n\r\n return this.getColumnIndex(item);\r\n }\r\n\r\n private isRow(item: any): boolean {\r\n if (!item)\r\n return false;\r\n\r\n let row = <DataViewVisualTableRow>item;\r\n return row.index !== undefined && row.values !== undefined;\r\n }\r\n\r\n private getColumnIndex(item: any): number {\r\n return TableHierarchyNavigator.getIndex(this.tableDataView.columns, item);\r\n }\r\n \r\n /**\r\n * Checks whether a hierarchy member is a leaf.\r\n */\r\n public isLeaf(item: any): boolean {\r\n return true;\r\n }\r\n\r\n public isRowHierarchyLeaf(cornerItem: any): boolean {\r\n return false;\r\n }\r\n\r\n public isColumnHierarchyLeaf(cornerItem: any): boolean {\r\n return true;\r\n }\r\n \r\n /**\r\n * Checks whether a hierarchy member is the last item within its parent.\r\n */\r\n public isLastItem(item: any, items: any): boolean {\r\n return false;\r\n }\r\n \r\n /**\r\n * Gets the children members of a hierarchy member.\r\n */\r\n public getChildren(item: any): any {\r\n return null;\r\n }\r\n \r\n /**\r\n * Gets the members count in a specified collection.\r\n */\r\n public getCount(items: any): number {\r\n return items.length;\r\n }\r\n \r\n /**\r\n * Gets the member at the specified index.\r\n */\r\n public getAt(items: any, index: number): any {\r\n return items[index];\r\n }\r\n \r\n /**\r\n * Gets the hierarchy member level.\r\n */\r\n public getLevel(item: any): number {\r\n return 0;\r\n }\r\n \r\n /**\r\n * Returns the intersection between a row and a column item.\r\n */\r\n public getIntersection(rowItem: any, columnItem: DataViewMetadataColumn): TableCell {\r\n let value: any;\r\n let isTotal: boolean = false;\r\n let isBottomMost: boolean = false;\r\n\r\n let columnIndex = TableHierarchyNavigator.getIndex(this.tableDataView.columns, columnItem);\r\n let isLeftMost = columnIndex === 0 ? true : false;\r\n\r\n let totalRow = <TableTotal>rowItem;\r\n if (totalRow.totalCells != null) {\r\n isTotal = true;\r\n value = totalRow.totalCells[columnIndex];\r\n }\r\n else {\r\n let bottomRow = this.tableDataView.visualRows[this.tableDataView.visualRows.length - 1];\r\n isBottomMost = bottomRow === rowItem;\r\n value = (<DataViewVisualTableRow>rowItem).values[columnIndex];\r\n }\r\n\r\n let formattedValue = this.formatter(value, columnItem, TablixUtils.TablixFormatStringProp);\r\n let domContent: JQuery;\r\n let textContent: string;\r\n if (TablixUtils.isValidStatusGraphic(columnItem.kpi, formattedValue))\r\n domContent = TablixUtils.createKpiDom(columnItem.kpi, formattedValue);\r\n else\r\n textContent = formattedValue;\r\n\r\n return {\r\n textContent: textContent,\r\n domContent: domContent,\r\n isMeasure: columnItem.isMeasure,\r\n isTotal: isTotal,\r\n isBottomMost: isBottomMost,\r\n showUrl: UrlHelper.isValidUrl(columnItem, formattedValue),\r\n showImage: UrlHelper.isValidImage(columnItem, formattedValue),\r\n isLeftMost: isLeftMost\r\n };\r\n }\r\n \r\n /**\r\n * Returns the corner cell between a row and a column level. \r\n */\r\n public getCorner(rowLevel: number, columnLevel: number): any {\r\n return null;\r\n }\r\n\r\n public headerItemEquals(item1: any, item2: any): boolean {\r\n if (item1 === item2)\r\n return true;\r\n\r\n // Typechecking does not work with interfaces nor at runtime. We need to explicitly check for \r\n // properties of DataViewMetadataColumn to determine if we can use the column equivalency check.\r\n // We expect this method to handle either VisualTableRows or DataViewMetadataColumns so checking\r\n // for displayName should be sufficient.\r\n if (item1.displayName && item2.displayName) {\r\n let column1 = <powerbi.DataViewMetadataColumn>item1;\r\n let column2 = <powerbi.DataViewMetadataColumn>item2;\r\n return powerbi.DataViewAnalysis.areMetadataColumnsEquivalent(column1, column2);\r\n }\r\n\r\n if (this.isRow(item1) && this.isRow(item2))\r\n return item1.index === item2.index;\r\n\r\n return false;\r\n }\r\n\r\n public bodyCellItemEquals(item1: any, item2: any): boolean {\r\n return (item1 === item2);\r\n }\r\n\r\n public cornerCellItemEquals(item1: any, item2: any): boolean {\r\n // Should not be called as we don't return any corner items for table\r\n return true;\r\n }\r\n\r\n public update(table: DataViewVisualTable): void {\r\n this.tableDataView = table;\r\n }\r\n\r\n public static getIndex(items: any[], item: any): number {\r\n for (let index = 0, len = items.length; index < len; index++) {\r\n\r\n // For cases when the item was re-created during the DataTransformation phase,\r\n // we check for the item's index to verify equality.\r\n let arrayItem = items[index];\r\n if (arrayItem.index != null && item.index != null && arrayItem.index === item.index) {\r\n return index;\r\n }\r\n else {\r\n if (item === items[index])\r\n return index;\r\n }\r\n }\r\n\r\n return -1;\r\n }\r\n }\r\n\r\n export interface TableBinderOptions {\r\n onBindRowHeader?(item: any): void;\r\n onColumnHeaderClick?(queryName: string, sortDirection: SortDirection): void;\r\n layoutKind?: controls.TablixLayoutKind;\r\n }\r\n \r\n /**\r\n * Note: Public for testability.\r\n */\r\n export class TableBinder implements controls.ITablixBinder {\r\n\r\n public static sortIconContainerClassName = \"bi-sort-icon-container\";\r\n public static columnHeaderClassName = 'bi-table-column-header';\r\n private static rowClassName = 'bi-table-row';\r\n private static lastRowClassName = 'bi-table-last-row';\r\n private static footerClassName = 'bi-table-footer';\r\n private static numericCellClassName = 'bi-table-cell-numeric';\r\n private static nonBreakingSpace = '&nbsp;';\r\n private options: TableBinderOptions;\r\n private formattingProperties: TablixFormattingProperties;\r\n private tableDataView: DataViewVisualTable;\r\n\r\n constructor(options: TableBinderOptions) {\r\n this.options = options;\r\n }\r\n\r\n public onDataViewChanged(dataView: DataViewVisualTable): void {\r\n this.tableDataView = dataView;\r\n this.formattingProperties = dataView.formattingProperties;\r\n }\r\n\r\n public setTablixColumnSeparator(cell: controls.ITablixCell): void {\r\n if (this.formattingProperties.columns.showSeparators)\r\n cell.extension.setColumnSeparator(this.formattingProperties.columns.separatorColor, this.formattingProperties.columns.separatorWeight);\r\n }\r\n\r\n public setTablixRegionStyle(cell: controls.ITablixCell, fontColor: string, backgroundColor, outline: string, outlineWeight: number, outlineColor: string): void {\r\n if (fontColor !== \"\")\r\n cell.extension.setFontColor(fontColor);\r\n if (backgroundColor)\r\n cell.extension.setBackgroundColor(backgroundColor);\r\n\r\n let borderStyle = VisualBorderUtil.getBorderStyleWithWeight(outline, outlineWeight);\r\n let borderWeight = VisualBorderUtil.getBorderWidth(outline, outlineWeight);\r\n cell.extension.setOutline(borderStyle, outlineColor, borderWeight);\r\n }\r\n\r\n public onStartRenderingSession(): void {\r\n }\r\n\r\n public onEndRenderingSession(): void {\r\n }\r\n \r\n /**\r\n * Row Header.\r\n */\r\n public bindRowHeader(item: any, cell: controls.ITablixCell): void {\r\n this.ensureHeight(item, cell);\r\n if (this.options.onBindRowHeader)\r\n this.options.onBindRowHeader(item);\r\n }\r\n\r\n public unbindRowHeader(item: any, cell: controls.ITablixCell): void {\r\n }\r\n \r\n /**\r\n * Column Header.\r\n */\r\n\r\n public bindColumnHeader(item: DataViewMetadataColumn, cell: controls.ITablixCell): void {\r\n let columnIndex = TableHierarchyNavigator.getIndex(this.tableDataView.columns, item);\r\n cell.extension.setContainerStyle(TableBinder.columnHeaderClassName);\r\n cell.extension.disableDragResize();\r\n cell.extension.setTextAndTooltip(item.displayName);\r\n\r\n if (this.sortIconsEnabled())\r\n TablixUtils.appendSortImageToColumnHeader(item, cell);\r\n\r\n if (this.options.onColumnHeaderClick) {\r\n let handler = (e: MouseEvent) => {\r\n let sortDirection: SortDirection = TablixUtils.reverseSort(item.sort);\r\n this.options.onColumnHeaderClick(item.queryName ? item.queryName : item.displayName, sortDirection);\r\n };\r\n cell.extension.registerClickHandler(handler);\r\n }\r\n\r\n if (this.formattingProperties) {\r\n this.setTablixRegionStyle(cell, this.formattingProperties.header.fontColor, this.formattingProperties.header.backgroundColor, this.formattingProperties.header.outline, this.formattingProperties.general.outlineWeight, this.formattingProperties.general.outlineColor);\r\n\r\n //set Column separator for table\r\n if (columnIndex > 0)\r\n this.setTablixColumnSeparator(cell);\r\n }\r\n }\r\n\r\n public unbindColumnHeader(item: any, cell: controls.ITablixCell): void {\r\n cell.extension.clearContainerStyle();\r\n cell.extension.clearTextAndTooltip();\r\n\r\n if (this.sortIconsEnabled())\r\n TablixUtils.removeSortIcons(cell);\r\n\r\n if (this.options.onColumnHeaderClick) {\r\n cell.extension.unregisterClickHandler();\r\n }\r\n }\r\n \r\n /**\r\n * Body Cell.\r\n */\r\n public bindBodyCell(item: TableCell, cell: controls.ITablixCell): void {\r\n if (item.showUrl)\r\n TablixUtils.appendATagToBodyCell(item.textContent, cell);\r\n else if (item.showImage)\r\n TablixUtils.appendImgTagToBodyCell(item.textContent, cell);\r\n else if (!_.isEmpty(item.domContent))\r\n $(cell.extension.contentHost).append(item.domContent);\r\n else if (item.textContent) {\r\n cell.extension.setTextAndTooltip(item.textContent);\r\n }\r\n\r\n let classNames = item.isTotal ?\r\n TableBinder.footerClassName :\r\n item.isBottomMost ? TableBinder.lastRowClassName : TableBinder.rowClassName;\r\n\r\n if (item.isMeasure)\r\n classNames += ' ' + TableBinder.numericCellClassName;\r\n\r\n cell.extension.setContainerStyle(classNames);\r\n\r\n if (this.formattingProperties) {\r\n let fontColor = item.isTotal ? this.formattingProperties.totals.fontColor : this.formattingProperties.rows.fontColor;\r\n let backgroundColor = item.isTotal ? this.formattingProperties.totals.backgroundColor : this.formattingProperties.rows.backgroundColor;\r\n let outlineStyle = item.isTotal ? this.formattingProperties.totals.outline : this.formattingProperties.rows.outline;\r\n\r\n this.setTablixRegionStyle(cell, fontColor, backgroundColor, outlineStyle, this.formattingProperties.general.outlineWeight, this.formattingProperties.general.outlineColor);\r\n\r\n if (this.formattingProperties.rows.showSeparators)\r\n cell.extension.setRowSeparator();\r\n\r\n if (!item.isLeftMost)\r\n this.setTablixColumnSeparator(cell);\r\n }\r\n }\r\n\r\n public unbindBodyCell(item: TableCell, cell: controls.ITablixCell): void {\r\n cell.extension.clearContainerStyle();\r\n cell.extension.clearTextAndTooltip();\r\n }\r\n \r\n /**\r\n * Corner Cell.\r\n */\r\n public bindCornerCell(item: any, cell: controls.ITablixCell): void {\r\n }\r\n\r\n public unbindCornerCell(item: any, cell: controls.ITablixCell): void {\r\n }\r\n\r\n public bindEmptySpaceHeaderCell(cell: controls.ITablixCell): void {\r\n // Not needed for Table\r\n }\r\n\r\n public unbindEmptySpaceHeaderCell(cell: controls.ITablixCell): void {\r\n // Not needed for Table\r\n }\r\n\r\n public bindEmptySpaceFooterCell(cell: controls.ITablixCell): void {\r\n // Not needed for Table\r\n }\r\n\r\n public unbindEmptySpaceFooterCell(cell: controls.ITablixCell): void {\r\n // Not needed for Table\r\n }\r\n \r\n /**\r\n * Measurement Helper.\r\n */\r\n public getHeaderLabel(item: DataViewMetadataColumn): string {\r\n return item.displayName;\r\n }\r\n\r\n public getCellContent(item: any): string {\r\n return item;\r\n }\r\n\r\n public hasRowGroups(): boolean {\r\n return false;\r\n }\r\n\r\n private ensureHeight(item: any, cell: controls.ITablixCell) {\r\n if (!item.values)\r\n return;\r\n\r\n let count = item.values.length;\r\n if (count === 0)\r\n return;\r\n\r\n let allValuesEmpty = true;\r\n for (let i: number = 0; i < count; i++) {\r\n if (item.values[i]) {\r\n allValuesEmpty = false;\r\n break;\r\n }\r\n }\r\n\r\n // In order to maintain the height of the row when the values are null or empty\r\n // we set the innerHTML to be a nonBreakingSpace. The nonBreakingSpace does not\r\n // show up in the visual because for actual cell content we use the textContent property instead.\r\n if (allValuesEmpty)\r\n cell.extension.contentHost.innerHTML = TableBinder.nonBreakingSpace;\r\n }\r\n\r\n private sortIconsEnabled(): boolean {\r\n return this.options.layoutKind === controls.TablixLayoutKind.Canvas;\r\n }\r\n }\r\n\r\n export interface ColumnWidthCallbackType {\r\n (index: number, width: number): void;\r\n }\r\n\r\n export interface TableConstructorOptions {\r\n isFormattingPropertiesEnabled?: boolean;\r\n isTouchEnabled?: boolean;\r\n }\r\n\r\n export class Table implements IVisual {\r\n private static preferredLoadMoreThreshold: number = 0.8;\r\n\r\n private element: JQuery;\r\n private currentViewport: IViewport;\r\n private style: IVisualStyle;\r\n private formatter: ICustomValueColumnFormatter;\r\n private isInteractive: boolean;\r\n private isTouchEnabled: boolean;\r\n private getLocalizedString: (stringId: string) => string;\r\n private hostServices: IVisualHostServices;\r\n\r\n private tablixControl: controls.TablixControl;\r\n private hierarchyNavigator: TableHierarchyNavigator;\r\n private waitingForData: boolean;\r\n private lastAllowHeaderResize: boolean;\r\n private waitingForSort: boolean;\r\n private columnWidthManager: controls.TablixColumnWidthManager;\r\n private dataView: DataView;\r\n private isFormattingPropertiesEnabled: boolean;\r\n\r\n constructor(options?: TableConstructorOptions) {\r\n if (options) {\r\n this.isFormattingPropertiesEnabled = options.isFormattingPropertiesEnabled;\r\n this.isTouchEnabled = options.isTouchEnabled;\r\n }\r\n }\r\n\r\n public static customizeQuery(options: CustomizeQueryOptions): void {\r\n let dataViewMapping = options.dataViewMappings[0];\r\n if (!dataViewMapping || !dataViewMapping.table || !dataViewMapping.metadata)\r\n return;\r\n\r\n let dataViewTableRows: data.CompiledDataViewRoleForMapping = <data.CompiledDataViewRoleForMapping>dataViewMapping.table.rows;\r\n let objects = dataViewMapping.metadata.objects;\r\n dataViewTableRows.for.in.subtotalType = TablixUtils.shouldShowTableTotals(objects) ? data.CompiledSubtotalType.Before : data.CompiledSubtotalType.None;\r\n }\r\n\r\n public static getSortableRoles(): string[] {\r\n return ['Values'];\r\n }\r\n\r\n public init(options: VisualInitOptions): void {\r\n this.element = options.element;\r\n this.style = options.style;\r\n this.updateViewport(options.viewport);\r\n this.formatter = valueFormatter.formatValueColumn;\r\n this.isInteractive = options.interactivity && options.interactivity.selection != null;\r\n this.getLocalizedString = options.host.getLocalizedString;\r\n this.hostServices = options.host;\r\n\r\n this.waitingForData = false;\r\n this.lastAllowHeaderResize = true;\r\n this.waitingForSort = false;\r\n }\r\n \r\n /**\r\n * Note: Public for testability.\r\n */\r\n public static converter(dataView: DataView, isFormattingPropertiesEnabled: boolean): DataViewVisualTable {\r\n let table = dataView.table;\r\n debug.assertValue(table, 'table');\r\n debug.assertValue(table.rows, 'table.rows');\r\n\r\n let visualTable = Prototype.inherit<DataViewVisualTable>(table);\r\n visualTable.visualRows = [];\r\n\r\n for (let i: number = 0; i < table.rows.length; i++) {\r\n let visualRow: DataViewVisualTableRow = {\r\n index: i,\r\n values: table.rows[i]\r\n };\r\n visualTable.visualRows.push(visualRow);\r\n }\r\n\r\n if (isFormattingPropertiesEnabled) {\r\n visualTable.formattingProperties = TablixUtils.getTableFormattingProperties(dataView);\r\n }\r\n\r\n return visualTable;\r\n }\r\n\r\n public onResizing(finalViewport: IViewport): void {\r\n this.updateViewport(finalViewport);\r\n }\r\n\r\n // Public for testability\r\n public getColumnWidthManager(): controls.TablixColumnWidthManager {\r\n return this.columnWidthManager;\r\n }\r\n\r\n public onDataChanged(options: VisualDataChangedOptions): void {\r\n debug.assertValue(options, 'options');\r\n // To avoid OnDataChanged being called every time resize occurs or the auto-size property switch is flipped.\r\n if (this.columnWidthManager && this.columnWidthManager.suppressOnDataChangedNotification) {\r\n // Reset flag for cases when cross-filter/cross-higlight happens right after. We do need onDataChanged call to go through\r\n this.columnWidthManager.suppressOnDataChangedNotification = false;\r\n return;\r\n }\r\n\r\n let previousDataView = this.dataView;\r\n let dataViews = options.dataViews;\r\n\r\n if (dataViews && dataViews.length > 0) {\r\n this.dataView = dataViews[0];\r\n let visualTable = Table.converter(this.dataView, this.isFormattingPropertiesEnabled);\r\n let textSize = visualTable.formattingProperties ? visualTable.formattingProperties.general.textSize : TablixUtils.getTextSize(this.dataView.metadata.objects);\r\n\r\n if (options.operationKind === VisualDataChangeOperationKind.Append) {\r\n this.hierarchyNavigator.update(visualTable);\r\n this.tablixControl.updateModels(/*resetScrollOffsets*/false, visualTable.visualRows);\r\n this.refreshControl(/*clear*/false);\r\n } else {\r\n this.createOrUpdateHierarchyNavigator(visualTable);\r\n this.createColumnWidthManager();\r\n this.createTablixControl(textSize);\r\n let binder = <TableBinder>this.tablixControl.getBinder();\r\n binder.onDataViewChanged(visualTable);\r\n this.populateColumnWidths();\r\n this.updateInternal(this.dataView, textSize, previousDataView, visualTable);\r\n }\r\n }\r\n\r\n this.waitingForData = false;\r\n this.waitingForSort = false;\r\n }\r\n\r\n private populateColumnWidths(): void {\r\n if (this.columnWidthManager) {\r\n this.columnWidthManager.deserializeTablixColumnWidths();\r\n if (this.columnWidthManager.persistColumnWidthsOnHost())\r\n this.persistColumnWidths(this.columnWidthManager.getVisualObjectInstancesToPersist());\r\n }\r\n }\r\n\r\n public columnWidthChanged(index: number, width: number): void {\r\n this.columnWidthManager.columnWidthChanged(index, width);\r\n this.persistColumnWidths(this.columnWidthManager.getVisualObjectInstancesToPersist());\r\n }\r\n\r\n private persistColumnWidths(objectInstances: VisualObjectInstancesToPersist): void {\r\n this.hostServices.persistProperties(objectInstances);\r\n }\r\n\r\n private updateViewport(newViewport: IViewport) {\r\n this.currentViewport = newViewport;\r\n\r\n if (this.tablixControl) {\r\n this.tablixControl.viewport = this.currentViewport;\r\n this.verifyHeaderResize();\r\n this.refreshControl(false);\r\n }\r\n }\r\n\r\n private refreshControl(clear: boolean) {\r\n if (visibilityHelper.partiallyVisible(this.element) || this.getLayoutKind() === controls.TablixLayoutKind.DashboardTile) {\r\n this.tablixControl.refresh(clear);\r\n }\r\n }\r\n\r\n private getLayoutKind() {\r\n return this.isInteractive ? controls.TablixLayoutKind.Canvas : controls.TablixLayoutKind.DashboardTile;\r\n }\r\n\r\n private createOrUpdateHierarchyNavigator(visualTable: DataViewVisualTable): void {\r\n if (!this.tablixControl) {\r\n let dataNavigator = new TableHierarchyNavigator(visualTable, this.formatter);\r\n this.hierarchyNavigator = dataNavigator;\r\n }\r\n else {\r\n this.hierarchyNavigator.update(visualTable);\r\n }\r\n }\r\n\r\n private createTablixControl(textSize: number): void {\r\n if (!this.tablixControl) {\r\n // Create the control\r\n this.tablixControl = this.createControl(this.hierarchyNavigator, textSize);\r\n }\r\n }\r\n\r\n private createColumnWidthManager(): void {\r\n if (!this.columnWidthManager) {\r\n this.columnWidthManager = new controls.TablixColumnWidthManager(this.dataView, false /* isMatrix */);\r\n this.columnWidthManager.columnWidthResizeCallback = (i, w) => this.columnWidthChanged(i, w);\r\n }\r\n else {\r\n this.columnWidthManager.updateDataView(this.dataView);\r\n }\r\n }\r\n\r\n private createControl(dataNavigator: TableHierarchyNavigator, textSize: number): controls.TablixControl {\r\n let layoutKind = this.getLayoutKind();\r\n\r\n let tableBinderOptions: TableBinderOptions = {\r\n onBindRowHeader: (item: any) => this.onBindRowHeader(item),\r\n onColumnHeaderClick: (queryName: string, sortDirection: SortDirection) => this.onColumnHeaderClick(queryName, sortDirection),\r\n layoutKind: layoutKind,\r\n };\r\n\r\n let tableBinder = new TableBinder(tableBinderOptions);\r\n let layoutManager: controls.internal.TablixLayoutManager = layoutKind === controls.TablixLayoutKind.DashboardTile\r\n ? controls.internal.DashboardTablixLayoutManager.createLayoutManager(tableBinder)\r\n : controls.internal.CanvasTablixLayoutManager.createLayoutManager(tableBinder, this.columnWidthManager);\r\n\r\n // Create Host element\r\n let tablixContainer = document.createElement('div');\r\n this.element.append(tablixContainer);\r\n\r\n let tablixOptions: controls.TablixOptions = {\r\n interactive: this.isInteractive,\r\n enableTouchSupport: this.isTouchEnabled,\r\n layoutKind: layoutKind,\r\n fontSize: TablixUtils.getTextSizeInPx(textSize),\r\n };\r\n\r\n return new controls.TablixControl(dataNavigator, layoutManager, tableBinder, tablixContainer, tablixOptions);\r\n }\r\n\r\n private updateInternal(dataView: DataView, textSize: number, previousDataView: DataView, visualTable: DataViewVisualTable) {\r\n if (this.getLayoutKind() === controls.TablixLayoutKind.DashboardTile) {\r\n this.tablixControl.layoutManager.adjustContentSize(UrlHelper.hasImageColumn(dataView));\r\n }\r\n\r\n this.tablixControl.fontSize = TablixUtils.getTextSizeInPx(textSize);\r\n this.verifyHeaderResize();\r\n\r\n // Update models before the viewport to make sure column widths are computed correctly\r\n this.tablixControl.updateModels(/*resetScrollOffsets*/true, visualTable.visualRows, visualTable.columns);\r\n\r\n let totals = this.createTotalsRow(dataView);\r\n this.tablixControl.rowDimension.setFooter(totals);\r\n\r\n this.tablixControl.viewport = this.currentViewport;\r\n let shouldClearControl = this.shouldClearControl(previousDataView, dataView);\r\n\r\n // Render\r\n // We need the layout for the DIV to be done so that the control can measure items correctly.\r\n setTimeout(() => {\r\n // Render\r\n this.refreshControl(shouldClearControl);\r\n this.columnWidthManager.persistAllColumnWidths(this.tablixControl.layoutManager.columnWidthsToPersist);\r\n if (this.columnWidthManager.persistColumnWidthsOnHost())\r\n this.persistColumnWidths(this.columnWidthManager.getVisualObjectInstancesToPersist());\r\n }, 0);\r\n }\r\n\r\n private shouldClearControl(previousDataView: DataView, newDataView: DataView) {\r\n if (!this.waitingForSort || !previousDataView || !newDataView)\r\n return true;\r\n\r\n return !DataViewAnalysis.isMetadataEquivalent(previousDataView.metadata, newDataView.metadata);\r\n }\r\n\r\n private createTotalsRow(dataView: DataView): TableTotal {\r\n if (!TablixUtils.shouldShowTableTotals(dataView.metadata.objects))\r\n return null;\r\n\r\n let totals = dataView.table.totals;\r\n if (!totals || totals.length === 0)\r\n return null;\r\n\r\n let totalRow: any[] = [];\r\n let columns = dataView.table.columns;\r\n\r\n // Add totals for measure columns, blank for non-measure columns unless it's the first column\r\n for (let i = 0, len = columns.length; i < len; ++i) {\r\n let column = columns[i];\r\n\r\n let totalValue = totals[column.index];\r\n if (totalValue != null) {\r\n totalRow.push(totalValue);\r\n }\r\n else {\r\n // If the first column is a non-measure column, we put 'Total' as the text similar to PV.\r\n // Note that if the first column is a measure column we don't render any Total text at\r\n // all, once again similar to PV.\r\n totalRow.push((i === 0) ? this.getLocalizedString('TableTotalLabel') : '');\r\n }\r\n }\r\n\r\n return <TableTotal>{ totalCells: totalRow };\r\n }\r\n\r\n private onBindRowHeader(item: any): void {\r\n if (this.needsMoreData(item)) {\r\n this.hostServices.loadMoreData();\r\n this.waitingForData = true;\r\n }\r\n }\r\n\r\n private onColumnHeaderClick(queryName: string, sortDirection: SortDirection) {\r\n let sortDescriptors: SortableFieldDescriptor[] = [{\r\n queryName: queryName,\r\n sortDirection: sortDirection\r\n }];\r\n let args: CustomSortEventArgs = {\r\n sortDescriptors: sortDescriptors\r\n };\r\n this.waitingForSort = true;\r\n this.hostServices.onCustomSort(args);\r\n }\r\n \r\n /**\r\n * Note: Public for testability.\r\n */\r\n public needsMoreData(item: any): boolean {\r\n if (this.waitingForData || !this.dataView.metadata || !this.dataView.metadata.segment)\r\n return false;\r\n\r\n let leafCount = this.tablixControl.rowDimension.getItemsCount();\r\n let loadMoreThreshold = leafCount * Table.preferredLoadMoreThreshold;\r\n\r\n return this.hierarchyNavigator.getIndex(item) >= loadMoreThreshold;\r\n }\r\n\r\n public enumerateObjectInstances(options: EnumerateVisualObjectInstancesOptions): VisualObjectInstanceEnumeration {\r\n let enumeration = new ObjectEnumerationBuilder();\r\n\r\n if (this.dataView) {\r\n TablixUtils.setEnumeration(options, enumeration, this.dataView, this.isFormattingPropertiesEnabled, controls.TablixType.Table);\r\n }\r\n\r\n return enumeration.complete();\r\n }\r\n\r\n private shouldAllowHeaderResize(): boolean {\r\n return this.hostServices.getViewMode() === ViewMode.Edit;\r\n }\r\n\r\n private verifyHeaderResize() {\r\n let currentAllowHeaderResize = this.shouldAllowHeaderResize();\r\n if (currentAllowHeaderResize !== this.lastAllowHeaderResize) {\r\n this.lastAllowHeaderResize = currentAllowHeaderResize;\r\n this.tablixControl.layoutManager.setAllowHeaderResize(currentAllowHeaderResize);\r\n }\r\n }\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n\r\n import TablixFormattingProperties = powerbi.visuals.controls.TablixFormattingPropertiesMatrix;\r\n import TablixUtils = controls.internal.TablixUtils;\r\n /**\r\n * Extension of the Matrix node for Matrix visual.\r\n */\r\n\r\n export interface MatrixVisualNode extends DataViewMatrixNode {\r\n /**\r\n * Index of the node in its parent's children collection.\r\n * \r\n * Note: For size optimization, we could also look this item up in the parent's \r\n * children collection, but we may need to pay the perf penalty.\r\n */\r\n index?: number;\r\n\r\n /**\r\n * Global index of the node as a leaf node.\r\n * If the node is not a leaf, the value is undefined.\r\n */\r\n leafIndex?: number;\r\n\r\n /**\r\n * Parent of the node.\r\n * Undefined for outermost nodes (children of the one root node).\r\n */\r\n parent?: MatrixVisualNode;\r\n\r\n /**\r\n * queryName of the node.\r\n * If the node is not a leaf, the value is undefined.\r\n */\r\n queryName?: string;\r\n }\r\n\r\n export interface MatrixCornerItem {\r\n metadata: DataViewMetadataColumn;\r\n isColumnHeaderLeaf: boolean;\r\n isRowHeaderLeaf: boolean;\r\n }\r\n\r\n export interface MatrixVisualBodyItem {\r\n textContent?: string;\r\n domContent?: JQuery;\r\n isSubtotal: boolean;\r\n isLeftMost: boolean;\r\n }\r\n \r\n /**\r\n * Interface for refreshing Matrix Data View.\r\n */\r\n export interface MatrixDataAdapter {\r\n update(dataViewMatrix?: DataViewMatrix, updateColumns?: boolean): void;\r\n }\r\n\r\n export interface IMatrixHierarchyNavigator extends controls.ITablixHierarchyNavigator, MatrixDataAdapter {\r\n getDataViewMatrix(): DataViewMatrix;\r\n getDepth(hierarchy: MatrixVisualNode[]): number;\r\n getLeafCount(hierarchy: MatrixVisualNode[]): number;\r\n getLeafAt(hierarchy: MatrixVisualNode[], index: number): any;\r\n getLeafIndex(item: MatrixVisualNode): number;\r\n getParent(item: MatrixVisualNode): MatrixVisualNode;\r\n getIndex(item: MatrixVisualNode): number;\r\n isLeaf(item: MatrixVisualNode): boolean;\r\n isRowHierarchyLeaf(item: any): boolean;\r\n isColumnHierarchyLeaf(item: any): boolean;\r\n isLastItem(item: MatrixVisualNode, items: MatrixVisualNode[]): boolean;\r\n getChildren(item: MatrixVisualNode): MatrixVisualNode[];\r\n getCount(items: MatrixVisualNode[]): number;\r\n getAt(items: MatrixVisualNode[], index: number): MatrixVisualNode;\r\n getLevel(item: MatrixVisualNode): number;\r\n getIntersection(rowItem: MatrixVisualNode, columnItem: MatrixVisualNode): MatrixVisualBodyItem;\r\n getCorner(rowLevel: number, columnLevel: number): MatrixCornerItem;\r\n headerItemEquals(item1: MatrixVisualNode, item2: MatrixVisualNode): boolean;\r\n }\r\n\r\n interface MatrixHierarchy extends DataViewHierarchy {\r\n leafNodes?: MatrixVisualNode[];\r\n }\r\n \r\n /**\r\n * Factory method used by unit tests.\r\n */\r\n export function createMatrixHierarchyNavigator(matrix: DataViewMatrix, formatter: ICustomValueColumnFormatter): IMatrixHierarchyNavigator {\r\n return new MatrixHierarchyNavigator(matrix, formatter);\r\n }\r\n\r\n class MatrixHierarchyNavigator implements IMatrixHierarchyNavigator {\r\n private matrix: DataViewMatrix;\r\n private rowHierarchy: MatrixHierarchy;\r\n private columnHierarchy: MatrixHierarchy;\r\n private formatter: ICustomValueColumnFormatter;\r\n\r\n constructor(matrix: DataViewMatrix, formatter: ICustomValueColumnFormatter) {\r\n this.matrix = matrix;\r\n this.rowHierarchy = MatrixHierarchyNavigator.wrapMatrixHierarchy(matrix.rows);\r\n this.columnHierarchy = MatrixHierarchyNavigator.wrapMatrixHierarchy(matrix.columns);\r\n this.formatter = formatter;\r\n\r\n this.update();\r\n }\r\n \r\n /**\r\n * Returns the data view matrix.\r\n */\r\n public getDataViewMatrix(): DataViewMatrix {\r\n return this.matrix;\r\n }\r\n \r\n /**\r\n * Returns the depth of a hierarchy.\r\n */\r\n public getDepth(hierarchy: MatrixVisualNode[]): number {\r\n let matrixHierarchy = this.getMatrixHierarchy(hierarchy);\r\n\r\n if (matrixHierarchy)\r\n return Math.max(matrixHierarchy.levels.length, 1);\r\n\r\n debug.assertFail('Hierarchy cannot be found');\r\n return 0;\r\n }\r\n \r\n /**\r\n * Returns the leaf count of a hierarchy.\r\n */\r\n public getLeafCount(hierarchy: MatrixVisualNode[]): number {\r\n let matrixHierarchy = this.getMatrixHierarchy(hierarchy);\r\n if (matrixHierarchy)\r\n return matrixHierarchy.leafNodes.length;\r\n\r\n debug.assertFail('Hierarchy cannot be found');\r\n return 0;\r\n }\r\n \r\n /**\r\n * Returns the leaf member of a hierarchy at a specified index.\r\n */\r\n public getLeafAt(hierarchy: MatrixVisualNode[], index: number): MatrixVisualNode {\r\n let matrixHierarchy = this.getMatrixHierarchy(hierarchy);\r\n if (matrixHierarchy)\r\n return matrixHierarchy.leafNodes[index];\r\n\r\n return null;\r\n }\r\n \r\n /**\r\n * Returns the leaf index of the visual node.\r\n */\r\n public getLeafIndex(item: MatrixVisualNode): number {\r\n debug.assertValue(item, 'item');\r\n\r\n return item.leafIndex;\r\n }\r\n \r\n /**\r\n * Returns the specified hierarchy member parent.\r\n */\r\n public getParent(item: MatrixVisualNode): MatrixVisualNode {\r\n debug.assertValue(item, 'item');\r\n\r\n // Return null for outermost nodes\r\n if (item.level === 0)\r\n return null;\r\n\r\n return item.parent;\r\n }\r\n \r\n /**\r\n * Returns the index of the hierarchy member relative to its parent.\r\n */\r\n public getIndex(item: MatrixVisualNode): number {\r\n debug.assertValue(item, 'item');\r\n\r\n return item.index;\r\n }\r\n \r\n /**\r\n * Checks whether a hierarchy member is a leaf.\r\n */\r\n public isLeaf(item: MatrixVisualNode): boolean {\r\n debug.assertValue(item, 'item');\r\n\r\n return !item.children || item.children.length === 0;\r\n }\r\n\r\n public isRowHierarchyLeaf(item: MatrixCornerItem): boolean {\r\n return true;\r\n }\r\n\r\n public isColumnHierarchyLeaf(item: MatrixCornerItem): boolean {\r\n return false;\r\n }\r\n \r\n /**\r\n * Checks whether a hierarchy member is the last item within its parent. \r\n */\r\n public isLastItem(item: MatrixVisualNode, items: MatrixVisualNode[]): boolean {\r\n debug.assertValue(item, 'item');\r\n\r\n return items[items.length - 1] === item;\r\n }\r\n \r\n /**\r\n * Gets the children members of a hierarchy member.\r\n */\r\n public getChildren(item: MatrixVisualNode): MatrixVisualNode[] {\r\n debug.assertValue(item, 'item');\r\n\r\n return item.children;\r\n }\r\n \r\n /**\r\n * Gets the members count in a specified collection.\r\n */\r\n public getCount(items: MatrixVisualNode[]): number {\r\n debug.assertValue(items, 'items');\r\n\r\n return items.length;\r\n }\r\n \r\n /**\r\n * Gets the member at the specified index.\r\n */\r\n public getAt(items: MatrixVisualNode[], index: number): MatrixVisualNode {\r\n debug.assertValue(items, 'items');\r\n\r\n return items[index];\r\n }\r\n \r\n /**\r\n * Gets the hierarchy member level.\r\n */\r\n public getLevel(item: MatrixVisualNode): number {\r\n debug.assertValue(item, 'item');\r\n\r\n return item.level;\r\n }\r\n \r\n /**\r\n * Returns the intersection between a row and a column item.\r\n */\r\n public getIntersection(rowItem: MatrixVisualNode, columnItem: MatrixVisualNode): MatrixVisualBodyItem {\r\n debug.assertValue(rowItem, 'rowItem');\r\n debug.assertValue(columnItem, 'columnItem');\r\n let isSubtotalItem = rowItem.isSubtotal === true || columnItem.isSubtotal === true;\r\n\r\n if (!rowItem.values)\r\n return {\r\n textContent: '',\r\n isSubtotal: isSubtotalItem,\r\n isLeftMost: columnItem.index === 0\r\n };\r\n\r\n let intersection = <DataViewMatrixNodeValue>(rowItem.values[columnItem.leafIndex]);\r\n if (!intersection)\r\n return {\r\n isSubtotal: isSubtotalItem,\r\n isLeftMost: columnItem.index === 0\r\n };\r\n\r\n let valueSource = this.matrix.valueSources[intersection.valueSourceIndex || 0];\r\n let formattedValue = this.formatter(intersection.value, valueSource, TablixUtils.TablixFormatStringProp);\r\n\r\n if (TablixUtils.isValidStatusGraphic(valueSource.kpi, formattedValue))\r\n return {\r\n domContent: TablixUtils.createKpiDom(valueSource.kpi, intersection.value),\r\n isSubtotal: isSubtotalItem,\r\n isLeftMost: columnItem.index === 0\r\n };\r\n\r\n return {\r\n textContent: formattedValue,\r\n isSubtotal: isSubtotalItem,\r\n isLeftMost: columnItem.index === 0\r\n };\r\n }\r\n \r\n /**\r\n * Returns the corner cell between a row and a column level.\r\n */\r\n public getCorner(rowLevel: number, columnLevel: number): MatrixCornerItem {\r\n debug.assert(rowLevel >= 0, 'rowLevel');\r\n debug.assert(columnLevel >= 0, 'columnLevel');\r\n\r\n let columnLevels = this.columnHierarchy.levels;\r\n let rowLevels = this.rowHierarchy.levels;\r\n\r\n if (columnLevel === columnLevels.length - 1 || columnLevels.length === 0) {\r\n let levelSource = rowLevels[rowLevel];\r\n if (levelSource)\r\n return {\r\n metadata: levelSource.sources[0],\r\n isColumnHeaderLeaf: true,\r\n isRowHeaderLeaf: rowLevel === rowLevels.length - 1,\r\n };\r\n }\r\n\r\n if (rowLevel === rowLevels.length - 1) {\r\n let levelSource = columnLevels[columnLevel];\r\n if (levelSource)\r\n return {\r\n metadata: levelSource.sources[0],\r\n isColumnHeaderLeaf: false,\r\n isRowHeaderLeaf: true,\r\n };\r\n }\r\n\r\n return {\r\n metadata: null,\r\n isColumnHeaderLeaf: false,\r\n isRowHeaderLeaf: false,\r\n };\r\n }\r\n\r\n public headerItemEquals(item1: MatrixVisualNode, item2: MatrixVisualNode): boolean {\r\n return (item1 === item2);\r\n }\r\n\r\n public bodyCellItemEquals(item1: MatrixVisualBodyItem, item2: MatrixVisualBodyItem): boolean {\r\n return (item1 === item2);\r\n }\r\n\r\n public cornerCellItemEquals(item1: any, item2: any): boolean {\r\n return (item1 === item2);\r\n }\r\n\r\n public getMatrixColumnHierarchy(): MatrixHierarchy {\r\n return this.columnHierarchy;\r\n }\r\n\r\n public getMatrixRowHierarchy(): MatrixHierarchy {\r\n return this.rowHierarchy;\r\n }\r\n \r\n /**\r\n * Implementation for MatrixDataAdapter interface.\r\n */\r\n public update(dataViewMatrix?: DataViewMatrix, updateColumns: boolean = true): void {\r\n if (dataViewMatrix) {\r\n this.matrix = dataViewMatrix;\r\n this.rowHierarchy = MatrixHierarchyNavigator.wrapMatrixHierarchy(dataViewMatrix.rows);\r\n if (updateColumns)\r\n this.columnHierarchy = MatrixHierarchyNavigator.wrapMatrixHierarchy(dataViewMatrix.columns);\r\n }\r\n this.updateHierarchy(this.rowHierarchy);\r\n if (updateColumns) {\r\n this.updateHierarchy(this.columnHierarchy);\r\n MatrixHierarchyNavigator.updateStaticColumnHeaders(this.columnHierarchy);\r\n }\r\n }\r\n\r\n private static wrapMatrixHierarchy(hierarchy: DataViewHierarchy): MatrixHierarchy {\r\n let matrixHierarchy = Prototype.inherit<MatrixHierarchy>(hierarchy);\r\n matrixHierarchy.leafNodes = [];\r\n\r\n return matrixHierarchy;\r\n }\r\n\r\n private updateHierarchy(hierarchy: MatrixHierarchy): void {\r\n if (hierarchy.leafNodes.length > 0)\r\n hierarchy.leafNodes.length = 0;\r\n\r\n if (hierarchy.root.children)\r\n this.updateRecursive(hierarchy, hierarchy.root.children, null, hierarchy.leafNodes);\r\n }\r\n\r\n private updateRecursive(hierarchy: MatrixHierarchy, nodes: MatrixVisualNode[], parent: MatrixVisualNode, cache: MatrixVisualNode[]): void {\r\n let level: DataViewHierarchyLevel;\r\n for (let i = 0, ilen = nodes.length; i < ilen; i++) {\r\n let node = nodes[i];\r\n if (parent)\r\n node.parent = parent;\r\n\r\n if (!level)\r\n level = hierarchy.levels[node.level];\r\n\r\n if (level) {\r\n let source = level.sources[node.levelSourceIndex ? node.levelSourceIndex : 0];\r\n let formatString = valueFormatter.getFormatString(source, TablixUtils.TablixFormatStringProp);\r\n if (formatString)\r\n node.name = this.formatter(node.value, source, TablixUtils.TablixFormatStringProp);\r\n node.queryName = source.queryName;\r\n }\r\n\r\n node.index = i;\r\n if (node.children && node.children.length > 0) {\r\n this.updateRecursive(hierarchy, node.children, node, cache);\r\n }\r\n else {\r\n node.leafIndex = cache.length;\r\n cache.push(node);\r\n }\r\n }\r\n }\r\n\r\n private static updateStaticColumnHeaders(columnHierarchy: MatrixHierarchy): void {\r\n let columnLeafNodes = columnHierarchy.leafNodes;\r\n if (columnLeafNodes && columnLeafNodes.length > 0) {\r\n let columnLeafSources = columnHierarchy.levels[columnLeafNodes[0].level].sources;\r\n\r\n for (let i = 0, ilen = columnLeafNodes.length; i < ilen; i++) {\r\n let columnLeafNode = columnLeafNodes[i];\r\n\r\n // Static leaf may need to get label from it's definition\r\n if (!columnLeafNode.identity && columnLeafNode.value === undefined) {\r\n // We make distincion between null and undefined. Null can be considered as legit value, undefined means we need to fall back to metadata\r\n let source = columnLeafSources[columnLeafNode.levelSourceIndex ? columnLeafNode.levelSourceIndex : 0];\r\n if (source)\r\n columnLeafNode.name = source.displayName;\r\n }\r\n }\r\n }\r\n }\r\n\r\n private getMatrixHierarchy(rootNodes: MatrixVisualNode[]): MatrixHierarchy {\r\n let rowHierarchyRootNodes = this.rowHierarchy.root.children;\r\n if (rowHierarchyRootNodes && rootNodes === rowHierarchyRootNodes)\r\n return this.rowHierarchy;\r\n\r\n let columnHierarchyRootNodes = this.columnHierarchy.root.children;\r\n if (columnHierarchyRootNodes && rootNodes === columnHierarchyRootNodes)\r\n return this.columnHierarchy;\r\n\r\n return null;\r\n }\r\n }\r\n\r\n export interface MatrixBinderOptions {\r\n onBindRowHeader?(item: MatrixVisualNode): void;\r\n totalLabel?: string;\r\n onColumnHeaderClick?(queryName: string): void;\r\n }\r\n\r\n export class MatrixBinder implements controls.ITablixBinder {\r\n\r\n private static headerClassName = \"bi-tablix-header\";\r\n private static numericCellClassName = \"bi-table-cell-numeric\";\r\n private static columnHeaderLeafClassName = \"bi-tablix-column-header-leaf\";\r\n private static rowHeaderLeafClassName = \"bi-tablix-row-header-leaf\";\r\n private static rowHeaderStaticLeafClassName = \"bi-tablix-row-header-static-leaf\";\r\n private static rowHeaderTopLevelStaticLeafClassName = \"bi-tablix-row-header-toplevel-static-leaf\";\r\n private static bodyCellClassName = \"bi-matrix-body-cell\";\r\n private static totalClassName = \"total\";\r\n private static nonBreakingSpace = '&nbsp;';\r\n\r\n private formattingProperties: TablixFormattingProperties;\r\n private hierarchyNavigator: IMatrixHierarchyNavigator;\r\n private options: MatrixBinderOptions;\r\n\r\n constructor(hierarchyNavigator: IMatrixHierarchyNavigator, options: MatrixBinderOptions) {\r\n\r\n // We pass the hierarchy navigator in here because it is the object that will\r\n // survive data changes and gets updated with the latest data view.\r\n this.hierarchyNavigator = hierarchyNavigator;\r\n this.options = options;\r\n }\r\n\r\n public onDataViewChanged(formattingProperties: TablixFormattingProperties): void {\r\n this.formattingProperties = formattingProperties;\r\n }\r\n\r\n public setTablixColumnSeparator(cell: controls.ITablixCell): void {\r\n if (this.formattingProperties.columns.showSeparators)\r\n cell.extension.setColumnSeparator(this.formattingProperties.columns.separatorColor, this.formattingProperties.columns.separatorWeight);\r\n }\r\n\r\n public setTablixRegionStyle(cell: controls.ITablixCell, fontColor: string, backgroundColor, outline: string, outlineWeight: number, outlineColor: string): void {\r\n if (fontColor !== \"\")\r\n cell.extension.setFontColor(fontColor);\r\n if (backgroundColor)\r\n cell.extension.setBackgroundColor(backgroundColor);\r\n\r\n let borderStyle = VisualBorderUtil.getBorderStyleWithWeight(outline, outlineWeight);\r\n let borderWeight = VisualBorderUtil.getBorderWidth(outline, outlineWeight);\r\n cell.extension.setOutline(borderStyle, outlineColor, borderWeight);\r\n }\r\n\r\n public onStartRenderingSession(): void {\r\n }\r\n\r\n public onEndRenderingSession(): void {\r\n }\r\n \r\n /**\r\n * Row Header.\r\n */\r\n public bindRowHeader(item: MatrixVisualNode, cell: controls.ITablixCell): void {\r\n let styleClasses: string;\r\n\r\n let isLeaf = this.hierarchyNavigator && this.hierarchyNavigator.isLeaf(item);\r\n if (isLeaf) {\r\n if (!item.identity) {\r\n if (item.level === 0)\r\n styleClasses = MatrixBinder.rowHeaderTopLevelStaticLeafClassName;\r\n else\r\n styleClasses = MatrixBinder.rowHeaderStaticLeafClassName;\r\n }\r\n else {\r\n styleClasses = MatrixBinder.rowHeaderLeafClassName;\r\n }\r\n }\r\n else\r\n styleClasses = MatrixBinder.headerClassName;\r\n\r\n if (item.isSubtotal)\r\n styleClasses += ' ' + MatrixBinder.totalClassName;\r\n\r\n cell.extension.setContainerStyle(styleClasses);\r\n\r\n this.bindHeader(item, cell, this.getRowHeaderMetadata(item));\r\n\r\n if (this.options.onBindRowHeader)\r\n this.options.onBindRowHeader(item);\r\n\r\n if (this.formattingProperties) {\r\n let fontColor = item.isSubtotal ? this.formattingProperties.totals.fontColor : this.formattingProperties.rows.fontColor;\r\n let backgroundColor = item.isSubtotal ? this.formattingProperties.totals.backgroundColor : this.formattingProperties.rows.backgroundColor;\r\n let outlineStyle = item.isSubtotal ? this.formattingProperties.totals.outline : this.formattingProperties.rows.outline;\r\n\r\n this.setTablixRegionStyle(cell, fontColor, backgroundColor, outlineStyle, this.formattingProperties.general.outlineWeight, this.formattingProperties.general.outlineColor);\r\n\r\n if (this.formattingProperties.rows.showSeparators)\r\n cell.extension.setRowSeparator();\r\n\r\n //set leading spaces for totals\r\n if (item.isSubtotal)\r\n cell.extension.setLeadingSpace(this.formattingProperties.totals.leadingSpace);\r\n }\r\n }\r\n\r\n public unbindRowHeader(item: any, cell: controls.ITablixCell): void {\r\n cell.extension.clearContainerStyle();\r\n cell.extension.clearTextAndTooltip();\r\n controls.HTMLElementUtils.clearChildren(cell.extension.contentHost);\r\n }\r\n \r\n /**\r\n * Column Header.\r\n */\r\n public bindColumnHeader(item: MatrixVisualNode, cell: controls.ITablixCell): void {\r\n let styleClasses: string;\r\n let overwriteTotalLabel = false;\r\n\r\n let isLeaf = this.hierarchyNavigator && this.hierarchyNavigator.isLeaf(item);\r\n if (isLeaf) {\r\n styleClasses = MatrixBinder.columnHeaderLeafClassName;\r\n\r\n let sortableHeaderColumnMetadata = this.getSortableHeaderColumnMetadata(item);\r\n if (sortableHeaderColumnMetadata) {\r\n this.registerColumnHeaderClickHandler(sortableHeaderColumnMetadata, cell);\r\n }\r\n\r\n // Overwrite only if the there are subtotal siblings (like in the multimeasure case), which means ALL siblings are subtotals.\r\n if (item.isSubtotal && item.parent && item.parent.children.length > 1 && (<MatrixVisualNode>item.parent.children[0]).isSubtotal)\r\n overwriteTotalLabel = true;\r\n }\r\n else {\r\n styleClasses = MatrixBinder.headerClassName;\r\n }\r\n\r\n if (item.isSubtotal)\r\n styleClasses += ' ' + MatrixBinder.totalClassName;\r\n\r\n styleClasses += ' ' + MatrixBinder.numericCellClassName;\r\n cell.extension.setContainerStyle(styleClasses);\r\n\r\n if (this.formattingProperties) {\r\n this.setTablixRegionStyle(cell, this.formattingProperties.header.fontColor, this.formattingProperties.header.backgroundColor, this.formattingProperties.header.outline, this.formattingProperties.general.outlineWeight, this.formattingProperties.general.outlineColor);\r\n this.setTablixColumnSeparator(cell);\r\n }\r\n\r\n cell.extension.disableDragResize();\r\n this.bindHeader(item, cell, this.getColumnHeaderMetadata(item), overwriteTotalLabel);\r\n }\r\n\r\n public unbindColumnHeader(item: MatrixVisualNode, cell: controls.ITablixCell): void {\r\n cell.extension.clearContainerStyle();\r\n cell.extension.clearTextAndTooltip();\r\n\r\n let sortableHeaderColumnMetadata = this.getSortableHeaderColumnMetadata(item);\r\n if (sortableHeaderColumnMetadata) {\r\n this.unregisterColumnHeaderClickHandler(cell);\r\n }\r\n }\r\n \r\n /**\r\n * Body Cell.\r\n */\r\n public bindBodyCell(item: MatrixVisualBodyItem, cell: controls.ITablixCell): void {\r\n let styleClasses = MatrixBinder.bodyCellClassName;\r\n\r\n if (item.isSubtotal)\r\n styleClasses += ' ' + MatrixBinder.totalClassName;\r\n\r\n cell.extension.setContainerStyle(styleClasses);\r\n\r\n if (item.textContent) {\r\n cell.extension.setTextAndTooltip(item.textContent);\r\n }\r\n else if (!_.isEmpty(item.domContent))\r\n $(cell.extension.contentHost).append(item.domContent);\r\n\r\n if (this.formattingProperties) {\r\n let outlineStyle = item.isSubtotal ? this.formattingProperties.totals.outline : item.isLeftMost ? this.formattingProperties.values.outline : 'None';\r\n let fontColor = item.isSubtotal ? this.formattingProperties.totals.fontColor : this.formattingProperties.values.fontColor;\r\n let backgroundColor = item.isSubtotal ? this.formattingProperties.totals.backgroundColor : this.formattingProperties.values.backgroundColor;\r\n\r\n this.setTablixRegionStyle(cell, fontColor, backgroundColor, outlineStyle, this.formattingProperties.general.outlineWeight, this.formattingProperties.general.outlineColor);\r\n //set leading spaces for totals\r\n if (item.isSubtotal)\r\n cell.extension.setLeadingSpace(this.formattingProperties.totals.leadingSpace);\r\n\r\n if (this.formattingProperties.rows.showSeparators)\r\n cell.extension.setRowSeparator();\r\n\r\n this.setTablixColumnSeparator(cell);\r\n }\r\n }\r\n\r\n public unbindBodyCell(item: MatrixVisualBodyItem, cell: controls.ITablixCell): void {\r\n cell.extension.clearContainerStyle();\r\n cell.extension.clearTextAndTooltip();\r\n }\r\n\r\n private registerColumnHeaderClickHandler(columnMetadata: DataViewMetadataColumn, cell: controls.ITablixCell) {\r\n if (this.options.onColumnHeaderClick) {\r\n let handler = (e: MouseEvent) => {\r\n this.options.onColumnHeaderClick(columnMetadata.queryName ? columnMetadata.queryName : columnMetadata.displayName);\r\n };\r\n cell.extension.registerClickHandler(handler);\r\n }\r\n }\r\n\r\n private unregisterColumnHeaderClickHandler(cell: controls.ITablixCell) {\r\n if (this.options.onColumnHeaderClick) {\r\n cell.extension.unregisterClickHandler();\r\n }\r\n }\r\n \r\n /**\r\n * Corner Cell.\r\n */\r\n public bindCornerCell(item: MatrixCornerItem, cell: controls.ITablixCell): void {\r\n let styleClasses: string;\r\n\r\n if (item.isColumnHeaderLeaf) {\r\n styleClasses = MatrixBinder.columnHeaderLeafClassName;\r\n let cornerHeaderMetadata = this.getSortableCornerColumnMetadata(item);\r\n if (cornerHeaderMetadata)\r\n this.registerColumnHeaderClickHandler(cornerHeaderMetadata, cell);\r\n }\r\n\r\n if (item.isRowHeaderLeaf) {\r\n if (styleClasses)\r\n styleClasses += ' ';\r\n else\r\n styleClasses = '';\r\n\r\n styleClasses += MatrixBinder.rowHeaderLeafClassName;\r\n }\r\n\r\n if (styleClasses)\r\n cell.extension.setContainerStyle(styleClasses);\r\n else\r\n cell.extension.setContainerStyle(MatrixBinder.headerClassName);\r\n\r\n cell.extension.disableDragResize();\r\n\r\n let itemText = item.metadata ? item.metadata.displayName : '';\r\n cell.extension.setTextAndTooltip(itemText);\r\n\r\n if (this.formattingProperties) {\r\n this.setTablixRegionStyle(cell, this.formattingProperties.header.fontColor, this.formattingProperties.header.backgroundColor, this.formattingProperties.header.outline, this.formattingProperties.general.outlineWeight, this.formattingProperties.general.outlineColor);\r\n }\r\n }\r\n\r\n public unbindCornerCell(item: MatrixCornerItem, cell: controls.ITablixCell): void {\r\n cell.extension.clearContainerStyle();\r\n cell.extension.clearTextAndTooltip();\r\n\r\n if (item.isColumnHeaderLeaf) {\r\n this.unregisterColumnHeaderClickHandler(cell);\r\n }\r\n }\r\n\r\n public bindEmptySpaceHeaderCell(cell: controls.ITablixCell): void {\r\n }\r\n\r\n public unbindEmptySpaceHeaderCell(cell: controls.ITablixCell): void {\r\n }\r\n\r\n public bindEmptySpaceFooterCell(cell: controls.ITablixCell): void {\r\n }\r\n\r\n public unbindEmptySpaceFooterCell(cell: controls.ITablixCell): void {\r\n }\r\n \r\n /**\r\n * Measurement Helper.\r\n */\r\n public getHeaderLabel(item: MatrixVisualNode): string {\r\n return MatrixBinder.getNodeLabel(item);\r\n }\r\n\r\n public getCellContent(item: MatrixVisualBodyItem): string {\r\n return item.textContent || '';\r\n }\r\n\r\n public hasRowGroups(): boolean {\r\n // Figure out whether we have a static row header, i.e., not row groups\r\n let dataView = this.hierarchyNavigator.getDataViewMatrix();\r\n\r\n if (!dataView || !dataView.rows || !dataView.rows.levels || dataView.rows.levels.length === 0)\r\n return false;\r\n\r\n return true;\r\n }\r\n\r\n private static getNodeLabel(node: MatrixVisualNode): string {\r\n // Return formatted value\r\n if (node.name)\r\n return node.name;\r\n\r\n // Return unformatted value (fallback case)\r\n if (node.value != null)\r\n return node.value.toString();\r\n\r\n return '';\r\n }\r\n\r\n private bindHeader(item: MatrixVisualNode, cell: controls.ITablixCell, metadata: DataViewMetadataColumn, overwriteSubtotalLabel?: boolean): void {\r\n if (item.isSubtotal && !overwriteSubtotalLabel) {\r\n cell.extension.setTextAndTooltip(this.options.totalLabel);\r\n return;\r\n }\r\n\r\n let value = MatrixBinder.getNodeLabel(item);\r\n if (!value) {\r\n // just to maintain the height of the row in case all realized cells are nulls\r\n cell.extension.contentHost.innerHTML = MatrixBinder.nonBreakingSpace;\r\n return;\r\n }\r\n\r\n if (metadata && UrlHelper.isValidUrl(metadata, value)) {\r\n TablixUtils.appendATagToBodyCell(item.value, cell);\r\n } else if (metadata && UrlHelper.isValidImage(metadata, value)) {\r\n TablixUtils.appendImgTagToBodyCell(item.value, cell);\r\n }\r\n else {\r\n cell.extension.setTextAndTooltip(value);\r\n } \r\n }\r\n \r\n /**\r\n * Returns the column metadata of the column that needs to be sorted for the specified matrix corner node.\r\n * \r\n * @return Column metadata or null if the specified corner node does not represent a sortable header.\r\n */\r\n private getSortableCornerColumnMetadata(item: MatrixCornerItem): DataViewMetadataColumn {\r\n if (!item.isColumnHeaderLeaf)\r\n return null;\r\n\r\n return item.metadata;\r\n }\r\n\r\n private getRowHeaderMetadata(item: MatrixVisualNode): DataViewMetadataColumn {\r\n if (!this.hierarchyNavigator || !item)\r\n return;\r\n\r\n let dataView = this.hierarchyNavigator.getDataViewMatrix();\r\n\r\n if (!dataView || !dataView.rows)\r\n return;\r\n\r\n return this.getHierarchyMetadata(dataView.rows, item.level);\r\n }\r\n\r\n private getColumnHeaderMetadata(item: MatrixVisualNode): DataViewMetadataColumn {\r\n if (!this.hierarchyNavigator || !item)\r\n return;\r\n\r\n let dataView = this.hierarchyNavigator.getDataViewMatrix();\r\n if (!dataView || !dataView.columns)\r\n return;\r\n\r\n return this.getHierarchyMetadata(dataView.columns, item.level);\r\n }\r\n\r\n private getHierarchyMetadata(hierarchy: DataViewHierarchy, level: number): DataViewMetadataColumn {\r\n if (!hierarchy || !hierarchy.levels || hierarchy.levels.length < level)\r\n return;\r\n\r\n let levelInfo = hierarchy.levels[level];\r\n if (!levelInfo || !levelInfo.sources || levelInfo.sources.length === 0)\r\n return;\r\n\r\n // This assumes the source will always be the first item in the array of sources.\r\n return levelInfo.sources[0];\r\n }\r\n \r\n /**\r\n * Returns the column metadata of the column that needs to be sorted for the specified header node.\r\n * \r\n * @return Column metadata or null if the specified header node does not represent a sortable header.\r\n */\r\n private getSortableHeaderColumnMetadata(item: MatrixVisualNode): DataViewMetadataColumn {\r\n\r\n let dataView = this.hierarchyNavigator.getDataViewMatrix();\r\n\r\n // If there are no row groups, sorting is not supported (as it does not make sense).\r\n if (!dataView.rows || !dataView.rows.levels || dataView.rows.levels.length === 0)\r\n return null;\r\n\r\n // Note that the measures establish a level as well, so need to subtract 1\r\n let columnGroupCount = dataView.columns ? dataView.columns.levels.length - 1 : 0;\r\n\r\n let valueIndex: number = -1;\r\n if (columnGroupCount === 0) {\r\n // Matrices without column groups, support sorting on all columns (which are then measure columns).\r\n valueIndex = item.levelSourceIndex;\r\n }\r\n else if (item.isSubtotal) {\r\n // Matrices with column groups support sorting only on the column grand total.\r\n let isMultiMeasure: boolean = dataView.valueSources && dataView.valueSources.length > 1;\r\n\r\n if (isMultiMeasure) {\r\n // In the multi-measure case we need to check if the parent's level is 0 in order\r\n // to determine whether this is the column grand total. The cells are layed out such\r\n // that the clickable cells are at the innermost level, but the parent for the column\r\n // grand total will have level 0.\r\n if (item.parent && item.parent.level === 0)\r\n valueIndex = item.levelSourceIndex;\r\n }\r\n else {\r\n // In the single-measure case we can directly check the level of the subtotal to\r\n // detect the column grand total (at level 0).\r\n if (item.level === 0)\r\n valueIndex = item.levelSourceIndex;\r\n }\r\n }\r\n\r\n if (valueIndex !== -1) {\r\n // NOTE: if the valueIndex is undefined it implicitly means that it is 0 based on the \r\n // visual node contract\r\n valueIndex = valueIndex ? valueIndex : 0;\r\n return dataView.valueSources[valueIndex];\r\n }\r\n\r\n return null;\r\n }\r\n }\r\n\r\n export interface MatrixConstructorOptions {\r\n isFormattingPropertiesEnabled?: boolean;\r\n isTouchEnabled?: boolean;\r\n }\r\n\r\n export class Matrix implements IVisual {\r\n private static preferredLoadMoreThreshold: number = 0.8;\r\n \r\n /**\r\n * Note: Public only for testing.\r\n */\r\n public static TotalLabel = 'TableTotalLabel';\r\n\r\n private element: JQuery;\r\n private currentViewport: IViewport;\r\n private style: IVisualStyle;\r\n private dataView: DataView;\r\n private formatter: ICustomValueColumnFormatter;\r\n private isInteractive: boolean;\r\n private isTouchEnabled: boolean;\r\n private hostServices: IVisualHostServices;\r\n private hierarchyNavigator: IMatrixHierarchyNavigator;\r\n private waitingForData: boolean;\r\n private tablixControl: controls.TablixControl;\r\n private lastAllowHeaderResize: boolean;\r\n private waitingForSort: boolean;\r\n private columnWidthManager: controls.TablixColumnWidthManager;\r\n private isFormattingPropertiesEnabled: boolean;\r\n\r\n constructor(options?: MatrixConstructorOptions) {\r\n if (options) {\r\n this.isFormattingPropertiesEnabled = options.isFormattingPropertiesEnabled;\r\n this.isTouchEnabled = options.isTouchEnabled;\r\n }\r\n }\r\n\r\n public static customizeQuery(options: CustomizeQueryOptions): void {\r\n let dataViewMapping = options.dataViewMappings[0];\r\n if (!dataViewMapping || !dataViewMapping.matrix || !dataViewMapping.metadata)\r\n return;\r\n\r\n let dataViewMatrix: data.CompiledDataViewMatrixMapping = <data.CompiledDataViewMatrixMapping>dataViewMapping.matrix;\r\n\r\n //If Columns Hierarchy is not empty, set Window DataReduction Count to 100\r\n if (!_.isEmpty(dataViewMatrix.columns.for.in.items)) {\r\n dataViewMatrix.rows.dataReductionAlgorithm.window.count = 100;\r\n }\r\n let objects: controls.TablixFormattingPropertiesMatrix = <controls.TablixFormattingPropertiesMatrix>dataViewMapping.metadata.objects;\r\n (<data.CompiledDataViewRoleForMappingWithReduction>dataViewMatrix.rows).for.in.subtotalType = TablixUtils.shouldShowRowSubtotals(objects) ? data.CompiledSubtotalType.After : data.CompiledSubtotalType.None;\r\n dataViewMatrix.columns.for.in.subtotalType = TablixUtils.shouldShowColumnSubtotals(objects) ? data.CompiledSubtotalType.After : data.CompiledSubtotalType.None;\r\n }\r\n\r\n public static getSortableRoles(): string[] {\r\n return ['Rows', 'Values'];\r\n }\r\n\r\n public init(options: VisualInitOptions): void {\r\n this.element = options.element;\r\n this.style = options.style;\r\n this.updateViewport(options.viewport);\r\n this.formatter = valueFormatter.formatValueColumn;\r\n this.isInteractive = options.interactivity && options.interactivity.selection != null;\r\n this.hostServices = options.host;\r\n\r\n this.waitingForData = false;\r\n this.lastAllowHeaderResize = true;\r\n this.waitingForSort = false;\r\n }\r\n\r\n public static converter(dataView: DataView, isFormattingPropertiesEnabled: boolean): TablixFormattingProperties {\r\n debug.assertValue(dataView, 'dataView');\r\n let formattingProperties: TablixFormattingProperties;\r\n\r\n if (isFormattingPropertiesEnabled) {\r\n formattingProperties = TablixUtils.getMatrixFormattingProperties(dataView);\r\n }\r\n\r\n return formattingProperties;\r\n }\r\n\r\n public onResizing(finalViewport: IViewport): void {\r\n this.updateViewport(finalViewport);\r\n }\r\n\r\n /*\r\n Public for testing\r\n */\r\n public getColumnWidthManager(): controls.TablixColumnWidthManager {\r\n return this.columnWidthManager;\r\n }\r\n\r\n public onDataChanged(options: VisualDataChangedOptions): void {\r\n debug.assertValue(options, 'options');\r\n\r\n // To avoid OnDataChanged being called every time resize occurs or the auto-size property switch is flipped.\r\n if (this.columnWidthManager && this.columnWidthManager.suppressOnDataChangedNotification) {\r\n // Reset flag for cases when cross-filter/cross-higlight happens right after. We do need onDataChanged call to go through\r\n this.columnWidthManager.suppressOnDataChangedNotification = false;\r\n return;\r\n }\r\n let previousDataView = this.dataView;\r\n\r\n if (options.dataViews && options.dataViews.length > 0) {\r\n this.dataView = options.dataViews[0];\r\n let formattingProperties = Matrix.converter(this.dataView, this.isFormattingPropertiesEnabled);\r\n let textSize = formattingProperties ? formattingProperties.general.textSize : TablixUtils.getTextSize(this.dataView.metadata.objects);\r\n\r\n if (options.operationKind === VisualDataChangeOperationKind.Append) {\r\n let rootChanged = previousDataView.matrix.rows.root !== this.dataView.matrix.rows.root;\r\n\r\n this.hierarchyNavigator.update(this.dataView.matrix, rootChanged);\r\n //If Root for Rows or Columns has changed by the DataViewTransform (e.g. when having reorders in values)\r\n if (rootChanged)\r\n this.tablixControl.updateModels(/*resetScrollOffsets*/false, this.dataView.matrix.rows.root.children, this.dataView.matrix.columns.root.children);\r\n\r\n this.refreshControl(/*clear*/false);\r\n } else {\r\n this.createOrUpdateHierarchyNavigator();\r\n this.createColumnWidthManager();\r\n this.createTablixControl(textSize);\r\n let binder = <MatrixBinder>this.tablixControl.getBinder();\r\n binder.onDataViewChanged(formattingProperties);\r\n this.populateColumnWidths();\r\n this.updateInternal(this.dataView, textSize, previousDataView);\r\n }\r\n }\r\n\r\n this.waitingForData = false;\r\n this.waitingForSort = false;\r\n }\r\n\r\n private populateColumnWidths(): void {\r\n if (this.columnWidthManager) {\r\n this.columnWidthManager.deserializeTablixColumnWidths();\r\n if (this.columnWidthManager.persistColumnWidthsOnHost())\r\n this.persistColumnWidths(this.columnWidthManager.getVisualObjectInstancesToPersist());\r\n }\r\n }\r\n\r\n public columnWidthChanged(index: number, width: number): void {\r\n this.columnWidthManager.columnWidthChanged(index, width);\r\n this.persistColumnWidths(this.columnWidthManager.getVisualObjectInstancesToPersist());\r\n }\r\n\r\n private persistColumnWidths(objectInstances: VisualObjectInstancesToPersist): void {\r\n this.hostServices.persistProperties(objectInstances);\r\n }\r\n\r\n private updateViewport(newViewport: IViewport) {\r\n this.currentViewport = newViewport;\r\n\r\n if (this.tablixControl) {\r\n this.tablixControl.viewport = this.currentViewport;\r\n this.verifyHeaderResize();\r\n\r\n this.refreshControl(/*clear*/false);\r\n }\r\n }\r\n\r\n private refreshControl(clear: boolean) {\r\n if (visibilityHelper.partiallyVisible(this.element) || this.getLayoutKind() === controls.TablixLayoutKind.DashboardTile) {\r\n this.tablixControl.refresh(clear);\r\n }\r\n }\r\n\r\n private getLayoutKind() {\r\n return this.isInteractive ? controls.TablixLayoutKind.Canvas : controls.TablixLayoutKind.DashboardTile;\r\n }\r\n\r\n private createOrUpdateHierarchyNavigator(): void {\r\n if (!this.tablixControl) {\r\n let matrixNavigator = createMatrixHierarchyNavigator(this.dataView.matrix, this.formatter);\r\n this.hierarchyNavigator = matrixNavigator;\r\n }\r\n else {\r\n this.hierarchyNavigator.update(this.dataView.matrix);\r\n }\r\n }\r\n\r\n private createTablixControl(textSize: number): void {\r\n if (!this.tablixControl) {\r\n // Create the control\r\n this.tablixControl = this.createControl(this.hierarchyNavigator, textSize);\r\n }\r\n }\r\n\r\n private createColumnWidthManager(): void {\r\n let columnHierarchy: MatrixHierarchy = (<MatrixHierarchyNavigator>this.hierarchyNavigator).getMatrixColumnHierarchy();\r\n if (!this.columnWidthManager) {\r\n this.columnWidthManager = new controls.TablixColumnWidthManager(this.dataView, true /* isMatrix */, columnHierarchy.leafNodes);\r\n this.columnWidthManager.columnWidthResizeCallback = (i, w) => this.columnWidthChanged(i, w);\r\n }\r\n else {\r\n this.columnWidthManager.updateDataView(this.dataView, columnHierarchy.leafNodes);\r\n }\r\n }\r\n\r\n private createControl(matrixNavigator: IMatrixHierarchyNavigator, textSize: number): controls.TablixControl {\r\n let layoutKind = this.getLayoutKind();\r\n\r\n let matrixBinderOptions: MatrixBinderOptions = {\r\n onBindRowHeader: (item: MatrixVisualNode) => { this.onBindRowHeader(item); },\r\n totalLabel: this.hostServices.getLocalizedString(Matrix.TotalLabel),\r\n onColumnHeaderClick: (queryName: string) => this.onColumnHeaderClick(queryName),\r\n };\r\n let matrixBinder = new MatrixBinder(this.hierarchyNavigator, matrixBinderOptions);\r\n\r\n let layoutManager: controls.internal.TablixLayoutManager = layoutKind === controls.TablixLayoutKind.DashboardTile\r\n ? controls.internal.DashboardTablixLayoutManager.createLayoutManager(matrixBinder)\r\n : controls.internal.CanvasTablixLayoutManager.createLayoutManager(matrixBinder, this.columnWidthManager);\r\n\r\n let tablixContainer = document.createElement('div');\r\n this.element.append(tablixContainer);\r\n\r\n let tablixOptions: controls.TablixOptions = {\r\n interactive: this.isInteractive,\r\n enableTouchSupport: this.isTouchEnabled,\r\n fontSize: TablixUtils.getTextSizeInPx(textSize),\r\n };\r\n\r\n return new controls.TablixControl(matrixNavigator, layoutManager, matrixBinder, tablixContainer, tablixOptions);\r\n }\r\n\r\n private updateInternal(dataView: DataView, textSize: number, previousDataView: DataView) {\r\n if (this.getLayoutKind() === controls.TablixLayoutKind.DashboardTile) {\r\n this.tablixControl.layoutManager.adjustContentSize(UrlHelper.hasImageColumn(dataView));\r\n }\r\n\r\n this.tablixControl.fontSize = TablixUtils.getTextSizeInPx(textSize);\r\n this.verifyHeaderResize();\r\n\r\n // Update models before the viewport to make sure column widths are computed correctly\r\n this.tablixControl.updateModels(/*resetScrollOffsets*/true, dataView.matrix.rows.root.children, dataView.matrix.columns.root.children);\r\n this.tablixControl.viewport = this.currentViewport;\r\n let shouldClearControl = this.shouldClearControl(previousDataView, dataView);\r\n\r\n // We need the layout for the DIV to be done so that the control can measure items correctly.\r\n setTimeout(() => {\r\n // Render\r\n this.refreshControl(shouldClearControl);\r\n this.columnWidthManager.persistAllColumnWidths(this.tablixControl.layoutManager.columnWidthsToPersist);\r\n if (this.columnWidthManager.persistColumnWidthsOnHost())\r\n this.persistColumnWidths(this.columnWidthManager.getVisualObjectInstancesToPersist());\r\n }, 0);\r\n }\r\n\r\n private shouldClearControl(previousDataView: DataView, newDataView: DataView) {\r\n if (!this.waitingForSort || !previousDataView || !newDataView)\r\n return true;\r\n\r\n return !DataViewAnalysis.isMetadataEquivalent(previousDataView.metadata, newDataView.metadata);\r\n }\r\n\r\n private onBindRowHeader(item: MatrixVisualNode): void {\r\n if (this.needsMoreData(item)) {\r\n this.hostServices.loadMoreData();\r\n this.waitingForData = true;\r\n }\r\n }\r\n\r\n private onColumnHeaderClick(queryName: string) {\r\n let sortDescriptors: SortableFieldDescriptor[] = [{\r\n queryName: queryName,\r\n }];\r\n let args: CustomSortEventArgs = {\r\n sortDescriptors: sortDescriptors\r\n };\r\n this.waitingForSort = true;\r\n this.hostServices.onCustomSort(args);\r\n }\r\n \r\n /**\r\n * Note: Public for testability.\r\n */\r\n public needsMoreData(item: MatrixVisualNode): boolean {\r\n if (this.waitingForData || !this.hierarchyNavigator.isLeaf(item) || !this.dataView.metadata || !this.dataView.metadata.segment)\r\n return false;\r\n\r\n let leafCount = this.tablixControl.rowDimension.getItemsCount();\r\n let loadMoreThreshold = leafCount * Matrix.preferredLoadMoreThreshold;\r\n\r\n return this.hierarchyNavigator.getLeafIndex(item) >= loadMoreThreshold;\r\n }\r\n\r\n public enumerateObjectInstances(options: EnumerateVisualObjectInstancesOptions): VisualObjectInstanceEnumeration {\r\n let enumeration = new ObjectEnumerationBuilder();\r\n\r\n if (this.dataView) {\r\n TablixUtils.setEnumeration(options, enumeration, this.dataView, this.isFormattingPropertiesEnabled, controls.TablixType.Matrix);\r\n }\r\n\r\n return enumeration.complete();\r\n }\r\n\r\n private shouldAllowHeaderResize(): boolean {\r\n return this.hostServices.getViewMode() === ViewMode.Edit;\r\n }\r\n\r\n private verifyHeaderResize() {\r\n let currentAllowHeaderResize = this.shouldAllowHeaderResize();\r\n if (currentAllowHeaderResize !== this.lastAllowHeaderResize) {\r\n this.lastAllowHeaderResize = currentAllowHeaderResize;\r\n this.tablixControl.layoutManager.setAllowHeaderResize(currentAllowHeaderResize);\r\n }\r\n }\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n import CssConstants = jsCommon.CssConstants;\r\n\r\n export interface TreemapConstructorOptions {\r\n animator?: ITreemapAnimator;\r\n isScrollable: boolean;\r\n behavior?: TreemapWebBehavior;\r\n tooltipsEnabled?: boolean;\r\n }\r\n\r\n export interface TreemapData {\r\n root: TreemapNode;\r\n hasHighlights: boolean;\r\n legendData: LegendData;\r\n dataLabelsSettings: VisualDataLabelsSettings;\r\n legendObjectProperties?: DataViewObject;\r\n dataWasCulled: boolean;\r\n }\r\n\r\n /**\r\n * Treemap node (we extend D3 node (GraphNode) because treemap layout methods rely on the type).\r\n */\r\n export interface TreemapNode extends D3.Layout.GraphNode, SelectableDataPoint, TooltipEnabledDataPoint, LabelEnabledDataPoint {\r\n key: any;\r\n highlightMultiplier?: number;\r\n color: string;\r\n highlightedTooltipInfo?: TooltipDataItem[];\r\n }\r\n\r\n interface TreemapRawData {\r\n values: number[][];\r\n highlights?: number[][];\r\n highlightsOverflow?: boolean;\r\n totalValue: number;\r\n }\r\n\r\n export interface ITreemapLayout {\r\n shapeClass: (d: TreemapNode) => string;\r\n shapeLayout: {\r\n x: (d: TreemapNode) => number;\r\n y: (d: TreemapNode) => number;\r\n width: (d: TreemapNode) => number;\r\n height: (d: TreemapNode) => number;\r\n };\r\n highlightShapeClass: (d: TreemapNode) => string;\r\n highlightShapeLayout: {\r\n x: (d: TreemapNode) => number;\r\n y: (d: TreemapNode) => number;\r\n width: (d: TreemapNode) => number;\r\n height: (d: TreemapNode) => number;\r\n };\r\n zeroShapeLayout: {\r\n x: (d: TreemapNode) => number;\r\n y: (d: TreemapNode) => number;\r\n width: (d: TreemapNode) => number;\r\n height: (d: TreemapNode) => number;\r\n };\r\n majorLabelClass: (d: TreemapNode) => string;\r\n majorLabelLayout: {\r\n x: (d: TreemapNode) => number;\r\n y: (d: TreemapNode) => number;\r\n };\r\n majorLabelText: (d: TreemapNode) => string;\r\n minorLabelClass: (d: TreemapNode) => string;\r\n minorLabelLayout: {\r\n x: (d: TreemapNode) => number;\r\n y: (d: TreemapNode) => number;\r\n };\r\n minorLabelText: (d: TreemapNode) => string;\r\n areMajorLabelsEnabled: () => boolean;\r\n areMinorLabelsEnabled: () => boolean;\r\n }\r\n\r\n // Todo: move to shared location\r\n interface DataPointObject extends DataViewObject {\r\n fill: Fill;\r\n }\r\n\r\n /**\r\n * Renders an interactive treemap visual from categorical data.\r\n */\r\n export class Treemap implements IVisual {\r\n public static DimmedShapeOpacity = 0.4;\r\n\r\n private static ClassName = 'treemap';\r\n public static LabelsGroupClassName = \"labels\";\r\n public static MajorLabelClassName = 'majorLabel';\r\n public static MinorLabelClassName = 'minorLabel';\r\n public static ShapesClassName = \"shapes\";\r\n public static TreemapNodeClassName = \"treemapNode\";\r\n public static RootNodeClassName = 'rootNode';\r\n public static ParentGroupClassName = 'parentGroup';\r\n public static NodeGroupClassName = 'nodeGroup';\r\n public static HighlightNodeClassName = 'treemapNodeHighlight';\r\n private static TextMargin = 5;\r\n private static MinorLabelTextSize = 10;\r\n private static MinTextWidthForMinorLabel = 18;\r\n private static MajorLabelTextSize = 12;\r\n private static MinTextWidthForMajorLabel = 22;\r\n private static MajorLabelTextProperties: TextProperties = {\r\n fontFamily: 'wf_segoe-ui_normal',\r\n fontSize: Treemap.MajorLabelTextSize + 'px'\r\n };\r\n\r\n /**\r\n * A rect with an area of 9 is a treemap rectangle of only\r\n * a single pixel in the middle with a 1 pixel stroke on each edge.\r\n */\r\n private static CullableArea = 9;\r\n\r\n private svg: D3.Selection;\r\n private treemap: D3.Layout.TreeMapLayout;\r\n private shapeGraphicsContext: D3.Selection;\r\n private labelGraphicsContext: D3.Selection;\r\n // TODO: Remove this once all visuals have implemented update.\r\n private currentViewport: IViewport;\r\n private legend: ILegend;\r\n\r\n private data: TreemapData;\r\n private style: IVisualStyle;\r\n private colors: IDataColorPalette;\r\n private element: JQuery;\r\n private options: VisualInitOptions;\r\n private isScrollable: boolean;\r\n private hostService: IVisualHostServices;\r\n private tooltipsEnabled: boolean;\r\n\r\n /**\r\n * Note: Public for testing.\r\n */\r\n public animator: ITreemapAnimator;\r\n private interactivityService: IInteractivityService;\r\n private behavior: TreemapWebBehavior;\r\n\r\n // TODO: Remove this once all visuals have implemented update.\r\n private dataViews: DataView[];\r\n\r\n public static getLayout(labelsSettings: VisualDataLabelsSettings, alternativeScale: number): ITreemapLayout {\r\n let formattersCache = dataLabelUtils.createColumnFormatterCacheManager();\r\n let majorLabelsEnabled = labelsSettings.showCategory;\r\n let minorLabelsEnabled = labelsSettings.show || labelsSettings.showCategory;\r\n\r\n return {\r\n shapeClass: (d) => Treemap.getNodeClass(d, false),\r\n shapeLayout: Treemap.createTreemapShapeLayout(false),\r\n highlightShapeClass: (d) => Treemap.getNodeClass(d, true),\r\n highlightShapeLayout: Treemap.createTreemapShapeLayout(true),\r\n zeroShapeLayout: Treemap.createTreemapZeroShapeLayout(),\r\n majorLabelClass: (d) => Treemap.MajorLabelClassName,\r\n majorLabelLayout: {\r\n x: (d) => d.x + Treemap.TextMargin,\r\n y: (d) => d.y + Treemap.TextMargin + Treemap.MajorLabelTextSize,\r\n },\r\n majorLabelText: (d) => Treemap.createMajorLabelText(d, labelsSettings, alternativeScale, formattersCache),\r\n\r\n minorLabelClass: (d) => Treemap.MinorLabelClassName,\r\n minorLabelLayout: {\r\n x: (d) => d.x + Treemap.TextMargin,\r\n y: (d) => d.y + d.dy - Treemap.TextMargin,\r\n },\r\n minorLabelText: (d) => Treemap.createMinorLabelText(d, labelsSettings, alternativeScale, formattersCache),\r\n areMajorLabelsEnabled: () => majorLabelsEnabled,\r\n areMinorLabelsEnabled: () => minorLabelsEnabled,\r\n };\r\n }\r\n\r\n constructor(options?: TreemapConstructorOptions) {\r\n this.tooltipsEnabled = options && options.tooltipsEnabled;\r\n if (options && options.animator) {\r\n this.animator = options.animator;\r\n this.isScrollable = options.isScrollable ? options.isScrollable : false;\r\n this.behavior = options.behavior;\r\n }\r\n }\r\n\r\n public init(options: VisualInitOptions): void {\r\n this.options = options;\r\n let element = options.element;\r\n\r\n // Ensure viewport is empty on init\r\n element.empty();\r\n\r\n this.svg = d3.select(element.get(0))\r\n .append('svg')\r\n .style('position', 'absolute')\r\n .classed(Treemap.ClassName, true);\r\n this.shapeGraphicsContext = this.svg\r\n .append('g')\r\n .classed(Treemap.ShapesClassName, true);\r\n this.labelGraphicsContext = this.svg\r\n .append('g')\r\n .classed(Treemap.LabelsGroupClassName, true);\r\n\r\n this.element = element;\r\n\r\n // avoid deep copy\r\n this.currentViewport = {\r\n height: options.viewport.height,\r\n width: options.viewport.width,\r\n };\r\n\r\n this.style = options.style;\r\n\r\n this.treemap = d3.layout.treemap()\r\n .sticky(false)\r\n .sort((a, b) => a.size - b.size)\r\n .value((d) => d.size)\r\n .round(false);\r\n\r\n if (this.behavior) {\r\n this.interactivityService = createInteractivityService(options.host);\r\n }\r\n this.legend = createLegend(element, options.interactivity && options.interactivity.isInteractiveLegend, this.interactivityService, this.isScrollable);\r\n this.colors = this.style.colorPalette.dataColors;\r\n\r\n this.hostService = options.host;\r\n }\r\n\r\n /**\r\n * Note: Public for testing purposes.\r\n */\r\n public static converter(dataView: DataView, colors: IDataColorPalette, labelSettings: VisualDataLabelsSettings, interactivityService: IInteractivityService, viewport: IViewport, legendObjectProperties?: DataViewObject): TreemapData {\r\n let rootNode: TreemapNode = {\r\n key: \"root\",\r\n name: \"root\",\r\n children: [],\r\n selected: false,\r\n highlightMultiplier: 0,\r\n identity: SelectionId.createNull(),\r\n color: undefined,\r\n };\r\n let allNodes: TreemapNode[] = [];\r\n let hasHighlights: boolean;\r\n let legendDataPoints: LegendDataPoint[] = [];\r\n let legendTitle = \"\";\r\n let colorHelper = new ColorHelper(colors, treemapProps.dataPoint.fill);\r\n let dataWasCulled = undefined;\r\n if (dataView && dataView.metadata && dataView.metadata.objects) {\r\n let objects = dataView.metadata.objects;\r\n\r\n labelSettings.show = DataViewObjects.getValue(objects, treemapProps.labels.show, labelSettings.show);\r\n labelSettings.labelColor = DataViewObjects.getFillColor(objects, treemapProps.labels.color, labelSettings.labelColor);\r\n labelSettings.displayUnits = DataViewObjects.getValue(objects, treemapProps.labels.labelDisplayUnits, labelSettings.displayUnits);\r\n labelSettings.precision = DataViewObjects.getValue(objects, treemapProps.labels.labelPrecision, labelSettings.precision);\r\n labelSettings.showCategory = DataViewObjects.getValue(objects, treemapProps.categoryLabels.show, labelSettings.showCategory);\r\n }\r\n\r\n if (dataView && dataView.categorical && dataView.categorical.values) {\r\n let data = dataView.categorical;\r\n let valueColumns = data.values;\r\n hasHighlights = !!(valueColumns.length > 0 && valueColumns[0].highlights);\r\n\r\n let formatStringProp = treemapProps.general.formatString;\r\n let result = Treemap.getValuesFromCategoricalDataView(data, hasHighlights);\r\n let values = result.values;\r\n let highlights = result.highlights;\r\n let totalValue = result.totalValue;\r\n if (result.highlightsOverflow) {\r\n hasHighlights = false;\r\n values = highlights;\r\n }\r\n\r\n let cullableValue = Treemap.getCullableValue(totalValue, viewport);\r\n\r\n let grouped = valueColumns.grouped();\r\n let isMultiSeries = grouped && grouped.length > 0 && grouped[0].values && grouped[0].values.length > 1;\r\n let hasDynamicSeries = !!valueColumns.source;\r\n dataWasCulled = false;\r\n let shouldCullValue = undefined;\r\n let highlight = undefined;\r\n if ((data.categories == null) && !_.isEmpty(values)) {\r\n // No categories, sliced by series and measures\r\n for (let i = 0, ilen = values[0].length; i < ilen; i++) {\r\n let value = values[0][i];\r\n if (!Treemap.checkValueForShape(value)) {\r\n continue;\r\n }\r\n if (value < cullableValue) {\r\n dataWasCulled = dataWasCulled || shouldCullValue;\r\n continue;\r\n }\r\n let valueColumn = valueColumns[i];\r\n let nodeName = converterHelper.getFormattedLegendLabel(valueColumn.source, valueColumns, formatStringProp);\r\n\r\n let identity = hasDynamicSeries\r\n ? SelectionId.createWithId(valueColumns[i].identity)\r\n : SelectionId.createWithMeasure(valueColumns[i].source.queryName);\r\n\r\n let key = identity.getKey();\r\n\r\n let color = hasDynamicSeries\r\n ? colorHelper.getColorForSeriesValue(grouped[i] && grouped[i].objects, data.values.identityFields, converterHelper.getSeriesName(valueColumn.source))\r\n : colorHelper.getColorForMeasure(valueColumn.source.objects, valueColumn.source.queryName);\r\n\r\n let highlightedValue = hasHighlights && highlight !== 0 ? highlight : undefined;\r\n let categorical = dataView.categorical;\r\n let valueIndex: number = i;\r\n let tooltipInfo: TooltipDataItem[] = TooltipBuilder.createTooltipInfo(formatStringProp, categorical, nodeName, value, null, null, valueIndex, i);\r\n let highlightedTooltipInfo: TooltipDataItem[];\r\n\r\n if (highlightedValue !== undefined) {\r\n highlightedTooltipInfo = TooltipBuilder.createTooltipInfo(formatStringProp, categorical, nodeName, value, null, null, valueIndex, i, highlightedValue);\r\n }\r\n\r\n let node: TreemapNode = {\r\n key: key,\r\n name: nodeName,\r\n size: value,\r\n color: color,\r\n selected: false,\r\n identity: identity,\r\n tooltipInfo: tooltipInfo,\r\n highlightedTooltipInfo: highlightedTooltipInfo,\r\n labelFormatString: valueFormatter.getFormatString(valueColumn.source, formatStringProp),\r\n };\r\n if (hasHighlights && highlights) {\r\n node.highlightMultiplier = value ? highlights[0][i] / value : 0;\r\n }\r\n rootNode.children.push(node);\r\n allNodes.push(node);\r\n legendDataPoints.push({\r\n label: nodeName,\r\n color: color,\r\n icon: LegendIcon.Box,\r\n identity: identity,\r\n selected: false\r\n });\r\n }\r\n }\r\n else if (data.categories && data.categories.length > 0) {\r\n // Create the first level from categories\r\n let categoryColumn = data.categories[0];\r\n let valueColumnCount = valueColumns.length;\r\n let categoryFormat = valueFormatter.getFormatString(categoryColumn.source, formatStringProp);\r\n\r\n legendTitle = categoryColumn.source ? categoryColumn.source.displayName : \"\";\r\n let categorical = undefined;\r\n for (let i = 0, ilen = values.length; i < ilen; i++) {\r\n let identity: SelectionId = SelectionIdBuilder.builder()\r\n .withCategory(categoryColumn, i)\r\n .createSelectionId();\r\n\r\n let key = JSON.stringify({ nodeKey: identity.getKey(), depth: 1 });\r\n\r\n let objects = categoryColumn.objects && categoryColumn.objects[i];\r\n\r\n let color = colorHelper.getColorForSeriesValue(objects, categoryColumn.identityFields, categoryColumn.values[i]);\r\n\r\n let categoryValue = valueFormatter.format(categoryColumn.values[i], categoryFormat);\r\n let value = values[i][0];\r\n let highlightedValue = hasHighlights && highlights ? highlights[i][0] : undefined;\r\n categorical = dataView.categorical;\r\n let tooltipInfo: TooltipDataItem[] = TooltipBuilder.createTooltipInfo(formatStringProp, categorical, categoryValue, value);\r\n let highlightedTooltipInfo: TooltipDataItem[];\r\n\r\n if (highlightedValue !== undefined) {\r\n highlightedTooltipInfo = TooltipBuilder.createTooltipInfo(formatStringProp, categorical, categoryValue, value, null, null, 0, i, highlightedValue);\r\n }\r\n\r\n let node: TreemapNode = {\r\n key: key,\r\n name: categoryValue,\r\n color: color,\r\n selected: false,\r\n identity: identity,\r\n tooltipInfo: tooltipInfo,\r\n highlightedTooltipInfo: highlightedTooltipInfo,\r\n labelFormatString: valueColumnCount === 1 ? valueFormatter.getFormatString(data.values[0].source, formatStringProp) : categoryFormat,\r\n };\r\n\r\n legendDataPoints.push({\r\n label: categoryValue,\r\n color: color,\r\n icon: LegendIcon.Box,\r\n identity: identity,\r\n selected: false\r\n });\r\n\r\n let total = 0;\r\n let highlightTotal = 0; // Used if omitting second level\r\n\r\n // Do not add second level if it's one and only one data point per shape and it's not a group value\r\n // e.g. Category/Series group plus only one Value field\r\n let omitSecondLevel = valueColumnCount === 1 && (valueColumns[0].source.groupName == null);\r\n let currentValues = values[i];\r\n\r\n for (let j = 0, jlen = currentValues.length; j < jlen; j++) {\r\n let valueColumn = valueColumns[j];\r\n let value = currentValues[j];\r\n let highlight: number;\r\n\r\n shouldCullValue = value < cullableValue;\r\n if (!Treemap.checkValueForShape(value) || shouldCullValue) {\r\n dataWasCulled = dataWasCulled || shouldCullValue;\r\n continue;\r\n }\r\n\r\n total += value;\r\n\r\n if (hasHighlights) {\r\n highlight = highlights[i][j];\r\n highlightTotal += highlight;\r\n }\r\n\r\n if (!omitSecondLevel) {\r\n let childName: string = null;\r\n if (isMultiSeries) {\r\n // Measure: use name and index\r\n childName = valueColumn.source.displayName;\r\n }\r\n else {\r\n // Series group instance\r\n childName = valueColumn.source.groupName;\r\n }\r\n\r\n let categoricalValues = categorical ? categorical.values : null;\r\n let measureId = isMultiSeries ? valueColumn.source.queryName : undefined;\r\n let childIdentity = SelectionIdBuilder.builder()\r\n .withCategory(categoryColumn, i)\r\n .withSeries(categoricalValues, valueColumn)\r\n .withMeasure(measureId)\r\n .createSelectionId();\r\n let childKey = JSON.stringify({ nodeKey: childIdentity.getKey(), depth: 2 });\r\n\r\n let highlightedValue = hasHighlights && highlight !== 0 ? highlight : undefined;\r\n categorical = dataView.categorical;\r\n let tooltipInfo: TooltipDataItem[] = TooltipBuilder.createTooltipInfo(formatStringProp, categorical, categoryValue, value, null, null, j, i);\r\n let highlightedTooltipInfo: TooltipDataItem[];\r\n\r\n if (highlightedValue !== undefined) {\r\n highlightedTooltipInfo = TooltipBuilder.createTooltipInfo(formatStringProp, categorical, categoryValue, value, null, null, j, i, highlightedValue);\r\n }\r\n\r\n let childNode: TreemapNode = {\r\n key: childKey,\r\n name: childName,\r\n size: value,\r\n color: color,\r\n selected: false,\r\n identity: childIdentity,\r\n tooltipInfo: tooltipInfo,\r\n highlightedTooltipInfo: highlightedTooltipInfo,\r\n labelFormatString: valueFormatter.getFormatString(valueColumn.source, formatStringProp),\r\n };\r\n if (hasHighlights)\r\n childNode.highlightMultiplier = value ? highlight / value : 0;\r\n if (node.children == null)\r\n node.children = [];\r\n\r\n node.children.push(childNode);\r\n allNodes.push(childNode);\r\n }\r\n }\r\n\r\n if (Treemap.checkValueForShape(total)) {\r\n node.size = total;\r\n rootNode.children.push(node);\r\n allNodes.push(node);\r\n }\r\n if (hasHighlights)\r\n node.highlightMultiplier = total ? highlightTotal / total : 0;\r\n }\r\n }\r\n }\r\n\r\n if (interactivityService) {\r\n interactivityService.applySelectionStateToData(allNodes);\r\n interactivityService.applySelectionStateToData(legendDataPoints);\r\n }\r\n\r\n return {\r\n root: rootNode,\r\n hasHighlights: hasHighlights,\r\n legendData: { title: legendTitle, dataPoints: legendDataPoints, fontSize: SVGLegend.DefaultFontSizeInPt },\r\n dataLabelsSettings: labelSettings,\r\n legendObjectProperties: legendObjectProperties,\r\n dataWasCulled: dataWasCulled,\r\n };\r\n }\r\n\r\n private static getValuesFromCategoricalDataView(data: DataViewCategorical, hasHighlights: boolean): TreemapRawData {\r\n let valueColumns = data.values;\r\n let categoryValueCount: number;\r\n if (valueColumns && (data.categories == null)) {\r\n categoryValueCount = 1; // We only get the first value out of each valueColumn since we don't have a category\r\n }\r\n else if (valueColumns && data.categories && data.categories.length > 0) {\r\n categoryValueCount = data.categories[0].values.length;\r\n }\r\n\r\n let values: number[][] = [];\r\n let highlights: number[][] = [];\r\n let totalValue = 0;\r\n for (let i = 0; i < categoryValueCount; i++) {\r\n values.push([]);\r\n if (hasHighlights)\r\n highlights.push([]);\r\n }\r\n\r\n let highlightsOverflow: boolean;\r\n for (let j = 0; j < valueColumns.length; j++) {\r\n let valueColumn = valueColumns[j];\r\n for (let i = 0; i < categoryValueCount; i++) {\r\n let value = valueColumn.values[i];\r\n values[i].push(value);\r\n totalValue += isNaN(value) ? 0 : value;\r\n if (hasHighlights) {\r\n let highlight = valueColumn.highlights[i];\r\n if (!highlight)\r\n highlight = 0;\r\n highlights[i].push(highlight);\r\n if (highlight > value)\r\n highlightsOverflow = true;\r\n }\r\n }\r\n }\r\n\r\n return {\r\n values: values,\r\n highlights: hasHighlights ? highlights : undefined,\r\n highlightsOverflow: hasHighlights ? highlightsOverflow : undefined,\r\n totalValue: totalValue,\r\n };\r\n }\r\n\r\n private static getCullableValue(totalValue: number, viewport: IViewport): number {\r\n let totalArea = viewport.width * viewport.height;\r\n let culledPercent = Treemap.CullableArea / totalArea;\r\n return culledPercent * totalValue;\r\n }\r\n\r\n public update(options: VisualUpdateOptions) {\r\n debug.assertValue(options, 'options');\r\n\r\n let dataViews = this.dataViews = options.dataViews;\r\n this.currentViewport = options.viewport;\r\n let dataViewCategorical = dataViews && dataViews.length > 0 && dataViews[0].categorical ? dataViews[0].categorical : undefined;\r\n let labelSettings = dataLabelUtils.getDefaultTreemapLabelSettings();\r\n let legendObjectProperties = null;\r\n\r\n if (dataViewCategorical) {\r\n let dataView = dataViews[0];\r\n let dataViewMetadata = dataView.metadata;\r\n let objects: DataViewObjects;\r\n if (dataViewMetadata)\r\n objects = dataViewMetadata.objects;\r\n\r\n if (objects) {\r\n legendObjectProperties = objects['legend'];\r\n }\r\n\r\n this.data = Treemap.converter(dataView, this.colors, labelSettings, this.interactivityService, this.currentViewport, legendObjectProperties);\r\n }\r\n else {\r\n let rootNode: TreemapNode = {\r\n key: \"root\",\r\n name: \"root\",\r\n children: [],\r\n selected: false,\r\n highlightMultiplier: 0,\r\n identity: SelectionId.createNull(),\r\n color: undefined,\r\n };\r\n let legendData: LegendData = { title: \"\", dataPoints: [] };\r\n let treeMapData: TreemapData = {\r\n root: rootNode,\r\n hasHighlights: false,\r\n legendData: legendData,\r\n dataLabelsSettings: labelSettings,\r\n dataWasCulled: false,\r\n };\r\n this.data = treeMapData;\r\n }\r\n\r\n this.updateInternal(options.suppressAnimations);\r\n\r\n if (dataViews) {\r\n let warnings = getInvalidValueWarnings(\r\n dataViews,\r\n false /*supportsNaN*/,\r\n false /*supportsNegativeInfinity*/,\r\n false /*supportsPositiveInfinity*/);\r\n\r\n if (this.data.dataWasCulled) {\r\n warnings.unshift(new GeometryCulledWarning());\r\n }\r\n\r\n this.hostService.setWarnings(warnings);\r\n }\r\n }\r\n\r\n // TODO: Remove this once all visuals have implemented update.\r\n public onDataChanged(options: VisualDataChangedOptions): void {\r\n this.update({\r\n suppressAnimations: options.suppressAnimations,\r\n dataViews: options.dataViews,\r\n viewport: this.currentViewport\r\n });\r\n }\r\n\r\n // TODO: Remove this once all visuals have implemented update.\r\n public onResizing(viewport: IViewport): void {\r\n this.update({\r\n suppressAnimations: true,\r\n dataViews: this.dataViews,\r\n viewport: viewport\r\n });\r\n }\r\n\r\n public onClearSelection(): void {\r\n if (this.interactivityService)\r\n this.interactivityService.clearSelection();\r\n }\r\n\r\n public enumerateObjectInstances(options: EnumerateVisualObjectInstancesOptions): VisualObjectInstanceEnumeration {\r\n let data = this.data;\r\n if (!data)\r\n return;\r\n\r\n let objectName = options.objectName,\r\n enumeration = new ObjectEnumerationBuilder();\r\n\r\n let dataLabelsSettings = this.data.dataLabelsSettings\r\n ? this.data.dataLabelsSettings\r\n : dataLabelUtils.getDefaultTreemapLabelSettings();\r\n\r\n switch (objectName) {\r\n case 'dataPoint':\r\n let dataViewCat: DataViewCategorical = this.dataViews && this.dataViews.length > 0 && this.dataViews[0] && this.dataViews[0].categorical;\r\n let hasGradientRole = GradientUtils.hasGradientRole(dataViewCat);\r\n if (!hasGradientRole)\r\n this.enumerateDataPoints(enumeration, data);\r\n break;\r\n case 'legend':\r\n return this.enumerateLegend(data);\r\n case 'labels':\r\n let labelSettingOptions: VisualDataLabelsSettingsOptions = {\r\n enumeration: enumeration,\r\n dataLabelsSettings: dataLabelsSettings,\r\n show: true,\r\n displayUnits: true,\r\n precision: true,\r\n };\r\n dataLabelUtils.enumerateDataLabels(labelSettingOptions);\r\n break;\r\n case 'categoryLabels':\r\n dataLabelUtils.enumerateCategoryLabels(enumeration, dataLabelsSettings, false /* withFill */, true /* isShowCategory */);\r\n break;\r\n }\r\n\r\n return enumeration.complete();\r\n }\r\n\r\n private enumerateDataPoints(enumeration: ObjectEnumerationBuilder, data: TreemapData): void {\r\n let rootChildren = data.root.children;\r\n if (_.isEmpty(rootChildren))\r\n return;\r\n\r\n for (let y = 0; y < rootChildren.length; y++) {\r\n let treemapNode = <TreemapNode>rootChildren[y];\r\n enumeration.pushInstance({\r\n displayName: treemapNode.name,\r\n selector: treemapNode.identity.getSelector(),\r\n properties: {\r\n fill: { solid: { color: treemapNode.color } }\r\n },\r\n objectName: 'dataPoint'\r\n });\r\n }\r\n }\r\n\r\n private enumerateLegend(data: TreemapData): VisualObjectInstance[] {\r\n let legendObjectProperties: DataViewObjects = { legend: data.legendObjectProperties };\r\n\r\n let show = DataViewObjects.getValue(legendObjectProperties, treemapProps.legend.show, this.legend.isVisible());\r\n let showTitle = DataViewObjects.getValue(legendObjectProperties, treemapProps.legend.showTitle, true);\r\n let titleText = DataViewObjects.getValue(legendObjectProperties, treemapProps.legend.titleText, this.data.legendData.title);\r\n let labelColor = DataViewObject.getValue(legendObjectProperties, legendProps.labelColor, this.data.legendData ? this.data.legendData.labelColor : LegendData.DefaultLegendLabelFillColor);\r\n let labelFontSize = DataViewObject.getValue(legendObjectProperties, legendProps.fontSize, this.data.legendData && this.data.legendData.fontSize ? this.data.legendData.fontSize : SVGLegend.DefaultFontSizeInPt);\r\n\r\n return [{\r\n selector: null,\r\n objectName: 'legend',\r\n properties: {\r\n show: show,\r\n position: LegendPosition[this.legend.getOrientation()],\r\n showTitle: showTitle,\r\n titleText: titleText,\r\n labelColor: labelColor,\r\n fontSize: labelFontSize,\r\n }\r\n }];\r\n }\r\n\r\n private static checkValueForShape(value: any): boolean {\r\n if (!value)\r\n return false;\r\n\r\n return value > 0;\r\n }\r\n\r\n private calculateTreemapSize(): IViewport {\r\n let legendMargins = this.legend.getMargins();\r\n return {\r\n height: this.currentViewport.height - legendMargins.height,\r\n width: this.currentViewport.width - legendMargins.width\r\n };\r\n }\r\n\r\n private initViewportDependantProperties(duration: number = 0): void {\r\n\r\n let viewport = this.calculateTreemapSize();\r\n\r\n this.svg.attr({\r\n width: viewport.width,\r\n height: viewport.height\r\n });\r\n Legend.positionChartArea(this.svg, this.legend);\r\n\r\n SVGUtil.flushAllD3TransitionsIfNeeded(this.options);\r\n }\r\n\r\n private static hasChildrenWithIdentity(node: D3.Layout.GraphNode): boolean {\r\n let children = node.children;\r\n if (!children)\r\n return false;\r\n\r\n let count = children.length;\r\n if (count === 0)\r\n return false;\r\n\r\n for (let i = count - 1; i >= 0; i--) {\r\n if ((<TreemapNode>children[i]).identity.hasIdentity())\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n private static canDisplayMajorLabel(node: TreemapNode): boolean {\r\n // Only display major labels for level 1\r\n if (node.depth !== 1)\r\n return false;\r\n\r\n if (_.isEmpty(node.name))\r\n return false;\r\n\r\n // Check if the room is enough for text with or without ellipse\r\n let availableWidth = node.dx - Treemap.TextMargin * 2;\r\n if (availableWidth < Treemap.MinTextWidthForMajorLabel)\r\n return false;\r\n \r\n // Check if the shape is high enough for label\r\n let textHeightWithMargin = Treemap.MajorLabelTextSize + Treemap.TextMargin * 2;\r\n if (node.dy < textHeightWithMargin)\r\n return false;\r\n\r\n return true;\r\n }\r\n\r\n private static canDisplayMinorLabel(node: TreemapNode, labelSettings: VisualDataLabelsSettings): boolean {\r\n // Only display minor labels for level 1 and 2\r\n if (node.depth < 1 || node.depth > 2)\r\n return false;\r\n\r\n // If a depth 1 node has children or is not showing data labels, do not show minor labels\r\n if (node.depth === 1 && (node.children || !labelSettings.show)) {\r\n return false;\r\n }\r\n\r\n if (_.isEmpty(node.name))\r\n return false;\r\n \r\n // Check if the room is enough for text with or without ellipse\r\n let availableWidth = node.dx - Treemap.TextMargin * 2;\r\n if (availableWidth < Treemap.MinTextWidthForMinorLabel)\r\n return false;\r\n \r\n // Check if the shape is high enough for label\r\n let textHeightWithMargin = Treemap.MinorLabelTextSize + Treemap.TextMargin * 2;\r\n if (node.dy < textHeightWithMargin)\r\n return false;\r\n\r\n if (node.depth === 2) {\r\n let parent = node.parent;\r\n let roomTop = Math.max(parent.y + Treemap.MajorLabelTextSize + Treemap.TextMargin * 2, node.y);\r\n\r\n // Parent's label needs the room\r\n if (node.y + node.dy - roomTop < textHeightWithMargin)\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n private static createMajorLabelText(node: TreemapNode, labelsSettings: VisualDataLabelsSettings, alternativeScale: number, formattersCache: IColumnFormatterCacheManager): string {\r\n let spaceAvaliableForLabels = node.dx - Treemap.TextMargin * 2;\r\n let baseTextProperties = Treemap.MajorLabelTextProperties;\r\n let textProperties: powerbi.TextProperties = {\r\n text: node.name,\r\n fontFamily: baseTextProperties.fontFamily,\r\n fontSize: baseTextProperties.fontSize\r\n };\r\n\r\n return TextMeasurementService.getTailoredTextOrDefault(textProperties, spaceAvaliableForLabels);\r\n }\r\n\r\n private static createMinorLabelText(node: TreemapNode, labelsSettings: VisualDataLabelsSettings, alternativeScale: number, formattersCache: IColumnFormatterCacheManager): string {\r\n let spaceAvaliableForLabels = node.dx - Treemap.TextMargin * 2;\r\n let label = node.name;\r\n if (labelsSettings.show) {\r\n let measureFormatter = formattersCache.getOrCreate(node.labelFormatString, labelsSettings, alternativeScale);\r\n // Create measure label\r\n label = dataLabelUtils.getLabelFormattedText({\r\n label: node.value, maxWidth:\r\n spaceAvaliableForLabels, formatter: measureFormatter\r\n });\r\n // Add category if needed (we're showing category and the node depth is 2)\r\n if (labelsSettings.showCategory && node.depth === 2)\r\n label = dataLabelUtils.getLabelFormattedText({\r\n label: node.name,\r\n maxWidth: spaceAvaliableForLabels\r\n }) + \" \" + label;\r\n }\r\n\r\n return dataLabelUtils.getLabelFormattedText({\r\n label: label,\r\n maxWidth: spaceAvaliableForLabels,\r\n fontSize: labelsSettings.fontSize\r\n });\r\n }\r\n\r\n public static getFill(d: TreemapNode, isHighlightRect: boolean): string {\r\n // NOTE: only painted shapes will catch click event. We either paint children or their parent but not both.\r\n\r\n // If it's a leaf with no category, parent will be painted instead (and support interactivity)\r\n if (d.depth > 1 && !d.identity.hasIdentity() && !isHighlightRect)\r\n return CssConstants.noneValue;\r\n\r\n // If it's not a leaf and it has children with a category, children will be painted\r\n if (Treemap.hasChildrenWithIdentity(d))\r\n return CssConstants.noneValue;\r\n\r\n return d.color;\r\n }\r\n\r\n public static getFillOpacity(d: TreemapNode, hasSelection: boolean, hasHighlights: boolean, isHighlightRect: boolean): string {\r\n if (hasHighlights) {\r\n if (isHighlightRect)\r\n return null;\r\n return Treemap.DimmedShapeOpacity.toString();\r\n }\r\n\r\n if (!hasSelection || d.selected)\r\n return null;\r\n\r\n // Parent node is selected (as an optimization, we only check below level 1 because root node cannot be selected anyway)\r\n if (d.depth > 1 && (<TreemapNode>d.parent).selected)\r\n return null;\r\n\r\n // It's a parent node with interactive children, fall back to default opacity\r\n if (Treemap.hasChildrenWithIdentity(d))\r\n return null;\r\n\r\n return Treemap.DimmedShapeOpacity.toString();\r\n }\r\n\r\n private updateInternal(suppressAnimations: boolean): void {\r\n let data = this.data;\r\n let hasHighlights = data && data.hasHighlights;\r\n let labelSettings = data ? data.dataLabelsSettings : null;\r\n let duration = AnimatorCommon.GetAnimationDuration(this.animator, suppressAnimations);\r\n\r\n if (!(this.options.interactivity && this.options.interactivity.isInteractiveLegend) && this.data) {\r\n this.renderLegend();\r\n }\r\n\r\n this.initViewportDependantProperties(duration);\r\n let viewport = this.calculateTreemapSize();\r\n\r\n this.treemap.size([viewport.width, viewport.height]);\r\n\r\n // Shapes are drawn for all nodes\r\n let nodes = (data && data.root) ? this.treemap.nodes(data.root) : [];\r\n // Highlight shapes are drawn only for nodes with non-null/undefed highlightMultipliers that have no children\r\n let highlightNodes = nodes.filter((value: TreemapNode) => value.highlightMultiplier != null && (!value.children || value.children.length === 0));\r\n let majorLabeledNodes = [];\r\n let minorLabeledNodes = [];\r\n let alternativeScale: number = null;\r\n\r\n // Only populate major labels if category labels are turned on\r\n if (labelSettings.showCategory) {\r\n majorLabeledNodes = nodes.filter((d: TreemapNode) => Treemap.canDisplayMajorLabel(d));\r\n }\r\n\r\n // Only populate minor labels if category or data labels are turned on\r\n if (labelSettings.show || labelSettings.showCategory) {\r\n minorLabeledNodes = nodes.filter((d: TreemapNode) => Treemap.canDisplayMinorLabel(d, labelSettings));\r\n\r\n // If the display unit is 0 we calculate the format scale using the maximum value available\r\n if (labelSettings.displayUnits === 0)\r\n alternativeScale = <number>d3.max(minorLabeledNodes, (d: TreemapNode) => Math.abs(d.value));\r\n }\r\n\r\n let treemapLayout = Treemap.getLayout(labelSettings, alternativeScale);\r\n let shapes: D3.UpdateSelection;\r\n let highlightShapes: D3.UpdateSelection;\r\n let majorLabels: D3.UpdateSelection;\r\n let minorLabels: D3.UpdateSelection;\r\n let result: TreemapAnimationResult;\r\n if (this.animator && !suppressAnimations) {\r\n let options: TreemapAnimationOptions = {\r\n viewModel: data,\r\n nodes: nodes,\r\n highlightNodes: highlightNodes,\r\n majorLabeledNodes: majorLabeledNodes,\r\n minorLabeledNodes: minorLabeledNodes,\r\n shapeGraphicsContext: this.shapeGraphicsContext,\r\n labelGraphicsContext: this.labelGraphicsContext,\r\n interactivityService: this.interactivityService,\r\n layout: treemapLayout,\r\n labelSettings: labelSettings,\r\n };\r\n result = this.animator.animate(options);\r\n shapes = result.shapes;\r\n highlightShapes = result.highlightShapes;\r\n majorLabels = result.majorLabels;\r\n minorLabels = result.minorLabels;\r\n }\r\n if (!this.animator || suppressAnimations || result.failed) {\r\n let hasSelection = this.interactivityService && this.interactivityService.hasSelection();\r\n let shapeGraphicsContext = this.shapeGraphicsContext;\r\n shapes = Treemap.drawDefaultShapes(shapeGraphicsContext, nodes, hasSelection, hasHighlights, treemapLayout);\r\n highlightShapes = Treemap.drawDefaultHighlightShapes(shapeGraphicsContext, highlightNodes, hasSelection, hasHighlights, treemapLayout);\r\n let labelGraphicsContext = this.labelGraphicsContext;\r\n majorLabels = Treemap.drawDefaultMajorLabels(labelGraphicsContext, majorLabeledNodes, labelSettings, treemapLayout);\r\n minorLabels = Treemap.drawDefaultMinorLabels(labelGraphicsContext, minorLabeledNodes, labelSettings, treemapLayout);\r\n }\r\n\r\n if (this.interactivityService) {\r\n let behaviorOptions: TreemapBehaviorOptions = {\r\n shapes: shapes,\r\n highlightShapes: highlightShapes,\r\n majorLabels: majorLabels,\r\n minorLabels: minorLabels,\r\n nodes: <TreemapNode[]>nodes,\r\n hasHighlights: data.hasHighlights,\r\n };\r\n\r\n this.interactivityService.bind(<TreemapNode[]>nodes, this.behavior, behaviorOptions);\r\n }\r\n\r\n if (this.tooltipsEnabled) {\r\n TooltipManager.addTooltip(shapes, (tooltipEvent: TooltipEvent) => tooltipEvent.data.tooltipInfo);\r\n TooltipManager.addTooltip(highlightShapes, (tooltipEvent: TooltipEvent) => tooltipEvent.data.highlightedTooltipInfo);\r\n }\r\n\r\n SVGUtil.flushAllD3TransitionsIfNeeded(this.options);\r\n }\r\n\r\n private renderLegend(): void {\r\n let legendObjectProperties = this.data.legendObjectProperties;\r\n if (legendObjectProperties) {\r\n let legendData = this.data.legendData;\r\n LegendData.update(legendData, legendObjectProperties);\r\n let position = <string>legendObjectProperties[legendProps.position];\r\n if (position)\r\n this.legend.changeOrientation(LegendPosition[position]);\r\n\r\n this.legend.drawLegend(legendData, this.currentViewport);\r\n } else {\r\n // TODO: Draw should be the only API. Visuals should only call that with orientation, props, etc \r\n // instead of managing state. Will follow up with another change.\r\n this.legend.changeOrientation(LegendPosition.Top);\r\n this.legend.drawLegend({ dataPoints: [] }, this.currentViewport);\r\n }\r\n }\r\n\r\n private static getNodeClass(d: TreemapNode, highlight?: boolean): string {\r\n let nodeClass: string;\r\n switch (d.depth) {\r\n case 1:\r\n nodeClass = Treemap.ParentGroupClassName;\r\n break;\r\n case 2:\r\n nodeClass = Treemap.NodeGroupClassName;\r\n break;\r\n case 0:\r\n nodeClass = Treemap.RootNodeClassName;\r\n break;\r\n default:\r\n debug.assertFail('Treemap only supports 2 levels maxiumum');\r\n }\r\n nodeClass += \" \" + (highlight ? Treemap.HighlightNodeClassName : Treemap.TreemapNodeClassName);\r\n return nodeClass;\r\n }\r\n\r\n private static createTreemapShapeLayout(isHighlightRect = false) {\r\n return {\r\n x: (d: TreemapNode) => d.x,\r\n y: (d: TreemapNode) => d.y + (isHighlightRect ? d.dy * (1 - d.highlightMultiplier) : 0),\r\n width: (d: TreemapNode) => Math.max(0, d.dx),\r\n height: (d: TreemapNode) => Math.max(0, d.dy * (isHighlightRect ? d.highlightMultiplier : 1)),\r\n };\r\n }\r\n\r\n private static createTreemapZeroShapeLayout() {\r\n return {\r\n x: (d: TreemapNode) => d.x,\r\n y: (d: TreemapNode) => d.y + d.dy,\r\n width: (d: TreemapNode) => Math.max(0, d.dx),\r\n height: (d: TreemapNode) => 0,\r\n };\r\n }\r\n\r\n public static drawDefaultShapes(context: D3.Selection, nodes: D3.Layout.GraphNode[], hasSelection: boolean, hasHighlights: boolean, layout: ITreemapLayout): D3.UpdateSelection {\r\n let isHighlightShape = false;\r\n let shapes = context.selectAll('.' + Treemap.TreemapNodeClassName)\r\n .data(nodes, (d: TreemapNode) => d.key);\r\n\r\n shapes.enter().append('rect')\r\n .attr('class', layout.shapeClass);\r\n\r\n shapes\r\n .style(\"fill\", (d: TreemapNode) => Treemap.getFill(d, isHighlightShape))\r\n .style(\"fill-opacity\", (d: TreemapNode) => Treemap.getFillOpacity(d, hasSelection, hasHighlights, isHighlightShape))\r\n .attr(layout.shapeLayout);\r\n\r\n shapes.exit().remove();\r\n\r\n return shapes;\r\n }\r\n\r\n public static drawDefaultHighlightShapes(context: D3.Selection, nodes: D3.Layout.GraphNode[], hasSelection: boolean, hasHighlights: boolean, layout: ITreemapLayout): D3.UpdateSelection {\r\n let isHighlightShape = true;\r\n let highlightShapes = context.selectAll('.' + Treemap.HighlightNodeClassName)\r\n .data(nodes, (d) => d.key + \"highlight\");\r\n\r\n highlightShapes.enter().append('rect')\r\n .attr('class', layout.highlightShapeClass);\r\n\r\n highlightShapes\r\n .style(\"fill\", (d: TreemapNode) => Treemap.getFill(d, isHighlightShape))\r\n .style(\"fill-opacity\", (d: TreemapNode) => Treemap.getFillOpacity(d, hasSelection, hasHighlights, isHighlightShape))\r\n .attr(layout.highlightShapeLayout);\r\n\r\n highlightShapes.exit().remove();\r\n return highlightShapes;\r\n }\r\n\r\n public static drawDefaultMajorLabels(context: D3.Selection, nodes: D3.Layout.GraphNode[], labelSettings: VisualDataLabelsSettings, layout: ITreemapLayout): D3.UpdateSelection {\r\n let labels = context\r\n .selectAll('.' + Treemap.MajorLabelClassName)\r\n .data(nodes, (d: TreemapNode) => d.key);\r\n\r\n labels.enter().append('text')\r\n .attr('class', layout.majorLabelClass);\r\n\r\n labels\r\n .attr(layout.majorLabelLayout)\r\n .text(layout.majorLabelText)\r\n .style('fill', () => labelSettings.labelColor);\r\n\r\n labels.exit().remove();\r\n\r\n return labels;\r\n }\r\n\r\n public static drawDefaultMinorLabels(context: D3.Selection, nodes: D3.Layout.GraphNode[], labelSettings: VisualDataLabelsSettings, layout: ITreemapLayout): D3.UpdateSelection {\r\n let labels = context\r\n .selectAll('.' + Treemap.MinorLabelClassName)\r\n .data(nodes, (d: TreemapNode) => d.key);\r\n\r\n labels.enter().append('text')\r\n .attr('class', layout.minorLabelClass);\r\n\r\n labels\r\n .attr(layout.minorLabelLayout)\r\n .text(layout.minorLabelText)\r\n .style('fill', () => labelSettings.labelColor);\r\n\r\n labels.exit().remove();\r\n\r\n return labels;\r\n }\r\n\r\n public static cleanMinorLabels(context: D3.Selection) {\r\n let empty = [];\r\n let labels = context\r\n .selectAll('.' + Treemap.LabelsGroupClassName)\r\n .selectAll('.' + Treemap.MinorLabelClassName)\r\n .data(empty);\r\n labels.exit().remove();\r\n }\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n import KpiImageSize = powerbi.visuals.KpiUtil.KpiImageSize;\r\n import KpiImageMetadata = powerbi.visuals.KpiUtil.KpiImageMetadata;\r\n import getKpiImageMetadata = powerbi.visuals.KpiUtil.getKpiImageMetadata;\r\n import ClassAndSelector = jsCommon.CssConstants.ClassAndSelector;\r\n import createClassAndSelector = jsCommon.CssConstants.createClassAndSelector;\r\n\r\n export interface CardStyleText {\r\n textSize: number;\r\n color: string;\r\n }\r\n\r\n export interface CardStyleValue extends CardStyleText {\r\n fontFamily: string;\r\n }\r\n\r\n export interface CardStyle {\r\n card: {\r\n maxFontSize: number;\r\n };\r\n label: CardStyleText;\r\n value: CardStyleValue;\r\n }\r\n\r\n export interface CardConstructorOptions {\r\n isScrollable?: boolean;\r\n displayUnitSystemType?: DisplayUnitSystemType;\r\n animator?: IGenericAnimator;\r\n }\r\n\r\n export interface CardFormatSetting {\r\n textSize: number;\r\n labelSettings: VisualDataLabelsSettings;\r\n wordWrap: boolean;\r\n }\r\n\r\n export class Card extends AnimatedText implements IVisual {\r\n private static cardClassName: string = 'card';\r\n private static Label: ClassAndSelector = createClassAndSelector('label');\r\n private static Value: ClassAndSelector = createClassAndSelector('value');\r\n private static KPIImage: ClassAndSelector = createClassAndSelector('caption');\r\n\r\n private static cardTextProperties: TextProperties = {\r\n fontSize: null,\r\n text: null,\r\n fontFamily: dataLabelUtils.LabelTextProperties.fontFamily,\r\n };\r\n\r\n public static DefaultStyle: CardStyle = {\r\n card: {\r\n maxFontSize: 200\r\n },\r\n label: {\r\n textSize: 12,\r\n color: '#a6a6a6',\r\n },\r\n value: {\r\n textSize: 27,\r\n color: '#333333',\r\n fontFamily: 'wf_segoe-ui_Semibold'\r\n }\r\n };\r\n\r\n private animationOptions: AnimationOptions;\r\n private displayUnitSystemType: DisplayUnitSystemType;\r\n private isScrollable: boolean;\r\n private graphicsContext: D3.Selection;\r\n private labelContext: D3.Selection;\r\n private cardFormatSetting: CardFormatSetting;\r\n private kpiImage: D3.Selection;\r\n\r\n public constructor(options?: CardConstructorOptions) {\r\n super(Card.cardClassName);\r\n this.isScrollable = false;\r\n this.displayUnitSystemType = DisplayUnitSystemType.WholeUnits;\r\n\r\n if (options) {\r\n this.isScrollable = !!options.isScrollable;\r\n if (options.animator)\r\n this.animator = options.animator;\r\n if (options.displayUnitSystemType != null)\r\n this.displayUnitSystemType = options.displayUnitSystemType;\r\n }\r\n }\r\n\r\n public init(options: VisualInitOptions) {\r\n debug.assertValue(options, 'options');\r\n this.animationOptions = options.animation;\r\n let element = options.element;\r\n\r\n this.kpiImage = d3.select(element.get(0)).append('div')\r\n .classed(Card.KPIImage.class, true);\r\n let svg = this.svg = d3.select(element.get(0)).append('svg');\r\n this.graphicsContext = svg.append('g');\r\n this.currentViewport = options.viewport;\r\n this.hostServices = options.host;\r\n this.style = options.style;\r\n\r\n this.updateViewportProperties();\r\n\r\n if (this.isScrollable) {\r\n svg.attr('class', Card.cardClassName);\r\n this.labelContext = svg.append('g');\r\n }\r\n }\r\n\r\n public onDataChanged(options: VisualDataChangedOptions): void {\r\n debug.assertValue(options, 'options');\r\n\r\n let dataView = options.dataViews[0];\r\n let value: any;\r\n if (dataView) {\r\n this.getMetaDataColumn(dataView);\r\n if (dataView.single) {\r\n value = dataView.single.value;\r\n }\r\n\r\n // Update settings based on new metadata column\r\n this.cardFormatSetting = this.getDefaultFormatSettings();\r\n\r\n let dataViewMetadata = dataView.metadata;\r\n if (dataViewMetadata) {\r\n let objects: DataViewObjects = dataViewMetadata.objects;\r\n if (objects) {\r\n let labelSettings = this.cardFormatSetting.labelSettings;\r\n\r\n labelSettings.labelColor = DataViewObjects.getFillColor(objects, cardProps.labels.color, labelSettings.labelColor);\r\n labelSettings.precision = DataViewObjects.getValue(objects, cardProps.labels.labelPrecision, labelSettings.precision);\r\n labelSettings.fontSize = DataViewObjects.getValue(objects, cardProps.labels.fontSize, labelSettings.fontSize);\r\n\r\n // The precision can't go below 0\r\n if (labelSettings.precision !== dataLabelUtils.defaultLabelPrecision && labelSettings.precision < 0) {\r\n labelSettings.precision = 0;\r\n }\r\n\r\n labelSettings.displayUnits = DataViewObjects.getValue(objects, cardProps.labels.labelDisplayUnits, labelSettings.displayUnits);\r\n\r\n //category labels\r\n labelSettings.showCategory = DataViewObjects.getValue(objects, cardProps.categoryLabels.show, labelSettings.showCategory);\r\n labelSettings.categoryLabelColor = DataViewObjects.getFillColor(objects, cardProps.categoryLabels.color, labelSettings.categoryLabelColor);\r\n\r\n this.cardFormatSetting.wordWrap = DataViewObjects.getValue(objects, cardProps.wordWrap.show, this.cardFormatSetting.wordWrap);\r\n this.cardFormatSetting.textSize = DataViewObjects.getValue(objects, cardProps.categoryLabels.fontSize, this.cardFormatSetting.textSize);\r\n }\r\n }\r\n }\r\n\r\n this.updateInternal(value, true /* suppressAnimations */, true /* forceUpdate */);\r\n }\r\n\r\n public onResizing(viewport: IViewport): void {\r\n this.currentViewport = viewport;\r\n this.updateViewportProperties();\r\n this.updateInternal(this.value, true /* suppressAnimations */, true /* forceUpdate */);\r\n }\r\n\r\n private updateViewportProperties() {\r\n let viewport = this.currentViewport;\r\n this.svg.attr('width', viewport.width)\r\n .attr('height', viewport.height);\r\n }\r\n\r\n private setTextProperties(text: string, fontSize: number): void {\r\n Card.cardTextProperties.fontSize = jsCommon.PixelConverter.fromPoint(fontSize);\r\n Card.cardTextProperties.text = text;\r\n }\r\n\r\n private getCardFormatTextSize(): number {\r\n return this.cardFormatSetting.textSize;\r\n }\r\n\r\n public getAdjustedFontHeight(availableWidth: number, textToMeasure: string, seedFontHeight: number) {\r\n let adjustedFontHeight = super.getAdjustedFontHeight(availableWidth, textToMeasure, seedFontHeight);\r\n\r\n return Math.min(adjustedFontHeight, Card.DefaultStyle.card.maxFontSize);\r\n }\r\n\r\n public clear(valueOnly: boolean = false) {\r\n this.svg.select(Card.Value.selector).text('');\r\n\r\n if (!valueOnly)\r\n this.svg.select(Card.Label.selector).text('');\r\n\r\n super.clear();\r\n }\r\n\r\n private updateInternal(target: any, suppressAnimations: boolean, forceUpdate: boolean = false) {\r\n let start = this.value;\r\n let duration = AnimatorCommon.GetAnimationDuration(this.animator, suppressAnimations);\r\n\r\n if (target === undefined) {\r\n if (start !== undefined)\r\n this.clear();\r\n return;\r\n }\r\n\r\n let metaDataColumn = this.metaDataColumn;\r\n let labelSettings = this.cardFormatSetting.labelSettings;\r\n let isDefaultDisplayUnit = labelSettings.displayUnits === 0;\r\n let format = this.getFormatString(metaDataColumn);\r\n let formatter = valueFormatter.create({\r\n format: format,\r\n value: isDefaultDisplayUnit ? target : labelSettings.displayUnits,\r\n precision: dataLabelUtils.getLabelPrecision(labelSettings.precision, format),\r\n displayUnitSystemType: isDefaultDisplayUnit && labelSettings.precision === dataLabelUtils.defaultLabelPrecision ? this.displayUnitSystemType : DisplayUnitSystemType.WholeUnits, // keeps this.displayUnitSystemType as the displayUnitSystemType unless the user changed the displayUnits or the precision\r\n formatSingleValues: isDefaultDisplayUnit ? true : false,\r\n allowFormatBeautification: true,\r\n columnType: metaDataColumn ? metaDataColumn.type : undefined\r\n });\r\n\r\n let formatSettings = this.cardFormatSetting;\r\n let labelTextSizeInPx = jsCommon.PixelConverter.fromPointToPixel(labelSettings.fontSize);\r\n let valueStyles = Card.DefaultStyle.value;\r\n this.setTextProperties(target, this.getCardFormatTextSize());\r\n let calculatedHeight = TextMeasurementService.estimateSvgTextHeight(Card.cardTextProperties);\r\n\r\n let width = this.currentViewport.width;\r\n let height = this.currentViewport.height;\r\n let translateX = this.getTranslateX(width);\r\n let translateY = (height - calculatedHeight - labelTextSizeInPx) / 2;\r\n let statusGraphicInfo: KpiImageMetadata = getKpiImageMetadata(metaDataColumn, target, KpiImageSize.Big);\r\n\r\n if (this.isScrollable) {\r\n if (!forceUpdate && start === target)\r\n return;\r\n\r\n if (start !== target)\r\n target = formatter.format(target);\r\n\r\n let label: string = metaDataColumn ? metaDataColumn.displayName : undefined;\r\n let labelData = labelSettings.showCategory\r\n ? [label]\r\n : [];\r\n\r\n let translatedLabelY = this.getTranslateY(labelTextSizeInPx + calculatedHeight + translateY);\r\n let labelElement = this.labelContext\r\n .attr('transform', SVGUtil.translate(translateX, translatedLabelY))\r\n .selectAll('text')\r\n .data(labelData);\r\n\r\n labelElement\r\n .enter()\r\n .append('text')\r\n .attr('class', Card.Label.class);\r\n\r\n labelElement\r\n .text((d) => d)\r\n .style({\r\n 'font-size': jsCommon.PixelConverter.fromPoint(this.getCardFormatTextSize()),\r\n 'fill': labelSettings.categoryLabelColor,\r\n 'text-anchor': this.getTextAnchor()\r\n });\r\n\r\n let labelElementNode = <SVGTextElement>labelElement.node();\r\n if (labelElementNode) {\r\n if (formatSettings.wordWrap)\r\n TextMeasurementService.wordBreak(labelElementNode, width / 2, height - translatedLabelY);\r\n else\r\n labelElement.call(AxisHelper.LabelLayoutStrategy.clip,\r\n width,\r\n TextMeasurementService.svgEllipsis);\r\n }\r\n\r\n labelElement\r\n .append('title')\r\n .text((d) => d);\r\n\r\n //labelElement.exit().remove();\r\n\r\n if (statusGraphicInfo) {\r\n // Display card KPI icon\r\n this.graphicsContext.selectAll('text').remove();\r\n this.displayStatusGraphic(statusGraphicInfo, translateX, translateY, valueStyles);\r\n }\r\n else {\r\n // Display card text value\r\n this.kpiImage.selectAll('div').remove();\r\n let valueElement = this.graphicsContext\r\n .attr('transform', SVGUtil.translate(translateX, this.getTranslateY(labelTextSizeInPx + translateY)))\r\n .selectAll('text')\r\n .data([target]);\r\n\r\n valueElement\r\n .enter()\r\n .append('text')\r\n .attr('class', Card.Value.class);\r\n\r\n valueElement\r\n .text((d: any) => d)\r\n .style({\r\n 'font-size': jsCommon.PixelConverter.fromPoint(labelSettings.fontSize),\r\n 'fill': labelSettings.labelColor,\r\n 'font-family': valueStyles.fontFamily,\r\n 'text-anchor': this.getTextAnchor(),\r\n });\r\n\r\n valueElement.call(AxisHelper.LabelLayoutStrategy.clip,\r\n width,\r\n TextMeasurementService.svgEllipsis);\r\n\r\n valueElement\r\n .append('title')\r\n .text((d) => d);\r\n\r\n valueElement.exit().remove();\r\n }\r\n }\r\n else {\r\n if (statusGraphicInfo) {\r\n // Display card KPI icon\r\n this.graphicsContext.selectAll('text').remove();\r\n this.displayStatusGraphic(statusGraphicInfo, translateX, translateY, valueStyles);\r\n }\r\n else {\r\n this.kpiImage.selectAll('div').remove();\r\n this.doValueTransition(\r\n start,\r\n target,\r\n this.displayUnitSystemType,\r\n this.animationOptions,\r\n duration,\r\n forceUpdate,\r\n formatter\r\n );\r\n\r\n //in order to remove duplicated title values we first remove all and than add a new one \r\n this.graphicsContext.call(tooltipUtils.tooltipUpdate, [target]);\r\n }\r\n }\r\n\r\n this.value = target;\r\n }\r\n\r\n private displayStatusGraphic(statusGraphicInfo: KpiImageMetadata, translateX: number, translateY: number, valueStyles: CardStyleValue) {\r\n // Remove existing text\r\n this.graphicsContext.selectAll('text').remove();\r\n\r\n // Create status graphic, if necessary\r\n let kpiImageDiv = this.kpiImage.select('div');\r\n if (!kpiImageDiv || kpiImageDiv.empty())\r\n kpiImageDiv = this.kpiImage.append('div');\r\n\r\n // Style status graphic\r\n kpiImageDiv\r\n .attr('class', statusGraphicInfo.class)\r\n .style('position', 'absolute');\r\n\r\n // Layout thrash to get image dimensions (could set as a const in future when icon font is fixed)\r\n let imageWidth = (<HTMLElement>kpiImageDiv.node()).offsetWidth;\r\n let imageHeight = (<HTMLElement>kpiImageDiv.node()).offsetHeight;\r\n\r\n // Position based on image height\r\n kpiImageDiv.style('transform', SVGUtil.translateWithPixels((translateX - (imageWidth / 2)), this.getTranslateY(valueStyles.textSize + translateY) - imageHeight));\r\n }\r\n\r\n private getDefaultFormatSettings(): CardFormatSetting {\r\n return {\r\n labelSettings: dataLabelUtils.getDefaultCardLabelSettings(Card.DefaultStyle.value.color, Card.DefaultStyle.label.color, Card.DefaultStyle.value.textSize),\r\n wordWrap: false,\r\n textSize: Card.DefaultStyle.label.textSize,\r\n };\r\n }\r\n\r\n public enumerateObjectInstances(options: EnumerateVisualObjectInstancesOptions): VisualObjectInstanceEnumeration {\r\n if (!this.cardFormatSetting)\r\n this.cardFormatSetting = this.getDefaultFormatSettings();\r\n\r\n let formatSettings = this.cardFormatSetting;\r\n let enumeration = new ObjectEnumerationBuilder();\r\n\r\n switch (options.objectName) {\r\n case 'categoryLabels':\r\n dataLabelUtils.enumerateCategoryLabels(enumeration, formatSettings.labelSettings, true /* withFill */, true /* isShowCategory */, formatSettings.textSize);\r\n break;\r\n case 'labels':\r\n let labelSettingOptions: VisualDataLabelsSettingsOptions = {\r\n enumeration: enumeration,\r\n dataLabelsSettings: formatSettings.labelSettings,\r\n show: true,\r\n displayUnits: true,\r\n precision: true,\r\n fontSize: true,\r\n };\r\n dataLabelUtils.enumerateDataLabels(labelSettingOptions);\r\n break;\r\n case 'wordWrap':\r\n enumeration.pushInstance({\r\n objectName: 'wordWrap',\r\n selector: null,\r\n properties: {\r\n show: formatSettings.wordWrap,\r\n },\r\n });\r\n break;\r\n }\r\n\r\n return enumeration.complete();\r\n }\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n enum OwlHappiness {\r\n Sad = 0,\r\n Meh = 1,\r\n Happy = 2\r\n }\r\n\r\n export class OwlGauge implements IVisual {\r\n private static owlBodySvg = '<svg version=\"1.1\" class=\"owlGaugeBody\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\" viewBox=\"0 0 267.7 291.2\" style=\"enable-background:new 0 0 267.7 291.2;\" xml:space=\"preserve\"> <style type=\"text/css\"> .owlGaugeBody .st0{fill:#A87D50;} .owlGaugeBody .st1{fill:#C2B59B;} .owlGaugeBody .st2{fill:#EB2227;} .owlGaugeBody .st3{fill:#FFFFFF;} .owlGaugeBody .st4{fill:#F9D018;} .owlGaugeBody .st5{fill:none;} .owlGaugeBody .st6{fill:#83381B;} .owlGaugeBody .st7{fill:#231F20;} </style> <g id=\"XMLID_31_\"> <g id=\"XMLID_34_\"> <ellipse id=\"XMLID_21_\" transform=\"matrix(0.9998 1.947640e-02 -1.947640e-02 0.9998 2.8614 -2.5802)\" class=\"st0\" cx=\"133.9\" cy=\"145.6\" rx=\"133.9\" ry=\"145.6\"/> <polygon id=\"XMLID_20_\" class=\"st0\" points=\"199.2,32.8 184,11.3 209,9.7 \"/> <polygon id=\"XMLID_19_\" class=\"st0\" points=\"73.9,31.2 62.1,7.7 87.1,9.8 \"/> <circle id=\"XMLID_18_\" class=\"st1\" cx=\"134.8\" cy=\"189.2\" r=\"89.8\"/> <path id=\"XMLID_17_\" class=\"st2\" d=\"M140.1,88c-2.7,3.8-7.9,4.7-11.7,2c-2.7-1.9-3.9-5.1-3.4-8.1c0,0,9.6-41.8,9.6-41.8l6.9,40.8 C142,83.2,141.6,85.8,140.1,88z\"/> <path id=\"XMLID_16_\" class=\"st3\" d=\"M164.6,16.2c-14.2,0-26.3,9.2-30.6,21.9c-4.1-13.1-16.3-22.6-30.8-22.6 C85.4,15.6,71,30,71,47.8s14.4,32.3,32.3,32.3c14.2,0,26.3-9.2,30.6-21.9c4.1,13.1,16.3,22.6,30.8,22.6 c17.8,0,32.3-14.4,32.3-32.3S182.4,16.2,164.6,16.2z\"/> <path id=\"XMLID_15_\" class=\"st4\" d=\"M122,58.7l23.3-0.1c0,0-9,14.8-10.2,16.6c-1.2,1.9-2.2,0.1-2.2,0.1L122,58.7z\"/> <rect id=\"XMLID_14_\" x=\"-11.4\" y=\"-68.8\" class=\"st5\" width=\"288.3\" height=\"259.7\"/> <g id=\"XMLID_37_\"> <path id=\"XMLID_13_\" class=\"st6\" d=\"M121.6,125.5c0,3.7-3.5,6.6-7.7,6.6c-4.2,0-7.7-3-7.7-6.6\"/> <path id=\"XMLID_12_\" class=\"st6\" d=\"M160.1,126.5c0,3.7-3.5,6.6-7.7,6.6s-7.7-3-7.7-6.6\"/> <path id=\"XMLID_11_\" class=\"st6\" d=\"M142.4,148.1c0,3.7-3.5,6.6-7.7,6.6c-4.2,0-7.7-3-7.7-6.6\"/> <path id=\"XMLID_10_\" class=\"st6\" d=\"M183.1,148.8c0,3.7-3.5,6.6-7.7,6.6c-4.2,0-7.7-3-7.7-6.6\"/> <path id=\"XMLID_9_\" class=\"st6\" d=\"M160.9,177.4c0,3.7-3.5,6.6-7.7,6.6s-7.7-3-7.7-6.6\"/> <path id=\"XMLID_8_\" class=\"st6\" d=\"M201.6,178c0,3.7-3.5,6.6-7.7,6.6s-7.7-3-7.7-6.6\"/> <path id=\"XMLID_7_\" class=\"st6\" d=\"M76.4,177.4c0,3.7-3.5,6.6-7.7,6.6c-4.2,0-7.7-3-7.7-6.6\"/> <path id=\"XMLID_6_\" class=\"st6\" d=\"M117,178c0,3.7-3.5,6.6-7.7,6.6s-7.7-3-7.7-6.6\"/> <path id=\"XMLID_5_\" class=\"st6\" d=\"M98.6,148.1c0,3.7-3.5,6.6-7.7,6.6c-4.2,0-7.7-3-7.7-6.6\"/> </g> <circle id=\"XMLID_4_\" class=\"st7\" cx=\"164.1\" cy=\"49\" r=\"6.4\"/> <circle id=\"XMLID_3_\" class=\"st7\" cx=\"102.7\" cy=\"47.7\" r=\"6.4\"/> </g> <path id=\"XMLID_2_\" class=\"st0\" d=\"M160.1,140.9c11.1-8.4,55.6-36,55.6-36l4.7,0.8l10.2,38.8c0,0-3,3-9.2,3.1 c-5.1,0.1-45.9-2.6-60.2-3.5C158.1,143.9,157.7,142.7,160.1,140.9z\"/> <path id=\"XMLID_1_\" class=\"st0\" d=\"M110.6,140.8c-11.1-8.4-55.6-36-55.6-36l-4.7,0.8L40,144.4c0,0,3,3,9.2,3.1 c5.1,0.1,45.9-2.6,60.2-3.5C112.5,143.8,113,142.6,110.6,140.8z\"/> </g> </svg>';\r\n private static owlTailSvg = '<svg version=\"1.1\" class=\"owlGaugeTail\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\" viewBox=\"0 0 587.8 295.5\" style=\"enable-background:new 0 0 587.8 295.5;\" xml:space=\"preserve\"> <style type=\"text/css\"> .owlGaugeTail .st0{fill:#3B2416;} .owlGaugeTail .st1{fill:#5B4B43;} .owlGaugeTail .st2{fill:#603A17;} .owlGaugeTail .st3{fill:#726659;} </style> <g id=\"XMLID_55_\"> <path id=\"XMLID_29_\" class=\"st0\" d=\"M85.2,106.2c-27.1,0-49.2,22-49.2,49.2c0,19.1,10.9,35.7,26.9,43.8c0,0,231.2,95.9,231.2,95.9 l-171-171C114.1,113.2,100.5,106.2,85.2,106.2z\"/> <g id=\"XMLID_56_\"> <path id=\"XMLID_28_\" class=\"st1\" d=\"M482.5,86.4c0-27.1-22-49.2-49.2-49.2c-19.1,0-35.7,10.9-43.8,26.9c0,0-95.9,231.2-95.9,231.2 l171-171C475.5,115.3,482.5,101.7,482.5,86.4z\"/> <path id=\"XMLID_27_\" class=\"st2\" d=\"M573.5,281.3c19.2-19.2,19.2-50.3,0-69.5c-13.5-13.5-33-17.5-50-12c0,0-231.3,95.7-231.3,95.7 l241.8,0C548,296.9,562.6,292.1,573.5,281.3z\"/> <path id=\"XMLID_26_\" class=\"st3\" d=\"M279.9,14.4c-19.2-19.2-50.3-19.2-69.5,0c-13.5,13.5-17.5,33-12,50c0,0,95.7,231.3,95.7,231.3 L294,54C295.4,39.8,290.7,25.2,279.9,14.4z\"/> <path id=\"XMLID_25_\" class=\"st2\" d=\"M105.3,86.4c0-27.1,22-49.2,49.2-49.2c19.1,0,35.7,10.9,43.8,26.9c0,0,95.9,231.2,95.9,231.2 l-171-171C112.3,115.3,105.3,101.7,105.3,86.4z\"/> <path id=\"XMLID_24_\" class=\"st2\" d=\"M14.4,281.4c-19.2-19.2-19.2-50.3,0-69.5c13.5-13.5,33-17.5,50-12c0,0,231.3,95.7,231.3,95.7 l-241.8,0C39.8,297,25.2,292.3,14.4,281.4z\"/> <path id=\"XMLID_23_\" class=\"st2\" d=\"M308.2,14c19.2-19.2,50.3-19.2,69.5,0c13.5,13.5,17.5,33,12,50c0,0-95.7,231.3-95.7,231.3 l0-241.8C292.6,39.4,297.4,24.8,308.2,14z\"/> <path id=\"XMLID_22_\" class=\"st0\" d=\"M503.2,106c27.1,0,49.2,22,49.2,49.2c0,19.1-10.9,35.7-26.9,43.8c0,0-231.2,95.9-231.2,95.9 l171-171C474.2,113,487.8,106,503.2,106z\"/> </g> </g> </svg>';\r\n private static visualBgSvg = '<svg version=\"1.1\" class=\"owlGaugeBg\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\" viewBox=\"123.8 94.9 349.1 175.3\" style=\"enable-background:new 123.8 94.9 349.1 175.3;\" xml:space=\"preserve\"> <style type=\"text/css\"> .owlGaugeBg .st0{fill:#EF4137;} .owlGaugeBg .st1{fill:#FAAF42;} .owlGaugeBg .st2{fill:#F15B2A;} .owlGaugeBg .st3{fill:#F69321;} </style> <g id=\"XMLID_10_\"> <path id=\"XMLID_8_\" class=\"st0\" d=\"M174.3,158c-16.1,0-29.2,13.1-29.2,29.2c0,11.4,6.5,21.2,16,26.1l137.3,57L196.9,168.7 C191.5,162.2,183.4,158,174.3,158z\"/> <g id=\"XMLID_11_\"> <path id=\"XMLID_7_\" class=\"st1\" d=\"M410.2,146.3c0-16.1-13.1-29.2-29.2-29.2c-11.4,0-21.2,6.5-26,16l-57,137.5L399.5,169 C406.1,163.5,410.2,155.4,410.2,146.3z\"/> <path id=\"XMLID_6_\" class=\"st0\" d=\"M464.3,262.2c11.4-11.4,11.4-29.9,0-41.3c-8-8-19.6-10.4-29.7-7.1l-137.4,56.9h143.6 C449.2,271.4,457.9,268.6,464.3,262.2z\"/> <path id=\"XMLID_5_\" class=\"st2\" d=\"M290,103.5c-11.4-11.4-29.9-11.4-41.3,0c-8,8-10.4,19.6-7.1,29.7l56.8,137.5V127 C299.2,118.6,296.4,109.9,290,103.5z\"/> <path id=\"XMLID_4_\" class=\"st3\" d=\"M186.3,146.3c0-16.1,13.1-29.2,29.2-29.2c11.4,0,21.2,6.5,26,16l57,137.5L197,168.8 C190.5,163.5,186.3,155.4,186.3,146.3z\"/> <path id=\"XMLID_3_\" class=\"st2\" d=\"M132.3,262.2c-11.4-11.4-11.4-29.9,0-41.3c8-8,19.6-10.4,29.7-7.1l137.4,56.9H155.8 C147.4,271.5,138.7,268.7,132.3,262.2z\"/> <path id=\"XMLID_2_\" class=\"st3\" d=\"M306.8,103.2c11.4-11.4,29.9-11.4,41.3,0c8,8,10.4,19.6,7.1,29.7l-56.8,137.5V126.7 C297.5,118.3,300.3,109.7,306.8,103.2z\"/> <path id=\"XMLID_1_\" class=\"st2\" d=\"M422.5,157.9c16.1,0,29.2,13.1,29.2,29.2c0,11.4-6.5,21.2-16,26.1l-137.3,57L400,168.6 C405.3,162.1,413.4,157.9,422.5,157.9z\"/> </g> </g> </svg>';\r\n\r\n private static owlBodyHeightMultiplier = 291.2 / 267.7;\r\n private static owlTailHeightMultiplier = 295.5 / 587.8;\r\n private static visualBgHeightMultiplier = 295.5 / 587.8;\r\n\r\n private static OwlDemoMode = false;\r\n\r\n public static capabilities: VisualCapabilities = {\r\n dataRoles: [\r\n {\r\n name: 'Category',\r\n kind: powerbi.VisualDataRoleKind.Grouping,\r\n },\r\n {\r\n name: 'Y',\r\n kind: powerbi.VisualDataRoleKind.Measure,\r\n },\r\n ],\r\n dataViewMappings: [{\r\n categories: {\r\n for: { in: 'Category' },\r\n dataReductionAlgorithm: { top: {} }\r\n },\r\n values: {\r\n select: [{ bind: { to: 'Y' } }]\r\n },\r\n }]\r\n };\r\n\r\n public static converter(dataView: DataView): any {\r\n return {};\r\n }\r\n\r\n private static getGaugeData(dataView: DataView): GaugeTargetData {\r\n var settings: GaugeTargetData = {\r\n max: 100,\r\n min: 0,\r\n target: undefined,\r\n total: 0,\r\n tooltipItems: []\r\n };\r\n\r\n if (dataView && dataView.categorical && dataView.categorical.values && dataView.metadata && dataView.metadata.columns) {\r\n var values = dataView.categorical.values;\r\n var metadataColumns = dataView.metadata.columns;\r\n\r\n debug.assert(metadataColumns.length >= values.length, 'length');\r\n\r\n for (var i = 0; i < values.length; i++) {\r\n var col = metadataColumns[i],\r\n value = values[i].values[0] || 0;\r\n if (col && col.roles) {\r\n if (col.roles[gaugeRoleNames.y]) {\r\n settings.total = value;\r\n if (value)\r\n settings.tooltipItems.push({ value: value, metadata: values[i] });\r\n } else if (col.roles[gaugeRoleNames.minValue]) {\r\n settings.min = value;\r\n } else if (col.roles[gaugeRoleNames.maxValue]) {\r\n settings.max = value;\r\n } else if (col.roles[gaugeRoleNames.targetValue]) {\r\n settings.target = value;\r\n if (value)\r\n settings.tooltipItems.push({ value: value, metadata: values[i] });\r\n }\r\n }\r\n }\r\n }\r\n\r\n return settings;\r\n }\r\n\r\n private rootElem: JQuery;\r\n private svgBgElem: JQuery;\r\n private svgBodyElem: JQuery;\r\n private svgTailElem: JQuery;\r\n\r\n public init(options: VisualInitOptions): void {\r\n this.rootElem = options.element;\r\n this.rootElem.addClass('owlGaugeVisual');\r\n\r\n this.svgTailElem = $(OwlGauge.owlTailSvg);\r\n this.svgBgElem = $(OwlGauge.visualBgSvg);\r\n this.svgBodyElem = $(OwlGauge.owlBodySvg);\r\n\r\n this.rootElem.append(this.svgBgElem).append(this.svgTailElem).append(this.svgBodyElem);\r\n\r\n if (OwlGauge.OwlDemoMode) {\r\n window.setInterval(() => {\r\n var randomPercentage = Math.random() * 100 + 1;\r\n this.updateGauge(randomPercentage);\r\n }, 2000);\r\n }\r\n\r\n this.updateViewportSize(options.viewport.width, options.viewport.height);\r\n }\r\n\r\n public update(options: VisualUpdateOptions) {\r\n this.updateViewportSize(options.viewport.width, options.viewport.height);\r\n\r\n var dataView = options.dataViews.length > 0 ? options.dataViews[0] : null;\r\n\r\n if (dataView) {\r\n var gaugeData = OwlGauge.getGaugeData(options.dataViews[0]);\r\n\r\n var percentage = (gaugeData.total - gaugeData.min) / (gaugeData.max - gaugeData.min);\r\n this.updateGauge(percentage * 100 | 0);\r\n }\r\n else this.updateGauge(0);\r\n }\r\n\r\n private updateGauge(percentage: number) {\r\n if (percentage >= 0 && percentage <= 100) {\r\n var rotationDeg = -180 + (180 * percentage/100);\r\n this.svgBgElem.css({ transform: 'rotate(' + rotationDeg + 'deg)' });\r\n\r\n if (percentage >= 66) {\r\n this.happinessLevel = OwlHappiness.Happy;\r\n }\r\n else if (percentage >= 33) {\r\n this.happinessLevel = OwlHappiness.Meh;\r\n }\r\n else {\r\n this.happinessLevel = OwlHappiness.Sad;\r\n }\r\n }\r\n }\r\n\r\n private set happinessLevel(level: OwlHappiness) {\r\n this.rootElem.removeClass('sad').removeClass('meh').removeClass('happy');\r\n\r\n switch (level) {\r\n case OwlHappiness.Sad:\r\n this.rootElem.addClass('sad');\r\n break;\r\n case OwlHappiness.Meh:\r\n this.rootElem.addClass('meh');\r\n break;\r\n case OwlHappiness.Happy:\r\n this.rootElem.addClass('happy');\r\n break;\r\n default:\r\n console.log('Well, this is interesting...');\r\n }\r\n }\r\n\r\n private updateViewportSize(width: number, height: number) {\r\n var smoothingFn = window.setImmediate || window.requestAnimationFrame;\r\n\r\n smoothingFn(() => {\r\n this.rootElem.css({\r\n height: height,\r\n width: width\r\n });\r\n\r\n this.svgBodyElem.height(this.svgBodyElem.width() * OwlGauge.owlBodyHeightMultiplier);\r\n this.svgBgElem.height(this.svgBgElem.width() * OwlGauge.visualBgHeightMultiplier);\r\n this.svgTailElem.height(this.svgTailElem.width() * OwlGauge.owlTailHeightMultiplier);\r\n });\r\n }\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n import IStringResourceProvider = jsCommon.IStringResourceProvider;\r\n\r\n export class NoMapLocationWarning implements IVisualWarning {\r\n public get code(): string {\r\n return 'NoMapLocation';\r\n }\r\n\r\n public getMessages(resourceProvider: IStringResourceProvider): IVisualErrorMessage {\r\n let messageKey: string = 'NoMapLocationMessage';\r\n let titleKey: string = 'NoMapLocationKey';\r\n let detailKey: string = 'NoMapLocationValue';\r\n\r\n let visualMessage: IVisualErrorMessage = {\r\n message: resourceProvider.get(messageKey),\r\n title: resourceProvider.get(titleKey),\r\n detail: resourceProvider.get(detailKey),\r\n };\r\n\r\n return visualMessage;\r\n }\r\n }\r\n\r\n export class FilledMapWithoutValidGeotagCategoryWarning implements IVisualWarning {\r\n public get code(): string {\r\n return 'NoValidGeotaggedCategory';\r\n }\r\n\r\n public getMessages(resourceProvider: IStringResourceProvider): IVisualErrorMessage {\r\n let messageKey: string = 'NoValidGeotaggedCategoryMessage';\r\n let titleKey: string = 'NoValidGeotaggedCategoryKey';\r\n let detailKey: string = 'NoValidGeotaggedCategoryValue';\r\n\r\n let visualMessage: IVisualErrorMessage = {\r\n message: resourceProvider.get(messageKey),\r\n title: resourceProvider.get(titleKey),\r\n detail: resourceProvider.get(detailKey),\r\n };\r\n\r\n return visualMessage;\r\n }\r\n }\r\n\r\n export class GeometryCulledWarning implements IVisualWarning {\r\n public get code(): string {\r\n return 'GeometryCulledWarning';\r\n }\r\n\r\n public getMessages(resourceProvider: IStringResourceProvider): IVisualErrorMessage {\r\n let messageKey: string = 'GeometryCulledWarningMessage';\r\n let titleKey: string = 'GeometryCulledWarningKey';\r\n let detailKey: string = 'GeometryCulledWarningVal';\r\n\r\n let visualMessage: IVisualErrorMessage = {\r\n message: resourceProvider.get(messageKey),\r\n title: resourceProvider.get(titleKey),\r\n detail: resourceProvider.get(detailKey),\r\n };\r\n\r\n return visualMessage;\r\n }\r\n }\r\n\r\n export class NegativeValuesNotSupportedWarning implements IVisualWarning {\r\n public get code(): string {\r\n return 'NegativeValuesNotSupported';\r\n }\r\n\r\n public getMessages(resourceProvider: IStringResourceProvider): IVisualErrorMessage {\r\n const messageKey: string = 'VisualWarning_NegativeValues';\r\n\r\n const visualMessage: IVisualErrorMessage = {\r\n message: resourceProvider.get(messageKey),\r\n title: '',\r\n detail: '',\r\n };\r\n\r\n return visualMessage;\r\n }\r\n }\r\n\r\n export class AllNegativeValuesWarning implements IVisualWarning {\r\n public get code(): string {\r\n return 'AllNegativeValuesNotSupported';\r\n }\r\n\r\n public getMessages(resourceProvider: IStringResourceProvider): IVisualErrorMessage {\r\n let messageKey: string = 'VisualWarning_AllNegativeValues';\r\n\r\n let visualMessage: IVisualErrorMessage = {\r\n message: resourceProvider.get(messageKey),\r\n title: '',\r\n detail: '',\r\n };\r\n\r\n return visualMessage;\r\n }\r\n }\r\n\r\n export class NaNNotSupportedWarning implements IVisualWarning {\r\n public get code(): string {\r\n return 'NaNNotSupported';\r\n }\r\n\r\n public getMessages(resourceProvider: IStringResourceProvider): IVisualErrorMessage {\r\n let messageKey: string = 'VisualWarning_NanValues';\r\n\r\n let visualMessage: IVisualErrorMessage = {\r\n message: resourceProvider.get(messageKey),\r\n title: '',\r\n detail: '',\r\n };\r\n\r\n return visualMessage;\r\n }\r\n }\r\n\r\n export class InfinityValuesNotSupportedWarning implements IVisualWarning {\r\n public get code(): string {\r\n return 'InfinityValuesNotSupported';\r\n }\r\n\r\n public getMessages(resourceProvider: IStringResourceProvider): IVisualErrorMessage {\r\n let messageKey: string = 'VisualWarning_InfinityValues';\r\n\r\n let visualMessage: IVisualErrorMessage = {\r\n message: resourceProvider.get(messageKey),\r\n title: '',\r\n detail: '',\r\n };\r\n\r\n return visualMessage;\r\n }\r\n }\r\n\r\n export class ValuesOutOfRangeWarning implements IVisualWarning {\r\n public get code(): string {\r\n return 'ValuesOutOfRange';\r\n }\r\n\r\n public getMessages(resourceProvider: IStringResourceProvider): IVisualErrorMessage {\r\n let messageKey: string = 'VisualWarning_VisualizationOutOfRange';\r\n\r\n let visualMessage: IVisualErrorMessage = {\r\n message: resourceProvider.get(messageKey),\r\n title: '',\r\n detail: '',\r\n };\r\n\r\n return visualMessage;\r\n }\r\n }\r\n\r\n export class ZeroValueWarning implements IVisualWarning {\r\n public get code(): string {\r\n return \"ZeroValuesNotSupported\";\r\n }\r\n\r\n public getMessages(resourceProvider: IStringResourceProvider): IVisualErrorMessage {\r\n let messageKey: string = 'VisualWarning_ZeroValues'; \r\n\r\n let visualMessage: IVisualErrorMessage = {\r\n message: resourceProvider.get(messageKey),\r\n title: '',\r\n detail: '',\r\n };\r\n\r\n return visualMessage;\r\n }\r\n }\r\n\r\n export class VisualKPIDataMissingWarning implements IVisualWarning {\r\n public get code(): string {\r\n return \"VisualKPIDataMissing\";\r\n }\r\n\r\n public getMessages(resourceProvider: IStringResourceProvider): IVisualErrorMessage {\r\n let messageKey: string = 'Visual_KPI_DataMissing';\r\n\r\n let visualMessage: IVisualErrorMessage = {\r\n message: resourceProvider.get(messageKey),\r\n title: '',\r\n detail: '',\r\n };\r\n\r\n return visualMessage;\r\n }\r\n }\r\n\r\n export class ScriptVisualRefreshWarning implements IVisualWarning {\r\n public get code(): string {\r\n return \"ScriptVisualNotRefreshed\";\r\n }\r\n\r\n public getMessages(resourceProvider: IStringResourceProvider): IVisualErrorMessage {\r\n let messageKey: string = 'ScriptVisualRefreshWarningMessage';\r\n let detailKey: string = 'ScriptVisualRefreshWarningValue';\r\n\r\n let visualMessage: IVisualErrorMessage = {\r\n message: resourceProvider.get(messageKey),\r\n title: resourceProvider.get(messageKey),\r\n detail: resourceProvider.get(detailKey),\r\n };\r\n\r\n return visualMessage;\r\n }\r\n }\r\n\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n import ClassAndSelector = jsCommon.CssConstants.ClassAndSelector;\r\n import PixelConverter = jsCommon.PixelConverter;\r\n import createClassAndSelector = jsCommon.CssConstants.createClassAndSelector;\r\n\r\n export interface WaterfallChartData extends CartesianData {\r\n series: WaterfallChartSeries[];\r\n categories: any[];\r\n valuesMetadata: DataViewMetadataColumn;\r\n legend: LegendData;\r\n hasHighlights: boolean;\r\n categoryMetadata: DataViewMetadataColumn;\r\n positionMax: number;\r\n positionMin: number;\r\n sentimentColors: WaterfallChartSentimentColors;\r\n dataLabelsSettings: VisualDataLabelsSettings;\r\n axesLabels: ChartAxesLabels;\r\n }\r\n\r\n export interface WaterfallChartSeries extends CartesianSeries {\r\n data: WaterfallChartDataPoint[];\r\n }\r\n\r\n export interface WaterfallChartDataPoint extends CartesianDataPoint, SelectableDataPoint, TooltipEnabledDataPoint, LabelEnabledDataPoint {\r\n position: number;\r\n color: string;\r\n highlight: boolean;\r\n key: string;\r\n isTotal?: boolean;\r\n }\r\n\r\n export interface WaterfallChartConstructorOptions extends CartesianVisualConstructorOptions {\r\n }\r\n\r\n export interface WaterfallChartSentimentColors {\r\n increaseFill: Fill;\r\n decreaseFill: Fill;\r\n totalFill: Fill;\r\n }\r\n\r\n export interface WaterfallLayout extends CategoryLayout, ILabelLayout {\r\n categoryWidth: number;\r\n }\r\n\r\n export class WaterfallChart implements ICartesianVisual {\r\n public static formatStringProp: DataViewObjectPropertyIdentifier = { objectName: 'general', propertyName: 'formatString' };\r\n private static WaterfallClassName = 'waterfallChart';\r\n private static MainGraphicsContextClassName = 'mainGraphicsContext';\r\n private static IncreaseLabel = \"Waterfall_IncreaseLabel\";\r\n private static DecreaseLabel = \"Waterfall_DecreaseLabel\";\r\n private static TotalLabel = \"Waterfall_TotalLabel\";\r\n private static CategoryValueClasses: ClassAndSelector = createClassAndSelector('column');\r\n private static WaterfallConnectorClasses: ClassAndSelector = createClassAndSelector('waterfall-connector');\r\n\r\n private static defaultTotalColor = \"#00b8aa\";\r\n private static validLabelPositions = [RectLabelPosition.OutsideEnd, RectLabelPosition.InsideEnd];\r\n private static validZeroLabelPosition = [RectLabelPosition.OutsideEnd, RectLabelPosition.OutsideBase];\r\n\r\n private svg: D3.Selection;\r\n private mainGraphicsContext: D3.Selection;\r\n private labelGraphicsContext: D3.Selection;\r\n private mainGraphicsSVG: D3.Selection;\r\n private xAxisProperties: IAxisProperties;\r\n private yAxisProperties: IAxisProperties;\r\n private currentViewport: IViewport;\r\n private data: WaterfallChartData;\r\n private element: JQuery;\r\n private isScrollable: boolean;\r\n private tooltipsEnabled: boolean;\r\n\r\n /**\r\n * Note: If we overflowed horizontally then this holds the subset of data we should render.\r\n */\r\n private clippedData: WaterfallChartData;\r\n\r\n private style: IVisualStyle;\r\n private colors: IDataColorPalette;\r\n private hostServices: IVisualHostServices;\r\n private cartesianVisualHost: ICartesianVisualHost;\r\n private interactivity: InteractivityOptions;\r\n private margin: IMargin;\r\n private options: CartesianVisualInitOptions;\r\n private interactivityService: IInteractivityService;\r\n private layout: WaterfallLayout;\r\n\r\n constructor(options: WaterfallChartConstructorOptions) {\r\n this.isScrollable = options.isScrollable;\r\n this.tooltipsEnabled = options.tooltipsEnabled;\r\n this.interactivityService = options.interactivityService;\r\n }\r\n\r\n public init(options: CartesianVisualInitOptions): void {\r\n debug.assertValue(options, 'options');\r\n\r\n this.svg = options.svg;\r\n this.style = options.style;\r\n this.currentViewport = options.viewport;\r\n this.hostServices = options.host;\r\n this.interactivity = options.interactivity;\r\n this.cartesianVisualHost = options.cartesianHost;\r\n this.options = options;\r\n this.element = options.element;\r\n this.colors = this.style.colorPalette.dataColors;\r\n this.element.addClass(WaterfallChart.WaterfallClassName);\r\n this.mainGraphicsSVG = this.svg.append('svg');\r\n this.mainGraphicsContext = this.mainGraphicsSVG.append('g')\r\n .classed(WaterfallChart.MainGraphicsContextClassName, true);\r\n this.labelGraphicsContext = this.mainGraphicsSVG.append('g')\r\n .classed(NewDataLabelUtils.labelGraphicsContextClass.class, true);\r\n }\r\n\r\n public static converter(\r\n dataView: DataView,\r\n palette: IDataColorPalette,\r\n hostServices: IVisualHostServices,\r\n dataLabelSettings: VisualDataLabelsSettings,\r\n sentimentColors: WaterfallChartSentimentColors,\r\n interactivityService: IInteractivityService): WaterfallChartData {\r\n debug.assertValue(palette, 'palette');\r\n\r\n let formatStringProp = WaterfallChart.formatStringProp;\r\n let categories = dataView.categorical.categories || [];\r\n\r\n let increaseColor = sentimentColors.increaseFill.solid.color;\r\n let decreaseColor = sentimentColors.decreaseFill.solid.color;\r\n let totalColor = sentimentColors.totalFill.solid.color;\r\n\r\n let totalLabel = hostServices.getLocalizedString(WaterfallChart.TotalLabel);\r\n let increaseLabel = hostServices.getLocalizedString(WaterfallChart.IncreaseLabel);\r\n let decreaseLabel = hostServices.getLocalizedString(WaterfallChart.DecreaseLabel);\r\n\r\n let legend: LegendDataPoint[] = [\r\n {\r\n label: increaseLabel,\r\n color: increaseColor,\r\n icon: LegendIcon.Box,\r\n identity: SelectionIdBuilder.builder().withMeasure('increase').createSelectionId(),\r\n selected: false,\r\n }, {\r\n label: decreaseLabel,\r\n color: decreaseColor,\r\n icon: LegendIcon.Box,\r\n identity: SelectionIdBuilder.builder().withMeasure('decrease').createSelectionId(),\r\n selected: false,\r\n }, {\r\n label: totalLabel,\r\n color: totalColor,\r\n icon: LegendIcon.Box,\r\n identity: SelectionIdBuilder.builder().withMeasure('total').createSelectionId(),\r\n selected: false,\r\n }];\r\n\r\n /**\r\n * The position represents the starting point for each bar,\r\n * for any value it is the sum of all previous values.\r\n * Values > 0 are considered gains, values < 0 are losses.\r\n */\r\n let pos = 0, posMin = 0, posMax = 0;\r\n let dataPoints: WaterfallChartDataPoint[] = [];\r\n let categoryValues: any[] = [];\r\n let categoryMetadata: DataViewMetadataColumn;\r\n let values = dataView.categorical.values;\r\n let valuesMetadata = undefined;\r\n if (!_.isEmpty(values)) {\r\n let column = values[0];\r\n valuesMetadata = column.source;\r\n let labelFormatString = valuesMetadata.format;\r\n if (_.isEmpty(categories)) {\r\n // We have values but no category, just show the total bar.\r\n pos = posMax = column.values[0];\r\n posMin = 0;\r\n }\r\n else {\r\n let categoryColumn = categories[0];\r\n categoryMetadata = categoryColumn.source;\r\n categoryValues = categoryColumn.values.slice();\r\n categoryValues.push(totalLabel);\r\n\r\n for (var categoryIndex = 0, catLen = column.values.length; categoryIndex < catLen; categoryIndex++) {\r\n let category = categoryValues[categoryIndex];\r\n let value = column.values[categoryIndex] || 0;\r\n let identity = SelectionIdBuilder.builder()\r\n .withCategory(categoryColumn, categoryIndex)\r\n .createSelectionId();\r\n\r\n let tooltipInfo: TooltipDataItem[] = TooltipBuilder.createTooltipInfo(formatStringProp, dataView.categorical, category, value);\r\n let color = value > 0 ? increaseColor : decreaseColor;\r\n\r\n dataPoints.push({\r\n value: value,\r\n position: pos,\r\n color: color,\r\n categoryValue: category,\r\n categoryIndex: categoryIndex,\r\n seriesIndex: 0,\r\n selected: false,\r\n identity: identity,\r\n highlight: false,\r\n key: identity.getKey(),\r\n tooltipInfo: tooltipInfo,\r\n labelFill: dataLabelSettings.labelColor,\r\n labelFormatString: labelFormatString,\r\n });\r\n\r\n pos += value;\r\n if (pos > posMax)\r\n posMax = pos;\r\n if (pos < posMin)\r\n posMin = pos;\r\n }\r\n }\r\n\r\n let totalIdentity = SelectionId.createNull();\r\n dataPoints.push({\r\n value: pos,\r\n position: 0,\r\n color: totalColor,\r\n categoryValue: totalLabel,\r\n categoryIndex: categoryIndex,\r\n identity: totalIdentity,\r\n seriesIndex: 0,\r\n selected: false,\r\n highlight: false,\r\n key: totalIdentity.getKey(),\r\n tooltipInfo: TooltipBuilder.createTooltipInfo(formatStringProp, dataView.categorical, totalLabel, pos),\r\n labelFill: dataLabelSettings.labelColor,\r\n labelFormatString: labelFormatString,\r\n isTotal: true,\r\n });\r\n }\r\n\r\n if (interactivityService) {\r\n interactivityService.applySelectionStateToData(dataPoints);\r\n }\r\n\r\n let xAxisProperties = CartesianHelper.getCategoryAxisProperties(dataView.metadata);\r\n let yAxisProperties = CartesianHelper.getValueAxisProperties(dataView.metadata);\r\n let axesLabels = converterHelper.createAxesLabels(xAxisProperties, yAxisProperties, categoryMetadata, [valuesMetadata]);\r\n\r\n return {\r\n series: [{ data: dataPoints }],\r\n categories: categoryValues,\r\n categoryMetadata: categoryMetadata,\r\n valuesMetadata: valuesMetadata,\r\n legend: { dataPoints: legend },\r\n hasHighlights: false,\r\n positionMin: posMin,\r\n positionMax: posMax,\r\n dataLabelsSettings: dataLabelSettings,\r\n sentimentColors: sentimentColors,\r\n axesLabels: { x: axesLabels.xAxisLabel, y: axesLabels.yAxisLabel },\r\n };\r\n }\r\n\r\n public setData(dataViews: DataView[]): void {\r\n debug.assertValue(dataViews, \"dataViews\");\r\n\r\n let sentimentColors = this.getSentimentColorsFromObjects(null);\r\n let dataView = dataViews.length > 0 ? dataViews[0] : undefined;\r\n\r\n this.data = <WaterfallChartData> {\r\n series: [{ data: [] }],\r\n categories: [],\r\n valuesMetadata: null,\r\n legend: { dataPoints: [], },\r\n hasHighlights: false,\r\n categoryMetadata: null,\r\n scalarCategoryAxis: false,\r\n positionMax: 0,\r\n positionMin: 0,\r\n dataLabelsSettings: dataLabelUtils.getDefaultLabelSettings(/* show */ false, /* labelColor */ undefined),\r\n sentimentColors: sentimentColors,\r\n axesLabels: { x: null, y: null },\r\n };\r\n\r\n if (dataView) {\r\n if (dataView.metadata && dataView.metadata.objects) {\r\n let objects = dataView.metadata.objects;\r\n\r\n let labelsObj = <DataLabelObject>objects['labels'];\r\n if (labelsObj) {\r\n dataLabelUtils.updateLabelSettingsFromLabelsObject(labelsObj, this.data.dataLabelsSettings);\r\n }\r\n sentimentColors = this.getSentimentColorsFromObjects(objects);\r\n }\r\n\r\n if (dataView.categorical) {\r\n this.data = WaterfallChart.converter(dataView, this.colors, this.hostServices, this.data.dataLabelsSettings, sentimentColors, this.interactivityService);\r\n }\r\n }\r\n }\r\n\r\n public enumerateObjectInstances(enumeration: ObjectEnumerationBuilder, options: EnumerateVisualObjectInstancesOptions): void {\r\n switch (options.objectName) {\r\n case 'sentimentColors':\r\n this.enumerateSentimentColors(enumeration);\r\n break;\r\n case 'labels':\r\n let labelSettingOptions: VisualDataLabelsSettingsOptions = {\r\n enumeration: enumeration,\r\n dataLabelsSettings: this.data.dataLabelsSettings,\r\n show: true,\r\n displayUnits: true,\r\n precision: true,\r\n fontSize: true,\r\n };\r\n dataLabelUtils.enumerateDataLabels(labelSettingOptions);\r\n break;\r\n }\r\n }\r\n\r\n private enumerateSentimentColors(enumeration: ObjectEnumerationBuilder): void {\r\n let sentimentColors = this.data.sentimentColors;\r\n\r\n enumeration.pushInstance({\r\n selector: null,\r\n properties: {\r\n increaseFill: sentimentColors.increaseFill,\r\n decreaseFill: sentimentColors.decreaseFill,\r\n totalFill: sentimentColors.totalFill\r\n },\r\n objectName: 'sentimentColors'\r\n });\r\n }\r\n\r\n public calculateLegend(): LegendData {\r\n // TODO: support interactive legend\r\n return this.data.legend;\r\n }\r\n\r\n public hasLegend(): boolean {\r\n // Waterfall legend is more like a color-key, so just return true\r\n return true;\r\n }\r\n\r\n private static createClippedDataIfOverflowed(data: WaterfallChartData, renderableDataCount: number): WaterfallChartData {\r\n let clipped: WaterfallChartData = data;\r\n let dataPoints: WaterfallChartDataPoint[] = data.series[0].data;\r\n\r\n if (data && renderableDataCount < dataPoints.length) {\r\n clipped = Prototype.inherit(data);\r\n clipped.series = [{ data: dataPoints.slice(0, renderableDataCount) }];\r\n clipped.categories = data.categories.slice(0, renderableDataCount);\r\n }\r\n\r\n return clipped;\r\n }\r\n\r\n public calculateAxesProperties(options: CalculateScaleAndDomainOptions): IAxisProperties[] {\r\n debug.assertValue(options, 'options');\r\n\r\n this.currentViewport = options.viewport;\r\n let margin = this.margin = options.margin;\r\n let data = this.clippedData = this.data;\r\n let categoryCount = data.categories.length;\r\n\r\n /* preferredPlotArea would be same as currentViewport width when there is no scrollbar. \r\n In that case we want to calculate the available plot area for the shapes by subtracting the margin from available viewport */\r\n let preferredPlotArea = this.getPreferredPlotArea(false, categoryCount, CartesianChart.MinOrdinalRectThickness);\r\n if (preferredPlotArea.width === this.currentViewport.width) {\r\n preferredPlotArea.width -= (margin.left + margin.right);\r\n }\r\n preferredPlotArea.height -= (margin.top + margin.bottom);\r\n\r\n let cartesianLayout = CartesianChart.getLayout(\r\n null,\r\n {\r\n availableWidth: preferredPlotArea.width,\r\n categoryCount: categoryCount,\r\n domain: null,\r\n isScalar: false,\r\n isScrollable: this.isScrollable,\r\n trimOrdinalDataOnOverflow: options.trimOrdinalDataOnOverflow\r\n });\r\n\r\n // In the case that we have overflowed horizontally we want to clip the data and use that to calculate the axes on the dashboard. \r\n if (!this.isScrollable) {\r\n data = this.clippedData = WaterfallChart.createClippedDataIfOverflowed(data, cartesianLayout.categoryCount);\r\n }\r\n\r\n let xAxisCreationOptions = WaterfallChart.getXAxisCreationOptions(data, preferredPlotArea.width, cartesianLayout, options);\r\n let yAxisCreationOptions = WaterfallChart.getYAxisCreationOptions(data, preferredPlotArea.height, options);\r\n\r\n let xAxisProperties = this.xAxisProperties = AxisHelper.createAxis(xAxisCreationOptions);\r\n let yAxisProperties = this.yAxisProperties = AxisHelper.createAxis(yAxisCreationOptions);\r\n\r\n let categoryWidth = this.xAxisProperties.categoryThickness * (1 - CartesianChart.InnerPaddingRatio);\r\n\r\n let formattersCache = dataLabelUtils.createColumnFormatterCacheManager();\r\n let labelSettings = data.dataLabelsSettings;\r\n let value2: number = WaterfallChart.getDisplayUnitValueFromAxisFormatter(yAxisProperties, labelSettings);\r\n\r\n this.layout = {\r\n categoryCount: cartesianLayout.categoryCount,\r\n categoryThickness: cartesianLayout.categoryThickness,\r\n isScalar: cartesianLayout.isScalar,\r\n outerPaddingRatio: cartesianLayout.outerPaddingRatio,\r\n categoryWidth: categoryWidth,\r\n labelText: (d: WaterfallChartDataPoint) => {\r\n //total value has no identity\r\n let formatter = formattersCache.getOrCreate(d.labelFormatString, labelSettings, value2);\r\n return dataLabelUtils.getLabelFormattedText({ label: formatter.format(d.value) });\r\n },\r\n labelLayout: dataLabelUtils.getLabelLayoutXYForWaterfall(xAxisProperties, categoryWidth, yAxisProperties, yAxisCreationOptions.dataDomain),\r\n filter: (d: WaterfallChartDataPoint) => {\r\n return dataLabelUtils.doesDataLabelFitInShape(d, yAxisProperties, this.layout);\r\n },\r\n style: {\r\n 'fill': (d: WaterfallChartDataPoint) => {\r\n if (d.isLabelInside)\r\n return dataLabelUtils.defaultInsideLabelColor;\r\n return d.labelFill;\r\n },\r\n },\r\n };\r\n\r\n this.xAxisProperties.axisLabel = options.showCategoryAxisLabel ? data.axesLabels.x : null;\r\n this.yAxisProperties.axisLabel = options.showValueAxisLabel ? data.axesLabels.y : null;\r\n\r\n return [xAxisProperties, yAxisProperties];\r\n }\r\n\r\n private static getDisplayUnitValueFromAxisFormatter(yAxisProperties: IAxisProperties, labelSettings: VisualDataLabelsSettings): number {\r\n return (yAxisProperties.formatter && yAxisProperties.formatter.displayUnit && labelSettings.displayUnits === 0) ? yAxisProperties.formatter.displayUnit.value : null;\r\n }\r\n\r\n private static lookupXValue(data: WaterfallChartData, index: number, type: ValueType): any {\r\n let dataPoints: WaterfallChartDataPoint[] = data.series[0].data;\r\n\r\n if (index === dataPoints.length - 1)\r\n // Total\r\n return dataPoints[index].categoryValue;\r\n else\r\n return CartesianHelper.lookupXValue(data, index, type, false);\r\n }\r\n\r\n public static getXAxisCreationOptions(data: WaterfallChartData, width: number, layout: CategoryLayout, options: CalculateScaleAndDomainOptions): CreateAxisOptions {\r\n debug.assertValue(data, 'data');\r\n debug.assertValue(options, 'options');\r\n\r\n let categoryDataType: ValueType = AxisHelper.getCategoryValueType(data.categoryMetadata);\r\n\r\n let domain = AxisHelper.createDomain(data.series, categoryDataType, /* isScalar */ false, options.forcedXDomain);\r\n\r\n let categoryThickness = layout.categoryThickness;\r\n let outerPadding = categoryThickness * layout.outerPaddingRatio;\r\n\r\n return <CreateAxisOptions> {\r\n pixelSpan: width,\r\n dataDomain: domain,\r\n metaDataColumn: data.categoryMetadata,\r\n formatString: valueFormatter.getFormatString(data.categoryMetadata, WaterfallChart.formatStringProp),\r\n isScalar: false,\r\n outerPadding: outerPadding,\r\n categoryThickness: categoryThickness,\r\n getValueFn: (index, type) => WaterfallChart.lookupXValue(data, index, type),\r\n forcedTickCount: options.forcedTickCount,\r\n isCategoryAxis: true,\r\n axisDisplayUnits: options.categoryAxisDisplayUnits,\r\n axisPrecision: options.categoryAxisPrecision\r\n };\r\n }\r\n\r\n public static getYAxisCreationOptions(data: WaterfallChartData, height: number, options: CalculateScaleAndDomainOptions): CreateAxisOptions {\r\n debug.assertValue(data, 'data');\r\n debug.assertValue(options, 'options');\r\n\r\n let combinedDomain = AxisHelper.combineDomain(options.forcedYDomain, [data.positionMin, data.positionMax]);\r\n\r\n return <CreateAxisOptions> {\r\n pixelSpan: height,\r\n dataDomain: combinedDomain,\r\n isScalar: true,\r\n isVertical: true,\r\n metaDataColumn: data.valuesMetadata,\r\n formatString: valueFormatter.getFormatString(data.valuesMetadata, WaterfallChart.formatStringProp),\r\n outerPadding: 0,\r\n forcedTickCount: options.forcedTickCount,\r\n useTickIntervalForDisplayUnits: true,\r\n isCategoryAxis: false,\r\n axisDisplayUnits: options.valueAxisDisplayUnits,\r\n axisPrecision: options.valueAxisPrecision\r\n };\r\n }\r\n\r\n public getPreferredPlotArea(isScalar: boolean, categoryCount: number, categoryThickness: number): IViewport {\r\n return CartesianChart.getPreferredPlotArea(\r\n categoryCount,\r\n categoryThickness,\r\n this.currentViewport,\r\n this.isScrollable,\r\n isScalar);\r\n }\r\n\r\n public getVisualCategoryAxisIsScalar(): boolean {\r\n return false;\r\n }\r\n\r\n public overrideXScale(xProperties: IAxisProperties): void {\r\n this.xAxisProperties = xProperties;\r\n }\r\n\r\n public setFilteredData(startIndex: number, endIndex: number): any {\r\n let data = this.clippedData = Prototype.inherit(this.data);\r\n\r\n data.series = [{ data: data.series[0].data.slice(startIndex, endIndex) }];\r\n data.categories = data.categories.slice(startIndex, endIndex);\r\n\r\n return data;\r\n }\r\n\r\n private createRects(data: WaterfallChartDataPoint[]): D3.UpdateSelection {\r\n let mainGraphicsContext = this.mainGraphicsContext;\r\n let colsSelection = mainGraphicsContext.selectAll(WaterfallChart.CategoryValueClasses.selector);\r\n let cols = colsSelection.data(data, (d: WaterfallChartDataPoint) => d.key);\r\n\r\n cols\r\n .enter()\r\n .append('rect')\r\n .attr('class', (d: WaterfallChartDataPoint) => WaterfallChart.CategoryValueClasses.class.concat(d.highlight ? 'highlight' : ''));\r\n\r\n cols.exit().remove();\r\n\r\n return cols;\r\n }\r\n\r\n private createConnectors(data: WaterfallChartDataPoint[]): D3.UpdateSelection {\r\n let mainGraphicsContext = this.mainGraphicsContext;\r\n let connectorSelection = mainGraphicsContext.selectAll(WaterfallChart.WaterfallConnectorClasses.selector);\r\n\r\n let connectors = connectorSelection.data(data.slice(0, data.length - 1), (d: WaterfallChartDataPoint) => d.key);\r\n\r\n connectors\r\n .enter()\r\n .append('line')\r\n .classed(WaterfallChart.WaterfallConnectorClasses.class, true);\r\n\r\n connectors.exit().remove();\r\n\r\n return connectors;\r\n }\r\n\r\n public render(suppressAnimations: boolean): CartesianVisualRenderResult {\r\n let dataPoints = this.clippedData.series[0].data;\r\n let bars = this.createRects(dataPoints);\r\n let connectors = this.createConnectors(dataPoints);\r\n\r\n if (this.tooltipsEnabled) \r\n TooltipManager.addTooltip(bars, (tooltipEvent: TooltipEvent) => tooltipEvent.data.tooltipInfo);\r\n\r\n let hasSelection = this.interactivityService && this.interactivityService.hasSelection();\r\n\r\n let xScale = this.xAxisProperties.scale;\r\n let yScale = this.yAxisProperties.scale;\r\n let y0 = yScale(0);\r\n\r\n this.mainGraphicsSVG.attr('height', this.getAvailableHeight())\r\n .attr('width', this.getAvailableWidth());\r\n\r\n /**\r\n * The y-value is always at the top of the rect. If the data value is negative then we can\r\n * use the scaled position directly since we are drawing down. If the data value is positive\r\n * we have to calculate the top of the rect and use that as the y-value. Since the y-value \r\n * is always the top of the rect, height should always be positive.\r\n */\r\n bars\r\n .style('fill', (d: WaterfallChartDataPoint) => d.color)\r\n .style('fill-opacity', (d: WaterfallChartDataPoint) => d.isTotal ? ColumnUtil.DefaultOpacity : ColumnUtil.getFillOpacity(d.selected, d.highlight, hasSelection, this.data.hasHighlights))\r\n .attr('width', this.layout.categoryWidth)\r\n .attr('x', (d: WaterfallChartDataPoint) => xScale(d.categoryIndex))\r\n .attr('y', (d: WaterfallChartDataPoint) => WaterfallChart.getRectTop(yScale, d.position, d.value))\r\n .attr('height', (d: WaterfallChartDataPoint) => y0 - yScale(Math.abs(d.value)));\r\n\r\n connectors\r\n .attr({\r\n 'x1': (d: WaterfallChartDataPoint) => xScale(d.categoryIndex),\r\n 'y1': (d: WaterfallChartDataPoint) => yScale(d.position + d.value),\r\n 'x2': (d: WaterfallChartDataPoint) => xScale(d.categoryIndex + 1) + this.layout.categoryWidth,\r\n 'y2': (d: WaterfallChartDataPoint) => yScale(d.position + d.value),\r\n });\r\n\r\n let labelSettings = this.data.dataLabelsSettings;\r\n let labelDataPoints: LabelDataPoint[] = [];\r\n if (labelSettings && labelSettings.show || labelSettings.showCategory) {\r\n labelDataPoints = this.createLabelDataPoints();\r\n }\r\n\r\n let behaviorOptions: WaterfallChartBehaviorOptions = undefined;\r\n if (this.interactivityService) {\r\n behaviorOptions = {\r\n bars: bars,\r\n datapoints: dataPoints,\r\n };\r\n }\r\n\r\n // This should always be the last line in the render code.\r\n SVGUtil.flushAllD3TransitionsIfNeeded(this.options);\r\n\r\n return { dataPoints: dataPoints, behaviorOptions: behaviorOptions, labelDataPoints: labelDataPoints, labelsAreNumeric: true };\r\n }\r\n\r\n public onClearSelection(): void {\r\n if (this.interactivityService)\r\n this.interactivityService.clearSelection();\r\n }\r\n\r\n public getSupportedCategoryAxisType(): string {\r\n return axisType.categorical;\r\n }\r\n\r\n public static getRectTop(scale: D3.Scale.GenericScale<any>, pos: number, value: number): number {\r\n if (value < 0)\r\n return scale(pos);\r\n else\r\n return scale(pos) - (scale(0) - scale(value));\r\n }\r\n\r\n private getAvailableWidth(): number {\r\n return this.currentViewport.width - (this.margin.left + this.margin.right);\r\n }\r\n\r\n private getAvailableHeight(): number {\r\n return this.currentViewport.height - (this.margin.top + this.margin.bottom);\r\n }\r\n\r\n private getSentimentColorsFromObjects(objects: DataViewObjects): WaterfallChartSentimentColors {\r\n let defaultSentimentColors = this.colors.getSentimentColors();\r\n let increaseColor = DataViewObjects.getFillColor(objects, waterfallChartProps.sentimentColors.increaseFill, defaultSentimentColors[2].value);\r\n let decreaseColor = DataViewObjects.getFillColor(objects, waterfallChartProps.sentimentColors.decreaseFill, defaultSentimentColors[0].value);\r\n let totalColor = DataViewObjects.getFillColor(objects, waterfallChartProps.sentimentColors.totalFill, WaterfallChart.defaultTotalColor);\r\n\r\n return <WaterfallChartSentimentColors> {\r\n increaseFill: { solid: { color: increaseColor } },\r\n decreaseFill: { solid: { color: decreaseColor } },\r\n totalFill: { solid: { color: totalColor } }\r\n };\r\n }\r\n\r\n // Public for testing\r\n public createLabelDataPoints(): LabelDataPoint[]{\r\n let labelDataPoints: LabelDataPoint[] = [];\r\n\r\n let data = this.data;\r\n let xScale = this.xAxisProperties.scale;\r\n let yScale = this.yAxisProperties.scale;\r\n let y0 = yScale(0);\r\n let series = data.series;\r\n let formattersCache = NewDataLabelUtils.createColumnFormatterCacheManager();\r\n let axisFormatter: number = NewDataLabelUtils.getDisplayUnitValueFromAxisFormatter(this.yAxisProperties.formatter, data.dataLabelsSettings);\r\n let labelSettings = this.data.dataLabelsSettings;\r\n\r\n for (let currentSeries of series) {\r\n for (let dataPoint of currentSeries.data) {\r\n // Calculate parent rectangle\r\n let parentRect: IRect = {\r\n left: xScale(dataPoint.categoryIndex),\r\n top: WaterfallChart.getRectTop(yScale, dataPoint.position, dataPoint.value),\r\n width: this.layout.categoryWidth,\r\n height: y0 - yScale(Math.abs(dataPoint.value)),\r\n };\r\n\r\n // Calculate label text\r\n let formatString = dataPoint.labelFormatString;\r\n let formatter = formattersCache.getOrCreate(formatString, this.data.dataLabelsSettings, axisFormatter);\r\n let text = NewDataLabelUtils.getLabelFormattedText(formatter.format(dataPoint.value));\r\n\r\n // Calculate text size\r\n let properties: TextProperties = {\r\n text: text,\r\n fontFamily: NewDataLabelUtils.LabelTextProperties.fontFamily,\r\n fontSize: PixelConverter.fromPoint(labelSettings.fontSize || NewDataLabelUtils.DefaultLabelFontSizeInPt),\r\n fontWeight: NewDataLabelUtils.LabelTextProperties.fontWeight,\r\n };\r\n\r\n let textWidth = TextMeasurementService.measureSvgTextWidth(properties);\r\n let textHeight = TextMeasurementService.estimateSvgTextHeight(properties, true /* tightFitForNumeric */);\r\n\r\n labelDataPoints.push({\r\n isPreferred: true,\r\n text: text,\r\n textSize: {\r\n width: textWidth,\r\n height: textHeight,\r\n },\r\n outsideFill: labelSettings.labelColor ? labelSettings.labelColor : NewDataLabelUtils.defaultLabelColor,\r\n insideFill: NewDataLabelUtils.defaultInsideLabelColor,\r\n parentType: LabelDataPointParentType.Rectangle,\r\n parentShape: {\r\n rect: parentRect,\r\n orientation: dataPoint.value >= 0 ? NewRectOrientation.VerticalBottomBased : NewRectOrientation.VerticalTopBased,\r\n validPositions: dataPoint.value === 0 ? WaterfallChart.validZeroLabelPosition : WaterfallChart.validLabelPositions,\r\n },\r\n fontSize: labelSettings.fontSize,\r\n identity: undefined,\r\n });\r\n }\r\n }\r\n\r\n return labelDataPoints;\r\n }\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n\r\n import TouchUtils = powerbi.visuals.controls.TouchUtils;\r\n import ClassAndSelector = jsCommon.CssConstants.ClassAndSelector;\r\n import createClassAndSelector = jsCommon.CssConstants.createClassAndSelector;\r\n\r\n export interface TooltipDataItem {\r\n displayName: string;\r\n value: string;\r\n color?: string;\r\n header?: string;\r\n }\r\n\r\n export interface TooltipOptions {\r\n opacity: number;\r\n animationDuration: number;\r\n offsetX: number;\r\n offsetY: number;\r\n }\r\n\r\n export interface TooltipEnabledDataPoint {\r\n tooltipInfo?: TooltipDataItem[];\r\n }\r\n\r\n export interface TooltipCategoryDataItem {\r\n value?: any;\r\n metadata: DataViewMetadataColumn;\r\n }\r\n\r\n export interface TooltipSeriesDataItem {\r\n value?: any;\r\n highlightedValue?: any;\r\n metadata: DataViewValueColumn;\r\n }\r\n\r\n export interface TooltipLocalizationOptions {\r\n highlightedValueDisplayName: string;\r\n }\r\n\r\n export interface TooltipEvent {\r\n data: any;\r\n index: number;\r\n coordinates: number[];\r\n elementCoordinates: number[];\r\n context: HTMLElement;\r\n isTouchEvent: boolean;\r\n }\r\n\r\n const enum ScreenArea {\r\n TopLeft,\r\n TopRight,\r\n BottomRight,\r\n BottomLeft\r\n };\r\n\r\n const ContainerClassName: ClassAndSelector = createClassAndSelector(\"tooltip-container\");\r\n const ContentContainerClassName: ClassAndSelector = createClassAndSelector(\"tooltip-content-container\");\r\n const ArrowClassName: ClassAndSelector = createClassAndSelector(\"arrow\");\r\n const TooltipHeaderClassName: ClassAndSelector = createClassAndSelector(\"tooltip-header\");\r\n const TooltipRowClassName: ClassAndSelector = createClassAndSelector(\"tooltip-row\");\r\n const TooltipColorCellClassName: ClassAndSelector = createClassAndSelector(\"tooltip-color-cell\");\r\n const TooltipTitleCellClassName: ClassAndSelector = createClassAndSelector(\"tooltip-title-cell\");\r\n const TooltipValueCellClassName: ClassAndSelector = createClassAndSelector(\"tooltip-value-cell\");\r\n\r\n export class ToolTipComponent {\r\n\r\n private static DefaultTooltipOptions: TooltipOptions = {\r\n opacity: 1,\r\n animationDuration: 250,\r\n offsetX: 10,\r\n offsetY: 10\r\n };\r\n\r\n private tooltipContainer: D3.Selection;\r\n private isTooltipVisible: boolean = false;\r\n private currentTooltipData: TooltipDataItem[];\r\n\r\n private customScreenWidth: number;\r\n private customScreenHeight: number;\r\n\r\n public static parentContainerSelector: string = \"body\";\r\n public static highlightedValueDisplayNameResorceKey: string = \"Tooltip_HighlightedValueDisplayName\";\r\n public static localizationOptions: TooltipLocalizationOptions;\r\n\r\n constructor(public tooltipOptions?: TooltipOptions) {\r\n if (!tooltipOptions) {\r\n this.tooltipOptions = ToolTipComponent.DefaultTooltipOptions;\r\n }\r\n }\r\n\r\n public isTooltipComponentVisible(): boolean {\r\n return this.isTooltipVisible;\r\n }\r\n\r\n /** Note: For tests only */\r\n public setTestScreenSize(width: number, height: number) {\r\n this.customScreenWidth = width;\r\n this.customScreenHeight = height;\r\n }\r\n\r\n public show(tooltipData: TooltipDataItem[], clickedArea: TouchUtils.Rectangle) {\r\n this.isTooltipVisible = true;\r\n\r\n if (!this.tooltipContainer) {\r\n this.tooltipContainer = this.createTooltipContainer();\r\n }\r\n\r\n this.setTooltipContent(tooltipData);\r\n\r\n this.tooltipContainer\r\n .style(\"visibility\", \"visible\")\r\n .transition()\r\n .duration(0) // Cancel previous transitions\r\n .style(\"opacity\", this.tooltipOptions.opacity);\r\n\r\n this.setPosition(clickedArea);\r\n }\r\n\r\n public move(tooltipData: TooltipDataItem[], clickedArea: TouchUtils.Rectangle) {\r\n if (this.isTooltipVisible) {\r\n if (tooltipData) {\r\n this.setTooltipContent(tooltipData);\r\n }\r\n\r\n this.setPosition(clickedArea);\r\n }\r\n }\r\n\r\n public hide() {\r\n if (this.isTooltipVisible) {\r\n this.isTooltipVisible = false;\r\n this.tooltipContainer\r\n .transition()\r\n .duration(this.tooltipOptions.animationDuration)\r\n .style(\"opacity\", 0)\r\n .each('end', function () { this.style.visibility = \"hidden\"; });\r\n }\r\n }\r\n\r\n private createTooltipContainer(): D3.Selection {\r\n let container: D3.Selection = d3.select(ToolTipComponent.parentContainerSelector)\r\n .append(\"div\")\r\n .attr(\"class\", ContainerClassName.class);\r\n\r\n container.append(\"div\").attr(\"class\", ArrowClassName.class);\r\n container.append(\"div\").attr(\"class\", ContentContainerClassName.class);\r\n\r\n return container;\r\n }\r\n\r\n private setTooltipContent(tooltipData: TooltipDataItem[]): void {\r\n if (_.isEqual(tooltipData, this.currentTooltipData))\r\n return;\r\n this.currentTooltipData = tooltipData;\r\n\r\n let rowsSelector: string = TooltipRowClassName.selector;\r\n let contentContainer = this.tooltipContainer.select(ContentContainerClassName.selector);\r\n\r\n // Clear existing content\r\n contentContainer.selectAll(TooltipHeaderClassName.selector).remove();\r\n contentContainer.selectAll(TooltipRowClassName.selector).remove();\r\n\r\n if (tooltipData.length === 0) return;\r\n\r\n if (tooltipData[0].header) {\r\n contentContainer.append(\"div\").attr(\"class\", TooltipHeaderClassName.class).text(tooltipData[0].header);\r\n }\r\n let tooltipRow: D3.UpdateSelection = contentContainer.selectAll(rowsSelector).data(tooltipData);\r\n let newRow: D3.Selection = tooltipRow.enter().append(\"div\").attr(\"class\", TooltipRowClassName.class);\r\n if (tooltipData[0].color) {\r\n let newColorCell: D3.Selection = newRow.append(\"div\").attr(\"class\", TooltipColorCellClassName.class);\r\n\r\n newColorCell\r\n .append('svg')\r\n .attr({\r\n 'width': '100%',\r\n 'height': '15px'\r\n })\r\n .append('circle')\r\n .attr({\r\n 'cx': '5',\r\n 'cy': '8',\r\n 'r': '5'\r\n })\r\n .style({\r\n 'fill': (d: TooltipDataItem) => d.color\r\n });\r\n }\r\n let newTitleCell: D3.Selection = newRow.append(\"div\").attr(\"class\", TooltipTitleCellClassName.class);\r\n let newValueCell: D3.Selection = newRow.append(\"div\").attr(\"class\", TooltipValueCellClassName.class);\r\n\r\n newTitleCell.text(function (d: TooltipDataItem) { return d.displayName; });\r\n newValueCell.text(function (d: TooltipDataItem) { return d.value; });\r\n }\r\n\r\n private getTooltipPosition(clickedArea: TouchUtils.Rectangle, clickedScreenArea: ScreenArea): TouchUtils.Point {\r\n let tooltipContainerBounds: ClientRect = this.tooltipContainer.node().getBoundingClientRect();\r\n let centerPointOffset: number = Math.floor(clickedArea.width / 2);\r\n let offsetX: number = 0;\r\n let offsetY: number = 0;\r\n let centerPoint: TouchUtils.Point = new TouchUtils.Point(clickedArea.x + centerPointOffset, clickedArea.y + centerPointOffset);\r\n let arrowOffset: number = 7;\r\n\r\n if (clickedScreenArea === ScreenArea.TopLeft) {\r\n offsetX += 3 * arrowOffset + centerPointOffset;\r\n offsetY -= 2 * arrowOffset + centerPointOffset;\r\n }\r\n else if (clickedScreenArea === ScreenArea.TopRight) {\r\n offsetX -= (2 * arrowOffset + tooltipContainerBounds.width + centerPointOffset);\r\n offsetY -= 2 * arrowOffset + centerPointOffset;\r\n }\r\n else if (clickedScreenArea === ScreenArea.BottomLeft) {\r\n offsetX += 3 * arrowOffset + centerPointOffset;\r\n offsetY -= (tooltipContainerBounds.height - 2 * arrowOffset + centerPointOffset);\r\n }\r\n else if (clickedScreenArea === ScreenArea.BottomRight) {\r\n offsetX -= (2 * arrowOffset + tooltipContainerBounds.width + centerPointOffset);\r\n offsetY -= (tooltipContainerBounds.height - 2 * arrowOffset + centerPointOffset);\r\n }\r\n\r\n centerPoint.offset(offsetX, offsetY);\r\n\r\n return centerPoint;\r\n }\r\n\r\n private setPosition(clickedArea: TouchUtils.Rectangle): void {\r\n let clickedScreenArea: ScreenArea = this.getClickedScreenArea(clickedArea);\r\n let tooltipPosition: TouchUtils.Point = this.getTooltipPosition(clickedArea, clickedScreenArea);\r\n\r\n this.tooltipContainer.style({ \"left\": tooltipPosition.x + \"px\", \"top\": tooltipPosition.y + \"px\" });\r\n this.setArrowPosition(clickedArea, clickedScreenArea);\r\n }\r\n\r\n private setArrowPosition(clickedArea: TouchUtils.Rectangle, clickedScreenArea: ScreenArea): void {\r\n let arrow: D3.Selection = this.getArrowElement();\r\n let arrowClassName: string;\r\n\r\n if (clickedScreenArea === ScreenArea.TopLeft) {\r\n arrowClassName = \"top left\";\r\n }\r\n else if (clickedScreenArea === ScreenArea.TopRight) {\r\n arrowClassName = \"top right\";\r\n }\r\n else if (clickedScreenArea === ScreenArea.BottomLeft) {\r\n arrowClassName = \"bottom left\";\r\n }\r\n else if (clickedScreenArea === ScreenArea.BottomRight) {\r\n arrowClassName = \"bottom right\";\r\n }\r\n\r\n arrow\r\n .attr('class', 'arrow') // Reset all classes\r\n .classed(arrowClassName, true);\r\n }\r\n\r\n private getArrowElement(): D3.Selection {\r\n return this.tooltipContainer.select(ArrowClassName.selector);\r\n }\r\n\r\n private getClickedScreenArea(clickedArea: TouchUtils.Rectangle): ScreenArea {\r\n let screenWidth: number = this.customScreenWidth || window.innerWidth;\r\n let screenHeight: number = this.customScreenHeight || window.innerHeight;\r\n let centerPointOffset: number = clickedArea.width / 2;\r\n let centerPoint: TouchUtils.Point = new TouchUtils.Point(clickedArea.x + centerPointOffset, clickedArea.y + centerPointOffset);\r\n let halfWidth: number = screenWidth / 2;\r\n let halfHeight: number = screenHeight / 2;\r\n\r\n if (centerPoint.x < halfWidth && centerPoint.y < halfHeight) {\r\n return ScreenArea.TopLeft;\r\n }\r\n else if (centerPoint.x >= halfWidth && centerPoint.y < halfHeight) {\r\n return ScreenArea.TopRight;\r\n }\r\n else if (centerPoint.x < halfWidth && centerPoint.y >= halfHeight) {\r\n return ScreenArea.BottomLeft;\r\n }\r\n else if (centerPoint.x >= halfWidth && centerPoint.y >= halfHeight) {\r\n return ScreenArea.BottomRight;\r\n }\r\n }\r\n }\r\n\r\n export module TooltipManager {\r\n\r\n export let ShowTooltips: boolean = true;\r\n export let ToolTipInstance: ToolTipComponent = new ToolTipComponent();\r\n let GlobalTooltipEventsAttached: boolean = false;\r\n const tooltipMouseOverDelay: number = 350;\r\n const tooltipMouseOutDelay: number = 500;\r\n const tooltipTouchDelay: number = 350;\r\n let tooltipTimeoutId: number;\r\n const handleTouchDelay: number = 1000;\r\n let handleTouchTimeoutId: number = 0;\r\n let mouseCoordinates: number[];\r\n let tooltipData: TooltipDataItem[];\r\n\r\n export function addTooltip(d3Selection: D3.Selection,\r\n getTooltipInfoDelegate: (tooltipEvent: TooltipEvent) => TooltipDataItem[],\r\n reloadTooltipDataOnMouseMove?: boolean,\r\n onMouseOutDelegate?: () => void): void {\r\n\r\n if (!ShowTooltips) {\r\n return;\r\n }\r\n\r\n debug.assertValue(d3Selection, \"d3Selection\");\r\n\r\n let rootNode = d3.select(ToolTipComponent.parentContainerSelector).node();\r\n let touchStartEventName: string = getTouchStartEventName();\r\n let touchEndEventName: string = getTouchEndEventName();\r\n let isPointerEvent: boolean = touchStartEventName === \"pointerdown\" || touchStartEventName === \"MSPointerDown\";\r\n\r\n // Mouse events\r\n d3Selection.on(\"mouseover\", function (d, i) {\r\n // Ignore mouseover (and other mouse events) while handling touch events\r\n if (!handleTouchTimeoutId && canDisplayTooltip(d3.event)) {\r\n mouseCoordinates = getCoordinates(rootNode, true);\r\n let elementCoordinates: number[] = getCoordinates(this, true);\r\n let tooltipEvent: TooltipEvent = {\r\n data: d,\r\n index: i,\r\n coordinates: mouseCoordinates,\r\n elementCoordinates: elementCoordinates,\r\n context: this,\r\n isTouchEvent: false\r\n };\r\n clearTooltipTimeout();\r\n // if it is already visible, change contents immediately (use 16ms minimum perceivable frame rate to prevent thrashing)\r\n let delay = ToolTipInstance.isTooltipComponentVisible() ? 16 : tooltipMouseOverDelay;\r\n tooltipTimeoutId = showDelayedTooltip(tooltipEvent, getTooltipInfoDelegate, delay);\r\n }\r\n });\r\n\r\n d3Selection.on(\"mouseout\", function (d, i) {\r\n if (!handleTouchTimeoutId) {\r\n clearTooltipTimeout();\r\n tooltipTimeoutId = hideDelayedTooltip(tooltipMouseOutDelay);\r\n }\r\n\r\n if (onMouseOutDelegate) {\r\n onMouseOutDelegate();\r\n }\r\n });\r\n\r\n d3Selection.on(\"mousemove\", function (d, i) {\r\n if (!handleTouchTimeoutId && canDisplayTooltip(d3.event)) {\r\n mouseCoordinates = getCoordinates(rootNode, true);\r\n let elementCoordinates: number[] = getCoordinates(this, true);\r\n let tooltipEvent: TooltipEvent = {\r\n data: d,\r\n index: i,\r\n coordinates: mouseCoordinates,\r\n elementCoordinates: elementCoordinates,\r\n context: this,\r\n isTouchEvent: false\r\n };\r\n moveTooltipEventHandler(tooltipEvent, getTooltipInfoDelegate, reloadTooltipDataOnMouseMove);\r\n }\r\n });\r\n \r\n // Touch events\r\n if (!GlobalTooltipEventsAttached) {\r\n // Add root container hide tooltip event\r\n attachGlobalEvents(touchStartEventName);\r\n GlobalTooltipEventsAttached = true;\r\n }\r\n\r\n d3Selection.on(touchStartEventName, function (d, i) {\r\n hideTooltipEventHandler();\r\n let coordinates: number[] = getCoordinates(rootNode, isPointerEvent);\r\n let elementCoordinates: number[] = getCoordinates(this, isPointerEvent);\r\n let tooltipEvent: TooltipEvent = {\r\n data: d,\r\n index: i,\r\n coordinates: coordinates,\r\n elementCoordinates: elementCoordinates,\r\n context: this,\r\n isTouchEvent: true\r\n };\r\n clearTooltipTimeout();\r\n tooltipTimeoutId = showDelayedTooltip(tooltipEvent, getTooltipInfoDelegate, tooltipTouchDelay);\r\n });\r\n\r\n d3Selection.on(touchEndEventName, function (d, i) {\r\n clearTooltipTimeout();\r\n if (handleTouchTimeoutId)\r\n clearTimeout(handleTouchTimeoutId);\r\n\r\n // At the end of touch action, set a timeout that will let us ignore the incoming mouse events for a small amount of time\r\n handleTouchTimeoutId = setTimeout(() => {\r\n handleTouchTimeoutId = 0;\r\n }, handleTouchDelay);\r\n });\r\n }\r\n\r\n export function showDelayedTooltip(tooltipEvent: TooltipEvent, getTooltipInfoDelegate: (tooltipEvent: TooltipEvent) => TooltipDataItem[], delayInMs: number): number {\r\n return setTimeout(() => showTooltipEventHandler(tooltipEvent, getTooltipInfoDelegate), delayInMs);\r\n }\r\n\r\n export function hideDelayedTooltip(delayInMs: number): number {\r\n return setTimeout(() => hideTooltipEventHandler(), delayInMs);\r\n }\r\n\r\n export function setLocalizedStrings(localizationOptions: TooltipLocalizationOptions): void {\r\n ToolTipComponent.localizationOptions = localizationOptions;\r\n }\r\n\r\n function showTooltipEventHandler(tooltipEvent: TooltipEvent, getTooltipInfoDelegate: (tooltipEvent: TooltipEvent) => TooltipDataItem[]) {\r\n let tooltipInfo: TooltipDataItem[] = tooltipData || getTooltipInfoDelegate(tooltipEvent);\r\n if (!_.isEmpty(tooltipInfo)) {\r\n let coordinates: number[] = mouseCoordinates || tooltipEvent.coordinates;\r\n let clickedArea: TouchUtils.Rectangle = getClickedArea(coordinates[0], coordinates[1], tooltipEvent.isTouchEvent);\r\n ToolTipInstance.show(tooltipInfo, clickedArea);\r\n }\r\n }\r\n\r\n function moveTooltipEventHandler(tooltipEvent: TooltipEvent, getTooltipInfoDelegate: (tooltipEvent: TooltipEvent) => TooltipDataItem[], reloadTooltipDataOnMouseMove: boolean) {\r\n tooltipData = undefined;\r\n if (reloadTooltipDataOnMouseMove) {\r\n tooltipData = getTooltipInfoDelegate(tooltipEvent);\r\n }\r\n let clickedArea: TouchUtils.Rectangle = getClickedArea(tooltipEvent.coordinates[0], tooltipEvent.coordinates[1], tooltipEvent.isTouchEvent);\r\n ToolTipInstance.move(tooltipData, clickedArea);\r\n };\r\n\r\n function hideTooltipEventHandler() {\r\n ToolTipInstance.hide();\r\n };\r\n\r\n function clearTooltipTimeout() {\r\n if (tooltipTimeoutId) {\r\n clearTimeout(tooltipTimeoutId);\r\n }\r\n }\r\n\r\n function canDisplayTooltip(d3Event: any): boolean {\r\n let cadDisplay: boolean = true;\r\n let mouseEvent: MouseEvent = <MouseEvent>d3Event;\r\n if (mouseEvent.buttons !== undefined) {\r\n // Check mouse buttons state\r\n let hasMouseButtonPressed = mouseEvent.buttons !== 0;\r\n cadDisplay = !hasMouseButtonPressed;\r\n }\r\n return cadDisplay;\r\n }\r\n\r\n function getTouchStartEventName(): string {\r\n let eventName: string = \"touchstart\";\r\n\r\n if (window[\"PointerEvent\"]) {\r\n // IE11\r\n eventName = \"pointerdown\";\r\n } else if (window[\"MSPointerEvent\"]) {\r\n // IE10\r\n eventName = \"MSPointerDown\";\r\n }\r\n\r\n return eventName;\r\n }\r\n\r\n function getTouchEndEventName(): string {\r\n let eventName: string = \"touchend\";\r\n\r\n if (window[\"PointerEvent\"]) {\r\n // IE11\r\n eventName = \"pointerup\";\r\n } else if (window[\"MSPointerEvent\"]) {\r\n // IE10\r\n eventName = \"MSPointerUp\";\r\n }\r\n\r\n return eventName;\r\n }\r\n\r\n function getCoordinates(rootNode: Element, isPointerEvent: boolean): number[] {\r\n let coordinates: number[];\r\n\r\n if (isPointerEvent) {\r\n // DO NOT USE - WebKit bug in getScreenCTM with nested SVG results in slight negative coordinate shift\r\n // Also, IE will incorporate transform scale but WebKit does not, forcing us to detect browser and adjust appropriately.\r\n // Just use non-scaled coordinates for all browsers, and adjust for the transform scale later (see lineChart.findIndex)\r\n //coordinates = d3.mouse(rootNode);\r\n\r\n // copied from d3_eventSource (which is not exposed)\r\n let e = d3.event, s;\r\n while (s = e.sourceEvent) e = s;\r\n let rect = rootNode.getBoundingClientRect();\r\n coordinates = [e.clientX - rect.left - rootNode.clientLeft, e.clientY - rect.top - rootNode.clientTop];\r\n }\r\n else {\r\n let touchCoordinates = d3.touches(rootNode);\r\n if (touchCoordinates && touchCoordinates.length > 0) {\r\n coordinates = touchCoordinates[0];\r\n }\r\n }\r\n\r\n return coordinates;\r\n }\r\n\r\n function attachGlobalEvents(touchStartEventName: string): void {\r\n d3.select(ToolTipComponent.parentContainerSelector).on(touchStartEventName, function (d, i) {\r\n ToolTipInstance.hide();\r\n });\r\n }\r\n\r\n function getClickedArea(x: number, y: number, isTouchEvent: boolean): TouchUtils.Rectangle {\r\n let width: number = 0;\r\n let pointX: number = x;\r\n let pointY: number = y;\r\n\r\n if (isTouchEvent) {\r\n width = 12;\r\n let offset: number = width / 2;\r\n pointX = Math.max(x - offset, 0);\r\n pointY = Math.max(y - offset, 0);\r\n }\r\n\r\n return new TouchUtils.Rectangle(pointX, pointY, width, width);\r\n }\r\n }\r\n\r\n export module TooltipBuilder {\r\n\r\n // TODO: implement options bag as input parameter\r\n export function createTooltipInfo(\r\n formatStringProp: DataViewObjectPropertyIdentifier,\r\n dataViewCat: DataViewCategorical,\r\n categoryValue: any,\r\n value?: any,\r\n categories?: DataViewCategoryColumn[],\r\n seriesData?: TooltipSeriesDataItem[],\r\n seriesIndex?: number,\r\n categoryIndex?: number,\r\n highlightedValue?: any): TooltipDataItem[] {\r\n let categorySource: TooltipCategoryDataItem;\r\n let seriesSource: TooltipSeriesDataItem[] = [];\r\n let valuesSource: DataViewMetadataColumn = undefined;\r\n seriesIndex = seriesIndex | 0;\r\n\r\n let categoriesData = dataViewCat ? dataViewCat.categories : categories;\r\n if (categoriesData && categoriesData.length > 0) {\r\n categorySource = { value: categoryValue, metadata: categoriesData[0].source };\r\n }\r\n if (dataViewCat && dataViewCat.values) {\r\n if (categorySource && categorySource.metadata === dataViewCat.values.source) {\r\n // Category/series on the same column -- don't repeat its value in the tooltip.\r\n }\r\n else {\r\n valuesSource = dataViewCat.values.source;\r\n }\r\n if (dataViewCat.values.length > 0) {\r\n let valueColumn: DataViewValueColumn = dataViewCat.values[seriesIndex];\r\n let isAutoGeneratedColumn: boolean = !!(valueColumn && valueColumn.source && (<DataViewMetadataAutoGeneratedColumn>valueColumn.source).isAutoGeneratedColumn);\r\n\r\n if (!isAutoGeneratedColumn) {\r\n seriesSource.push({ value: value, highlightedValue: highlightedValue, metadata: valueColumn });\r\n }\r\n }\r\n\r\n // check for gradient measure index \r\n let gradientMeasureIndex: number = GradientUtils.getGradientMeasureIndex(dataViewCat);\r\n let gradientValueColumn: DataViewValueColumn = gradientMeasureIndex === - 1 ? null : dataViewCat.values[gradientMeasureIndex];\r\n //If the same column has both Y and Gradient roles then make sure we don't add it more than once\r\n if (gradientValueColumn && seriesIndex !== gradientMeasureIndex) {\r\n // Saturation color\r\n seriesSource.push({ value: gradientValueColumn.values[categoryIndex], metadata: { source: gradientValueColumn.source, values: [] } });\r\n }\r\n }\r\n if (seriesData) {\r\n for (let i: number = 0, len: number = seriesData.length; i < len; i++) {\r\n let singleSeriesData: TooltipSeriesDataItem = seriesData[i];\r\n if (categorySource && categorySource.metadata === singleSeriesData.metadata.source)\r\n continue;\r\n\r\n seriesSource.push({ value: singleSeriesData.value, metadata: singleSeriesData.metadata });\r\n }\r\n }\r\n\r\n let tooltipInfo: TooltipDataItem[] = createTooltipData(formatStringProp, categorySource, valuesSource, seriesSource);\r\n\r\n return tooltipInfo;\r\n }\r\n\r\n function createTooltipData(\r\n formatStringProp: DataViewObjectPropertyIdentifier,\r\n categoryValue: TooltipCategoryDataItem,\r\n valuesSource: DataViewMetadataColumn,\r\n seriesValues: TooltipSeriesDataItem[]): TooltipDataItem[] {\r\n\r\n debug.assertValue(seriesValues, \"seriesSource\");\r\n debug.assertValue(ToolTipComponent.localizationOptions, \"ToolTipComponent.localizationOptions\");\r\n debug.assertAnyValue(formatStringProp, 'formatStringProp');\r\n\r\n let items: TooltipDataItem[] = [];\r\n\r\n if (categoryValue) {\r\n let categoryFormattedValue: string = getFormattedValue(categoryValue.metadata, formatStringProp, categoryValue.value);\r\n items.push({ displayName: categoryValue.metadata.displayName, value: categoryFormattedValue });\r\n }\r\n\r\n if (valuesSource) {\r\n // Dynamic series value\r\n let dynamicValue: string;\r\n if (seriesValues.length > 0) {\r\n let dynamicValueMetadata: DataViewMetadataColumn = seriesValues[0].metadata.source;\r\n dynamicValue = getFormattedValue(valuesSource, formatStringProp, dynamicValueMetadata.groupName);\r\n }\r\n items.push({ displayName: valuesSource.displayName, value: dynamicValue });\r\n }\r\n\r\n for (let i = 0; i < seriesValues.length; i++) {\r\n let seriesData = seriesValues[i];\r\n\r\n if (seriesData && seriesData.metadata) {\r\n let seriesMetadataColumn = seriesData.metadata.source;\r\n let value = seriesData.value;\r\n let highlightedValue = seriesData.highlightedValue;\r\n\r\n if (value || value === 0) {\r\n let formattedValue: string = getFormattedValue(seriesMetadataColumn, formatStringProp, value);\r\n items.push({ displayName: seriesMetadataColumn.displayName, value: formattedValue });\r\n }\r\n\r\n if (highlightedValue || highlightedValue === 0) {\r\n let formattedHighlightedValue: string = getFormattedValue(seriesMetadataColumn, formatStringProp, highlightedValue);\r\n let displayName = ToolTipComponent.localizationOptions.highlightedValueDisplayName;\r\n items.push({ displayName: displayName, value: formattedHighlightedValue });\r\n }\r\n }\r\n }\r\n\r\n return items;\r\n }\r\n\r\n function getFormattedValue(column: DataViewMetadataColumn, formatStringProp: DataViewObjectPropertyIdentifier, value: any) {\r\n let formatString: string = getFormatStringFromColumn(column, formatStringProp);\r\n return valueFormatter.format(value, formatString);\r\n }\r\n\r\n function getFormatStringFromColumn(column: DataViewMetadataColumn, formatStringProp: DataViewObjectPropertyIdentifier): string {\r\n if (column) {\r\n let formatString: string = valueFormatter.getFormatString(column, formatStringProp, true);\r\n return formatString || column.format;\r\n }\r\n return null;\r\n }\r\n }\r\n}\r\n","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n export module visualStyles {\r\n export function create(dataColors?: IDataColorPalette): IVisualStyle {\r\n if (dataColors === undefined)\r\n dataColors = new visuals.DataColorPalette();\r\n\r\n return {\r\n titleText: {\r\n color: { value: 'rgba(51,51,51,1)' }\r\n },\r\n subTitleText: {\r\n color: { value: 'rgba(145,145,145,1)' }\r\n },\r\n colorPalette: {\r\n dataColors: dataColors,\r\n },\r\n labelText: {\r\n color: {\r\n value: 'rgba(51,51,51,1)',\r\n },\r\n fontSize: '11px'\r\n },\r\n isHighContrast: false,\r\n };\r\n }\r\n }\r\n}\r\n","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n import ClassAndSelector = jsCommon.CssConstants.ClassAndSelector;\r\n import createClassAndSelector = jsCommon.CssConstants.createClassAndSelector;\r\n import PixelConverter = jsCommon.PixelConverter;\r\n import ISize = shapes.ISize;\r\n\r\n export interface DonutSmallViewPortProperties {\r\n maxHeightToScaleDonutLegend: number;\r\n }\r\n\r\n export interface DonutConstructorOptions {\r\n sliceWidthRatio?: number;\r\n animator?: IDonutChartAnimator;\r\n isScrollable?: boolean;\r\n disableGeometricCulling?: boolean;\r\n behavior?: IInteractiveBehavior;\r\n tooltipsEnabled?: boolean;\r\n smallViewPortProperties?: DonutSmallViewPortProperties;\r\n }\r\n\r\n /**\r\n * Used because data points used in D3 pie layouts are placed within a container with pie information.\r\n */\r\n export interface DonutArcDescriptor extends D3.Layout.ArcDescriptor {\r\n data: DonutDataPoint;\r\n }\r\n\r\n export interface DonutDataPoint extends SelectableDataPoint, TooltipEnabledDataPoint {\r\n measure: number;\r\n measureFormat?: string;\r\n percentage: number;\r\n highlightRatio: number;\r\n label: string;\r\n index: number;\r\n /** Data points that may be drilled into */\r\n internalDataPoints?: DonutDataPoint[];\r\n color: string;\r\n strokeWidth: number;\r\n //taken from column metadata\r\n labelFormatString: string;\r\n /** This is set to true only when it's the last slice and all slices have the same color*/\r\n isLastInDonut?: boolean;\r\n }\r\n\r\n export interface DonutData {\r\n dataPointsToDeprecate: DonutDataPoint[];\r\n dataPoints: DonutArcDescriptor[]; // The data points will be culled based on viewport size to remove invisible slices\r\n unCulledDataPoints: DonutDataPoint[]; // The unculled data points will never be culled\r\n dataPointsToEnumerate?: LegendDataPoint[];\r\n legendData: LegendData;\r\n hasHighlights: boolean;\r\n dataLabelsSettings: VisualDataLabelsSettings;\r\n legendObjectProperties?: DataViewObject;\r\n maxValue?: number;\r\n visibleGeometryCulled?: boolean;\r\n defaultDataPointColor?: string;\r\n showAllDataPoints?: boolean;\r\n }\r\n\r\n interface DonutChartSettings {\r\n /**\r\n * The duration for a long animation displayed after a user interaction with an interactive chart. \r\n */\r\n chartRotationAnimationDuration?: number;\r\n /**\r\n * The duration for a short animation displayed after a user interaction with an interactive chart.\r\n */\r\n legendTransitionAnimationDuration?: number;\r\n }\r\n\r\n interface InteractivityState {\r\n interactiveLegend: DonutChartInteractiveLegend;\r\n valueToAngleFactor: number; // Ratio between 360 and the sum of the angles\r\n sliceAngles: number[]; // Saves the angle to rotate of each slice\r\n currentRotate: number; // Keeps how much the donut is rotated by\r\n interactiveChosenSliceFinishedSetting: boolean; // flag indicating whether the chosen interactive slice was set\r\n lastChosenInteractiveSliceIndex: number; // keeps the index of the selected slice\r\n donutCenter: { // center of the chart\r\n x: number; y: number;\r\n };\r\n totalDragAngleDifference: number; // keeps how much of a rotation happened in the drag\r\n previousDragAngle: number; // previous angle of the drag event\r\n currentIndexDrag: number; // index of the slice that is currently showing in the legend \r\n previousIndexDrag: number; // index of the slice that was showing in the legend before current drag event\r\n }\r\n\r\n export interface DonutLayout {\r\n fontSize: string;\r\n shapeLayout: {\r\n d: (d: DonutArcDescriptor) => string;\r\n };\r\n highlightShapeLayout: {\r\n d: (d: DonutArcDescriptor) => string;\r\n };\r\n zeroShapeLayout: {\r\n d: (d: DonutArcDescriptor) => string;\r\n };\r\n }\r\n\r\n /**\r\n * Renders a donut chart.\r\n */\r\n export class DonutChart implements IVisual {\r\n private static ClassName = 'donutChart';\r\n private static InteractiveLegendClassName = 'donutLegend';\r\n private static InteractiveLegendArrowClassName = 'donutLegendArrow';\r\n private static DrillDownAnimationDuration = 1000;\r\n private static OuterArcRadiusRatio = 0.9;\r\n private static InnerArcRadiusRatio = 0.8;\r\n private static OpaqueOpacity = 1.0;\r\n private static SemiTransparentOpacity = 0.6;\r\n private static defaultSliceWidthRatio: number = 0.48;\r\n private static invisibleArcLengthInPixels: number = 3;\r\n private static sliceClass: ClassAndSelector = createClassAndSelector('slice');\r\n private static sliceHighlightClass: ClassAndSelector = createClassAndSelector('slice-highlight');\r\n private static twoPi = 2 * Math.PI;\r\n\r\n public static InteractiveLegendContainerHeight = 70;\r\n public static EffectiveZeroValue = 0.000000001; // Very small multiplier so that we have a properly shaped zero arc to animate to/from.\r\n public static PolylineOpacity = 0.5;\r\n\r\n private dataViews: DataView[];\r\n private sliceWidthRatio: number;\r\n private svg: D3.Selection;\r\n private mainGraphicsContext: D3.Selection;\r\n private labelGraphicsContext: D3.Selection;\r\n private clearCatcher: D3.Selection;\r\n private legendContainer: D3.Selection;\r\n private interactiveLegendArrow: D3.Selection;\r\n private parentViewport: IViewport;\r\n private currentViewport: IViewport;\r\n private formatter: ICustomValueFormatter;\r\n private data: DonutData;\r\n private pie: D3.Layout.PieLayout;\r\n private arc: D3.Svg.Arc;\r\n private outerArc: D3.Svg.Arc;\r\n private radius: number;\r\n private previousRadius: number;\r\n private key: any;\r\n private colors: IDataColorPalette;\r\n private style: IVisualStyle;\r\n private drilled: boolean;\r\n private allowDrilldown: boolean;\r\n private options: VisualInitOptions;\r\n private isInteractive: boolean;\r\n private interactivityState: InteractivityState;\r\n private chartRotationAnimationDuration: number;\r\n private interactivityService: IInteractivityService;\r\n private behavior: IInteractiveBehavior;\r\n private legend: ILegend;\r\n private hasSetData: boolean;\r\n private isScrollable: boolean;\r\n private disableGeometricCulling: boolean;\r\n private hostService: IVisualHostServices;\r\n private settings: DonutChartSettings;\r\n private tooltipsEnabled: boolean;\r\n private donutProperties: DonutChartProperties;\r\n private maxHeightToScaleDonutLegend: number;\r\n\r\n /**\r\n * Note: Public for testing.\r\n */\r\n public animator: IDonutChartAnimator;\r\n\r\n constructor(options?: DonutConstructorOptions) {\r\n if (options) {\r\n this.sliceWidthRatio = options.sliceWidthRatio;\r\n this.animator = options.animator;\r\n this.isScrollable = options.isScrollable ? options.isScrollable : false;\r\n this.disableGeometricCulling = options.disableGeometricCulling ? options.disableGeometricCulling : false;\r\n this.behavior = options.behavior;\r\n this.tooltipsEnabled = options.tooltipsEnabled;\r\n if (options.smallViewPortProperties) {\r\n this.maxHeightToScaleDonutLegend = options.smallViewPortProperties.maxHeightToScaleDonutLegend;\r\n }\r\n }\r\n if (this.sliceWidthRatio == null) {\r\n this.sliceWidthRatio = DonutChart.defaultSliceWidthRatio;\r\n }\r\n }\r\n\r\n public static converter(dataView: DataView, colors: IDataColorPalette, defaultDataPointColor?: string, viewport?: IViewport, disableGeometricCulling?: boolean, interactivityService?: IInteractivityService): DonutData {\r\n let converter = new DonutChartConversion.DonutChartConverter(dataView, colors, defaultDataPointColor);\r\n converter.convert();\r\n let d3PieLayout = d3.layout.pie()\r\n .sort(null)\r\n .value((d: DonutDataPoint) => {\r\n return d.percentage;\r\n });\r\n\r\n if (interactivityService) {\r\n interactivityService.applySelectionStateToData(converter.dataPoints);\r\n interactivityService.applySelectionStateToData(converter.legendData.dataPoints);\r\n }\r\n\r\n let culledDataPoints = (!disableGeometricCulling && viewport) ? DonutChart.cullDataByViewport(converter.dataPoints, converter.maxValue, viewport) : converter.dataPoints;\r\n return {\r\n dataPointsToDeprecate: culledDataPoints,\r\n dataPoints: d3PieLayout(culledDataPoints),\r\n unCulledDataPoints: converter.dataPoints,\r\n dataPointsToEnumerate: converter.legendData.dataPoints,\r\n legendData: converter.legendData,\r\n hasHighlights: converter.hasHighlights,\r\n dataLabelsSettings: converter.dataLabelsSettings,\r\n legendObjectProperties: converter.legendObjectProperties,\r\n maxValue: converter.maxValue,\r\n visibleGeometryCulled: converter.dataPoints.length !== culledDataPoints.length,\r\n };\r\n }\r\n\r\n public init(options: VisualInitOptions) {\r\n this.options = options;\r\n let element = options.element;\r\n // Ensure viewport is empty on init\r\n element.empty();\r\n this.parentViewport = options.viewport;\r\n // avoid deep copy\r\n this.currentViewport = {\r\n height: options.viewport.height,\r\n width: options.viewport.width,\r\n };\r\n\r\n this.formatter = valueFormatter.format;\r\n this.data = {\r\n dataPointsToDeprecate: [],\r\n dataPointsToEnumerate: [],\r\n dataPoints: [],\r\n unCulledDataPoints: [],\r\n legendData: { title: \"\", dataPoints: [], fontSize: SVGLegend.DefaultFontSizeInPt },\r\n hasHighlights: false,\r\n dataLabelsSettings: dataLabelUtils.getDefaultDonutLabelSettings(),\r\n };\r\n this.drilled = false;\r\n // Leaving this false for now, will depend on the datacategory in the future\r\n this.allowDrilldown = false;\r\n this.style = options.style;\r\n this.colors = this.style.colorPalette.dataColors;\r\n this.radius = 0;\r\n this.isInteractive = options.interactivity && options.interactivity.isInteractiveLegend;\r\n let donutChartSettings = this.settings;\r\n\r\n if (this.behavior) {\r\n this.interactivityService = createInteractivityService(options.host);\r\n }\r\n this.legend = createLegend(element, options.interactivity && options.interactivity.isInteractiveLegend, this.interactivityService, this.isScrollable);\r\n\r\n this.hostService = options.host;\r\n\r\n if (this.isInteractive) {\r\n this.chartRotationAnimationDuration = (donutChartSettings && donutChartSettings.chartRotationAnimationDuration) ? donutChartSettings.chartRotationAnimationDuration : 0;\r\n\r\n // Create interactive legend\r\n let legendContainer = this.legendContainer = d3.select(element.get(0))\r\n .append('div')\r\n .classed(DonutChart.InteractiveLegendClassName, true);\r\n this.interactivityState = {\r\n interactiveLegend: new DonutChartInteractiveLegend(this, legendContainer, this.colors, options, this.settings),\r\n valueToAngleFactor: 0,\r\n sliceAngles: [],\r\n currentRotate: 0,\r\n interactiveChosenSliceFinishedSetting: false,\r\n lastChosenInteractiveSliceIndex: 0,\r\n totalDragAngleDifference: 0,\r\n currentIndexDrag: 0,\r\n previousIndexDrag: 0,\r\n previousDragAngle: 0,\r\n donutCenter: { x: 0, y: 0 },\r\n };\r\n }\r\n\r\n this.svg = d3.select(element.get(0))\r\n .append('svg')\r\n .style('position', 'absolute')\r\n .classed(DonutChart.ClassName, true);\r\n\r\n if (this.behavior)\r\n this.clearCatcher = appendClearCatcher(this.svg);\r\n\r\n this.mainGraphicsContext = this.svg.append('g');\r\n this.mainGraphicsContext.append(\"g\")\r\n .classed('slices', true);\r\n\r\n this.labelGraphicsContext = this.svg\r\n .append(\"g\")\r\n .classed(NewDataLabelUtils.labelGraphicsContextClass.class, true);\r\n\r\n this.pie = d3.layout.pie()\r\n .sort(null)\r\n .value((d: DonutDataPoint) => {\r\n return d.percentage;\r\n });\r\n }\r\n\r\n public update(options: VisualUpdateOptions): void {\r\n debug.assertValue(options, 'options');\r\n\r\n // Viewport resizing\r\n let viewport = options.viewport;\r\n this.parentViewport = viewport;\r\n\r\n let dataViews = this.dataViews = options.dataViews;\r\n if (dataViews && dataViews.length > 0 && dataViews[0].categorical) {\r\n let dataViewMetadata = dataViews[0].metadata;\r\n let showAllDataPoints = undefined;\r\n let defaultDataPointColor = undefined;\r\n if (dataViewMetadata) {\r\n let objects: DataViewObjects = dataViewMetadata.objects;\r\n\r\n if (objects) {\r\n showAllDataPoints = DataViewObjects.getValue<boolean>(objects, donutChartProps.dataPoint.showAllDataPoints);\r\n defaultDataPointColor = DataViewObjects.getFillColor(objects, donutChartProps.dataPoint.defaultColor);\r\n }\r\n }\r\n\r\n this.data = DonutChart.converter(dataViews[0], this.colors, defaultDataPointColor, this.currentViewport, this.disableGeometricCulling, this.interactivityService);\r\n this.data.showAllDataPoints = showAllDataPoints;\r\n this.data.defaultDataPointColor = defaultDataPointColor;\r\n if (!(this.options.interactivity && this.options.interactivity.isInteractiveLegend))\r\n this.renderLegend();\r\n }\r\n\r\n else {\r\n this.data = {\r\n dataPointsToDeprecate: [],\r\n dataPointsToEnumerate: [],\r\n dataPoints: [],\r\n unCulledDataPoints: [],\r\n legendData: { title: \"\", dataPoints: [] },\r\n hasHighlights: false,\r\n dataLabelsSettings: dataLabelUtils.getDefaultDonutLabelSettings(),\r\n };\r\n }\r\n\r\n this.initViewportDependantProperties();\r\n this.initDonutProperties();\r\n this.updateInternal(this.data, options.suppressAnimations);\r\n this.hasSetData = true;\r\n\r\n if (dataViews) {\r\n let warnings = getInvalidValueWarnings(\r\n dataViews,\r\n false /*supportsNaN*/,\r\n false /*supportsNegativeInfinity*/,\r\n false /*supportsPositiveInfinity*/);\r\n\r\n if (this.data.visibleGeometryCulled) {\r\n warnings.unshift(new GeometryCulledWarning());\r\n }\r\n\r\n this.hostService.setWarnings(warnings);\r\n }\r\n }\r\n\r\n public onDataChanged(options: VisualDataChangedOptions): void {\r\n debug.assertValue(options, 'options');\r\n\r\n this.update({\r\n dataViews: options.dataViews,\r\n suppressAnimations: options.suppressAnimations,\r\n viewport: this.currentViewport,\r\n });\r\n }\r\n\r\n public onResizing(viewport: IViewport): void {\r\n this.update({\r\n dataViews: this.dataViews,\r\n suppressAnimations: true,\r\n viewport: viewport,\r\n });\r\n }\r\n\r\n public enumerateObjectInstances(options: EnumerateVisualObjectInstancesOptions): VisualObjectInstanceEnumeration {\r\n let enumeration = new ObjectEnumerationBuilder();\r\n\r\n let dataLabelsSettings = this.data && this.data.dataLabelsSettings\r\n ? this.data.dataLabelsSettings\r\n : dataLabelUtils.getDefaultDonutLabelSettings();\r\n\r\n switch (options.objectName) {\r\n case 'legend':\r\n this.enumerateLegend(enumeration);\r\n break;\r\n case 'dataPoint':\r\n this.enumerateDataPoints(enumeration);\r\n break;\r\n case 'labels':\r\n let labelSettingOptions: VisualDataLabelsSettingsOptions = {\r\n enumeration: enumeration,\r\n dataLabelsSettings: dataLabelsSettings,\r\n show: true,\r\n displayUnits: true,\r\n precision: true,\r\n fontSize: true,\r\n labelStyle: true,\r\n };\r\n dataLabelUtils.enumerateDataLabels(labelSettingOptions);\r\n break;\r\n }\r\n return enumeration.complete();\r\n }\r\n\r\n private enumerateDataPoints(enumeration: ObjectEnumerationBuilder): void {\r\n let data = this.data;\r\n if (!data)\r\n return;\r\n\r\n enumeration.pushInstance({\r\n objectName: 'dataPoint',\r\n selector: null,\r\n properties: {\r\n defaultColor: { solid: { color: data.defaultDataPointColor || this.colors.getColorByIndex(0).value } }\r\n },\r\n }).pushInstance({\r\n objectName: 'dataPoint',\r\n selector: null,\r\n properties: {\r\n showAllDataPoints: !!data.showAllDataPoints\r\n },\r\n });\r\n\r\n let dataPoints = data.dataPointsToEnumerate;\r\n let dataPointsLength = dataPoints.length;\r\n\r\n for (let i = 0; i < dataPointsLength; i++) {\r\n let dataPoint = dataPoints[i];\r\n enumeration.pushInstance({\r\n objectName: 'dataPoint',\r\n displayName: dataPoint.label,\r\n selector: ColorHelper.normalizeSelector(dataPoint.identity.getSelector()),\r\n properties: {\r\n fill: { solid: { color: dataPoint.color } }\r\n },\r\n });\r\n }\r\n }\r\n\r\n private enumerateLegend(enumeration: ObjectEnumerationBuilder): ObjectEnumerationBuilder {\r\n let data = this.data;\r\n if (!data)\r\n return;\r\n\r\n let legendObjectProperties: DataViewObjects = { legend: data.legendObjectProperties };\r\n\r\n let show = DataViewObjects.getValue(legendObjectProperties, donutChartProps.legend.show, this.legend.isVisible());\r\n let showTitle = DataViewObjects.getValue(legendObjectProperties, donutChartProps.legend.showTitle, true);\r\n let titleText = DataViewObjects.getValue(legendObjectProperties, donutChartProps.legend.titleText, this.data.legendData.title);\r\n let labelColor = DataViewObject.getValue(legendObjectProperties, legendProps.labelColor, this.data.legendData.labelColor);\r\n let labelFontSize = DataViewObject.getValue(legendObjectProperties, legendProps.fontSize, this.data.legendData.fontSize);\r\n\r\n enumeration.pushInstance({\r\n selector: null,\r\n objectName: 'legend',\r\n properties: {\r\n show: show,\r\n position: LegendPosition[this.legend.getOrientation()],\r\n showTitle: showTitle,\r\n titleText: titleText,\r\n labelColor: labelColor,\r\n fontSize: labelFontSize\r\n }\r\n });\r\n }\r\n\r\n public setInteractiveChosenSlice(sliceIndex: number): void {\r\n if (this.interactivityState.sliceAngles.length === 0) return;\r\n\r\n this.interactivityState.lastChosenInteractiveSliceIndex = sliceIndex;\r\n this.interactivityState.interactiveChosenSliceFinishedSetting = false;\r\n let viewport = this.currentViewport;\r\n let moduledIndex = sliceIndex % this.data.dataPoints.length;\r\n let angle = this.interactivityState.sliceAngles[moduledIndex];\r\n\r\n this.svg.select('g')\r\n .transition()\r\n .duration(this.chartRotationAnimationDuration)\r\n .ease('elastic')\r\n .attr('transform', SVGUtil.translateAndRotate(viewport.width / 2, viewport.height / 2, 0, 0, angle))\r\n .each('end', () => { this.interactivityState.interactiveChosenSliceFinishedSetting = true; });\r\n\r\n this.interactivityState.currentRotate = angle;\r\n this.interactivityState.interactiveLegend.updateLegend(moduledIndex);\r\n // Set the opacity of chosen slice to full and the others to semi-transparent\r\n this.svg.selectAll('.slice').attr('opacity', (d, index) => {\r\n return index === moduledIndex ? 1 : 0.6;\r\n });\r\n\r\n SVGUtil.flushAllD3TransitionsIfNeeded(this.options);\r\n }\r\n\r\n private calculateRadius(): number {\r\n let viewport = this.currentViewport;\r\n if (!this.isInteractive && this.data && this.data.dataLabelsSettings.show) {\r\n // if we have category or data labels, use a sigmoid to blend the desired denominator from 2 to 3.\r\n // if we are taller than we are wide, we need to use a larger denominator to leave horizontal room for the labels.\r\n let hw = viewport.height / viewport.width;\r\n let denom = 2 + (1 / (1 + Math.exp(-5 * (hw - 1))));\r\n return Math.min(viewport.height, viewport.width) / denom;\r\n }\r\n\r\n // no labels (isInteractive does not have labels since the interactive legend shows extra info)\r\n return Math.min(viewport.height, viewport.width) / 2;\r\n }\r\n\r\n private getScaleForLegendArrow() {\r\n let ratio = 1.0;\r\n if (this.maxHeightToScaleDonutLegend && this.currentViewport.height < this.maxHeightToScaleDonutLegend) {\r\n ratio = this.currentViewport.height / this.maxHeightToScaleDonutLegend;\r\n }\r\n return ratio;\r\n }\r\n\r\n private initViewportDependantProperties(duration: number = 0) {\r\n this.currentViewport.height = this.parentViewport.height;\r\n this.currentViewport.width = this.parentViewport.width;\r\n let viewport = this.currentViewport;\r\n\r\n if (this.isInteractive) {\r\n viewport.height -= DonutChart.InteractiveLegendContainerHeight; // leave space for the legend\r\n }\r\n else {\r\n let legendMargins = this.legend.getMargins();\r\n viewport.height -= legendMargins.height;\r\n viewport.width -= legendMargins.width;\r\n }\r\n\r\n this.svg.attr({\r\n 'width': viewport.width,\r\n 'height': viewport.height\r\n });\r\n\r\n if (this.isInteractive) {\r\n this.legendContainer\r\n .style({\r\n 'width': '100%',\r\n 'height': DonutChart.InteractiveLegendContainerHeight + 'px',\r\n 'overflow': 'hidden',\r\n 'top': 0\r\n });\r\n this.svg\r\n .style('top', DonutChart.InteractiveLegendContainerHeight);\r\n } else {\r\n Legend.positionChartArea(this.svg, this.legend);\r\n }\r\n\r\n this.previousRadius = this.radius;\r\n let radius = this.radius = this.calculateRadius();\r\n let halfViewportWidth = viewport.width / 2;\r\n let halfViewportHeight = viewport.height / 2;\r\n\r\n this.arc = d3.svg.arc();\r\n\r\n this.outerArc = d3.svg.arc()\r\n .innerRadius(radius * DonutChart.OuterArcRadiusRatio)\r\n .outerRadius(radius * DonutChart.OuterArcRadiusRatio);\r\n\r\n if (this.isInteractive) {\r\n this.mainGraphicsContext.attr('transform', SVGUtil.translate(halfViewportWidth, halfViewportHeight));\r\n this.labelGraphicsContext.attr('transform', SVGUtil.translate(halfViewportWidth, halfViewportHeight));\r\n } else {\r\n this.mainGraphicsContext.transition().duration(duration).attr('transform', SVGUtil.translate(halfViewportWidth, halfViewportHeight));\r\n this.labelGraphicsContext.transition().duration(duration).attr('transform', SVGUtil.translate(halfViewportWidth, halfViewportHeight));\r\n }\r\n\r\n SVGUtil.flushAllD3TransitionsIfNeeded(this.options);\r\n }\r\n\r\n private initDonutProperties() {\r\n this.donutProperties = {\r\n viewport: this.currentViewport,\r\n radius: this.radius,\r\n arc: this.arc.innerRadius(0).outerRadius(this.radius * DonutChart.InnerArcRadiusRatio),\r\n outerArc: this.outerArc,\r\n innerArcRadiusRatio: DonutChart.InnerArcRadiusRatio,\r\n outerArcRadiusRatio: DonutChart.OuterArcRadiusRatio,\r\n dataLabelsSettings: this.data.dataLabelsSettings,\r\n };\r\n }\r\n\r\n private mergeDatasets(first: any[], second: any[]): any[] {\r\n let secondSet = d3.set();\r\n second.forEach((d) => {\r\n secondSet.add(d.identity ? d.identity.getKey() : d.data.identity.getKey());\r\n });\r\n\r\n let onlyFirst = first.filter((d) => {\r\n return !secondSet.has(d.identity ? d.identity.getKey() : d.data.identity.getKey());\r\n }).map((d) => {\r\n let derived = Prototype.inherit(d);\r\n derived.percentage === undefined ? derived.data.percentage = 0 : derived.percentage = 0;\r\n return derived;\r\n });\r\n\r\n return d3.merge([second, onlyFirst]);\r\n }\r\n\r\n private updateInternal(data: DonutData, suppressAnimations: boolean, duration: number = 0) {\r\n let viewport = this.currentViewport;\r\n duration = duration || AnimatorCommon.GetAnimationDuration(this.animator, suppressAnimations);\r\n if (this.animator) {\r\n let layout = DonutChart.getLayout(this.radius, this.sliceWidthRatio, viewport, data.dataLabelsSettings);\r\n let result: DonutChartAnimationResult;\r\n let shapes: D3.UpdateSelection;\r\n let highlightShapes: D3.UpdateSelection;\r\n let labelSettings = data.dataLabelsSettings;\r\n let labels: Label[] = [];\r\n if (labelSettings && labelSettings.show) {\r\n labels = this.createLabels();\r\n }\r\n if (!suppressAnimations) {\r\n let animationOptions: DonutChartAnimationOptions = {\r\n viewModel: data,\r\n colors: this.colors,\r\n graphicsContext: this.mainGraphicsContext,\r\n labelGraphicsContext: this.labelGraphicsContext,\r\n interactivityService: this.interactivityService,\r\n layout: layout,\r\n radius: this.radius,\r\n sliceWidthRatio: this.sliceWidthRatio,\r\n viewport: viewport,\r\n labels: labels,\r\n innerArcRadiusRatio: DonutChart.InnerArcRadiusRatio,\r\n };\r\n result = this.animator.animate(animationOptions);\r\n shapes = result.shapes;\r\n highlightShapes = result.highlightShapes;\r\n }\r\n if (suppressAnimations || result.failed) {\r\n shapes = DonutChart.drawDefaultShapes(this.svg, data, layout, this.colors, this.radius, this.interactivityService && this.interactivityService.hasSelection(), this.sliceWidthRatio, this.data.defaultDataPointColor);\r\n highlightShapes = DonutChart.drawDefaultHighlightShapes(this.svg, data, layout, this.colors, this.radius, this.sliceWidthRatio);\r\n NewDataLabelUtils.drawDefaultLabels(this.labelGraphicsContext, labels, false, true);\r\n NewDataLabelUtils.drawLabelLeaderLines(this.labelGraphicsContext, labels);\r\n }\r\n\r\n this.assignInteractions(shapes, highlightShapes, data);\r\n\r\n if (this.tooltipsEnabled) {\r\n TooltipManager.addTooltip(shapes, (tooltipEvent: TooltipEvent) => tooltipEvent.data.data.tooltipInfo);\r\n TooltipManager.addTooltip(highlightShapes, (tooltipEvent: TooltipEvent) => tooltipEvent.data.data.tooltipInfo);\r\n }\r\n }\r\n else {\r\n this.updateInternalToMove(data, duration);\r\n }\r\n\r\n SVGUtil.flushAllD3TransitionsIfNeeded(this.options);\r\n }\r\n\r\n private createLabels(): Label[] {\r\n let labelLayout = new DonutLabelLayout({\r\n maximumOffset: NewDataLabelUtils.maxLabelOffset,\r\n startingOffset: NewDataLabelUtils.startingLabelOffset\r\n }, this.donutProperties);\r\n\r\n let labelDataPoints: DonutLabelDataPoint[] = this.createLabelDataPoints();\r\n\r\n return labelLayout.layout(labelDataPoints);\r\n }\r\n\r\n private createLabelDataPoints(): DonutLabelDataPoint[] {\r\n let data = this.data;\r\n let labelDataPoints: DonutLabelDataPoint[] = [];\r\n let measureFormatterCache = dataLabelUtils.createColumnFormatterCacheManager();\r\n let alternativeScale: number = null;\r\n if (data.dataLabelsSettings.displayUnits === 0)\r\n alternativeScale = <number>d3.max(data.dataPoints, d => Math.abs(d.data.measure));\r\n\r\n for (let i = 0; i < this.data.dataPoints.length; i++) {\r\n let label = this.createLabelDataPoint(data.dataPoints[i], alternativeScale, measureFormatterCache);\r\n labelDataPoints.push(label);\r\n }\r\n return labelDataPoints;\r\n }\r\n\r\n private getTextSize(text: string, fontSize: number): ISize {\r\n let properties = {\r\n text: text,\r\n fontFamily: NewDataLabelUtils.LabelTextProperties.fontFamily,\r\n fontSize: PixelConverter.fromPoint(fontSize),\r\n fontWeight: NewDataLabelUtils.LabelTextProperties.fontWeight,\r\n };\r\n return {\r\n width: TextMeasurementService.measureSvgTextWidth(properties),\r\n height: TextMeasurementService.estimateSvgTextHeight(properties),\r\n };\r\n }\r\n\r\n private createLabelDataPoint(d: DonutArcDescriptor, alternativeScale: number, measureFormatterCache: IColumnFormatterCacheManager): DonutLabelDataPoint {\r\n let labelPoint = this.outerArc.centroid(d);\r\n let labelX = DonutLabelUtils.getXPositionForDonutLabel(labelPoint[0]);\r\n let labelY = labelPoint[1];\r\n let labelSettings = this.data.dataLabelsSettings;\r\n let measureFormatter = measureFormatterCache.getOrCreate(d.data.labelFormatString, labelSettings, alternativeScale);\r\n\r\n let position = labelX < 0 ? NewPointLabelPosition.Left : NewPointLabelPosition.Right;\r\n let pointPosition: LabelParentPoint = {\r\n point: {\r\n x: labelX,\r\n y: labelY,\r\n },\r\n validPositions: [position],\r\n radius: 0,\r\n };\r\n\r\n let outsideFill = labelSettings.labelColor ? labelSettings.labelColor : NewDataLabelUtils.defaultLabelColor;\r\n\r\n let dataLabel: string;\r\n let dataLabelSize: ISize;\r\n let categoryLabel: string;\r\n let categoryLabelSize: ISize;\r\n let textSize: ISize;\r\n let labelSettingsStyle = labelSettings.labelStyle;\r\n let fontSize = labelSettings.fontSize;\r\n\r\n if (labelSettingsStyle === labelStyle.both || labelSettingsStyle === labelStyle.data) {\r\n dataLabel = measureFormatter.format(d.data.measure);\r\n dataLabelSize = this.getTextSize(dataLabel, fontSize);\r\n }\r\n\r\n if (labelSettingsStyle === labelStyle.both || labelSettingsStyle === labelStyle.category) {\r\n categoryLabel = d.data.label;\r\n categoryLabelSize = this.getTextSize(categoryLabel, fontSize);\r\n }\r\n\r\n switch (labelSettingsStyle) {\r\n case labelStyle.both:\r\n let text = categoryLabel + \" (\" + dataLabel + \")\";\r\n textSize = this.getTextSize(text, fontSize);\r\n break;\r\n case labelStyle.category:\r\n textSize = _.clone(categoryLabelSize);\r\n break;\r\n case labelStyle.data:\r\n textSize = _.clone(dataLabelSize);\r\n break;\r\n }\r\n\r\n let leaderLinePoints = DonutLabelUtils.getLabelLeaderLineForDonutChart(d, this.donutProperties, pointPosition.point);\r\n let leaderLinesSize: ISize[] = DonutLabelUtils.getLabelLeaderLinesSizeForDonutChart(leaderLinePoints);\r\n\r\n return {\r\n isPreferred: true,\r\n text: \"\",\r\n textSize: textSize,\r\n outsideFill: outsideFill,\r\n fontSize: fontSize,\r\n identity: d.data.identity,\r\n parentShape: pointPosition,\r\n insideFill: NewDataLabelUtils.defaultInsideLabelColor,\r\n parentType: LabelDataPointParentType.Point,\r\n alternativeScale: alternativeScale,\r\n donutArcDescriptor: d,\r\n angle: (d.startAngle + d.endAngle) / 2 - (Math.PI / 2),\r\n dataLabel: dataLabel,\r\n dataLabelSize: dataLabelSize,\r\n categoryLabel: categoryLabel,\r\n categoryLabelSize: categoryLabelSize,\r\n leaderLinePoints: leaderLinePoints,\r\n linesSize: leaderLinesSize,\r\n };\r\n }\r\n\r\n private renderLegend(): void {\r\n if (!this.isInteractive) {\r\n let legendObjectProperties = this.data.legendObjectProperties;\r\n if (legendObjectProperties) {\r\n let legendData = this.data.legendData;\r\n LegendData.update(legendData, legendObjectProperties);\r\n let position = <string>legendObjectProperties[legendProps.position];\r\n if (position)\r\n this.legend.changeOrientation(LegendPosition[position]);\r\n\r\n this.legend.drawLegend(legendData, this.parentViewport);\r\n } else {\r\n this.legend.changeOrientation(LegendPosition.Top);\r\n this.legend.drawLegend({ dataPoints: [] }, this.parentViewport);\r\n }\r\n }\r\n }\r\n\r\n private addInteractiveLegendArrow(): void {\r\n const arrowHeightOffset = 11;\r\n const arrowWidthOffset = 33 / 2;\r\n if (!this.interactiveLegendArrow) {\r\n let interactiveLegendArrow = this.svg.append('g');\r\n interactiveLegendArrow.append('path')\r\n .classed(DonutChart.InteractiveLegendArrowClassName, true)\r\n .attr('d', 'M1.5,2.6C0.65,1.15,1.85,0,3,0l27,0c1.65,0,2.35,1.15,1.5,2.6L18,26.45c-0.8,1.45-2.15,1.45-2.95,0L1.95,2.6z');\r\n this.interactiveLegendArrow = interactiveLegendArrow;\r\n }\r\n let viewport = this.currentViewport;\r\n // Calculate the offsets from the legend container to the arrow.\r\n let scaleRatio = this.getScaleForLegendArrow();\r\n\r\n let distanceBetweenLegendAndArrow = (viewport.height - 2 * this.radius) / 2 + (arrowHeightOffset * scaleRatio);\r\n let middleOfChart = viewport.width / 2 - (arrowWidthOffset * scaleRatio);\r\n\r\n this.interactiveLegendArrow.attr('transform', SVGUtil.translateAndScale(middleOfChart, distanceBetweenLegendAndArrow, scaleRatio));\r\n }\r\n\r\n private calculateSliceAngles(): void {\r\n let angles: number[] = [];\r\n let data = this.data.dataPoints;\r\n\r\n if (data.length === 0) {\r\n this.interactivityState.valueToAngleFactor = 0;\r\n this.interactivityState.sliceAngles = [];\r\n return;\r\n }\r\n\r\n let sum = 0;\r\n for (let i = 0, ilen = data.length; i < ilen; i++) {\r\n sum += data[i].data.percentage; // value is an absolute number\r\n }\r\n debug.assert(sum !== 0, 'sum of slices values cannot be zero');\r\n this.interactivityState.valueToAngleFactor = 360 / sum; // Calculate the ratio between 360 and the sum to know the angles to rotate by\r\n\r\n let currentAngle = 0;\r\n for (let i = 0, ilen = data.length; i < ilen; i++) {\r\n let relativeAngle = data[i].data.percentage * this.interactivityState.valueToAngleFactor;\r\n currentAngle += relativeAngle;\r\n angles.push((relativeAngle / 2) - currentAngle);\r\n }\r\n\r\n this.interactivityState.sliceAngles = angles;\r\n }\r\n\r\n private assignInteractions(slices: D3.Selection, highlightSlices: D3.Selection, data: DonutData): void {\r\n // assign interactions according to chart interactivity type\r\n if (this.isInteractive) {\r\n this.assignInteractiveChartInteractions(slices);\r\n }\r\n else if (this.interactivityService) {\r\n let dataPoints = data.dataPoints.map((value: DonutArcDescriptor) => value.data);\r\n let behaviorOptions: DonutBehaviorOptions = {\r\n clearCatcher: this.clearCatcher,\r\n slices: slices,\r\n highlightSlices: highlightSlices,\r\n allowDrilldown: this.allowDrilldown,\r\n visual: this,\r\n hasHighlights: data.hasHighlights,\r\n svg: this.svg,\r\n };\r\n\r\n this.interactivityService.bind(dataPoints, this.behavior, behaviorOptions);\r\n }\r\n }\r\n\r\n public setDrilldown(selection?: DonutDataPoint): void {\r\n if (selection) {\r\n let d3PieLayout = d3.layout.pie()\r\n .sort(null)\r\n .value((d: DonutDataPoint) => {\r\n return d.percentage;\r\n });\r\n // Drill into the current selection.\r\n let legendDataPoints: LegendDataPoint[] = [{ label: selection.label, color: selection.color, icon: LegendIcon.Box, identity: selection.identity, selected: selection.selected }];\r\n let legendData: LegendData = { title: \"\", dataPoints: legendDataPoints };\r\n let drilledDataPoints = d3PieLayout(selection.internalDataPoints);\r\n this.updateInternal({\r\n dataPointsToDeprecate: selection.internalDataPoints,\r\n dataPoints: drilledDataPoints,\r\n unCulledDataPoints: drilledDataPoints.map((value) => value.data),\r\n legendData: legendData,\r\n hasHighlights: false,\r\n dataLabelsSettings: this.data.dataLabelsSettings,\r\n }, false /* suppressAnimations */, DonutChart.DrillDownAnimationDuration);\r\n } else {\r\n // Pop out of drill down to view the \"outer\" data.\r\n this.updateInternal(this.data, false /* suppressAnimations */, DonutChart.DrillDownAnimationDuration);\r\n }\r\n }\r\n\r\n private assignInteractiveChartInteractions(slice: D3.Selection) {\r\n let svg = this.svg;\r\n\r\n this.interactivityState.interactiveChosenSliceFinishedSetting = true;\r\n let svgRect = svg.node().getBoundingClientRect();\r\n this.interactivityState.donutCenter = { x: svgRect.left + svgRect.width / 2, y: svgRect.top + svgRect.height / 2 }; // Center of the donut chart\r\n this.interactivityState.totalDragAngleDifference = 0;\r\n this.interactivityState.currentRotate = 0;\r\n\r\n this.calculateSliceAngles();\r\n\r\n // Set the on click method for the slices so thsete pie chart will turn according to each slice's corresponding angle [the angle its on top]\r\n slice.on('click', (d: DonutArcDescriptor, clickedIndex: number) => {\r\n if (d3.event.defaultPrevented) return; // click was suppressed, for example from drag event\r\n this.setInteractiveChosenSlice(clickedIndex);\r\n });\r\n\r\n // Set the drag events\r\n let drag = d3.behavior.drag()\r\n .origin(Object)\r\n .on('dragstart', () => this.interactiveDragStart())\r\n .on('drag', () => this.interactiveDragMove())\r\n .on('dragend', () => this.interactiveDragEnd());\r\n svg\r\n .style('touch-action', 'none')\r\n .call(drag);\r\n }\r\n\r\n /**\r\n * Get the angle (in degrees) of the drag event coordinates.\r\n * The angle is calculated against the plane of the center of the donut\r\n * (meaning, when the center of the donut is at (0,0) coordinates).\r\n */\r\n private getAngleFromDragEvent(): number {\r\n let interactivityState = this.interactivityState;\r\n\r\n // get pageX and pageY (coordinates of the drag event) according to event type\r\n let pageX, pageY;\r\n let sourceEvent = <any>d3.event.sourceEvent;\r\n // check if that's a touch event or not\r\n if (sourceEvent.type.toLowerCase().indexOf('touch') !== -1) {\r\n if (sourceEvent.touches.length !== 1) return null; // in case there isn't a single touch - return null and do nothing.\r\n // take the first, single, touch surface.\r\n let touch = sourceEvent.touches[0];\r\n pageX = touch.pageX;\r\n pageY = touch.pageY;\r\n } else {\r\n pageX = sourceEvent.pageX;\r\n pageY = sourceEvent.pageY;\r\n }\r\n\r\n // Adjust the coordinates, putting the donut center as the (0,0) coordinates\r\n let adjustedCoordinates = { x: pageX - interactivityState.donutCenter.x, y: -pageY + interactivityState.donutCenter.y };\r\n // Move to polar axis - take only the angle (theta), and convert to degrees\r\n let angleToThePlane = Math.atan2(adjustedCoordinates.y, adjustedCoordinates.x) * 180 / Math.PI;\r\n return angleToThePlane;\r\n }\r\n\r\n private interactiveDragStart(): void {\r\n this.interactivityState.totalDragAngleDifference = 0;\r\n this.interactivityState.previousDragAngle = this.getAngleFromDragEvent();\r\n }\r\n\r\n private interactiveDragMove(): void {\r\n let data = this.data.dataPoints;\r\n let viewport = this.currentViewport;\r\n\r\n let interactivityState = this.interactivityState;\r\n\r\n if (interactivityState.interactiveChosenSliceFinishedSetting === true) {\r\n // get current angle from the drag event\r\n let currentDragAngle = this.getAngleFromDragEvent();\r\n if (!currentDragAngle) return; // if no angle was returned, do nothing\r\n // compare it to the previous drag event angle\r\n let angleDragDiff = interactivityState.previousDragAngle - currentDragAngle;\r\n\r\n interactivityState.totalDragAngleDifference += angleDragDiff;\r\n interactivityState.previousDragAngle = currentDragAngle;\r\n\r\n // Rotate the chart by the difference in angles\r\n interactivityState.currentRotate += angleDragDiff;\r\n\r\n // Rotate the chart to the current rotate angle\r\n this.svg.select('g')\r\n .attr('transform', SVGUtil.translateAndRotate(viewport.width / 2, viewport.height / 2, 0, 0, this.interactivityState.currentRotate));\r\n\r\n let currentHigherLimit = data[0].data.percentage * interactivityState.valueToAngleFactor;\r\n let currentAngle = interactivityState.currentRotate <= 0 ? (interactivityState.currentRotate * -1) % 360 : (360 - (interactivityState.currentRotate % 360));\r\n\r\n interactivityState.currentIndexDrag = 0;\r\n //consider making this ++interactivityState.currentIndexDrag ? then you don't need the if statement, the interactivityState.currentIndexDrag +1 and interactivityState.currentIndexDrag++\r\n // Check the current index according to the angle \r\n let dataLength = data.length;\r\n while ((interactivityState.currentIndexDrag < dataLength) && (currentAngle > currentHigherLimit)) {\r\n if (interactivityState.currentIndexDrag < (dataLength - 1)) {\r\n currentHigherLimit += (data[interactivityState.currentIndexDrag + 1].data.percentage * interactivityState.valueToAngleFactor);\r\n }\r\n interactivityState.currentIndexDrag++;\r\n }\r\n\r\n // If the index changed update the legend and opacity\r\n if (interactivityState.currentIndexDrag !== interactivityState.previousIndexDrag) {\r\n interactivityState.interactiveLegend.updateLegend(interactivityState.currentIndexDrag);\r\n // set the opacticity of the top slice to full and the others to semi-transparent\r\n this.svg.selectAll('.slice').attr('opacity', (d, index) => {\r\n return index === interactivityState.currentIndexDrag ? DonutChart.OpaqueOpacity : DonutChart.SemiTransparentOpacity;\r\n });\r\n interactivityState.previousIndexDrag = interactivityState.currentIndexDrag;\r\n }\r\n }\r\n }\r\n\r\n private interactiveDragEnd(): void {\r\n // If totalDragDifference was changed, means we have a drag event (compared to a click event)\r\n if (this.interactivityState.totalDragAngleDifference !== 0) {\r\n this.setInteractiveChosenSlice(this.interactivityState.currentIndexDrag);\r\n // drag happened - disable click event\r\n d3.event.sourceEvent.stopPropagation();\r\n }\r\n }\r\n\r\n private updateInternalToMove(data: DonutData, duration: number = 0) {\r\n // Cache for performance\r\n let svg = this.svg;\r\n let pie = this.pie;\r\n let key = this.key;\r\n let arc = this.arc;\r\n let radius = this.radius;\r\n let previousRadius = this.previousRadius;\r\n let sliceWidthRatio = this.sliceWidthRatio;\r\n\r\n let existingData = this.svg.select('.slices')\r\n .selectAll('path' + DonutChart.sliceClass.selector)\r\n .data().map((d: DonutArcDescriptor) => d.data);\r\n\r\n if (existingData.length === 0) {\r\n existingData = data.dataPointsToDeprecate;\r\n }\r\n\r\n let is = this.mergeDatasets(existingData, data.dataPointsToDeprecate);\r\n\r\n let slice = svg.select('.slices')\r\n .selectAll('path' + DonutChart.sliceClass.selector)\r\n .data(pie(data.dataPointsToDeprecate), key);\r\n\r\n slice.enter()\r\n .insert('path')\r\n .classed(DonutChart.sliceClass.class, true)\r\n .each(function (d) { this._current = d; });\r\n\r\n slice = svg.select('.slices')\r\n .selectAll('path' + DonutChart.sliceClass.selector)\r\n .data(pie(is), key);\r\n\r\n let innerRadius = radius * sliceWidthRatio;\r\n DonutChart.isSingleColor(data.dataPoints);\r\n\r\n slice\r\n .style('fill', (d: DonutArcDescriptor) => d.data.color)\r\n .style('fill-opacity', (d: DonutArcDescriptor) => ColumnUtil.getFillOpacity(d.data.selected, false, false, data.hasHighlights))\r\n .style('stroke', 'white')\r\n .style('stroke-dasharray', (d: DonutArcDescriptor) => DonutChart.drawStrokeForDonutChart(radius, DonutChart.InnerArcRadiusRatio, d, sliceWidthRatio))\r\n .style('stroke-width', (d: DonutArcDescriptor) => d.data.strokeWidth)\r\n .transition().duration(duration)\r\n .attrTween('d', function (d) {\r\n let i = d3.interpolate(this._current, d),\r\n k = d3.interpolate(previousRadius * DonutChart.InnerArcRadiusRatio\r\n , radius * DonutChart.InnerArcRadiusRatio);\r\n\r\n this._current = i(0);\r\n\r\n return function (t) {\r\n return arc.innerRadius(innerRadius).outerRadius(k(t))(i(t));\r\n };\r\n });\r\n\r\n slice = svg.select('.slices')\r\n .selectAll('path' + DonutChart.sliceClass.selector)\r\n .data(pie(data.dataPointsToDeprecate), key);\r\n\r\n slice.exit()\r\n .transition()\r\n .delay(duration)\r\n .duration(0)\r\n .remove();\r\n\r\n // For interactive chart, there shouldn't be slice labels (as you have the legend).\r\n if (!this.isInteractive) {\r\n let labelSettings = data.dataLabelsSettings;\r\n let labels: Label[] = [];\r\n if (labelSettings && labelSettings.show) {\r\n labels = this.createLabels();\r\n }\r\n NewDataLabelUtils.drawDefaultLabels(this.labelGraphicsContext, labels, false, true);\r\n NewDataLabelUtils.drawLabelLeaderLines(this.labelGraphicsContext, labels);\r\n }\r\n let highlightSlices = undefined;\r\n if (data.hasHighlights) {\r\n // Draw partial highlight slices.\r\n highlightSlices = svg\r\n .select('.slices')\r\n .selectAll('path' + DonutChart.sliceHighlightClass.selector)\r\n .data(pie(data.dataPointsToDeprecate), key);\r\n\r\n highlightSlices\r\n .enter()\r\n .insert('path')\r\n .classed(DonutChart.sliceHighlightClass.class, true)\r\n .each(function (d) { this._current = d; });\r\n\r\n DonutChart.isSingleColor(data.dataPoints);\r\n\r\n highlightSlices\r\n .style('fill', (d: DonutArcDescriptor) => d.data.color)\r\n .style('fill-opacity', 1.0)\r\n .style('stroke', 'white')\r\n .style('stroke-dasharray', (d: DonutArcDescriptor) => DonutChart.drawStrokeForDonutChart(radius, DonutChart.InnerArcRadiusRatio, d, sliceWidthRatio, d.data.highlightRatio))\r\n .style('stroke-width', (d: DonutArcDescriptor) => d.data.highlightRatio === 0 ? 0 : d.data.strokeWidth)\r\n .transition().duration(duration)\r\n .attrTween('d', function (d: DonutArcDescriptor) {\r\n let i = d3.interpolate(this._current, d),\r\n k = d3.interpolate(\r\n previousRadius * DonutChart.InnerArcRadiusRatio,\r\n DonutChart.getHighlightRadius(radius, sliceWidthRatio, d.data.highlightRatio));\r\n\r\n this._current = i(0);\r\n\r\n return function (t) {\r\n return arc.innerRadius(innerRadius).outerRadius(k(t))(i(t));\r\n };\r\n });\r\n\r\n highlightSlices\r\n .exit()\r\n .transition()\r\n .delay(duration)\r\n .duration(0)\r\n .remove();\r\n }\r\n else {\r\n svg\r\n .selectAll('path' + DonutChart.sliceHighlightClass.selector)\r\n .transition()\r\n .delay(duration)\r\n .duration(0)\r\n .remove();\r\n }\r\n\r\n this.assignInteractions(slice, highlightSlices, data);\r\n\r\n if (this.tooltipsEnabled) {\r\n TooltipManager.addTooltip(slice, (tooltipEvent: TooltipEvent) => tooltipEvent.data.data.tooltipInfo);\r\n if (data.hasHighlights) {\r\n TooltipManager.addTooltip(highlightSlices, (tooltipEvent: TooltipEvent) => tooltipEvent.data.data.tooltipInfo);\r\n }\r\n }\r\n\r\n SVGUtil.flushAllD3TransitionsIfNeeded(this.options);\r\n\r\n if (this.isInteractive) {\r\n this.addInteractiveLegendArrow();\r\n this.interactivityState.interactiveLegend.drawLegend(this.data.dataPointsToDeprecate);\r\n this.setInteractiveChosenSlice(this.interactivityState.lastChosenInteractiveSliceIndex ? this.interactivityState.lastChosenInteractiveSliceIndex : 0);\r\n }\r\n }\r\n\r\n public static drawDefaultShapes(graphicsContext: D3.Selection, donutData: DonutData, layout: DonutLayout, colors: IDataColorPalette, radius: number, hasSelection: boolean, sliceWidthRatio: number, defaultColor?: string): D3.UpdateSelection {\r\n let shapes = graphicsContext.select('.slices')\r\n .selectAll('path' + DonutChart.sliceClass.selector)\r\n .data(donutData.dataPoints, (d: DonutArcDescriptor) => d.data.identity.getKey());\r\n\r\n shapes.enter()\r\n .insert('path')\r\n .classed(DonutChart.sliceClass.class, true);\r\n\r\n DonutChart.isSingleColor(donutData.dataPoints);\r\n\r\n shapes\r\n .style('fill', (d: DonutArcDescriptor) => d.data.color)\r\n .style('fill-opacity', (d: DonutArcDescriptor) => ColumnUtil.getFillOpacity(d.data.selected, false, hasSelection, donutData.hasHighlights))\r\n .style('stroke-dasharray', (d: DonutArcDescriptor) => DonutChart.drawStrokeForDonutChart(radius, DonutChart.InnerArcRadiusRatio, d, sliceWidthRatio))\r\n .style('stroke-width', (d: DonutArcDescriptor) => d.data.strokeWidth)\r\n .attr(layout.shapeLayout);\r\n\r\n shapes.exit()\r\n .remove();\r\n\r\n return shapes;\r\n }\r\n\r\n public static drawDefaultHighlightShapes(graphicsContext: D3.Selection, donutData: DonutData, layout: DonutLayout, colors: IDataColorPalette, radius: number, sliceWidthRatio: number): D3.UpdateSelection {\r\n let shapes = graphicsContext.select('.slices')\r\n .selectAll('path' + DonutChart.sliceHighlightClass.selector)\r\n .data(donutData.dataPoints.filter((value: DonutArcDescriptor) => value.data.highlightRatio != null), (d: DonutArcDescriptor) => d.data.identity.getKey());\r\n\r\n shapes.enter()\r\n .insert('path')\r\n .classed(DonutChart.sliceHighlightClass.class, true)\r\n .each(function (d) { this._current = d; });\r\n\r\n DonutChart.isSingleColor(donutData.dataPoints);\r\n\r\n shapes\r\n .style('fill', (d: DonutArcDescriptor) => d.data.color)\r\n .style('fill-opacity', (d: DonutArcDescriptor) => ColumnUtil.getFillOpacity(d.data.selected, true, false, donutData.hasHighlights))\r\n .style('stroke', 'white')\r\n .style('stroke-dasharray', (d: DonutArcDescriptor) => DonutChart.drawStrokeForDonutChart(radius, DonutChart.InnerArcRadiusRatio, d, sliceWidthRatio, d.data.highlightRatio))\r\n .style('stroke-width', (d: DonutArcDescriptor) => d.data.highlightRatio === 0 ? 0 : d.data.strokeWidth)\r\n .attr(layout.highlightShapeLayout);\r\n\r\n shapes.exit()\r\n .remove();\r\n\r\n return shapes;\r\n }\r\n \r\n /**\r\n Set true to the last data point when all slices have the same color\r\n */\r\n public static isSingleColor(dataPoints: DonutArcDescriptor[]): void {\r\n if (dataPoints.length > 1) {\r\n let lastPoint = dataPoints.length - 1;\r\n dataPoints[lastPoint].data.isLastInDonut = dataPoints[lastPoint].data.color === dataPoints[0].data.color;\r\n }\r\n }\r\n\r\n public static drawStrokeForDonutChart(radius: number, innerArcRadiusRatio: number, d: DonutArcDescriptor, sliceWidthRatio: number, highlightRatio: number = 1): string {\r\n let sliceRadius = radius * innerArcRadiusRatio * highlightRatio;\r\n let sliceArc = (d.endAngle - d.startAngle) * sliceRadius;\r\n let sectionWithoutStroke: number;\r\n let sectionWithStroke: number;\r\n\r\n /*Donut chart*/\r\n if (sliceWidthRatio) {\r\n let innerRadius = radius * sliceWidthRatio;\r\n let outerRadius = highlightRatio * radius * (DonutChart.InnerArcRadiusRatio - sliceWidthRatio);\r\n let innerSliceArc = (d.endAngle - d.startAngle) * innerRadius;\r\n if (d.data.highlightRatio)\r\n sliceArc = (d.endAngle - d.startAngle) * (outerRadius + innerRadius);\r\n\r\n if (d.data.isLastInDonut) {\r\n //if all slices have the same color, the stroke of the last slice needs to be drawn on both radiuses\r\n return 0 + \" \" + sliceArc + \" \" + outerRadius + \" \" + innerSliceArc + \" \" + outerRadius;\r\n }\r\n sectionWithoutStroke = sliceArc + outerRadius + innerSliceArc;\r\n sectionWithStroke = outerRadius;\r\n }\r\n\r\n /*Pie Chart*/\r\n else {\r\n if (d.data.isLastInDonut) {\r\n //if all slices have the same color, the stroke of the last slice needs to be drawn on both radiuses\r\n sectionWithoutStroke = sliceArc;\r\n sectionWithStroke = sliceRadius * 2;\r\n }\r\n else {\r\n sectionWithoutStroke = sliceArc + sliceRadius;\r\n sectionWithStroke = sliceRadius;\r\n }\r\n }\r\n\r\n return 0 + \" \" + sectionWithoutStroke + \" \" + sectionWithStroke;\r\n }\r\n\r\n public onClearSelection() {\r\n if (this.interactivityService)\r\n this.interactivityService.clearSelection();\r\n }\r\n\r\n public static getLayout(radius: number, sliceWidthRatio: number, viewport: IViewport, labelSettings: VisualDataLabelsSettings): DonutLayout {\r\n let innerRadius = radius * sliceWidthRatio;\r\n let arc = d3.svg.arc().innerRadius(innerRadius);\r\n let arcWithRadius = arc.outerRadius(radius * DonutChart.InnerArcRadiusRatio);\r\n let fontSize = PixelConverter.fromPoint(labelSettings.fontSize);\r\n return {\r\n fontSize: fontSize,\r\n shapeLayout: {\r\n d: (d: DonutArcDescriptor) => {\r\n return arcWithRadius(d);\r\n }\r\n },\r\n highlightShapeLayout: {\r\n d: (d: DonutArcDescriptor) => {\r\n let highlightArc = arc.outerRadius(DonutChart.getHighlightRadius(radius, sliceWidthRatio, d.data.highlightRatio));\r\n return highlightArc(d);\r\n }\r\n },\r\n zeroShapeLayout: {\r\n d: (d: DonutArcDescriptor) => {\r\n let zeroWithZeroRadius = arc.outerRadius(innerRadius || DonutChart.EffectiveZeroValue);\r\n return zeroWithZeroRadius(d);\r\n }\r\n },\r\n };\r\n }\r\n\r\n private static getHighlightRadius(radius: number, sliceWidthRatio: number, highlightRatio: number): number {\r\n let innerRadius = radius * sliceWidthRatio;\r\n return innerRadius + highlightRatio * radius * (DonutChart.InnerArcRadiusRatio - sliceWidthRatio);\r\n }\r\n\r\n public static cullDataByViewport(dataPoints: DonutDataPoint[], maxValue: number, viewport: IViewport): DonutDataPoint[] {\r\n let estimatedRadius = Math.min(viewport.width, viewport.height) / 2;\r\n // Ratio of slice too small to show (invisible) = invisbleArcLength / circumference\r\n let cullRatio = this.invisibleArcLengthInPixels / (estimatedRadius * DonutChart.twoPi);\r\n let cullableValue = cullRatio * maxValue;\r\n let culledDataPoints: DonutDataPoint[] = [];\r\n let prevPointColor: string;\r\n for (let datapoint of dataPoints) {\r\n if (datapoint.measure >= cullableValue) {\r\n //updates the stroke width\r\n datapoint.strokeWidth = prevPointColor === datapoint.color ? 1 : 0;\r\n prevPointColor = datapoint.color;\r\n culledDataPoints.push(datapoint);\r\n }\r\n }\r\n\r\n return culledDataPoints;\r\n }\r\n }\r\n\r\n /**\r\n * This class is an interactive legend for the Donut Chart. \r\n * \r\n * Features: It is scrollable indefinitely, using drag gesture\r\n * when you interact with it, it updates the donut chart itself.\r\n */\r\n class DonutChartInteractiveLegend {\r\n\r\n private static LegendContainerClassName = 'legend-container';\r\n private static LegendContainerSelector = '.legend-container';\r\n private static LegendItemClassName = 'legend-item';\r\n private static LegendItemSelector = '.legend-item';\r\n private static LegendItemCategoryClassName = 'category';\r\n private static LegendItemPercentageClassName = 'percentage';\r\n private static LegendItemValueClassName = 'value';\r\n\r\n private static MaxLegendItemBoxSize = 160;\r\n private static ItemMargin = 30; // Margin between items\r\n private static MinimumSwipeDX = 15; // Minimup swipe gesture to create a change in the legend\r\n private static MinimumItemsInLegendForCycled = 3; // Minimum items in the legend before we cycle it\r\n\r\n private donutChart: DonutChart;\r\n private legendContainerParent: D3.Selection;\r\n private legendContainer: D3.Selection;\r\n private legendContainerWidth: number;\r\n private data: DonutDataPoint[];\r\n private colors: IDataColorPalette;\r\n private visualInitOptions: VisualInitOptions;\r\n\r\n private currentNumberOfLegendItems: number;\r\n private currentIndex: number;\r\n private leftMostIndex: number;\r\n private rightMostIndex: number;\r\n private currentXOffset: number;\r\n private legendItemsPositions: { startX: number; boxWidth: number; }[];\r\n private legendTransitionAnimationDuration: number;\r\n\r\n constructor(donutChart: DonutChart, legendContainer: D3.Selection, colors: IDataColorPalette, visualInitOptions: VisualInitOptions, settings?: DonutChartSettings) {\r\n this.legendContainerParent = legendContainer;\r\n this.colors = colors;\r\n this.donutChart = donutChart;\r\n this.visualInitOptions = visualInitOptions;\r\n this.legendItemsPositions = [];\r\n\r\n this.legendTransitionAnimationDuration = settings && settings.legendTransitionAnimationDuration ? settings.legendTransitionAnimationDuration : 0;\r\n }\r\n\r\n public drawLegend(data: DonutDataPoint[]): void {\r\n this.data = data;\r\n\r\n this.currentNumberOfLegendItems = data.length;\r\n this.currentIndex = 0;\r\n this.leftMostIndex = 0;\r\n this.rightMostIndex = data.length - 1;\r\n\r\n if (this.legendContainerParent.select(DonutChartInteractiveLegend.LegendContainerSelector).empty()) {\r\n this.legendContainer = this.legendContainerParent.append('div').classed(DonutChartInteractiveLegend.LegendContainerClassName, true);\r\n }\r\n\r\n let legendItems = this.legendContainer.selectAll(DonutChartInteractiveLegend.LegendItemSelector).data(data);\r\n let legendContainerWidth = this.legendContainerWidth = this.legendContainer.node().getBoundingClientRect().width;\r\n let initialXOffset = legendContainerWidth / 2 - (legendContainerWidth * 0.4 / 2) + DonutChartInteractiveLegend.ItemMargin;\r\n let currX = initialXOffset;\r\n this.currentXOffset = initialXOffset;\r\n\r\n // Given the legend item div, create the item values (category, percentage and measure) on top of it.\r\n let createLegendItem = (itemDiv: JQuery, datum: DonutDataPoint) => {\r\n // position the legend item\r\n itemDiv\r\n .attr('data-legend-index', datum.index) // assign index for later use\r\n .css({\r\n 'position': 'absolute',\r\n 'left': currX,\r\n //'margin-right': DonutChartInteractiveLegend.ItemMargin + 'px',\r\n });\r\n\r\n // Add the category, percentage and value\r\n let itemCategory = valueFormatter.format(datum.label);\r\n let itemValue = valueFormatter.format(datum.measure, datum.measureFormat);\r\n let itemPercentage = valueFormatter.format(datum.percentage, '0.00 %;-0.00 %;0.00 %');\r\n let itemColor = datum.color;\r\n\r\n // Create basic spans for width calculations\r\n let itemValueSpan = DonutChartInteractiveLegend.createBasicLegendItemSpan(DonutChartInteractiveLegend.LegendItemValueClassName, itemValue, 11);\r\n let itemCategorySpan = DonutChartInteractiveLegend.createBasicLegendItemSpan(DonutChartInteractiveLegend.LegendItemCategoryClassName, itemCategory, 11);\r\n let itemPercentageSpan = DonutChartInteractiveLegend.createBasicLegendItemSpan(DonutChartInteractiveLegend.LegendItemPercentageClassName, itemPercentage, 20);\r\n\r\n // Calculate Legend Box size according to widths and set the width accordingly\r\n let valueSpanWidth = DonutChartInteractiveLegend.spanWidth(itemValueSpan);\r\n let categorySpanWidth = DonutChartInteractiveLegend.spanWidth(itemCategorySpan);\r\n let precentageSpanWidth = DonutChartInteractiveLegend.spanWidth(itemPercentageSpan);\r\n let currentLegendBoxWidth = DonutChartInteractiveLegend.legendBoxSize(valueSpanWidth, categorySpanWidth, precentageSpanWidth);\r\n itemDiv.css('width', currentLegendBoxWidth);\r\n\r\n // Calculate margins so that all the spans will be placed in the middle\r\n let getLeftValue = (spanWidth: number) => {\r\n return currentLegendBoxWidth - spanWidth > 0 ? (currentLegendBoxWidth - spanWidth) / 2 : 0;\r\n };\r\n let marginLeftValue = getLeftValue(valueSpanWidth);\r\n let marginLeftCategory = getLeftValue(categorySpanWidth);\r\n let marginLeftPrecentage = getLeftValue(precentageSpanWidth);\r\n\r\n // Create the actual spans with the right styling and margins so it will be center aligned and add them\r\n DonutChartInteractiveLegend.createLegendItemSpan(itemCategorySpan, marginLeftCategory);\r\n DonutChartInteractiveLegend.createLegendItemSpan(itemValueSpan, marginLeftValue);\r\n DonutChartInteractiveLegend.createLegendItemSpan(itemPercentageSpan, marginLeftPrecentage).css('color', itemColor);\r\n\r\n itemDiv.append(itemCategorySpan);\r\n itemDiv.append(itemPercentageSpan);\r\n itemDiv.append(itemValueSpan);\r\n\r\n this.legendItemsPositions.push({\r\n startX: currX,\r\n boxWidth: currentLegendBoxWidth,\r\n });\r\n currX += currentLegendBoxWidth + DonutChartInteractiveLegend.ItemMargin;\r\n };\r\n\r\n // Create the Legend Items\r\n legendItems.enter()\r\n .insert('div')\r\n .classed(DonutChartInteractiveLegend.LegendItemClassName, true)\r\n .each(function (d: DonutDataPoint) {\r\n createLegendItem($(this), d);\r\n });\r\n\r\n legendItems.exit().remove();\r\n\r\n // Assign interactions on the legend\r\n this.assignInteractions();\r\n }\r\n\r\n public updateLegend(sliceIndex): void {\r\n if (this.currentNumberOfLegendItems <= 1) return; // If the number of labels is one no updates are needed\r\n let legendContainerWidth = this.legendContainerWidth;\r\n\r\n this.currentIndex = sliceIndex;\r\n // \"rearrange\" legend items if needed, so we would have contnious endless scrolling\r\n this.updateLabelBlocks(sliceIndex);\r\n let legendTransitionAnimationDuration = this.legendTransitionAnimationDuration;\r\n // Transform the legend so that the selected slice would be in the middle\r\n let nextXOffset = (this.legendItemsPositions[sliceIndex].startX + (this.legendItemsPositions[sliceIndex].boxWidth / 2) - (legendContainerWidth / 2)) * (-1);\r\n this.legendContainer\r\n .transition()\r\n .styleTween('-webkit-transform', (d: any, i: number, a: any) => {\r\n return d3.interpolate(\r\n SVGUtil.translateWithPixels(this.currentXOffset, 0),\r\n SVGUtil.translateWithPixels(nextXOffset, 0));\r\n })\r\n .styleTween('transform', (d: any, i: number, a: any) => {\r\n return d3.interpolate(\r\n SVGUtil.translateWithPixels(this.currentXOffset, 0),\r\n SVGUtil.translateWithPixels(nextXOffset, 0));\r\n })\r\n .duration(legendTransitionAnimationDuration)\r\n .ease('bounce')\r\n .each('end', () => {\r\n this.currentXOffset = nextXOffset;\r\n });\r\n SVGUtil.flushAllD3TransitionsIfNeeded(this.visualInitOptions);\r\n }\r\n\r\n private assignInteractions() {\r\n let currentDX = 0; // keep how much drag had happened\r\n let hasChanged = false; // flag to indicate if we changed the \"center\" value in the legend. We only change it once per swipe.\r\n\r\n let dragStart = () => {\r\n currentDX = 0; // start of drag gesture\r\n hasChanged = false;\r\n };\r\n\r\n let dragMove = () => {\r\n currentDX += d3.event.dx;\r\n // Detect if swipe occured and if the index already changed in this drag\r\n if (hasChanged || Math.abs(currentDX) < DonutChartInteractiveLegend.MinimumSwipeDX) return;\r\n\r\n let dragDirectionLeft = (currentDX < 0);\r\n this.dragLegend(dragDirectionLeft);\r\n hasChanged = true;\r\n };\r\n\r\n let drag = d3.behavior.drag()\r\n .origin(Object)\r\n .on('drag', dragMove)\r\n .on('dragstart', dragStart);\r\n\r\n this.legendContainer\r\n .style({\r\n 'touch-action': 'none',\r\n 'cursor': 'pointer'\r\n })\r\n .call(drag);\r\n }\r\n\r\n private dragLegend(dragDirectionLeft: boolean): void {\r\n\r\n if (this.currentNumberOfLegendItems > (DonutChartInteractiveLegend.MinimumItemsInLegendForCycled - 1)) {\r\n this.currentIndex = this.getCyclingCurrentIndex(dragDirectionLeft);\r\n } else {\r\n if (this.shouldChangeIndexInNonCycling(dragDirectionLeft)) {\r\n if (dragDirectionLeft) {\r\n this.currentIndex++;\r\n } else {\r\n this.currentIndex--;\r\n }\r\n }\r\n }\r\n this.donutChart.setInteractiveChosenSlice(this.currentIndex);\r\n }\r\n\r\n private shouldChangeIndexInNonCycling(dragDirectionLeft: boolean): boolean {\r\n if ((this.currentIndex === 0 && !dragDirectionLeft) || (this.currentIndex === (this.currentNumberOfLegendItems - 1) && dragDirectionLeft)) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n private getCyclingCurrentIndex(dragDirectionLeft: boolean): number {\r\n let dataLen = this.data.length;\r\n let delta = dragDirectionLeft ? 1 : -1;\r\n let newIndex = (this.currentIndex + delta) % (dataLen || 1); // modolu of negative number stays negative on javascript\r\n return (newIndex < 0) ? newIndex + dataLen : newIndex;\r\n }\r\n\r\n private updateLegendItemsBlocks(rightSidedShift: boolean, numberOfLegendItemsBlocksToShift: number) {\r\n let legendContainer$ = $(this.legendContainer[0]);\r\n\r\n if (rightSidedShift) {\r\n let smallestItem = legendContainer$.find('[data-legend-index=' + this.leftMostIndex + ']');\r\n smallestItem.remove().insertAfter(legendContainer$.find('[data-legend-index=' + this.rightMostIndex + ']'));\r\n let newX = this.legendItemsPositions[this.rightMostIndex].startX + this.legendItemsPositions[this.rightMostIndex].boxWidth + DonutChartInteractiveLegend.ItemMargin;\r\n this.legendItemsPositions[this.leftMostIndex].startX = newX;\r\n smallestItem.css('left', newX);\r\n\r\n this.rightMostIndex = this.leftMostIndex;\r\n this.leftMostIndex = (this.leftMostIndex + 1) % this.data.length;\r\n } else {\r\n let highestItem = legendContainer$.find('[data-legend-index=' + this.rightMostIndex + ']');\r\n highestItem.remove().insertBefore(legendContainer$.find('[data-legend-index=' + this.leftMostIndex + ']'));\r\n let newX = this.legendItemsPositions[this.leftMostIndex].startX - this.legendItemsPositions[this.rightMostIndex].boxWidth - DonutChartInteractiveLegend.ItemMargin;\r\n this.legendItemsPositions[this.rightMostIndex].startX = newX;\r\n highestItem.css('left', newX);\r\n\r\n this.leftMostIndex = this.rightMostIndex;\r\n this.rightMostIndex = (this.rightMostIndex - 1) === -1 ? (this.legendItemsPositions.length - 1) : (this.rightMostIndex - 1);\r\n }\r\n\r\n if ((numberOfLegendItemsBlocksToShift - 1) !== 0) {\r\n this.updateLegendItemsBlocks(rightSidedShift, (numberOfLegendItemsBlocksToShift - 1));\r\n }\r\n }\r\n\r\n /** Update the legend items, allowing for endless rotation */\r\n private updateLabelBlocks(index: number) {\r\n\r\n if (this.currentNumberOfLegendItems > DonutChartInteractiveLegend.MinimumItemsInLegendForCycled) {\r\n // The idea of the four if's is to keep two labels before and after the current one so it will fill the screen.\r\n\r\n // If the index of the slice is the highest currently availble add 2 labels \"ahead\" of it\r\n if (this.rightMostIndex === index) this.updateLegendItemsBlocks(true, 2);\r\n\r\n // If the index of the slice is the lowest currently availble add 2 labels \"before\" it\r\n if (this.leftMostIndex === index) this.updateLegendItemsBlocks(false, 2);\r\n\r\n // If the index of the slice is the second highest currently availble add a labels \"ahead\" of it\r\n if (this.rightMostIndex === (index + 1) || ((this.rightMostIndex === 0) && (index === (this.currentNumberOfLegendItems - 1)))) this.updateLegendItemsBlocks(true, 1);\r\n\r\n // If the index of the slice is the second lowest currently availble add a labels \"before\" it\r\n if (this.leftMostIndex === (index - 1) || ((this.leftMostIndex === (this.currentNumberOfLegendItems - 1) && (index === 0)))) this.updateLegendItemsBlocks(false, 1);\r\n\r\n } else {\r\n\r\n if (this.currentNumberOfLegendItems === DonutChartInteractiveLegend.MinimumItemsInLegendForCycled) {\r\n // If the index of the slice is the highest currently availble add a label \"ahead\" of it\r\n if (this.rightMostIndex === index) this.updateLegendItemsBlocks(true, 1);\r\n\r\n // If the index of the slice is the lowest currently availble add a label \"before\" it\r\n if (this.leftMostIndex === index) this.updateLegendItemsBlocks(false, 1);\r\n }\r\n }\r\n }\r\n\r\n private static createBasicLegendItemSpan(spanClass: string, text: string, fontSize: number): JQuery {\r\n return $('<span/>')\r\n .addClass(spanClass)\r\n .css({\r\n 'white-space': 'nowrap',\r\n 'font-size': fontSize + 'px',\r\n })\r\n .text(text);\r\n }\r\n\r\n /** This method alters the given span and sets it to the final legen item span style. */\r\n private static createLegendItemSpan(existingSpan: JQuery, marginLeft: number): JQuery {\r\n existingSpan\r\n .css({\r\n 'overflow': 'hidden',\r\n 'text-overflow': 'ellipsis',\r\n 'display': 'inline-block',\r\n 'width': '100%',\r\n 'margin-left': marginLeft\r\n });\r\n return existingSpan;\r\n }\r\n\r\n /** Caclulte entire legend box size according to its building spans */\r\n private static legendBoxSize(valueSpanWidth: number, categorySpanWidth: number, precentageSpanWidth: number): number {\r\n let boxSize = valueSpanWidth > categorySpanWidth ? valueSpanWidth : categorySpanWidth;\r\n boxSize = boxSize > precentageSpanWidth ? boxSize : precentageSpanWidth;\r\n boxSize = boxSize > DonutChartInteractiveLegend.MaxLegendItemBoxSize ? DonutChartInteractiveLegend.MaxLegendItemBoxSize : (boxSize + 2);\r\n return boxSize;\r\n }\r\n\r\n private static FakeElementSpan: JQuery;\r\n private static spanWidth(span: JQuery): any {\r\n if (!this.FakeElementSpan) {\r\n this.FakeElementSpan = $('<span>').hide().appendTo(document.body);\r\n }\r\n this.FakeElementSpan.empty();\r\n this.FakeElementSpan.append(span);\r\n return this.FakeElementSpan.width();\r\n }\r\n }\r\n\r\n module DonutChartConversion {\r\n\r\n interface ConvertedDataPoint {\r\n identity: SelectionId;\r\n measureFormat: string;\r\n measureValue: MeasureAndValue;\r\n highlightMeasureValue: MeasureAndValue;\r\n index: number;\r\n label: any;\r\n categoryLabel: string;\r\n color: string;\r\n seriesIndex?: number;\r\n };\r\n\r\n interface MeasureAndValue {\r\n measure: number;\r\n value: number;\r\n }\r\n\r\n export class DonutChartConverter {\r\n private dataViewCategorical: DataViewCategorical;\r\n private dataViewMetadata: DataViewMetadata;\r\n private highlightsOverflow: boolean;\r\n private total: number;\r\n private highlightTotal: number;\r\n private grouped: DataViewValueColumnGroup[];\r\n private isMultiMeasure: boolean;\r\n private isSingleMeasure: boolean;\r\n private isDynamicSeries: boolean;\r\n private seriesCount: number;\r\n private categoryIdentities: DataViewScopeIdentity[];\r\n private categoryValues: any[];\r\n private allCategoryObjects: DataViewObjects[];\r\n private categoryColumnRef: data.SQExpr[];\r\n private legendDataPoints: LegendDataPoint[];\r\n private colorHelper: ColorHelper;\r\n private categoryFormatString: string;\r\n\r\n public hasHighlights: boolean;\r\n public dataPoints: DonutDataPoint[];\r\n public legendData: LegendData;\r\n public dataLabelsSettings: VisualDataLabelsSettings;\r\n public legendObjectProperties: DataViewObject;\r\n public maxValue: number;\r\n\r\n public constructor(dataView: DataView, colors: IDataColorPalette, defaultDataPointColor?: string) {\r\n let dataViewCategorical = dataView.categorical;\r\n this.dataViewCategorical = dataViewCategorical;\r\n this.dataViewMetadata = dataView.metadata;\r\n\r\n this.seriesCount = dataViewCategorical.values ? dataViewCategorical.values.length : 0;\r\n this.colorHelper = new ColorHelper(colors, donutChartProps.dataPoint.fill, defaultDataPointColor);\r\n this.maxValue = 0;\r\n\r\n if (dataViewCategorical.categories && dataViewCategorical.categories.length > 0) {\r\n let category = dataViewCategorical.categories[0];\r\n this.categoryIdentities = category.identity;\r\n this.categoryValues = category.values;\r\n this.allCategoryObjects = category.objects;\r\n this.categoryColumnRef = <data.SQExpr[]>category.identityFields;\r\n this.categoryFormatString = valueFormatter.getFormatString(category.source, donutChartProps.general.formatString);\r\n }\r\n\r\n let grouped = this.grouped = dataViewCategorical && dataViewCategorical.values ? dataViewCategorical.values.grouped() : undefined;\r\n this.isMultiMeasure = grouped && grouped.length > 0 && grouped[0].values && grouped[0].values.length > 1;\r\n this.isSingleMeasure = grouped && grouped.length === 1 && grouped[0].values && grouped[0].values.length === 1;\r\n this.isDynamicSeries = !!(dataViewCategorical.values && dataViewCategorical.values.source);\r\n\r\n this.hasHighlights = this.seriesCount > 0 && !_.isEmpty(dataViewCategorical.values) && !!dataViewCategorical.values[0].highlights;\r\n this.highlightsOverflow = false;\r\n this.total = 0;\r\n this.highlightTotal = 0;\r\n this.dataPoints = [];\r\n this.legendDataPoints = [];\r\n this.dataLabelsSettings = null;\r\n\r\n for (let seriesIndex = 0; seriesIndex < this.seriesCount; seriesIndex++) {\r\n let seriesData = dataViewCategorical.values[seriesIndex];\r\n for (let measureIndex = 0; measureIndex < seriesData.values.length; measureIndex++) {\r\n this.total += Math.abs(seriesData.values[measureIndex]);\r\n this.highlightTotal += this.hasHighlights ? Math.abs(seriesData.highlights[measureIndex]) : 0;\r\n }\r\n }\r\n\r\n this.total = AxisHelper.normalizeNonFiniteNumber(this.total);\r\n this.highlightTotal = AxisHelper.normalizeNonFiniteNumber(this.highlightTotal);\r\n }\r\n\r\n private static normalizedMeasureAndValue(measureAndValue: MeasureAndValue): MeasureAndValue {\r\n let normalized: MeasureAndValue = $.extend(true, {}, measureAndValue);\r\n normalized.measure = AxisHelper.normalizeNonFiniteNumber(normalized.measure);\r\n normalized.value = AxisHelper.normalizeNonFiniteNumber(normalized.value);\r\n\r\n return normalized;\r\n }\r\n\r\n public convert(): void {\r\n let convertedData: ConvertedDataPoint[];\r\n if (this.total !== 0) {\r\n // We render based on categories, series, or measures in that order of preference\r\n if (this.categoryValues) {\r\n convertedData = this.convertCategoricalWithSlicing();\r\n }\r\n else if (this.isDynamicSeries) {\r\n // Series but no category.\r\n convertedData = this.convertSeries();\r\n }\r\n else {\r\n // No category or series; only measures.\r\n convertedData = this.convertMeasures();\r\n }\r\n }\r\n else {\r\n convertedData = [];\r\n }\r\n\r\n // Check if any of the highlight values are > non-highlight values\r\n let highlightsOverflow = false;\r\n for (let i = 0, dataPointCount = convertedData.length; i < dataPointCount && !highlightsOverflow; i++) {\r\n let point = convertedData[i];\r\n if (Math.abs(point.highlightMeasureValue.measure) > Math.abs(point.measureValue.measure)) {\r\n highlightsOverflow = true;\r\n }\r\n }\r\n\r\n // Create data labels settings\r\n this.dataLabelsSettings = this.convertDataLabelSettings();\r\n\r\n let dataViewMetadata = this.dataViewMetadata;\r\n if (dataViewMetadata) {\r\n let objects: DataViewObjects = dataViewMetadata.objects;\r\n if (objects) {\r\n this.legendObjectProperties = <DataViewObject>objects['legend'];\r\n }\r\n }\r\n\r\n this.dataPoints = [];\r\n let formatStringProp = donutChartProps.general.formatString;\r\n let prevPointColor: string;\r\n\r\n for (let i = 0, dataPointCount = convertedData.length; i < dataPointCount; i++) {\r\n let point = convertedData[i];\r\n\r\n // Normalize the values here and then handle tooltip value as infinity\r\n let normalizedHighlight = DonutChartConverter.normalizedMeasureAndValue(point.highlightMeasureValue);\r\n let normalizedNonHighlight = DonutChartConverter.normalizedMeasureAndValue(point.measureValue);\r\n\r\n let measure = normalizedNonHighlight.measure;\r\n let percentage = (this.total > 0) ? normalizedNonHighlight.value / this.total : 0.0;\r\n let highlightRatio = 0;\r\n if (normalizedNonHighlight.value > this.maxValue)\r\n this.maxValue = normalizedNonHighlight.value;\r\n if (normalizedHighlight.value > this.maxValue)\r\n this.maxValue = normalizedHighlight.value;\r\n\r\n if (this.hasHighlights) {\r\n // When any highlight value is greater than the corresponding non-highlight value\r\n // we just render all of the highlight values and discard the non-highlight values.\r\n if (highlightsOverflow) {\r\n measure = normalizedHighlight.measure;\r\n\r\n percentage = (this.highlightTotal > 0) ? normalizedHighlight.value / this.highlightTotal : 0.0;\r\n highlightRatio = 1;\r\n }\r\n else {\r\n highlightRatio = normalizedHighlight.value / normalizedNonHighlight.value;\r\n }\r\n\r\n if (!highlightRatio) {\r\n highlightRatio = DonutChart.EffectiveZeroValue;\r\n }\r\n }\r\n\r\n let categoryValue = point.categoryLabel;\r\n let categorical = this.dataViewCategorical;\r\n let valueIndex: number = categorical.categories ? null : i;\r\n valueIndex = point.seriesIndex !== undefined ? point.seriesIndex : valueIndex;\r\n let valuesMetadata = categorical.values[valueIndex].source;\r\n let value: number = point.measureValue.measure;\r\n let highlightedValue: number = this.hasHighlights && point.highlightMeasureValue.value !== 0 ? point.highlightMeasureValue.measure : undefined;\r\n let tooltipInfo: TooltipDataItem[] = TooltipBuilder.createTooltipInfo(formatStringProp, categorical, categoryValue, value, null, null, valueIndex, i, highlightedValue);\r\n let strokeWidth = prevPointColor === point.color && value && value > 0 ? 1 : 0;\r\n prevPointColor = value && value > 0 ? point.color : prevPointColor;\r\n this.dataPoints.push({\r\n identity: point.identity,\r\n measure: measure,\r\n measureFormat: point.measureFormat,\r\n percentage: percentage,\r\n index: point.index,\r\n label: point.label,\r\n highlightRatio: highlightRatio,\r\n selected: false,\r\n tooltipInfo: tooltipInfo,\r\n color: point.color,\r\n strokeWidth: strokeWidth,\r\n labelFormatString: valuesMetadata.format,\r\n });\r\n }\r\n\r\n this.legendData = this.convertLegendData();\r\n }\r\n\r\n private getLegendTitle(): string {\r\n if (this.total !== 0) {\r\n // If category exists, we render title using category source. If not, we render title\r\n // using measure.\r\n let dvValuesSourceName = this.dataViewCategorical.values && this.dataViewCategorical.values.source\r\n ? this.dataViewCategorical.values.source.displayName : \"\";\r\n let dvCategorySourceName = this.dataViewCategorical.categories && this.dataViewCategorical.categories.length > 0 && this.dataViewCategorical.categories[0].source\r\n ? this.dataViewCategorical.categories[0].source.displayName : \"\";\r\n if (this.categoryValues) {\r\n return dvCategorySourceName;\r\n }\r\n else {\r\n return dvValuesSourceName;\r\n }\r\n }\r\n else {\r\n return \"\";\r\n }\r\n }\r\n\r\n private convertCategoricalWithSlicing(): ConvertedDataPoint[] {\r\n let dataViewCategorical = this.dataViewCategorical;\r\n let formatStringProp = donutChartProps.general.formatString;\r\n let dataPoints: ConvertedDataPoint[] = [];\r\n\r\n for (let categoryIndex = 0, categoryCount = this.categoryValues.length; categoryIndex < categoryCount; categoryIndex++) {\r\n let categoryValue = this.categoryValues[categoryIndex];\r\n let thisCategoryObjects = this.allCategoryObjects ? this.allCategoryObjects[categoryIndex] : undefined;\r\n\r\n let legendIdentity = SelectionId.createWithId(this.categoryIdentities[categoryIndex]);\r\n let color = this.colorHelper.getColorForSeriesValue(thisCategoryObjects, this.categoryColumnRef, categoryValue);\r\n let categoryLabel = valueFormatter.format(categoryValue, this.categoryFormatString);\r\n\r\n // Series are either measures in the multi-measure case, or the single series otherwise\r\n for (let seriesIndex = 0; seriesIndex < this.seriesCount; seriesIndex++) {\r\n let seriesData = dataViewCategorical.values[seriesIndex];\r\n\r\n let label = this.isSingleMeasure\r\n ? categoryLabel\r\n : converterHelper.getFormattedLegendLabel(seriesData.source, dataViewCategorical.values, formatStringProp);\r\n\r\n let nonHighlight = seriesData.values[categoryIndex] || 0;\r\n let highlight = this.hasHighlights ? seriesData.highlights[categoryIndex] || 0 : 0;\r\n\r\n let measure: string;\r\n let seriesGroup: any;\r\n\r\n if (this.isMultiMeasure) {\r\n measure = seriesData.source.queryName;\r\n }\r\n else if (seriesData.identity)\r\n seriesGroup = seriesData;\r\n\r\n let identity: SelectionId = SelectionIdBuilder.builder()\r\n .withCategory(dataViewCategorical.categories[0], categoryIndex)\r\n .withSeries(seriesGroup, seriesGroup)\r\n .withMeasure(measure)\r\n .createSelectionId();\r\n\r\n let dataPoint: ConvertedDataPoint = {\r\n identity: identity,\r\n measureFormat: valueFormatter.getFormatString(seriesData.source, formatStringProp, true),\r\n measureValue: <MeasureAndValue> {\r\n measure: nonHighlight,\r\n value: Math.abs(nonHighlight),\r\n },\r\n highlightMeasureValue: <MeasureAndValue> {\r\n measure: highlight,\r\n value: Math.abs(highlight),\r\n },\r\n index: categoryIndex * this.seriesCount + seriesIndex,\r\n label: label,\r\n categoryLabel: categoryLabel,\r\n color: color,\r\n seriesIndex: seriesIndex\r\n };\r\n dataPoints.push(dataPoint);\r\n }\r\n\r\n this.legendDataPoints.push({\r\n label: categoryLabel,\r\n color: color,\r\n icon: LegendIcon.Box,\r\n identity: legendIdentity,\r\n selected: false\r\n });\r\n }\r\n\r\n return dataPoints;\r\n }\r\n\r\n private convertMeasures(): ConvertedDataPoint[] {\r\n let dataViewCategorical = this.dataViewCategorical;\r\n let dataPoints: ConvertedDataPoint[] = [];\r\n let formatStringProp = donutChartProps.general.formatString;\r\n\r\n for (let measureIndex = 0; measureIndex < this.seriesCount; measureIndex++) {\r\n let measureData = dataViewCategorical.values[measureIndex];\r\n let measureFormat = valueFormatter.getFormatString(measureData.source, formatStringProp, true);\r\n let measureLabel = measureData.source.displayName;\r\n let identity = SelectionId.createWithMeasure(measureData.source.queryName);\r\n\r\n debug.assert(measureData.values.length > 0, 'measure should have data points');\r\n debug.assert(!this.hasHighlights || measureData.highlights.length > 0, 'measure with highlights should have highlight data points');\r\n let nonHighlight = measureData.values[0] || 0;\r\n let highlight = this.hasHighlights ? measureData.highlights[0] || 0 : 0;\r\n\r\n let color = this.colorHelper.getColorForMeasure(measureData.source.objects, measureData.source.queryName);\r\n\r\n let dataPoint: ConvertedDataPoint = {\r\n identity: identity,\r\n measureFormat: measureFormat,\r\n measureValue: <MeasureAndValue> {\r\n measure: nonHighlight,\r\n value: Math.abs(nonHighlight),\r\n },\r\n highlightMeasureValue: <MeasureAndValue> {\r\n measure: highlight,\r\n value: Math.abs(highlight),\r\n },\r\n index: measureIndex,\r\n label: measureLabel,\r\n categoryLabel: measureLabel,\r\n color: color\r\n };\r\n dataPoints.push(dataPoint);\r\n\r\n this.legendDataPoints.push({\r\n label: dataPoint.label,\r\n color: dataPoint.color,\r\n icon: LegendIcon.Box,\r\n identity: dataPoint.identity,\r\n selected: false\r\n });\r\n }\r\n\r\n return dataPoints;\r\n }\r\n\r\n private convertSeries(): ConvertedDataPoint[] {\r\n let dataViewCategorical = this.dataViewCategorical;\r\n let dataPoints: ConvertedDataPoint[] = [];\r\n let formatStringProp = donutChartProps.general.formatString;\r\n\r\n for (let seriesIndex = 0; seriesIndex < this.seriesCount; seriesIndex++) {\r\n let seriesData = dataViewCategorical.values[seriesIndex];\r\n let seriesFormat = valueFormatter.getFormatString(seriesData.source, formatStringProp, true);\r\n let label = converterHelper.getFormattedLegendLabel(seriesData.source, dataViewCategorical.values, formatStringProp);\r\n let identity = SelectionId.createWithId(seriesData.identity);\r\n let seriesName = converterHelper.getSeriesName(seriesData.source);\r\n let objects = this.grouped && this.grouped[seriesIndex] && this.grouped[seriesIndex].objects;\r\n\r\n debug.assert(seriesData.values.length > 0, 'measure should have data points');\r\n debug.assert(!this.hasHighlights || seriesData.highlights.length > 0, 'measure with highlights should have highlight data points');\r\n let nonHighlight = seriesData.values[0] || 0;\r\n let highlight = this.hasHighlights ? seriesData.highlights[0] || 0 : 0;\r\n\r\n let color = this.colorHelper.getColorForSeriesValue(objects, dataViewCategorical.values.identityFields, seriesName);\r\n\r\n let dataPoint: ConvertedDataPoint = {\r\n identity: identity,\r\n measureFormat: seriesFormat,\r\n measureValue: <MeasureAndValue> {\r\n measure: nonHighlight,\r\n value: Math.abs(nonHighlight),\r\n },\r\n highlightMeasureValue: <MeasureAndValue> {\r\n measure: highlight,\r\n value: Math.abs(highlight),\r\n },\r\n index: seriesIndex,\r\n label: label,\r\n categoryLabel: label,\r\n color: color,\r\n seriesIndex: seriesIndex\r\n };\r\n dataPoints.push(dataPoint);\r\n\r\n this.legendDataPoints.push({\r\n label: dataPoint.label,\r\n color: dataPoint.color,\r\n icon: LegendIcon.Box,\r\n identity: dataPoint.identity,\r\n selected: false\r\n });\r\n }\r\n\r\n return dataPoints;\r\n }\r\n\r\n private convertDataLabelSettings(): VisualDataLabelsSettings {\r\n let dataViewMetadata = this.dataViewMetadata;\r\n let dataLabelsSettings = dataLabelUtils.getDefaultDonutLabelSettings();\r\n\r\n if (dataViewMetadata) {\r\n let objects: DataViewObjects = dataViewMetadata.objects;\r\n if (objects) {\r\n // Handle lables settings\r\n let labelsObj = <DataLabelObject>objects['labels'];\r\n if (labelsObj) {\r\n dataLabelUtils.updateLabelSettingsFromLabelsObject(labelsObj, dataLabelsSettings);\r\n }\r\n }\r\n }\r\n\r\n return dataLabelsSettings;\r\n }\r\n\r\n private convertLegendData(): LegendData {\r\n return {\r\n dataPoints: this.legendDataPoints,\r\n labelColor: LegendData.DefaultLegendLabelFillColor,\r\n title: this.getLegendTitle(),\r\n fontSize: SVGLegend.DefaultFontSizeInPt,\r\n };\r\n }\r\n }\r\n }\r\n}","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n import Utility = jsCommon.Utility;\r\n\r\n export interface ScriptVisualDataViewObjects extends DataViewObjects {\r\n lastSavedImage: ScriptVisualDataViewObject;\r\n script: ScriptObject;\r\n }\r\n\r\n export interface ScriptVisualDataViewObject extends DataViewObject {\r\n imageUrl: string;\r\n viewportHeight: number;\r\n viewportWidth: number;\r\n }\r\n\r\n export interface ScriptObject extends DataViewObject {\r\n provider: string;\r\n source: string;\r\n }\r\n \r\n export interface ScriptVisualOptions {\r\n canRefresh: boolean;\r\n }\r\n\r\n export class ScriptVisual implements IVisual {\r\n private element: JQuery;\r\n private imageBackgroundElement: JQuery;\r\n private hostServices: IVisualHostServices;\r\n private canRefresh: boolean;\r\n\r\n public constructor(options: ScriptVisualOptions) {\r\n this.canRefresh = options.canRefresh;\r\n }\r\n\r\n public init(options: VisualInitOptions): void {\r\n this.element = options.element;\r\n this.hostServices = options.host;\r\n\r\n if (!this.canRefresh) {\r\n this.hostServices.setWarnings([new ScriptVisualRefreshWarning()]);\r\n }\r\n }\r\n\r\n public update(options: VisualUpdateOptions): void {\r\n debug.assertValue(options, 'options');\r\n \r\n let dataViews = options.dataViews;\r\n if (!dataViews || dataViews.length === 0)\r\n return;\r\n\r\n let dataView = dataViews[0];\r\n if (!dataView || !dataView.metadata)\r\n return;\r\n\r\n let imageUrl;\r\n let saveScriptResult = true;\r\n if (!dataView.scriptResult || !dataView.scriptResult.imageBase64) {\r\n imageUrl = this.getLastSavedImage(dataView);\r\n saveScriptResult = false;\r\n }\r\n else {\r\n imageUrl = \"data:image/png;base64,\" + dataView.scriptResult.imageBase64;\r\n }\r\n\r\n let div: JQuery = this.imageBackgroundElement;\r\n if (!div) {\r\n div = $(\"<div class='imageBackground' />\");\r\n this.imageBackgroundElement = div;\r\n this.imageBackgroundElement.appendTo(this.element);\r\n }\r\n\r\n if (imageUrl && Utility.isValidImageDataUrl(imageUrl)) {\r\n let viewport = options.viewport;\r\n div.css({ height: viewport.height, width: viewport.width, 'background-image': 'url(' + imageUrl + ')' });\r\n\r\n if (saveScriptResult)\r\n this.updateLastSavedImage(dataView, imageUrl, options.viewport);\r\n }\r\n else {\r\n div.css({ 'background-image': 'none' });\r\n }\r\n }\r\n\r\n private getLastSavedImage(dataView: DataView): string {\r\n debug.assertValue(dataView, 'dataView');\r\n\r\n let defaultImageUrl = null;\r\n if (!dataView || !dataView.metadata)\r\n return defaultImageUrl;\r\n\r\n let objects = <ScriptVisualDataViewObjects>dataView.metadata.objects;\r\n if (!objects || !objects.lastSavedImage)\r\n return defaultImageUrl;\r\n\r\n let imageUrl = objects.lastSavedImage.imageUrl;\r\n if (!Utility.isValidImageDataUrl(imageUrl))\r\n return defaultImageUrl;\r\n\r\n return imageUrl;\r\n }\r\n\r\n private updateLastSavedImage(dataView: DataView, imageUrl: string, viewport: IViewport): void {\r\n debug.assertValue(imageUrl, 'dataView');\r\n debug.assertValue(imageUrl, 'imageUrl');\r\n\r\n if (!Utility.isValidImageDataUrl(imageUrl))\r\n return;\r\n\r\n if (!dataView || !dataView.metadata)\r\n return;\r\n\r\n let changes: VisualObjectInstance[] = [{\r\n objectName: 'lastSavedImage',\r\n properties: {\r\n imageUrl: imageUrl,\r\n viewportHeight: viewport.height,\r\n viewportWidth: viewport.width,\r\n },\r\n selector: null,\r\n }];\r\n\r\n this.hostServices.persistProperties(changes);\r\n }\r\n }\r\n} ","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"_references.ts\"/>\r\n\r\nmodule powerbi.visuals.plugins {\r\n // This file registers the built-in visualizations\r\n\r\n export const animatedNumber: IVisualPlugin = {\r\n name: 'animatedNumber',\r\n capabilities: capabilities.animatedNumber,\r\n create: () => new AnimatedNumber()\r\n };\r\n\r\n export let areaChart: IVisualPlugin = {\r\n name: 'areaChart',\r\n watermarkKey: 'area',\r\n capabilities: capabilities.lineChart,\r\n create: () => new CartesianChart({ chartType: CartesianChartType.Area }),\r\n customizeQuery: LineChart.customizeQuery,\r\n getSortableRoles: (visualSortableOptions?: VisualSortableOptions) => ColumnChart.getSortableRoles(visualSortableOptions),\r\n };\r\n\r\n export let barChart: IVisualPlugin = {\r\n name: 'barChart',\r\n watermarkKey: 'bar',\r\n capabilities: capabilities.barChart,\r\n create: () => new CartesianChart({ chartType: CartesianChartType.StackedBar }),\r\n customizeQuery: ColumnChart.customizeQuery,\r\n getSortableRoles: (visualSortableOptions?: VisualSortableOptions) => ColumnChart.getSortableRoles(visualSortableOptions),\r\n };\r\n\r\n export let basicShape: IVisualPlugin = {\r\n name: 'basicShape',\r\n capabilities: basicShapeCapabilities,\r\n create: () => new BasicShapeVisual()\r\n };\r\n\r\n export let card: IVisualPlugin = {\r\n name: 'card',\r\n watermarkKey: 'card',\r\n capabilities: capabilities.card,\r\n create: () => new Card()\r\n };\r\n\r\n export let multiRowCard: IVisualPlugin = {\r\n name: 'multiRowCard',\r\n watermarkKey: 'multiRowCard',\r\n capabilities: capabilities.multiRowCard,\r\n create: () => new MultiRowCard()\r\n };\r\n\r\n export let clusteredBarChart: IVisualPlugin = {\r\n name: 'clusteredBarChart',\r\n watermarkKey: 'clusteredBar',\r\n capabilities: capabilities.clusteredBarChart,\r\n create: () => new CartesianChart({ chartType: CartesianChartType.ClusteredBar }),\r\n customizeQuery: ColumnChart.customizeQuery,\r\n getSortableRoles: (visualSortableOptions?: VisualSortableOptions) => ColumnChart.getSortableRoles(visualSortableOptions),\r\n };\r\n\r\n export let clusteredColumnChart: IVisualPlugin = {\r\n name: 'clusteredColumnChart',\r\n watermarkKey: 'clusteredColumn',\r\n capabilities: capabilities.clusteredColumnChart,\r\n create: () => new CartesianChart({ chartType: CartesianChartType.ClusteredColumn }),\r\n customizeQuery: ColumnChart.customizeQuery,\r\n getSortableRoles: (visualSortableOptions?: VisualSortableOptions) => ColumnChart.getSortableRoles(visualSortableOptions),\r\n };\r\n\r\n export let columnChart: IVisualPlugin = {\r\n name: 'columnChart',\r\n watermarkKey: 'column',\r\n capabilities: capabilities.columnChart,\r\n create: () => new CartesianChart({ chartType: CartesianChartType.StackedColumn }),\r\n customizeQuery: ColumnChart.customizeQuery,\r\n getSortableRoles: (visualSortableOptions?: VisualSortableOptions) => ColumnChart.getSortableRoles(visualSortableOptions),\r\n };\r\n\r\n export let comboChart: IVisualPlugin = {\r\n name: 'comboChart',\r\n watermarkKey: 'combo',\r\n capabilities: capabilities.comboChart,\r\n customizeQuery: ComboChart.customizeQuery,\r\n create: () => new CartesianChart({ chartType: CartesianChartType.ComboChart })\r\n };\r\n\r\n export let dataDotChart: IVisualPlugin = {\r\n name: 'dataDotChart',\r\n capabilities: capabilities.dataDotChart,\r\n create: () => new CartesianChart({ chartType: CartesianChartType.DataDot })\r\n };\r\n\r\n export let dataDotClusteredColumnComboChart: IVisualPlugin = {\r\n name: 'dataDotClusteredColumnComboChart',\r\n watermarkKey: 'combo',\r\n capabilities: capabilities.dataDotClusteredColumnComboChart,\r\n customizeQuery: ComboChart.customizeQuery,\r\n create: () => new CartesianChart({ chartType: CartesianChartType.DataDotClusteredColumnCombo })\r\n };\r\n\r\n export let dataDotStackedColumnComboChart: IVisualPlugin = {\r\n name: 'dataDotStackedColumnComboChart',\r\n watermarkKey: 'combo',\r\n capabilities: capabilities.dataDotStackedColumnComboChart,\r\n customizeQuery: ComboChart.customizeQuery,\r\n create: () => new CartesianChart({ chartType: CartesianChartType.DataDotStackedColumnCombo })\r\n };\r\n\r\n export let donutChart: IVisualPlugin = {\r\n name: 'donutChart',\r\n watermarkKey: 'donut',\r\n capabilities: capabilities.donutChart,\r\n create: () => new DonutChart()\r\n };\r\n\r\n export let funnel: IVisualPlugin = {\r\n name: 'funnel',\r\n watermarkKey: 'funnel',\r\n capabilities: capabilities.funnel,\r\n create: () => new FunnelChart()\r\n };\r\n\r\n export let gauge: IVisualPlugin = {\r\n name: 'gauge',\r\n watermarkKey: 'gauge',\r\n capabilities: capabilities.gauge,\r\n create: () => new Gauge()\r\n };\r\n\r\n export let hundredPercentStackedBarChart: IVisualPlugin = {\r\n name: 'hundredPercentStackedBarChart',\r\n watermarkKey: '100stackedbar',\r\n capabilities: capabilities.hundredPercentStackedBarChart,\r\n create: () => new CartesianChart({ chartType: CartesianChartType.HundredPercentStackedBar }),\r\n customizeQuery: ColumnChart.customizeQuery,\r\n getSortableRoles: (visualSortableOptions?: VisualSortableOptions) => ColumnChart.getSortableRoles(visualSortableOptions),\r\n };\r\n\r\n export let hundredPercentStackedColumnChart: IVisualPlugin = {\r\n name: 'hundredPercentStackedColumnChart',\r\n watermarkKey: '100stackedcolumn',\r\n capabilities: capabilities.hundredPercentStackedColumnChart,\r\n create: () => new CartesianChart({ chartType: CartesianChartType.HundredPercentStackedColumn }),\r\n customizeQuery: ColumnChart.customizeQuery,\r\n getSortableRoles: (visualSortableOptions?: VisualSortableOptions) => ColumnChart.getSortableRoles(visualSortableOptions),\r\n };\r\n\r\n export let image: IVisualPlugin = {\r\n name: 'image',\r\n capabilities: capabilities.image,\r\n create: () => new ImageVisual()\r\n };\r\n\r\n export let lineChart: IVisualPlugin = {\r\n name: 'lineChart',\r\n watermarkKey: 'line',\r\n capabilities: capabilities.lineChart,\r\n create: () => new CartesianChart({ chartType: CartesianChartType.Line }),\r\n customizeQuery: LineChart.customizeQuery,\r\n getSortableRoles: (visualSortableOptions?: VisualSortableOptions) => LineChart.getSortableRoles(visualSortableOptions),\r\n };\r\n\r\n export let lineStackedColumnComboChart: IVisualPlugin = {\r\n name: 'lineStackedColumnComboChart',\r\n watermarkKey: 'combo',\r\n capabilities: capabilities.lineStackedColumnComboChart,\r\n customizeQuery: ComboChart.customizeQuery,\r\n create: () => new CartesianChart({ chartType: CartesianChartType.LineStackedColumnCombo }),\r\n getSortableRoles: (visualSortableOptions?: VisualSortableOptions) => ColumnChart.getSortableRoles(visualSortableOptions),\r\n };\r\n\r\n export let lineClusteredColumnComboChart: IVisualPlugin = {\r\n name: 'lineClusteredColumnComboChart',\r\n watermarkKey: 'combo',\r\n capabilities: capabilities.lineClusteredColumnComboChart,\r\n customizeQuery: ComboChart.customizeQuery,\r\n create: () => new CartesianChart({ chartType: CartesianChartType.LineClusteredColumnCombo }),\r\n getSortableRoles: (visualSortableOptions?: VisualSortableOptions) => ColumnChart.getSortableRoles(visualSortableOptions),\r\n };\r\n\r\n export let map: IVisualPlugin = {\r\n name: 'map',\r\n watermarkKey: 'map',\r\n capabilities: capabilities.map,\r\n create: () => new Map({ filledMap: false })\r\n };\r\n\r\n export let filledMap: IVisualPlugin = {\r\n name: 'filledMap',\r\n watermarkKey: 'filledMap',\r\n capabilities: capabilities.filledMap,\r\n create: () => new Map({ filledMap: true })\r\n };\r\n\r\n export let treemap: IVisualPlugin = {\r\n name: 'treemap',\r\n watermarkKey: 'tree',\r\n capabilities: capabilities.treemap,\r\n create: () => new Treemap()\r\n };\r\n\r\n export let pieChart: IVisualPlugin = {\r\n name: 'pieChart',\r\n watermarkKey: 'pie',\r\n capabilities: capabilities.donutChart,\r\n create: () => new DonutChart({ sliceWidthRatio: 0 })\r\n };\r\n\r\n export let scatterChart: IVisualPlugin = {\r\n name: 'scatterChart',\r\n watermarkKey: 'scatterplot',\r\n capabilities: capabilities.scatterChart,\r\n create: () => new CartesianChart({ chartType: CartesianChartType.Scatter })\r\n };\r\n\r\n export let stackedAreaChart: IVisualPlugin = {\r\n name: 'stackedAreaChart',\r\n watermarkKey: 'stackedarea',\r\n capabilities: capabilities.lineChart,\r\n create: () => new CartesianChart({ chartType: CartesianChartType.StackedArea }),\r\n customizeQuery: LineChart.customizeQuery,\r\n getSortableRoles: (visualSortableOptions?: VisualSortableOptions) => ColumnChart.getSortableRoles(visualSortableOptions),\r\n };\r\n\r\n export let table: IVisualPlugin = {\r\n name: 'table',\r\n watermarkKey: 'table',\r\n capabilities: capabilities.table,\r\n create: () => new Table(),\r\n customizeQuery: Table.customizeQuery,\r\n getSortableRoles: (visualSortableOptions?: VisualSortableOptions) => Table.getSortableRoles(),\r\n };\r\n\r\n export let matrix: IVisualPlugin = {\r\n name: 'matrix',\r\n watermarkKey: 'matrix',\r\n capabilities: capabilities.matrix,\r\n create: () => new Matrix(),\r\n customizeQuery: Matrix.customizeQuery,\r\n getSortableRoles: (visualSortableOptions?: VisualSortableOptions) => Matrix.getSortableRoles(),\r\n };\r\n\r\n export let slicer: IVisualPlugin = {\r\n name: 'slicer',\r\n watermarkKey: 'slicer',\r\n capabilities: capabilities.slicer,\r\n create: () => new Slicer()\r\n };\r\n\r\n export let textbox: IVisualPlugin = {\r\n name: 'textbox',\r\n capabilities: capabilities.textbox,\r\n create: () => new Textbox()\r\n };\r\n\r\n export let waterfallChart: IVisualPlugin = {\r\n name: 'waterfallChart',\r\n watermarkKey: 'waterfall',\r\n capabilities: capabilities.waterfallChart,\r\n create: () => new CartesianChart({ chartType: CartesianChartType.Waterfall })\r\n };\r\n\r\n export let cheerMeter: IVisualPlugin = {\r\n name: 'cheerMeter',\r\n capabilities: CheerMeter.capabilities,\r\n create: () => new CheerMeter()\r\n };\r\n\r\n export let owlGauge: IVisualPlugin = {\r\n name: 'owlGauge',\r\n watermarkKey: 'gauge',\r\n capabilities: OwlGauge.capabilities,\r\n create: () => new OwlGauge()\r\n };\r\n\r\n export let scriptVisual: IVisualPlugin = {\r\n name: 'scriptVisual',\r\n watermarkKey: 'scriptvisual',\r\n capabilities: capabilities.scriptVisual,\r\n create: () => new ScriptVisual({ canRefresh: false })\r\n };\r\n\r\n export let kpi: IVisualPlugin = {\r\n name: 'kpi',\r\n watermarkKey: 'kpi',\r\n capabilities: capabilities.kpi,\r\n create: () => new KPIStatusWithHistory()\r\n };\r\n}\r\n","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"typedefs/typedefs.ts\"/>\r\n/// <reference path=\"typedefs/typedefs.obj.ts\"/>\r\n\r\n/// <reference path=\"common/point.ts\"/>\r\n/// <reference path=\"common/rect.ts\"/>\r\n/// <reference path=\"legend.ts\"/>\r\n\r\n/// <reference path=\"types/axisScale.ts\"/>\r\n/// <reference path=\"types/axisStyle.ts\"/>\r\n/// <reference path=\"types/axisType.ts\"/>\r\n/// <reference path=\"types/basicShapeType.ts\"/>\r\n/// <reference path=\"types/imageScalingType.ts\"/>\r\n/// <reference path=\"types/labelPosition.ts\"/>\r\n/// <reference path=\"types/labelStyle.ts\"/>\r\n/// <reference path=\"types/legendPosition.ts\"/>\r\n/// <reference path=\"types/kpi_direction_type.ts\"/>\r\n/// <reference path=\"types/lineStyle.ts\"/>\r\n/// <reference path=\"types/outline.ts\"/>\r\n/// <reference path=\"types/referenceLinePosition.ts\"/>\r\n/// <reference path=\"types/slicerOrientation.ts\"/>\r\n/// <reference path=\"types/yAxisPosition.ts\"/>\r\n\r\n/// <reference path=\"animators/animatorCommon.ts\"/>\r\n/// <reference path=\"animators/columnChartAnimator.ts\"/>\r\n/// <reference path=\"animators/donutChartAnimator.ts\"/>\r\n/// <reference path=\"animators/funnelChartAnimator.ts\"/>\r\n/// <reference path=\"animators/treemapAnimator.ts\"/>\r\n\r\n/// <reference path=\"capabilities/animatedNumber.capabilities.ts\"/>\r\n/// <reference path=\"capabilities/basicShape.capabilities.ts\"/>\r\n/// <reference path=\"capabilities/columnChart.capabilities.ts\"/>\r\n/// <reference path=\"capabilities/comboChart.capabilities.ts\"/>\r\n/// <reference path=\"capabilities/donutChart.capabilities.ts\"/>\r\n/// <reference path=\"capabilities/dataDotChart.capabilities.ts\"/>\r\n/// <reference path=\"capabilities/filledMap.capabilities.ts\"/>\r\n/// <reference path=\"capabilities/funnelChart.capabilities.ts\"/>\r\n/// <reference path=\"capabilities/gauge.capabilities.ts\"/>\r\n/// <reference path=\"capabilities/imageVisual.capabilities.ts\"/>\r\n/// <reference path=\"capabilities/scriptVisual.capabilities.ts\"/>\r\n\r\n/// <reference path=\"capabilities/lineChart.capabilities.ts\"/>\r\n/// <reference path=\"capabilities/map.capabilities.ts\"/>\r\n/// <reference path=\"capabilities/multiRowCard.capabilities.ts\"/>\r\n/// <reference path=\"capabilities/textbox.capabilities.ts\"/>\r\n/// <reference path=\"capabilities/sampleVisual.capabilities.ts\"/>\r\n/// <reference path=\"capabilities/scatterChart.capabilities.ts\"/>\r\n/// <reference path=\"capabilities/slicer.capabilities.ts\"/>\r\n/// <reference path=\"capabilities/table.capabilities.ts\"/>\r\n/// <reference path=\"capabilities/matrix.capabilities.ts\"/>\r\n/// <reference path=\"capabilities/treemap.capabilities.ts\"/>\r\n/// <reference path=\"capabilities/card.capabilities.ts\"/>\r\n/// <reference path=\"capabilities/waterfallChart.capabilities.ts\"/>\r\n/// <reference path=\"capabilities/sunburst.capabilities.ts\"/>\r\n/// <reference path=\"capabilities/kpiStatusWithHistory.capabilities.ts\"/>\r\n/// <reference path=\"pluginsCapabilities.ts\"/>\r\n\r\n/// <reference path=\"behaviours/columnChartBehaviors.ts\"/>\r\n/// <reference path=\"behaviours/dataDotChartBehavior.ts\"/>\r\n/// <reference path=\"behaviours/donutChartBehaviors.ts\"/>\r\n/// <reference path=\"behaviours/funnelBehaviors.ts\"/>\r\n/// <reference path=\"behaviours/lineChartBehaviors.ts\"/>\r\n/// <reference path=\"behaviours/mapBehaviors.ts\"/>\r\n/// <reference path=\"behaviours/scatterChartBehaviors.ts\"/>\r\n/// <reference path=\"behaviours/horizontalSlicerBehaviors.ts\"/>\r\n/// <reference path=\"behaviours/verticalSlicerBehaviors.ts\"/>\r\n/// <reference path=\"behaviours/slicerBehaviors.ts\"/>\r\n/// <reference path=\"behaviours/legendBehaviors.ts\"/>\r\n/// <reference path=\"behaviours/TreemapBehaviors.ts\"/>\r\n/// <reference path=\"behaviours/waterfallChartBehavior.ts\"/>\r\n/// <reference path=\"behaviours/LabelsBehavior.ts\"/>\r\n/// <reference path=\"behaviours/cartesianChartBehaviors.ts\"/>\r\n\r\n/// <reference path=\"contracts/contracts.ts\"/>\r\n\r\n/// <reference path=\"common/axisHelper.ts\"/>\r\n/// <reference path=\"common/basicShapeUtils.ts\"/>\r\n/// <reference path=\"common/cartesianHelper.ts\"/>\r\n/// <reference path=\"common/colorHelper.ts\"/>\r\n/// <reference path=\"common/columnChartUtil.ts\"/>\r\n/// <reference path=\"common/converterHelper.ts\"/>\r\n/// <reference path=\"common/dataLabelUtils.ts\"/>\r\n/// <reference path=\"common/donutLabelUtils.ts\"/>\r\n/// <reference path=\"common/newDataLabelUtils.ts\"/>\r\n/// <reference path=\"common/dataRoleHelper.ts\"/>\r\n/// <reference path=\"common/kpiUtil.ts\"/>\r\n/// <reference path=\"common/referenceLineHelper.ts\"/>\r\n\r\n/// <reference path=\"common/invalidDataValuesChecker.ts\"/>\r\n/// <reference path=\"common/listView.ts\"/>\r\n/// <reference path=\"common/mapUtil.ts\"/>\r\n/// <reference path=\"common/selectionId.ts\"/>\r\n/// <reference path=\"common/selectionManager.ts\"/>\r\n/// <reference path=\"common/shapes.ts\"/>\r\n/// <reference path=\"common/slicerUtil.ts\"/>\r\n/// <reference path=\"common/tooltipUtils.ts\"/>\r\n/// <reference path=\"common/svgUtil.ts\"/>\r\n/// <reference path=\"common/textUtil.ts\"/>\r\n/// <reference path=\"common/urlHelper.ts\"/>\r\n/// <reference path=\"common/gradientHelper.ts\"/>\r\n/// <reference path=\"common/visualBackgroundHelper.ts\"/>\r\n/// <reference path=\"common/objectEnumerationBuilder.ts\"/>\r\n/// <reference path=\"common/visualBorderUtil.ts\"/>\r\n/// <reference path=\"common/transform.ts\"/>\r\n/// <reference path=\"common/visibilityUtil.ts\"/>\r\n\r\n/// <reference path=\"converter/slicer.converter.ts\"/>\r\n\r\n/// <reference path=\"formatting/dataLabelManager.ts\"/>\r\n/// <reference path=\"formatting/labelLayout.ts\"/>\r\n/// <reference path=\"formatting/dateTimeSequence.ts\"/>\r\n/// <reference path=\"formatting/displayUnitSystem.ts\"/>\r\n/// <reference path=\"formatting/numericSequence.ts\"/>\r\n/// <reference path=\"formatting/numericSequenceRange.ts\"/>\r\n/// <reference path=\"formatting/valueFormatter.ts\"/>\r\n/// <reference path=\"formatting/donutLabelLayout.ts\"/>\r\n/// <reference path=\"formatting/filledMapLabelLayout.ts\"/>\r\n\r\n/// <reference path=\"services/colorAllocatorFactory.ts\"/>\r\n/// <reference path=\"services/defaultVisualHostService.ts\"/>\r\n/// <reference path=\"services/interactivityService.ts\"/>\r\n/// <reference path=\"services/geocoder.ts\"/>\r\n/// <reference path=\"services/geocodingCache.ts\"/>\r\n/// <reference path=\"services/visualPluginService.ts\"/>\r\n\r\n/// <reference path=\"controls/scrollbar/scrollbar.ts\"/>\r\n/// <reference path=\"controls/tablix/internal/tablixGridPresenter.ts\"/>\r\n/// <reference path=\"controls/tablix/internal/tablixRealizationManager.ts\"/>\r\n/// <reference path=\"controls/tablix/internal/tablixGrid.ts\"/>\r\n/// <reference path=\"controls/tablix/internal/tablixLayoutManager.ts\"/>\r\n/// <reference path=\"controls/tablix/internal/tablixUtils.ts\"/>\r\n/// <reference path=\"controls/tablix/iTablixHierarchyNavigator.ts\"/>\r\n/// <reference path=\"controls/tablix/iTablixBinder.ts\"/>\r\n/// <reference path=\"controls/tablix/iTablixLayoutManager.ts\"/>\r\n/// <reference path=\"controls/tablix/tablixControl.ts\"/>\r\n/// <reference path=\"controls/tablix/tablixDimension.ts\"/>\r\n/// <reference path=\"controls/tablix/tablixTouchDelegate.ts\"/>\r\n/// <reference path=\"controls/tablix/touchRegionAbstraction.ts\"/>\r\n/// <reference path=\"controls/tablix/ITablixFormatting.ts\"/>\r\n/// <reference path=\"controls/tablix/tablixColumnWidthManager.ts\"/>\r\n\r\n/// <reference path=\"visuals/animatedText.ts\"/>\r\n/// <reference path=\"visuals/animatedNumber.ts\"/>\r\n\r\n/// <reference path=\"visuals/basicShape.ts\"/>\r\n\r\n/// <reference path=\"cartesian/cartesianChart.ts\"/>\r\n\r\n/// <reference path=\"cartesian/columnChart.ts\"/>\r\n/// <reference path=\"cartesian/columnChartClustered.ts\"/>\r\n/// <reference path=\"cartesian/columnChartStacked.ts\"/>\r\n\r\n/// <reference path=\"cartesian/comboChart.ts\"/>\r\n\r\n/// <reference path=\"dataColorPalette.ts\"/>\r\n\r\n/// <reference path=\"cartesian/dataDotChart.ts\"/>\r\n/// <reference path=\"visuals/funnelChart.ts\"/>\r\n/// <reference path=\"visuals/gauge.ts\"/>\r\n/// <reference path=\"visuals/imageVisual.ts\"/>\r\n/// <reference path=\"visuals/kpiStatusWithHistory.ts\"/>\r\n\r\n/// <reference path=\"cartesian/lineChart.ts\"/>\r\n\r\n/// <reference path=\"visuals/map.ts\"/>\r\n/// <reference path=\"visuals/multiRowCard.ts\"/>\r\n/// <reference path=\"visuals/textbox.ts\"/>\r\n/// <reference path=\"visuals/sampleVisual.ts\"/>\r\n/// <reference path=\"cartesian/scatterChart.ts\"/>\r\n/// <reference path=\"cartesian/playChart.ts\"/>\r\n\r\n/// <reference path=\"visuals/verticalSlicer.ts\"/>\r\n/// <reference path=\"visuals/horizontalSlicer.ts\"/>\r\n/// <reference path=\"visuals/slicer.ts\"/>\r\n/// <reference path=\"visuals/table.ts\"/>\r\n/// <reference path=\"visuals/matrix.ts\"/>\r\n/// <reference path=\"visuals/treemap.ts\"/>\r\n/// <reference path=\"visuals/card.ts\"/>\r\n/// <reference path=\"visuals/owlGauge.ts\"/>\r\n/// <reference path=\"warnings/visualWarnings.ts\"/>\r\n/// <reference path=\"cartesian/waterfallChart.ts\"/>\r\n\r\n/// <reference path=\"tooltip.ts\"/>\r\n\r\n/// <reference path=\"styles/visualStyles.ts\"/>\r\n\r\n/// <reference path=\"visuals/donutChart.ts\"/>\r\n/// <reference path=\"visuals/scriptVisual.ts\"/>\r\n\r\n/// <reference path=\"plugins.ts\"/>","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n export interface PlayBehaviorOptions {\r\n traceLineRenderer?: ITraceLineRenderer;\r\n }\r\n} ","/*\r\n * Power BI Visualizations\r\n *\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. \r\n * MIT License\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"\"Software\"\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in \r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\r\n\r\n/// <reference path=\"../_references.ts\"/>\r\n\r\nmodule powerbi.visuals {\r\n\r\n export module CanvasBackgroundHelper {\r\n export function getDefaultColor(): string {\r\n return '#FFFFFF';\r\n }\r\n\r\n export function getDefaultValues() {\r\n return {\r\n color: getDefaultColor(),\r\n };\r\n }\r\n }\r\n} "],"sourceRoot":"/source/"}
\No newline at end of file