@carbon/charts 0.52.4 → 0.53.3

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.
@@ -47,6 +47,9 @@ var Toolbar = /** @class */ (function (_super) {
47
47
  var isDataLoading = Tools.getProperty(this.getOptions(), 'data', 'loading');
48
48
  if (isDataLoading) {
49
49
  container.html('');
50
+ // Set overflow menu to null if data is loading
51
+ // This will render in a new overflow menu when data is done loading
52
+ this.overflowMenu = null;
50
53
  }
51
54
  else {
52
55
  if (!this.overflowMenu) {
@@ -140,6 +143,9 @@ var Toolbar = /** @class */ (function (_super) {
140
143
  };
141
144
  // show/hide overflow menu
142
145
  Toolbar.prototype.updateOverflowMenu = function (show) {
146
+ if (!this.overflowMenu) {
147
+ return;
148
+ }
143
149
  this.overflowMenu.classed('is-open', show);
144
150
  // update overflow button background
145
151
  if (this.overflowButton) {
@@ -1 +1 @@
1
- {"version":3,"file":"toolbar.js","sourceRoot":"","sources":["toolbar.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { Component } from '../component';\nimport { Events, RenderTypes, ToolbarControlTypes } from '../../interfaces';\nimport { Tools } from '../../tools';\n\n// D3 Imports\nimport { select } from 'd3-selection';\n\nexport class Toolbar extends Component {\n\ttype = 'toolbar';\n\trenderType = RenderTypes.HTML;\n\n\t// overflow menu button to control background color\n\toverflowButton: any;\n\n\t// div options list element\n\toverflowMenu: any;\n\n\tinit() {\n\t\tconst bodyOnClickHandler = () => this.updateOverflowMenu(false);\n\n\t\t// Grab the tooltip element\n\t\tthis.services.events.addEventListener(\n\t\t\tEvents.Toolbar.SHOW_OVERFLOW_MENU,\n\t\t\t() => {\n\t\t\t\tthis.renderOverflowMenu();\n\n\t\t\t\t// hide overflow menu if user clicks on somewhere in web page\n\t\t\t\tdocument.body.addEventListener('click', bodyOnClickHandler);\n\t\t\t}\n\t\t);\n\n\t\t// listen to hide overflow menu event to hide the overflow menu\n\t\tthis.services.events.addEventListener(\n\t\t\tEvents.Toolbar.HIDE_OVERFLOW_MENU,\n\t\t\t() => {\n\t\t\t\t// // hide overflow menu if user clicks on somewhere in web page\n\t\t\t\tdocument.body.removeEventListener('click', bodyOnClickHandler);\n\t\t\t}\n\t\t);\n\t}\n\n\trender(animate = true) {\n\t\tconst container = this.getComponentContainer().attr('role', 'toolbar');\n\n\t\tconst isDataLoading = Tools.getProperty(\n\t\t\tthis.getOptions(),\n\t\t\t'data',\n\t\t\t'loading'\n\t\t);\n\n\t\tif (isDataLoading) {\n\t\t\tcontainer.html('');\n\t\t} else {\n\t\t\tif (!this.overflowMenu) {\n\t\t\t\tthis.overflowMenu = container\n\t\t\t\t\t.append('div')\n\t\t\t\t\t.attr(\n\t\t\t\t\t\t'class',\n\t\t\t\t\t\t'bx--overflow-menu-options bx--overflow-menu--flip'\n\t\t\t\t\t)\n\t\t\t\t\t.attr('tabindex', -1)\n\t\t\t\t\t.attr('role', 'menu')\n\t\t\t\t\t.html(`<ul></ul>`);\n\t\t\t}\n\n\t\t\t// get the toolbar buttons\n\t\t\tconst {\n\t\t\t\tbuttonList,\n\t\t\t\toverflowMenuItemList,\n\t\t\t} = this.getControlConfigs();\n\n\t\t\t// overflow button is required only if overflow menu item list is valid\n\t\t\tif (!!overflowMenuItemList) {\n\t\t\t\tbuttonList.push(this.getOverflowButtonConfig());\n\t\t\t}\n\n\t\t\tconst toolbarControls = container\n\t\t\t\t.selectAll('div.toolbar-control')\n\t\t\t\t.data(buttonList, (button) => button.id);\n\n\t\t\ttoolbarControls.exit().remove();\n\n\t\t\tconst enteringToolbarControls = toolbarControls\n\t\t\t\t.enter()\n\t\t\t\t.append('div')\n\t\t\t\t.attr('class', 'toolbar-control bx--overflow-menu')\n\t\t\t\t.attr('role', 'button');\n\n\t\t\tconst self = this;\n\t\t\tconst allToolbarControls = enteringToolbarControls\n\t\t\t\t.merge(toolbarControls)\n\t\t\t\t.classed('disabled', (d) =>\n\t\t\t\t\td.shouldBeDisabled ? d.shouldBeDisabled() : false\n\t\t\t\t)\n\t\t\t\t.attr('aria-disabled', (d) =>\n\t\t\t\t\td.shouldBeDisabled ? d.shouldBeDisabled() : false\n\t\t\t\t)\n\t\t\t\t.attr('aria-label', (d) => d.title)\n\t\t\t\t.html(\n\t\t\t\t\t(d) => `\n\t\t\t<button\n\t\t\t\tclass=\"bx--overflow-menu__trigger\"\n\t\t\t\taria-haspopup=\"true\" aria-expanded=\"false\" id=\"${this.services.domUtils.generateElementIDString(\n\t\t\t\t\t`control-${d.id}`\n\t\t\t\t)}\" aria-label=\"${d.title}\">\n\t\t\t\t<svg focusable=\"false\" preserveAspectRatio=\"xMidYMid meet\" style=\"will-change: transform; width: ${\n\t\t\t\t\td.iconWidth !== undefined ? d.iconWidth : '20px'\n\t\t\t\t}; height: ${\n\t\t\t\t\t\td.iconWidth !== undefined ? d.iconHeight : '20px'\n\t\t\t\t\t}\" xmlns=\"http://www.w3.org/2000/svg\" class=\"bx--overflow-menu__icon\" viewBox=\"0 0 32 32\" aria-hidden=\"true\">\n\t\t\t\t\t${d.iconSVGContent}\n\t\t\t\t</svg>\n\t\t\t</button>`\n\t\t\t\t)\n\t\t\t\t.each(function (d, index) {\n\t\t\t\t\tselect(this)\n\t\t\t\t\t\t.select('button')\n\t\t\t\t\t\t.on(\n\t\t\t\t\t\t\t'click',\n\t\t\t\t\t\t\t!d.shouldBeDisabled() ? d.clickFunction : null\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.on('keydown', (event: KeyboardEvent) => {\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t(event.key && event.key === 'Enter') ||\n\t\t\t\t\t\t\t\tevent.key === ' '\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\t\t\t\td.clickFunction();\n\t\t\t\t\t\t\t} else if (event.key && event.key === 'ArrowLeft') {\n\t\t\t\t\t\t\t\tself.focusOnPreviousEnabledToolbarItem(index);\n\t\t\t\t\t\t\t} else if (\n\t\t\t\t\t\t\t\tevent.key &&\n\t\t\t\t\t\t\t\tevent.key === 'ArrowRight'\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tself.focusOnNextEnabledToolbarItem(index);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t});\n\n\t\t\tthis.overflowButton = this.getComponentContainer().select(\n\t\t\t\t`button.bx--overflow-menu__trigger#${this.services.domUtils.generateElementIDString(\n\t\t\t\t\t'control-toolbar-overflow-menu'\n\t\t\t\t)}`\n\t\t\t);\n\t\t}\n\t}\n\n\trenderOverflowMenu() {\n\t\tconst { overflowMenuItemList } = this.getControlConfigs();\n\n\t\tconst overflowMenuControls = this.overflowMenu\n\t\t\t.select('ul')\n\t\t\t.selectAll('li.bx--overflow-menu-options__option')\n\t\t\t.data(overflowMenuItemList, (button) =>\n\t\t\t\tTools.getProperty(button, 'id')\n\t\t\t);\n\n\t\toverflowMenuControls.exit().remove();\n\n\t\tconst enteringOverflowMenuControls = overflowMenuControls\n\t\t\t.enter()\n\t\t\t.append('li')\n\t\t\t.attr('id', (d) =>\n\t\t\t\tthis.services.domUtils.generateElementIDString(\n\t\t\t\t\t`control-${d.id}`\n\t\t\t\t)\n\t\t\t)\n\t\t\t.attr('class', 'bx--overflow-menu-options__option')\n\t\t\t.attr('role', 'menuitem');\n\n\t\tenteringOverflowMenuControls\n\t\t\t.append('button')\n\t\t\t.attr('class', 'bx--overflow-menu-options__btn');\n\n\t\tenteringOverflowMenuControls\n\t\t\t.merge(overflowMenuControls)\n\t\t\t.classed('bx--overflow-menu-options__option--disabled', (d) =>\n\t\t\t\td.shouldBeDisabled()\n\t\t\t)\n\t\t\t.attr('aria-disabled', (d) => d.shouldBeDisabled())\n\t\t\t.selectAll('button')\n\t\t\t.text((d) => d.text);\n\t}\n\n\tisOverflowMenuOpen() {\n\t\treturn this.overflowMenu.classed('is-open');\n\t}\n\n\t// show/hide overflow menu\n\tupdateOverflowMenu(show: boolean) {\n\t\tthis.overflowMenu.classed('is-open', show);\n\n\t\t// update overflow button background\n\t\tif (this.overflowButton) {\n\t\t\tthis.overflowButton.attr('aria-expanded', show);\n\t\t\tselect(this.overflowButton.node().parentNode).classed(\n\t\t\t\t'bx--overflow-menu--open',\n\t\t\t\tshow\n\t\t\t);\n\t\t}\n\n\t\tif (show) {\n\t\t\tthis.services.events.dispatchEvent(\n\t\t\t\tEvents.Toolbar.SHOW_OVERFLOW_MENU\n\t\t\t);\n\t\t} else {\n\t\t\tthis.services.events.dispatchEvent(\n\t\t\t\tEvents.Toolbar.HIDE_OVERFLOW_MENU\n\t\t\t);\n\t\t}\n\t}\n\n\t// Toolbar controllers\n\tfocusOnPreviousEnabledToolbarItem(currentItemIndex) {\n\t\tconst buttonList = this.getToolbarButtonItems();\n\t\tlet previousItemIndex = buttonList.length;\n\n\t\tfor (let i = currentItemIndex - 1; i >= 0; i--) {\n\t\t\tconst previousButtonItem = buttonList[i];\n\t\t\tif (!previousButtonItem.shouldBeDisabled()) {\n\t\t\t\tpreviousItemIndex = i;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t// only if previous enabled menu item found\n\t\tif (previousItemIndex < buttonList.length) {\n\t\t\tconst previousItemNode = select(\n\t\t\t\t`button#${this.services.domUtils.generateElementIDString(\n\t\t\t\t\t`control-${buttonList[previousItemIndex].id}`\n\t\t\t\t)}`\n\t\t\t).node();\n\t\t\tif ('focus' in previousItemNode) {\n\t\t\t\tpreviousItemNode.focus();\n\t\t\t}\n\t\t}\n\t}\n\n\tfocusOnNextEnabledToolbarItem(currentItemIndex) {\n\t\tconst buttonList = this.getToolbarButtonItems();\n\t\tlet nextItemIndex = -1;\n\n\t\tfor (let i = currentItemIndex + 1; i < buttonList.length; i++) {\n\t\t\tconst nextOverflowMenuItem = buttonList[i];\n\t\t\tif (!nextOverflowMenuItem.shouldBeDisabled()) {\n\t\t\t\tnextItemIndex = i;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t// only if next enabled menu item found\n\t\tif (nextItemIndex > -1) {\n\t\t\tconst nextItemNode = select(\n\t\t\t\t`button#${this.services.domUtils.generateElementIDString(\n\t\t\t\t\t`control-${buttonList[nextItemIndex].id}`\n\t\t\t\t)}`\n\t\t\t).node();\n\n\t\t\tif ('focus' in nextItemNode) {\n\t\t\t\tnextItemNode.focus();\n\t\t\t}\n\t\t}\n\t}\n\n\tfocusOnPreviousEnabledMenuItem(currentItemIndex) {\n\t\tconst overflowMenuItems = this.getOverflowMenuItems();\n\t\tlet previousItemIndex = overflowMenuItems.length;\n\n\t\tfor (let i = currentItemIndex - 1; i >= 0; i--) {\n\t\t\tconst previousOverflowMenuItem = overflowMenuItems[i];\n\t\t\tif (!previousOverflowMenuItem.shouldBeDisabled()) {\n\t\t\t\tpreviousItemIndex = i;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t// only if previous enabled menu item found\n\t\tif (previousItemIndex < overflowMenuItems.length) {\n\t\t\tconst previousItemNode = select(\n\t\t\t\t`#${this.services.domUtils.generateElementIDString(\n\t\t\t\t\t`control-${overflowMenuItems[previousItemIndex].id}`\n\t\t\t\t)} button`\n\t\t\t).node();\n\t\t\tif ('focus' in previousItemNode) {\n\t\t\t\tpreviousItemNode.focus();\n\t\t\t}\n\t\t}\n\t}\n\n\tfocusOnNextEnabledMenuItem(currentItemIndex) {\n\t\tconst overflowMenuItems = this.getOverflowMenuItems();\n\t\tlet nextItemIndex = -1;\n\n\t\tfor (let i = currentItemIndex + 1; i < overflowMenuItems.length; i++) {\n\t\t\tconst nextOverflowMenuItem = overflowMenuItems[i];\n\t\t\tif (!nextOverflowMenuItem.shouldBeDisabled()) {\n\t\t\t\tnextItemIndex = i;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t// only if next enabled menu item found\n\t\tif (nextItemIndex > -1) {\n\t\t\tconst nextItemNode = select(\n\t\t\t\t`#${this.services.domUtils.generateElementIDString(\n\t\t\t\t\t`control-${overflowMenuItems[nextItemIndex].id}`\n\t\t\t\t)} button`\n\t\t\t).node();\n\n\t\t\tif ('focus' in nextItemNode) {\n\t\t\t\tnextItemNode.focus();\n\t\t\t}\n\t\t}\n\t}\n\n\ttoggleOverflowMenu(event) {\n\t\tif (this.isOverflowMenuOpen()) {\n\t\t\t// hide overflow menu\n\t\t\tthis.updateOverflowMenu(false);\n\t\t} else {\n\t\t\t// show overflow menu\n\t\t\tthis.updateOverflowMenu(true);\n\n\t\t\t// setup overflow menu item event listener\n\t\t\tconst self = this;\n\t\t\tconst overflowMenuItems = this.getOverflowMenuItems();\n\t\t\toverflowMenuItems.forEach((menuItem, index) => {\n\t\t\t\tconst element = select(\n\t\t\t\t\t`#${this.services.domUtils.generateElementIDString(\n\t\t\t\t\t\t`control-${menuItem.id}`\n\t\t\t\t\t)}`\n\t\t\t\t);\n\t\t\t\tif (element !== null) {\n\t\t\t\t\telement.on('click', () => {\n\t\t\t\t\t\t// call the specified function\n\t\t\t\t\t\tmenuItem.clickFunction();\n\n\t\t\t\t\t\t// hide overflow menu\n\t\t\t\t\t\tself.updateOverflowMenu(false);\n\t\t\t\t\t});\n\n\t\t\t\t\telement.on('keydown', (keyEvent: KeyboardEvent) => {\n\t\t\t\t\t\tif (keyEvent && keyEvent.key === 'Enter') {\n\t\t\t\t\t\t\t// call the specified function\n\t\t\t\t\t\t\tmenuItem.clickFunction();\n\t\t\t\t\t\t} else if (keyEvent && keyEvent.key === 'ArrowUp') {\n\t\t\t\t\t\t\t// focus on previous menu item\n\t\t\t\t\t\t\tself.focusOnPreviousEnabledMenuItem(index);\n\t\t\t\t\t\t} else if (keyEvent && keyEvent.key === 'ArrowDown') {\n\t\t\t\t\t\t\t// focus on next menu item\n\t\t\t\t\t\t\tself.focusOnNextEnabledMenuItem(index);\n\t\t\t\t\t\t} else if (keyEvent && keyEvent.key === 'Escape') {\n\t\t\t\t\t\t\tself.updateOverflowMenu(false);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Not hide overflow menu by keyboard arrow up/down event\n\t\t\t\t\t\t// Prevent page from scrolling up/down\n\t\t\t\t\t\tkeyEvent.preventDefault();\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// default to focus on the first enabled menu item\n\t\t\tself.focusOnNextEnabledMenuItem(-1);\n\t\t}\n\n\t\t// propogation should not be stopped for keyboard events\n\t\tif (!!event) {\n\t\t\tevent.stopImmediatePropagation();\n\t\t}\n\t}\n\n\tgetControlConfigs() {\n\t\tconst numberOfIcons = Tools.getProperty(\n\t\t\tthis.getOptions(),\n\t\t\t'toolbar',\n\t\t\t'numberOfIcons'\n\t\t);\n\t\tconst controls = Tools.getProperty(\n\t\t\tthis.getOptions(),\n\t\t\t'toolbar',\n\t\t\t'controls'\n\t\t);\n\n\t\tconst controlList = [];\n\t\tconst overflowSpecificControls = [];\n\t\tcontrols.forEach((control) => {\n\t\t\tconst controlConfig = this.getControlConfigByType(control.type);\n\n\t\t\t// add to list if config is valid\n\t\t\tif (controlConfig) {\n\t\t\t\tcontrolConfig.text = control.text ? control.text : control.type;\n\n\t\t\t\tif (controlConfig.id.indexOf('toolbar-export') !== -1) {\n\t\t\t\t\toverflowSpecificControls.push(controlConfig);\n\t\t\t\t} else {\n\t\t\t\t\tcontrolList.push(controlConfig);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tif (\n\t\t\tcontrolList.length <= numberOfIcons &&\n\t\t\toverflowSpecificControls.length === 0\n\t\t) {\n\t\t\treturn {\n\t\t\t\tbuttonList: controlList,\n\t\t\t};\n\t\t}\n\n\t\treturn {\n\t\t\t// leave one button for overflow button\n\t\t\tbuttonList: controlList.splice(0, numberOfIcons - 1),\n\t\t\toverflowMenuItemList: controlList.concat(overflowSpecificControls),\n\t\t};\n\t}\n\n\tgetToolbarButtonItems() {\n\t\tconst { buttonList, overflowMenuItemList } = this.getControlConfigs();\n\t\tif (!!overflowMenuItemList) {\n\t\t\tbuttonList.push(this.getOverflowButtonConfig());\n\t\t}\n\t\tif (!!buttonList) {\n\t\t\treturn buttonList;\n\t\t}\n\n\t\treturn [];\n\t}\n\n\tgetOverflowMenuItems() {\n\t\tconst { overflowMenuItemList } = this.getControlConfigs();\n\t\tif (!!overflowMenuItemList) {\n\t\t\treturn overflowMenuItemList;\n\t\t} else {\n\t\t\treturn [];\n\t\t}\n\t}\n\n\t// special button config for overflow button\n\tgetOverflowButtonConfig() {\n\t\treturn {\n\t\t\tid: 'toolbar-overflow-menu',\n\t\t\ttitle: 'More options',\n\t\t\tshouldBeDisabled: () => false,\n\t\t\ticonSVGContent: `<circle cx=\"16\" cy=\"8\" r=\"2\"></circle>\n\t\t\t\t\t\t\t <circle cx=\"16\" cy=\"16\" r=\"2\"></circle>\n\t\t\t\t\t\t\t <circle cx=\"16\" cy=\"24\" r=\"2\"></circle>`,\n\t\t\tclickFunction: (event) => this.toggleOverflowMenu(event),\n\t\t};\n\t}\n\n\tgetControlConfigByType(controlType: ToolbarControlTypes) {\n\t\tconst isZoomBarEnabled =\n\t\t\tthis.services.zoom &&\n\t\t\tthis.services.zoom.isZoomBarEnabled() &&\n\t\t\t!this.services.zoom.isEmptyState();\n\n\t\tconst displayData = this.model.getDisplayData();\n\n\t\tlet controlConfig;\n\t\tswitch (controlType) {\n\t\t\tcase ToolbarControlTypes.ZOOM_IN:\n\t\t\t\tif (isZoomBarEnabled) {\n\t\t\t\t\tcontrolConfig = {\n\t\t\t\t\t\tid: 'toolbar-zoomIn',\n\t\t\t\t\t\ttitle: 'Zoom in',\n\t\t\t\t\t\tshouldBeDisabled: () =>\n\t\t\t\t\t\t\tthis.services.zoom.isMinZoomDomain(),\n\t\t\t\t\t\ticonSVGContent: this.getControlIconByType(controlType),\n\t\t\t\t\t\tclickFunction: () => this.services.zoom.zoomIn(),\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase ToolbarControlTypes.ZOOM_OUT:\n\t\t\t\tif (isZoomBarEnabled) {\n\t\t\t\t\tcontrolConfig = {\n\t\t\t\t\t\tid: 'toolbar-zoomOut',\n\t\t\t\t\t\ttitle: 'Zoom out',\n\t\t\t\t\t\tshouldBeDisabled: () =>\n\t\t\t\t\t\t\tthis.services.zoom.isMaxZoomDomain(),\n\t\t\t\t\t\ticonSVGContent: this.getControlIconByType(controlType),\n\t\t\t\t\t\tclickFunction: () => this.services.zoom.zoomOut(),\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase ToolbarControlTypes.RESET_ZOOM:\n\t\t\t\tif (isZoomBarEnabled) {\n\t\t\t\t\tcontrolConfig = {\n\t\t\t\t\t\tid: 'toolbar-resetZoom',\n\t\t\t\t\t\ttitle: 'Reset zoom',\n\t\t\t\t\t\tshouldBeDisabled: () =>\n\t\t\t\t\t\t\tthis.services.zoom.isMaxZoomDomain(),\n\t\t\t\t\t\ticonSVGContent: this.getControlIconByType(controlType),\n\t\t\t\t\t\tclickFunction: () =>\n\t\t\t\t\t\t\tthis.services.zoom.resetZoomDomain(),\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase ToolbarControlTypes.MAKE_FULLSCREEN:\n\t\t\t\tcontrolConfig = {\n\t\t\t\t\tid: 'toolbar-makefullscreen',\n\t\t\t\t\ttitle: 'Make fullscreen',\n\t\t\t\t\ticonSVGContent: this.getControlIconByType(controlType),\n\t\t\t\t\ticonWidth: '15px',\n\t\t\t\t\ticonHight: '15px',\n\t\t\t\t\tshouldBeDisabled: () => false,\n\t\t\t\t\tclickFunction: () => {\n\t\t\t\t\t\tthis.services.domUtils.toggleFullscreen();\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t\tcase ToolbarControlTypes.SHOW_AS_DATATABLE:\n\t\t\t\tcontrolConfig = {\n\t\t\t\t\tid: 'toolbar-showasdatatable',\n\t\t\t\t\ttitle: 'Show as table',\n\t\t\t\t\ticonSVGContent: this.getControlIconByType(controlType),\n\t\t\t\t\tshouldBeDisabled: () => displayData.length === 0,\n\t\t\t\t\tclickFunction: () =>\n\t\t\t\t\t\tthis.services.events.dispatchEvent(Events.Modal.SHOW),\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t\tcase ToolbarControlTypes.EXPORT_CSV:\n\t\t\t\tcontrolConfig = {\n\t\t\t\t\tid: 'toolbar-export-CSV',\n\t\t\t\t\ttitle: 'Export as CSV',\n\t\t\t\t\tshouldBeDisabled: () => false,\n\t\t\t\t\ticonSVGContent: this.getControlIconByType(controlType),\n\t\t\t\t\tclickFunction: () => this.model.exportToCSV(),\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t\tcase ToolbarControlTypes.EXPORT_PNG:\n\t\t\t\tcontrolConfig = {\n\t\t\t\t\tid: 'toolbar-export-PNG',\n\t\t\t\t\ttitle: 'Export as PNG',\n\t\t\t\t\tshouldBeDisabled: () => false,\n\t\t\t\t\ticonSVGContent: this.getControlIconByType(controlType),\n\t\t\t\t\tclickFunction: () => this.services.domUtils.exportToPNG(),\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t\tcase ToolbarControlTypes.EXPORT_JPG:\n\t\t\t\tcontrolConfig = {\n\t\t\t\t\tid: 'toolbar-export-JPG',\n\t\t\t\t\ttitle: 'Export as JPG',\n\t\t\t\t\tshouldBeDisabled: () => false,\n\t\t\t\t\ticonSVGContent: this.getControlIconByType(controlType),\n\t\t\t\t\tclickFunction: () => this.services.domUtils.exportToJPG(),\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t\t// add more toolbar control configuration here\n\n\t\t\tdefault:\n\t\t\t\tthrow Error(\n\t\t\t\t\t'Not supported toolbar control type: ' + controlType\n\t\t\t\t);\n\t\t}\n\t\treturn controlConfig;\n\t}\n\n\tgetControlIconByType(controlType: ToolbarControlTypes) {\n\t\tswitch (controlType) {\n\t\t\tcase ToolbarControlTypes.ZOOM_IN:\n\t\t\t\treturn `<polygon points=\"19 13 15 13 15 9 13 9 13 13 9 13 9 15 13 15 13 19 15 19 15 15 19 15 19 13\"/>\n\t\t\t\t\t\t<path d=\"M22.45,21A10.87,10.87,0,0,0,25,14,11,11,0,1,0,14,25a10.87,10.87,0,0,0,7-2.55L28.59,30,30,28.59ZM14,23a9,9,0,1,1,9-9A9,9,0,0,1,14,23Z\"/>`;\n\t\t\tcase ToolbarControlTypes.ZOOM_OUT:\n\t\t\t\treturn `<rect x=\"9\" y=\"13\" width=\"10\" height=\"2\"/>\n\t\t\t\t\t\t<path d=\"M22.45,21A10.87,10.87,0,0,0,25,14,11,11,0,1,0,14,25a10.87,10.87,0,0,0,7-2.55L28.59,30,30,28.59ZM14,23a9,9,0,1,1,9-9A9,9,0,0,1,14,23Z\"/>`;\n\t\t\tcase ToolbarControlTypes.RESET_ZOOM:\n\t\t\t\treturn `<path d=\"M22.4478,21A10.855,10.855,0,0,0,25,14,10.99,10.99,0,0,0,6,6.4658V2H4v8h8V8H7.332a8.9768,8.9768,0,1,1-2.1,8H3.1912A11.0118,11.0118,0,0,0,14,25a10.855,10.855,0,0,0,7-2.5522L28.5859,30,30,28.5859Z\"/>`;\n\t\t\tcase ToolbarControlTypes.MAKE_FULLSCREEN:\n\t\t\t\treturn `<polygon points=\"21 2 21 4 26.59 4 17 13.58 18.41 15 28 5.41 28 11 30 11 30 2 21 2\"/><polygon points=\"15 18.42 13.59 17 4 26.59 4 21 2 21 2 30 11 30 11 28 5.41 28 15 18.42\"/>`;\n\t\t\tcase ToolbarControlTypes.SHOW_AS_DATATABLE:\n\t\t\t\treturn `<rect x=\"4\" y=\"6\" width=\"18\" height=\"2\"/><rect x=\"4\" y=\"12\" width=\"18\" height=\"2\"/><rect x=\"4\" y=\"18\" width=\"18\" height=\"2\"/><rect x=\"4\" y=\"24\" width=\"18\" height=\"2\"/><rect x=\"26\" y=\"6\" width=\"2\" height=\"2\"/><rect x=\"26\" y=\"12\" width=\"2\" height=\"2\"/><rect x=\"26\" y=\"18\" width=\"2\" height=\"2\"/><rect x=\"26\" y=\"24\" width=\"2\" height=\"2\"/>`;\n\t\t\tcase ToolbarControlTypes.EXPORT_CSV:\n\t\t\t\treturn `<path d=\"M22.4478,21A10.855,10.855,0,0,0,25,14,10.99,10.99,0,0,0,6,6.4658V2H4v8h8V8H7.332a8.9768,8.9768,0,1,1-2.1,8H3.1912A11.0118,11.0118,0,0,0,14,25a10.855,10.855,0,0,0,7-2.5522L28.5859,30,30,28.5859Z\"/>`;\n\t\t\tcase ToolbarControlTypes.EXPORT_JPG:\n\t\t\t\treturn `<path d=\"M22.4478,21A10.855,10.855,0,0,0,25,14,10.99,10.99,0,0,0,6,6.4658V2H4v8h8V8H7.332a8.9768,8.9768,0,1,1-2.1,8H3.1912A11.0118,11.0118,0,0,0,14,25a10.855,10.855,0,0,0,7-2.5522L28.5859,30,30,28.5859Z\"/>`;\n\t\t\tcase ToolbarControlTypes.EXPORT_PNG:\n\t\t\t\treturn `<path d=\"M22.4478,21A10.855,10.855,0,0,0,25,14,10.99,10.99,0,0,0,6,6.4658V2H4v8h8V8H7.332a8.9768,8.9768,0,1,1-2.1,8H3.1912A11.0118,11.0118,0,0,0,14,25a10.855,10.855,0,0,0,7-2.5522L28.5859,30,30,28.5859Z\"/>`; // add more icons here\n\t\t\t// svg icon must be with 32x32 viewBox\n\n\t\t\tdefault:\n\t\t\t\tthrow Error(\n\t\t\t\t\t'Not supported toolbar control type: ' + controlType\n\t\t\t\t);\n\t\t}\n\t}\n}\n"]}
1
+ {"version":3,"file":"toolbar.js","sourceRoot":"","sources":["toolbar.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { Component } from '../component';\nimport { Events, RenderTypes, ToolbarControlTypes } from '../../interfaces';\nimport { Tools } from '../../tools';\n\n// D3 Imports\nimport { select } from 'd3-selection';\n\nexport class Toolbar extends Component {\n\ttype = 'toolbar';\n\trenderType = RenderTypes.HTML;\n\n\t// overflow menu button to control background color\n\toverflowButton: any;\n\n\t// div options list element\n\toverflowMenu: any;\n\n\tinit() {\n\t\tconst bodyOnClickHandler = () => this.updateOverflowMenu(false);\n\n\t\t// Grab the tooltip element\n\t\tthis.services.events.addEventListener(\n\t\t\tEvents.Toolbar.SHOW_OVERFLOW_MENU,\n\t\t\t() => {\n\t\t\t\tthis.renderOverflowMenu();\n\n\t\t\t\t// hide overflow menu if user clicks on somewhere in web page\n\t\t\t\tdocument.body.addEventListener('click', bodyOnClickHandler);\n\t\t\t}\n\t\t);\n\n\t\t// listen to hide overflow menu event to hide the overflow menu\n\t\tthis.services.events.addEventListener(\n\t\t\tEvents.Toolbar.HIDE_OVERFLOW_MENU,\n\t\t\t() => {\n\t\t\t\t// // hide overflow menu if user clicks on somewhere in web page\n\t\t\t\tdocument.body.removeEventListener('click', bodyOnClickHandler);\n\t\t\t}\n\t\t);\n\t}\n\n\trender(animate = true) {\n\t\tconst container = this.getComponentContainer().attr('role', 'toolbar');\n\n\t\tconst isDataLoading = Tools.getProperty(\n\t\t\tthis.getOptions(),\n\t\t\t'data',\n\t\t\t'loading'\n\t\t);\n\n\t\tif (isDataLoading) {\n\t\t\tcontainer.html('');\n\t\t\t// Set overflow menu to null if data is loading\n\t\t\t// This will render in a new overflow menu when data is done loading\n\t\t\tthis.overflowMenu = null;\n\t\t} else {\n\t\t\tif (!this.overflowMenu) {\n\t\t\t\tthis.overflowMenu = container\n\t\t\t\t\t.append('div')\n\t\t\t\t\t.attr(\n\t\t\t\t\t\t'class',\n\t\t\t\t\t\t'bx--overflow-menu-options bx--overflow-menu--flip'\n\t\t\t\t\t)\n\t\t\t\t\t.attr('tabindex', -1)\n\t\t\t\t\t.attr('role', 'menu')\n\t\t\t\t\t.html(`<ul></ul>`);\n\t\t\t}\n\n\t\t\t// get the toolbar buttons\n\t\t\tconst {\n\t\t\t\tbuttonList,\n\t\t\t\toverflowMenuItemList,\n\t\t\t} = this.getControlConfigs();\n\n\t\t\t// overflow button is required only if overflow menu item list is valid\n\t\t\tif (!!overflowMenuItemList) {\n\t\t\t\tbuttonList.push(this.getOverflowButtonConfig());\n\t\t\t}\n\n\t\t\tconst toolbarControls = container\n\t\t\t\t.selectAll('div.toolbar-control')\n\t\t\t\t.data(buttonList, (button) => button.id);\n\n\t\t\ttoolbarControls.exit().remove();\n\n\t\t\tconst enteringToolbarControls = toolbarControls\n\t\t\t\t.enter()\n\t\t\t\t.append('div')\n\t\t\t\t.attr('class', 'toolbar-control bx--overflow-menu')\n\t\t\t\t.attr('role', 'button');\n\n\t\t\tconst self = this;\n\t\t\tconst allToolbarControls = enteringToolbarControls\n\t\t\t\t.merge(toolbarControls)\n\t\t\t\t.classed('disabled', (d) =>\n\t\t\t\t\td.shouldBeDisabled ? d.shouldBeDisabled() : false\n\t\t\t\t)\n\t\t\t\t.attr('aria-disabled', (d) =>\n\t\t\t\t\td.shouldBeDisabled ? d.shouldBeDisabled() : false\n\t\t\t\t)\n\t\t\t\t.attr('aria-label', (d) => d.title)\n\t\t\t\t.html(\n\t\t\t\t\t(d) => `\n\t\t\t<button\n\t\t\t\tclass=\"bx--overflow-menu__trigger\"\n\t\t\t\taria-haspopup=\"true\" aria-expanded=\"false\" id=\"${this.services.domUtils.generateElementIDString(\n\t\t\t\t\t`control-${d.id}`\n\t\t\t\t)}\" aria-label=\"${d.title}\">\n\t\t\t\t<svg focusable=\"false\" preserveAspectRatio=\"xMidYMid meet\" style=\"will-change: transform; width: ${\n\t\t\t\t\td.iconWidth !== undefined ? d.iconWidth : '20px'\n\t\t\t\t}; height: ${\n\t\t\t\t\t\td.iconWidth !== undefined ? d.iconHeight : '20px'\n\t\t\t\t\t}\" xmlns=\"http://www.w3.org/2000/svg\" class=\"bx--overflow-menu__icon\" viewBox=\"0 0 32 32\" aria-hidden=\"true\">\n\t\t\t\t\t${d.iconSVGContent}\n\t\t\t\t</svg>\n\t\t\t</button>`\n\t\t\t\t)\n\t\t\t\t.each(function (d, index) {\n\t\t\t\t\tselect(this)\n\t\t\t\t\t\t.select('button')\n\t\t\t\t\t\t.on(\n\t\t\t\t\t\t\t'click',\n\t\t\t\t\t\t\t!d.shouldBeDisabled() ? d.clickFunction : null\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.on('keydown', (event: KeyboardEvent) => {\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t(event.key && event.key === 'Enter') ||\n\t\t\t\t\t\t\t\tevent.key === ' '\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\t\t\t\td.clickFunction();\n\t\t\t\t\t\t\t} else if (event.key && event.key === 'ArrowLeft') {\n\t\t\t\t\t\t\t\tself.focusOnPreviousEnabledToolbarItem(index);\n\t\t\t\t\t\t\t} else if (\n\t\t\t\t\t\t\t\tevent.key &&\n\t\t\t\t\t\t\t\tevent.key === 'ArrowRight'\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tself.focusOnNextEnabledToolbarItem(index);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t});\n\n\t\t\tthis.overflowButton = this.getComponentContainer().select(\n\t\t\t\t`button.bx--overflow-menu__trigger#${this.services.domUtils.generateElementIDString(\n\t\t\t\t\t'control-toolbar-overflow-menu'\n\t\t\t\t)}`\n\t\t\t);\n\t\t}\n\t}\n\n\trenderOverflowMenu() {\n\t\tconst { overflowMenuItemList } = this.getControlConfigs();\n\n\t\tconst overflowMenuControls = this.overflowMenu\n\t\t\t.select('ul')\n\t\t\t.selectAll('li.bx--overflow-menu-options__option')\n\t\t\t.data(overflowMenuItemList, (button) =>\n\t\t\t\tTools.getProperty(button, 'id')\n\t\t\t);\n\n\t\toverflowMenuControls.exit().remove();\n\n\t\tconst enteringOverflowMenuControls = overflowMenuControls\n\t\t\t.enter()\n\t\t\t.append('li')\n\t\t\t.attr('id', (d) =>\n\t\t\t\tthis.services.domUtils.generateElementIDString(\n\t\t\t\t\t`control-${d.id}`\n\t\t\t\t)\n\t\t\t)\n\t\t\t.attr('class', 'bx--overflow-menu-options__option')\n\t\t\t.attr('role', 'menuitem');\n\n\t\tenteringOverflowMenuControls\n\t\t\t.append('button')\n\t\t\t.attr('class', 'bx--overflow-menu-options__btn');\n\n\t\tenteringOverflowMenuControls\n\t\t\t.merge(overflowMenuControls)\n\t\t\t.classed('bx--overflow-menu-options__option--disabled', (d) =>\n\t\t\t\td.shouldBeDisabled()\n\t\t\t)\n\t\t\t.attr('aria-disabled', (d) => d.shouldBeDisabled())\n\t\t\t.selectAll('button')\n\t\t\t.text((d) => d.text);\n\t}\n\n\tisOverflowMenuOpen() {\n\t\treturn this.overflowMenu.classed('is-open');\n\t}\n\n\t// show/hide overflow menu\n\tupdateOverflowMenu(show: boolean) {\n\t\tif (!this.overflowMenu) {\n\t\t\treturn;\n\t\t}\n\t\tthis.overflowMenu.classed('is-open', show);\n\n\t\t// update overflow button background\n\t\tif (this.overflowButton) {\n\t\t\tthis.overflowButton.attr('aria-expanded', show);\n\t\t\tselect(this.overflowButton.node().parentNode).classed(\n\t\t\t\t'bx--overflow-menu--open',\n\t\t\t\tshow\n\t\t\t);\n\t\t}\n\n\t\tif (show) {\n\t\t\tthis.services.events.dispatchEvent(\n\t\t\t\tEvents.Toolbar.SHOW_OVERFLOW_MENU\n\t\t\t);\n\t\t} else {\n\t\t\tthis.services.events.dispatchEvent(\n\t\t\t\tEvents.Toolbar.HIDE_OVERFLOW_MENU\n\t\t\t);\n\t\t}\n\t}\n\n\t// Toolbar controllers\n\tfocusOnPreviousEnabledToolbarItem(currentItemIndex) {\n\t\tconst buttonList = this.getToolbarButtonItems();\n\t\tlet previousItemIndex = buttonList.length;\n\n\t\tfor (let i = currentItemIndex - 1; i >= 0; i--) {\n\t\t\tconst previousButtonItem = buttonList[i];\n\t\t\tif (!previousButtonItem.shouldBeDisabled()) {\n\t\t\t\tpreviousItemIndex = i;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t// only if previous enabled menu item found\n\t\tif (previousItemIndex < buttonList.length) {\n\t\t\tconst previousItemNode = select(\n\t\t\t\t`button#${this.services.domUtils.generateElementIDString(\n\t\t\t\t\t`control-${buttonList[previousItemIndex].id}`\n\t\t\t\t)}`\n\t\t\t).node();\n\t\t\tif ('focus' in previousItemNode) {\n\t\t\t\tpreviousItemNode.focus();\n\t\t\t}\n\t\t}\n\t}\n\n\tfocusOnNextEnabledToolbarItem(currentItemIndex) {\n\t\tconst buttonList = this.getToolbarButtonItems();\n\t\tlet nextItemIndex = -1;\n\n\t\tfor (let i = currentItemIndex + 1; i < buttonList.length; i++) {\n\t\t\tconst nextOverflowMenuItem = buttonList[i];\n\t\t\tif (!nextOverflowMenuItem.shouldBeDisabled()) {\n\t\t\t\tnextItemIndex = i;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t// only if next enabled menu item found\n\t\tif (nextItemIndex > -1) {\n\t\t\tconst nextItemNode = select(\n\t\t\t\t`button#${this.services.domUtils.generateElementIDString(\n\t\t\t\t\t`control-${buttonList[nextItemIndex].id}`\n\t\t\t\t)}`\n\t\t\t).node();\n\n\t\t\tif ('focus' in nextItemNode) {\n\t\t\t\tnextItemNode.focus();\n\t\t\t}\n\t\t}\n\t}\n\n\tfocusOnPreviousEnabledMenuItem(currentItemIndex) {\n\t\tconst overflowMenuItems = this.getOverflowMenuItems();\n\t\tlet previousItemIndex = overflowMenuItems.length;\n\n\t\tfor (let i = currentItemIndex - 1; i >= 0; i--) {\n\t\t\tconst previousOverflowMenuItem = overflowMenuItems[i];\n\t\t\tif (!previousOverflowMenuItem.shouldBeDisabled()) {\n\t\t\t\tpreviousItemIndex = i;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t// only if previous enabled menu item found\n\t\tif (previousItemIndex < overflowMenuItems.length) {\n\t\t\tconst previousItemNode = select(\n\t\t\t\t`#${this.services.domUtils.generateElementIDString(\n\t\t\t\t\t`control-${overflowMenuItems[previousItemIndex].id}`\n\t\t\t\t)} button`\n\t\t\t).node();\n\t\t\tif ('focus' in previousItemNode) {\n\t\t\t\tpreviousItemNode.focus();\n\t\t\t}\n\t\t}\n\t}\n\n\tfocusOnNextEnabledMenuItem(currentItemIndex) {\n\t\tconst overflowMenuItems = this.getOverflowMenuItems();\n\t\tlet nextItemIndex = -1;\n\n\t\tfor (let i = currentItemIndex + 1; i < overflowMenuItems.length; i++) {\n\t\t\tconst nextOverflowMenuItem = overflowMenuItems[i];\n\t\t\tif (!nextOverflowMenuItem.shouldBeDisabled()) {\n\t\t\t\tnextItemIndex = i;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t// only if next enabled menu item found\n\t\tif (nextItemIndex > -1) {\n\t\t\tconst nextItemNode = select(\n\t\t\t\t`#${this.services.domUtils.generateElementIDString(\n\t\t\t\t\t`control-${overflowMenuItems[nextItemIndex].id}`\n\t\t\t\t)} button`\n\t\t\t).node();\n\n\t\t\tif ('focus' in nextItemNode) {\n\t\t\t\tnextItemNode.focus();\n\t\t\t}\n\t\t}\n\t}\n\n\ttoggleOverflowMenu(event) {\n\t\tif (this.isOverflowMenuOpen()) {\n\t\t\t// hide overflow menu\n\t\t\tthis.updateOverflowMenu(false);\n\t\t} else {\n\t\t\t// show overflow menu\n\t\t\tthis.updateOverflowMenu(true);\n\n\t\t\t// setup overflow menu item event listener\n\t\t\tconst self = this;\n\t\t\tconst overflowMenuItems = this.getOverflowMenuItems();\n\t\t\toverflowMenuItems.forEach((menuItem, index) => {\n\t\t\t\tconst element = select(\n\t\t\t\t\t`#${this.services.domUtils.generateElementIDString(\n\t\t\t\t\t\t`control-${menuItem.id}`\n\t\t\t\t\t)}`\n\t\t\t\t);\n\t\t\t\tif (element !== null) {\n\t\t\t\t\telement.on('click', () => {\n\t\t\t\t\t\t// call the specified function\n\t\t\t\t\t\tmenuItem.clickFunction();\n\n\t\t\t\t\t\t// hide overflow menu\n\t\t\t\t\t\tself.updateOverflowMenu(false);\n\t\t\t\t\t});\n\n\t\t\t\t\telement.on('keydown', (keyEvent: KeyboardEvent) => {\n\t\t\t\t\t\tif (keyEvent && keyEvent.key === 'Enter') {\n\t\t\t\t\t\t\t// call the specified function\n\t\t\t\t\t\t\tmenuItem.clickFunction();\n\t\t\t\t\t\t} else if (keyEvent && keyEvent.key === 'ArrowUp') {\n\t\t\t\t\t\t\t// focus on previous menu item\n\t\t\t\t\t\t\tself.focusOnPreviousEnabledMenuItem(index);\n\t\t\t\t\t\t} else if (keyEvent && keyEvent.key === 'ArrowDown') {\n\t\t\t\t\t\t\t// focus on next menu item\n\t\t\t\t\t\t\tself.focusOnNextEnabledMenuItem(index);\n\t\t\t\t\t\t} else if (keyEvent && keyEvent.key === 'Escape') {\n\t\t\t\t\t\t\tself.updateOverflowMenu(false);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Not hide overflow menu by keyboard arrow up/down event\n\t\t\t\t\t\t// Prevent page from scrolling up/down\n\t\t\t\t\t\tkeyEvent.preventDefault();\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// default to focus on the first enabled menu item\n\t\t\tself.focusOnNextEnabledMenuItem(-1);\n\t\t}\n\n\t\t// propogation should not be stopped for keyboard events\n\t\tif (!!event) {\n\t\t\tevent.stopImmediatePropagation();\n\t\t}\n\t}\n\n\tgetControlConfigs() {\n\t\tconst numberOfIcons = Tools.getProperty(\n\t\t\tthis.getOptions(),\n\t\t\t'toolbar',\n\t\t\t'numberOfIcons'\n\t\t);\n\t\tconst controls = Tools.getProperty(\n\t\t\tthis.getOptions(),\n\t\t\t'toolbar',\n\t\t\t'controls'\n\t\t);\n\n\t\tconst controlList = [];\n\t\tconst overflowSpecificControls = [];\n\t\tcontrols.forEach((control) => {\n\t\t\tconst controlConfig = this.getControlConfigByType(control.type);\n\n\t\t\t// add to list if config is valid\n\t\t\tif (controlConfig) {\n\t\t\t\tcontrolConfig.text = control.text ? control.text : control.type;\n\n\t\t\t\tif (controlConfig.id.indexOf('toolbar-export') !== -1) {\n\t\t\t\t\toverflowSpecificControls.push(controlConfig);\n\t\t\t\t} else {\n\t\t\t\t\tcontrolList.push(controlConfig);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tif (\n\t\t\tcontrolList.length <= numberOfIcons &&\n\t\t\toverflowSpecificControls.length === 0\n\t\t) {\n\t\t\treturn {\n\t\t\t\tbuttonList: controlList,\n\t\t\t};\n\t\t}\n\n\t\treturn {\n\t\t\t// leave one button for overflow button\n\t\t\tbuttonList: controlList.splice(0, numberOfIcons - 1),\n\t\t\toverflowMenuItemList: controlList.concat(overflowSpecificControls),\n\t\t};\n\t}\n\n\tgetToolbarButtonItems() {\n\t\tconst { buttonList, overflowMenuItemList } = this.getControlConfigs();\n\t\tif (!!overflowMenuItemList) {\n\t\t\tbuttonList.push(this.getOverflowButtonConfig());\n\t\t}\n\t\tif (!!buttonList) {\n\t\t\treturn buttonList;\n\t\t}\n\n\t\treturn [];\n\t}\n\n\tgetOverflowMenuItems() {\n\t\tconst { overflowMenuItemList } = this.getControlConfigs();\n\t\tif (!!overflowMenuItemList) {\n\t\t\treturn overflowMenuItemList;\n\t\t} else {\n\t\t\treturn [];\n\t\t}\n\t}\n\n\t// special button config for overflow button\n\tgetOverflowButtonConfig() {\n\t\treturn {\n\t\t\tid: 'toolbar-overflow-menu',\n\t\t\ttitle: 'More options',\n\t\t\tshouldBeDisabled: () => false,\n\t\t\ticonSVGContent: `<circle cx=\"16\" cy=\"8\" r=\"2\"></circle>\n\t\t\t\t\t\t\t <circle cx=\"16\" cy=\"16\" r=\"2\"></circle>\n\t\t\t\t\t\t\t <circle cx=\"16\" cy=\"24\" r=\"2\"></circle>`,\n\t\t\tclickFunction: (event) => this.toggleOverflowMenu(event),\n\t\t};\n\t}\n\n\tgetControlConfigByType(controlType: ToolbarControlTypes) {\n\t\tconst isZoomBarEnabled =\n\t\t\tthis.services.zoom &&\n\t\t\tthis.services.zoom.isZoomBarEnabled() &&\n\t\t\t!this.services.zoom.isEmptyState();\n\n\t\tconst displayData = this.model.getDisplayData();\n\n\t\tlet controlConfig;\n\t\tswitch (controlType) {\n\t\t\tcase ToolbarControlTypes.ZOOM_IN:\n\t\t\t\tif (isZoomBarEnabled) {\n\t\t\t\t\tcontrolConfig = {\n\t\t\t\t\t\tid: 'toolbar-zoomIn',\n\t\t\t\t\t\ttitle: 'Zoom in',\n\t\t\t\t\t\tshouldBeDisabled: () =>\n\t\t\t\t\t\t\tthis.services.zoom.isMinZoomDomain(),\n\t\t\t\t\t\ticonSVGContent: this.getControlIconByType(controlType),\n\t\t\t\t\t\tclickFunction: () => this.services.zoom.zoomIn(),\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase ToolbarControlTypes.ZOOM_OUT:\n\t\t\t\tif (isZoomBarEnabled) {\n\t\t\t\t\tcontrolConfig = {\n\t\t\t\t\t\tid: 'toolbar-zoomOut',\n\t\t\t\t\t\ttitle: 'Zoom out',\n\t\t\t\t\t\tshouldBeDisabled: () =>\n\t\t\t\t\t\t\tthis.services.zoom.isMaxZoomDomain(),\n\t\t\t\t\t\ticonSVGContent: this.getControlIconByType(controlType),\n\t\t\t\t\t\tclickFunction: () => this.services.zoom.zoomOut(),\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase ToolbarControlTypes.RESET_ZOOM:\n\t\t\t\tif (isZoomBarEnabled) {\n\t\t\t\t\tcontrolConfig = {\n\t\t\t\t\t\tid: 'toolbar-resetZoom',\n\t\t\t\t\t\ttitle: 'Reset zoom',\n\t\t\t\t\t\tshouldBeDisabled: () =>\n\t\t\t\t\t\t\tthis.services.zoom.isMaxZoomDomain(),\n\t\t\t\t\t\ticonSVGContent: this.getControlIconByType(controlType),\n\t\t\t\t\t\tclickFunction: () =>\n\t\t\t\t\t\t\tthis.services.zoom.resetZoomDomain(),\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase ToolbarControlTypes.MAKE_FULLSCREEN:\n\t\t\t\tcontrolConfig = {\n\t\t\t\t\tid: 'toolbar-makefullscreen',\n\t\t\t\t\ttitle: 'Make fullscreen',\n\t\t\t\t\ticonSVGContent: this.getControlIconByType(controlType),\n\t\t\t\t\ticonWidth: '15px',\n\t\t\t\t\ticonHight: '15px',\n\t\t\t\t\tshouldBeDisabled: () => false,\n\t\t\t\t\tclickFunction: () => {\n\t\t\t\t\t\tthis.services.domUtils.toggleFullscreen();\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t\tcase ToolbarControlTypes.SHOW_AS_DATATABLE:\n\t\t\t\tcontrolConfig = {\n\t\t\t\t\tid: 'toolbar-showasdatatable',\n\t\t\t\t\ttitle: 'Show as table',\n\t\t\t\t\ticonSVGContent: this.getControlIconByType(controlType),\n\t\t\t\t\tshouldBeDisabled: () => displayData.length === 0,\n\t\t\t\t\tclickFunction: () =>\n\t\t\t\t\t\tthis.services.events.dispatchEvent(Events.Modal.SHOW),\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t\tcase ToolbarControlTypes.EXPORT_CSV:\n\t\t\t\tcontrolConfig = {\n\t\t\t\t\tid: 'toolbar-export-CSV',\n\t\t\t\t\ttitle: 'Export as CSV',\n\t\t\t\t\tshouldBeDisabled: () => false,\n\t\t\t\t\ticonSVGContent: this.getControlIconByType(controlType),\n\t\t\t\t\tclickFunction: () => this.model.exportToCSV(),\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t\tcase ToolbarControlTypes.EXPORT_PNG:\n\t\t\t\tcontrolConfig = {\n\t\t\t\t\tid: 'toolbar-export-PNG',\n\t\t\t\t\ttitle: 'Export as PNG',\n\t\t\t\t\tshouldBeDisabled: () => false,\n\t\t\t\t\ticonSVGContent: this.getControlIconByType(controlType),\n\t\t\t\t\tclickFunction: () => this.services.domUtils.exportToPNG(),\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t\tcase ToolbarControlTypes.EXPORT_JPG:\n\t\t\t\tcontrolConfig = {\n\t\t\t\t\tid: 'toolbar-export-JPG',\n\t\t\t\t\ttitle: 'Export as JPG',\n\t\t\t\t\tshouldBeDisabled: () => false,\n\t\t\t\t\ticonSVGContent: this.getControlIconByType(controlType),\n\t\t\t\t\tclickFunction: () => this.services.domUtils.exportToJPG(),\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t\t// add more toolbar control configuration here\n\n\t\t\tdefault:\n\t\t\t\tthrow Error(\n\t\t\t\t\t'Not supported toolbar control type: ' + controlType\n\t\t\t\t);\n\t\t}\n\t\treturn controlConfig;\n\t}\n\n\tgetControlIconByType(controlType: ToolbarControlTypes) {\n\t\tswitch (controlType) {\n\t\t\tcase ToolbarControlTypes.ZOOM_IN:\n\t\t\t\treturn `<polygon points=\"19 13 15 13 15 9 13 9 13 13 9 13 9 15 13 15 13 19 15 19 15 15 19 15 19 13\"/>\n\t\t\t\t\t\t<path d=\"M22.45,21A10.87,10.87,0,0,0,25,14,11,11,0,1,0,14,25a10.87,10.87,0,0,0,7-2.55L28.59,30,30,28.59ZM14,23a9,9,0,1,1,9-9A9,9,0,0,1,14,23Z\"/>`;\n\t\t\tcase ToolbarControlTypes.ZOOM_OUT:\n\t\t\t\treturn `<rect x=\"9\" y=\"13\" width=\"10\" height=\"2\"/>\n\t\t\t\t\t\t<path d=\"M22.45,21A10.87,10.87,0,0,0,25,14,11,11,0,1,0,14,25a10.87,10.87,0,0,0,7-2.55L28.59,30,30,28.59ZM14,23a9,9,0,1,1,9-9A9,9,0,0,1,14,23Z\"/>`;\n\t\t\tcase ToolbarControlTypes.RESET_ZOOM:\n\t\t\t\treturn `<path d=\"M22.4478,21A10.855,10.855,0,0,0,25,14,10.99,10.99,0,0,0,6,6.4658V2H4v8h8V8H7.332a8.9768,8.9768,0,1,1-2.1,8H3.1912A11.0118,11.0118,0,0,0,14,25a10.855,10.855,0,0,0,7-2.5522L28.5859,30,30,28.5859Z\"/>`;\n\t\t\tcase ToolbarControlTypes.MAKE_FULLSCREEN:\n\t\t\t\treturn `<polygon points=\"21 2 21 4 26.59 4 17 13.58 18.41 15 28 5.41 28 11 30 11 30 2 21 2\"/><polygon points=\"15 18.42 13.59 17 4 26.59 4 21 2 21 2 30 11 30 11 28 5.41 28 15 18.42\"/>`;\n\t\t\tcase ToolbarControlTypes.SHOW_AS_DATATABLE:\n\t\t\t\treturn `<rect x=\"4\" y=\"6\" width=\"18\" height=\"2\"/><rect x=\"4\" y=\"12\" width=\"18\" height=\"2\"/><rect x=\"4\" y=\"18\" width=\"18\" height=\"2\"/><rect x=\"4\" y=\"24\" width=\"18\" height=\"2\"/><rect x=\"26\" y=\"6\" width=\"2\" height=\"2\"/><rect x=\"26\" y=\"12\" width=\"2\" height=\"2\"/><rect x=\"26\" y=\"18\" width=\"2\" height=\"2\"/><rect x=\"26\" y=\"24\" width=\"2\" height=\"2\"/>`;\n\t\t\tcase ToolbarControlTypes.EXPORT_CSV:\n\t\t\t\treturn `<path d=\"M22.4478,21A10.855,10.855,0,0,0,25,14,10.99,10.99,0,0,0,6,6.4658V2H4v8h8V8H7.332a8.9768,8.9768,0,1,1-2.1,8H3.1912A11.0118,11.0118,0,0,0,14,25a10.855,10.855,0,0,0,7-2.5522L28.5859,30,30,28.5859Z\"/>`;\n\t\t\tcase ToolbarControlTypes.EXPORT_JPG:\n\t\t\t\treturn `<path d=\"M22.4478,21A10.855,10.855,0,0,0,25,14,10.99,10.99,0,0,0,6,6.4658V2H4v8h8V8H7.332a8.9768,8.9768,0,1,1-2.1,8H3.1912A11.0118,11.0118,0,0,0,14,25a10.855,10.855,0,0,0,7-2.5522L28.5859,30,30,28.5859Z\"/>`;\n\t\t\tcase ToolbarControlTypes.EXPORT_PNG:\n\t\t\t\treturn `<path d=\"M22.4478,21A10.855,10.855,0,0,0,25,14,10.99,10.99,0,0,0,6,6.4658V2H4v8h8V8H7.332a8.9768,8.9768,0,1,1-2.1,8H3.1912A11.0118,11.0118,0,0,0,14,25a10.855,10.855,0,0,0,7-2.5522L28.5859,30,30,28.5859Z\"/>`; // add more icons here\n\t\t\t// svg icon must be with 32x32 viewBox\n\n\t\t\tdefault:\n\t\t\t\tthrow Error(\n\t\t\t\t\t'Not supported toolbar control type: ' + controlType\n\t\t\t\t);\n\t\t}\n\t}\n}\n"]}
@@ -39,6 +39,7 @@ var AxisChartsTooltip = /** @class */ (function (_super) {
39
39
  var options = this.getOptions();
40
40
  var cartesianScales = this.services.cartesianScales;
41
41
  var domainIdentifier = cartesianScales.getDomainIdentifier();
42
+ var dualAxes = cartesianScales.isDualAxes();
42
43
  // Generate default tooltip
43
44
  var groupMapsTo = options.data.groupMapsTo;
44
45
  var domainLabel = cartesianScales.getDomainLabel();
@@ -48,6 +49,13 @@ var AxisChartsTooltip = /** @class */ (function (_super) {
48
49
  if (data.length === 1) {
49
50
  var datum = data[0];
50
51
  var rangeIdentifier = cartesianScales.getRangeIdentifier(datum);
52
+ if (dualAxes) {
53
+ var position = cartesianScales.getRangeAxisPosition({
54
+ datum: datum,
55
+ groups: [datum[groupMapsTo]],
56
+ });
57
+ rangeLabel = cartesianScales.getScaleLabel(position);
58
+ }
51
59
  var value = datum[rangeIdentifier];
52
60
  items = __spreadArrays([
53
61
  {
@@ -107,7 +115,6 @@ var AxisChartsTooltip = /** @class */ (function (_super) {
107
115
  }),
108
116
  }); })
109
117
  .sort(function (a, b) { return b.value - a.value; }));
110
- var dualAxes = cartesianScales.isDualAxes();
111
118
  if (!dualAxes &&
112
119
  Tools.getProperty(options, 'tooltip', 'showTotal') === true) {
113
120
  // use the primary/only range id
@@ -1 +1 @@
1
- {"version":3,"file":"tooltip-axis.js","sourceRoot":"","sources":["tooltip-axis.ts"],"names":[],"mappings":"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","sourcesContent":["import { Tooltip } from './tooltip';\nimport { ColorClassNameTypes } from '../../interfaces';\nimport { Tools } from '../../tools';\n\nimport { get } from 'lodash-es';\n\nexport class AxisChartsTooltip extends Tooltip {\n\tgetItems(e: CustomEvent) {\n\t\tif (e.detail.items) {\n\t\t\treturn e.detail.items;\n\t\t}\n\n\t\tconst data = e.detail.data;\n\t\tif (!data.length || !data[0]) {\n\t\t\treturn [];\n\t\t}\n\n\t\tconst options = this.getOptions();\n\t\tconst { cartesianScales } = this.services;\n\t\tconst domainIdentifier = cartesianScales.getDomainIdentifier();\n\n\t\t// Generate default tooltip\n\t\tconst { groupMapsTo } = options.data;\n\t\tconst domainLabel = cartesianScales.getDomainLabel();\n\t\tconst rangeLabel = cartesianScales.getRangeLabel();\n\n\t\tlet domainValue = data[0][domainIdentifier];\n\t\tlet items: any[];\n\t\tif (data.length === 1) {\n\t\t\tconst datum = data[0];\n\t\t\tconst rangeIdentifier = cartesianScales.getRangeIdentifier(datum);\n\t\t\tconst value = datum[rangeIdentifier];\n\n\t\t\titems = [\n\t\t\t\t{\n\t\t\t\t\tlabel: domainLabel,\n\t\t\t\t\tvalue: domainValue,\n\t\t\t\t},\n\t\t\t\t...(Array.isArray(value) && value.length === 2\n\t\t\t\t\t? [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tlabel: 'Start',\n\t\t\t\t\t\t\t\tvalue: value[0],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tlabel: 'End',\n\t\t\t\t\t\t\t\tvalue: value[1],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t ]\n\t\t\t\t\t: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tlabel: rangeLabel,\n\t\t\t\t\t\t\t\tvalue: datum[rangeIdentifier],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t ]),\n\t\t\t];\n\n\t\t\tif (e.detail.additionalItems) {\n\t\t\t\te.detail.additionalItems.forEach((additionalItem) =>\n\t\t\t\t\titems.push({\n\t\t\t\t\t\tlabel: additionalItem.label,\n\t\t\t\t\t\tvalue: additionalItem.value,\n\t\t\t\t\t})\n\t\t\t\t);\n\t\t\t}\n\n\t\t\titems.push({\n\t\t\t\tlabel: options.tooltip.groupLabel,\n\t\t\t\tvalue: datum[groupMapsTo],\n\t\t\t\tcolor: this.model.getFillColor(datum[groupMapsTo]),\n\t\t\t\tclass: this.model.getColorClassName({\n\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.TOOLTIP],\n\t\t\t\t\tdataGroupName: datum[groupMapsTo],\n\t\t\t\t}),\n\t\t\t});\n\t\t} else if (data.length > 1) {\n\t\t\titems = [\n\t\t\t\t{\n\t\t\t\t\tlabel: domainLabel,\n\t\t\t\t\tvalue: domainValue,\n\t\t\t\t},\n\t\t\t];\n\n\t\t\titems = items.concat(\n\t\t\t\tdata\n\t\t\t\t\t.map((datum) => ({\n\t\t\t\t\t\tlabel: datum[groupMapsTo],\n\t\t\t\t\t\tvalue: datum[cartesianScales.getRangeIdentifier(datum)],\n\t\t\t\t\t\tcolor: this.model.getFillColor(datum[groupMapsTo]),\n\t\t\t\t\t\tclass: this.model.getColorClassName({\n\t\t\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.TOOLTIP],\n\t\t\t\t\t\t\tdataGroupName: datum[groupMapsTo],\n\t\t\t\t\t\t}),\n\t\t\t\t\t}))\n\t\t\t\t\t.sort((a, b) => b.value - a.value)\n\t\t\t);\n\n\t\t\tconst dualAxes = cartesianScales.isDualAxes();\n\t\t\tif (\n\t\t\t\t!dualAxes &&\n\t\t\t\tTools.getProperty(options, 'tooltip', 'showTotal') === true\n\t\t\t) {\n\t\t\t\t// use the primary/only range id\n\t\t\t\tconst rangeIdentifier = cartesianScales.getRangeIdentifier();\n\t\t\t\titems.push({\n\t\t\t\t\tlabel: get(options, 'tooltip.totalLabel') || 'Total',\n\t\t\t\t\tvalue: data.reduce(\n\t\t\t\t\t\t(accumulator, datum) =>\n\t\t\t\t\t\t\taccumulator + datum[rangeIdentifier],\n\t\t\t\t\t\t0\n\t\t\t\t\t),\n\t\t\t\t\tbold: true,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn items;\n\t}\n}\n"]}
1
+ {"version":3,"file":"tooltip-axis.js","sourceRoot":"","sources":["tooltip-axis.ts"],"names":[],"mappings":"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","sourcesContent":["import { Tooltip } from './tooltip';\nimport { ColorClassNameTypes } from '../../interfaces';\nimport { Tools } from '../../tools';\n\nimport { get } from 'lodash-es';\n\nexport class AxisChartsTooltip extends Tooltip {\n\tgetItems(e: CustomEvent) {\n\t\tif (e.detail.items) {\n\t\t\treturn e.detail.items;\n\t\t}\n\n\t\tconst data = e.detail.data;\n\t\tif (!data.length || !data[0]) {\n\t\t\treturn [];\n\t\t}\n\n\t\tconst options = this.getOptions();\n\t\tconst { cartesianScales } = this.services;\n\t\tconst domainIdentifier = cartesianScales.getDomainIdentifier();\n\t\tconst dualAxes = cartesianScales.isDualAxes();\n\n\t\t// Generate default tooltip\n\t\tconst { groupMapsTo } = options.data;\n\t\tconst domainLabel = cartesianScales.getDomainLabel();\n\t\tlet rangeLabel = cartesianScales.getRangeLabel();\n\n\t\tlet domainValue = data[0][domainIdentifier];\n\t\tlet items: any[];\n\t\tif (data.length === 1) {\n\t\t\tconst datum = data[0];\n\t\t\tconst rangeIdentifier = cartesianScales.getRangeIdentifier(datum);\n\n\t\t\tif (dualAxes) {\n\t\t\t\tconst position = cartesianScales.getRangeAxisPosition({\n\t\t\t\t\tdatum,\n\t\t\t\t\tgroups: [datum[groupMapsTo]],\n\t\t\t\t});\n\t\t\t\trangeLabel = cartesianScales.getScaleLabel(position);\n\t\t\t}\n\t\t\tconst value = datum[rangeIdentifier];\n\n\t\t\titems = [\n\t\t\t\t{\n\t\t\t\t\tlabel: domainLabel,\n\t\t\t\t\tvalue: domainValue,\n\t\t\t\t},\n\t\t\t\t...(Array.isArray(value) && value.length === 2\n\t\t\t\t\t? [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tlabel: 'Start',\n\t\t\t\t\t\t\t\tvalue: value[0],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tlabel: 'End',\n\t\t\t\t\t\t\t\tvalue: value[1],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t ]\n\t\t\t\t\t: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tlabel: rangeLabel,\n\t\t\t\t\t\t\t\tvalue: datum[rangeIdentifier],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t ]),\n\t\t\t];\n\n\t\t\tif (e.detail.additionalItems) {\n\t\t\t\te.detail.additionalItems.forEach((additionalItem) =>\n\t\t\t\t\titems.push({\n\t\t\t\t\t\tlabel: additionalItem.label,\n\t\t\t\t\t\tvalue: additionalItem.value,\n\t\t\t\t\t})\n\t\t\t\t);\n\t\t\t}\n\n\t\t\titems.push({\n\t\t\t\tlabel: options.tooltip.groupLabel,\n\t\t\t\tvalue: datum[groupMapsTo],\n\t\t\t\tcolor: this.model.getFillColor(datum[groupMapsTo]),\n\t\t\t\tclass: this.model.getColorClassName({\n\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.TOOLTIP],\n\t\t\t\t\tdataGroupName: datum[groupMapsTo],\n\t\t\t\t}),\n\t\t\t});\n\t\t} else if (data.length > 1) {\n\t\t\titems = [\n\t\t\t\t{\n\t\t\t\t\tlabel: domainLabel,\n\t\t\t\t\tvalue: domainValue,\n\t\t\t\t},\n\t\t\t];\n\n\t\t\titems = items.concat(\n\t\t\t\tdata\n\t\t\t\t\t.map((datum) => ({\n\t\t\t\t\t\tlabel: datum[groupMapsTo],\n\t\t\t\t\t\tvalue: datum[cartesianScales.getRangeIdentifier(datum)],\n\t\t\t\t\t\tcolor: this.model.getFillColor(datum[groupMapsTo]),\n\t\t\t\t\t\tclass: this.model.getColorClassName({\n\t\t\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.TOOLTIP],\n\t\t\t\t\t\t\tdataGroupName: datum[groupMapsTo],\n\t\t\t\t\t\t}),\n\t\t\t\t\t}))\n\t\t\t\t\t.sort((a, b) => b.value - a.value)\n\t\t\t);\n\n\t\t\tif (\n\t\t\t\t!dualAxes &&\n\t\t\t\tTools.getProperty(options, 'tooltip', 'showTotal') === true\n\t\t\t) {\n\t\t\t\t// use the primary/only range id\n\t\t\t\tconst rangeIdentifier = cartesianScales.getRangeIdentifier();\n\t\t\t\titems.push({\n\t\t\t\t\tlabel: get(options, 'tooltip.totalLabel') || 'Total',\n\t\t\t\t\tvalue: data.reduce(\n\t\t\t\t\t\t(accumulator, datum) =>\n\t\t\t\t\t\t\taccumulator + datum[rangeIdentifier],\n\t\t\t\t\t\t0\n\t\t\t\t\t),\n\t\t\t\t\tbold: true,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn items;\n\t}\n}\n"]}
package/model/model.js CHANGED
@@ -315,7 +315,9 @@ var ChartModel = /** @class */ (function () {
315
315
  var _b = _a.percentage, percentage = _b === void 0 ? false : _b, _c = _a.groups, groups = _c === void 0 ? null : _c, _d = _a.divergent, divergent = _d === void 0 ? false : _d;
316
316
  var options = this.getOptions();
317
317
  var groupMapsTo = options.data.groupMapsTo;
318
- var dataGroupNames = this.getDataGroupNames(groups);
318
+ // Get only active data groups so non-active data groups are not rendered
319
+ // on legend item click
320
+ var dataGroupNames = this.getActiveDataGroupNames(groups);
319
321
  var dataValuesGroupedByKeys = this.getDataValuesGroupedByKeys({
320
322
  groups: groups,
321
323
  });
@@ -1 +1 @@
1
- {"version":3,"file":"model.js","sourceRoot":"","sources":["model.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport * as Configuration from '../configuration';\nimport { histogram as histogramConfigs } from '../configuration-non-customizable';\n\nimport { Tools } from '../tools';\nimport { Events, ScaleTypes, ColorClassNameTypes } from '../interfaces';\n\n// D3\nimport { scaleOrdinal } from 'd3-scale';\nimport { stack, stackOffsetDiverging } from 'd3-shape';\nimport { histogram } from 'd3-array';\n\n/** The charting model layer which includes mainly the chart data and options,\n * as well as some misc. information to be shared among components */\nexport class ChartModel {\n\tprotected services: any;\n\n\t// Internal Model state\n\tprotected state: any = {\n\t\toptions: {},\n\t};\n\n\t// Data labels\n\t/**\n\t * A list of all the data groups that have existed within the lifetime of the chart\n\t * @type string[]\n\t */\n\tprotected allDataGroups: string[];\n\n\t// Fill scales & fill related objects\n\tprotected colorScale: any = {};\n\n\tprotected colorClassNames: any = {};\n\n\tconstructor(services: any) {\n\t\tthis.services = services;\n\t}\n\n\tgetAllDataFromDomain(groups?) {\n\t\tif (!this.getData()) {\n\t\t\treturn null;\n\t\t}\n\t\tconst options = this.getOptions();\n\t\t// Remove datasets that have been disabled\n\t\tlet allData = this.getData();\n\t\tconst dataGroups = this.getDataGroups();\n\t\tconst { groupMapsTo } = Tools.getProperty(options, 'data');\n\t\tconst axesOptions = Tools.getProperty(options, 'axes');\n\n\t\t// filter out the groups that are irrelevant to the component\n\t\tif (groups) {\n\t\t\tallData = allData.filter((item) =>\n\t\t\t\tgroups.includes(item[groupMapsTo])\n\t\t\t);\n\t\t}\n\n\t\tif (axesOptions) {\n\t\t\tObject.keys(axesOptions).forEach((axis) => {\n\t\t\t\tconst mapsTo = axesOptions[axis].mapsTo;\n\t\t\t\tconst scaleType = axesOptions[axis].scaleType;\n\t\t\t\t// make sure linear/log values are numbers\n\t\t\t\tif (\n\t\t\t\t\tscaleType === ScaleTypes.LINEAR ||\n\t\t\t\t\tscaleType === ScaleTypes.LOG\n\t\t\t\t) {\n\t\t\t\t\tallData = allData.map((datum) => {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t...datum,\n\t\t\t\t\t\t\t[mapsTo]:\n\t\t\t\t\t\t\t\tdatum[mapsTo] === null\n\t\t\t\t\t\t\t\t\t? datum[mapsTo]\n\t\t\t\t\t\t\t\t\t: Number(datum[mapsTo]),\n\t\t\t\t\t\t};\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\t// Check for custom domain\n\t\t\t\tif (mapsTo && axesOptions[axis].domain) {\n\t\t\t\t\tif (scaleType === ScaleTypes.LABELS) {\n\t\t\t\t\t\tallData = allData.filter((datum) =>\n\t\t\t\t\t\t\taxesOptions[axis].domain.includes(datum[mapsTo])\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst [start, end] = axesOptions[axis].domain;\n\t\t\t\t\t\t// Filter out data outside domain if that datapoint is using that axis (has mapsTo property)\n\t\t\t\t\t\tallData = allData.filter(\n\t\t\t\t\t\t\t(datum) =>\n\t\t\t\t\t\t\t\t!(mapsTo in datum) ||\n\t\t\t\t\t\t\t\t(datum[mapsTo] >= start && datum[mapsTo] <= end)\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}\n\n\t\treturn allData.filter((datum) => {\n\t\t\treturn dataGroups.find(\n\t\t\t\t(group) => group.name === datum[groupMapsTo]\n\t\t\t);\n\t\t});\n\t}\n\n\t/**\n\t * Charts that have group configs passed into them, only want to retrieve the display data relevant to that chart\n\t * @param groups the included datasets for the particular chart\n\t */\n\tgetDisplayData(groups?) {\n\t\tif (!this.get('data')) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst { ACTIVE } = Configuration.legend.items.status;\n\t\tconst dataGroups = this.getDataGroups(groups);\n\t\tconst { groupMapsTo } = this.getOptions().data;\n\t\tconst allDataFromDomain = this.getAllDataFromDomain(groups);\n\n\t\treturn allDataFromDomain.filter((datum) => {\n\t\t\treturn dataGroups.find(\n\t\t\t\t(dataGroup) =>\n\t\t\t\t\tdataGroup.name === datum[groupMapsTo] &&\n\t\t\t\t\tdataGroup.status === ACTIVE\n\t\t\t);\n\t\t});\n\t}\n\n\tgetData() {\n\t\treturn this.get('data');\n\t}\n\n\tisDataEmpty() {\n\t\treturn !this.getData().length;\n\t}\n\n\t/**\n\t *\n\t * @param newData The new raw data to be set\n\t */\n\tsetData(newData) {\n\t\tconst sanitizedData = this.sanitize(Tools.clone(newData));\n\t\tconst dataGroups = this.generateDataGroups(sanitizedData);\n\n\t\tthis.set({\n\t\t\tdata: sanitizedData,\n\t\t\tdataGroups,\n\t\t});\n\n\t\treturn sanitizedData;\n\t}\n\n\tgetDataGroups(groups?) {\n\t\tconst isDataLoading = Tools.getProperty(\n\t\t\tthis.getOptions(),\n\t\t\t'data',\n\t\t\t'loading'\n\t\t);\n\n\t\t// No data should be displayed while data is still loading\n\t\tif (isDataLoading) {\n\t\t\treturn [];\n\t\t}\n\n\t\t// if its a combo chart, the specific chart will pass the model the groups it needs\n\t\tif (groups) {\n\t\t\treturn this.get('dataGroups').filter((dataGroup) =>\n\t\t\t\tgroups.includes(dataGroup.name)\n\t\t\t);\n\t\t}\n\t\treturn this.get('dataGroups');\n\t}\n\n\tgetActiveDataGroups(groups?) {\n\t\tconst { ACTIVE } = Configuration.legend.items.status;\n\n\t\treturn this.getDataGroups(groups).filter(\n\t\t\t(dataGroup) => dataGroup.status === ACTIVE\n\t\t);\n\t}\n\n\tgetDataGroupNames(groups?) {\n\t\tconst dataGroups = this.getDataGroups(groups);\n\t\treturn dataGroups.map((dataGroup) => dataGroup.name);\n\t}\n\n\tgetActiveDataGroupNames(groups?) {\n\t\tconst activeDataGroups = this.getActiveDataGroups(groups);\n\t\treturn activeDataGroups.map((dataGroup) => dataGroup.name);\n\t}\n\n\tprivate aggregateBinDataByGroup(bin) {\n\t\treturn Tools.groupBy(bin, 'group');\n\t}\n\n\tgetBinConfigurations() {\n\t\t// Manipulate data and options for Histogram\n\t\tconst data = this.getDisplayData();\n\t\tconst options = this.getOptions();\n\n\t\tconst mainXPos = this.services.cartesianScales.getMainXAxisPosition();\n\t\tconst domainIdentifier = this.services.cartesianScales.getDomainIdentifier();\n\n\t\tconst axisOptions = options.axes[mainXPos];\n\t\tconst { groupMapsTo } = options.data;\n\t\tconst { bins: axisBins = histogramConfigs.defaultBins } = axisOptions;\n\t\tconst areBinsDefined = Array.isArray(axisBins);\n\n\t\t// Get Histogram bins\n\t\tconst bins = histogram()\n\t\t\t.value((d) => d[domainIdentifier])\n\t\t\t.thresholds(axisBins)(data);\n\n\t\tif (!areBinsDefined) {\n\t\t\t// If bins are not defined by user\n\t\t\tconst binsWidth = bins[0].x1 - bins[0].x0;\n\t\t\t// Set last bin width as the others\n\t\t\tbins[bins.length - 1].x1 = +bins[bins.length - 1].x0 + binsWidth;\n\t\t} else {\n\t\t\t// Set last bin end as the last user defined one\n\t\t\tbins[bins.length - 1].x1 = axisBins[axisBins.length - 1];\n\t\t}\n\n\t\tconst binsDomain = areBinsDefined\n\t\t\t? [axisBins[0], axisBins[axisBins.length - 1]]\n\t\t\t: [bins[0].x0, bins[bins.length - 1].x1];\n\n\t\t// Get all groups\n\t\tconst groupsKeys = Array.from(new Set(data.map((d) => d[groupMapsTo])));\n\n\t\tconst histogramData = [];\n\n\t\t// Group data by bin\n\t\tbins.forEach((bin) => {\n\t\t\tconst key = `${bin.x0}-${bin.x1}`;\n\t\t\tconst aggregateDataByGroup = this.aggregateBinDataByGroup(bin);\n\n\t\t\tgroupsKeys.forEach((group: string) => {\n\t\t\t\t// For each dataset put a bin with value 0 if not exist\n\t\t\t\t// (Scale X won't change when changing showed datasets)\n\t\t\t\thistogramData.push({\n\t\t\t\t\tgroup,\n\t\t\t\t\tkey,\n\t\t\t\t\tvalue: aggregateDataByGroup[group] || 0,\n\t\t\t\t\tbin: bin.x0,\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\n\t\treturn {\n\t\t\tbins,\n\t\t\tbinsDomain,\n\t\t};\n\t}\n\n\tgetBinnedStackedData() {\n\t\tconst options = this.getOptions();\n\t\tconst { groupMapsTo } = options.data;\n\n\t\tconst dataGroupNames = this.getActiveDataGroupNames();\n\n\t\tconst { bins } = this.getBinConfigurations();\n\t\tconst dataValuesGroupedByKeys = this.getDataValuesGroupedByKeys({\n\t\t\tbins,\n\t\t});\n\n\t\treturn stack()\n\t\t\t.keys(dataGroupNames)(dataValuesGroupedByKeys)\n\t\t\t.map((series, i) => {\n\t\t\t\t// Add data group names to each series\n\t\t\t\treturn Object.keys(series)\n\t\t\t\t\t.filter((key: any) => !isNaN(key))\n\t\t\t\t\t.map((key) => {\n\t\t\t\t\t\tconst element = series[key];\n\t\t\t\t\t\telement[groupMapsTo] = dataGroupNames[i];\n\n\t\t\t\t\t\treturn element;\n\t\t\t\t\t});\n\t\t\t});\n\t}\n\n\tgetGroupedData(groups?) {\n\t\tconst displayData = this.getDisplayData(groups);\n\t\tconst groupedData = {};\n\t\tconst { groupMapsTo } = this.getOptions().data;\n\n\t\tdisplayData.map((datum) => {\n\t\t\tconst group = datum[groupMapsTo];\n\t\t\tif (\n\t\t\t\tgroupedData[group] !== null &&\n\t\t\t\tgroupedData[group] !== undefined\n\t\t\t) {\n\t\t\t\tgroupedData[group].push(datum);\n\t\t\t} else {\n\t\t\t\tgroupedData[group] = [datum];\n\t\t\t}\n\t\t});\n\n\t\treturn Object.keys(groupedData).map((groupName) => ({\n\t\t\tname: groupName,\n\t\t\tdata: groupedData[groupName],\n\t\t}));\n\t}\n\n\tgetStackKeys({ bins = null, groups = null }) {\n\t\tconst options = this.getOptions();\n\n\t\tconst displayData = this.getDisplayData(groups);\n\n\t\tlet stackKeys;\n\t\tif (bins) {\n\t\t\tstackKeys = bins.map((bin) => `${bin.x0}-${bin.x1}`);\n\t\t} else {\n\t\t\tstackKeys = Tools.removeArrayDuplicates(\n\t\t\t\tdisplayData.map((datum) => {\n\t\t\t\t\tconst domainIdentifier = this.services.cartesianScales.getDomainIdentifier(\n\t\t\t\t\t\tdatum\n\t\t\t\t\t);\n\n\t\t\t\t\treturn datum[domainIdentifier] &&\n\t\t\t\t\t\ttypeof datum[domainIdentifier].toString === 'function'\n\t\t\t\t\t\t? datum[domainIdentifier].toString()\n\t\t\t\t\t\t: datum[domainIdentifier];\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\n\t\tconst axisPosition = this.services.cartesianScales.domainAxisPosition;\n\t\tconst scaleType = options.axes[axisPosition].scaleType;\n\n\t\t// Sort keys\n\t\tif (scaleType === ScaleTypes.TIME) {\n\t\t\tstackKeys.sort((a: any, b: any) => {\n\t\t\t\tconst dateA: any = new Date(a);\n\t\t\t\tconst dateB: any = new Date(b);\n\n\t\t\t\treturn dateA - dateB;\n\t\t\t});\n\t\t} else if (\n\t\t\tscaleType === ScaleTypes.LOG ||\n\t\t\tscaleType === ScaleTypes.LINEAR\n\t\t) {\n\t\t\tstackKeys.sort((a: any, b: any) => a - b);\n\t\t}\n\n\t\treturn stackKeys;\n\t}\n\n\tgetDataValuesGroupedByKeys({ bins = null, groups = null }) {\n\t\tconst options = this.getOptions();\n\t\tconst { groupMapsTo } = options.data;\n\t\tconst displayData = this.getDisplayData(groups);\n\n\t\tconst dataGroupNames = this.getDataGroupNames();\n\n\t\tconst stackKeys = this.getStackKeys({ bins, groups });\n\t\tif (bins) {\n\t\t\treturn stackKeys.map((key) => {\n\t\t\t\tconst [binStart, binEnd] = key.split('-');\n\n\t\t\t\tconst correspondingValues = { x0: binStart, x1: binEnd };\n\t\t\t\tconst correspondingBin = bins.find(\n\t\t\t\t\t(bin) => bin.x0.toString() === binStart.toString()\n\t\t\t\t);\n\n\t\t\t\tdataGroupNames.forEach((dataGroupName) => {\n\t\t\t\t\tcorrespondingValues[\n\t\t\t\t\t\tdataGroupName\n\t\t\t\t\t] = correspondingBin.filter(\n\t\t\t\t\t\t(binItem) => binItem[groupMapsTo] === dataGroupName\n\t\t\t\t\t).length;\n\t\t\t\t});\n\n\t\t\t\treturn correspondingValues;\n\t\t\t}) as any;\n\t\t}\n\n\t\treturn stackKeys.map((key) => {\n\t\t\tconst correspondingValues = { sharedStackKey: key };\n\t\t\tdataGroupNames.forEach((dataGroupName) => {\n\t\t\t\tconst correspondingDatum = displayData.find((datum) => {\n\t\t\t\t\tconst domainIdentifier = this.services.cartesianScales.getDomainIdentifier(\n\t\t\t\t\t\tdatum\n\t\t\t\t\t);\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\tdatum[groupMapsTo] === dataGroupName &&\n\t\t\t\t\t\tdatum.hasOwnProperty(domainIdentifier) &&\n\t\t\t\t\t\tdatum[domainIdentifier].toString() === key\n\t\t\t\t\t);\n\t\t\t\t});\n\n\t\t\t\tconst rangeIdentifier = this.services.cartesianScales.getRangeIdentifier(\n\t\t\t\t\tcorrespondingValues\n\t\t\t\t);\n\t\t\t\tcorrespondingValues[dataGroupName] = correspondingDatum\n\t\t\t\t\t? correspondingDatum[rangeIdentifier]\n\t\t\t\t\t: null;\n\t\t\t});\n\n\t\t\treturn correspondingValues;\n\t\t}) as any;\n\t}\n\n\tgetStackedData({ percentage = false, groups = null, divergent = false }) {\n\t\tconst options = this.getOptions();\n\t\tconst { groupMapsTo } = options.data;\n\n\t\tconst dataGroupNames = this.getDataGroupNames(groups);\n\t\tconst dataValuesGroupedByKeys = this.getDataValuesGroupedByKeys({\n\t\t\tgroups,\n\t\t});\n\n\t\tif (percentage) {\n\t\t\tconst maxByKey = Tools.fromPairs(\n\t\t\t\tdataValuesGroupedByKeys.map((d: any) => [d.sharedStackKey, 0])\n\t\t\t);\n\n\t\t\tdataValuesGroupedByKeys.forEach((d: any) => {\n\t\t\t\tdataGroupNames.forEach((name) => {\n\t\t\t\t\tmaxByKey[d.sharedStackKey] += d[name];\n\t\t\t\t});\n\t\t\t});\n\n\t\t\t// cycle through data values to get percentage\n\t\t\tdataValuesGroupedByKeys.forEach((d: any) => {\n\t\t\t\tdataGroupNames.forEach((name) => {\n\t\t\t\t\tif (maxByKey[d.sharedStackKey]) {\n\t\t\t\t\t\td[name] = (d[name] / maxByKey[d.sharedStackKey]) * 100;\n\t\t\t\t\t} else {\n\t\t\t\t\t\td[name] = 0;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\tconst stackToUse = divergent\n\t\t\t? stack().offset(stackOffsetDiverging)\n\t\t\t: stack();\n\n\t\treturn stackToUse\n\t\t\t.keys(dataGroupNames)(dataValuesGroupedByKeys)\n\t\t\t.map((series, i) => {\n\t\t\t\t// Add data group names to each series\n\t\t\t\treturn Object.keys(series)\n\t\t\t\t\t.filter((key: any) => !isNaN(key))\n\t\t\t\t\t.map((key) => {\n\t\t\t\t\t\tconst element = series[key];\n\t\t\t\t\t\telement[groupMapsTo] = dataGroupNames[i];\n\n\t\t\t\t\t\treturn element;\n\t\t\t\t\t});\n\t\t\t});\n\t}\n\n\t/**\n\t * @return {Object} The chart's options\n\t */\n\tgetOptions() {\n\t\treturn this.state.options;\n\t}\n\n\tset(newState: any, configs?: any) {\n\t\tthis.state = Object.assign({}, this.state, newState);\n\t\tconst newConfig = Object.assign(\n\t\t\t{ skipUpdate: false, animate: true }, // default configs\n\t\t\tconfigs\n\t\t);\n\t\tif (!newConfig.skipUpdate) {\n\t\t\tthis.update(newConfig.animate);\n\t\t}\n\t}\n\n\tget(property?: string) {\n\t\tif (property) {\n\t\t\treturn this.state[property];\n\t\t} else {\n\t\t\treturn this.state;\n\t\t}\n\t}\n\n\t/**\n\t *\n\t * @param newOptions New options to be set\n\t */\n\tsetOptions(newOptions) {\n\t\tconst options = this.getOptions();\n\t\tTools.updateLegendAdditionalItems(options, newOptions);\n\n\t\tthis.set({\n\t\t\toptions: Tools.merge(options, newOptions),\n\t\t});\n\t}\n\n\t/**\n\t *\n\t * Updates miscellanous information within the model\n\t * such as the color scales, or the legend data labels\n\t */\n\tupdate(animate = true) {\n\t\tif (!this.getDisplayData()) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.updateAllDataGroups();\n\n\t\tthis.setCustomColorScale();\n\t\tthis.setColorClassNames();\n\t\tthis.services.events.dispatchEvent(Events.Model.UPDATE, { animate });\n\t}\n\n\t/*\n\t * Data labels\n\t */\n\ttoggleDataLabel(changedLabel: string) {\n\t\tconst { ACTIVE, DISABLED } = Configuration.legend.items.status;\n\t\tconst dataGroups = this.getDataGroups();\n\n\t\tconst hasDeactivatedItems = dataGroups.some(\n\t\t\t(group) => group.status === DISABLED\n\t\t);\n\t\tconst activeItems = dataGroups.filter(\n\t\t\t(group) => group.status === ACTIVE\n\t\t);\n\n\t\t// If there are deactivated items, toggle \"changedLabel\"\n\t\tif (hasDeactivatedItems) {\n\t\t\t// If the only active item is being toggled\n\t\t\t// Activate all items\n\t\t\tif (\n\t\t\t\tactiveItems.length === 1 &&\n\t\t\t\tactiveItems[0].name === changedLabel\n\t\t\t) {\n\t\t\t\t// If every item is active, then enable \"changedLabel\" and disable all other items\n\t\t\t\tdataGroups.forEach((group, i) => {\n\t\t\t\t\tdataGroups[i].status = ACTIVE;\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tconst indexToChange = dataGroups.findIndex(\n\t\t\t\t\t(group) => group.name === changedLabel\n\t\t\t\t);\n\t\t\t\tdataGroups[indexToChange].status =\n\t\t\t\t\tdataGroups[indexToChange].status === DISABLED\n\t\t\t\t\t\t? ACTIVE\n\t\t\t\t\t\t: DISABLED;\n\t\t\t}\n\t\t} else {\n\t\t\t// If every item is active, then enable \"changedLabel\" and disable all other items\n\t\t\tdataGroups.forEach((group, i) => {\n\t\t\t\tdataGroups[i].status =\n\t\t\t\t\tgroup.name === changedLabel ? ACTIVE : DISABLED;\n\t\t\t});\n\t\t}\n\n\t\t// Updates selected groups\n\t\tconst updatedActiveItems = dataGroups.filter(\n\t\t\t(group) => group.status === ACTIVE\n\t\t);\n\t\tconst options = this.getOptions();\n\n\t\tconst hasUpdatedDeactivatedItems = dataGroups.some(\n\t\t\t(group) => group.status === DISABLED\n\t\t);\n\n\t\t// If there are deactivated items, map the item name into selected groups\n\t\tif (hasUpdatedDeactivatedItems) {\n\t\t\toptions.data.selectedGroups = updatedActiveItems.map(\n\t\t\t\t(activeItem) => activeItem.name\n\t\t\t);\n\t\t} else {\n\t\t\t// If every item is active, clear array\n\t\t\toptions.data.selectedGroups = [];\n\t\t}\n\n\t\t// dispatch legend filtering event with the status of all the dataLabels\n\t\tthis.services.events.dispatchEvent(Events.Legend.ITEMS_UPDATE, {\n\t\t\tdataGroups,\n\t\t});\n\n\t\t// Update model\n\t\tthis.set({\n\t\t\tdataGroups,\n\t\t});\n\t}\n\n\t/**\n\t * Should the data point be filled?\n\t * @param group\n\t * @param key\n\t * @param value\n\t * @param defaultFilled the default for this chart\n\t */\n\tgetIsFilled(group: any, key?: any, data?: any, defaultFilled?: boolean) {\n\t\tconst options = this.getOptions();\n\t\tif (options.getIsFilled) {\n\t\t\treturn options.getIsFilled(group, key, data, defaultFilled);\n\t\t} else {\n\t\t\treturn defaultFilled;\n\t\t}\n\t}\n\n\tgetFillColor(group: any, key?: any, data?: any) {\n\t\tconst options = this.getOptions();\n\t\tconst defaultFillColor = Tools.getProperty(this.colorScale, group);\n\n\t\tif (options.getFillColor) {\n\t\t\treturn options.getFillColor(group, key, data, defaultFillColor);\n\t\t} else {\n\t\t\treturn defaultFillColor;\n\t\t}\n\t}\n\n\tgetStrokeColor(group: any, key?: any, data?: any) {\n\t\tconst options = this.getOptions();\n\t\tconst defaultStrokeColor = Tools.getProperty(this.colorScale, group);\n\n\t\tif (options.getStrokeColor) {\n\t\t\treturn options.getStrokeColor(group, key, data, defaultStrokeColor);\n\t\t} else {\n\t\t\treturn defaultStrokeColor;\n\t\t}\n\t}\n\n\tisUserProvidedColorScaleValid() {\n\t\tconst userProvidedScale = Tools.getProperty(\n\t\t\tthis.getOptions(),\n\t\t\t'color',\n\t\t\t'scale'\n\t\t);\n\t\tconst dataGroups = this.getDataGroups();\n\n\t\tif (\n\t\t\tuserProvidedScale == null ||\n\t\t\tObject.keys(userProvidedScale).length == 0\n\t\t) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn dataGroups.some((dataGroup) =>\n\t\t\tObject.keys(userProvidedScale).includes(dataGroup.name)\n\t\t);\n\t}\n\n\tgetColorClassName(configs: {\n\t\tclassNameTypes: ColorClassNameTypes[];\n\t\tdataGroupName?: string;\n\t\toriginalClassName?: string;\n\t}) {\n\t\tconst colorPairingTag = this.colorClassNames(configs.dataGroupName);\n\t\tlet className = configs.originalClassName;\n\t\tconfigs.classNameTypes.forEach(\n\t\t\t(type) =>\n\t\t\t\t(className = configs.originalClassName\n\t\t\t\t\t? `${className} ${type}-${colorPairingTag}`\n\t\t\t\t\t: `${type}-${colorPairingTag}`)\n\t\t);\n\n\t\treturn className;\n\t}\n\n\t/**\n\t * For charts that might hold an associated status for their dataset\n\t */\n\tgetStatus() {\n\t\treturn null;\n\t}\n\n\tgetAllDataGroupsNames() {\n\t\treturn this.allDataGroups;\n\t}\n\n\t/**\n\t * Converts data provided in the older format to tabular\n\t *\n\t */\n\tprotected transformToTabularData(data) {\n\t\tconsole.warn(\n\t\t\t\"We've updated the charting data format to be tabular by default. The current format you're using is deprecated and will be removed in v1.0, read more here https://carbon-design-system.github.io/carbon-charts/?path=/story/docs-tutorials--tabular-data-format\"\n\t\t);\n\t\tconst tabularData = [];\n\t\tconst { datasets, labels } = data;\n\n\t\t// Loop through all datasets\n\t\tdatasets.forEach((dataset) => {\n\t\t\t// Update each data point to the new format\n\t\t\tdataset.data.forEach((datum, i) => {\n\t\t\t\tlet group;\n\n\t\t\t\tconst datasetLabel = Tools.getProperty(dataset, 'label');\n\t\t\t\tif (datasetLabel === null) {\n\t\t\t\t\tconst correspondingLabel = Tools.getProperty(labels, i);\n\t\t\t\t\tif (correspondingLabel) {\n\t\t\t\t\t\tgroup = correspondingLabel;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tgroup = 'Ungrouped';\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tgroup = datasetLabel;\n\t\t\t\t}\n\n\t\t\t\tconst updatedDatum = {\n\t\t\t\t\tgroup,\n\t\t\t\t\tkey: labels[i],\n\t\t\t\t};\n\n\t\t\t\tif (isNaN(datum)) {\n\t\t\t\t\tupdatedDatum['value'] = datum.value;\n\t\t\t\t\tupdatedDatum['date'] = datum.date;\n\t\t\t\t} else {\n\t\t\t\t\tupdatedDatum['value'] = datum;\n\t\t\t\t}\n\n\t\t\t\ttabularData.push(updatedDatum);\n\t\t\t});\n\t\t});\n\n\t\treturn tabularData;\n\t}\n\n\tgetTabularDataArray() {\n\t\treturn [];\n\t}\n\n\texportToCSV() {\n\t\tlet data = this.getTabularDataArray().map((row) =>\n\t\t\trow.map((column) => `\\\"${column}\\\"`)\n\t\t);\n\n\t\tlet csvString = '',\n\t\t\tcsvData = '';\n\t\tdata.forEach(function (d, i) {\n\t\t\tcsvData = d.join(',');\n\t\t\tcsvString += i < data.length ? csvData + '\\n' : csvData;\n\t\t});\n\n\t\tthis.services.files.downloadCSV(csvString, 'myChart.csv');\n\t}\n\n\tprotected getTabularData(data) {\n\t\t// if data is not an array\n\t\tif (!Array.isArray(data)) {\n\t\t\treturn this.transformToTabularData(data);\n\t\t}\n\n\t\treturn data;\n\t}\n\n\tprotected sanitize(data) {\n\t\tdata = this.getTabularData(data);\n\n\t\treturn data;\n\t}\n\n\t/*\n\t * Data groups\n\t */\n\tprotected updateAllDataGroups() {\n\t\t// allDataGroups is used to generate a color scale that applies\n\t\t// to all the groups. Now when the data updates, you might remove a group,\n\t\t// and then bring it back in a newer data update, therefore\n\t\t// the order of the groups in allDataGroups matters so that you'd never\n\t\t// have an incorrect color assigned to a group.\n\n\t\t// Also, a new group should only be added to allDataGroups if\n\t\t// it doesn't currently exist\n\n\t\tif (!this.allDataGroups) {\n\t\t\tthis.allDataGroups = this.getDataGroupNames();\n\t\t} else {\n\t\t\t// Loop through current data groups\n\t\t\tthis.getDataGroupNames().forEach((dataGroupName) => {\n\t\t\t\t// If group name hasn't been stored yet, store it\n\t\t\t\tif (this.allDataGroups.indexOf(dataGroupName) === -1) {\n\t\t\t\t\tthis.allDataGroups.push(dataGroupName);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tprotected generateDataGroups(data) {\n\t\tconst { groupMapsTo } = this.getOptions().data;\n\t\tconst { ACTIVE, DISABLED } = Configuration.legend.items.status;\n\t\tconst options = this.getOptions();\n\n\t\tconst uniqueDataGroups = Tools.removeArrayDuplicates(\n\t\t\tdata.map((datum) => datum[groupMapsTo])\n\t\t);\n\n\t\t// check if selectedGroups can be applied to chart with current data groups\n\t\tif (options.data.selectedGroups.length) {\n\t\t\tconst hasAllSelectedGroups = options.data.selectedGroups.every(\n\t\t\t\t(groupName) => uniqueDataGroups.includes(groupName)\n\t\t\t);\n\t\t\tif (!hasAllSelectedGroups) {\n\t\t\t\toptions.data.selectedGroups = [];\n\t\t\t}\n\t\t}\n\n\t\t// Get group status based on items in selected groups\n\t\tconst getStatus = (groupName) =>\n\t\t\t!options.data.selectedGroups.length ||\n\t\t\toptions.data.selectedGroups.includes(groupName)\n\t\t\t\t? ACTIVE\n\t\t\t\t: DISABLED;\n\n\t\treturn uniqueDataGroups.map((groupName) => ({\n\t\t\tname: groupName,\n\t\t\tstatus: getStatus(groupName),\n\t\t}));\n\t}\n\n\t/*\n\t * Fill scales\n\t */\n\tprotected setCustomColorScale() {\n\t\tif (!this.isUserProvidedColorScaleValid()) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst options = this.getOptions();\n\t\tconst userProvidedScale = Tools.getProperty(options, 'color', 'scale');\n\n\t\tObject.keys(userProvidedScale).forEach((dataGroup) => {\n\t\t\tif (!this.allDataGroups.includes(dataGroup)) {\n\t\t\t\tconsole.warn(`\"${dataGroup}\" does not exist in data groups.`);\n\t\t\t}\n\t\t});\n\n\t\t/**\n\t\t * Go through allDataGroups. If a data group has a color value provided\n\t\t * by the user, add that to the color range\n\t\t */\n\t\tconst providedDataGroups = this.allDataGroups.filter(\n\t\t\t(dataGroup) => userProvidedScale[dataGroup]\n\t\t);\n\n\t\tprovidedDataGroups.forEach(\n\t\t\t(dataGroup) =>\n\t\t\t\t(this.colorScale[dataGroup] = userProvidedScale[dataGroup])\n\t\t);\n\t}\n\n\t/*\n\t * Color palette\n\t */\n\tprotected setColorClassNames() {\n\t\tconst colorPairingOptions = Tools.getProperty(\n\t\t\tthis.getOptions(),\n\t\t\t'color',\n\t\t\t'pairing'\n\t\t);\n\n\t\t// Check if user has defined numberOfVariants (differ from given data)\n\t\tlet numberOfVariants = Tools.getProperty(\n\t\t\tcolorPairingOptions,\n\t\t\t'numberOfVariants'\n\t\t);\n\t\tif (!numberOfVariants || numberOfVariants < this.allDataGroups.length) {\n\t\t\tnumberOfVariants = this.allDataGroups.length;\n\t\t}\n\n\t\tlet pairingOption = Tools.getProperty(colorPairingOptions, 'option');\n\t\tconst colorPairingCounts = Configuration.color.pairingOptions;\n\n\t\t// If number of dataGroups is greater than 5, user 14-color palette\n\t\tconst numberOfColors = numberOfVariants > 5 ? 14 : numberOfVariants;\n\n\t\t// Use default palette if user choice is not in range\n\t\tpairingOption =\n\t\t\tpairingOption <= colorPairingCounts[`${numberOfColors}-color`]\n\t\t\t\t? pairingOption\n\t\t\t\t: 1;\n\n\t\t// Create color classes for graph, tooltip and stroke use\n\t\tconst colorPairing = this.allDataGroups.map(\n\t\t\t(dataGroup, index) =>\n\t\t\t\t`${numberOfColors}-${pairingOption}-${(index % 14) + 1}`\n\t\t);\n\n\t\t// Create default color classnames\n\t\tthis.colorClassNames = scaleOrdinal()\n\t\t\t.range(colorPairing)\n\t\t\t.domain(this.allDataGroups);\n\t}\n}\n"]}
1
+ {"version":3,"file":"model.js","sourceRoot":"","sources":["model.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport * as Configuration from '../configuration';\nimport { histogram as histogramConfigs } from '../configuration-non-customizable';\n\nimport { Tools } from '../tools';\nimport { Events, ScaleTypes, ColorClassNameTypes } from '../interfaces';\n\n// D3\nimport { scaleOrdinal } from 'd3-scale';\nimport { stack, stackOffsetDiverging } from 'd3-shape';\nimport { histogram } from 'd3-array';\n\n/** The charting model layer which includes mainly the chart data and options,\n * as well as some misc. information to be shared among components */\nexport class ChartModel {\n\tprotected services: any;\n\n\t// Internal Model state\n\tprotected state: any = {\n\t\toptions: {},\n\t};\n\n\t// Data labels\n\t/**\n\t * A list of all the data groups that have existed within the lifetime of the chart\n\t * @type string[]\n\t */\n\tprotected allDataGroups: string[];\n\n\t// Fill scales & fill related objects\n\tprotected colorScale: any = {};\n\n\tprotected colorClassNames: any = {};\n\n\tconstructor(services: any) {\n\t\tthis.services = services;\n\t}\n\n\tgetAllDataFromDomain(groups?) {\n\t\tif (!this.getData()) {\n\t\t\treturn null;\n\t\t}\n\t\tconst options = this.getOptions();\n\t\t// Remove datasets that have been disabled\n\t\tlet allData = this.getData();\n\t\tconst dataGroups = this.getDataGroups();\n\t\tconst { groupMapsTo } = Tools.getProperty(options, 'data');\n\t\tconst axesOptions = Tools.getProperty(options, 'axes');\n\n\t\t// filter out the groups that are irrelevant to the component\n\t\tif (groups) {\n\t\t\tallData = allData.filter((item) =>\n\t\t\t\tgroups.includes(item[groupMapsTo])\n\t\t\t);\n\t\t}\n\n\t\tif (axesOptions) {\n\t\t\tObject.keys(axesOptions).forEach((axis) => {\n\t\t\t\tconst mapsTo = axesOptions[axis].mapsTo;\n\t\t\t\tconst scaleType = axesOptions[axis].scaleType;\n\t\t\t\t// make sure linear/log values are numbers\n\t\t\t\tif (\n\t\t\t\t\tscaleType === ScaleTypes.LINEAR ||\n\t\t\t\t\tscaleType === ScaleTypes.LOG\n\t\t\t\t) {\n\t\t\t\t\tallData = allData.map((datum) => {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t...datum,\n\t\t\t\t\t\t\t[mapsTo]:\n\t\t\t\t\t\t\t\tdatum[mapsTo] === null\n\t\t\t\t\t\t\t\t\t? datum[mapsTo]\n\t\t\t\t\t\t\t\t\t: Number(datum[mapsTo]),\n\t\t\t\t\t\t};\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\t// Check for custom domain\n\t\t\t\tif (mapsTo && axesOptions[axis].domain) {\n\t\t\t\t\tif (scaleType === ScaleTypes.LABELS) {\n\t\t\t\t\t\tallData = allData.filter((datum) =>\n\t\t\t\t\t\t\taxesOptions[axis].domain.includes(datum[mapsTo])\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst [start, end] = axesOptions[axis].domain;\n\t\t\t\t\t\t// Filter out data outside domain if that datapoint is using that axis (has mapsTo property)\n\t\t\t\t\t\tallData = allData.filter(\n\t\t\t\t\t\t\t(datum) =>\n\t\t\t\t\t\t\t\t!(mapsTo in datum) ||\n\t\t\t\t\t\t\t\t(datum[mapsTo] >= start && datum[mapsTo] <= end)\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}\n\n\t\treturn allData.filter((datum) => {\n\t\t\treturn dataGroups.find(\n\t\t\t\t(group) => group.name === datum[groupMapsTo]\n\t\t\t);\n\t\t});\n\t}\n\n\t/**\n\t * Charts that have group configs passed into them, only want to retrieve the display data relevant to that chart\n\t * @param groups the included datasets for the particular chart\n\t */\n\tgetDisplayData(groups?) {\n\t\tif (!this.get('data')) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst { ACTIVE } = Configuration.legend.items.status;\n\t\tconst dataGroups = this.getDataGroups(groups);\n\t\tconst { groupMapsTo } = this.getOptions().data;\n\t\tconst allDataFromDomain = this.getAllDataFromDomain(groups);\n\n\t\treturn allDataFromDomain.filter((datum) => {\n\t\t\treturn dataGroups.find(\n\t\t\t\t(dataGroup) =>\n\t\t\t\t\tdataGroup.name === datum[groupMapsTo] &&\n\t\t\t\t\tdataGroup.status === ACTIVE\n\t\t\t);\n\t\t});\n\t}\n\n\tgetData() {\n\t\treturn this.get('data');\n\t}\n\n\tisDataEmpty() {\n\t\treturn !this.getData().length;\n\t}\n\n\t/**\n\t *\n\t * @param newData The new raw data to be set\n\t */\n\tsetData(newData) {\n\t\tconst sanitizedData = this.sanitize(Tools.clone(newData));\n\t\tconst dataGroups = this.generateDataGroups(sanitizedData);\n\n\t\tthis.set({\n\t\t\tdata: sanitizedData,\n\t\t\tdataGroups,\n\t\t});\n\n\t\treturn sanitizedData;\n\t}\n\n\tgetDataGroups(groups?) {\n\t\tconst isDataLoading = Tools.getProperty(\n\t\t\tthis.getOptions(),\n\t\t\t'data',\n\t\t\t'loading'\n\t\t);\n\n\t\t// No data should be displayed while data is still loading\n\t\tif (isDataLoading) {\n\t\t\treturn [];\n\t\t}\n\n\t\t// if its a combo chart, the specific chart will pass the model the groups it needs\n\t\tif (groups) {\n\t\t\treturn this.get('dataGroups').filter((dataGroup) =>\n\t\t\t\tgroups.includes(dataGroup.name)\n\t\t\t);\n\t\t}\n\t\treturn this.get('dataGroups');\n\t}\n\n\tgetActiveDataGroups(groups?) {\n\t\tconst { ACTIVE } = Configuration.legend.items.status;\n\n\t\treturn this.getDataGroups(groups).filter(\n\t\t\t(dataGroup) => dataGroup.status === ACTIVE\n\t\t);\n\t}\n\n\tgetDataGroupNames(groups?) {\n\t\tconst dataGroups = this.getDataGroups(groups);\n\t\treturn dataGroups.map((dataGroup) => dataGroup.name);\n\t}\n\n\tgetActiveDataGroupNames(groups?) {\n\t\tconst activeDataGroups = this.getActiveDataGroups(groups);\n\t\treturn activeDataGroups.map((dataGroup) => dataGroup.name);\n\t}\n\n\tprivate aggregateBinDataByGroup(bin) {\n\t\treturn Tools.groupBy(bin, 'group');\n\t}\n\n\tgetBinConfigurations() {\n\t\t// Manipulate data and options for Histogram\n\t\tconst data = this.getDisplayData();\n\t\tconst options = this.getOptions();\n\n\t\tconst mainXPos = this.services.cartesianScales.getMainXAxisPosition();\n\t\tconst domainIdentifier = this.services.cartesianScales.getDomainIdentifier();\n\n\t\tconst axisOptions = options.axes[mainXPos];\n\t\tconst { groupMapsTo } = options.data;\n\t\tconst { bins: axisBins = histogramConfigs.defaultBins } = axisOptions;\n\t\tconst areBinsDefined = Array.isArray(axisBins);\n\n\t\t// Get Histogram bins\n\t\tconst bins = histogram()\n\t\t\t.value((d) => d[domainIdentifier])\n\t\t\t.thresholds(axisBins)(data);\n\n\t\tif (!areBinsDefined) {\n\t\t\t// If bins are not defined by user\n\t\t\tconst binsWidth = bins[0].x1 - bins[0].x0;\n\t\t\t// Set last bin width as the others\n\t\t\tbins[bins.length - 1].x1 = +bins[bins.length - 1].x0 + binsWidth;\n\t\t} else {\n\t\t\t// Set last bin end as the last user defined one\n\t\t\tbins[bins.length - 1].x1 = axisBins[axisBins.length - 1];\n\t\t}\n\n\t\tconst binsDomain = areBinsDefined\n\t\t\t? [axisBins[0], axisBins[axisBins.length - 1]]\n\t\t\t: [bins[0].x0, bins[bins.length - 1].x1];\n\n\t\t// Get all groups\n\t\tconst groupsKeys = Array.from(new Set(data.map((d) => d[groupMapsTo])));\n\n\t\tconst histogramData = [];\n\n\t\t// Group data by bin\n\t\tbins.forEach((bin) => {\n\t\t\tconst key = `${bin.x0}-${bin.x1}`;\n\t\t\tconst aggregateDataByGroup = this.aggregateBinDataByGroup(bin);\n\n\t\t\tgroupsKeys.forEach((group: string) => {\n\t\t\t\t// For each dataset put a bin with value 0 if not exist\n\t\t\t\t// (Scale X won't change when changing showed datasets)\n\t\t\t\thistogramData.push({\n\t\t\t\t\tgroup,\n\t\t\t\t\tkey,\n\t\t\t\t\tvalue: aggregateDataByGroup[group] || 0,\n\t\t\t\t\tbin: bin.x0,\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\n\t\treturn {\n\t\t\tbins,\n\t\t\tbinsDomain,\n\t\t};\n\t}\n\n\tgetBinnedStackedData() {\n\t\tconst options = this.getOptions();\n\t\tconst { groupMapsTo } = options.data;\n\n\t\tconst dataGroupNames = this.getActiveDataGroupNames();\n\n\t\tconst { bins } = this.getBinConfigurations();\n\t\tconst dataValuesGroupedByKeys = this.getDataValuesGroupedByKeys({\n\t\t\tbins,\n\t\t});\n\n\t\treturn stack()\n\t\t\t.keys(dataGroupNames)(dataValuesGroupedByKeys)\n\t\t\t.map((series, i) => {\n\t\t\t\t// Add data group names to each series\n\t\t\t\treturn Object.keys(series)\n\t\t\t\t\t.filter((key: any) => !isNaN(key))\n\t\t\t\t\t.map((key) => {\n\t\t\t\t\t\tconst element = series[key];\n\t\t\t\t\t\telement[groupMapsTo] = dataGroupNames[i];\n\n\t\t\t\t\t\treturn element;\n\t\t\t\t\t});\n\t\t\t});\n\t}\n\n\tgetGroupedData(groups?) {\n\t\tconst displayData = this.getDisplayData(groups);\n\t\tconst groupedData = {};\n\t\tconst { groupMapsTo } = this.getOptions().data;\n\n\t\tdisplayData.map((datum) => {\n\t\t\tconst group = datum[groupMapsTo];\n\t\t\tif (\n\t\t\t\tgroupedData[group] !== null &&\n\t\t\t\tgroupedData[group] !== undefined\n\t\t\t) {\n\t\t\t\tgroupedData[group].push(datum);\n\t\t\t} else {\n\t\t\t\tgroupedData[group] = [datum];\n\t\t\t}\n\t\t});\n\n\t\treturn Object.keys(groupedData).map((groupName) => ({\n\t\t\tname: groupName,\n\t\t\tdata: groupedData[groupName],\n\t\t}));\n\t}\n\n\tgetStackKeys({ bins = null, groups = null }) {\n\t\tconst options = this.getOptions();\n\n\t\tconst displayData = this.getDisplayData(groups);\n\n\t\tlet stackKeys;\n\t\tif (bins) {\n\t\t\tstackKeys = bins.map((bin) => `${bin.x0}-${bin.x1}`);\n\t\t} else {\n\t\t\tstackKeys = Tools.removeArrayDuplicates(\n\t\t\t\tdisplayData.map((datum) => {\n\t\t\t\t\tconst domainIdentifier = this.services.cartesianScales.getDomainIdentifier(\n\t\t\t\t\t\tdatum\n\t\t\t\t\t);\n\n\t\t\t\t\treturn datum[domainIdentifier] &&\n\t\t\t\t\t\ttypeof datum[domainIdentifier].toString === 'function'\n\t\t\t\t\t\t? datum[domainIdentifier].toString()\n\t\t\t\t\t\t: datum[domainIdentifier];\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\n\t\tconst axisPosition = this.services.cartesianScales.domainAxisPosition;\n\t\tconst scaleType = options.axes[axisPosition].scaleType;\n\n\t\t// Sort keys\n\t\tif (scaleType === ScaleTypes.TIME) {\n\t\t\tstackKeys.sort((a: any, b: any) => {\n\t\t\t\tconst dateA: any = new Date(a);\n\t\t\t\tconst dateB: any = new Date(b);\n\n\t\t\t\treturn dateA - dateB;\n\t\t\t});\n\t\t} else if (\n\t\t\tscaleType === ScaleTypes.LOG ||\n\t\t\tscaleType === ScaleTypes.LINEAR\n\t\t) {\n\t\t\tstackKeys.sort((a: any, b: any) => a - b);\n\t\t}\n\n\t\treturn stackKeys;\n\t}\n\n\tgetDataValuesGroupedByKeys({ bins = null, groups = null }) {\n\t\tconst options = this.getOptions();\n\t\tconst { groupMapsTo } = options.data;\n\t\tconst displayData = this.getDisplayData(groups);\n\n\t\tconst dataGroupNames = this.getDataGroupNames();\n\n\t\tconst stackKeys = this.getStackKeys({ bins, groups });\n\t\tif (bins) {\n\t\t\treturn stackKeys.map((key) => {\n\t\t\t\tconst [binStart, binEnd] = key.split('-');\n\n\t\t\t\tconst correspondingValues = { x0: binStart, x1: binEnd };\n\t\t\t\tconst correspondingBin = bins.find(\n\t\t\t\t\t(bin) => bin.x0.toString() === binStart.toString()\n\t\t\t\t);\n\n\t\t\t\tdataGroupNames.forEach((dataGroupName) => {\n\t\t\t\t\tcorrespondingValues[\n\t\t\t\t\t\tdataGroupName\n\t\t\t\t\t] = correspondingBin.filter(\n\t\t\t\t\t\t(binItem) => binItem[groupMapsTo] === dataGroupName\n\t\t\t\t\t).length;\n\t\t\t\t});\n\n\t\t\t\treturn correspondingValues;\n\t\t\t}) as any;\n\t\t}\n\n\t\treturn stackKeys.map((key) => {\n\t\t\tconst correspondingValues = { sharedStackKey: key };\n\t\t\tdataGroupNames.forEach((dataGroupName) => {\n\t\t\t\tconst correspondingDatum = displayData.find((datum) => {\n\t\t\t\t\tconst domainIdentifier = this.services.cartesianScales.getDomainIdentifier(\n\t\t\t\t\t\tdatum\n\t\t\t\t\t);\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\tdatum[groupMapsTo] === dataGroupName &&\n\t\t\t\t\t\tdatum.hasOwnProperty(domainIdentifier) &&\n\t\t\t\t\t\tdatum[domainIdentifier].toString() === key\n\t\t\t\t\t);\n\t\t\t\t});\n\n\t\t\t\tconst rangeIdentifier = this.services.cartesianScales.getRangeIdentifier(\n\t\t\t\t\tcorrespondingValues\n\t\t\t\t);\n\t\t\t\tcorrespondingValues[dataGroupName] = correspondingDatum\n\t\t\t\t\t? correspondingDatum[rangeIdentifier]\n\t\t\t\t\t: null;\n\t\t\t});\n\n\t\t\treturn correspondingValues;\n\t\t}) as any;\n\t}\n\n\tgetStackedData({ percentage = false, groups = null, divergent = false }) {\n\t\tconst options = this.getOptions();\n\t\tconst { groupMapsTo } = options.data;\n\n\t\t// Get only active data groups so non-active data groups are not rendered\n\t\t// on legend item click\n\t\tconst dataGroupNames = this.getActiveDataGroupNames(groups);\n\t\tconst dataValuesGroupedByKeys = this.getDataValuesGroupedByKeys({\n\t\t\tgroups,\n\t\t});\n\n\t\tif (percentage) {\n\t\t\tconst maxByKey = Tools.fromPairs(\n\t\t\t\tdataValuesGroupedByKeys.map((d: any) => [d.sharedStackKey, 0])\n\t\t\t);\n\n\t\t\tdataValuesGroupedByKeys.forEach((d: any) => {\n\t\t\t\tdataGroupNames.forEach((name) => {\n\t\t\t\t\tmaxByKey[d.sharedStackKey] += d[name];\n\t\t\t\t});\n\t\t\t});\n\n\t\t\t// cycle through data values to get percentage\n\t\t\tdataValuesGroupedByKeys.forEach((d: any) => {\n\t\t\t\tdataGroupNames.forEach((name) => {\n\t\t\t\t\tif (maxByKey[d.sharedStackKey]) {\n\t\t\t\t\t\td[name] = (d[name] / maxByKey[d.sharedStackKey]) * 100;\n\t\t\t\t\t} else {\n\t\t\t\t\t\td[name] = 0;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\tconst stackToUse = divergent\n\t\t\t? stack().offset(stackOffsetDiverging)\n\t\t\t: stack();\n\n\t\treturn stackToUse\n\t\t\t.keys(dataGroupNames)(dataValuesGroupedByKeys)\n\t\t\t.map((series, i) => {\n\t\t\t\t// Add data group names to each series\n\t\t\t\treturn Object.keys(series)\n\t\t\t\t\t.filter((key: any) => !isNaN(key))\n\t\t\t\t\t.map((key) => {\n\t\t\t\t\t\tconst element = series[key];\n\t\t\t\t\t\telement[groupMapsTo] = dataGroupNames[i];\n\n\t\t\t\t\t\treturn element;\n\t\t\t\t\t});\n\t\t\t});\n\t}\n\n\t/**\n\t * @return {Object} The chart's options\n\t */\n\tgetOptions() {\n\t\treturn this.state.options;\n\t}\n\n\tset(newState: any, configs?: any) {\n\t\tthis.state = Object.assign({}, this.state, newState);\n\t\tconst newConfig = Object.assign(\n\t\t\t{ skipUpdate: false, animate: true }, // default configs\n\t\t\tconfigs\n\t\t);\n\t\tif (!newConfig.skipUpdate) {\n\t\t\tthis.update(newConfig.animate);\n\t\t}\n\t}\n\n\tget(property?: string) {\n\t\tif (property) {\n\t\t\treturn this.state[property];\n\t\t} else {\n\t\t\treturn this.state;\n\t\t}\n\t}\n\n\t/**\n\t *\n\t * @param newOptions New options to be set\n\t */\n\tsetOptions(newOptions) {\n\t\tconst options = this.getOptions();\n\t\tTools.updateLegendAdditionalItems(options, newOptions);\n\n\t\tthis.set({\n\t\t\toptions: Tools.merge(options, newOptions),\n\t\t});\n\t}\n\n\t/**\n\t *\n\t * Updates miscellanous information within the model\n\t * such as the color scales, or the legend data labels\n\t */\n\tupdate(animate = true) {\n\t\tif (!this.getDisplayData()) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.updateAllDataGroups();\n\n\t\tthis.setCustomColorScale();\n\t\tthis.setColorClassNames();\n\t\tthis.services.events.dispatchEvent(Events.Model.UPDATE, { animate });\n\t}\n\n\t/*\n\t * Data labels\n\t */\n\ttoggleDataLabel(changedLabel: string) {\n\t\tconst { ACTIVE, DISABLED } = Configuration.legend.items.status;\n\t\tconst dataGroups = this.getDataGroups();\n\n\t\tconst hasDeactivatedItems = dataGroups.some(\n\t\t\t(group) => group.status === DISABLED\n\t\t);\n\t\tconst activeItems = dataGroups.filter(\n\t\t\t(group) => group.status === ACTIVE\n\t\t);\n\n\t\t// If there are deactivated items, toggle \"changedLabel\"\n\t\tif (hasDeactivatedItems) {\n\t\t\t// If the only active item is being toggled\n\t\t\t// Activate all items\n\t\t\tif (\n\t\t\t\tactiveItems.length === 1 &&\n\t\t\t\tactiveItems[0].name === changedLabel\n\t\t\t) {\n\t\t\t\t// If every item is active, then enable \"changedLabel\" and disable all other items\n\t\t\t\tdataGroups.forEach((group, i) => {\n\t\t\t\t\tdataGroups[i].status = ACTIVE;\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tconst indexToChange = dataGroups.findIndex(\n\t\t\t\t\t(group) => group.name === changedLabel\n\t\t\t\t);\n\t\t\t\tdataGroups[indexToChange].status =\n\t\t\t\t\tdataGroups[indexToChange].status === DISABLED\n\t\t\t\t\t\t? ACTIVE\n\t\t\t\t\t\t: DISABLED;\n\t\t\t}\n\t\t} else {\n\t\t\t// If every item is active, then enable \"changedLabel\" and disable all other items\n\t\t\tdataGroups.forEach((group, i) => {\n\t\t\t\tdataGroups[i].status =\n\t\t\t\t\tgroup.name === changedLabel ? ACTIVE : DISABLED;\n\t\t\t});\n\t\t}\n\n\t\t// Updates selected groups\n\t\tconst updatedActiveItems = dataGroups.filter(\n\t\t\t(group) => group.status === ACTIVE\n\t\t);\n\t\tconst options = this.getOptions();\n\n\t\tconst hasUpdatedDeactivatedItems = dataGroups.some(\n\t\t\t(group) => group.status === DISABLED\n\t\t);\n\n\t\t// If there are deactivated items, map the item name into selected groups\n\t\tif (hasUpdatedDeactivatedItems) {\n\t\t\toptions.data.selectedGroups = updatedActiveItems.map(\n\t\t\t\t(activeItem) => activeItem.name\n\t\t\t);\n\t\t} else {\n\t\t\t// If every item is active, clear array\n\t\t\toptions.data.selectedGroups = [];\n\t\t}\n\n\t\t// dispatch legend filtering event with the status of all the dataLabels\n\t\tthis.services.events.dispatchEvent(Events.Legend.ITEMS_UPDATE, {\n\t\t\tdataGroups,\n\t\t});\n\n\t\t// Update model\n\t\tthis.set({\n\t\t\tdataGroups,\n\t\t});\n\t}\n\n\t/**\n\t * Should the data point be filled?\n\t * @param group\n\t * @param key\n\t * @param value\n\t * @param defaultFilled the default for this chart\n\t */\n\tgetIsFilled(group: any, key?: any, data?: any, defaultFilled?: boolean) {\n\t\tconst options = this.getOptions();\n\t\tif (options.getIsFilled) {\n\t\t\treturn options.getIsFilled(group, key, data, defaultFilled);\n\t\t} else {\n\t\t\treturn defaultFilled;\n\t\t}\n\t}\n\n\tgetFillColor(group: any, key?: any, data?: any) {\n\t\tconst options = this.getOptions();\n\t\tconst defaultFillColor = Tools.getProperty(this.colorScale, group);\n\n\t\tif (options.getFillColor) {\n\t\t\treturn options.getFillColor(group, key, data, defaultFillColor);\n\t\t} else {\n\t\t\treturn defaultFillColor;\n\t\t}\n\t}\n\n\tgetStrokeColor(group: any, key?: any, data?: any) {\n\t\tconst options = this.getOptions();\n\t\tconst defaultStrokeColor = Tools.getProperty(this.colorScale, group);\n\n\t\tif (options.getStrokeColor) {\n\t\t\treturn options.getStrokeColor(group, key, data, defaultStrokeColor);\n\t\t} else {\n\t\t\treturn defaultStrokeColor;\n\t\t}\n\t}\n\n\tisUserProvidedColorScaleValid() {\n\t\tconst userProvidedScale = Tools.getProperty(\n\t\t\tthis.getOptions(),\n\t\t\t'color',\n\t\t\t'scale'\n\t\t);\n\t\tconst dataGroups = this.getDataGroups();\n\n\t\tif (\n\t\t\tuserProvidedScale == null ||\n\t\t\tObject.keys(userProvidedScale).length == 0\n\t\t) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn dataGroups.some((dataGroup) =>\n\t\t\tObject.keys(userProvidedScale).includes(dataGroup.name)\n\t\t);\n\t}\n\n\tgetColorClassName(configs: {\n\t\tclassNameTypes: ColorClassNameTypes[];\n\t\tdataGroupName?: string;\n\t\toriginalClassName?: string;\n\t}) {\n\t\tconst colorPairingTag = this.colorClassNames(configs.dataGroupName);\n\t\tlet className = configs.originalClassName;\n\t\tconfigs.classNameTypes.forEach(\n\t\t\t(type) =>\n\t\t\t\t(className = configs.originalClassName\n\t\t\t\t\t? `${className} ${type}-${colorPairingTag}`\n\t\t\t\t\t: `${type}-${colorPairingTag}`)\n\t\t);\n\n\t\treturn className;\n\t}\n\n\t/**\n\t * For charts that might hold an associated status for their dataset\n\t */\n\tgetStatus() {\n\t\treturn null;\n\t}\n\n\tgetAllDataGroupsNames() {\n\t\treturn this.allDataGroups;\n\t}\n\n\t/**\n\t * Converts data provided in the older format to tabular\n\t *\n\t */\n\tprotected transformToTabularData(data) {\n\t\tconsole.warn(\n\t\t\t\"We've updated the charting data format to be tabular by default. The current format you're using is deprecated and will be removed in v1.0, read more here https://carbon-design-system.github.io/carbon-charts/?path=/story/docs-tutorials--tabular-data-format\"\n\t\t);\n\t\tconst tabularData = [];\n\t\tconst { datasets, labels } = data;\n\n\t\t// Loop through all datasets\n\t\tdatasets.forEach((dataset) => {\n\t\t\t// Update each data point to the new format\n\t\t\tdataset.data.forEach((datum, i) => {\n\t\t\t\tlet group;\n\n\t\t\t\tconst datasetLabel = Tools.getProperty(dataset, 'label');\n\t\t\t\tif (datasetLabel === null) {\n\t\t\t\t\tconst correspondingLabel = Tools.getProperty(labels, i);\n\t\t\t\t\tif (correspondingLabel) {\n\t\t\t\t\t\tgroup = correspondingLabel;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tgroup = 'Ungrouped';\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tgroup = datasetLabel;\n\t\t\t\t}\n\n\t\t\t\tconst updatedDatum = {\n\t\t\t\t\tgroup,\n\t\t\t\t\tkey: labels[i],\n\t\t\t\t};\n\n\t\t\t\tif (isNaN(datum)) {\n\t\t\t\t\tupdatedDatum['value'] = datum.value;\n\t\t\t\t\tupdatedDatum['date'] = datum.date;\n\t\t\t\t} else {\n\t\t\t\t\tupdatedDatum['value'] = datum;\n\t\t\t\t}\n\n\t\t\t\ttabularData.push(updatedDatum);\n\t\t\t});\n\t\t});\n\n\t\treturn tabularData;\n\t}\n\n\tgetTabularDataArray() {\n\t\treturn [];\n\t}\n\n\texportToCSV() {\n\t\tlet data = this.getTabularDataArray().map((row) =>\n\t\t\trow.map((column) => `\\\"${column}\\\"`)\n\t\t);\n\n\t\tlet csvString = '',\n\t\t\tcsvData = '';\n\t\tdata.forEach(function (d, i) {\n\t\t\tcsvData = d.join(',');\n\t\t\tcsvString += i < data.length ? csvData + '\\n' : csvData;\n\t\t});\n\n\t\tthis.services.files.downloadCSV(csvString, 'myChart.csv');\n\t}\n\n\tprotected getTabularData(data) {\n\t\t// if data is not an array\n\t\tif (!Array.isArray(data)) {\n\t\t\treturn this.transformToTabularData(data);\n\t\t}\n\n\t\treturn data;\n\t}\n\n\tprotected sanitize(data) {\n\t\tdata = this.getTabularData(data);\n\n\t\treturn data;\n\t}\n\n\t/*\n\t * Data groups\n\t */\n\tprotected updateAllDataGroups() {\n\t\t// allDataGroups is used to generate a color scale that applies\n\t\t// to all the groups. Now when the data updates, you might remove a group,\n\t\t// and then bring it back in a newer data update, therefore\n\t\t// the order of the groups in allDataGroups matters so that you'd never\n\t\t// have an incorrect color assigned to a group.\n\n\t\t// Also, a new group should only be added to allDataGroups if\n\t\t// it doesn't currently exist\n\n\t\tif (!this.allDataGroups) {\n\t\t\tthis.allDataGroups = this.getDataGroupNames();\n\t\t} else {\n\t\t\t// Loop through current data groups\n\t\t\tthis.getDataGroupNames().forEach((dataGroupName) => {\n\t\t\t\t// If group name hasn't been stored yet, store it\n\t\t\t\tif (this.allDataGroups.indexOf(dataGroupName) === -1) {\n\t\t\t\t\tthis.allDataGroups.push(dataGroupName);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tprotected generateDataGroups(data) {\n\t\tconst { groupMapsTo } = this.getOptions().data;\n\t\tconst { ACTIVE, DISABLED } = Configuration.legend.items.status;\n\t\tconst options = this.getOptions();\n\n\t\tconst uniqueDataGroups = Tools.removeArrayDuplicates(\n\t\t\tdata.map((datum) => datum[groupMapsTo])\n\t\t);\n\n\t\t// check if selectedGroups can be applied to chart with current data groups\n\t\tif (options.data.selectedGroups.length) {\n\t\t\tconst hasAllSelectedGroups = options.data.selectedGroups.every(\n\t\t\t\t(groupName) => uniqueDataGroups.includes(groupName)\n\t\t\t);\n\t\t\tif (!hasAllSelectedGroups) {\n\t\t\t\toptions.data.selectedGroups = [];\n\t\t\t}\n\t\t}\n\n\t\t// Get group status based on items in selected groups\n\t\tconst getStatus = (groupName) =>\n\t\t\t!options.data.selectedGroups.length ||\n\t\t\toptions.data.selectedGroups.includes(groupName)\n\t\t\t\t? ACTIVE\n\t\t\t\t: DISABLED;\n\n\t\treturn uniqueDataGroups.map((groupName) => ({\n\t\t\tname: groupName,\n\t\t\tstatus: getStatus(groupName),\n\t\t}));\n\t}\n\n\t/*\n\t * Fill scales\n\t */\n\tprotected setCustomColorScale() {\n\t\tif (!this.isUserProvidedColorScaleValid()) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst options = this.getOptions();\n\t\tconst userProvidedScale = Tools.getProperty(options, 'color', 'scale');\n\n\t\tObject.keys(userProvidedScale).forEach((dataGroup) => {\n\t\t\tif (!this.allDataGroups.includes(dataGroup)) {\n\t\t\t\tconsole.warn(`\"${dataGroup}\" does not exist in data groups.`);\n\t\t\t}\n\t\t});\n\n\t\t/**\n\t\t * Go through allDataGroups. If a data group has a color value provided\n\t\t * by the user, add that to the color range\n\t\t */\n\t\tconst providedDataGroups = this.allDataGroups.filter(\n\t\t\t(dataGroup) => userProvidedScale[dataGroup]\n\t\t);\n\n\t\tprovidedDataGroups.forEach(\n\t\t\t(dataGroup) =>\n\t\t\t\t(this.colorScale[dataGroup] = userProvidedScale[dataGroup])\n\t\t);\n\t}\n\n\t/*\n\t * Color palette\n\t */\n\tprotected setColorClassNames() {\n\t\tconst colorPairingOptions = Tools.getProperty(\n\t\t\tthis.getOptions(),\n\t\t\t'color',\n\t\t\t'pairing'\n\t\t);\n\n\t\t// Check if user has defined numberOfVariants (differ from given data)\n\t\tlet numberOfVariants = Tools.getProperty(\n\t\t\tcolorPairingOptions,\n\t\t\t'numberOfVariants'\n\t\t);\n\t\tif (!numberOfVariants || numberOfVariants < this.allDataGroups.length) {\n\t\t\tnumberOfVariants = this.allDataGroups.length;\n\t\t}\n\n\t\tlet pairingOption = Tools.getProperty(colorPairingOptions, 'option');\n\t\tconst colorPairingCounts = Configuration.color.pairingOptions;\n\n\t\t// If number of dataGroups is greater than 5, user 14-color palette\n\t\tconst numberOfColors = numberOfVariants > 5 ? 14 : numberOfVariants;\n\n\t\t// Use default palette if user choice is not in range\n\t\tpairingOption =\n\t\t\tpairingOption <= colorPairingCounts[`${numberOfColors}-color`]\n\t\t\t\t? pairingOption\n\t\t\t\t: 1;\n\n\t\t// Create color classes for graph, tooltip and stroke use\n\t\tconst colorPairing = this.allDataGroups.map(\n\t\t\t(dataGroup, index) =>\n\t\t\t\t`${numberOfColors}-${pairingOption}-${(index % 14) + 1}`\n\t\t);\n\n\t\t// Create default color classnames\n\t\tthis.colorClassNames = scaleOrdinal()\n\t\t\t.range(colorPairing)\n\t\t\t.domain(this.allDataGroups);\n\t}\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@carbon/charts",
3
- "version": "0.52.4",
3
+ "version": "0.53.3",
4
4
  "description": "Carbon charting components",
5
5
  "main": "./bundle.js",
6
6
  "module": "./index.js",
@@ -174,7 +174,7 @@
174
174
  "signature": "0e3e81163b8560e5cf094a3957ed8e8ef46e38c274a0889df30c982d243046a6"
175
175
  },
176
176
  "../src/model/model.ts": {
177
- "version": "a5584d0c067ac68b21d100bcd48cea8e17898ae1ed4e3a0762af884afda9fa9c",
177
+ "version": "e9de6dbc08553fccd6392af786ab002d418aafd26ecd31a53ae984120a4023b8",
178
178
  "signature": "6899451304d61d56c90f54f8072266fb62adfa108839b6fb6b510c10a09a75a9"
179
179
  },
180
180
  "../src/services/service.ts": {
@@ -302,7 +302,7 @@
302
302
  "signature": "03c2081ebe8e32a16aa2c3ed3ae49083ce863392e2bb8d1369c0fc29f938cf7a"
303
303
  },
304
304
  "../src/components/essentials/tooltip-axis.ts": {
305
- "version": "ff29b6d7249d8af76a67ef07558e209de9bba1477669919efb7dfaa5b2dcb254",
305
+ "version": "f116fa057340d29e3934a1ec632250fb534e5b8303098bce67caf1889f8cf275",
306
306
  "signature": "d70e6454ac2a015783f9d10096feaab036b6f73479030f2808547d9579c885be"
307
307
  },
308
308
  "../src/components/axes/chart-clip.ts": {
@@ -474,7 +474,7 @@
474
474
  "signature": "d3eb371b7f7b9a5f928c5273da425542b5e479ba654216cd1df65d255c36c072"
475
475
  },
476
476
  "../src/components/axes/toolbar.ts": {
477
- "version": "08fdfde156cb98dfdc0d709549b11ff033e01ada9e0f30b3ec11dae8a0f8b0dd",
477
+ "version": "d04649564f78db6c136eda8e4ce85cb371c1d2164e107668edcf8c9c9a4bc1e1",
478
478
  "signature": "f21d3389796d77e9e987bb9f8145b254b53302a5663c9d291da326dcf97740e7"
479
479
  },
480
480
  "../src/components/axes/zero-line.ts": {