@carbon/charts 0.50.4 → 0.50.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +38 -0
- package/build/demo/create-codesandbox.d.ts +6 -17
- package/build/{stories → demo}/utils.d.ts +7 -2
- package/build/src/services/essentials/dom-utils.d.ts +8 -1
- package/bundle.js +1 -1
- package/components/axes/ruler-binned.js +1 -1
- package/components/axes/ruler-binned.js.map +1 -1
- package/components/essentials/title-meter.js +1 -1
- package/components/essentials/title-meter.js.map +1 -1
- package/components/essentials/title.js +1 -1
- package/components/essentials/title.js.map +1 -1
- package/components/graphs/gauge.js +1 -1
- package/components/graphs/gauge.js.map +1 -1
- package/components/graphs/pie.js +1 -1
- package/components/graphs/pie.js.map +1 -1
- package/components/graphs/radar.js +3 -1
- package/components/graphs/radar.js.map +1 -1
- package/demo/create-codesandbox.d.ts +6 -17
- package/demo/create-codesandbox.js +11 -22
- package/demo/create-codesandbox.js.map +1 -1
- package/demo/data/bundle.js +1 -1
- package/demo/styles.css +1477 -88
- package/demo/styles.css.map +1 -1
- package/demo/styles.min.css +1 -1
- package/demo/styles.min.css.map +1 -1
- package/demo/tsconfig.tsbuildinfo +14 -2
- package/demo/utils.d.ts +24 -0
- package/demo/utils.js +169 -0
- package/demo/utils.js.map +1 -0
- package/package.json +1 -1
- package/services/essentials/dom-utils.d.ts +8 -1
- package/services/essentials/dom-utils.js +6 -0
- package/services/essentials/dom-utils.js.map +1 -1
- package/styles/components/_layout.scss +2 -0
- package/styles-g10.css +2 -0
- package/styles-g10.css.map +1 -1
- package/styles-g10.min.css +1 -1
- package/styles-g10.min.css.map +1 -1
- package/styles-g100.css +2 -0
- package/styles-g100.css.map +1 -1
- package/styles-g100.min.css +1 -1
- package/styles-g100.min.css.map +1 -1
- package/styles-g90.css +2 -0
- package/styles-g90.css.map +1 -1
- package/styles-g90.min.css +1 -1
- package/styles-g90.min.css.map +1 -1
- package/styles.css +2 -0
- package/styles.css.map +1 -1
- package/styles.min.css +1 -1
- package/styles.min.css.map +1 -1
- package/tsconfig.tsbuildinfo +8 -8
|
@@ -74,7 +74,7 @@ var BinnedRuler = /** @class */ (function (_super) {
|
|
|
74
74
|
var tooltipDataGroups = activeDataGroupNames
|
|
75
75
|
.reverse()
|
|
76
76
|
.map(function (dataGroupName) { return ({
|
|
77
|
-
label:
|
|
77
|
+
label: dataGroupName,
|
|
78
78
|
value: get(sampleMatchData_1, "data." + dataGroupName),
|
|
79
79
|
class: _this.model.getColorClassName({
|
|
80
80
|
classNameTypes: [ColorClassNameTypes.TOOLTIP],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ruler-binned.js","sourceRoot":"","sources":["ruler-binned.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ruler-binned.js","sourceRoot":"","sources":["ruler-binned.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { GenericSvgSelection, Ruler } from './ruler';\nimport { DOMUtils } from '../../services';\nimport {\n\tCartesianOrientations,\n\tColorClassNameTypes,\n\tEvents,\n\tRenderTypes,\n} from '../../interfaces';\nimport { Tools } from '../../tools';\n\n// D3 Imports\nimport { select } from 'd3-selection';\n\nimport { get } from 'lodash-es';\n\nexport class BinnedRuler extends Ruler {\n\ttype = 'ruler-binned';\n\trenderType = RenderTypes.SVG;\n\n\tshowRuler(event, [x, y]: [number, number]) {\n\t\tconst svg = this.parent;\n\n\t\tconst options = this.model.getOptions();\n\n\t\tconst orientation: CartesianOrientations = this.services.cartesianScales.getOrientation();\n\n\t\tconst rangeScale = this.services.cartesianScales.getRangeScale();\n\t\tconst [yScaleEnd, yScaleStart] = rangeScale.range();\n\n\t\tconst domainScale = this.services.cartesianScales.getDomainScale();\n\t\tconst correspondingDomainValue = domainScale.invert(\n\t\t\torientation === CartesianOrientations.VERTICAL ? x : y\n\t\t);\n\n\t\tconst ruler = DOMUtils.appendOrSelect(svg, 'g.ruler').attr(\n\t\t\t'aria-label',\n\t\t\t'ruler'\n\t\t);\n\t\tconst rulerLine = DOMUtils.appendOrSelect(ruler, 'line.ruler-line');\n\n\t\tconst dataPointElements: GenericSvgSelection = svg.selectAll(\n\t\t\t'[role=graphics-symbol]'\n\t\t);\n\n\t\tconst elementsToHighlight = dataPointElements.filter((d) => {\n\t\t\tif (\n\t\t\t\tparseFloat(get(d, 'data.x0')) <= correspondingDomainValue &&\n\t\t\t\tparseFloat(get(d, 'data.x1')) >= correspondingDomainValue\n\t\t\t) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t});\n\n\t\t// some data point match\n\t\tif (elementsToHighlight.size() > 0) {\n\t\t\t/** if we pass from a trigger area to another one\n\t\t\t * mouseout on previous elements won't get dispatched\n\t\t\t * so we need to do it manually\n\t\t\t */\n\t\t\tif (\n\t\t\t\tthis.elementsToHighlight &&\n\t\t\t\tthis.elementsToHighlight.size() > 0 &&\n\t\t\t\t!Tools.isEqual(this.elementsToHighlight, elementsToHighlight)\n\t\t\t) {\n\t\t\t\tthis.hideRuler();\n\t\t\t}\n\n\t\t\telementsToHighlight.dispatch('mouseover');\n\n\t\t\t// set current hovered elements\n\t\t\tthis.elementsToHighlight = elementsToHighlight;\n\n\t\t\tconst sampleMatchData = select(\n\t\t\t\telementsToHighlight.nodes()[0]\n\t\t\t).datum();\n\n\t\t\tconst x0 = parseFloat(get(sampleMatchData, 'data.x0'));\n\t\t\tconst x1 = parseFloat(get(sampleMatchData, 'data.x1'));\n\n\t\t\tconst activeDataGroupNames = this.model.getActiveDataGroupNames();\n\n\t\t\tconst tooltipDataGroups = activeDataGroupNames\n\t\t\t\t.reverse()\n\t\t\t\t.map((dataGroupName) => ({\n\t\t\t\t\tlabel: dataGroupName,\n\t\t\t\t\tvalue: get(sampleMatchData, `data.${dataGroupName}`),\n\t\t\t\t\tclass: this.model.getColorClassName({\n\t\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.TOOLTIP],\n\t\t\t\t\t\tdataGroupName,\n\t\t\t\t\t}),\n\t\t\t\t}))\n\t\t\t\t.filter((d) => d.value !== 0);\n\t\t\tconst thereIsMatchingData = tooltipDataGroups.length > 0;\n\n\t\t\tif (thereIsMatchingData) {\n\t\t\t\tthis.services.events.dispatchEvent(Events.Tooltip.SHOW, {\n\t\t\t\t\tmousePosition: [x, y],\n\t\t\t\t\thoveredElement: rulerLine,\n\t\t\t\t\titems: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: get(options, 'bins.rangeLabel') || 'Range',\n\t\t\t\t\t\t\tvalue: `${x0} – ${x1}`,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t...tooltipDataGroups,\n\t\t\t\t\t\t...(Tools.getProperty(\n\t\t\t\t\t\t\toptions,\n\t\t\t\t\t\t\t'tooltip',\n\t\t\t\t\t\t\t'showTotal'\n\t\t\t\t\t\t) === true\n\t\t\t\t\t\t\t? [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tlabel:\n\t\t\t\t\t\t\t\t\t\t\tget(\n\t\t\t\t\t\t\t\t\t\t\t\toptions,\n\t\t\t\t\t\t\t\t\t\t\t\t'tooltip.totalLabel'\n\t\t\t\t\t\t\t\t\t\t\t) || 'Total',\n\t\t\t\t\t\t\t\t\t\tvalue: activeDataGroupNames.reduce(\n\t\t\t\t\t\t\t\t\t\t\t(accum, currentValue) =>\n\t\t\t\t\t\t\t\t\t\t\t\taccum +\n\t\t\t\t\t\t\t\t\t\t\t\tparseFloat(\n\t\t\t\t\t\t\t\t\t\t\t\t\tget(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsampleMatchData,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t`data.${currentValue}`\n\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t ]\n\t\t\t\t\t\t\t: []),\n\t\t\t\t\t],\n\t\t\t\t});\n\n\t\t\t\truler.attr('opacity', 1);\n\n\t\t\t\tconst rulerPosition = domainScale((x0 + x1) / 2);\n\n\t\t\t\t// line snaps to matching point\n\t\t\t\tif (orientation === 'horizontal') {\n\t\t\t\t\trulerLine\n\t\t\t\t\t\t.attr('x1', yScaleStart)\n\t\t\t\t\t\t.attr('x2', yScaleEnd)\n\t\t\t\t\t\t.attr('y1', rulerPosition)\n\t\t\t\t\t\t.attr('y2', rulerPosition);\n\t\t\t\t} else {\n\t\t\t\t\trulerLine\n\t\t\t\t\t\t.attr('y1', yScaleStart)\n\t\t\t\t\t\t.attr('y2', yScaleEnd)\n\t\t\t\t\t\t.attr('x1', rulerPosition)\n\t\t\t\t\t\t.attr('x2', rulerPosition);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.hideRuler();\n\t\t\t}\n\t\t} else {\n\t\t\tthis.hideRuler();\n\t\t}\n\t}\n}\n"]}
|
|
@@ -124,7 +124,7 @@ var MeterTitle = /** @class */ (function (_super) {
|
|
|
124
124
|
var totalString = totalFormatter !== null
|
|
125
125
|
? totalFormatter(totalValue)
|
|
126
126
|
: total + " " + unit + " total";
|
|
127
|
-
var containerBounds = DOMUtils.getSVGElementSize(this.services.domUtils.getMainContainer(), {
|
|
127
|
+
var containerBounds = DOMUtils.getSVGElementSize(this.services.domUtils.getMainContainer(), { useAttrs: true });
|
|
128
128
|
// need to check if the width is 0, and try to use the parent attribute
|
|
129
129
|
// this can happen if the chart is toggled on/off and the height is 0 for the parent, it wont validateDimensions
|
|
130
130
|
var containerWidth = containerBounds.width
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"title-meter.js","sourceRoot":"","sources":["title-meter.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,mBAAmB;AACnB,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,KAAK,aAAa,MAAM,qBAAqB,CAAC;AAErD;IAAgC,8BAAK;IAArC;QAAA,qEA6XC;QA5XA,UAAI,GAAG,aAAa,CAAC;QACrB,gBAAU,GAAG,WAAW,CAAC,GAAG,CAAC;;IA2X9B,CAAC;IAzXA,2BAAM,GAAN;QACC,IAAM,OAAO,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC;QAClE,IAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAClC,IAAM,GAAG,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;QACjC,IAAA,sCAAW,CAAkB;QAErC,IAAM,YAAY,GAAG,KAAK,CAAC,WAAW,CACrC,OAAO,EACP,OAAO,EACP,cAAc,CACd,CAAC;QAEF,IAAI,YAAY,EAAE;YACjB,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,IAAI,CAAC,qBAAqB,EAAE,CAAC;SAC7B;aAAM;YACN,uDAAuD;YACvD,IAAM,KAAK,GAAG,GAAG;iBACf,SAAS,CAAC,kBAAkB,CAAC;iBAC7B,IAAI,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAE/B,KAAK;iBACH,KAAK,EAAE;iBACP,MAAM,CAAC,MAAM,CAAC;iBACd,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC;iBAC5B,KAAK,CAAC,KAAK,CAAC;iBACZ,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;iBACZ,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC;iBAChB,IAAI,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,EAAD,CAAC,CAAC,CAAC;YAEjB,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC;YAEtB,gDAAgD;YAChD,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAExB,uEAAuE;YACvE,IAAI,CAAC,aAAa,EAAE,CAAC;SACrB;QACD,8EAA8E;QAC9E,IAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACzC,IAAM,YAAY,GAAG,QAAQ,CAAC,cAAc,CAAC,GAAG,EAAE,kBAAkB,CAAC,CAAC;QAEtE,IACC,QAAQ,GAAG,CAAC;YACZ,YAAY,CAAC,IAAI,EAAE,CAAC,qBAAqB,EAAE,GAAG,QAAQ,EACrD;YACD,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;SAC3C;IACF,CAAC;IAED,0CAAqB,GAArB;QACC,IAAM,IAAI,GAAG,IAAI,CAAC;QAClB,IAAM,GAAG,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;QACzC,IAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAClC,IAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAChD,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAC3B,CAAC;QACF,IAAM,KAAK,GAAG,KAAK,CAAC,WAAW,CAC9B,OAAO,EACP,OAAO,EACP,cAAc,EACd,OAAO,CACP,CAAC;QACF,IAAM,IAAI,GAAG,KAAK,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,CAAC;YACvE,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,CAAC;YAC7D,CAAC,CAAC,EAAE,CAAC;QAEN,IAAI,IAAI,CAAC;QACT,IAAI,aAAa,KAAK,KAAK,EAAE;YAC5B,IAAI,GAAG,IAAI,CAAC;SACZ;aAAM;YACN,IAAM,UAAU,GACf,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC;YACxD,oBAAoB;YACpB,IAAM,kBAAkB,GAAG,KAAK,CAAC,WAAW,CAC3C,OAAO,EACP,OAAO,EACP,cAAc,EACd,oBAAoB,CACpB,CAAC;YACF,IAAI;gBACH,kBAAkB,KAAK,IAAI;oBAC1B,CAAC,CAAC,kBAAkB,CAAC;wBACnB,aAAa,EAAE,aAAa;wBAC5B,KAAK,EAAE,KAAK;qBACX,CAAC;oBACJ,CAAC,CAAI,aAAa,SAAI,IAAI,eAAU,UAAU,SAAI,IAAI,gBAAa,CAAC;SACtE;QAED,mEAAmE;QACnE,IAAM,KAAK,GAAG,GAAG;aACf,SAAS,CAAC,+BAA+B,CAAC;aAC1C,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAEf,KAAK;aACH,KAAK,EAAE;aACP,MAAM,CAAC,MAAM,CAAC;aACd,OAAO,CAAC,0BAA0B,EAAE,IAAI,CAAC;aACzC,KAAK,CAAC,KAAK,CAAC;aACZ,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;aACZ,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC;aAChB,IAAI,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,EAAD,CAAC,CAAC,CAAC;QAEjB,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC;QAEtB,IAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACzC,IAAM,YAAY,GAAG,QAAQ,CAAC,cAAc,CAC3C,GAAG,EACH,+BAA+B,CAC/B,CAAC;QAEF,IACC,QAAQ,GAAG,CAAC;YACZ,YAAY,CAAC,IAAI,EAAE,CAAC,qBAAqB,EAAE,GAAG,QAAQ,EACrD;YACD,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;SAC3C;IACF,CAAC;IAED,gCAAgC;IAChC,iCAAY,GAAZ;QACC,IAAM,IAAI,GAAG,IAAI,CAAC;QAClB,IAAM,GAAG,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;QACzC,IAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAElC,IAAM,KAAK,GAAG,KAAK,CAAC,WAAW,CAC9B,OAAO,EACP,OAAO,EACP,cAAc,EACd,OAAO,CACP,CAAC;QAEF,IAAM,UAAU,GAAG,KAAK;YACvB,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,OAAO,CAAC;YAC9D,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC;QAE5D,IAAM,IAAI,GAAG,KAAK,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,CAAC;YACvE,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,CAAC;YAC7D,CAAC,CAAC,EAAE,CAAC;QAEN,0BAA0B;QAC1B,IAAM,cAAc,GAAG,KAAK,CAAC,WAAW,CACvC,OAAO,EACP,OAAO,EACP,cAAc,EACd,gBAAgB,CAChB,CAAC;QAEF,IAAM,WAAW,GAChB,cAAc,KAAK,IAAI;YACtB,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC;YAC5B,CAAC,CAAI,KAAK,SAAI,IAAI,WAAQ,CAAC;QAE7B,IAAM,eAAe,GAAG,QAAQ,CAAC,iBAAiB,CACjD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,gBAAgB,EAAE,EACzC,EAAE,OAAO,EAAE,IAAI,EAAE,CACjB,CAAC;QAEF,uEAAuE;QACvE,gHAAgH;QAChH,IAAM,cAAc,GAAG,eAAe,CAAC,KAAK;YAC3C,CAAC,CAAC,eAAe,CAAC,KAAK;YACvB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAE5C,IAAM,KAAK,GAAG,GAAG;aACf,SAAS,CAAC,+BAA+B,CAAC;aAC1C,IAAI,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;QAEtB,KAAK;aACH,KAAK,EAAE;aACP,MAAM,CAAC,MAAM,CAAC;aACd,OAAO,CAAC,0BAA0B,EAAE,IAAI,CAAC;aACzC,KAAK,CAAC,KAAK,CAAC;aACZ,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC;aACzB,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC;aAChB,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC;aAC1B,IAAI,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,EAAD,CAAC,CAAC,CAAC;QAEjB,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,kCAAa,GAAb;QACC,IAAM,IAAI,GAAG,IAAI,CAAC;QAClB,IAAM,GAAG,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAEzC,IAAM,eAAe,GAAG,QAAQ,CAAC,kBAAkB,CAClD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,gBAAgB,EAAE,CACzC,CAAC;QAEF,uEAAuE;QACvE,gHAAgH;QAChH,IAAM,cAAc,GAAG,eAAe,CAAC,KAAK;YAC3C,CAAC,CAAC,eAAe,CAAC,KAAK;YACvB,CAAC,CAAC,CAAC,CAAC;QAEL,gCAAgC;QAChC,IAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;QACtC,IAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,GAAG,CAAC,CAAC;QAE5D,yCAAyC;QACzC,IAAM,WAAW,GAAG,QAAQ,CAAC,cAAc,CAAC,GAAG,EAAE,oBAAoB,CAAC;aACpE,IAAI,CACJ,OAAO,EACP,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,8BAA4B,MAAQ,CAAC,CAAC,CAAC,EAAE,CAC3D;aACA,IAAI,CAAC,WAAW,EAAE,gBAAa,cAAc,GAAG,MAAM,UAAM,CAAC,CAAC;QAEhE,IAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACpC,IAAM,IAAI,GAAG,WAAW,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE/D,IAAI,CAAC,KAAK,EAAE;aACV,MAAM,CAAC,QAAQ,CAAC;aAChB,KAAK,CAAC,IAAI,CAAC;aACX,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC;aACvB,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC;aACjB,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;aACb,IAAI,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;QAE9B,IAAM,SAAS,GAAG,WAAW,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAErE,SAAS;aACP,KAAK,EAAE;aACP,MAAM,CAAC,MAAM,CAAC;aACd,KAAK,CAAC,SAAS,CAAC;aAChB,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;aAC/C,IAAI,CAAC,WAAW,EAAE,gBAAc,MAAM,SAAM,CAAC;aAC7C,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAE7B,SAAS,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC;QAC1B,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC;IACtB,CAAC;IAED;;OAEG;IACH,qCAAgB,GAAhB;QACC,IAAM,SAAS,GAAG,KAAK,CAAC,WAAW,CAClC,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,EAC3B,CAAC,EACD,OAAO,CACP,CAAC;QAEF,+DAA+D;QAC/D,IAAM,GAAG,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;QACzC,IAAM,KAAK,GAAG,QAAQ,CAAC,cAAc,CAAC,GAAG,EAAE,kBAAkB,CAAC,CAAC;QAE/D,yBAAyB;QACzB,IAAM,IAAI,GACT,KAAK,CAAC,WAAW,CAChB,IAAI,CAAC,UAAU,EAAE,EACjB,OAAO,EACP,WAAW,EACX,qBAAqB,EACrB,SAAS,CACT,KAAK,IAAI;YACT,CAAC,CAAC,CAAC,SAAS,CAAC;YACb,CAAC,CAAC,EAAE,CAAC;QAEP,kDAAkD;QAClD,IAAM,UAAU,GAAG,GAAG,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAElE,+DAA+D;QAC/D,IAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC;QAE1D,UAAU;aACR,KAAK,EAAE;aACP,MAAM,CAAC,MAAM,CAAC;aACd,OAAO,CAAC,eAAe,EAAE,IAAI,CAAC;aAC9B,KAAK,CAAC,UAAU,CAAC;aACjB,IAAI,CAAC,UAAC,CAAC,IAAK,OAAG,CAAC,MAAG,EAAP,CAAO,CAAC;aACpB,IAAI,CACJ,GAAG,EACH,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,qBAAqB,EAAE,GAAG,MAAM,CAChE,CAAC,sCAAsC;aACvC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAE7B,UAAU,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC;IAC5B,CAAC;IAED;;;;;OAKG;IACH,kCAAa,GAAb,UAAc,KAAK,EAAE,QAAQ;QAC5B,iBAAM,aAAa,YAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAErC,oEAAoE;QACpE,IAAM,KAAK,GAAG,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC5D,IAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC;QAC1D,IAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,qBAAqB,EAAE,CAAC,CAAC;QAEpE,IAAM,UAAU,GAAG,QAAQ,CAAC,cAAc,CACzC,IAAI,CAAC,MAAM,EACX,oBAAoB,CACpB,CAAC;QACF,UAAU,CAAC,IAAI,CACd,GAAG,EACH,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;YACf,KAAK,CAAC,IAAI,EAAE,CAAC,qBAAqB,EAAE;YACpC,WAAW;YACX,MAAM,CACP,CAAC;IACH,CAAC;IAED,8CAA8C;IACpC,qCAAgB,GAA1B;QACC,+EAA+E;QAC/E,IAAM,eAAe,GAAG,QAAQ,CAAC,kBAAkB,CAClD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,gBAAgB,EAAE,CACzC,CAAC;QAEF,IAAM,YAAY,GAAG,KAAK,CAAC,WAAW,CACrC,IAAI,CAAC,UAAU,EAAE,EACjB,OAAO,EACP,cAAc,CACd,CAAC;QAEF,uEAAuE;QACvE,IAAM,cAAc,GAAG,eAAe,CAAC,KAAK;YAC3C,CAAC,CAAC,eAAe,CAAC,KAAK;YACvB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAE5C,IAAI,YAAY,KAAK,IAAI,EAAE;YAC1B,IAAM,KAAK,GAAG,QAAQ,CAAC,cAAc,CACpC,IAAI,CAAC,MAAM,EACX,+BAA+B,CAC/B,CAAC,IAAI,EAAE,CAAC;YAET,IAAM,UAAU,GAAG,QAAQ,CAAC,iBAAiB,CAAC,KAAK,EAAE;gBACpD,OAAO,EAAE,IAAI;aACb,CAAC,CAAC,KAAK,CAAC;YAET,OAAO,CACN,cAAc;gBACd,UAAU;gBACV,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,CACrC,CAAC;SACF;aAAM;YACN,IAAM,UAAU,GAAG,QAAQ,CAAC,cAAc,CACzC,IAAI,CAAC,MAAM,EACX,oBAAoB,CACpB,CAAC;YACF,sGAAsG;YACtG,IAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC;YAC1D,IAAM,eAAe,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC,qBAAqB,EAAE,CAAC;YAElE,IAAM,WAAW,GAAG,QAAQ,CAAC,cAAc,CAC1C,IAAI,CAAC,MAAM,EACX,oBAAoB,CACpB,CAAC,IAAI,EAAE,CAAC;YACT,IAAM,WAAW,GAChB,QAAQ,CAAC,iBAAiB,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;iBACxD,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC;YAElD,OAAO,cAAc,GAAG,eAAe,GAAG,MAAM,GAAG,WAAW,CAAC;SAC/D;IACF,CAAC;IAED;;;OAGG;IACO,4CAAuB,GAAjC,UAAkC,MAAM;QACvC,QAAQ,MAAM,EAAE;YACf,KAAK,QAAQ,CAAC,OAAO;gBACpB,OAAO,mFAAmF,CAAC;YAC5F,KAAK,QAAQ,CAAC,MAAM;gBACnB,OAAO,wCAAwC,CAAC;YACjD,KAAK,QAAQ,CAAC,OAAO;gBACpB,OAAO,0PAA0P,CAAC;SACnQ;IACF,CAAC;IACF,iBAAC;AAAD,CAAC,AA7XD,CAAgC,KAAK,GA6XpC","sourcesContent":["// Internal Imports\nimport { Title } from './title';\nimport { DOMUtils } from '../../services';\nimport { Tools } from '../../tools';\nimport { RenderTypes, Statuses } from './../../interfaces/enums';\nimport * as Configuration from '../../configuration';\n\nexport class MeterTitle extends Title {\n\ttype = 'meter-title';\n\trenderType = RenderTypes.SVG;\n\n\trender() {\n\t\tconst dataset = Tools.getProperty(this.model.getDisplayData(), 0);\n\t\tconst options = this.getOptions();\n\t\tconst svg = this.getComponentContainer();\n\t\tconst { groupMapsTo } = options.data;\n\n\t\tconst proportional = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'meter',\n\t\t\t'proportional'\n\t\t);\n\n\t\tif (proportional) {\n\t\t\tthis.displayTotal();\n\t\t\tthis.displayBreakdownTitle();\n\t\t} else {\n\t\t\t// the title for a meter, is the label for that dataset\n\t\t\tconst title = svg\n\t\t\t\t.selectAll('text.meter-title')\n\t\t\t\t.data([dataset[groupMapsTo]]);\n\n\t\t\ttitle\n\t\t\t\t.enter()\n\t\t\t\t.append('text')\n\t\t\t\t.classed('meter-title', true)\n\t\t\t\t.merge(title)\n\t\t\t\t.attr('x', 0)\n\t\t\t\t.attr('y', '1em')\n\t\t\t\t.text((d) => d);\n\n\t\t\ttitle.exit().remove();\n\n\t\t\t// appends the associated percentage after title\n\t\t\tthis.appendPercentage();\n\n\t\t\t// if status ranges are provided (custom or default), display indicator\n\t\t\tthis.displayStatus();\n\t\t}\n\t\t// get the max width of a title (with consideration for the status/percentage)\n\t\tconst maxWidth = this.getMaxTitleWidth();\n\t\tconst titleElement = DOMUtils.appendOrSelect(svg, 'text.meter-title');\n\n\t\tif (\n\t\t\tmaxWidth > 0 &&\n\t\t\ttitleElement.node().getComputedTextLength() > maxWidth\n\t\t) {\n\t\t\tthis.truncateTitle(titleElement, maxWidth);\n\t\t}\n\t}\n\n\tdisplayBreakdownTitle() {\n\t\tconst self = this;\n\t\tconst svg = this.getComponentContainer();\n\t\tconst options = this.getOptions();\n\t\tconst datasetsTotal = this.model.getMaximumDomain(\n\t\t\tthis.model.getDisplayData()\n\t\t);\n\t\tconst total = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'meter',\n\t\t\t'proportional',\n\t\t\t'total'\n\t\t);\n\t\tconst unit = Tools.getProperty(options, 'meter', 'proportional', 'unit')\n\t\t\t? Tools.getProperty(options, 'meter', 'proportional', 'unit')\n\t\t\t: '';\n\n\t\tlet data;\n\t\tif (datasetsTotal === total) {\n\t\t\tdata = null;\n\t\t} else {\n\t\t\tconst difference =\n\t\t\t\ttotal !== null ? total - datasetsTotal : datasetsTotal;\n\t\t\t//breakdownFormatter\n\t\t\tconst breakdownFormatter = Tools.getProperty(\n\t\t\t\toptions,\n\t\t\t\t'meter',\n\t\t\t\t'proportional',\n\t\t\t\t'breakdownFormatter'\n\t\t\t);\n\t\t\tdata =\n\t\t\t\tbreakdownFormatter !== null\n\t\t\t\t\t? breakdownFormatter({\n\t\t\t\t\t\t\tdatasetsTotal: datasetsTotal,\n\t\t\t\t\t\t\ttotal: total,\n\t\t\t\t\t })\n\t\t\t\t\t: `${datasetsTotal} ${unit} used (${difference} ${unit} available)`;\n\t\t}\n\n\t\t// the breakdown part to whole of the datasets to the overall total\n\t\tconst title = svg\n\t\t\t.selectAll('text.proportional-meter-title')\n\t\t\t.data([data]);\n\n\t\ttitle\n\t\t\t.enter()\n\t\t\t.append('text')\n\t\t\t.classed('proportional-meter-title', true)\n\t\t\t.merge(title)\n\t\t\t.attr('x', 0)\n\t\t\t.attr('y', '1em')\n\t\t\t.text((d) => d);\n\n\t\ttitle.exit().remove();\n\n\t\tconst maxWidth = this.getMaxTitleWidth();\n\t\tconst titleElement = DOMUtils.appendOrSelect(\n\t\t\tsvg,\n\t\t\t'text.proportional-meter-title'\n\t\t);\n\n\t\tif (\n\t\t\tmaxWidth > 0 &&\n\t\t\ttitleElement.node().getComputedTextLength() > maxWidth\n\t\t) {\n\t\t\tthis.truncateTitle(titleElement, maxWidth);\n\t\t}\n\t}\n\n\t// show the total for prop meter\n\tdisplayTotal() {\n\t\tconst self = this;\n\t\tconst svg = this.getComponentContainer();\n\t\tconst options = this.getOptions();\n\n\t\tconst total = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'meter',\n\t\t\t'proportional',\n\t\t\t'total'\n\t\t);\n\n\t\tconst totalValue = total\n\t\t\t? Tools.getProperty(options, 'meter', 'proportional', 'total')\n\t\t\t: this.model.getMaximumDomain(this.model.getDisplayData());\n\n\t\tconst unit = Tools.getProperty(options, 'meter', 'proportional', 'unit')\n\t\t\t? Tools.getProperty(options, 'meter', 'proportional', 'unit')\n\t\t\t: '';\n\n\t\t// totalFormatter function\n\t\tconst totalFormatter = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'meter',\n\t\t\t'proportional',\n\t\t\t'totalFormatter'\n\t\t);\n\n\t\tconst totalString =\n\t\t\ttotalFormatter !== null\n\t\t\t\t? totalFormatter(totalValue)\n\t\t\t\t: `${total} ${unit} total`;\n\n\t\tconst containerBounds = DOMUtils.getSVGElementSize(\n\t\t\tthis.services.domUtils.getMainContainer(),\n\t\t\t{ useAttr: true }\n\t\t);\n\n\t\t// need to check if the width is 0, and try to use the parent attribute\n\t\t// this can happen if the chart is toggled on/off and the height is 0 for the parent, it wont validateDimensions\n\t\tconst containerWidth = containerBounds.width\n\t\t\t? containerBounds.width\n\t\t\t: this.parent.node().getAttribute('width');\n\n\t\tconst title = svg\n\t\t\t.selectAll('text.proportional-meter-total')\n\t\t\t.data([totalString]);\n\n\t\ttitle\n\t\t\t.enter()\n\t\t\t.append('text')\n\t\t\t.classed('proportional-meter-total', true)\n\t\t\t.merge(title)\n\t\t\t.attr('x', containerWidth)\n\t\t\t.attr('y', '1em')\n\t\t\t.attr('text-anchor', 'end')\n\t\t\t.text((d) => d);\n\n\t\ttitle.exit().remove();\n\t}\n\n\t/**\n\t * Appends the corresponding status based on the value and the peak.\n\t */\n\tdisplayStatus() {\n\t\tconst self = this;\n\t\tconst svg = this.getComponentContainer();\n\n\t\tconst containerBounds = DOMUtils.getHTMLElementSize(\n\t\t\tthis.services.domUtils.getMainContainer()\n\t\t);\n\n\t\t// need to check if the width is 0, and try to use the parent attribute\n\t\t// this can happen if the chart is toggled on/off and the height is 0 for the parent, it wont validateDimensions\n\t\tconst containerWidth = containerBounds.width\n\t\t\t? containerBounds.width\n\t\t\t: 0;\n\n\t\t// get the status from the model\n\t\tconst status = this.model.getStatus();\n\t\tconst radius = Configuration.meter.status.indicatorSize / 2;\n\n\t\t// create a group for the icon/inner path\n\t\tconst statusGroup = DOMUtils.appendOrSelect(svg, `g.status-indicator`)\n\t\t\t.attr(\n\t\t\t\t'class',\n\t\t\t\tstatus !== null ? `status-indicator status--${status}` : ''\n\t\t\t)\n\t\t\t.attr('transform', `translate(${containerWidth - radius}, 0)`);\n\n\t\tconst data = status ? [status] : [];\n\t\tconst icon = statusGroup.selectAll('circle.status').data(data);\n\n\t\ticon.enter()\n\t\t\t.append('circle')\n\t\t\t.merge(icon)\n\t\t\t.attr('class', 'status')\n\t\t\t.attr('r', radius)\n\t\t\t.attr('cx', 0)\n\t\t\t.attr('cy', `calc(1em / 2)`);\n\n\t\tconst innerIcon = statusGroup.selectAll('path.innerFill').data(data);\n\n\t\tinnerIcon\n\t\t\t.enter()\n\t\t\t.append('path')\n\t\t\t.merge(innerIcon)\n\t\t\t.attr('d', self.getStatusIconPathString(status))\n\t\t\t.attr('transform', `translate(-${radius}, 0)`)\n\t\t\t.attr('class', 'innerFill');\n\n\t\tinnerIcon.exit().remove();\n\t\ticon.exit().remove();\n\t}\n\n\t/**\n\t * Appends the associated percentage to the end of the title\n\t */\n\tappendPercentage() {\n\t\tconst dataValue = Tools.getProperty(\n\t\t\tthis.model.getDisplayData(),\n\t\t\t0,\n\t\t\t'value'\n\t\t);\n\n\t\t// use the title's position to append the percentage to the end\n\t\tconst svg = this.getComponentContainer();\n\t\tconst title = DOMUtils.appendOrSelect(svg, 'text.meter-title');\n\n\t\t// check if it is enabled\n\t\tconst data =\n\t\t\tTools.getProperty(\n\t\t\t\tthis.getOptions(),\n\t\t\t\t'meter',\n\t\t\t\t'statusBar',\n\t\t\t\t'percentageIndicator',\n\t\t\t\t'enabled'\n\t\t\t) === true\n\t\t\t\t? [dataValue]\n\t\t\t\t: [];\n\n\t\t// append a percentage if it is enabled, update it\n\t\tconst percentage = svg.selectAll('text.percent-value').data(data);\n\n\t\t// the horizontal offset of the percentage value from the title\n\t\tconst offset = Configuration.meter.statusBar.paddingRight;\n\n\t\tpercentage\n\t\t\t.enter()\n\t\t\t.append('text')\n\t\t\t.classed('percent-value', true)\n\t\t\t.merge(percentage)\n\t\t\t.text((d) => `${d}%`)\n\t\t\t.attr(\n\t\t\t\t'x',\n\t\t\t\t+title.attr('x') + title.node().getComputedTextLength() + offset\n\t\t\t) // set the position to after the title\n\t\t\t.attr('y', title.attr('y'));\n\n\t\tpercentage.exit().remove();\n\t}\n\n\t/**\n\t * Uses the parent class truncate logic\n\t * @param title d3 selection of title element that will be truncated\n\t * @param titlestring the original string that needs truncation\n\t * @param maxWidth the max width the title can take\n\t */\n\ttruncateTitle(title, maxWidth) {\n\t\tsuper.truncateTitle(title, maxWidth);\n\n\t\t// update the position on the percentage to be inline with the title\n\t\tconst tspan = DOMUtils.appendOrSelect(this.parent, 'tspan');\n\t\tconst offset = Configuration.meter.statusBar.paddingRight;\n\t\tconst tspanLength = Math.ceil(tspan.node().getComputedTextLength());\n\n\t\tconst percentage = DOMUtils.appendOrSelect(\n\t\t\tthis.parent,\n\t\t\t'text.percent-value'\n\t\t);\n\t\tpercentage.attr(\n\t\t\t'x',\n\t\t\t+title.attr('x') +\n\t\t\t\ttitle.node().getComputedTextLength() +\n\t\t\t\ttspanLength +\n\t\t\t\toffset\n\t\t);\n\t}\n\n\t// computes the maximum space a title can take\n\tprotected getMaxTitleWidth() {\n\t\t// get a reference to the title elements to calculate the size the title can be\n\t\tconst containerBounds = DOMUtils.getHTMLElementSize(\n\t\t\tthis.services.domUtils.getMainContainer()\n\t\t);\n\n\t\tconst proportional = Tools.getProperty(\n\t\t\tthis.getOptions(),\n\t\t\t'meter',\n\t\t\t'proportional'\n\t\t);\n\n\t\t// need to check if the width is 0, and try to use the parent attribute\n\t\tconst containerWidth = containerBounds.width\n\t\t\t? containerBounds.width\n\t\t\t: this.parent.node().getAttribute('width');\n\n\t\tif (proportional !== null) {\n\t\t\tconst total = DOMUtils.appendOrSelect(\n\t\t\t\tthis.parent,\n\t\t\t\t'text.proportional-meter-total'\n\t\t\t).node();\n\n\t\t\tconst totalWidth = DOMUtils.getSVGElementSize(total, {\n\t\t\t\tuseBBox: true,\n\t\t\t}).width;\n\n\t\t\treturn (\n\t\t\t\tcontainerWidth -\n\t\t\t\ttotalWidth -\n\t\t\t\tConfiguration.meter.total.paddingLeft\n\t\t\t);\n\t\t} else {\n\t\t\tconst percentage = DOMUtils.appendOrSelect(\n\t\t\t\tthis.parent,\n\t\t\t\t'text.percent-value'\n\t\t\t);\n\t\t\t// the title needs to fit the width of the container without crowding the status, and percentage value\n\t\t\tconst offset = Configuration.meter.statusBar.paddingRight;\n\t\t\tconst percentageWidth = percentage.node().getComputedTextLength();\n\n\t\t\tconst statusGroup = DOMUtils.appendOrSelect(\n\t\t\t\tthis.parent,\n\t\t\t\t'g.status-indicator'\n\t\t\t).node();\n\t\t\tconst statusWidth =\n\t\t\t\tDOMUtils.getSVGElementSize(statusGroup, { useBBox: true })\n\t\t\t\t\t.width + Configuration.meter.status.paddingLeft;\n\n\t\t\treturn containerWidth - percentageWidth - offset - statusWidth;\n\t\t}\n\t}\n\n\t/**\n\t * Get the associated status icon for the data\n\t * @param status the active status for the meter chart\n\t */\n\tprotected getStatusIconPathString(status) {\n\t\tswitch (status) {\n\t\t\tcase Statuses.SUCCESS:\n\t\t\t\treturn 'M6.875 11.3125 3.75 8.1875 4.74375 7.25 6.875 9.34375 11.50625 4.75 12.5 5.7375 Z';\n\t\t\tcase Statuses.DANGER:\n\t\t\t\treturn 'M10.7 11.5 4.5 5.3 5.3 4.5 11.5 10.7 Z';\n\t\t\tcase Statuses.WARNING:\n\t\t\t\treturn 'M7.9375,11.125 C7.41973305,11.125 7,11.544733 7,12.0625 C7,12.580267 7.41973305,13 7.9375,13 C8.45526695,13 8.875,12.580267 8.875,12.0625 C8.875,11.544733 8.45526695,11.125 7.9375,11.125 M7.3125, 3 8.5625, 3 8.5625, 9.875 7.3125, 9.875, 7.3125, 3 Z';\n\t\t}\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"file":"title-meter.js","sourceRoot":"","sources":["title-meter.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { Title } from './title';\nimport { DOMUtils } from '../../services';\nimport { Tools } from '../../tools';\nimport { RenderTypes, Statuses } from './../../interfaces/enums';\nimport * as Configuration from '../../configuration';\n\nexport class MeterTitle extends Title {\n\ttype = 'meter-title';\n\trenderType = RenderTypes.SVG;\n\n\trender() {\n\t\tconst dataset = Tools.getProperty(this.model.getDisplayData(), 0);\n\t\tconst options = this.getOptions();\n\t\tconst svg = this.getComponentContainer();\n\t\tconst { groupMapsTo } = options.data;\n\n\t\tconst proportional = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'meter',\n\t\t\t'proportional'\n\t\t);\n\n\t\tif (proportional) {\n\t\t\tthis.displayTotal();\n\t\t\tthis.displayBreakdownTitle();\n\t\t} else {\n\t\t\t// the title for a meter, is the label for that dataset\n\t\t\tconst title = svg\n\t\t\t\t.selectAll('text.meter-title')\n\t\t\t\t.data([dataset[groupMapsTo]]);\n\n\t\t\ttitle\n\t\t\t\t.enter()\n\t\t\t\t.append('text')\n\t\t\t\t.classed('meter-title', true)\n\t\t\t\t.merge(title)\n\t\t\t\t.attr('x', 0)\n\t\t\t\t.attr('y', '1em')\n\t\t\t\t.text((d) => d);\n\n\t\t\ttitle.exit().remove();\n\n\t\t\t// appends the associated percentage after title\n\t\t\tthis.appendPercentage();\n\n\t\t\t// if status ranges are provided (custom or default), display indicator\n\t\t\tthis.displayStatus();\n\t\t}\n\t\t// get the max width of a title (with consideration for the status/percentage)\n\t\tconst maxWidth = this.getMaxTitleWidth();\n\t\tconst titleElement = DOMUtils.appendOrSelect(svg, 'text.meter-title');\n\n\t\tif (\n\t\t\tmaxWidth > 0 &&\n\t\t\ttitleElement.node().getComputedTextLength() > maxWidth\n\t\t) {\n\t\t\tthis.truncateTitle(titleElement, maxWidth);\n\t\t}\n\t}\n\n\tdisplayBreakdownTitle() {\n\t\tconst self = this;\n\t\tconst svg = this.getComponentContainer();\n\t\tconst options = this.getOptions();\n\t\tconst datasetsTotal = this.model.getMaximumDomain(\n\t\t\tthis.model.getDisplayData()\n\t\t);\n\t\tconst total = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'meter',\n\t\t\t'proportional',\n\t\t\t'total'\n\t\t);\n\t\tconst unit = Tools.getProperty(options, 'meter', 'proportional', 'unit')\n\t\t\t? Tools.getProperty(options, 'meter', 'proportional', 'unit')\n\t\t\t: '';\n\n\t\tlet data;\n\t\tif (datasetsTotal === total) {\n\t\t\tdata = null;\n\t\t} else {\n\t\t\tconst difference =\n\t\t\t\ttotal !== null ? total - datasetsTotal : datasetsTotal;\n\t\t\t//breakdownFormatter\n\t\t\tconst breakdownFormatter = Tools.getProperty(\n\t\t\t\toptions,\n\t\t\t\t'meter',\n\t\t\t\t'proportional',\n\t\t\t\t'breakdownFormatter'\n\t\t\t);\n\t\t\tdata =\n\t\t\t\tbreakdownFormatter !== null\n\t\t\t\t\t? breakdownFormatter({\n\t\t\t\t\t\t\tdatasetsTotal: datasetsTotal,\n\t\t\t\t\t\t\ttotal: total,\n\t\t\t\t\t })\n\t\t\t\t\t: `${datasetsTotal} ${unit} used (${difference} ${unit} available)`;\n\t\t}\n\n\t\t// the breakdown part to whole of the datasets to the overall total\n\t\tconst title = svg\n\t\t\t.selectAll('text.proportional-meter-title')\n\t\t\t.data([data]);\n\n\t\ttitle\n\t\t\t.enter()\n\t\t\t.append('text')\n\t\t\t.classed('proportional-meter-title', true)\n\t\t\t.merge(title)\n\t\t\t.attr('x', 0)\n\t\t\t.attr('y', '1em')\n\t\t\t.text((d) => d);\n\n\t\ttitle.exit().remove();\n\n\t\tconst maxWidth = this.getMaxTitleWidth();\n\t\tconst titleElement = DOMUtils.appendOrSelect(\n\t\t\tsvg,\n\t\t\t'text.proportional-meter-title'\n\t\t);\n\n\t\tif (\n\t\t\tmaxWidth > 0 &&\n\t\t\ttitleElement.node().getComputedTextLength() > maxWidth\n\t\t) {\n\t\t\tthis.truncateTitle(titleElement, maxWidth);\n\t\t}\n\t}\n\n\t// show the total for prop meter\n\tdisplayTotal() {\n\t\tconst self = this;\n\t\tconst svg = this.getComponentContainer();\n\t\tconst options = this.getOptions();\n\n\t\tconst total = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'meter',\n\t\t\t'proportional',\n\t\t\t'total'\n\t\t);\n\n\t\tconst totalValue = total\n\t\t\t? Tools.getProperty(options, 'meter', 'proportional', 'total')\n\t\t\t: this.model.getMaximumDomain(this.model.getDisplayData());\n\n\t\tconst unit = Tools.getProperty(options, 'meter', 'proportional', 'unit')\n\t\t\t? Tools.getProperty(options, 'meter', 'proportional', 'unit')\n\t\t\t: '';\n\n\t\t// totalFormatter function\n\t\tconst totalFormatter = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'meter',\n\t\t\t'proportional',\n\t\t\t'totalFormatter'\n\t\t);\n\n\t\tconst totalString =\n\t\t\ttotalFormatter !== null\n\t\t\t\t? totalFormatter(totalValue)\n\t\t\t\t: `${total} ${unit} total`;\n\n\t\tconst containerBounds = DOMUtils.getSVGElementSize(\n\t\t\tthis.services.domUtils.getMainContainer(),\n\t\t\t{ useAttrs: true }\n\t\t);\n\n\t\t// need to check if the width is 0, and try to use the parent attribute\n\t\t// this can happen if the chart is toggled on/off and the height is 0 for the parent, it wont validateDimensions\n\t\tconst containerWidth = containerBounds.width\n\t\t\t? containerBounds.width\n\t\t\t: this.parent.node().getAttribute('width');\n\n\t\tconst title = svg\n\t\t\t.selectAll('text.proportional-meter-total')\n\t\t\t.data([totalString]);\n\n\t\ttitle\n\t\t\t.enter()\n\t\t\t.append('text')\n\t\t\t.classed('proportional-meter-total', true)\n\t\t\t.merge(title)\n\t\t\t.attr('x', containerWidth)\n\t\t\t.attr('y', '1em')\n\t\t\t.attr('text-anchor', 'end')\n\t\t\t.text((d) => d);\n\n\t\ttitle.exit().remove();\n\t}\n\n\t/**\n\t * Appends the corresponding status based on the value and the peak.\n\t */\n\tdisplayStatus() {\n\t\tconst self = this;\n\t\tconst svg = this.getComponentContainer();\n\n\t\tconst containerBounds = DOMUtils.getHTMLElementSize(\n\t\t\tthis.services.domUtils.getMainContainer()\n\t\t);\n\n\t\t// need to check if the width is 0, and try to use the parent attribute\n\t\t// this can happen if the chart is toggled on/off and the height is 0 for the parent, it wont validateDimensions\n\t\tconst containerWidth = containerBounds.width\n\t\t\t? containerBounds.width\n\t\t\t: 0;\n\n\t\t// get the status from the model\n\t\tconst status = this.model.getStatus();\n\t\tconst radius = Configuration.meter.status.indicatorSize / 2;\n\n\t\t// create a group for the icon/inner path\n\t\tconst statusGroup = DOMUtils.appendOrSelect(svg, `g.status-indicator`)\n\t\t\t.attr(\n\t\t\t\t'class',\n\t\t\t\tstatus !== null ? `status-indicator status--${status}` : ''\n\t\t\t)\n\t\t\t.attr('transform', `translate(${containerWidth - radius}, 0)`);\n\n\t\tconst data = status ? [status] : [];\n\t\tconst icon = statusGroup.selectAll('circle.status').data(data);\n\n\t\ticon.enter()\n\t\t\t.append('circle')\n\t\t\t.merge(icon)\n\t\t\t.attr('class', 'status')\n\t\t\t.attr('r', radius)\n\t\t\t.attr('cx', 0)\n\t\t\t.attr('cy', `calc(1em / 2)`);\n\n\t\tconst innerIcon = statusGroup.selectAll('path.innerFill').data(data);\n\n\t\tinnerIcon\n\t\t\t.enter()\n\t\t\t.append('path')\n\t\t\t.merge(innerIcon)\n\t\t\t.attr('d', self.getStatusIconPathString(status))\n\t\t\t.attr('transform', `translate(-${radius}, 0)`)\n\t\t\t.attr('class', 'innerFill');\n\n\t\tinnerIcon.exit().remove();\n\t\ticon.exit().remove();\n\t}\n\n\t/**\n\t * Appends the associated percentage to the end of the title\n\t */\n\tappendPercentage() {\n\t\tconst dataValue = Tools.getProperty(\n\t\t\tthis.model.getDisplayData(),\n\t\t\t0,\n\t\t\t'value'\n\t\t);\n\n\t\t// use the title's position to append the percentage to the end\n\t\tconst svg = this.getComponentContainer();\n\t\tconst title = DOMUtils.appendOrSelect(svg, 'text.meter-title');\n\n\t\t// check if it is enabled\n\t\tconst data =\n\t\t\tTools.getProperty(\n\t\t\t\tthis.getOptions(),\n\t\t\t\t'meter',\n\t\t\t\t'statusBar',\n\t\t\t\t'percentageIndicator',\n\t\t\t\t'enabled'\n\t\t\t) === true\n\t\t\t\t? [dataValue]\n\t\t\t\t: [];\n\n\t\t// append a percentage if it is enabled, update it\n\t\tconst percentage = svg.selectAll('text.percent-value').data(data);\n\n\t\t// the horizontal offset of the percentage value from the title\n\t\tconst offset = Configuration.meter.statusBar.paddingRight;\n\n\t\tpercentage\n\t\t\t.enter()\n\t\t\t.append('text')\n\t\t\t.classed('percent-value', true)\n\t\t\t.merge(percentage)\n\t\t\t.text((d) => `${d}%`)\n\t\t\t.attr(\n\t\t\t\t'x',\n\t\t\t\t+title.attr('x') + title.node().getComputedTextLength() + offset\n\t\t\t) // set the position to after the title\n\t\t\t.attr('y', title.attr('y'));\n\n\t\tpercentage.exit().remove();\n\t}\n\n\t/**\n\t * Uses the parent class truncate logic\n\t * @param title d3 selection of title element that will be truncated\n\t * @param titlestring the original string that needs truncation\n\t * @param maxWidth the max width the title can take\n\t */\n\ttruncateTitle(title, maxWidth) {\n\t\tsuper.truncateTitle(title, maxWidth);\n\n\t\t// update the position on the percentage to be inline with the title\n\t\tconst tspan = DOMUtils.appendOrSelect(this.parent, 'tspan');\n\t\tconst offset = Configuration.meter.statusBar.paddingRight;\n\t\tconst tspanLength = Math.ceil(tspan.node().getComputedTextLength());\n\n\t\tconst percentage = DOMUtils.appendOrSelect(\n\t\t\tthis.parent,\n\t\t\t'text.percent-value'\n\t\t);\n\t\tpercentage.attr(\n\t\t\t'x',\n\t\t\t+title.attr('x') +\n\t\t\t\ttitle.node().getComputedTextLength() +\n\t\t\t\ttspanLength +\n\t\t\t\toffset\n\t\t);\n\t}\n\n\t// computes the maximum space a title can take\n\tprotected getMaxTitleWidth() {\n\t\t// get a reference to the title elements to calculate the size the title can be\n\t\tconst containerBounds = DOMUtils.getHTMLElementSize(\n\t\t\tthis.services.domUtils.getMainContainer()\n\t\t);\n\n\t\tconst proportional = Tools.getProperty(\n\t\t\tthis.getOptions(),\n\t\t\t'meter',\n\t\t\t'proportional'\n\t\t);\n\n\t\t// need to check if the width is 0, and try to use the parent attribute\n\t\tconst containerWidth = containerBounds.width\n\t\t\t? containerBounds.width\n\t\t\t: this.parent.node().getAttribute('width');\n\n\t\tif (proportional !== null) {\n\t\t\tconst total = DOMUtils.appendOrSelect(\n\t\t\t\tthis.parent,\n\t\t\t\t'text.proportional-meter-total'\n\t\t\t).node();\n\n\t\t\tconst totalWidth = DOMUtils.getSVGElementSize(total, {\n\t\t\t\tuseBBox: true,\n\t\t\t}).width;\n\n\t\t\treturn (\n\t\t\t\tcontainerWidth -\n\t\t\t\ttotalWidth -\n\t\t\t\tConfiguration.meter.total.paddingLeft\n\t\t\t);\n\t\t} else {\n\t\t\tconst percentage = DOMUtils.appendOrSelect(\n\t\t\t\tthis.parent,\n\t\t\t\t'text.percent-value'\n\t\t\t);\n\t\t\t// the title needs to fit the width of the container without crowding the status, and percentage value\n\t\t\tconst offset = Configuration.meter.statusBar.paddingRight;\n\t\t\tconst percentageWidth = percentage.node().getComputedTextLength();\n\n\t\t\tconst statusGroup = DOMUtils.appendOrSelect(\n\t\t\t\tthis.parent,\n\t\t\t\t'g.status-indicator'\n\t\t\t).node();\n\t\t\tconst statusWidth =\n\t\t\t\tDOMUtils.getSVGElementSize(statusGroup, { useBBox: true })\n\t\t\t\t\t.width + Configuration.meter.status.paddingLeft;\n\n\t\t\treturn containerWidth - percentageWidth - offset - statusWidth;\n\t\t}\n\t}\n\n\t/**\n\t * Get the associated status icon for the data\n\t * @param status the active status for the meter chart\n\t */\n\tprotected getStatusIconPathString(status) {\n\t\tswitch (status) {\n\t\t\tcase Statuses.SUCCESS:\n\t\t\t\treturn 'M6.875 11.3125 3.75 8.1875 4.74375 7.25 6.875 9.34375 11.50625 4.75 12.5 5.7375 Z';\n\t\t\tcase Statuses.DANGER:\n\t\t\t\treturn 'M10.7 11.5 4.5 5.3 5.3 4.5 11.5 10.7 Z';\n\t\t\tcase Statuses.WARNING:\n\t\t\t\treturn 'M7.9375,11.125 C7.41973305,11.125 7,11.544733 7,12.0625 C7,12.580267 7.41973305,13 7.9375,13 C8.45526695,13 8.875,12.580267 8.875,12.0625 C8.875,11.544733 8.45526695,11.125 7.9375,11.125 M7.3125, 3 8.5625, 3 8.5625, 9.875 7.3125, 9.875, 7.3125, 3 Z';\n\t\t}\n\t}\n}\n"]}
|
|
@@ -107,7 +107,7 @@ var Title = /** @class */ (function (_super) {
|
|
|
107
107
|
// computes the maximum space a title can take
|
|
108
108
|
Title.prototype.getMaxTitleWidth = function () {
|
|
109
109
|
return DOMUtils.getSVGElementSize(this.parent.node(), {
|
|
110
|
-
|
|
110
|
+
useAttrs: true,
|
|
111
111
|
}).width;
|
|
112
112
|
};
|
|
113
113
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"title.js","sourceRoot":"","sources":["title.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"title.js","sourceRoot":"","sources":["title.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { Component } from '../component';\nimport { DOMUtils } from '../../services';\nimport { Events, RenderTypes } from './../../interfaces';\nimport { Tools } from '../../tools';\n\nexport class Title extends Component {\n\ttype = 'title';\n\trenderType = RenderTypes.HTML;\n\n\trender() {\n\t\tconst svg = this.getComponentContainer();\n\t\tconst title = Tools.getProperty(this.getOptions(), 'title');\n\n\t\tconst text = svg.selectAll('p.title').data([title]);\n\n\t\ttext.enter()\n\t\t\t.append('p')\n\t\t\t.classed('title', true)\n\t\t\t.merge(text)\n\t\t\t.attr('x', 0)\n\t\t\t.attr('y', '1em')\n\t\t\t.html((d) => d);\n\n\t\t// check if title needs truncation (and tooltip support)\n\t\tif (text.node() && text.node().offsetWidth < text.node().scrollWidth) {\n\t\t\t// add events for displaying the tooltip with the title\n\t\t\tconst self = this;\n\t\t\ttext.on('mouseover', function (event) {\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.SHOW, {\n\t\t\t\t\tevent,\n\t\t\t\t\thoveredElement: text,\n\t\t\t\t\tcontent: text.text(),\n\t\t\t\t});\n\t\t\t})\n\t\t\t\t.on('mousemove', function (event) {\n\t\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.MOVE, {\n\t\t\t\t\t\tevent,\n\t\t\t\t\t});\n\t\t\t\t})\n\t\t\t\t.on('mouseout', function () {\n\t\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.HIDE);\n\t\t\t\t});\n\t\t}\n\n\t\ttext.exit().remove();\n\t}\n\n\t/**\n\t * Truncates title creating ellipses and attaching tooltip for exposing full title.\n\t */\n\ttruncateTitle(title, maxWidth) {\n\t\t// sanity check to prevent stack overflow on binary search\n\t\tif (maxWidth <= 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst untruncatedTitle = title.text();\n\t\t// check if the title is too big for the containing svg\n\t\tif (title.node().getComputedTextLength() > maxWidth) {\n\t\t\t// append the ellipses to their own tspan to calculate the text length\n\t\t\ttitle.append('tspan').text('...');\n\n\t\t\t// get the bounding width including the elipses '...'\n\t\t\tconst tspanLength = DOMUtils.appendOrSelect(title, 'tspan')\n\t\t\t\t.node()\n\t\t\t\t.getComputedTextLength();\n\n\t\t\t// with elipses\n\t\t\tconst titleString = title.text();\n\n\t\t\t// get the index for creating the max length substring that fit within the svg\n\t\t\t// use one less than the index to avoid crowding (the elipsis)\n\t\t\tconst substringIndex = this.getSubstringIndex(\n\t\t\t\ttitle.node(),\n\t\t\t\t0,\n\t\t\t\ttitleString.length - 1,\n\t\t\t\tmaxWidth - tspanLength\n\t\t\t);\n\n\t\t\t// use the substring as the title\n\t\t\ttitle\n\t\t\t\t.html(titleString.substring(0, substringIndex - 1))\n\t\t\t\t.append('tspan')\n\t\t\t\t.text('...');\n\n\t\t\t// add events for displaying the tooltip with the title\n\t\t\tconst self = this;\n\t\t\ttitle\n\t\t\t\t.on('mouseover', function (event) {\n\t\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.SHOW, {\n\t\t\t\t\t\tevent,\n\t\t\t\t\t\thoveredElement: title,\n\t\t\t\t\t\tcontent: untruncatedTitle,\n\t\t\t\t\t});\n\t\t\t\t})\n\t\t\t\t.on('mousemove', function (event) {\n\t\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.MOVE, {\n\t\t\t\t\t\tevent,\n\t\t\t\t\t});\n\t\t\t\t})\n\t\t\t\t.on('mouseout', function () {\n\t\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.HIDE);\n\t\t\t\t});\n\t\t}\n\t}\n\n\t// computes the maximum space a title can take\n\tprotected getMaxTitleWidth() {\n\t\treturn DOMUtils.getSVGElementSize(this.parent.node(), {\n\t\t\tuseAttrs: true,\n\t\t}).width;\n\t}\n\n\t/**\n\t * Returns the index for a maximum length substring that is less than the width parameter.\n\t * @param title the title node used for getting the text lengths of substrings\n\t * @param start the start index for the binary search\n\t * @param end the end index for the binary search\n\t * @param width the width of the svg container that holds the title\n\t */\n\tprotected getSubstringIndex(title, start, end, width) {\n\t\tconst mid = Math.floor((end + start) / 2);\n\t\tif (title.getSubStringLength(0, mid) > width) {\n\t\t\treturn this.getSubstringIndex(title, start, mid, width);\n\t\t} else if (title.getSubStringLength(0, mid) < width) {\n\t\t\tif (title.getSubStringLength(0, mid + 1) > width) {\n\t\t\t\treturn mid;\n\t\t\t}\n\t\t\treturn this.getSubstringIndex(title, mid, end, width);\n\t\t} else {\n\t\t\treturn mid;\n\t\t}\n\t}\n}\n"]}
|
|
@@ -134,7 +134,7 @@ var Gauge = /** @class */ (function (_super) {
|
|
|
134
134
|
arcValue.exit().remove();
|
|
135
135
|
var alignment = Tools.getProperty(options, 'gauge', 'alignment');
|
|
136
136
|
var width = DOMUtils.getSVGElementSize(this.getParent(), {
|
|
137
|
-
|
|
137
|
+
useAttrs: true,
|
|
138
138
|
}).width;
|
|
139
139
|
// Position gauge
|
|
140
140
|
var gaugeTranslateX = radius;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gauge.js","sourceRoot":"","sources":["gauge.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { Component } from '../component';\nimport { DOMUtils } from '../../services';\nimport {\n\tRoles,\n\tEvents,\n\tGaugeTypes,\n\tArrowDirections,\n\tColorClassNameTypes,\n\tAlignments,\n\tRenderTypes,\n} from '../../interfaces';\nimport { Tools } from '../../tools';\n\n// D3 Imports\nimport { select } from 'd3-selection';\nimport { arc } from 'd3-shape';\n\n// arrow paths for delta\nconst ARROW_UP_PATH_STRING = '4,10 8,6 12,10';\nconst ARROW_DOWN_PATH_STRING = '12,6 8,10 4,6';\n\nexport class Gauge extends Component {\n\ttype = 'gauge';\n\trenderType = RenderTypes.SVG;\n\n\t// We need to store our arcs so that addEventListeners() can access them\n\tarc: any;\n\tbackgroundArc: any;\n\n\tgetValue(): number {\n\t\tconst data = this.model.getData();\n\t\tconst value = data.find((d) => d.group === 'value')?.value ?? null;\n\t\treturn value;\n\t}\n\n\tgetValueRatio(): number {\n\t\tconst value = Tools.clamp(this.getValue(), 0, 100);\n\t\treturn value / 100;\n\t}\n\n\tgetDelta(): number {\n\t\tconst data = this.model.getData();\n\t\tconst delta = data.find((d) => d.group === 'delta')?.value ?? null;\n\t\treturn delta;\n\t}\n\n\tgetArcRatio(): number {\n\t\tconst options = this.getOptions();\n\t\tconst type = Tools.getProperty(options, 'gauge', 'type');\n\t\tconst arcRatio = type === GaugeTypes.FULL ? 1 : 0.5;\n\t\treturn arcRatio;\n\t}\n\n\tgetArcSize(): number {\n\t\treturn this.getArcRatio() * Math.PI * 2;\n\t}\n\n\tgetStartAngle(): number {\n\t\tconst arcSize = this.getArcSize();\n\t\tif (arcSize === 2 * Math.PI) {\n\t\t\treturn 0;\n\t\t}\n\t\treturn -arcSize / 2;\n\t}\n\n\t// use provided arrow direction or default to using the delta\n\tgetArrow(delta): string {\n\t\tconst options = this.getOptions();\n\t\tconst arrowDirection = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'gauge',\n\t\t\t'deltaArrow',\n\t\t\t'direction'\n\t\t);\n\n\t\tswitch (arrowDirection) {\n\t\t\tcase ArrowDirections.UP:\n\t\t\t\treturn ARROW_UP_PATH_STRING;\n\t\t\tcase ArrowDirections.DOWN:\n\t\t\t\treturn ARROW_DOWN_PATH_STRING;\n\t\t\tdefault:\n\t\t\t\treturn delta > 0\n\t\t\t\t\t? ARROW_UP_PATH_STRING\n\t\t\t\t\t: ARROW_DOWN_PATH_STRING;\n\t\t}\n\t}\n\n\trender(animate = true) {\n\t\tconst svg = this.getComponentContainer()\n\t\t\t.attr('width', '100%')\n\t\t\t.attr('height', '100%');\n\t\tconst options = this.getOptions();\n\n\t\tconst value = this.getValue();\n\t\tconst valueRatio = this.getValueRatio();\n\t\tconst arcSize = this.getArcSize();\n\n\t\t// angles for drawing the gauge\n\t\tconst startAngle = this.getStartAngle();\n\t\tconst rotationAngle = valueRatio * arcSize;\n\t\tconst currentAngle = startAngle + rotationAngle;\n\t\tconst endAngle = startAngle + arcSize;\n\n\t\t// Compute the outer radius needed\n\t\tconst radius = this.computeRadius();\n\t\tconst innerRadius = this.getInnerRadius();\n\n\t\t// draw the container and arc\n\t\tthis.backgroundArc = arc()\n\t\t\t.innerRadius(innerRadius)\n\t\t\t.outerRadius(radius)\n\t\t\t.startAngle(currentAngle)\n\t\t\t.endAngle(endAngle);\n\n\t\tthis.arc = arc()\n\t\t\t.innerRadius(innerRadius)\n\t\t\t.outerRadius(radius)\n\t\t\t.startAngle(startAngle)\n\t\t\t.endAngle(currentAngle);\n\n\t\t// draw the container\n\t\tDOMUtils.appendOrSelect(svg, 'path.arc-background')\n\t\t\t.attr('d', this.backgroundArc)\n\t\t\t.attr('role', Roles.GROUP);\n\n\t\t// Add data arc\n\t\tconst arcValue = svg.selectAll('path.arc-foreground').data([value]);\n\t\tconst arcEnter = arcValue.enter().append('path');\n\n\t\tarcEnter\n\t\t\t.merge(arcValue)\n\t\t\t.attr(\n\t\t\t\t'class',\n\t\t\t\tthis.model.getColorClassName({\n\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.FILL],\n\t\t\t\t\tdataGroupName: 'value',\n\t\t\t\t\toriginalClassName: 'arc-foreground',\n\t\t\t\t})\n\t\t\t)\n\t\t\t.style('fill', (d) =>\n\t\t\t\tTools.getProperty(this.getOptions(), 'color', 'scale', 'value')\n\t\t\t)\n\t\t\t.attr('d', this.arc)\n\t\t\t// a11y\n\t\t\t.attr('role', Roles.GRAPHICS_SYMBOL)\n\t\t\t.attr('aria-roledescription', 'value')\n\t\t\t.attr('aria-label', (d) => d.value);\n\n\t\t// draw the value and delta to the center\n\t\tthis.drawValueNumber();\n\t\tthis.drawDelta();\n\n\t\tarcValue.exit().remove();\n\n\t\tconst alignment = Tools.getProperty(options, 'gauge', 'alignment');\n\n\t\tconst { width } = DOMUtils.getSVGElementSize(this.getParent(), {\n\t\t\tuseAttr: true,\n\t\t});\n\n\t\t// Position gauge\n\t\tlet gaugeTranslateX = radius;\n\t\tif (alignment === Alignments.CENTER) {\n\t\t\tgaugeTranslateX = width / 2;\n\t\t} else if (alignment === Alignments.RIGHT) {\n\t\t\tgaugeTranslateX = width - radius;\n\t\t}\n\t\tsvg.attr('x', gaugeTranslateX).attr('y', radius);\n\n\t\t// Add event listeners\n\t\tthis.addEventListeners();\n\t}\n\n\t/**\n\t * draws the value number associated with the Gauge component in the center\n\t */\n\tdrawValueNumber() {\n\t\tconst svg = this.getComponentContainer();\n\t\tconst options = this.getOptions();\n\n\t\tconst arcType = Tools.getProperty(options, 'gauge', 'type');\n\t\tconst value = this.getValue();\n\t\tconst delta = this.getDelta();\n\n\t\t// Sizing and positions relative to the radius\n\t\tconst radius = this.computeRadius();\n\n\t\tconst valueFontSize = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'gauge',\n\t\t\t'valueFontSize'\n\t\t);\n\t\t// if there is a delta, use the size to center the numbers, otherwise center the valueNumber\n\t\tconst deltaFontSize = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'gauge',\n\t\t\t'deltaFontSize'\n\t\t);\n\n\t\tconst numberSpacing = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'gauge',\n\t\t\t'numberSpacing'\n\t\t);\n\n\t\tconst showPercentageSymbol = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'gauge',\n\t\t\t'showPercentageSymbol'\n\t\t);\n\n\t\t// circular gauge without delta should have valueNumber centered\n\t\tlet numbersYPosition = 0;\n\t\tif (arcType === GaugeTypes.FULL && !delta) {\n\t\t\tnumbersYPosition = deltaFontSize(radius);\n\t\t} else if (arcType === GaugeTypes.SEMI && delta) {\n\t\t\t// semi circular gauge we want the numbers aligned to the chart container\n\t\t\tnumbersYPosition = -(deltaFontSize(radius) + numberSpacing);\n\t\t}\n\n\t\t// Add the numbers at the center\n\t\tconst numbersGroup = DOMUtils.appendOrSelect(\n\t\t\tsvg,\n\t\t\t'g.gauge-numbers'\n\t\t).attr('transform', `translate(0, ${numbersYPosition})`);\n\n\t\tconst fontSize = valueFontSize(radius);\n\t\t// Add the big number\n\t\tconst valueNumberGroup = DOMUtils.appendOrSelect(\n\t\t\tnumbersGroup,\n\t\t\t'g.gauge-value-number'\n\t\t);\n\n\t\tconst numberFormatter = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'gauge',\n\t\t\t'numberFormatter'\n\t\t);\n\t\tconst valueNumber = valueNumberGroup\n\t\t\t.selectAll('text.gauge-value-number')\n\t\t\t.data([value]);\n\n\t\tvalueNumber\n\t\t\t.enter()\n\t\t\t.append('text')\n\t\t\t.attr('class', 'gauge-value-number')\n\t\t\t.merge(valueNumber)\n\t\t\t.style('font-size', `${fontSize}px`)\n\t\t\t.attr('text-anchor', 'middle')\n\t\t\t.text((d) => numberFormatter(d));\n\n\t\t// add the percentage symbol beside the valueNumber\n\t\tconst {\n\t\t\twidth: valueNumberWidth,\n\t\t} = DOMUtils.getSVGElementSize(\n\t\t\tDOMUtils.appendOrSelect(svg, 'text.gauge-value-number'),\n\t\t\t{ useBBox: true }\n\t\t);\n\n\t\tconst symbolFontSize = fontSize / 2;\n\t\tconst gaugeSymbol = showPercentageSymbol ? '%' : '';\n\t\tconst symbol = DOMUtils.appendOrSelect(\n\t\t\tvalueNumberGroup,\n\t\t\t'text.gauge-value-symbol'\n\t\t)\n\t\t\t.style('font-size', `${symbolFontSize}px`)\n\t\t\t.attr('x', valueNumberWidth / 2)\n\t\t\t.text(gaugeSymbol);\n\n\t\tconst {\n\t\t\twidth: symbolWidth,\n\t\t\theight: symbolHeight,\n\t\t} = DOMUtils.getSVGElementSize(symbol, { useBBox: true });\n\n\t\t// adjust the symbol to superscript using the bbox instead of the font-size cause\n\t\t// we want to align the actual character to the value number\n\t\tsymbol.attr('y', `-${symbolHeight / 2}px`);\n\n\t\t// move the value group depending on the symbol's drawn size\n\t\tvalueNumberGroup.attr('transform', `translate(-${symbolWidth / 2}, 0)`); // Optical centering for the presence of the smaller % symbol\n\t}\n\n\t/**\n\t * adds the delta number for the gauge\n\t */\n\tdrawDelta() {\n\t\tconst self = this;\n\t\tconst svg = this.getComponentContainer();\n\t\tconst options = this.getOptions();\n\t\tconst delta = this.getDelta();\n\n\t\t// Sizing and positions relative to the radius\n\t\tconst radius = this.computeRadius();\n\t\tconst deltaFontSize = delta\n\t\t\t? Tools.getProperty(options, 'gauge', 'deltaFontSize')\n\t\t\t: () => 0;\n\n\t\t// use numberFormatter here only if there is a delta supplied\n\t\tconst numberFormatter = delta\n\t\t\t? Tools.getProperty(options, 'gauge', 'numberFormatter')\n\t\t\t: () => null;\n\n\t\tconst arrowSize = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'gauge',\n\t\t\t'deltaArrow',\n\t\t\t'size'\n\t\t);\n\t\tconst numberSpacing = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'gauge',\n\t\t\t'numberSpacing'\n\t\t);\n\n\t\tconst showPercentageSymbol = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'gauge',\n\t\t\t'showPercentageSymbol'\n\t\t);\n\n\t\tconst numbersGroup = DOMUtils.appendOrSelect(svg, 'g.gauge-numbers');\n\n\t\t// Add the smaller number of the delta\n\t\tconst deltaGroup = DOMUtils.appendOrSelect(\n\t\t\tnumbersGroup,\n\t\t\t'g.gauge-delta'\n\t\t).attr(\n\t\t\t'transform',\n\t\t\t`translate(0, ${deltaFontSize(radius) + numberSpacing})`\n\t\t);\n\n\t\tconst deltaNumber = DOMUtils.appendOrSelect(\n\t\t\tdeltaGroup,\n\t\t\t'text.gauge-delta-number'\n\t\t);\n\t\tconst gaugeSymbol = showPercentageSymbol ? '%' : '';\n\n\t\tdeltaNumber.data(delta === null ? [] : [delta]);\n\n\t\tdeltaNumber\n\t\t\t.enter()\n\t\t\t.append('text')\n\t\t\t.classed('gauge-delta-number', true)\n\t\t\t.merge(deltaNumber)\n\t\t\t.attr('text-anchor', 'middle')\n\t\t\t.style('font-size', `${deltaFontSize(radius)}px`)\n\t\t\t.text((d) => `${numberFormatter(d)}${gaugeSymbol}`);\n\n\t\t// Add the caret for the delta number\n\t\tconst {\n\t\t\twidth: deltaNumberWidth,\n\t\t} = DOMUtils.getSVGElementSize(\n\t\t\tDOMUtils.appendOrSelect(svg, '.gauge-delta-number'),\n\t\t\t{ useBBox: true }\n\t\t);\n\n\t\t// check if delta arrow is disabled\n\t\tconst arrowEnabled = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'gauge',\n\t\t\t'deltaArrow',\n\t\t\t'enabled'\n\t\t);\n\n\t\tconst deltaArrow = deltaGroup\n\t\t\t.selectAll('svg.gauge-delta-arrow')\n\t\t\t.data(delta !== null && arrowEnabled ? [delta] : []);\n\n\t\tdeltaArrow\n\t\t\t.enter()\n\t\t\t.append('svg')\n\t\t\t.merge(deltaArrow)\n\t\t\t.attr('class', 'gauge-delta-arrow')\n\t\t\t.attr('x', -arrowSize(radius) - deltaNumberWidth / 2)\n\t\t\t.attr('y', -arrowSize(radius) / 2 - deltaFontSize(radius) * 0.35)\n\t\t\t.attr('width', arrowSize(radius))\n\t\t\t.attr('height', arrowSize(radius))\n\t\t\t.attr('viewBox', '0 0 16 16')\n\t\t\t/*\n\t\t\t * using .each() here to ensure that the below function runs\n\t\t\t * after svg.gauge-delta-arrow has been mounted onto the DOM\n\t\t\t */\n\t\t\t.each(function () {\n\t\t\t\tconst deltaArrowSelection = select(this);\n\n\t\t\t\t// Needed to correctly size SVG in Firefox\n\t\t\t\tDOMUtils.appendOrSelect(\n\t\t\t\t\tdeltaArrowSelection,\n\t\t\t\t\t'rect.gauge-delta-arrow-backdrop'\n\t\t\t\t)\n\t\t\t\t\t.attr('width', '16')\n\t\t\t\t\t.attr('height', '16')\n\t\t\t\t\t.attr('fill', 'none');\n\n\t\t\t\t// Draw the arrow with status\n\t\t\t\tconst status = Tools.getProperty(options, 'gauge', 'status');\n\t\t\t\tDOMUtils.appendOrSelect(\n\t\t\t\t\tdeltaArrowSelection,\n\t\t\t\t\t'polygon.gauge-delta-arrow'\n\t\t\t\t)\n\t\t\t\t\t.attr(\n\t\t\t\t\t\t'class',\n\t\t\t\t\t\tstatus !== null\n\t\t\t\t\t\t\t? `gauge-delta-arrow status--${status}`\n\t\t\t\t\t\t\t: ''\n\t\t\t\t\t)\n\t\t\t\t\t.attr('points', self.getArrow(delta));\n\t\t\t});\n\n\t\tdeltaArrow.exit().remove();\n\t\tdeltaNumber.exit().remove();\n\t}\n\n\tgetInnerRadius() {\n\t\t// Compute the outer radius needed\n\t\tconst radius = this.computeRadius();\n\t\tconst arcWidth = Tools.getProperty(\n\t\t\tthis.getOptions(),\n\t\t\t'gauge',\n\t\t\t'arcWidth'\n\t\t);\n\t\treturn radius - arcWidth;\n\t}\n\n\taddEventListeners() {\n\t\tconst self = this;\n\t\tthis.parent\n\t\t\t.selectAll('path.arc-foreground')\n\t\t\t.on('mouseover', function (event, datum) {\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(Events.Gauge.ARC_MOUSEOVER, {\n\t\t\t\t\tevent,\n\t\t\t\t\telement: select(this),\n\t\t\t\t\tdatum,\n\t\t\t\t});\n\t\t\t})\n\t\t\t.on('mousemove', function (event, datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(Events.Gauge.ARC_MOUSEMOVE, {\n\t\t\t\t\tevent,\n\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\tdatum,\n\t\t\t\t});\n\t\t\t})\n\t\t\t.on('click', function (event, datum) {\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(Events.Gauge.ARC_CLICK, {\n\t\t\t\t\tevent,\n\t\t\t\t\telement: select(this),\n\t\t\t\t\tdatum,\n\t\t\t\t});\n\t\t\t})\n\t\t\t.on('mouseout', function (event, datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(Events.Gauge.ARC_MOUSEOUT, {\n\t\t\t\t\tevent,\n\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\tdatum,\n\t\t\t\t});\n\t\t\t});\n\t}\n\n\t// Helper functions\n\tprotected computeRadius() {\n\t\tconst options = this.getOptions();\n\t\tconst arcType = Tools.getProperty(options, 'gauge', 'type');\n\n\t\tconst { width, height } = DOMUtils.getSVGElementSize(this.parent, {\n\t\t\tuseAttrs: true,\n\t\t});\n\t\tconst radius =\n\t\t\tarcType === GaugeTypes.SEMI\n\t\t\t\t? Math.min(width / 2, height)\n\t\t\t\t: Math.min(width / 2, height / 2);\n\n\t\treturn radius;\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"file":"gauge.js","sourceRoot":"","sources":["gauge.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { Component } from '../component';\nimport { DOMUtils } from '../../services';\nimport {\n\tRoles,\n\tEvents,\n\tGaugeTypes,\n\tArrowDirections,\n\tColorClassNameTypes,\n\tAlignments,\n\tRenderTypes,\n} from '../../interfaces';\nimport { Tools } from '../../tools';\n\n// D3 Imports\nimport { select } from 'd3-selection';\nimport { arc } from 'd3-shape';\n\n// arrow paths for delta\nconst ARROW_UP_PATH_STRING = '4,10 8,6 12,10';\nconst ARROW_DOWN_PATH_STRING = '12,6 8,10 4,6';\n\nexport class Gauge extends Component {\n\ttype = 'gauge';\n\trenderType = RenderTypes.SVG;\n\n\t// We need to store our arcs so that addEventListeners() can access them\n\tarc: any;\n\tbackgroundArc: any;\n\n\tgetValue(): number {\n\t\tconst data = this.model.getData();\n\t\tconst value = data.find((d) => d.group === 'value')?.value ?? null;\n\t\treturn value;\n\t}\n\n\tgetValueRatio(): number {\n\t\tconst value = Tools.clamp(this.getValue(), 0, 100);\n\t\treturn value / 100;\n\t}\n\n\tgetDelta(): number {\n\t\tconst data = this.model.getData();\n\t\tconst delta = data.find((d) => d.group === 'delta')?.value ?? null;\n\t\treturn delta;\n\t}\n\n\tgetArcRatio(): number {\n\t\tconst options = this.getOptions();\n\t\tconst type = Tools.getProperty(options, 'gauge', 'type');\n\t\tconst arcRatio = type === GaugeTypes.FULL ? 1 : 0.5;\n\t\treturn arcRatio;\n\t}\n\n\tgetArcSize(): number {\n\t\treturn this.getArcRatio() * Math.PI * 2;\n\t}\n\n\tgetStartAngle(): number {\n\t\tconst arcSize = this.getArcSize();\n\t\tif (arcSize === 2 * Math.PI) {\n\t\t\treturn 0;\n\t\t}\n\t\treturn -arcSize / 2;\n\t}\n\n\t// use provided arrow direction or default to using the delta\n\tgetArrow(delta): string {\n\t\tconst options = this.getOptions();\n\t\tconst arrowDirection = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'gauge',\n\t\t\t'deltaArrow',\n\t\t\t'direction'\n\t\t);\n\n\t\tswitch (arrowDirection) {\n\t\t\tcase ArrowDirections.UP:\n\t\t\t\treturn ARROW_UP_PATH_STRING;\n\t\t\tcase ArrowDirections.DOWN:\n\t\t\t\treturn ARROW_DOWN_PATH_STRING;\n\t\t\tdefault:\n\t\t\t\treturn delta > 0\n\t\t\t\t\t? ARROW_UP_PATH_STRING\n\t\t\t\t\t: ARROW_DOWN_PATH_STRING;\n\t\t}\n\t}\n\n\trender(animate = true) {\n\t\tconst svg = this.getComponentContainer()\n\t\t\t.attr('width', '100%')\n\t\t\t.attr('height', '100%');\n\t\tconst options = this.getOptions();\n\n\t\tconst value = this.getValue();\n\t\tconst valueRatio = this.getValueRatio();\n\t\tconst arcSize = this.getArcSize();\n\n\t\t// angles for drawing the gauge\n\t\tconst startAngle = this.getStartAngle();\n\t\tconst rotationAngle = valueRatio * arcSize;\n\t\tconst currentAngle = startAngle + rotationAngle;\n\t\tconst endAngle = startAngle + arcSize;\n\n\t\t// Compute the outer radius needed\n\t\tconst radius = this.computeRadius();\n\t\tconst innerRadius = this.getInnerRadius();\n\n\t\t// draw the container and arc\n\t\tthis.backgroundArc = arc()\n\t\t\t.innerRadius(innerRadius)\n\t\t\t.outerRadius(radius)\n\t\t\t.startAngle(currentAngle)\n\t\t\t.endAngle(endAngle);\n\n\t\tthis.arc = arc()\n\t\t\t.innerRadius(innerRadius)\n\t\t\t.outerRadius(radius)\n\t\t\t.startAngle(startAngle)\n\t\t\t.endAngle(currentAngle);\n\n\t\t// draw the container\n\t\tDOMUtils.appendOrSelect(svg, 'path.arc-background')\n\t\t\t.attr('d', this.backgroundArc)\n\t\t\t.attr('role', Roles.GROUP);\n\n\t\t// Add data arc\n\t\tconst arcValue = svg.selectAll('path.arc-foreground').data([value]);\n\t\tconst arcEnter = arcValue.enter().append('path');\n\n\t\tarcEnter\n\t\t\t.merge(arcValue)\n\t\t\t.attr(\n\t\t\t\t'class',\n\t\t\t\tthis.model.getColorClassName({\n\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.FILL],\n\t\t\t\t\tdataGroupName: 'value',\n\t\t\t\t\toriginalClassName: 'arc-foreground',\n\t\t\t\t})\n\t\t\t)\n\t\t\t.style('fill', (d) =>\n\t\t\t\tTools.getProperty(this.getOptions(), 'color', 'scale', 'value')\n\t\t\t)\n\t\t\t.attr('d', this.arc)\n\t\t\t// a11y\n\t\t\t.attr('role', Roles.GRAPHICS_SYMBOL)\n\t\t\t.attr('aria-roledescription', 'value')\n\t\t\t.attr('aria-label', (d) => d.value);\n\n\t\t// draw the value and delta to the center\n\t\tthis.drawValueNumber();\n\t\tthis.drawDelta();\n\n\t\tarcValue.exit().remove();\n\n\t\tconst alignment = Tools.getProperty(options, 'gauge', 'alignment');\n\n\t\tconst { width } = DOMUtils.getSVGElementSize(this.getParent(), {\n\t\t\tuseAttrs: true,\n\t\t});\n\n\t\t// Position gauge\n\t\tlet gaugeTranslateX = radius;\n\t\tif (alignment === Alignments.CENTER) {\n\t\t\tgaugeTranslateX = width / 2;\n\t\t} else if (alignment === Alignments.RIGHT) {\n\t\t\tgaugeTranslateX = width - radius;\n\t\t}\n\t\tsvg.attr('x', gaugeTranslateX).attr('y', radius);\n\n\t\t// Add event listeners\n\t\tthis.addEventListeners();\n\t}\n\n\t/**\n\t * draws the value number associated with the Gauge component in the center\n\t */\n\tdrawValueNumber() {\n\t\tconst svg = this.getComponentContainer();\n\t\tconst options = this.getOptions();\n\n\t\tconst arcType = Tools.getProperty(options, 'gauge', 'type');\n\t\tconst value = this.getValue();\n\t\tconst delta = this.getDelta();\n\n\t\t// Sizing and positions relative to the radius\n\t\tconst radius = this.computeRadius();\n\n\t\tconst valueFontSize = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'gauge',\n\t\t\t'valueFontSize'\n\t\t);\n\t\t// if there is a delta, use the size to center the numbers, otherwise center the valueNumber\n\t\tconst deltaFontSize = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'gauge',\n\t\t\t'deltaFontSize'\n\t\t);\n\n\t\tconst numberSpacing = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'gauge',\n\t\t\t'numberSpacing'\n\t\t);\n\n\t\tconst showPercentageSymbol = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'gauge',\n\t\t\t'showPercentageSymbol'\n\t\t);\n\n\t\t// circular gauge without delta should have valueNumber centered\n\t\tlet numbersYPosition = 0;\n\t\tif (arcType === GaugeTypes.FULL && !delta) {\n\t\t\tnumbersYPosition = deltaFontSize(radius);\n\t\t} else if (arcType === GaugeTypes.SEMI && delta) {\n\t\t\t// semi circular gauge we want the numbers aligned to the chart container\n\t\t\tnumbersYPosition = -(deltaFontSize(radius) + numberSpacing);\n\t\t}\n\n\t\t// Add the numbers at the center\n\t\tconst numbersGroup = DOMUtils.appendOrSelect(\n\t\t\tsvg,\n\t\t\t'g.gauge-numbers'\n\t\t).attr('transform', `translate(0, ${numbersYPosition})`);\n\n\t\tconst fontSize = valueFontSize(radius);\n\t\t// Add the big number\n\t\tconst valueNumberGroup = DOMUtils.appendOrSelect(\n\t\t\tnumbersGroup,\n\t\t\t'g.gauge-value-number'\n\t\t);\n\n\t\tconst numberFormatter = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'gauge',\n\t\t\t'numberFormatter'\n\t\t);\n\t\tconst valueNumber = valueNumberGroup\n\t\t\t.selectAll('text.gauge-value-number')\n\t\t\t.data([value]);\n\n\t\tvalueNumber\n\t\t\t.enter()\n\t\t\t.append('text')\n\t\t\t.attr('class', 'gauge-value-number')\n\t\t\t.merge(valueNumber)\n\t\t\t.style('font-size', `${fontSize}px`)\n\t\t\t.attr('text-anchor', 'middle')\n\t\t\t.text((d) => numberFormatter(d));\n\n\t\t// add the percentage symbol beside the valueNumber\n\t\tconst {\n\t\t\twidth: valueNumberWidth,\n\t\t} = DOMUtils.getSVGElementSize(\n\t\t\tDOMUtils.appendOrSelect(svg, 'text.gauge-value-number'),\n\t\t\t{ useBBox: true }\n\t\t);\n\n\t\tconst symbolFontSize = fontSize / 2;\n\t\tconst gaugeSymbol = showPercentageSymbol ? '%' : '';\n\t\tconst symbol = DOMUtils.appendOrSelect(\n\t\t\tvalueNumberGroup,\n\t\t\t'text.gauge-value-symbol'\n\t\t)\n\t\t\t.style('font-size', `${symbolFontSize}px`)\n\t\t\t.attr('x', valueNumberWidth / 2)\n\t\t\t.text(gaugeSymbol);\n\n\t\tconst {\n\t\t\twidth: symbolWidth,\n\t\t\theight: symbolHeight,\n\t\t} = DOMUtils.getSVGElementSize(symbol, { useBBox: true });\n\n\t\t// adjust the symbol to superscript using the bbox instead of the font-size cause\n\t\t// we want to align the actual character to the value number\n\t\tsymbol.attr('y', `-${symbolHeight / 2}px`);\n\n\t\t// move the value group depending on the symbol's drawn size\n\t\tvalueNumberGroup.attr('transform', `translate(-${symbolWidth / 2}, 0)`); // Optical centering for the presence of the smaller % symbol\n\t}\n\n\t/**\n\t * adds the delta number for the gauge\n\t */\n\tdrawDelta() {\n\t\tconst self = this;\n\t\tconst svg = this.getComponentContainer();\n\t\tconst options = this.getOptions();\n\t\tconst delta = this.getDelta();\n\n\t\t// Sizing and positions relative to the radius\n\t\tconst radius = this.computeRadius();\n\t\tconst deltaFontSize = delta\n\t\t\t? Tools.getProperty(options, 'gauge', 'deltaFontSize')\n\t\t\t: () => 0;\n\n\t\t// use numberFormatter here only if there is a delta supplied\n\t\tconst numberFormatter = delta\n\t\t\t? Tools.getProperty(options, 'gauge', 'numberFormatter')\n\t\t\t: () => null;\n\n\t\tconst arrowSize = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'gauge',\n\t\t\t'deltaArrow',\n\t\t\t'size'\n\t\t);\n\t\tconst numberSpacing = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'gauge',\n\t\t\t'numberSpacing'\n\t\t);\n\n\t\tconst showPercentageSymbol = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'gauge',\n\t\t\t'showPercentageSymbol'\n\t\t);\n\n\t\tconst numbersGroup = DOMUtils.appendOrSelect(svg, 'g.gauge-numbers');\n\n\t\t// Add the smaller number of the delta\n\t\tconst deltaGroup = DOMUtils.appendOrSelect(\n\t\t\tnumbersGroup,\n\t\t\t'g.gauge-delta'\n\t\t).attr(\n\t\t\t'transform',\n\t\t\t`translate(0, ${deltaFontSize(radius) + numberSpacing})`\n\t\t);\n\n\t\tconst deltaNumber = DOMUtils.appendOrSelect(\n\t\t\tdeltaGroup,\n\t\t\t'text.gauge-delta-number'\n\t\t);\n\t\tconst gaugeSymbol = showPercentageSymbol ? '%' : '';\n\n\t\tdeltaNumber.data(delta === null ? [] : [delta]);\n\n\t\tdeltaNumber\n\t\t\t.enter()\n\t\t\t.append('text')\n\t\t\t.classed('gauge-delta-number', true)\n\t\t\t.merge(deltaNumber)\n\t\t\t.attr('text-anchor', 'middle')\n\t\t\t.style('font-size', `${deltaFontSize(radius)}px`)\n\t\t\t.text((d) => `${numberFormatter(d)}${gaugeSymbol}`);\n\n\t\t// Add the caret for the delta number\n\t\tconst {\n\t\t\twidth: deltaNumberWidth,\n\t\t} = DOMUtils.getSVGElementSize(\n\t\t\tDOMUtils.appendOrSelect(svg, '.gauge-delta-number'),\n\t\t\t{ useBBox: true }\n\t\t);\n\n\t\t// check if delta arrow is disabled\n\t\tconst arrowEnabled = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'gauge',\n\t\t\t'deltaArrow',\n\t\t\t'enabled'\n\t\t);\n\n\t\tconst deltaArrow = deltaGroup\n\t\t\t.selectAll('svg.gauge-delta-arrow')\n\t\t\t.data(delta !== null && arrowEnabled ? [delta] : []);\n\n\t\tdeltaArrow\n\t\t\t.enter()\n\t\t\t.append('svg')\n\t\t\t.merge(deltaArrow)\n\t\t\t.attr('class', 'gauge-delta-arrow')\n\t\t\t.attr('x', -arrowSize(radius) - deltaNumberWidth / 2)\n\t\t\t.attr('y', -arrowSize(radius) / 2 - deltaFontSize(radius) * 0.35)\n\t\t\t.attr('width', arrowSize(radius))\n\t\t\t.attr('height', arrowSize(radius))\n\t\t\t.attr('viewBox', '0 0 16 16')\n\t\t\t/*\n\t\t\t * using .each() here to ensure that the below function runs\n\t\t\t * after svg.gauge-delta-arrow has been mounted onto the DOM\n\t\t\t */\n\t\t\t.each(function () {\n\t\t\t\tconst deltaArrowSelection = select(this);\n\n\t\t\t\t// Needed to correctly size SVG in Firefox\n\t\t\t\tDOMUtils.appendOrSelect(\n\t\t\t\t\tdeltaArrowSelection,\n\t\t\t\t\t'rect.gauge-delta-arrow-backdrop'\n\t\t\t\t)\n\t\t\t\t\t.attr('width', '16')\n\t\t\t\t\t.attr('height', '16')\n\t\t\t\t\t.attr('fill', 'none');\n\n\t\t\t\t// Draw the arrow with status\n\t\t\t\tconst status = Tools.getProperty(options, 'gauge', 'status');\n\t\t\t\tDOMUtils.appendOrSelect(\n\t\t\t\t\tdeltaArrowSelection,\n\t\t\t\t\t'polygon.gauge-delta-arrow'\n\t\t\t\t)\n\t\t\t\t\t.attr(\n\t\t\t\t\t\t'class',\n\t\t\t\t\t\tstatus !== null\n\t\t\t\t\t\t\t? `gauge-delta-arrow status--${status}`\n\t\t\t\t\t\t\t: ''\n\t\t\t\t\t)\n\t\t\t\t\t.attr('points', self.getArrow(delta));\n\t\t\t});\n\n\t\tdeltaArrow.exit().remove();\n\t\tdeltaNumber.exit().remove();\n\t}\n\n\tgetInnerRadius() {\n\t\t// Compute the outer radius needed\n\t\tconst radius = this.computeRadius();\n\t\tconst arcWidth = Tools.getProperty(\n\t\t\tthis.getOptions(),\n\t\t\t'gauge',\n\t\t\t'arcWidth'\n\t\t);\n\t\treturn radius - arcWidth;\n\t}\n\n\taddEventListeners() {\n\t\tconst self = this;\n\t\tthis.parent\n\t\t\t.selectAll('path.arc-foreground')\n\t\t\t.on('mouseover', function (event, datum) {\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(Events.Gauge.ARC_MOUSEOVER, {\n\t\t\t\t\tevent,\n\t\t\t\t\telement: select(this),\n\t\t\t\t\tdatum,\n\t\t\t\t});\n\t\t\t})\n\t\t\t.on('mousemove', function (event, datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(Events.Gauge.ARC_MOUSEMOVE, {\n\t\t\t\t\tevent,\n\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\tdatum,\n\t\t\t\t});\n\t\t\t})\n\t\t\t.on('click', function (event, datum) {\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(Events.Gauge.ARC_CLICK, {\n\t\t\t\t\tevent,\n\t\t\t\t\telement: select(this),\n\t\t\t\t\tdatum,\n\t\t\t\t});\n\t\t\t})\n\t\t\t.on('mouseout', function (event, datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(Events.Gauge.ARC_MOUSEOUT, {\n\t\t\t\t\tevent,\n\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\tdatum,\n\t\t\t\t});\n\t\t\t});\n\t}\n\n\t// Helper functions\n\tprotected computeRadius() {\n\t\tconst options = this.getOptions();\n\t\tconst arcType = Tools.getProperty(options, 'gauge', 'type');\n\n\t\tconst { width, height } = DOMUtils.getSVGElementSize(this.parent, {\n\t\t\tuseAttrs: true,\n\t\t});\n\t\tconst radius =\n\t\t\tarcType === GaugeTypes.SEMI\n\t\t\t\t? Math.min(width / 2, height)\n\t\t\t\t: Math.min(width / 2, height / 2);\n\n\t\treturn radius;\n\t}\n}\n"]}
|
package/components/graphs/pie.js
CHANGED
|
@@ -237,7 +237,7 @@ var Pie = /** @class */ (function (_super) {
|
|
|
237
237
|
: 'pie';
|
|
238
238
|
var alignment = Tools.getProperty(options, optionName, 'alignment');
|
|
239
239
|
var width = DOMUtils.getSVGElementSize(this.getParent(), {
|
|
240
|
-
|
|
240
|
+
useAttrs: true,
|
|
241
241
|
}).width;
|
|
242
242
|
// don't add padding for labels & callouts if they are disabled
|
|
243
243
|
var xOffset = renderLabels ? Configuration.pie.xOffset : 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pie.js","sourceRoot":"","sources":["pie.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { Component } from '../component';\nimport { DOMUtils } from '../../services';\nimport { Tools } from '../../tools';\nimport {\n\tCalloutDirections,\n\tRoles,\n\tEvents,\n\tAlignments,\n\tColorClassNameTypes,\n\tRenderTypes,\n} from '../../interfaces';\nimport * as Configuration from '../../configuration';\n\n// D3 Imports\nimport { select } from 'd3-selection';\nimport { arc, pie } from 'd3-shape';\nimport { interpolate } from 'd3-interpolate';\n\n// Pie slice tween function\nfunction arcTween(a, arcFunc) {\n\tconst i = interpolate(this._current, a);\n\n\treturn (t) => {\n\t\tthis._current = i(t);\n\t\treturn arcFunc(this._current);\n\t};\n}\n\nexport class Pie extends Component {\n\ttype = 'pie';\n\trenderType = RenderTypes.SVG;\n\n\t// We need to store our arcs\n\t// So that addEventListeners()\n\t// Can access them\n\tarc: any;\n\thoverArc: any;\n\n\tinit() {\n\t\tconst eventsFragment = this.services.events;\n\n\t\t// Highlight correct circle on legend item hovers\n\t\teventsFragment.addEventListener(\n\t\t\tEvents.Legend.ITEM_HOVER,\n\t\t\tthis.handleLegendOnHover\n\t\t);\n\n\t\t// Un-highlight circles on legend item mouseouts\n\t\teventsFragment.addEventListener(\n\t\t\tEvents.Legend.ITEM_MOUSEOUT,\n\t\t\tthis.handleLegendMouseOut\n\t\t);\n\t}\n\n\tgetInnerRadius() {\n\t\treturn Configuration.pie.innerRadius;\n\t}\n\n\trender(animate = true) {\n\t\tconst self = this;\n\t\tconst svg = this.getComponentContainer();\n\n\t\tconst options = this.getOptions();\n\t\tconst { groupMapsTo } = options.data;\n\t\tconst { valueMapsTo } = options.pie;\n\n\t\t// remove any slices that are valued at 0 because they dont need to be rendered and will create extra padding\n\t\tconst displayData = this.model\n\t\t\t.getDisplayData()\n\t\t\t.filter((data) => data[valueMapsTo] > 0);\n\n\t\t// Compute the outer radius needed\n\t\tconst radius = this.computeRadius();\n\n\t\tthis.arc = arc().innerRadius(this.getInnerRadius()).outerRadius(radius);\n\n\t\t// Set the hover arc radius\n\t\tthis.hoverArc = arc()\n\t\t\t.innerRadius(this.getInnerRadius())\n\t\t\t.outerRadius(radius + Configuration.pie.hoverArc.outerRadiusOffset);\n\n\t\t// Setup the pie layout\n\t\tconst pieLayout = pie()\n\t\t\t.value((d: any) => d[valueMapsTo])\n\t\t\t.sort(Tools.getProperty(options, 'pie', 'sortFunction'))\n\t\t\t.padAngle(Configuration.pie.padAngle);\n\n\t\t// Add data to pie layout\n\t\tconst pieLayoutData = pieLayout(displayData);\n\n\t\t// Update data on all slices\n\t\tconst slicesGroup = DOMUtils.appendOrSelect(svg, 'g.slices')\n\t\t\t.attr('role', Roles.GROUP)\n\t\t\t.attr('data-name', 'slices');\n\n\t\tconst paths = slicesGroup\n\t\t\t.selectAll('path.slice')\n\t\t\t.data(pieLayoutData, (d) => d.data[groupMapsTo]);\n\n\t\t// Remove slices that need to be exited\n\t\tpaths.exit().attr('opacity', 0).remove();\n\n\t\t// Add new slices that are being introduced\n\t\tconst enteringPaths = paths\n\t\t\t.enter()\n\t\t\t.append('path')\n\t\t\t.classed('slice', true)\n\t\t\t.attr('opacity', 0);\n\n\t\t// Update styles & position on existing and entering slices\n\t\tconst allPaths = enteringPaths\n\t\t\t.merge(paths)\n\t\t\t.attr('class', (d) =>\n\t\t\t\tthis.model.getColorClassName({\n\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.FILL],\n\t\t\t\t\tdataGroupName: d.data[groupMapsTo],\n\t\t\t\t\toriginalClassName: 'slice',\n\t\t\t\t})\n\t\t\t)\n\t\t\t.style('fill', (d) => self.model.getFillColor(d.data[groupMapsTo]))\n\t\t\t.attr('d', this.arc);\n\n\t\tallPaths\n\t\t\t.transition()\n\t\t\t.call((t) =>\n\t\t\t\tthis.services.transitions.setupTransition({\n\t\t\t\t\ttransition: t,\n\t\t\t\t\tname: 'pie_slice_enter_update',\n\t\t\t\t\tanimate,\n\t\t\t\t})\n\t\t\t)\n\t\t\t.attr('opacity', 1)\n\t\t\t// a11y\n\t\t\t.attr('role', Roles.GRAPHICS_SYMBOL)\n\t\t\t.attr('aria-roledescription', 'slice')\n\t\t\t.attr(\n\t\t\t\t'aria-label',\n\t\t\t\t(d) =>\n\t\t\t\t\t`${d[valueMapsTo]}, ${\n\t\t\t\t\t\tTools.convertValueToPercentage(\n\t\t\t\t\t\t\td.data[valueMapsTo],\n\t\t\t\t\t\t\tdisplayData,\n\t\t\t\t\t\t\tvalueMapsTo\n\t\t\t\t\t\t) + '%'\n\t\t\t\t\t}`\n\t\t\t)\n\t\t\t// Tween\n\t\t\t.attrTween('d', function (a) {\n\t\t\t\treturn arcTween.bind(this)(a, self.arc);\n\t\t\t});\n\n\t\t// Draw the slice labels\n\t\tconst renderLabels = options.pie.labels.enabled;\n\t\tconst labelData = renderLabels\n\t\t\t? pieLayoutData.filter((x) => x.data[valueMapsTo] > 0)\n\t\t\t: [];\n\t\tconst labelsGroup = DOMUtils.appendOrSelect(svg, 'g.labels')\n\t\t\t.attr('role', Roles.GROUP)\n\t\t\t.attr('data-name', 'labels');\n\n\t\tconst labels = labelsGroup\n\t\t\t.selectAll('text.pie-label')\n\t\t\t.data(labelData, (d: any) => d.data[groupMapsTo]);\n\n\t\t// Remove labels that are existing\n\t\tlabels.exit().attr('opacity', 0).remove();\n\n\t\t// Add labels that are being introduced\n\t\tconst enteringLabels = labels\n\t\t\t.enter()\n\t\t\t.append('text')\n\t\t\t.classed('pie-label', true);\n\n\t\t// Update styles & position on existing & entering labels\n\t\tconst calloutData = [];\n\t\tenteringLabels\n\t\t\t.merge(labels)\n\t\t\t.style('text-anchor', 'middle')\n\t\t\t.text((d) => {\n\t\t\t\tif (options.pie.labels.formatter) {\n\t\t\t\t\treturn options.pie.labels.formatter(d);\n\t\t\t\t}\n\n\t\t\t\treturn (\n\t\t\t\t\tTools.convertValueToPercentage(\n\t\t\t\t\t\td.data[valueMapsTo],\n\t\t\t\t\t\tdisplayData,\n\t\t\t\t\t\tvalueMapsTo\n\t\t\t\t\t) + '%'\n\t\t\t\t);\n\t\t\t})\n\t\t\t// Calculate dimensions in order to transform\n\t\t\t.datum(function (d) {\n\t\t\t\tconst marginedRadius = radius + 7;\n\n\t\t\t\tconst theta = (d.endAngle - d.startAngle) / 2 + d.startAngle;\n\t\t\t\tconst deg = (theta / Math.PI) * 180;\n\n\t\t\t\tconst textLength = this.getComputedTextLength();\n\t\t\t\td.textOffsetX = textLength / 2;\n\t\t\t\td.textOffsetY = deg > 90 && deg < 270 ? 10 : 0;\n\n\t\t\t\td.xPosition =\n\t\t\t\t\t(d.textOffsetX + marginedRadius) * Math.sin(theta);\n\t\t\t\td.yPosition =\n\t\t\t\t\t(d.textOffsetY + marginedRadius) * -Math.cos(theta);\n\n\t\t\t\treturn d;\n\t\t\t})\n\t\t\t.attr('transform', function (d, i) {\n\t\t\t\tconst totalSlices = labelData.length;\n\t\t\t\tconst sliceAngleDeg =\n\t\t\t\t\t(d.endAngle - d.startAngle) * (180 / Math.PI);\n\n\t\t\t\t// check if last 2 slices (or just last) are < the threshold\n\t\t\t\tif (i >= totalSlices - 2) {\n\t\t\t\t\tif (\n\t\t\t\t\t\tsliceAngleDeg < Configuration.pie.callout.minSliceDegree\n\t\t\t\t\t) {\n\t\t\t\t\t\tlet labelTranslateX, labelTranslateY;\n\t\t\t\t\t\tif (d.index === totalSlices - 1) {\n\t\t\t\t\t\t\tlabelTranslateX =\n\t\t\t\t\t\t\t\td.xPosition +\n\t\t\t\t\t\t\t\tConfiguration.pie.callout.offsetX +\n\t\t\t\t\t\t\t\tConfiguration.pie.callout.textMargin +\n\t\t\t\t\t\t\t\td.textOffsetX;\n\t\t\t\t\t\t\tlabelTranslateY =\n\t\t\t\t\t\t\t\td.yPosition - Configuration.pie.callout.offsetY;\n\n\t\t\t\t\t\t\t// Set direction of callout\n\t\t\t\t\t\t\td.direction = CalloutDirections.RIGHT;\n\t\t\t\t\t\t\tcalloutData.push(d);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tlabelTranslateX =\n\t\t\t\t\t\t\t\td.xPosition -\n\t\t\t\t\t\t\t\tConfiguration.pie.callout.offsetX -\n\t\t\t\t\t\t\t\td.textOffsetX -\n\t\t\t\t\t\t\t\tConfiguration.pie.callout.textMargin;\n\t\t\t\t\t\t\tlabelTranslateY =\n\t\t\t\t\t\t\t\td.yPosition - Configuration.pie.callout.offsetY;\n\n\t\t\t\t\t\t\t// Set direction of callout\n\t\t\t\t\t\t\td.direction = CalloutDirections.LEFT;\n\t\t\t\t\t\t\tcalloutData.push(d);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn `translate(${labelTranslateX}, ${labelTranslateY})`;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn `translate(${d.xPosition}, ${d.yPosition})`;\n\t\t\t});\n\n\t\t// Render pie label callouts\n\t\tthis.renderCallouts(calloutData);\n\n\t\tconst optionName = Tools.getProperty(options, 'donut')\n\t\t\t? 'donut'\n\t\t\t: 'pie';\n\t\tconst alignment = Tools.getProperty(options, optionName, 'alignment');\n\n\t\tconst { width } = DOMUtils.getSVGElementSize(this.getParent(), {\n\t\t\tuseAttr: true,\n\t\t});\n\n\t\t// don't add padding for labels & callouts if they are disabled\n\t\tconst xOffset = renderLabels ? Configuration.pie.xOffset : 0;\n\t\tconst yOffset = renderLabels ? Configuration.pie.yOffset : 0;\n\n\t\t// Position Pie\n\t\tlet pieTranslateX = radius + xOffset;\n\t\tif (alignment === Alignments.CENTER) {\n\t\t\tpieTranslateX = width / 2;\n\t\t} else if (alignment === Alignments.RIGHT) {\n\t\t\tpieTranslateX = width - radius - Configuration.pie.xOffset;\n\t\t}\n\n\t\tlet pieTranslateY = radius + yOffset;\n\t\tif (calloutData.length > 0) {\n\t\t\tpieTranslateY += Configuration.pie.yOffsetCallout;\n\t\t}\n\n\t\tsvg.attr('x', pieTranslateX + 7).attr('y', pieTranslateY);\n\n\t\t// Add event listeners\n\t\tthis.addEventListeners();\n\t}\n\n\trenderCallouts(calloutData: any[]) {\n\t\tconst svg = DOMUtils.appendOrSelect(\n\t\t\tthis.getComponentContainer(),\n\t\t\t'g.callouts'\n\t\t)\n\t\t\t.attr('role', Roles.GROUP)\n\t\t\t.attr('data-name', 'callouts');\n\n\t\t// Update data on callouts\n\t\tconst callouts = svg.selectAll('g.callout').data(calloutData);\n\n\t\tcallouts.exit().remove();\n\n\t\tconst enteringCallouts = callouts\n\t\t\t.enter()\n\t\t\t.append('g')\n\t\t\t.classed('callout', true)\n\t\t\t// a11y\n\t\t\t.attr('role', `${Roles.GRAPHICS_SYMBOL} ${Roles.GROUP}`)\n\t\t\t.attr('aria-roledescription', 'label callout');\n\n\t\t// Update data values for each callout\n\t\t// For the horizontal and vertical lines to use\n\t\tenteringCallouts.merge(callouts).datum(function (d) {\n\t\t\tconst { xPosition, yPosition, direction } = d;\n\n\t\t\tif (direction === CalloutDirections.RIGHT) {\n\t\t\t\td.startPos = {\n\t\t\t\t\tx: xPosition,\n\t\t\t\t\ty: yPosition + d.textOffsetY,\n\t\t\t\t};\n\n\t\t\t\t// end position for the callout line\n\t\t\t\td.endPos = {\n\t\t\t\t\tx: xPosition + Configuration.pie.callout.offsetX,\n\t\t\t\t\ty:\n\t\t\t\t\t\tyPosition -\n\t\t\t\t\t\tConfiguration.pie.callout.offsetY +\n\t\t\t\t\t\td.textOffsetY,\n\t\t\t\t};\n\n\t\t\t\t// the intersection point of the vertical and horizontal line\n\t\t\t\td.intersectPointX =\n\t\t\t\t\td.endPos.x - Configuration.pie.callout.horizontalLineLength;\n\t\t\t} else {\n\t\t\t\t// start position for the callout line\n\t\t\t\td.startPos = {\n\t\t\t\t\tx: xPosition,\n\t\t\t\t\ty: yPosition + d.textOffsetY,\n\t\t\t\t};\n\n\t\t\t\t// end position for the callout line should be bottom aligned to the title\n\t\t\t\td.endPos = {\n\t\t\t\t\tx: xPosition - Configuration.pie.callout.offsetX,\n\t\t\t\t\ty:\n\t\t\t\t\t\tyPosition -\n\t\t\t\t\t\tConfiguration.pie.callout.offsetY +\n\t\t\t\t\t\td.textOffsetY,\n\t\t\t\t};\n\n\t\t\t\t// the intersection point of the vertical and horizontal line\n\t\t\t\td.intersectPointX =\n\t\t\t\t\td.endPos.x + Configuration.pie.callout.horizontalLineLength;\n\t\t\t}\n\n\t\t\t// Store the necessary data in the DOM element\n\t\t\treturn d;\n\t\t});\n\n\t\t// draw vertical line\n\t\tconst enteringVerticalLines = enteringCallouts\n\t\t\t.append('line')\n\t\t\t.classed('vertical-line', true);\n\n\t\tenteringVerticalLines\n\t\t\t.merge(svg.selectAll('line.vertical-line'))\n\t\t\t.datum(function (d: any) {\n\t\t\t\treturn select(this.parentNode).datum();\n\t\t\t})\n\t\t\t.style('stroke-width', '1px')\n\t\t\t.attr('x1', (d) => d.startPos.x)\n\t\t\t.attr('y1', (d) => d.startPos.y)\n\t\t\t.attr('x2', (d) => d.intersectPointX)\n\t\t\t.attr('y2', (d) => d.endPos.y);\n\n\t\t// draw horizontal line\n\t\tconst enteringHorizontalLines = enteringCallouts\n\t\t\t.append('line')\n\t\t\t.classed('horizontal-line', true);\n\n\t\tenteringHorizontalLines\n\t\t\t.merge(svg.selectAll('line.horizontal-line'))\n\t\t\t.datum(function (d: any) {\n\t\t\t\treturn select(this.parentNode).datum();\n\t\t\t})\n\t\t\t.style('stroke-width', '1px')\n\t\t\t.attr('x1', (d) => d.intersectPointX)\n\t\t\t.attr('y1', (d) => d.endPos.y)\n\t\t\t.attr('x2', (d) => d.endPos.x)\n\t\t\t.attr('y2', (d) => d.endPos.y);\n\t}\n\n\t// Highlight elements that match the hovered legend item\n\thandleLegendOnHover = (event: CustomEvent) => {\n\t\tconst { hoveredElement } = event.detail;\n\t\tconst { groupMapsTo } = this.getOptions().data;\n\n\t\tthis.parent\n\t\t\t.selectAll('path.slice')\n\t\t\t.transition('legend-hover-bar')\n\t\t\t.call((t) =>\n\t\t\t\tthis.services.transitions.setupTransition({\n\t\t\t\t\ttransition: t,\n\t\t\t\t\tname: 'legend-hover-bar',\n\t\t\t\t})\n\t\t\t)\n\t\t\t.attr('opacity', (d) =>\n\t\t\t\td.data[groupMapsTo] !== hoveredElement.datum()['name'] ? 0.3 : 1\n\t\t\t);\n\t};\n\n\t// Un-highlight all elements\n\thandleLegendMouseOut = (event: CustomEvent) => {\n\t\tthis.parent\n\t\t\t.selectAll('path.slice')\n\t\t\t.transition('legend-mouseout-bar')\n\t\t\t.call((t) =>\n\t\t\t\tthis.services.transitions.setupTransition({\n\t\t\t\t\ttransition: t,\n\t\t\t\t\tname: 'legend-mouseout-bar',\n\t\t\t\t})\n\t\t\t)\n\t\t\t.attr('opacity', 1);\n\t};\n\n\taddEventListeners() {\n\t\tconst self = this;\n\t\tthis.parent\n\t\t\t.selectAll('path.slice')\n\t\t\t.on('mouseover', function (event, datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\n\t\t\t\thoveredElement\n\t\t\t\t\t.classed('hovered', true)\n\t\t\t\t\t.transition('pie_slice_mouseover')\n\t\t\t\t\t.call((t) =>\n\t\t\t\t\t\tself.services.transitions.setupTransition({\n\t\t\t\t\t\t\ttransition: t,\n\t\t\t\t\t\t\tname: 'pie_slice_mouseover',\n\t\t\t\t\t\t})\n\t\t\t\t\t)\n\t\t\t\t\t.attr('d', self.hoverArc);\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(Events.Pie.SLICE_MOUSEOVER, {\n\t\t\t\t\tevent,\n\t\t\t\t\telement: select(this),\n\t\t\t\t\tdatum,\n\t\t\t\t});\n\n\t\t\t\tconst { groupMapsTo } = self.getOptions().data;\n\t\t\t\tconst { valueMapsTo } = self.getOptions().pie;\n\t\t\t\t// Show tooltip\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.SHOW, {\n\t\t\t\t\tevent,\n\t\t\t\t\thoveredElement,\n\t\t\t\t\titems: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: datum.data[groupMapsTo],\n\t\t\t\t\t\t\tvalue: datum.data[valueMapsTo],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t});\n\t\t\t})\n\t\t\t.on('mousemove', function (event, datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(Events.Pie.SLICE_MOUSEMOVE, {\n\t\t\t\t\tevent,\n\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\tdatum,\n\t\t\t\t});\n\n\t\t\t\t// Show tooltip\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.MOVE, {\n\t\t\t\t\tevent,\n\t\t\t\t});\n\t\t\t})\n\t\t\t.on('click', function (event, datum) {\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(Events.Pie.SLICE_CLICK, {\n\t\t\t\t\tevent,\n\t\t\t\t\telement: select(this),\n\t\t\t\t\tdatum,\n\t\t\t\t});\n\t\t\t})\n\t\t\t.on('mouseout', function (event, datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\t\t\t\thoveredElement\n\t\t\t\t\t.classed('hovered', false)\n\t\t\t\t\t.transition('pie_slice_mouseout')\n\t\t\t\t\t.call((t) =>\n\t\t\t\t\t\tself.services.transitions.setupTransition({\n\t\t\t\t\t\t\ttransition: t,\n\t\t\t\t\t\t\tname: 'pie_slice_mouseout',\n\t\t\t\t\t\t})\n\t\t\t\t\t)\n\t\t\t\t\t.attr('d', self.arc);\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(Events.Pie.SLICE_MOUSEOUT, {\n\t\t\t\t\tevent,\n\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\tdatum,\n\t\t\t\t});\n\n\t\t\t\t// Hide tooltip\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.HIDE, {\n\t\t\t\t\thoveredElement,\n\t\t\t\t});\n\t\t\t});\n\t}\n\n\t// Helper functions\n\tprotected computeRadius() {\n\t\tconst { width, height } = DOMUtils.getSVGElementSize(this.parent, {\n\t\t\tuseAttrs: true,\n\t\t});\n\n\t\tconst options = this.getOptions();\n\t\tconst radius: number = Math.min(width, height) / 2;\n\t\tconst renderLabels = options.pie.labels.enabled;\n\n\t\treturn renderLabels ? radius + Configuration.pie.radiusOffset : radius;\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"file":"pie.js","sourceRoot":"","sources":["pie.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { Component } from '../component';\nimport { DOMUtils } from '../../services';\nimport { Tools } from '../../tools';\nimport {\n\tCalloutDirections,\n\tRoles,\n\tEvents,\n\tAlignments,\n\tColorClassNameTypes,\n\tRenderTypes,\n} from '../../interfaces';\nimport * as Configuration from '../../configuration';\n\n// D3 Imports\nimport { select } from 'd3-selection';\nimport { arc, pie } from 'd3-shape';\nimport { interpolate } from 'd3-interpolate';\n\n// Pie slice tween function\nfunction arcTween(a, arcFunc) {\n\tconst i = interpolate(this._current, a);\n\n\treturn (t) => {\n\t\tthis._current = i(t);\n\t\treturn arcFunc(this._current);\n\t};\n}\n\nexport class Pie extends Component {\n\ttype = 'pie';\n\trenderType = RenderTypes.SVG;\n\n\t// We need to store our arcs\n\t// So that addEventListeners()\n\t// Can access them\n\tarc: any;\n\thoverArc: any;\n\n\tinit() {\n\t\tconst eventsFragment = this.services.events;\n\n\t\t// Highlight correct circle on legend item hovers\n\t\teventsFragment.addEventListener(\n\t\t\tEvents.Legend.ITEM_HOVER,\n\t\t\tthis.handleLegendOnHover\n\t\t);\n\n\t\t// Un-highlight circles on legend item mouseouts\n\t\teventsFragment.addEventListener(\n\t\t\tEvents.Legend.ITEM_MOUSEOUT,\n\t\t\tthis.handleLegendMouseOut\n\t\t);\n\t}\n\n\tgetInnerRadius() {\n\t\treturn Configuration.pie.innerRadius;\n\t}\n\n\trender(animate = true) {\n\t\tconst self = this;\n\t\tconst svg = this.getComponentContainer();\n\n\t\tconst options = this.getOptions();\n\t\tconst { groupMapsTo } = options.data;\n\t\tconst { valueMapsTo } = options.pie;\n\n\t\t// remove any slices that are valued at 0 because they dont need to be rendered and will create extra padding\n\t\tconst displayData = this.model\n\t\t\t.getDisplayData()\n\t\t\t.filter((data) => data[valueMapsTo] > 0);\n\n\t\t// Compute the outer radius needed\n\t\tconst radius = this.computeRadius();\n\n\t\tthis.arc = arc().innerRadius(this.getInnerRadius()).outerRadius(radius);\n\n\t\t// Set the hover arc radius\n\t\tthis.hoverArc = arc()\n\t\t\t.innerRadius(this.getInnerRadius())\n\t\t\t.outerRadius(radius + Configuration.pie.hoverArc.outerRadiusOffset);\n\n\t\t// Setup the pie layout\n\t\tconst pieLayout = pie()\n\t\t\t.value((d: any) => d[valueMapsTo])\n\t\t\t.sort(Tools.getProperty(options, 'pie', 'sortFunction'))\n\t\t\t.padAngle(Configuration.pie.padAngle);\n\n\t\t// Add data to pie layout\n\t\tconst pieLayoutData = pieLayout(displayData);\n\n\t\t// Update data on all slices\n\t\tconst slicesGroup = DOMUtils.appendOrSelect(svg, 'g.slices')\n\t\t\t.attr('role', Roles.GROUP)\n\t\t\t.attr('data-name', 'slices');\n\n\t\tconst paths = slicesGroup\n\t\t\t.selectAll('path.slice')\n\t\t\t.data(pieLayoutData, (d) => d.data[groupMapsTo]);\n\n\t\t// Remove slices that need to be exited\n\t\tpaths.exit().attr('opacity', 0).remove();\n\n\t\t// Add new slices that are being introduced\n\t\tconst enteringPaths = paths\n\t\t\t.enter()\n\t\t\t.append('path')\n\t\t\t.classed('slice', true)\n\t\t\t.attr('opacity', 0);\n\n\t\t// Update styles & position on existing and entering slices\n\t\tconst allPaths = enteringPaths\n\t\t\t.merge(paths)\n\t\t\t.attr('class', (d) =>\n\t\t\t\tthis.model.getColorClassName({\n\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.FILL],\n\t\t\t\t\tdataGroupName: d.data[groupMapsTo],\n\t\t\t\t\toriginalClassName: 'slice',\n\t\t\t\t})\n\t\t\t)\n\t\t\t.style('fill', (d) => self.model.getFillColor(d.data[groupMapsTo]))\n\t\t\t.attr('d', this.arc);\n\n\t\tallPaths\n\t\t\t.transition()\n\t\t\t.call((t) =>\n\t\t\t\tthis.services.transitions.setupTransition({\n\t\t\t\t\ttransition: t,\n\t\t\t\t\tname: 'pie_slice_enter_update',\n\t\t\t\t\tanimate,\n\t\t\t\t})\n\t\t\t)\n\t\t\t.attr('opacity', 1)\n\t\t\t// a11y\n\t\t\t.attr('role', Roles.GRAPHICS_SYMBOL)\n\t\t\t.attr('aria-roledescription', 'slice')\n\t\t\t.attr(\n\t\t\t\t'aria-label',\n\t\t\t\t(d) =>\n\t\t\t\t\t`${d[valueMapsTo]}, ${\n\t\t\t\t\t\tTools.convertValueToPercentage(\n\t\t\t\t\t\t\td.data[valueMapsTo],\n\t\t\t\t\t\t\tdisplayData,\n\t\t\t\t\t\t\tvalueMapsTo\n\t\t\t\t\t\t) + '%'\n\t\t\t\t\t}`\n\t\t\t)\n\t\t\t// Tween\n\t\t\t.attrTween('d', function (a) {\n\t\t\t\treturn arcTween.bind(this)(a, self.arc);\n\t\t\t});\n\n\t\t// Draw the slice labels\n\t\tconst renderLabels = options.pie.labels.enabled;\n\t\tconst labelData = renderLabels\n\t\t\t? pieLayoutData.filter((x) => x.data[valueMapsTo] > 0)\n\t\t\t: [];\n\t\tconst labelsGroup = DOMUtils.appendOrSelect(svg, 'g.labels')\n\t\t\t.attr('role', Roles.GROUP)\n\t\t\t.attr('data-name', 'labels');\n\n\t\tconst labels = labelsGroup\n\t\t\t.selectAll('text.pie-label')\n\t\t\t.data(labelData, (d: any) => d.data[groupMapsTo]);\n\n\t\t// Remove labels that are existing\n\t\tlabels.exit().attr('opacity', 0).remove();\n\n\t\t// Add labels that are being introduced\n\t\tconst enteringLabels = labels\n\t\t\t.enter()\n\t\t\t.append('text')\n\t\t\t.classed('pie-label', true);\n\n\t\t// Update styles & position on existing & entering labels\n\t\tconst calloutData = [];\n\t\tenteringLabels\n\t\t\t.merge(labels)\n\t\t\t.style('text-anchor', 'middle')\n\t\t\t.text((d) => {\n\t\t\t\tif (options.pie.labels.formatter) {\n\t\t\t\t\treturn options.pie.labels.formatter(d);\n\t\t\t\t}\n\n\t\t\t\treturn (\n\t\t\t\t\tTools.convertValueToPercentage(\n\t\t\t\t\t\td.data[valueMapsTo],\n\t\t\t\t\t\tdisplayData,\n\t\t\t\t\t\tvalueMapsTo\n\t\t\t\t\t) + '%'\n\t\t\t\t);\n\t\t\t})\n\t\t\t// Calculate dimensions in order to transform\n\t\t\t.datum(function (d) {\n\t\t\t\tconst marginedRadius = radius + 7;\n\n\t\t\t\tconst theta = (d.endAngle - d.startAngle) / 2 + d.startAngle;\n\t\t\t\tconst deg = (theta / Math.PI) * 180;\n\n\t\t\t\tconst textLength = this.getComputedTextLength();\n\t\t\t\td.textOffsetX = textLength / 2;\n\t\t\t\td.textOffsetY = deg > 90 && deg < 270 ? 10 : 0;\n\n\t\t\t\td.xPosition =\n\t\t\t\t\t(d.textOffsetX + marginedRadius) * Math.sin(theta);\n\t\t\t\td.yPosition =\n\t\t\t\t\t(d.textOffsetY + marginedRadius) * -Math.cos(theta);\n\n\t\t\t\treturn d;\n\t\t\t})\n\t\t\t.attr('transform', function (d, i) {\n\t\t\t\tconst totalSlices = labelData.length;\n\t\t\t\tconst sliceAngleDeg =\n\t\t\t\t\t(d.endAngle - d.startAngle) * (180 / Math.PI);\n\n\t\t\t\t// check if last 2 slices (or just last) are < the threshold\n\t\t\t\tif (i >= totalSlices - 2) {\n\t\t\t\t\tif (\n\t\t\t\t\t\tsliceAngleDeg < Configuration.pie.callout.minSliceDegree\n\t\t\t\t\t) {\n\t\t\t\t\t\tlet labelTranslateX, labelTranslateY;\n\t\t\t\t\t\tif (d.index === totalSlices - 1) {\n\t\t\t\t\t\t\tlabelTranslateX =\n\t\t\t\t\t\t\t\td.xPosition +\n\t\t\t\t\t\t\t\tConfiguration.pie.callout.offsetX +\n\t\t\t\t\t\t\t\tConfiguration.pie.callout.textMargin +\n\t\t\t\t\t\t\t\td.textOffsetX;\n\t\t\t\t\t\t\tlabelTranslateY =\n\t\t\t\t\t\t\t\td.yPosition - Configuration.pie.callout.offsetY;\n\n\t\t\t\t\t\t\t// Set direction of callout\n\t\t\t\t\t\t\td.direction = CalloutDirections.RIGHT;\n\t\t\t\t\t\t\tcalloutData.push(d);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tlabelTranslateX =\n\t\t\t\t\t\t\t\td.xPosition -\n\t\t\t\t\t\t\t\tConfiguration.pie.callout.offsetX -\n\t\t\t\t\t\t\t\td.textOffsetX -\n\t\t\t\t\t\t\t\tConfiguration.pie.callout.textMargin;\n\t\t\t\t\t\t\tlabelTranslateY =\n\t\t\t\t\t\t\t\td.yPosition - Configuration.pie.callout.offsetY;\n\n\t\t\t\t\t\t\t// Set direction of callout\n\t\t\t\t\t\t\td.direction = CalloutDirections.LEFT;\n\t\t\t\t\t\t\tcalloutData.push(d);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn `translate(${labelTranslateX}, ${labelTranslateY})`;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn `translate(${d.xPosition}, ${d.yPosition})`;\n\t\t\t});\n\n\t\t// Render pie label callouts\n\t\tthis.renderCallouts(calloutData);\n\n\t\tconst optionName = Tools.getProperty(options, 'donut')\n\t\t\t? 'donut'\n\t\t\t: 'pie';\n\t\tconst alignment = Tools.getProperty(options, optionName, 'alignment');\n\n\t\tconst { width } = DOMUtils.getSVGElementSize(this.getParent(), {\n\t\t\tuseAttrs: true,\n\t\t});\n\n\t\t// don't add padding for labels & callouts if they are disabled\n\t\tconst xOffset = renderLabels ? Configuration.pie.xOffset : 0;\n\t\tconst yOffset = renderLabels ? Configuration.pie.yOffset : 0;\n\n\t\t// Position Pie\n\t\tlet pieTranslateX = radius + xOffset;\n\t\tif (alignment === Alignments.CENTER) {\n\t\t\tpieTranslateX = width / 2;\n\t\t} else if (alignment === Alignments.RIGHT) {\n\t\t\tpieTranslateX = width - radius - Configuration.pie.xOffset;\n\t\t}\n\n\t\tlet pieTranslateY = radius + yOffset;\n\t\tif (calloutData.length > 0) {\n\t\t\tpieTranslateY += Configuration.pie.yOffsetCallout;\n\t\t}\n\n\t\tsvg.attr('x', pieTranslateX + 7).attr('y', pieTranslateY);\n\n\t\t// Add event listeners\n\t\tthis.addEventListeners();\n\t}\n\n\trenderCallouts(calloutData: any[]) {\n\t\tconst svg = DOMUtils.appendOrSelect(\n\t\t\tthis.getComponentContainer(),\n\t\t\t'g.callouts'\n\t\t)\n\t\t\t.attr('role', Roles.GROUP)\n\t\t\t.attr('data-name', 'callouts');\n\n\t\t// Update data on callouts\n\t\tconst callouts = svg.selectAll('g.callout').data(calloutData);\n\n\t\tcallouts.exit().remove();\n\n\t\tconst enteringCallouts = callouts\n\t\t\t.enter()\n\t\t\t.append('g')\n\t\t\t.classed('callout', true)\n\t\t\t// a11y\n\t\t\t.attr('role', `${Roles.GRAPHICS_SYMBOL} ${Roles.GROUP}`)\n\t\t\t.attr('aria-roledescription', 'label callout');\n\n\t\t// Update data values for each callout\n\t\t// For the horizontal and vertical lines to use\n\t\tenteringCallouts.merge(callouts).datum(function (d) {\n\t\t\tconst { xPosition, yPosition, direction } = d;\n\n\t\t\tif (direction === CalloutDirections.RIGHT) {\n\t\t\t\td.startPos = {\n\t\t\t\t\tx: xPosition,\n\t\t\t\t\ty: yPosition + d.textOffsetY,\n\t\t\t\t};\n\n\t\t\t\t// end position for the callout line\n\t\t\t\td.endPos = {\n\t\t\t\t\tx: xPosition + Configuration.pie.callout.offsetX,\n\t\t\t\t\ty:\n\t\t\t\t\t\tyPosition -\n\t\t\t\t\t\tConfiguration.pie.callout.offsetY +\n\t\t\t\t\t\td.textOffsetY,\n\t\t\t\t};\n\n\t\t\t\t// the intersection point of the vertical and horizontal line\n\t\t\t\td.intersectPointX =\n\t\t\t\t\td.endPos.x - Configuration.pie.callout.horizontalLineLength;\n\t\t\t} else {\n\t\t\t\t// start position for the callout line\n\t\t\t\td.startPos = {\n\t\t\t\t\tx: xPosition,\n\t\t\t\t\ty: yPosition + d.textOffsetY,\n\t\t\t\t};\n\n\t\t\t\t// end position for the callout line should be bottom aligned to the title\n\t\t\t\td.endPos = {\n\t\t\t\t\tx: xPosition - Configuration.pie.callout.offsetX,\n\t\t\t\t\ty:\n\t\t\t\t\t\tyPosition -\n\t\t\t\t\t\tConfiguration.pie.callout.offsetY +\n\t\t\t\t\t\td.textOffsetY,\n\t\t\t\t};\n\n\t\t\t\t// the intersection point of the vertical and horizontal line\n\t\t\t\td.intersectPointX =\n\t\t\t\t\td.endPos.x + Configuration.pie.callout.horizontalLineLength;\n\t\t\t}\n\n\t\t\t// Store the necessary data in the DOM element\n\t\t\treturn d;\n\t\t});\n\n\t\t// draw vertical line\n\t\tconst enteringVerticalLines = enteringCallouts\n\t\t\t.append('line')\n\t\t\t.classed('vertical-line', true);\n\n\t\tenteringVerticalLines\n\t\t\t.merge(svg.selectAll('line.vertical-line'))\n\t\t\t.datum(function (d: any) {\n\t\t\t\treturn select(this.parentNode).datum();\n\t\t\t})\n\t\t\t.style('stroke-width', '1px')\n\t\t\t.attr('x1', (d) => d.startPos.x)\n\t\t\t.attr('y1', (d) => d.startPos.y)\n\t\t\t.attr('x2', (d) => d.intersectPointX)\n\t\t\t.attr('y2', (d) => d.endPos.y);\n\n\t\t// draw horizontal line\n\t\tconst enteringHorizontalLines = enteringCallouts\n\t\t\t.append('line')\n\t\t\t.classed('horizontal-line', true);\n\n\t\tenteringHorizontalLines\n\t\t\t.merge(svg.selectAll('line.horizontal-line'))\n\t\t\t.datum(function (d: any) {\n\t\t\t\treturn select(this.parentNode).datum();\n\t\t\t})\n\t\t\t.style('stroke-width', '1px')\n\t\t\t.attr('x1', (d) => d.intersectPointX)\n\t\t\t.attr('y1', (d) => d.endPos.y)\n\t\t\t.attr('x2', (d) => d.endPos.x)\n\t\t\t.attr('y2', (d) => d.endPos.y);\n\t}\n\n\t// Highlight elements that match the hovered legend item\n\thandleLegendOnHover = (event: CustomEvent) => {\n\t\tconst { hoveredElement } = event.detail;\n\t\tconst { groupMapsTo } = this.getOptions().data;\n\n\t\tthis.parent\n\t\t\t.selectAll('path.slice')\n\t\t\t.transition('legend-hover-bar')\n\t\t\t.call((t) =>\n\t\t\t\tthis.services.transitions.setupTransition({\n\t\t\t\t\ttransition: t,\n\t\t\t\t\tname: 'legend-hover-bar',\n\t\t\t\t})\n\t\t\t)\n\t\t\t.attr('opacity', (d) =>\n\t\t\t\td.data[groupMapsTo] !== hoveredElement.datum()['name'] ? 0.3 : 1\n\t\t\t);\n\t};\n\n\t// Un-highlight all elements\n\thandleLegendMouseOut = (event: CustomEvent) => {\n\t\tthis.parent\n\t\t\t.selectAll('path.slice')\n\t\t\t.transition('legend-mouseout-bar')\n\t\t\t.call((t) =>\n\t\t\t\tthis.services.transitions.setupTransition({\n\t\t\t\t\ttransition: t,\n\t\t\t\t\tname: 'legend-mouseout-bar',\n\t\t\t\t})\n\t\t\t)\n\t\t\t.attr('opacity', 1);\n\t};\n\n\taddEventListeners() {\n\t\tconst self = this;\n\t\tthis.parent\n\t\t\t.selectAll('path.slice')\n\t\t\t.on('mouseover', function (event, datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\n\t\t\t\thoveredElement\n\t\t\t\t\t.classed('hovered', true)\n\t\t\t\t\t.transition('pie_slice_mouseover')\n\t\t\t\t\t.call((t) =>\n\t\t\t\t\t\tself.services.transitions.setupTransition({\n\t\t\t\t\t\t\ttransition: t,\n\t\t\t\t\t\t\tname: 'pie_slice_mouseover',\n\t\t\t\t\t\t})\n\t\t\t\t\t)\n\t\t\t\t\t.attr('d', self.hoverArc);\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(Events.Pie.SLICE_MOUSEOVER, {\n\t\t\t\t\tevent,\n\t\t\t\t\telement: select(this),\n\t\t\t\t\tdatum,\n\t\t\t\t});\n\n\t\t\t\tconst { groupMapsTo } = self.getOptions().data;\n\t\t\t\tconst { valueMapsTo } = self.getOptions().pie;\n\t\t\t\t// Show tooltip\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.SHOW, {\n\t\t\t\t\tevent,\n\t\t\t\t\thoveredElement,\n\t\t\t\t\titems: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: datum.data[groupMapsTo],\n\t\t\t\t\t\t\tvalue: datum.data[valueMapsTo],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t});\n\t\t\t})\n\t\t\t.on('mousemove', function (event, datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(Events.Pie.SLICE_MOUSEMOVE, {\n\t\t\t\t\tevent,\n\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\tdatum,\n\t\t\t\t});\n\n\t\t\t\t// Show tooltip\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.MOVE, {\n\t\t\t\t\tevent,\n\t\t\t\t});\n\t\t\t})\n\t\t\t.on('click', function (event, datum) {\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(Events.Pie.SLICE_CLICK, {\n\t\t\t\t\tevent,\n\t\t\t\t\telement: select(this),\n\t\t\t\t\tdatum,\n\t\t\t\t});\n\t\t\t})\n\t\t\t.on('mouseout', function (event, datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\t\t\t\thoveredElement\n\t\t\t\t\t.classed('hovered', false)\n\t\t\t\t\t.transition('pie_slice_mouseout')\n\t\t\t\t\t.call((t) =>\n\t\t\t\t\t\tself.services.transitions.setupTransition({\n\t\t\t\t\t\t\ttransition: t,\n\t\t\t\t\t\t\tname: 'pie_slice_mouseout',\n\t\t\t\t\t\t})\n\t\t\t\t\t)\n\t\t\t\t\t.attr('d', self.arc);\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(Events.Pie.SLICE_MOUSEOUT, {\n\t\t\t\t\tevent,\n\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\tdatum,\n\t\t\t\t});\n\n\t\t\t\t// Hide tooltip\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.HIDE, {\n\t\t\t\t\thoveredElement,\n\t\t\t\t});\n\t\t\t});\n\t}\n\n\t// Helper functions\n\tprotected computeRadius() {\n\t\tconst { width, height } = DOMUtils.getSVGElementSize(this.parent, {\n\t\t\tuseAttrs: true,\n\t\t});\n\n\t\tconst options = this.getOptions();\n\t\tconst radius: number = Math.min(width, height) / 2;\n\t\tconst renderLabels = options.pie.labels.enabled;\n\n\t\treturn renderLabels ? radius + Configuration.pie.radiusOffset : radius;\n\t}\n}\n"]}
|
|
@@ -610,7 +610,9 @@ var Radar = /** @class */ (function (_super) {
|
|
|
610
610
|
var svgDimensions = DOMUtils.getSVGElementSize(svg, {
|
|
611
611
|
useBBox: true,
|
|
612
612
|
});
|
|
613
|
-
var width = DOMUtils.getSVGElementSize(parent, {
|
|
613
|
+
var width = DOMUtils.getSVGElementSize(parent, {
|
|
614
|
+
useAttrs: true,
|
|
615
|
+
}).width;
|
|
614
616
|
var alignmentOffset = 0;
|
|
615
617
|
if (alignment === Alignments.CENTER) {
|
|
616
618
|
alignmentOffset = Math.floor((width - svgDimensions.width) / 2);
|