@dhis2/analytics 11.0.15 → 11.0.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +35 -0
- package/build/cjs/lib.js +316 -123
- package/build/cjs/lib.js.map +1 -1
- package/build/es/lib.js +317 -125
- package/build/es/lib.js.map +1 -1
- package/build/stats.html +1 -1
- package/package.json +1 -1
package/build/es/lib.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lib.js","sources":["../../src/locales/index.js","../../src/components/ItemSelector/widgets/ItemIcon.js","../../src/components/ItemSelector/widgets/styles/UnselectedItem.style.js","../../src/components/ItemSelector/widgets/UnselectedItem.js","../../src/components/ItemSelector/widgets/styles/ArrowButton.style.js","../../src/components/ItemSelector/widgets/ArrowButton.js","../../src/components/ItemSelector/modules/toggler.js","../../src/components/ItemSelector/UnselectedItems.js","../../src/components/ItemSelector/widgets/DeselectIconButton.js","../../src/components/ItemSelector/widgets/styles/SelectedItem.style.js","../../src/components/ItemSelector/widgets/SelectedItem.js","../../src/components/ItemSelector/modules/reorderList.js","../../src/components/ItemSelector/styles/SelectedItems.style.js","../../src/components/ItemSelector/SelectedItems.js","../../src/components/ItemSelector/styles/ItemSelector.style.js","../../src/components/ItemSelector/ItemSelector.js","../../src/modules/dataSets.js","../../src/modules/dataTypes.js","../../src/components/DataDimension/DataTypesSelector.js","../../src/components/DataDimension/Detail.js","../../src/components/DataDimension/styles/Groups.style.js","../../src/components/DataDimension/Groups.js","../../src/components/Filter/Filter.js","../../src/components/styles/FilterField.style.js","../../src/components/FilterField.js","../../src/api/index.js","../../src/api/dimensions.js","../../src/assets/DataIcon.js","../../src/assets/PeriodIcon.js","../../src/assets/OrgUnitIcon.js","../../src/assets/AssignedCategoriesIcon.js","../../src/modules/predefinedDimensions.js","../../src/components/DataDimension/DataDimension.js","../../src/components/PeriodDimension/utils/fixedPeriods.js","../../src/components/PeriodDimension/styles/PeriodFilter.style.js","../../src/components/PeriodDimension/FixedPeriodFilter.js","../../src/components/PeriodDimension/utils/relativePeriods.js","../../src/components/PeriodDimension/RelativePeriodFilter.js","../../src/components/styles/DimensionSelector.style.js","../../src/components/styles/TransferOption.style.js","../../src/components/TransferOption.js","../../src/assets/DimensionItemIcons/PeriodIcon.js","../../src/modules/dimensionSelectorHelper.js","../../src/components/PeriodDimension/PeriodTransfer.js","../../src/components/PeriodDimension/PeriodDimension.js","../../src/components/PeriodDimension/styles/FixedPeriodSelect.style.js","../../src/components/PeriodDimension/FixedPeriodSelect.js","../../src/api/organisationUnits.js","../../src/modules/ouIdHelper/index.js","../../src/components/OrgUnitDimension/OrgUnitDimension.js","../../src/assets/DimensionItemIcons/GenericIcon.js","../../src/components/DynamicDimension/ItemSelector.js","../../src/components/DynamicDimension/DynamicDimension.js","../../src/components/DimensionsPanel/List/styles/DimensionLabel.style.js","../../src/components/DimensionsPanel/List/DimensionLabel.js","../../src/components/DimensionsPanel/List/styles/RecommendedIcon.style.js","../../src/components/DimensionsPanel/List/RecommendedIcon.js","../../src/assets/MoreHorizontalIcon.js","../../src/components/DimensionsPanel/List/OptionsButton.js","../../src/assets/DynamicDimensionIcon.js","../../src/components/DimensionsPanel/List/styles/DimensionItem.style.js","../../src/components/DimensionsPanel/List/DimensionItem.js","../../src/components/DimensionsPanel/List/styles/DimensionList.style.js","../../src/components/DimensionsPanel/List/DimensionList.js","../../src/components/DimensionsPanel/styles/DimensionsPanel.style.js","../../src/components/DimensionsPanel/DimensionsPanel.js","../../src/modules/layout/axis.js","../../src/assets/BarIcon.js","../../src/assets/StackedBarIcon.js","../../src/assets/ColumnIcon.js","../../src/assets/StackedColumnIcon.js","../../src/assets/LineIcon.js","../../src/assets/AreaIcon.js","../../src/assets/StackedAreaIcon.js","../../src/assets/PieIcon.js","../../src/assets/RadarIcon.js","../../src/assets/GaugeIcon.js","../../src/assets/YearOverYearLineIcon.js","../../src/assets/YearOverYearColumnIcon.js","../../src/assets/SingleValueIcon.js","../../src/assets/PivotTableIcon.js","../../src/modules/visTypes.js","../../src/modules/layoutUiRules/rules.js","../../src/modules/layoutUiRules/rulesHelper.js","../../src/modules/layoutUiRules/rulesUtils.js","../../src/modules/layoutTypes.js","../../src/modules/axis.js","../../src/modules/visTypeToLayoutType.js","../../src/components/DimensionMenu.js","../../src/modules/pivotTable/parseValue.js","../../src/modules/pivotTable/pivotTableConstants.js","../../src/modules/pivotTable/renderValue.js","../../src/modules/pivotTable/measureText.js","../../src/modules/pivotTable/PivotTableEngine.js","../../src/modules/pivotTable/useParentSize.js","../../src/modules/pivotTable/useScrollPosition.js","../../src/modules/pivotTable/clipAxis.js","../../src/modules/pivotTable/clipPartitionedAxis.js","../../src/modules/pivotTable/useTableClipping.js","../../src/components/PivotTable/PivotTableEngineContext.js","../../src/components/PivotTable/styles/PivotTable.style.js","../../src/components/PivotTable/PivotTableContainer.js","../../src/components/PivotTable/PivotTableClippedAxis.js","../../src/modules/pivotTable/getHeaderForDisplay.js","../../src/components/PivotTable/PivotTableHeaderCell.js","../../src/components/PivotTable/PivotTableCell.js","../../src/components/PivotTable/icons/SortIconAscending.js","../../src/components/PivotTable/icons/SortIconDescending.js","../../src/components/PivotTable/icons/SortIconIdle.js","../../src/components/PivotTable/PivotTableSortIcon.js","../../src/components/PivotTable/PivotTableColumnHeaderCell.js","../../src/components/PivotTable/PivotTableDimensionLabelCell.js","../../src/components/PivotTable/PivotTableEmptyCell.js","../../src/components/PivotTable/PivotTableColumnHeaders.js","../../src/components/PivotTable/PivotTableTitleRow.js","../../src/modules/layout/dimension.js","../../src/modules/layout/dimensionIs.js","../../src/modules/layout/dimensionIsEmpty.js","../../src/modules/layout/dimensionIsValid.js","../../src/modules/layout/dimensionGetItems.js","../../src/modules/getOuLevelAndGroupText.js","../../src/visualizations/util/getFilterText.js","../../src/components/PivotTable/PivotTableTitleRows.js","../../src/components/PivotTable/PivotTableHead.js","../../src/components/PivotTable/PivotTableEmptyRow.js","../../src/components/PivotTable/PivotTableRowHeaderCell.js","../../src/modules/pivotTable/isColorBright.js","../../src/modules/legends.js","../../src/modules/pivotTable/applyLegendSet.js","../../src/components/PivotTable/PivotTableValueCell.js","../../src/components/PivotTable/PivotTableRow.js","../../src/components/PivotTable/PivotTableBody.js","../../src/modules/pivotTable/useSortableColumns.js","../../src/components/PivotTable/PivotTable.js","../../src/modules/relativeItems/index.js","../../src/modules/layout/layout.js","../../src/modules/layout/dimensionGetId.js","../../src/modules/layout/layoutFilterDimensions.js","../../src/modules/layout/layoutGetAllAxes.js","../../src/modules/layout/layoutGetAllDimensions.js","../../src/modules/layout/axisGetAllItems.js","../../src/modules/layout/layoutGetAllItems.js","../../src/modules/layout/item.js","../../src/modules/layout/itemGetId.js","../../src/modules/layout/layoutGetAllItemIds.js","../../src/modules/layout/axisGetDimensionIds.js","../../src/modules/layout/layoutGetAxisIdDimensionIdsObject.js","../../src/modules/layout/layoutGetDimension.js","../../src/modules/layout/layoutGetDimensionItems.js","../../src/modules/layout/axisGetDimension.js","../../src/modules/layout/axisHasDimension.js","../../src/modules/layout/layoutReplaceDimension.js","../../src/modules/layout/dimensionGetItemIds.js","../../src/modules/layout/layoutGetDimensionIdItemIdsObject.js","../../src/modules/layout/axisHasDataDimension.js","../../src/modules/layout/layoutHasDataDimension.js","../../src/modules/layout/layoutHasDimension.js","../../src/modules/layout/layoutHasDynamicDimension.js","../../src/modules/layout/axisHasPeriodDimension.js","../../src/modules/layout/layoutHasPeriodDimension.js","../../src/modules/layout/axisHasOuDimension.js","../../src/modules/layout/axisIsEmpty.js","../../src/modules/layout/dimensionCreate.js","../../src/modules/layout/itemIsValid.js","../../src/visualizations/store/validators/dhis/index.js","../../src/visualizations/store/validators/index.js","../../src/visualizations/store/adapters/dhis_highcharts/yearOnYear.js","../../src/visualizations/store/adapters/dhis_highcharts/pie.js","../../src/visualizations/store/adapters/dhis_highcharts/gauge.js","../../src/visualizations/config/adapters/dhis_highcharts/getTwoCategorySplitSerieData.js","../../src/visualizations/store/adapters/dhis_highcharts/twoCategory.js","../../src/visualizations/store/adapters/dhis_highcharts/index.js","../../src/visualizations/store/adapters/dhis_dhis/singleValue.js","../../src/visualizations/store/adapters/dhis_dhis/index.js","../../src/visualizations/store/adapters/index.js","../../src/visualizations/store/index.js","../../src/visualizations/config/validators/dhis/index.js","../../src/visualizations/config/validators/index.js","../../src/visualizations/config/adapters/dhis_highcharts/type.js","../../src/visualizations/config/adapters/dhis_highcharts/chart.js","../../src/modules/fontStyle.js","../../src/visualizations/config/adapters/dhis_highcharts/getTextAlignOption.js","../../src/visualizations/config/adapters/dhis_highcharts/getAxisTitle.js","../../src/visualizations/config/adapters/dhis_highcharts/getCategories.js","../../src/visualizations/config/adapters/dhis_highcharts/xAxis/yearOnYear.js","../../src/visualizations/config/adapters/dhis_highcharts/xAxis/twoCategory.js","../../src/visualizations/config/adapters/dhis_highcharts/xAxis/radar.js","../../src/visualizations/config/adapters/dhis_highcharts/xAxis/index.js","../../src/visualizations/config/adapters/dhis_highcharts/yAxis/gauge.js","../../src/visualizations/config/adapters/dhis_highcharts/customAxes.js","../../src/visualizations/util/axisId.js","../../src/modules/layout/dimensionHasRelativeItems.js","../../src/modules/layout/axisHasRelativeItems.js","../../src/visualizations/config/adapters/dhis_highcharts/yAxis/index.js","../../src/visualizations/config/adapters/dhis_highcharts/getCumulativeData.js","../../src/visualizations/config/adapters/dhis_highcharts/series/pie.js","../../src/visualizations/config/adapters/dhis_highcharts/series/gauge.js","../../src/visualizations/util/colors/gradientColorGenerator.js","../../src/visualizations/util/colors/colorSets.js","../../src/visualizations/config/adapters/dhis_highcharts/series/index.js","../../src/visualizations/config/adapters/dhis_highcharts/title/yearOverYear.js","../../src/visualizations/config/adapters/dhis_highcharts/title/index.js","../../src/visualizations/config/adapters/dhis_highcharts/subtitle/index.js","../../src/visualizations/config/adapters/dhis_highcharts/legend.js","../../src/visualizations/config/adapters/dhis_highcharts/pane/gauge.js","../../src/visualizations/config/adapters/dhis_highcharts/pane/index.js","../../src/visualizations/config/adapters/dhis_highcharts/noData.js","../../src/visualizations/config/adapters/dhis_highcharts/getStackedData.js","../../src/visualizations/config/adapters/dhis_highcharts/getSortedConfig.js","../../src/visualizations/config/adapters/dhis_highcharts/getTrimmedConfig.js","../../src/visualizations/config/adapters/dhis_highcharts/addTrendLines.js","../../src/visualizations/util/colors/themes.js","../../src/visualizations/config/adapters/dhis_highcharts/index.js","../../src/visualizations/config/adapters/dhis_dhis/title/singleValue.js","../../src/visualizations/config/adapters/dhis_dhis/title/index.js","../../src/visualizations/config/adapters/dhis_dhis/subtitle/singleValue.js","../../src/visualizations/config/adapters/dhis_dhis/subtitle/index.js","../../src/visualizations/config/adapters/dhis_dhis/value/index.js","../../src/visualizations/config/adapters/dhis_dhis/index.js","../../src/visualizations/config/adapters/index.js","../../src/visualizations/config/generators/highcharts/index.js","../../src/visualizations/config/generators/dhis/singleValue.js","../../src/visualizations/config/generators/dhis/index.js","../../src/visualizations/config/generators/index.js","../../src/visualizations/config/index.js","../../src/visualizations/index.js"],"sourcesContent":["//------------------------------------------------------------------------------\n// <auto-generated>\n // This code was generated by d2-i18n-generate.\n //\n // Changes to this file may cause incorrect behavior and will be lost if\n // the code is regenerated.\n // </auto-generated>\n//------------------------------------------------------------------------------\nimport i18n from '@dhis2/d2-i18n';\n\nimport arTranslations from './ar/translations.json';\nimport ar_EGTranslations from './ar_EG/translations.json';\nimport ar_IQTranslations from './ar_IQ/translations.json';\nimport ckbTranslations from './ckb/translations.json';\nimport daTranslations from './da/translations.json';\nimport enTranslations from './en/translations.json';\nimport esTranslations from './es/translations.json';\nimport frTranslations from './fr/translations.json';\nimport idTranslations from './id/translations.json';\nimport kmTranslations from './km/translations.json';\nimport loTranslations from './lo/translations.json';\nimport myTranslations from './my/translations.json';\nimport nbTranslations from './nb/translations.json';\nimport prsTranslations from './prs/translations.json';\nimport psTranslations from './ps/translations.json';\nimport ptTranslations from './pt/translations.json';\nimport pt_BRTranslations from './pt_BR/translations.json';\nimport ruTranslations from './ru/translations.json';\nimport svTranslations from './sv/translations.json';\nimport tetTranslations from './tet/translations.json';\nimport tgTranslations from './tg/translations.json';\nimport ukTranslations from './uk/translations.json';\nimport urTranslations from './ur/translations.json';\nimport uz_CyrlTranslations from './uz_Cyrl/translations.json';\nimport viTranslations from './vi/translations.json';\nimport zhTranslations from './zh/translations.json';\nimport zh_CNTranslations from './zh_CN/translations.json';\n\nconst namespace = 'default';\ni18n.addResources('ar', namespace, arTranslations);\ni18n.addResources('ar_EG', namespace, ar_EGTranslations);\ni18n.addResources('ar_IQ', namespace, ar_IQTranslations);\ni18n.addResources('ckb', namespace, ckbTranslations);\ni18n.addResources('da', namespace, daTranslations);\ni18n.addResources('en', namespace, enTranslations);\ni18n.addResources('es', namespace, esTranslations);\ni18n.addResources('fr', namespace, frTranslations);\ni18n.addResources('id', namespace, idTranslations);\ni18n.addResources('km', namespace, kmTranslations);\ni18n.addResources('lo', namespace, loTranslations);\ni18n.addResources('my', namespace, myTranslations);\ni18n.addResources('nb', namespace, nbTranslations);\ni18n.addResources('prs', namespace, prsTranslations);\ni18n.addResources('ps', namespace, psTranslations);\ni18n.addResources('pt', namespace, ptTranslations);\ni18n.addResources('pt_BR', namespace, pt_BRTranslations);\ni18n.addResources('ru', namespace, ruTranslations);\ni18n.addResources('sv', namespace, svTranslations);\ni18n.addResources('tet', namespace, tetTranslations);\ni18n.addResources('tg', namespace, tgTranslations);\ni18n.addResources('uk', namespace, ukTranslations);\ni18n.addResources('ur', namespace, urTranslations);\ni18n.addResources('uz_Cyrl', namespace, uz_CyrlTranslations);\ni18n.addResources('vi', namespace, viTranslations);\ni18n.addResources('zh', namespace, zhTranslations);\ni18n.addResources('zh_CN', namespace, zh_CNTranslations);\n\nexport default i18n;\n","import React from 'react'\nimport PropTypes from 'prop-types'\n\nconst ItemIcon = ({ backgroundColor }) => {\n return (\n <div>\n <style jsx>{`\n div {\n background-color: ${backgroundColor};\n min-height: 6px;\n min-width: 6px;\n margin: 0px 5px;\n }\n `}</style>\n </div>\n )\n}\n\nItemIcon.propTypes = {\n backgroundColor: PropTypes.string,\n}\n\nexport default ItemIcon\n","import { colors, theme } from '@dhis2/ui'\nimport css from 'styled-jsx/css'\n\nexport default css`\n .highlighted-text {\n color: ${colors.white};\n }\n\n .item {\n align-items: center;\n border-radius: 4px;\n cursor: pointer;\n display: flex;\n padding: 3px;\n }\n\n .unselected-item:hover {\n background-color: #e0e0e0;\n }\n\n .highlighted-item {\n background-color: ${theme.secondary800};\n }\n\n .item-label {\n font-size: 14px;\n padding: 2px 5px 2px 2px;\n }\n`\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport cx from 'classnames'\n\nimport ItemIcon from './ItemIcon'\nimport { colors } from '@dhis2/ui'\nimport styles from './styles/UnselectedItem.style'\n\nconst onClickWrapper = ({ id, index, onClick }) => event =>\n onClick({\n isCtrlPressed: event.metaKey || event.ctrlKey,\n isShiftPressed: event.shiftKey,\n index,\n id,\n })\n\nexport const Item = ({ name, highlighted, ...rest }) => {\n return (\n <div\n className={cx('item', {\n 'highlighted-item': highlighted,\n 'unselected-item': !highlighted,\n })}\n onClick={onClickWrapper(rest)}\n data-test={`dimension-item-${rest.id}`}\n >\n <ItemIcon backgroundColor={colors.grey500} />\n <span\n className={cx('item-label', {\n 'highlighted-text': highlighted,\n })}\n >\n {name}\n </span>\n <style jsx>{styles}</style>\n </div>\n )\n}\n\nItem.defualtProps = {\n onClick: () => null,\n}\n\nItem.propTypes = {\n highlighted: PropTypes.bool.isRequired,\n id: PropTypes.string.isRequired,\n index: PropTypes.number.isRequired,\n name: PropTypes.string.isRequired,\n onClick: PropTypes.func,\n}\n\nexport default Item\n","import { colors } from '@dhis2/ui'\nimport css from 'styled-jsx/css'\n\nexport default css`\n .arrow-button {\n background-color: transparent;\n border: 1px solid #d5dde5;\n border-radius: 4px;\n height: 36px;\n min-height: 36px;\n min-width: 40px;\n padding: 0;\n width: 40px;\n }\n\n .arrow-button:focus {\n outline: none;\n }\n\n .arrow-button:active:focus {\n background-color: rgba(158, 158, 158, 0.18);\n }\n\n .arrow-button:hover {\n cursor: pointer;\n background-color: rgba(158, 158, 158, 0.07);\n }\n\n .arrow-icon {\n fill: ${colors.grey700};\n height: 20px;\n width: 24px;\n }\n`\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport ArrowForward from '@material-ui/icons/ArrowForward'\nimport ArrowBack from '@material-ui/icons/ArrowBack'\n\nimport styles from './styles/ArrowButton.style'\n\nexport const ArrowButton = ({ onClick, iconType }) => (\n <button className=\"arrow-button\" onClick={onClick}>\n <span className=\"arrow-icon\">\n {iconType === 'arrowForward' ? <ArrowForward /> : <ArrowBack />}\n </span>\n <style jsx>{styles}</style>\n </button>\n)\n\nArrowButton.propTypes = {\n iconType: PropTypes.string,\n onClick: PropTypes.func,\n}\n\nexport default ArrowButton\n","export const toggler = ({\n id,\n isCtrlPressed,\n isShiftPressed,\n index,\n lastClickedIndex,\n highlightedIds,\n items,\n}) => {\n let ids\n let newIndex = lastClickedIndex\n\n if (!isCtrlPressed && !isShiftPressed) {\n ids = [id]\n newIndex = index\n } else if (isShiftPressed) {\n const minIndex = getMinIndex(lastClickedIndex, index)\n const maxIndex = getMaxIndex(lastClickedIndex, index)\n\n ids = mergeIds({ highlightedIds, items, minIndex, maxIndex })\n } else {\n const newArr = updateArray({\n highlightedIds,\n id,\n lastClickedIndex,\n index,\n })\n ids = newArr.ids\n newIndex = newArr.newIndex\n }\n\n const orderedIds = items.filter(item => ids.includes(item))\n\n return {\n ids: orderedIds,\n lastClickedIndex: newIndex,\n }\n}\n\nconst getMinIndex = (lastClickedIndex, index) =>\n lastClickedIndex > index ? index : lastClickedIndex\n\nconst getMaxIndex = (lastClickedIndex, index) =>\n lastClickedIndex < index ? index : lastClickedIndex\n\nconst mergeIds = ({ highlightedIds, items, minIndex, maxIndex }) =>\n highlightedIds.length\n ? items\n .slice(minIndex, maxIndex + 1)\n .filter(id => !highlightedIds.includes(id))\n .concat(highlightedIds)\n : items.slice(minIndex, maxIndex + 1)\n\nconst updateArray = ({ highlightedIds, id, lastClickedIndex, index }) => {\n let ids\n let newIndex = lastClickedIndex\n\n const idIndex = highlightedIds.findIndex(\n highlightedId => highlightedId === id\n )\n\n if (idIndex >= 0) {\n ids = highlightedIds\n .slice(0, idIndex)\n .concat(highlightedIds.slice(idIndex + 1))\n } else {\n ids = [...highlightedIds, id]\n newIndex = index\n }\n\n return {\n ids,\n newIndex,\n }\n}\n","import React, { Component, Fragment } from 'react'\nimport PropTypes from 'prop-types'\nimport i18n from '@dhis2/d2-i18n'\nimport { Button } from '@dhis2/ui'\nimport throttle from 'lodash/throttle'\n\nimport Item from './widgets/UnselectedItem'\nimport { ArrowButton as AssignButton } from './widgets/ArrowButton'\nimport { toggler } from './modules/toggler'\nimport styles from './styles/UnselectedItems.style'\n\nexport class UnselectedItems extends Component {\n constructor(props) {\n super(props)\n this.scrolElRef = React.createRef()\n }\n\n state = { highlighted: [], lastClickedIndex: 0 }\n\n onSelectClick = () => {\n this.props.onSelect(this.state.highlighted)\n this.setState({ highlighted: [] })\n }\n\n onSelectAllClick = () => {\n this.props.onSelect(this.props.items.map(i => i.id))\n this.setState({ highlighted: [] })\n }\n\n onDoubleClickItem = id => {\n const highlighted = this.state.highlighted.filter(\n dataDimId => dataDimId !== id\n )\n\n this.setState({ highlighted })\n this.props.onSelect([id])\n }\n\n filterTextContains = displayName =>\n displayName.toLowerCase().includes(this.props.filterText.toLowerCase())\n\n filterItems = (item, index) =>\n this.filterTextContains(item.name)\n ? this.renderListItem(item, index)\n : null\n\n toggleHighlight = ({ isCtrlPressed, isShiftPressed, index, id }) => {\n const newState = toggler({\n id,\n isCtrlPressed,\n isShiftPressed,\n index,\n lastClickedIndex: this.state.lastClickedIndex,\n highlightedIds: this.state.highlighted,\n items: this.props.items.map(item => item.id),\n })\n\n this.setState({\n highlighted: newState.ids,\n lastClickedIndex: newState.lastClickedIndex,\n })\n }\n\n renderListItem = (dataDim, index) => (\n <li\n className=\"unselected-list-item\"\n key={dataDim.id}\n onDoubleClick={() => this.onDoubleClickItem(dataDim.id)}\n >\n <Item\n id={dataDim.id}\n index={index}\n name={dataDim.name}\n highlighted={!!this.state.highlighted.includes(dataDim.id)}\n onClick={this.toggleHighlight}\n />\n <style jsx>{styles}</style>\n </li>\n )\n\n requestMoreItems = throttle(() => {\n const node = this.scrolElRef.current\n\n if (node) {\n const bottom =\n node.scrollHeight - node.scrollTop === node.clientHeight\n if (bottom) {\n this.props.requestMoreItems()\n }\n }\n }, 1000)\n\n render = () => {\n const listItems = this.props.items.map((item, index) =>\n this.props.filterText.length\n ? this.filterItems(item, index)\n : this.renderListItem(item, index)\n )\n\n return (\n <Fragment>\n <div\n ref={this.scrolElRef}\n onScroll={this.requestMoreItems}\n className=\"unselected-list-container\"\n >\n <ul className=\"unselected-list\">{listItems}</ul>\n </div>\n <div className=\"select-all-button\">\n <Button onClick={this.onSelectAllClick}>\n {i18n.t('Select all')}\n </Button>\n </div>\n <div className=\"select-highlighted-button\">\n <AssignButton\n onClick={this.onSelectClick}\n iconType={'arrowForward'}\n />\n </div>\n <style jsx>{styles}</style>\n </Fragment>\n )\n }\n}\n\nUnselectedItems.propTypes = {\n items: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n })\n ).isRequired,\n onSelect: PropTypes.func.isRequired,\n filterText: PropTypes.string,\n requestMoreItems: PropTypes.func,\n}\n\nUnselectedItems.defaultProps = {\n requestMoreItems: () => null,\n filterText: '',\n}\n\nexport default UnselectedItems\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport DeselectIcon from '@material-ui/icons/Close'\nimport styles from './styles/DeselectIconButton.style'\n\nexport const DeselectIconButton = ({ fill, onClick }) => {\n const iconStyle = {\n height: '13px',\n width: '10px',\n fill,\n }\n\n return (\n <button\n className=\"deselect-icon-button\"\n onClick={e => {\n e.stopPropagation()\n onClick()\n }}\n >\n <span>\n <DeselectIcon style={iconStyle} />\n </span>\n <style jsx>{styles}</style>\n </button>\n )\n}\n\nDeselectIconButton.propTypes = {\n fill: PropTypes.string.isRequired,\n onClick: PropTypes.func.isRequired,\n}\n\nexport default DeselectIconButton\n","import { colors, theme } from '@dhis2/ui'\nimport css from 'styled-jsx/css'\n\nexport default css`\n .highlighted-text {\n color: ${colors.white};\n }\n\n .icon {\n background-color: ${theme.secondary600};\n }\n\n .item {\n align-items: center;\n border-radius: 4px;\n cursor: pointer;\n display: flex;\n padding: 3px;\n }\n\n .ghost {\n opacity: 0.2;\n transition: opacity 0.2s ease;\n }\n\n .selected-item {\n background-color: ${theme.secondary200};\n }\n\n .selected-item:hover {\n background-color: #86c4bf;\n }\n\n .highlighted-item {\n background-color: ${theme.secondary800};\n }\n\n .inactive-item {\n opacity: 0.3;\n }\n\n .item-label {\n font-size: 14px;\n padding: 2px;\n }\n`\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport cx from 'classnames'\n\nimport ItemIcon from './ItemIcon'\nimport DeselectIconButton from './DeselectIconButton'\nimport { colors, theme } from '@dhis2/ui'\nimport styles from './styles/SelectedItem.style'\n\nconst onClickWrapper = ({ id, index, onClick }) => event =>\n onClick({\n isCtrlPressed: event.metaKey || event.ctrlKey,\n isShiftPressed: event.shiftKey,\n index,\n id,\n })\n\nexport const Item = ({\n name,\n highlighted,\n ghost,\n active,\n onRemoveItem,\n ...rest\n}) => {\n return (\n <div\n className={cx('item', {\n 'highlighted-item': highlighted,\n ghost,\n 'selected-item': !highlighted,\n 'inactive-item': !active,\n })}\n onClick={onClickWrapper(rest)}\n data-test={`dimension-item-${rest.id}`}\n >\n <ItemIcon\n backgroundColor={\n highlighted ? colors.white : theme.secondary600\n }\n />\n <span\n className={cx('item-label', {\n 'highlighted-text': highlighted,\n })}\n >\n {name}\n </span>\n <DeselectIconButton\n fill={highlighted ? colors.white : theme.secondary600}\n onClick={() => onRemoveItem(rest.id)}\n />\n <style jsx>{styles}</style>\n </div>\n )\n}\n\nItem.defaultProps = {\n active: true,\n onRemoveItem: () => null,\n onClick: () => null,\n}\n\nItem.propTypes = {\n highlighted: PropTypes.bool.isRequired,\n id: PropTypes.string.isRequired,\n index: PropTypes.number.isRequired,\n name: PropTypes.string.isRequired,\n active: PropTypes.bool,\n ghost: PropTypes.bool,\n onClick: PropTypes.func,\n onRemoveItem: PropTypes.func,\n}\n\nexport default Item\n","import sortBy from 'lodash/sortBy'\n\nexport const reorderList = ({\n items,\n highlightedItemIds,\n destinationIndex,\n sourceIndex,\n draggableId,\n isMultiDrag,\n}) => {\n const list = Array.from(items.map(item => item.id))\n\n if (isMultiDrag) {\n const indexedItemsToMove = sortBy(\n highlightedItemIds.map(highlightedItemId => ({\n item: highlightedItemId,\n idx: items.map(item => item.id).indexOf(highlightedItemId),\n })),\n 'idx'\n )\n\n const highlightedAboveDestination = indexedItemsToMove.filter(\n item => item.idx < destinationIndex\n )\n\n const newDestinationIndex =\n destinationIndex - highlightedAboveDestination.length\n\n indexedItemsToMove.forEach(indexed => {\n const idx = list.indexOf(indexed.item)\n list.splice(idx, 1)\n })\n\n indexedItemsToMove.forEach((indexed, i) => {\n list.splice(newDestinationIndex + i, 0, indexed.item)\n })\n } else {\n list.splice(sourceIndex, 1)\n list.splice(destinationIndex, 0, draggableId)\n }\n\n return list\n}\n","import { colors } from '@dhis2/ui'\nimport css from 'styled-jsx/css'\n\nexport default css`\n .selected-list {\n flex: 1;\n list-style: none;\n margin: 0 6px;\n overflow-y: auto;\n padding-left: 0px;\n user-select: none;\n }\n\n .selected-list-item {\n display: flex;\n margin: 2px;\n }\n\n .selected-list-item:focus {\n outline: none;\n }\n\n .subtitle-container {\n border-bottom: 1px solid ${colors.grey300};\n height: 42px;\n }\n\n .subtitle-text {\n color: ${colors.grey900};\n height: 20px;\n font-family: Roboto;\n font-size: 15px;\n font-weight: 500;\n left: 8px;\n position: relative;\n top: 12px;\n }\n\n .info-container {\n display: flex;\n margin: 8px;\n padding: 8px;\n background-color: #e8edf2;\n border-radius: 4px;\n }\n\n .info-text {\n padding-left: 6px;\n color: #4a5768;\n font-size: 12px;\n line-height: 17px;\n }\n\n .info-icon {\n font-size: 16px;\n color: #4a5768;\n }\n\n .deselect-all-button {\n display: block;\n margin: 0 auto;\n padding: 5px;\n }\n\n .deselect-highlighted-button {\n left: -48px;\n position: absolute;\n top: 291px;\n }\n`\n","import React, { Component, Fragment } from 'react'\nimport PropTypes from 'prop-types'\nimport i18n from '@dhis2/d2-i18n'\nimport InfoIcon from '@material-ui/icons/InfoOutlined'\nimport { DragDropContext, Droppable, Draggable } from 'react-beautiful-dnd'\nimport { Button, colors } from '@dhis2/ui'\n\nimport Item from './widgets/SelectedItem'\nimport { ArrowButton as UnAssignButton } from './widgets/ArrowButton'\nimport { toggler } from './modules/toggler'\nimport { reorderList } from './modules/reorderList'\nimport styles from './styles/SelectedItems.style'\n\nconst Subtitle = () => (\n <div className=\"subtitle-container\">\n <span className=\"subtitle-text\">{i18n.t('Selected Data')}</span>\n <style jsx>{styles}</style>\n </div>\n)\n\nconst InfoBox = ({ message }) => (\n <div className=\"info-container\">\n <InfoIcon style={{ fontSize: 16, color: colors.grey600 }} />\n <span className=\"info-text\">{message}</span>\n <style jsx>{styles}</style>\n </div>\n)\n\nconst ItemsList = ({ innerRef, children }) => (\n <ul className=\"selected-list\" ref={innerRef}>\n {children}\n <style jsx>{styles}</style>\n </ul>\n)\n\nconst CLONE_INDEX = 9999 // a high number to not influence the actual item list\n\nexport class SelectedItems extends Component {\n state = { highlighted: [], lastClickedIndex: 0, draggingId: null }\n\n onDeselectHighlighted = () => {\n this.props.onDeselect(this.state.highlighted)\n this.setState({ highlighted: [] })\n }\n\n onDeselectOne = id => {\n const highlighted = this.state.highlighted.filter(\n highlightedId => highlightedId !== id\n )\n\n this.props.onDeselect([id])\n this.setState({ highlighted })\n }\n\n onDeselectAll = () => {\n this.props.onDeselect(this.props.items.map(item => item.id))\n this.setState({ highlighted: [] })\n }\n\n toggleHighlight = ({ isCtrlPressed, isShiftPressed, index, id }) => {\n const newState = toggler({\n id,\n isCtrlPressed,\n isShiftPressed,\n index,\n lastClickedIndex: this.state.lastClickedIndex,\n highlightedIds: this.state.highlighted,\n items: this.props.items.map(item => item.id),\n })\n\n this.setState({\n highlighted: newState.ids,\n lastClickedIndex: newState.lastClickedIndex,\n })\n }\n\n isMultiDrag = draggableId => {\n return (\n this.state.highlighted.includes(draggableId) &&\n this.state.highlighted.length > 1\n )\n }\n\n onDragStart = start => {\n const id = start.draggableId\n const selected = this.state.highlighted.find(itemId => itemId === id)\n\n // if dragging an item that is not highlighted, unhighlight all items\n if (!selected) {\n this.setState({ highlighted: [] })\n }\n\n this.setState({ draggingId: start.draggableId })\n }\n\n onDragEnd = ({ destination, source, draggableId }) => {\n this.setState({ draggingId: null })\n\n if (destination === null) {\n return\n }\n\n if (\n destination.draggableId === source.draggableId &&\n destination.index === source.index\n ) {\n return\n }\n\n const newList = reorderList({\n destinationIndex: destination.index,\n sourceIndex: source.index,\n draggableId,\n isMultiDrag: this.isMultiDrag(draggableId),\n items: this.props.items,\n highlightedItemIds: this.state.highlighted,\n })\n\n this.props.onReorder(newList)\n }\n\n renderListItem = ({ id, name, isActive }, index) => (\n <Draggable draggableId={id} index={index} key={id}>\n {(provided, snapshot) => {\n const isDraggedItem =\n snapshot.isDragging &&\n this.state.highlighted.length > 1 &&\n this.state.highlighted.includes(this.state.draggingId)\n\n const ghost =\n this.state.highlighted.includes(id) &&\n Boolean(this.state.draggingId) &&\n this.state.draggingId !== id\n\n const itemText = isDraggedItem\n ? `${this.state.highlighted.length} items`\n : name\n\n return (\n <li\n className=\"selected-list-item\"\n id={id}\n onDoubleClick={() => this.onDeselectOne(id)}\n {...provided.draggableProps}\n {...provided.dragHandleProps}\n ref={provided.innerRef}\n >\n <Item\n id={id}\n index={index}\n name={itemText}\n highlighted={!!this.state.highlighted.includes(id)}\n active={isActive}\n onRemoveItem={this.onDeselectOne}\n onClick={this.toggleHighlight}\n ghost={ghost}\n />\n <style jsx>{styles}</style>\n </li>\n )\n }}\n </Draggable>\n )\n\n renderCloneItem = ({ id, name }, index) => {\n const cloneId = `${id}-clone`\n return (\n <Draggable draggableId={cloneId} index={index} key={cloneId}>\n {provided => (\n <li\n className=\"selected-list-item\"\n id={cloneId}\n {...provided.draggableProps}\n {...provided.dragHandleProps}\n ref={provided.innerRef}\n >\n <Item\n id={cloneId}\n index={CLONE_INDEX}\n name={name}\n highlighted={!!this.state.highlighted.includes(id)}\n selected\n ghost\n />\n <style jsx>{styles}</style>\n </li>\n )}\n </Draggable>\n )\n }\n\n getItemListWithClone = () => {\n const list = []\n\n this.props.items.forEach(item => {\n list.push(item)\n\n const isDraggedItem =\n this.isMultiDrag(this.state.draggingId) &&\n this.state.draggingId === item.id\n\n if (isDraggedItem) {\n list.push({\n id: item.id,\n name: item.name,\n isActive: item.isActive,\n clone: true,\n })\n }\n })\n\n return list\n }\n\n render = () => {\n const itemList = this.getItemListWithClone().map((item, i) =>\n item.clone\n ? this.renderCloneItem(item, i)\n : this.renderListItem(item, i)\n )\n\n return (\n <Fragment>\n <Subtitle />\n {this.props.infoBoxMessage ? (\n <InfoBox message={this.props.infoBoxMessage} />\n ) : null}\n <DragDropContext\n onDragStart={this.onDragStart}\n onDragEnd={this.onDragEnd}\n >\n <Droppable droppableId=\"selected-items-droppable\">\n {provided => (\n <ItemsList\n innerRef={provided.innerRef}\n {...provided.droppableProps}\n >\n {itemList}\n {provided.placeholder}\n </ItemsList>\n )}\n </Droppable>\n </DragDropContext>\n <div className=\"deselect-all-button\">\n <Button onClick={this.onDeselectAll}>\n {i18n.t('Deselect All')}\n </Button>\n </div>\n <div className=\"deselect-highlighted-button\">\n <UnAssignButton\n onClick={this.onDeselectHighlighted}\n iconType={'arrowBack'}\n />\n </div>\n <style jsx>{styles}</style>\n </Fragment>\n )\n }\n}\n\nInfoBox.propTypes = {\n message: PropTypes.string,\n}\n\nItemsList.propTypes = {\n children: PropTypes.array,\n innerRef: PropTypes.func,\n}\n\nSelectedItems.propTypes = {\n items: PropTypes.array.isRequired,\n onDeselect: PropTypes.func.isRequired,\n onReorder: PropTypes.func.isRequired,\n infoBoxMessage: PropTypes.string,\n}\n\nexport default SelectedItems\n","import { colors } from '@dhis2/ui'\nimport css from 'styled-jsx/css'\n\nexport default css`\n .item-selector-container {\n box-sizing: border-box;\n display: flex;\n flex: 1 1 auto;\n font-family: Roboto, sans-serif;\n }\n .section {\n border: 1px solid ${colors.grey300};\n display: flex;\n flex-direction: column;\n height: 480px;\n position: relative;\n }\n .unselected {\n margin-right: 55px;\n width: 418px;\n }\n .selected {\n width: 276px;\n }\n`\n","import React, { Component } from 'react'\nimport PropTypes from 'prop-types'\nimport cx from 'classnames'\n\nimport UnselectedItems from './UnselectedItems'\nimport SelectedItems from './SelectedItems'\nimport styles from './styles/ItemSelector.style'\n\nclass ItemSelector extends Component {\n render() {\n const { unselected, selected, children: filterZone } = this.props\n\n return (\n <div className=\"item-selector-container\">\n <div className={cx('section', 'unselected')}>\n {filterZone}\n <UnselectedItems {...unselected} />\n </div>\n <div className={cx('section', 'selected')}>\n <SelectedItems {...selected} />\n </div>\n <style jsx>{styles}</style>\n </div>\n )\n }\n}\n\nItemSelector.propTypes = {\n children: PropTypes.object,\n selected: PropTypes.shape({\n items: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n isActive: PropTypes.bool,\n })\n ).isRequired,\n onDeselect: PropTypes.func.isRequired,\n onReorder: PropTypes.func.isRequired,\n dialogId: PropTypes.string,\n infoBoxMessage: PropTypes.string,\n }),\n unselected: PropTypes.shape({\n items: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n })\n ).isRequired,\n onSelect: PropTypes.func.isRequired,\n filterText: PropTypes.string,\n requestMoreItems: PropTypes.func,\n }),\n}\n\nexport default ItemSelector\n","import i18n from '@dhis2/d2-i18n'\n\nexport const REPORTING_RATE = 'REPORTING_RATE'\nexport const REPORTING_RATE_ON_TIME = 'REPORTING_RATE_ON_TIME'\nexport const ACTUAL_REPORTS = 'ACTUAL_REPORTS'\nexport const ACTUAL_REPORTS_ON_TIME = 'ACTUAL_REPORTS_ON_TIME'\nexport const EXPECTED_REPORTS = 'EXPECTED_REPORTS'\n\nexport const DATA_SETS_CONSTANTS = [\n {\n id: REPORTING_RATE,\n getName: () => i18n.t('Reporting rate'),\n },\n {\n id: REPORTING_RATE_ON_TIME,\n getName: () => i18n.t('Reporting rate on time'),\n },\n {\n id: ACTUAL_REPORTS,\n getName: () => i18n.t('Actual reports'),\n },\n {\n id: ACTUAL_REPORTS_ON_TIME,\n getName: () => i18n.t('Actual reports on time'),\n },\n {\n id: EXPECTED_REPORTS,\n getName: () => i18n.t('Expected reports'),\n },\n]\n","import i18n from '@dhis2/d2-i18n'\n\nimport { DATA_SETS_CONSTANTS } from '../modules/dataSets'\n\nexport const CHART_AGGREGATE_AGGREGATABLE_TYPES = [\n 'BOOLEAN',\n 'TRUE_ONLY',\n 'INTEGER',\n 'INTEGER_POSITIVE',\n 'INTEGER_NEGATIVE',\n 'INTEGER_ZERO_OR_POSITIVE',\n 'NUMBER',\n 'UNIT_INTERVAL',\n 'PERCENTAGE',\n]\n\nexport const ALL_ID = 'ALL'\n\nconst INDICATORS = 'indicators'\nconst DATA_ELEMENTS = 'dataElements'\nconst DATA_SETS = 'dataSets'\nconst EVENT_DATA_ITEMS = 'eventDataItems'\nconst PROGRAM_INDICATORS = 'programIndicators'\n\nexport const TOTALS = 'totals'\nexport const DETAIL = 'detail'\n\nconst getProgramText = () => i18n.t('Program')\nconst getSelectProgramText = () => i18n.t('Select a program')\n\nexport const dataTypes = {\n [INDICATORS]: {\n id: INDICATORS,\n getName: () => i18n.t('Indicators'),\n getGroupLabel: () => i18n.t('Select indicator group'),\n defaultGroup: { id: ALL_ID, getName: () => i18n.t('[ All groups ]') },\n groupDetail: false,\n },\n [DATA_ELEMENTS]: {\n id: DATA_ELEMENTS,\n getName: () => i18n.t('Data elements'),\n getGroupLabel: () => i18n.t('Select data element group'),\n defaultGroup: {\n id: ALL_ID,\n getName: () => i18n.t('[ All data elements ]'),\n },\n groupDetail: { default: TOTALS },\n },\n [DATA_SETS]: {\n id: DATA_SETS,\n getName: () => i18n.t('Data sets'),\n getGroupLabel: () => i18n.t('Select data sets'),\n defaultGroup: { id: ALL_ID, getName: () => i18n.t('[ All metrics ]') },\n groupDetail: false,\n augmentAlternatives: (alternatives, groupId) =>\n getReportingRates(alternatives, groupId),\n },\n [EVENT_DATA_ITEMS]: {\n id: EVENT_DATA_ITEMS,\n getName: () => i18n.t('Event data items'),\n getGroupLabel: getProgramText,\n getPlaceholder: getSelectProgramText,\n defaultGroup: null,\n groupDetail: false,\n },\n [PROGRAM_INDICATORS]: {\n id: PROGRAM_INDICATORS,\n getName: () => i18n.t('Program indicators'),\n getGroupLabel: getProgramText,\n getPlaceholder: getSelectProgramText,\n defaultGroup: null,\n groupDetail: false,\n },\n}\n\nexport function defaultGroupId(dataType) {\n return dataTypes[dataType].defaultGroup\n ? dataTypes[dataType].defaultGroup.id\n : ''\n}\n\nexport function defaultGroupDetail(dataType) {\n return dataTypes[dataType].groupDetail\n ? dataTypes[dataType].groupDetail.default\n : ''\n}\n\nexport const DEFAULT_DATATYPE_ID = INDICATORS\n\nconst getReportingRates = (contents, groupSetId) => {\n let dataSets = []\n\n if (groupSetId === ALL_ID) {\n DATA_SETS_CONSTANTS.forEach(\n reportingRate =>\n (dataSets = [\n ...dataSets,\n ...contents.map(dataSet =>\n concatReportingRate(dataSet, reportingRate)\n ),\n ])\n )\n } else {\n const reportingRateIndex = DATA_SETS_CONSTANTS.find(\n item => item.id === groupSetId\n )\n\n dataSets = contents.map(dataSet =>\n concatReportingRate(dataSet, reportingRateIndex)\n )\n }\n\n return dataSets\n}\n\nconst concatReportingRate = (dataSet, reportingRate) => {\n return {\n id: `${dataSet.id}.${reportingRate.id}`,\n name: `${dataSet.name} (${reportingRate.getName()})`,\n }\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport i18n from '@dhis2/d2-i18n'\nimport { SingleSelectField, SingleSelectOption } from '@dhis2/ui'\n\nimport { dataTypes } from '../../modules/dataTypes'\nimport styles from './styles/DataTypesSelector.style'\n\nexport const DataTypes = ({ currentDataType, onChange }) => (\n <div className=\"container\">\n <SingleSelectField\n label={i18n.t('Data Type')}\n selected={dataTypes[currentDataType]?.id}\n onChange={ref => onChange(ref.selected)}\n dense\n >\n {Object.values(dataTypes).map(type => (\n <SingleSelectOption\n value={type.id}\n key={type.id}\n label={type.getName()}\n />\n ))}\n </SingleSelectField>\n <style jsx>{styles}</style>\n </div>\n)\n\nDataTypes.propTypes = {\n currentDataType: PropTypes.string.isRequired,\n onChange: PropTypes.func.isRequired,\n}\n\nexport default DataTypes\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport i18n from '@dhis2/d2-i18n'\nimport { SingleSelectField, SingleSelectOption } from '@dhis2/ui'\nimport { TOTALS, DETAIL } from '../../modules/dataTypes'\n\nimport styles from './styles/Detail.style'\n\nconst getOptions = () => ({\n [TOTALS]: i18n.t('Totals'),\n [DETAIL]: i18n.t('Details'),\n})\n\nexport const Detail = ({ currentValue, onChange }) => {\n const options = getOptions()\n return (\n <div className=\"detail-container\">\n <SingleSelectField\n label={i18n.t('Detail')}\n selected={currentValue}\n onChange={ref => onChange(ref.selected)}\n dense\n >\n {Object.entries(options).map(option => (\n <SingleSelectOption\n value={option[0]}\n key={option[0]}\n label={option[1]}\n />\n ))}\n </SingleSelectField>\n <style jsx>{styles}</style>\n </div>\n )\n}\n\nDetail.propTypes = {\n currentValue: PropTypes.string.isRequired,\n onChange: PropTypes.func.isRequired,\n}\n\nexport default Detail\n","import css from 'styled-jsx/css'\nimport { colors } from '@dhis2/ui'\n\nexport default css`\n .container {\n border: 1px solid ${colors.grey300};\n display: flex;\n min-height: 53px;\n border-right: 0;\n border-left: 0;\n padding: 5px 5px 10px 10px;\n }\n .group-container {\n display: flex;\n flex-direction: column;\n width: inherit;\n min-width: 290px;\n flex-grow: 1;\n }\n`\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { SingleSelectField, SingleSelectOption } from '@dhis2/ui'\n\nimport { Detail } from './Detail'\nimport { dataTypes } from '../../modules/dataTypes'\nimport styles from './styles/Groups.style'\n\nexport const Groups = ({\n dataType,\n detailValue,\n groupId,\n groups,\n onDetailChange,\n onGroupChange,\n}) => {\n let optionItems = groups\n\n if (dataTypes[dataType].defaultGroup) {\n const { id, getName } = dataTypes[dataType].defaultGroup\n optionItems = [{ id, name: getName() }, ...optionItems]\n }\n\n const groupDetail = dataTypes[dataType].groupDetail\n\n return (\n <div className=\"container\">\n <style jsx>{styles}</style>\n <div className=\"group-container\">\n <SingleSelectField\n label={dataTypes[dataType].getGroupLabel()}\n selected={groupId}\n placeholder={\n !groupId && dataTypes[dataType].getPlaceholder\n ? dataTypes[dataType].getPlaceholder()\n : null\n }\n onChange={ref => onGroupChange(ref.selected)}\n dense\n >\n {optionItems.map(item => (\n <SingleSelectOption\n value={item.id}\n key={item.id}\n label={item.name}\n />\n ))}\n </SingleSelectField>\n </div>\n {groupDetail && (\n <Detail currentValue={detailValue} onChange={onDetailChange} />\n )}\n </div>\n )\n}\n\nGroups.propTypes = {\n dataType: PropTypes.string.isRequired,\n detailValue: PropTypes.string.isRequired,\n groupId: PropTypes.string.isRequired,\n groups: PropTypes.array.isRequired,\n onDetailChange: PropTypes.func.isRequired,\n onGroupChange: PropTypes.func.isRequired,\n}\n\nexport default Groups\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { InputField } from '@dhis2/ui'\n\nexport const Filter = ({ text, onChange, onClear, placeholder, type }) => (\n <InputField\n placeholder={placeholder}\n onChange={ref => (ref.value.length ? onChange(ref.value) : onClear())}\n value={text}\n dense\n type={type}\n />\n)\n\nFilter.propTypes = {\n placeholder: PropTypes.string.isRequired,\n type: PropTypes.string.isRequired,\n onChange: PropTypes.func.isRequired,\n onClear: PropTypes.func.isRequired,\n text: PropTypes.string,\n}\n\nFilter.defaultProps = {\n type: 'text',\n}\n\nexport default Filter\n","import css from 'styled-jsx/css'\nimport { colors } from '@dhis2/ui'\n\nexport default css`\n .container {\n border: 1px solid ${colors.grey300};\n background-color: ${colors.white};\n height: 53px;\n border-right: 0;\n border-left: 0;\n border-top: 0;\n padding: 10px 5px 10px 10px;\n }\n`\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport i18n from '@dhis2/d2-i18n'\n\nimport Filter from './Filter/Filter'\nimport styles from './styles/FilterField.style'\n\nexport const FilterField = ({ text, onFilterTextChange, onClearFilter }) => (\n <div className=\"container\">\n <Filter\n placeholder={i18n.t('Search')}\n text={text}\n onChange={onFilterTextChange}\n onClear={onClearFilter}\n />\n <style jsx>{styles}</style>\n </div>\n)\n\nFilterField.propTypes = {\n text: PropTypes.string.isRequired,\n onClearFilter: PropTypes.func.isRequired,\n onFilterTextChange: PropTypes.func.isRequired,\n}\n\nexport default FilterField\n","// Helper functions\n\nexport const onError = error => console.log('Error: ', error)\n","import sortBy from 'lodash/sortBy'\n\nimport { onError } from './index'\nimport { DATA_SETS_CONSTANTS } from '../modules/dataSets'\nimport { CHART_AGGREGATE_AGGREGATABLE_TYPES } from '../modules/dataTypes'\n\n// Request util functions\nconst selectFromResponse = (response, entity, selectorFn) =>\n typeof selectorFn === 'function' ? selectorFn(response) : response[entity]\n\n// Request functions\nconst request = (d2, entity, { paramString, selectorFn } = {}) => {\n const url = `/${entity}?${paramString}&paging=false`\n\n return d2.Api.getApi()\n .get(url)\n .then(response => selectFromResponse(response, entity, selectorFn))\n .catch(onError)\n}\n\nconst requestWithPaging = (\n d2,\n entity,\n { page, paramString, selectorFn } = {}\n) => {\n const paging = `&paging=true&page=${page}`\n const url = `/${entity}?${paramString}${paging}`\n\n return d2.Api.getApi()\n .get(url)\n .then(response => ({\n dimensionItems: selectFromResponse(response, entity, selectorFn),\n nextPage: response.pager.nextPage ? response.pager.page + 1 : null,\n }))\n .catch(onError)\n}\n\n// Fetch functions\nexport const apiFetchDimensions = (d2, nameProp) => {\n const fields = `fields=id,${nameProp}~rename(name),dimensionType,dataDimensionType`\n const order = `order=${nameProp}:asc`\n\n const params = `${fields}&${order}`\n\n return request(d2, 'dimensions', { paramString: params })\n}\n\nexport const apiFetchRecommendedIds = (d2, dxIds, ouIds) => {\n let dimensions = 'dimension='\n\n if (dxIds.length) {\n dimensions = dimensions.concat(`dx:${dxIds.join(';')}`)\n\n if (ouIds.length)\n dimensions = dimensions.concat(`&dimension=ou:${ouIds.join(';')}`)\n } else if (ouIds.length) {\n dimensions = dimensions.concat(`ou:${ouIds.join(';')}`)\n } else {\n return Promise.resolve([])\n }\n\n const url = `/dimensions/recommendations?${dimensions}&fields=id`\n return d2.Api.getApi()\n .get(url)\n .then(response => response.dimensions.map(item => item.id))\n .catch(onError)\n}\n\nexport const apiFetchItemsByDimension = (d2, dimensionId) => {\n const fields = `fields=id,displayName~rename(name)`\n const order = `order=displayName:asc`\n\n const url = `dimensions/${dimensionId}/items?${fields}&${order}`\n\n return d2.Api.getApi()\n .get(url)\n .then(response => response.items)\n}\n\nexport const apiFetchGroups = (d2, dataType, nameProp) => {\n // indicatorGroups does not support shortName\n const name = dataType === 'indicators' ? 'displayName' : nameProp\n const fields = `fields=id,${name}~rename(name)`\n const order = `order=${name}:asc`\n\n const params = `${fields}&${order}`\n\n switch (dataType) {\n case 'indicators': {\n return request(d2, 'indicatorGroups', { paramString: params })\n }\n case 'dataElements': {\n return request(d2, 'dataElementGroups', { paramString: params })\n }\n case 'dataSets': {\n const dataSetGroups = DATA_SETS_CONSTANTS.map(\n ({ id, getName }) => ({\n id,\n name: getName(),\n })\n )\n return Promise.resolve(dataSetGroups)\n }\n case 'eventDataItems':\n case 'programIndicators': {\n return request(d2, 'programs', { paramString: params })\n }\n default:\n return null\n }\n}\n\nexport const apiFetchAlternatives = args => {\n const { d2, dataType, groupDetail, ...queryParams } = args\n\n switch (dataType) {\n case 'indicators': {\n return fetchIndicators({ d2, ...queryParams })\n }\n case 'dataElements': {\n if (groupDetail === 'detail') {\n return fetchDataElementOperands({ d2, ...queryParams })\n } else {\n return fetchDataElements({ d2, ...queryParams })\n }\n }\n case 'dataSets': {\n return fetchDataSets({ d2, ...queryParams })\n }\n case 'eventDataItems': {\n return queryParams.groupId\n ? getEventDataItems({ d2, ...queryParams })\n : null\n }\n case 'programIndicators': {\n return queryParams.groupId\n ? fetchProgramIndicators({ d2, ...queryParams })\n : null\n }\n default:\n return null\n }\n}\n\nconst fetchIndicators = ({ d2, nameProp, groupId, filterText, page }) => {\n const fields = `fields=id,${nameProp}~rename(name),dimensionItemType&order=${nameProp}:asc`\n const order = `order=${nameProp}:asc`\n let filter =\n groupId !== 'ALL' ? `&filter=indicatorGroups.id:eq:${groupId}` : ''\n\n if (filterText) {\n filter = filter.concat(`&filter=${nameProp}:ilike:${filterText}`)\n }\n\n const paramString = `${fields}&${order}${filter}`\n\n return requestWithPaging(d2, 'indicators', { paramString, page })\n}\n\nconst fetchDataElements = ({ d2, groupId, page, filterText, nameProp }) => {\n const idField = groupId === 'ALL' ? 'id' : 'dimensionItem~rename(id)'\n const fields = `fields=${idField},${nameProp}~rename(name)`\n const order = `order=${nameProp}:asc`\n\n let filter = '&filter=domainType:eq:AGGREGATE'\n if (groupId !== 'ALL') {\n filter = filter.concat(`&filter=dataElementGroups.id:eq:${groupId}`)\n }\n\n if (filterText) {\n filter = filter.concat(`&filter=${nameProp}:ilike:${filterText}`)\n }\n\n const paramString = `${fields}&${order}${filter}`\n\n return requestWithPaging(d2, 'dataElements', { paramString, page })\n}\n\nconst fetchDataElementOperands = ({\n d2,\n groupId,\n page,\n filterText,\n nameProp,\n}) => {\n const idField = groupId === 'ALL' ? 'id' : 'dimensionItem~rename(id)'\n const fields = `fields=${idField},${nameProp}~rename(name)`\n const order = `order=${nameProp}:asc`\n\n let filter = ''\n if (groupId !== 'ALL') {\n filter = `&filter=dataElement.dataElementGroups.id:eq:${groupId}`\n }\n\n if (filterText) {\n const textFilter = `&filter=${nameProp}:ilike:${filterText}`\n filter = filter.length ? filter.concat(textFilter) : textFilter\n }\n\n return requestWithPaging(d2, 'dataElementOperands', {\n paramString: `${fields}&${order}${filter}`,\n page,\n })\n}\n\nconst fetchDataSets = ({ d2, page, filterText, nameProp }) => {\n const fields = `fields=dimensionItem~rename(id),${nameProp}~rename(name)`\n const order = `order=${nameProp}:asc`\n const filter = filterText ? `&filter=${nameProp}:ilike:${filterText}` : ''\n\n const paramString = `${fields}&${order}${filter}`\n\n return requestWithPaging(d2, 'dataSets', { paramString, page })\n}\n\nconst fetchProgramDataElements = ({\n d2,\n groupId,\n page,\n filterText,\n nameProp,\n}) => {\n const fields = `fields=dimensionItem~rename(id),${nameProp}~rename(name),valueType`\n const order = `order=${nameProp}:asc`\n const program = `program=${groupId}`\n const filter = filterText ? `&filter=${nameProp}:ilike:${filterText}` : ''\n\n const paramString = `${fields}&${order}&${program}${filter}`\n\n return requestWithPaging(d2, 'programDataElements', { paramString, page })\n}\n\nconst fetchTrackedEntityAttributes = ({\n d2,\n groupId,\n filterText,\n nameProp,\n}) => {\n const fields = `fields=${nameProp}~rename(name),programTrackedEntityAttributes[trackedEntityAttribute[id,${nameProp}~rename(name),valueType]]`\n const filter = filterText ? `&filter=${nameProp}:ilike:${filterText}` : ''\n\n const paramString = `${fields}${filter}`\n\n return request(d2, `programs/${groupId}`, {\n paramString,\n selectorFn: r =>\n Array.isArray(r.programTrackedEntityAttributes)\n ? r.programTrackedEntityAttributes\n .map(a => a.trackedEntityAttribute)\n .map(a => ({\n ...a,\n id: `${groupId}.${a.id}`,\n name: `${r.name} ${a.name}`,\n }))\n : [],\n })\n}\n\nconst getEventDataItems = async (d2, queryParams) => {\n const [dataElementsObj, attributes] = await Promise.all([\n fetchProgramDataElements(d2, queryParams),\n fetchTrackedEntityAttributes(d2, queryParams),\n ])\n\n const filterInvalidTypes = item =>\n Boolean(CHART_AGGREGATE_AGGREGATABLE_TYPES.includes(item.valueType))\n\n return {\n ...dataElementsObj,\n dimensionItems: sortBy(\n [...dataElementsObj.dimensionItems, ...attributes].filter(\n filterInvalidTypes\n ),\n 'name'\n ),\n }\n}\n\nconst fetchProgramIndicators = ({\n d2,\n groupId,\n page,\n filterText,\n nameProp,\n}) => {\n const fields = `fields=dimensionItem~rename(id),${nameProp}~rename(name)`\n const order = `order=${nameProp}:asc`\n const programFilter = `filter=program.id:eq:${groupId}`\n const filter = filterText ? `&filter=${nameProp}:ilike:${filterText}` : ''\n\n const paramString = `${fields}&${order}&${programFilter}${filter}`\n\n return requestWithPaging(d2, 'programIndicators', { paramString, page })\n}\n","import React from 'react'\n\nconst DataIcon = () => {\n return (\n <svg\n width=\"16px\"\n height=\"16px\"\n viewBox=\"0 0 16 16\"\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <g\n id=\"Exp\"\n stroke=\"none\"\n strokeWidth=\"1\"\n fill=\"none\"\n fillRule=\"evenodd\"\n >\n <g id=\"Artboard\" transform=\"translate(-7.000000, -9.000000)\">\n <g\n id=\"icon_data_new\"\n transform=\"translate(7.000000, 9.000000)\"\n >\n <rect id=\"frame\" x=\"0\" y=\"0\" width=\"16\" height=\"16\" />\n <g\n id=\"database-2\"\n transform=\"translate(2.000000, 2.000000)\"\n stroke=\"#000000\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <ellipse\n id=\"Oval\"\n cx=\"5.5\"\n cy=\"2.5\"\n rx=\"5.5\"\n ry=\"2.5\"\n />\n <path\n d=\"M0,3 L0,5.59978665 C0,6.9252378 2.46253333,8 5.5,8 C8.53746667,8 11,6.92577118 11,5.59978665 L11,3\"\n id=\"Shape\"\n />\n <path\n d=\"M0,5 L0,8.6 C0,9.92533333 2.46253333,11 5.5,11 C8.53746667,11 11,9.92533333 11,8.6 L11,5\"\n id=\"Shape\"\n />\n </g>\n </g>\n </g>\n </g>\n </svg>\n )\n}\n\nexport default DataIcon\n","import React from 'react'\n\nconst PeriodIcon = () => {\n return (\n <svg\n width=\"16px\"\n height=\"16px\"\n viewBox=\"0 0 16 16\"\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <g\n id=\"Exp\"\n stroke=\"none\"\n strokeWidth=\"1\"\n fill=\"none\"\n fillRule=\"evenodd\"\n >\n <g id=\"Artboard\" transform=\"translate(-32.000000, -9.000000)\">\n <g\n id=\"icon_period_new\"\n transform=\"translate(32.000000, 9.000000)\"\n >\n <rect\n id=\"frame\"\n fill=\"#D8D8D8\"\n opacity=\"0\"\n x=\"0\"\n y=\"0\"\n width=\"16\"\n height=\"16\"\n />\n <g\n id=\"time-clock-circle\"\n transform=\"translate(2.000000, 2.000000)\"\n >\n <circle\n id=\"Oval\"\n stroke=\"#000000\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n cx=\"5.5\"\n cy=\"5.5\"\n r=\"5.5\"\n />\n <path\n d=\"M6,5.29289322 L8.18198052,7.47487373 C8.37724266,7.67013588 8.37724266,7.98671837 8.18198052,8.18198052 C7.98671837,8.37724266 7.67013588,8.37724266 7.47487373,8.18198052 L5.01023174,5.71733852 L5,5.7144165 L5,3.5 C5,3.22385763 5.22385763,3 5.5,3 C5.77614237,3 6,3.22385763 6,3.5 L6,5.29289322 Z\"\n id=\"Combined-Shape\"\n fill=\"#000000\"\n />\n </g>\n </g>\n </g>\n </g>\n </svg>\n )\n}\n\nexport default PeriodIcon\n","import React from 'react'\n\nconst OrgUnitIcon = () => {\n return (\n <svg height=\"16\" viewBox=\"0 0 16 16\" width=\"16\">\n <g fill=\"#212934\" fillRule=\"evenodd\">\n <path d=\"m2 2h1v10h-1z\" />\n <path d=\"m3 4h2v1h-2z\" />\n <path d=\"m3 11h2v1h-2z\" />\n <path d=\"m6 4h2v1h-2z\" />\n <path d=\"m6 11h2v1h-2z\" />\n <path d=\"m9 4h1v1h-1z\" />\n <path d=\"m9 11h1v1h-1z\" />\n <g fillRule=\"nonzero\">\n <path d=\"m14 2h-4v5h4zm-1 1v3h-2v-3z\" />\n <path d=\"m14 9h-4v5h4zm-1 1v3h-2v-3z\" />\n </g>\n </g>\n </svg>\n )\n}\n\nexport default OrgUnitIcon\n","import React from 'react'\n\nconst AssignedCategoriesIcon = () => {\n return (\n <svg height=\"16\" viewBox=\"0 0 16 16\" width=\"16\">\n <g fill=\"#212934\" fillRule=\"evenodd\">\n <path d=\"m2 7h11v1h-11z\" />\n <path d=\"m2 13h11v1h-11z\" />\n <path d=\"m2 2h11v1h-11z\" />\n <path d=\"m7 8h1v5h-1z\" />\n <path d=\"m12 3h1v10h-1z\" />\n <path d=\"m2 3h1v10h-1z\" />\n </g>\n </svg>\n )\n}\n\nexport default AssignedCategoriesIcon\n","import i18n from '@dhis2/d2-i18n'\nimport DataIcon from '../assets/DataIcon'\nimport PeriodIcon from '../assets/PeriodIcon'\nimport OrgUnitIcon from '../assets/OrgUnitIcon'\nimport AssignedCategoriesIcon from '../assets/AssignedCategoriesIcon'\n\nexport const DIMENSION_ID_DATA = 'dx'\nexport const DIMENSION_ID_PERIOD = 'pe'\nexport const DIMENSION_ID_ORGUNIT = 'ou'\nexport const DIMENSION_ID_ASSIGNED_CATEGORIES = 'co'\nexport const DIMENSION_PROP_NO_ITEMS = 'noItems'\n\nexport const getFixedDimensions = () => ({\n [DIMENSION_ID_DATA]: {\n id: DIMENSION_ID_DATA,\n name: i18n.t('Data'),\n iconName: 'DataIcon',\n icon: DataIcon,\n },\n [DIMENSION_ID_PERIOD]: {\n id: DIMENSION_ID_PERIOD,\n name: i18n.t('Period'),\n iconName: 'PeriodIcon',\n icon: PeriodIcon,\n },\n [DIMENSION_ID_ORGUNIT]: {\n id: DIMENSION_ID_ORGUNIT,\n name: i18n.t('Organisation Unit'),\n iconName: 'OrgUnitIcon',\n icon: OrgUnitIcon,\n },\n})\n\nexport const getDynamicDimensions = () => ({\n [DIMENSION_ID_ASSIGNED_CATEGORIES]: {\n id: DIMENSION_ID_ASSIGNED_CATEGORIES,\n name: i18n.t('Assigned Categories'),\n iconName: 'AssignedCategoriesIcon',\n icon: AssignedCategoriesIcon,\n [DIMENSION_PROP_NO_ITEMS]: true,\n },\n})\n\nexport const getPredefinedDimensions = () => ({\n ...getFixedDimensions(),\n ...getDynamicDimensions(),\n})\n\nexport const filterOutPredefinedDimensions = dimensionIds =>\n dimensionIds.filter(\n dimensionId =>\n !Object.keys(getPredefinedDimensions()).includes(dimensionId)\n )\n\nexport const getPredefinedDimensionProp = (dimensionId, propName) =>\n (getPredefinedDimensions()[dimensionId] || {})[propName]\n\nexport const getDimensionById = dimensionId =>\n getPredefinedDimensions()[dimensionId]\n","import React, { Component } from 'react'\nimport PropTypes from 'prop-types'\nimport debounce from 'lodash/debounce'\nimport isEqual from 'lodash/isEqual'\n\nimport ItemSelector from '../ItemSelector/ItemSelector' //TODO: Deprecate ItemSelector once this dependency is removed?\nimport DataTypes from './DataTypesSelector'\nimport Groups from './Groups'\nimport FilterField from '../FilterField'\n\nimport { apiFetchGroups, apiFetchAlternatives } from '../../api/dimensions'\n\nimport {\n DEFAULT_DATATYPE_ID,\n ALL_ID,\n dataTypes,\n defaultGroupId,\n defaultGroupDetail,\n} from '../../modules/dataTypes'\nimport { DIMENSION_ID_DATA } from '../../modules/predefinedDimensions'\n\nconst FIRST_PAGE = 1\n\nconst DEFAULT_ALTERNATIVES = {\n dimensionItems: [],\n nextPage: FIRST_PAGE,\n}\n\nexport class DataDimension extends Component {\n // defaults\n state = {\n dataType: DEFAULT_DATATYPE_ID,\n groups: {\n indicators: [],\n dataElements: [],\n dataElementOperands: [],\n dataSets: [],\n eventDataItems: [],\n programIndicators: [],\n },\n groupId: ALL_ID,\n groupDetail: '',\n filterText: '',\n items: [],\n itemsCopy: [],\n nextPage: null,\n filter: {},\n }\n\n componentDidMount() {\n this.updateGroups()\n }\n\n componentDidUpdate(prevProps) {\n const prevItems = prevProps.selectedDimensions\n const currentItems = this.props.selectedDimensions\n\n if (!isEqual(prevItems, currentItems)) {\n this.setState({\n items: this.state.itemsCopy.filter(\n di => !currentItems.includes(di.id)\n ),\n })\n }\n }\n\n updateGroups = async () => {\n const dataType = this.state.dataType\n\n if (!this.state.groups[dataType].length) {\n const dataTypeGroups = await apiFetchGroups(\n this.props.d2,\n dataType,\n this.props.displayNameProp\n )\n\n const groups = Object.assign({}, this.state.groups, {\n [dataType]: dataTypeGroups,\n })\n this.setState({ groups }, this.updateAlternatives)\n } else {\n this.updateAlternatives()\n }\n }\n\n onDataTypeChange = dataType => {\n if (dataType !== this.state.dataType) {\n const filter = Object.assign({}, this.state.filter, {\n [this.state.dataType]: {\n groupId: this.state.groupId,\n groupDetail: this.state.groupDetail,\n },\n })\n\n const currentFilter = this.state.filter[dataType] || {}\n const groupId = currentFilter.groupId || defaultGroupId(dataType)\n const groupDetail =\n currentFilter.groupDetail || defaultGroupDetail(dataType)\n\n this.setState(\n {\n filter,\n dataType,\n groupId,\n groupDetail,\n filterText: '',\n },\n this.updateGroups\n )\n }\n }\n\n requestMoreItems = () => {\n if (this.state.nextPage) {\n this.updateAlternatives(this.state.nextPage, true)\n }\n }\n\n updateAlternatives = async (page = FIRST_PAGE, concatItems = false) => {\n const { dataType, groupId, groupDetail, filterText } = this.state\n\n const alternatives =\n (await apiFetchAlternatives({\n d2: this.props.d2,\n dataType,\n groupId,\n groupDetail,\n page,\n filterText,\n nameProp: this.props.displayNameProp,\n })) || DEFAULT_ALTERNATIVES\n\n let { dimensionItems } = alternatives\n\n const augmentFn = dataTypes[dataType].augmentAlternatives\n if (augmentFn) {\n dimensionItems = augmentFn(dimensionItems, groupId)\n }\n\n const items = concatItems\n ? this.state.items.concat(dimensionItems)\n : dimensionItems\n\n this.setState({\n items: items.filter(\n di => !this.props.selectedDimensions.includes(di.id)\n ),\n itemsCopy: items,\n nextPage: alternatives.nextPage,\n })\n }\n\n debouncedUpdateAlternatives = debounce(this.updateAlternatives, 300)\n\n onGroupChange = async groupId => {\n if (groupId !== this.state.groupId) {\n this.setState({ groupId }, this.updateAlternatives)\n }\n }\n\n onDetailChange = groupDetail => {\n if (groupDetail !== this.state.groupDetail) {\n this.setState({ groupDetail }, this.updateAlternatives)\n }\n }\n\n onClearFilter = () => {\n this.setState({ filterText: '' }, this.debouncedUpdateAlternatives)\n }\n\n onFilterTextChange = filterText => {\n this.setState({ filterText }, this.debouncedUpdateAlternatives)\n }\n\n selectItems = selectedIds => {\n const itemsToAdd = this.state.items.filter(di =>\n selectedIds.includes(di.id)\n )\n\n this.props.onSelect({\n dimensionId: DIMENSION_ID_DATA,\n items: [\n ...this.props.selectedDimensions.filter(\n item => !selectedIds.includes(item.id)\n ),\n ...itemsToAdd,\n ],\n })\n }\n\n deselectItems = itemIdsToRemove => {\n this.props.onDeselect({\n dimensionId: DIMENSION_ID_DATA,\n itemIdsToRemove,\n })\n }\n\n reorderItems = itemIds =>\n this.props.onReorder({\n dimensionId: DIMENSION_ID_DATA,\n itemIds,\n })\n\n getUnselectedItems = () =>\n this.state.items.filter(\n item => !this.props.selectedDimensions.find(i => i.id === item.id)\n )\n\n render = () => {\n const groups = this.state.groups[this.state.dataType] || []\n\n const filterZone = () => {\n return (\n <div>\n <DataTypes\n currentDataType={this.state.dataType}\n onChange={this.onDataTypeChange}\n />\n <Groups\n dataType={this.state.dataType}\n groups={groups}\n groupId={this.state.groupId}\n onGroupChange={this.onGroupChange}\n onDetailChange={this.onDetailChange}\n detailValue={this.state.groupDetail}\n />\n <FilterField\n text={this.state.filterText}\n onFilterTextChange={this.onFilterTextChange}\n onClearFilter={this.onClearFilter}\n />\n </div>\n )\n }\n\n const unselected = {\n items: this.getUnselectedItems(),\n onSelect: this.selectItems,\n filterText: this.state.filterText,\n requestMoreItems: this.requestMoreItems,\n }\n\n const selected = {\n items: this.props.selectedDimensions,\n infoBoxMessage: this.props.infoBoxMessage,\n dialogId: DIMENSION_ID_DATA,\n onDeselect: this.deselectItems,\n onReorder: this.reorderItems,\n }\n\n return (\n <ItemSelector\n itemClassName=\"data-dimension\"\n unselected={unselected}\n selected={selected}\n >\n {filterZone()}\n </ItemSelector>\n )\n }\n}\n\nDataDimension.propTypes = {\n d2: PropTypes.object.isRequired,\n displayNameProp: PropTypes.string.isRequired,\n selectedDimensions: PropTypes.array.isRequired,\n onDeselect: PropTypes.func.isRequired,\n onReorder: PropTypes.func.isRequired,\n onSelect: PropTypes.func.isRequired,\n infoBoxMessage: PropTypes.string,\n}\n\nDataDimension.defaultProps = {\n selectedDimensions: [],\n onSelect: Function.prototype,\n onDeselect: Function.prototype,\n onReorder: Function.prototype,\n}\n\nexport default DataDimension\n","import i18n from '@dhis2/d2-i18n'\n// generate periods config object: { boolean offset, boolean filterFuturePeriods, boolean reversePeriods }\n\nexport const DAILY = 'DAILY'\nexport const WEEKLY = 'WEEKLY'\nexport const BIWEEKLY = 'BIWEEKLY'\nexport const WEEKLYWED = 'WEEKLYWED'\nexport const WEEKLYTHU = 'WEEKLYTHU'\nexport const WEEKLYSAT = 'WEEKLYSAT'\nexport const WEEKLYSUN = 'WEEKLYSUN'\nexport const MONTHLY = 'MONTHLY'\nexport const BIMONTHLY = 'BIMONTHLY'\nexport const QUARTERLY = 'QUARTERLY'\nexport const SIXMONTHLY = 'SIXMONTHLY'\nexport const SIXMONTHLYAPR = 'SIXMONTHLYAPR'\nexport const YEARLY = 'YEARLY'\nexport const FYNOV = 'FYNOV'\nexport const FYOCT = 'FYOCT'\nexport const FYJUL = 'FYJUL'\nexport const FYAPR = 'FYAPR'\n\nconst PERIOD_TYPE_REGEX = {\n [DAILY]: /^([0-9]{4})([0-9]{2})([0-9]{2})$/, // YYYYMMDD\n [WEEKLY]: /^([0-9]{4})()W([0-9]{1,2})$/, // YYYY\"W\"[1-53]\n [BIWEEKLY]: /^([0-9]{4})BiW([0-9]{1,2})$/, // YYYY\"BiW\"[1-27]\n [WEEKLYWED]: /^([0-9]{4})(Wed)W([0-9]{1,2})$/, // YYYY\"WedW\"[1-53]\n [WEEKLYTHU]: /^([0-9]{4})(Thu)W([0-9]{1,2})$/, // YYYY\"ThuW\"[1-53]\n [WEEKLYSAT]: /^([0-9]{4})(Sat)W([0-9]{1,2})$/, // YYYY\"SatW\"[1-53]\n [WEEKLYSUN]: /^([0-9]{4})(Sun)W([0-9]{1,2})$/, // YYYY\"SunW\"[1-53]\n [MONTHLY]: /^([0-9]{4})([0-9]{2})$/, // YYYYMM\n [BIMONTHLY]: /^([0-9]{4})([0-9]{2})B$/, // YYYY0[1-6]\"B\"\n [QUARTERLY]: /^([0-9]{4})Q([1234])$/, // YYYY\"Q\"[1-4]\n [SIXMONTHLY]: /^([0-9]{4})S([12])$/, // YYYY\"S\"[1/2]\n [SIXMONTHLYAPR]: /^([0-9]{4})AprilS([12])$/, // YYYY\"AprilS\"[1/2]\n // [SIXMONTHLYNOV]: /^([0-9]{4})NovS([12])$/, // YYYY\"NovS\"[1/2] Not supported?\n [YEARLY]: /^([0-9]{4})$/, // YYYY\n [FYNOV]: /^([0-9]{4})Nov$/, // YYYY\"Nov\"\n [FYOCT]: /^([0-9]{4})Oct$/, // YYYY\"Oct\"\n [FYJUL]: /^([0-9]{4})July$/, // YYYY\"July\"\n [FYAPR]: /^([0-9]{4})April$/, // YYYY\"April\"\n}\n\nconst getMonthName = key => {\n const monthNames = [\n i18n.t('January'),\n i18n.t('February'),\n i18n.t('March'),\n i18n.t('April'),\n i18n.t('May'),\n i18n.t('June'),\n i18n.t('July'),\n i18n.t('August'),\n i18n.t('September'),\n i18n.t('October'),\n i18n.t('November'),\n i18n.t('December'),\n ]\n\n return monthNames[key]\n}\n\nconst getDailyPeriodType = (formatYyyyMmDd, fnFilter) => {\n return config => {\n let periods = []\n const offset = parseInt(config.offset, 10)\n const isFilter = config.filterFuturePeriods\n const isReverse = config.reversePeriods\n const year = new Date(Date.now()).getFullYear() + offset\n const date = new Date(`01 Jan ${year}`)\n\n while (date.getFullYear() === year) {\n const period = {}\n period.startDate = formatYyyyMmDd(date)\n period.endDate = period.startDate\n period.name = period.startDate\n period.iso = period.startDate.replace(/-/g, '')\n period.id = period.iso\n periods.push(period)\n date.setDate(date.getDate() + 1)\n }\n\n periods = isFilter ? fnFilter(periods) : periods\n periods = isReverse ? periods.reverse() : periods\n\n return periods\n }\n}\n\nconst getWeeklyPeriodType = (formatYyyyMmDd, weekObj, fnFilter) => {\n // Calculate the first date of an EPI year base on ISO standard ( first week always contains 4th Jan )\n const getEpiWeekStartDay = (year, startDayOfWeek) => {\n const jan4 = new Date(year, 0, 4)\n const jan4DayOfWeek = jan4.getDay()\n const startDate = jan4\n const dayDiff = jan4DayOfWeek - startDayOfWeek\n\n if (dayDiff > 0) {\n startDate.setDate(jan4.getDate() - dayDiff)\n } else if (dayDiff < 0) {\n startDate.setDate(jan4.getDate() - dayDiff)\n startDate.setDate(startDate.getDate() - 7)\n }\n\n return startDate\n }\n\n return config => {\n let periods = []\n const offset = parseInt(config.offset, 10)\n const isFilter = config.filterFuturePeriods\n const isReverse = config.reversePeriods\n const year = new Date(Date.now()).getFullYear() + offset\n const date = getEpiWeekStartDay(year, weekObj.startDay)\n let week = 1\n\n while (date.getFullYear() <= year) {\n const period = {}\n period.startDate = formatYyyyMmDd(date)\n period.iso = `${year}${weekObj.shortName}W${week}`\n period.id = period.iso\n date.setDate(date.getDate() + 6)\n period.endDate = formatYyyyMmDd(date)\n\n const weekNumber = week\n period.name = `${i18n.t('Week {{weekNumber}}', { weekNumber })} - ${\n period.startDate\n } - ${period.endDate}`\n\n // if end date is Jan 4th or later, week belongs to next year\n if (date.getFullYear() > year && date.getDate() >= 4) {\n break\n }\n\n periods.push(period)\n date.setDate(date.getDate() + 1)\n\n week += 1\n }\n\n periods = isFilter ? fnFilter(periods) : periods\n periods = isReverse ? periods.reverse() : periods\n\n return periods\n }\n}\n\nconst getBiWeeklyPeriodType = (formatYyyyMmDd, fnFilter) => {\n return config => {\n let periods = []\n const offset = parseInt(config.offset, 10)\n const isFilter = config.filterFuturePeriods\n const isReverse = config.reversePeriods\n const year = new Date(Date.now()).getFullYear() + offset\n const date = new Date(`01 Jan ${year}`)\n const day = date.getDay()\n let biWeek = 1\n\n if (day <= 4) {\n date.setDate(date.getDate() - (day - 1))\n } else {\n date.setDate(date.getDate() + (8 - day))\n }\n\n while (date.getFullYear() <= year) {\n const period = {}\n\n period.iso = `${year}BiW${biWeek}`\n period.id = period.iso\n period.startDate = formatYyyyMmDd(date)\n date.setDate(date.getDate() + 13)\n\n period.endDate = formatYyyyMmDd(date)\n const biWeekNumber = biWeek\n period.name = `${i18n.t('Bi-Week {{biWeekNumber}}', {\n biWeekNumber,\n })} - ${period.startDate} - ${period.endDate}`\n\n // if end date is Jan 4th or later, biweek belongs to next year\n if (date.getFullYear() > year && date.getDate() >= 4) {\n break\n }\n\n periods.push(period)\n\n date.setDate(date.getDate() + 1)\n\n biWeek += 1\n }\n\n periods = isFilter ? fnFilter(periods) : periods\n periods = isReverse ? periods.reverse() : periods\n\n return periods\n }\n}\n\nconst getMonthlyPeriodType = (formatYyyyMmDd, fnFilter) => {\n const formatIso = date => {\n const y = date.getFullYear()\n let m = String(date.getMonth() + 1)\n\n m = m.length < 2 ? `0${m}` : m\n\n return y + m\n }\n\n return config => {\n let periods = []\n\n const offset = parseInt(config.offset, 10)\n const isFilter = config.filterFuturePeriods\n const isReverse = config.reversePeriods\n const year = new Date(Date.now()).getFullYear() + offset\n const date = new Date(`31 Dec ${year}`)\n\n while (date.getFullYear() === year) {\n const period = {}\n\n period.endDate = formatYyyyMmDd(date)\n date.setDate(1)\n period.startDate = formatYyyyMmDd(date)\n const monthName = getMonthName(date.getMonth())\n period.name = `${monthName} ${year}`\n period.iso = formatIso(date)\n period.id = period.iso\n\n periods.push(period)\n date.setDate(0)\n }\n\n periods = isFilter ? fnFilter(periods) : periods\n periods = isReverse ? periods : periods.reverse()\n // Months are collected backwards. If isReverse is true, then do nothing. Else reverse to correct order and return.\n\n return periods\n }\n}\n\nconst getBiMonthlyPeriodType = (formatYyyyMmDd, fnFilter) => {\n return config => {\n let periods = []\n const offset = parseInt(config.offset, 10)\n const isFilter = config.filterFuturePeriods\n const isReverse = config.reversePeriods\n const year = new Date(Date.now()).getFullYear() + offset\n const date = new Date(`31 Dec ${year}`)\n let index = 6\n\n while (date.getFullYear() === year) {\n const period = {}\n\n period.endDate = formatYyyyMmDd(date)\n date.setDate(0)\n date.setDate(1)\n period.startDate = formatYyyyMmDd(date)\n const monthStart = getMonthName(date.getMonth())\n const monthEnd = getMonthName(date.getMonth() + 1)\n const fullYear = date.getFullYear()\n period.name = `${monthStart} - ${monthEnd} ${fullYear}`\n period.iso = `${year}0${index}B`\n period.id = period.iso\n periods.push(period)\n date.setDate(0)\n\n index--\n }\n\n periods = isFilter ? fnFilter(periods) : periods\n periods = isReverse ? periods : periods.reverse()\n // Bi-months are collected backwards. If isReverse is true, then do nothing. Else reverse to correct order and return.\n\n return periods\n }\n}\n\nconst getQuarterlyPeriodType = (formatYyyyMmDd, fnFilter) => {\n return config => {\n let periods = []\n const offset = parseInt(config.offset, 10)\n const isFilter = config.filterFuturePeriods\n const isReverse = config.reversePeriods\n const year = new Date(Date.now()).getFullYear() + offset\n const date = new Date(`31 Dec ${year}`)\n let quarter = 4\n\n while (date.getFullYear() === year) {\n const period = {}\n period.endDate = formatYyyyMmDd(date)\n date.setDate(0)\n date.setDate(0)\n date.setDate(1)\n period.startDate = formatYyyyMmDd(date)\n const monthStart = getMonthName(date.getMonth())\n const monthEnd = getMonthName(date.getMonth() + 2)\n const fullYear = date.getFullYear()\n period.name = `${monthStart} - ${monthEnd} ${fullYear}`\n period.iso = `${year}Q${quarter}`\n period.id = period.iso\n periods.push(period)\n date.setDate(0)\n quarter -= 1\n }\n\n periods = isFilter ? fnFilter(periods) : periods\n periods = isReverse ? periods : periods.reverse()\n // Quarters are collected backwards. If isReverse is true, then do nothing. Else reverse to correct order and return.\n\n return periods\n }\n}\n\nconst getSixMonthlyPeriodType = fnFilter => {\n return config => {\n let periods = []\n const offset = parseInt(config.offset, 10)\n const isFilter = config.filterFuturePeriods\n const isReverse = config.reversePeriods\n const year = new Date(Date.now()).getFullYear() + offset\n\n let period = {}\n period.startDate = `${year}-01-01`\n period.endDate = `${year}-06-30`\n period.name = `${getMonthName(0)} - ${getMonthName(5)} ${year}`\n period.iso = `${year}S1`\n period.id = period.iso\n periods.push(period)\n\n period = {}\n period.startDate = `${year}-07-01`\n period.endDate = `${year}-12-31`\n period.name = `${getMonthName(6)} - ${getMonthName(11)} ${year}`\n period.iso = `${year}S2`\n period.id = period.iso\n periods.push(period)\n\n periods = isFilter ? fnFilter(periods) : periods\n periods = isReverse ? periods.reverse() : periods\n\n return periods\n }\n}\n\nconst getSixMonthlyAprilPeriodType = fnFilter => {\n return config => {\n let periods = []\n const offset = parseInt(config.offset, 10)\n const isFilter = config.filterFuturePeriods\n const isReverse = config.reversePeriods\n const year = new Date(Date.now()).getFullYear() + offset\n\n let period = {}\n period.startDate = `${year}-04-01`\n period.endDate = `${year}-09-30`\n period.name = `${getMonthName(3)} - ${getMonthName(8)} ${year}`\n period.iso = `${year}AprilS1`\n period.id = period.iso\n periods.push(period)\n\n period = {}\n period.startDate = `${year}-10-01`\n period.endDate = `${year + 1}-03-31`\n period.name = `${getMonthName(9)} ${year} - ${getMonthName(2)} ${year +\n 1}`\n period.iso = `${year}AprilS2`\n period.id = period.iso\n periods.push(period)\n\n periods = isFilter ? fnFilter(periods) : periods\n periods = isReverse ? periods.reverse() : periods\n\n return periods\n }\n}\n\nconst getYearlyPeriodType = (formatYyyyMmDd, fnFilter) => {\n return config => {\n let periods = []\n const offset = parseInt(config.offset, 10)\n const isFilter = config.filterFuturePeriods\n const isReverse = config.reversePeriods\n const year = new Date(Date.now()).getFullYear() + offset\n const date = new Date(`31 Dec ${year}`)\n\n while (year - date.getFullYear() < 10) {\n const period = {}\n period.endDate = formatYyyyMmDd(date)\n date.setMonth(0, 1)\n period.startDate = formatYyyyMmDd(date)\n const dateString = date.getFullYear().toString()\n period.name = dateString\n period.iso = date.getFullYear().toString()\n period.id = period.iso.toString()\n periods.push(period)\n date.setDate(0)\n }\n\n periods = isFilter ? fnFilter(periods) : periods\n periods = isReverse ? periods : periods.reverse()\n // Years are collected backwards. If isReverse is true, then do nothing. Else reverse to correct order and return.\n\n return periods\n }\n}\n\nconst getFinancialOctoberPeriodType = (formatYyyyMmDd, fnFilter) => {\n return config => {\n let periods = []\n const offset = parseInt(config.offset, 10)\n const isFilter = config.filterFuturePeriods\n const isReverse = config.reversePeriods\n const year = new Date(Date.now()).getFullYear() + offset\n const date = new Date(`30 Sep ${year + 1}`)\n\n for (let i = 0; i < 10; i++) {\n const period = {}\n period.endDate = formatYyyyMmDd(date)\n date.setYear(date.getFullYear() - 1)\n date.setDate(date.getDate() + 1)\n period.startDate = formatYyyyMmDd(date)\n const yearStart = date.getFullYear()\n const yearEnd = date.getFullYear() + 1\n period.name = `${getMonthName(9)} ${yearStart} - ${getMonthName(\n 8\n )} ${yearEnd}`\n period.id = `${date.getFullYear()}Oct`\n periods.push(period)\n date.setDate(date.getDate() - 1)\n }\n\n periods = isFilter ? fnFilter(periods) : periods\n periods = isReverse ? periods : periods.reverse()\n // FinancialOctober periods are collected backwards. If isReverse is true, then do nothing. Else reverse to correct order and return.\n\n return periods\n }\n}\n\nconst getFinancialNovemberPeriodType = (formatYyyyMmDd, fnFilter) => {\n return config => {\n let periods = []\n const offset = parseInt(config.offset, 10)\n const isFilter = config.filterFuturePeriods\n const isReverse = config.reversePeriods\n const year = new Date(Date.now()).getFullYear() + offset\n const date = new Date(`31 Oct ${year + 1}`)\n\n for (let i = 0; i < 10; i++) {\n const period = {}\n period.endDate = formatYyyyMmDd(date)\n date.setYear(date.getFullYear() - 1)\n date.setDate(date.getDate() + 1)\n period.startDate = formatYyyyMmDd(date)\n const yearStart = date.getFullYear()\n const yearEnd = date.getFullYear() + 1\n period.name = `${getMonthName(10)} ${yearStart} - ${getMonthName(\n 9\n )} ${yearEnd}`\n period.id = `${date.getFullYear()}Nov`\n periods.push(period)\n date.setDate(date.getDate() - 1)\n }\n\n periods = isFilter ? fnFilter(periods) : periods\n periods = isReverse ? periods : periods.reverse()\n // FinancialNovember periods are collected backwards. If isReverse is true, then do nothing. Else reverse to correct order and return.\n\n return periods\n }\n}\n\nconst getFinancialJulyPeriodType = (formatYyyyMmDd, fnFilter) => {\n return config => {\n let periods = []\n const offset = parseInt(config.offset, 10)\n const isFilter = config.filterFuturePeriods\n const isReverse = config.reversePeriods\n const year = new Date(Date.now()).getFullYear() + offset\n const date = new Date(`30 Jun ${year + 1}`)\n\n for (let i = 0; i < 10; i++) {\n const period = {}\n period.endDate = formatYyyyMmDd(date)\n date.setYear(date.getFullYear() - 1)\n date.setDate(date.getDate() + 1)\n period.startDate = formatYyyyMmDd(date)\n const yearStart = date.getFullYear()\n const yearEnd = date.getFullYear() + 1\n period.name = `${getMonthName(6)} ${yearStart} - ${getMonthName(\n 5\n )} ${yearEnd}`\n period.id = `${date.getFullYear()}July`\n periods.push(period)\n date.setDate(date.getDate() - 1)\n }\n\n periods = isFilter ? fnFilter(periods) : periods\n periods = isReverse ? periods : periods.reverse()\n // FinancialJuly periods are collected backwards. If isReverse is true, then do nothing. Else reverse to correct order and return.\n\n return periods\n }\n}\n\nconst getFinancialAprilPeriodType = (formatYyyyMmDd, fnFilter) => {\n return config => {\n let periods = []\n const offset = parseInt(config.offset, 10)\n const isFilter = config.filterFuturePeriods\n const isReverse = config.reversePeriods\n const year = new Date(Date.now()).getFullYear() + offset\n const date = new Date(`31 Mar ${year + 1}`)\n\n for (let i = 0; i < 10; i++) {\n const period = {}\n period.endDate = formatYyyyMmDd(date)\n date.setYear(date.getFullYear() - 1)\n date.setDate(date.getDate() + 1)\n period.startDate = formatYyyyMmDd(date)\n const yearStart = date.getFullYear()\n const yearEnd = date.getFullYear() + 1\n period.name = `${getMonthName(3)} ${yearStart} - ${getMonthName(\n 2\n )} ${yearEnd}`\n period.id = `${date.getFullYear()}April`\n periods.push(period)\n date.setDate(date.getDate() - 1)\n }\n\n periods = isFilter ? fnFilter(periods) : periods\n periods = isReverse ? periods : periods.reverse()\n // FinancialApril periods are collected backwards. If isReverse is true, then do nothing. Else reverse to correct order and return.\n\n return periods\n }\n}\n\nconst formatYyyyMmDd = date => {\n const y = date.getFullYear()\n let m = String(date.getMonth() + 1)\n let d = String(date.getDate())\n\n m = m.length < 2 ? `0${m}` : m\n d = d.length < 2 ? `0${d}` : d\n\n return `${y}-${m}-${d}`\n}\n\nconst filterFuturePeriods = periods => {\n const array = []\n const now = new Date(Date.now())\n\n for (let i = 0; i < periods.length; i++) {\n if (new Date(periods[i].startDate) <= now) {\n array.push(periods[i])\n }\n }\n\n return array\n}\n\nconst getOptions = () => [\n {\n id: DAILY,\n getPeriods: getDailyPeriodType(formatYyyyMmDd, filterFuturePeriods),\n name: i18n.t('Daily'),\n },\n {\n id: WEEKLY,\n getPeriods: getWeeklyPeriodType(\n formatYyyyMmDd,\n { shortName: '', startDay: 1 },\n filterFuturePeriods\n ),\n name: i18n.t('Weekly'),\n },\n {\n id: BIWEEKLY,\n getPeriods: getBiWeeklyPeriodType(formatYyyyMmDd, filterFuturePeriods),\n name: i18n.t('Bi-weekly'),\n },\n {\n id: WEEKLYWED,\n getPeriods: getWeeklyPeriodType(\n formatYyyyMmDd,\n { shortName: 'Wed', startDay: 3 },\n filterFuturePeriods\n ),\n name: i18n.t('Weekly (Start Wednesday)'),\n },\n {\n id: WEEKLYTHU,\n getPeriods: getWeeklyPeriodType(\n formatYyyyMmDd,\n { shortName: 'Thu', startDay: 4 },\n filterFuturePeriods\n ),\n name: i18n.t('Weekly (Start Thursday)'),\n },\n {\n id: WEEKLYSAT,\n getPeriods: getWeeklyPeriodType(\n formatYyyyMmDd,\n { shortName: 'Sat', startDay: 6 },\n filterFuturePeriods\n ),\n name: i18n.t('Weekly (Start Saturday)'),\n },\n {\n id: WEEKLYSUN,\n getPeriods: getWeeklyPeriodType(\n formatYyyyMmDd,\n { shortName: 'Sun', startDay: 7 },\n filterFuturePeriods\n ),\n name: i18n.t('Weekly (Start Sunday)'),\n },\n {\n id: MONTHLY,\n getPeriods: getMonthlyPeriodType(formatYyyyMmDd, filterFuturePeriods),\n name: i18n.t('Monthly'),\n },\n {\n id: BIMONTHLY,\n getPeriods: getBiMonthlyPeriodType(formatYyyyMmDd, filterFuturePeriods),\n name: i18n.t('Bi-monthly'),\n },\n {\n id: QUARTERLY,\n getPeriods: getQuarterlyPeriodType(formatYyyyMmDd, filterFuturePeriods),\n name: i18n.t('Quarterly'),\n },\n {\n id: SIXMONTHLY,\n getPeriods: getSixMonthlyPeriodType(filterFuturePeriods),\n name: i18n.t('Six-monthly'),\n },\n {\n id: SIXMONTHLYAPR,\n getPeriods: getSixMonthlyAprilPeriodType(filterFuturePeriods),\n name: i18n.t('Six-monthly April'),\n },\n {\n id: YEARLY,\n getPeriods: getYearlyPeriodType(formatYyyyMmDd, filterFuturePeriods),\n name: i18n.t('Yearly'),\n },\n {\n id: FYNOV,\n getPeriods: getFinancialNovemberPeriodType(\n formatYyyyMmDd,\n filterFuturePeriods\n ),\n name: i18n.t('Financial year (Start November)'),\n },\n {\n id: FYOCT,\n getPeriods: getFinancialOctoberPeriodType(\n formatYyyyMmDd,\n filterFuturePeriods\n ),\n name: i18n.t('Financial year (Start October)'),\n },\n {\n id: FYJUL,\n getPeriods: getFinancialJulyPeriodType(\n formatYyyyMmDd,\n filterFuturePeriods\n ),\n name: i18n.t('Financial year (Start July)'),\n },\n {\n id: FYAPR,\n getPeriods: getFinancialAprilPeriodType(\n formatYyyyMmDd,\n filterFuturePeriods\n ),\n name: i18n.t('Financial year (Start April)'),\n },\n]\n\nexport const getFixedPeriodsOptionsById = id =>\n getOptions().find(option => option.id === id)\n\nexport const getFixedPeriodsOptions = () => getOptions()\n\nexport const getYearOffsetFromNow = yearStr =>\n parseInt(yearStr) - new Date(Date.now()).getFullYear()\n\nexport const parsePeriodCode = (code, allowedTypes) => {\n const periodTypes = Object.keys(PERIOD_TYPE_REGEX)\n let i = 0\n let type = undefined\n let match = undefined\n\n while (i < periodTypes.length && !match) {\n type = periodTypes[i]\n match = code.match(PERIOD_TYPE_REGEX[type])\n i++\n }\n\n if (\n !match ||\n (Array.isArray(allowedTypes) && !allowedTypes.some(t => t === type))\n ) {\n return undefined\n }\n\n const period = getFixedPeriodsOptionsById(type)\n const offset = getYearOffsetFromNow(match[1])\n const options = period.getPeriods({ offset })\n\n return {\n id: period.id,\n name: period.name,\n year: match[1],\n options,\n }\n}\n","import css from 'styled-jsx/css'\nimport { spacers } from '@dhis2/ui'\n\nexport default css`\n .leftSection {\n flex-grow: 1;\n }\n .leftSection > :global(.filterElement),\n .rightSection > :global(.filterElement) {\n margin: 0;\n }\n .rightSection {\n width: 120px;\n margin-left: ${spacers.dp8};\n }\n`\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport i18n from '@dhis2/d2-i18n'\nimport { SingleSelectField, InputField, SingleSelectOption } from '@dhis2/ui'\n\nimport { getFixedPeriodsOptions } from './utils/fixedPeriods'\nimport styles from './styles/PeriodFilter.style'\n\nconst FixedPeriodFilter = ({\n allowedPeriodTypes,\n currentPeriodType,\n currentYear,\n onSelectPeriodType,\n onSelectYear,\n}) => {\n const onlyAllowedTypeIsSelected =\n Array.isArray(allowedPeriodTypes) &&\n allowedPeriodTypes.length === 1 &&\n allowedPeriodTypes[0] === currentPeriodType\n\n return (\n <>\n <div className=\"leftSection\">\n <SingleSelectField\n label={i18n.t('Period type')}\n onChange={({ selected }) => onSelectPeriodType(selected)}\n dense\n selected={currentPeriodType}\n disabled={onlyAllowedTypeIsSelected}\n className=\"filterElement\"\n >\n {getFixedPeriodsOptions()\n .filter(\n option =>\n !allowedPeriodTypes ||\n allowedPeriodTypes.some(\n type => type === option.id\n )\n )\n .map(option => (\n <SingleSelectOption\n key={option.id}\n value={option.id}\n label={option.name}\n />\n ))}\n </SingleSelectField>\n </div>\n <div className=\"rightSection\">\n <InputField\n label={i18n.t('Year')}\n className=\"filterElement\"\n type=\"number\"\n placeholder={i18n.t('Select year')}\n value={currentYear}\n onChange={({ value }) => onSelectYear(value)}\n dense\n ></InputField>\n </div>\n <style jsx>{styles}</style>\n </>\n )\n}\n\nFixedPeriodFilter.propTypes = {\n currentPeriodType: PropTypes.string.isRequired,\n currentYear: PropTypes.string.isRequired,\n onSelectPeriodType: PropTypes.func.isRequired,\n onSelectYear: PropTypes.func.isRequired,\n allowedPeriodTypes: PropTypes.arrayOf(PropTypes.string),\n}\n\nexport default FixedPeriodFilter\n","import i18n from '@dhis2/d2-i18n'\n\nexport const DAYS = 'Days'\nexport const WEEKS = 'Weeks'\nexport const BIWEEKS = 'BiWeeks'\nexport const MONTHS = 'Months'\nexport const BIMONTHS = 'BiMonths'\nexport const QUARTERS = 'Quarters'\nexport const SIXMONTHS = 'SixMonths'\nexport const FINACIALYEARS = 'FinancialYears'\nexport const YEARS = 'Years'\n\nconst getDaysPeriodType = () => [\n { id: 'TODAY', name: i18n.t('Today') },\n { id: 'YESTERDAY', name: i18n.t('Yesterday') },\n { id: 'LAST_3_DAYS', name: i18n.t('Last 3 days') },\n { id: 'LAST_7_DAYS', name: i18n.t('Last 7 days') },\n { id: 'LAST_14_DAYS', name: i18n.t('Last 14 days') },\n { id: 'LAST_30_DAYS', name: i18n.t('Last 30 days') },\n { id: 'LAST_60_DAYS', name: i18n.t('Last 60 days') },\n { id: 'LAST_90_DAYS', name: i18n.t('Last 90 days') },\n { id: 'LAST_180_DAYS', name: i18n.t('Last 180 days') },\n]\n\nconst getWeeksPeriodType = () => [\n { id: 'THIS_WEEK', name: i18n.t('This week') },\n { id: 'LAST_WEEK', name: i18n.t('Last week') },\n { id: 'LAST_4_WEEKS', name: i18n.t('Last 4 weeks') },\n { id: 'LAST_12_WEEKS', name: i18n.t('Last 12 weeks') },\n { id: 'LAST_52_WEEKS', name: i18n.t('Last 52 weeks') },\n { id: 'WEEKS_THIS_YEAR', name: i18n.t('Weeks this year') },\n]\n\nconst getBiWeeksPeriodType = () => [\n { id: 'THIS_BIWEEK', name: i18n.t('This bi-week') },\n { id: 'LAST_BIWEEK', name: i18n.t('Last bi-week') },\n { id: 'LAST_4_BIWEEKS', name: i18n.t('Last 4 bi-weeks') },\n]\n\nconst getMonthsPeriodType = () => [\n { id: 'THIS_MONTH', name: i18n.t('This month') },\n { id: 'LAST_MONTH', name: i18n.t('Last month') },\n { id: 'LAST_3_MONTHS', name: i18n.t('Last 3 months') },\n { id: 'LAST_6_MONTHS', name: i18n.t('Last 6 months') },\n { id: 'LAST_12_MONTHS', name: i18n.t('Last 12 months') },\n {\n id: 'MONTHS_THIS_YEAR',\n name: i18n.t('Months this year'),\n },\n]\n\nconst getBiMonthsPeriodType = () => [\n { id: 'THIS_BIMONTH', name: i18n.t('This bi-month') },\n { id: 'LAST_BIMONTH', name: i18n.t('Last bi-month') },\n {\n id: 'LAST_6_BIMONTHS',\n name: i18n.t('Last 6 bi-months'),\n },\n {\n id: 'BIMONTHS_THIS_YEAR',\n name: i18n.t('Bi-months this year'),\n },\n]\n\nconst getQuartersPeriodType = () => [\n { id: 'THIS_QUARTER', name: i18n.t('This quarter') },\n { id: 'LAST_QUARTER', name: i18n.t('Last quarter') },\n { id: 'LAST_4_QUARTERS', name: i18n.t('Last 4 quarters') },\n {\n id: 'QUARTERS_THIS_YEAR',\n name: i18n.t('Quarters this year'),\n },\n]\n\nconst getSixMonthsPeriodType = () => [\n { id: 'THIS_SIX_MONTH', name: i18n.t('This six-month') },\n { id: 'LAST_SIX_MONTH', name: i18n.t('Last six-month') },\n {\n id: 'LAST_2_SIXMONTHS',\n name: i18n.t('Last 2 six-month'),\n },\n]\n\nconst getFinancialYearsPeriodType = () => [\n {\n id: 'THIS_FINANCIAL_YEAR',\n name: i18n.t('This financial year'),\n },\n {\n id: 'LAST_FINANCIAL_YEAR',\n name: i18n.t('Last financial year'),\n },\n {\n id: 'LAST_5_FINANCIAL_YEARS',\n name: i18n.t('Last 5 financial years'),\n },\n]\n\nconst getYearsPeriodType = () => [\n { id: 'THIS_YEAR', name: i18n.t('This year') },\n { id: 'LAST_YEAR', name: i18n.t('Last year') },\n { id: 'LAST_5_YEARS', name: i18n.t('Last 5 years') },\n]\n\nconst getOptions = () => [\n { id: DAYS, getPeriods: () => getDaysPeriodType(), name: i18n.t('Days') },\n {\n id: WEEKS,\n getPeriods: () => getWeeksPeriodType(),\n name: i18n.t('Weeks'),\n },\n {\n id: BIWEEKS,\n getPeriods: () => getBiWeeksPeriodType(),\n name: i18n.t('Bi-weeks'),\n },\n {\n id: MONTHS,\n getPeriods: () => getMonthsPeriodType(),\n name: i18n.t('Months'),\n },\n {\n id: BIMONTHS,\n getPeriods: () => getBiMonthsPeriodType(),\n name: i18n.t('Bi-months'),\n },\n {\n id: QUARTERS,\n getPeriods: () => getQuartersPeriodType(),\n name: i18n.t('Quarters'),\n },\n {\n id: SIXMONTHS,\n getPeriods: () => getSixMonthsPeriodType(),\n name: i18n.t('Six-months'),\n },\n {\n id: FINACIALYEARS,\n getPeriods: () => getFinancialYearsPeriodType(),\n name: i18n.t('Financial Years'),\n },\n {\n id: YEARS,\n getPeriods: () => getYearsPeriodType(),\n name: i18n.t('Years'),\n },\n]\n\nexport const getRelativePeriodsOptionsById = id =>\n getOptions().find(option => option.id === id)\n\nexport const getRelativePeriodsOptions = () => getOptions()\n\nexport const getRelativePeriodIds = () =>\n Object.values(getOptions())\n .map(option => option.getPeriods().map(period => period.id))\n .flat()\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport i18n from '@dhis2/d2-i18n'\nimport { SingleSelectField, SingleSelectOption } from '@dhis2/ui'\n\nimport { getRelativePeriodsOptions } from './utils/relativePeriods'\nimport styles from './styles/PeriodFilter.style'\n\nconst RelativePeriodFilter = ({ currentFilter, onSelectFilter }) => (\n <div className=\"leftSection\">\n <SingleSelectField\n label={i18n.t('Period type')}\n onChange={({ selected }) => onSelectFilter(selected)}\n dense\n selected={currentFilter}\n className=\"filterElement\"\n >\n {getRelativePeriodsOptions().map(option => (\n <SingleSelectOption\n key={option.id}\n value={option.id}\n label={option.name}\n />\n ))}\n </SingleSelectField>\n <style jsx>{styles}</style>\n </div>\n)\n\nRelativePeriodFilter.propTypes = {\n currentFilter: PropTypes.string.isRequired,\n onSelectFilter: PropTypes.func.isRequired,\n}\n\nexport default RelativePeriodFilter\n","import css from 'styled-jsx/css'\nimport { spacers, colors } from '@dhis2/ui'\n\nexport default css`\n .filterContainer {\n display: flex;\n margin-bottom: ${spacers.dp12};\n margin-top: ${spacers.dp8};\n }\n .emptySelection {\n text-align: center;\n font-size: 14px;\n line-height: 16px;\n margin: ${spacers.dp24} 0 0;\n color: ${colors.grey700};\n }\n .rightHeader {\n font-size: 14px;\n font-weight: 400;\n }\n`\n","import css from 'styled-jsx/css'\nimport { colors, spacers, theme } from '@dhis2/ui'\n\nexport default css`\n .wrapper:last-child {\n margin-bottom: ${spacers.dp4};\n }\n .chip {\n display: inline-block;\n background: ${colors.grey200};\n font-size: 14px;\n line-height: 16px;\n padding: 2px ${spacers.dp8} 2px ${spacers.dp4};\n margin-top: ${spacers.dp4};\n margin-left: ${spacers.dp8};\n border-radius: 3px;\n user-select: none;\n }\n\n .chip:hover {\n background: ${colors.grey300};\n }\n\n .selected {\n background: ${theme.secondary100};\n color: ${theme.secondary900};\n }\n\n .selected :global(.icon path) {\n fill: ${theme.secondary700};\n }\n\n .selected:hover {\n background: #c9edeb;\n }\n\n .highlighted,\n .highlighted:hover {\n background: ${theme.secondary800};\n color: ${colors.white};\n }\n\n .highlighted :global(.icon path) {\n fill: ${colors.white};\n }\n\n .disabled {\n opacity: 0.3;\n cursor: not-allowed;\n }\n\n .icon,\n .label {\n line-height: 18px;\n }\n\n .icon {\n margin-right: ${spacers.dp4};\n display: inline-flex;\n vertical-align: text-bottom;\n }\n\n .label {\n font-size: 14px;\n }\n`\n","import React from 'react'\nimport cx from 'classnames'\nimport propTypes from '@dhis2/prop-types'\n\nimport styles from './styles/TransferOption.style'\n\nexport const TransferOption = ({\n disabled,\n label,\n highlighted,\n selected,\n onClick,\n onDoubleClick,\n value,\n icon,\n}) => {\n return (\n <div data-value={value} className=\"wrapper\">\n <div\n className={cx('chip', { highlighted, disabled, selected })}\n onClick={event => {\n if (disabled) return\n onClick({ label, value }, event)\n }}\n onDoubleClick={event => {\n if (disabled) return\n onDoubleClick({ label, value }, event)\n }}\n >\n <span className=\"icon\">{icon}</span>\n <span className=\"label\">{label}</span>\n </div>\n\n <style jsx>{styles}</style>\n </div>\n )\n}\n\nTransferOption.propTypes = {\n label: propTypes.string.isRequired,\n value: propTypes.string.isRequired,\n disabled: propTypes.bool,\n highlighted: propTypes.bool,\n icon: propTypes.node,\n selected: propTypes.bool,\n onClick: propTypes.func,\n onDoubleClick: propTypes.func,\n}\n","import React from 'react'\n\nexport default (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n >\n <path\n fill=\"#6E7A8A\"\n d=\"M8,4 C10.209139,4 12,5.790861 12,8 C12,10.209139 10.209139,12 8,12 C5.790861,12 4,10.209139 4,8 C4,5.790861 5.790861,4 8,4 Z M8,5 C6.34314575,5 5,6.34314575 5,8 C5,9.65685425 6.34314575,11 8,11 C9.65685425,11 11,9.65685425 11,8 C11,6.34314575 9.65685425,5 8,5 Z M8.5,6 L8.5,7.5 L9.5,7.5 L9.5,8.5 L7.5,8.5 L7.5,6 L8.5,6 Z\"\n />\n </svg>\n)\n","export const TRANSFER_OPTIONS_WIDTH = '420px'\n\nexport const TRANSFER_SELECTED_WIDTH = '298px'\n\nexport const TRANSFER_HEIGHT = '512px'\n","import React, { Component } from 'react'\nimport PropTypes from 'prop-types'\nimport { TabBar, Tab, Transfer } from '@dhis2/ui'\nimport i18n from '@dhis2/d2-i18n'\n\nimport FixedPeriodFilter from './FixedPeriodFilter'\nimport RelativePeriodFilter from './RelativePeriodFilter'\nimport { MONTHS, getRelativePeriodsOptionsById } from './utils/relativePeriods'\nimport { MONTHLY, getFixedPeriodsOptionsById } from './utils/fixedPeriods'\nimport styles from '../styles/DimensionSelector.style'\nimport { TransferOption } from '../TransferOption'\nimport PeriodIcon from '../../assets/DimensionItemIcons/PeriodIcon' //TODO: Reimplement the icon\nimport {\n TRANSFER_HEIGHT,\n TRANSFER_OPTIONS_WIDTH,\n TRANSFER_SELECTED_WIDTH,\n} from '../../modules/dimensionSelectorHelper'\n\nconst defaultRelativePeriodType = getRelativePeriodsOptionsById(MONTHS)\nconst defaultFixedPeriodType = getFixedPeriodsOptionsById(MONTHLY)\nconst defaultFixedPeriodYear = new Date().getFullYear()\nconst fixedPeriodConfig = year => ({\n offset: year - defaultFixedPeriodYear,\n filterFuturePeriods: false,\n reversePeriods: false,\n})\n\nclass PeriodTransfer extends Component {\n state = {\n allPeriods: defaultRelativePeriodType.getPeriods(),\n selectedPeriods: [],\n isRelative: true,\n relativeFilter: {\n periodType: defaultRelativePeriodType.id,\n },\n fixedFilter: {\n periodType: defaultFixedPeriodType.id,\n year: defaultFixedPeriodYear.toString(),\n },\n }\n\n constructor(props) {\n super(props)\n\n this.state.selectedPeriods = this.props.initialSelectedPeriods\n }\n\n onIsRelativeClick = isRelative => {\n if (this.state.isRelative !== isRelative) {\n this.setState({ isRelative })\n this.setState({\n allPeriods: isRelative\n ? getRelativePeriodsOptionsById(\n this.state.relativeFilter.periodType\n ).getPeriods()\n : getFixedPeriodsOptionsById(\n this.state.fixedFilter.periodType\n ).getPeriods(\n fixedPeriodConfig(Number(this.state.fixedFilter.year))\n ),\n })\n }\n }\n\n renderLeftHeader = () => (\n <>\n <TabBar>\n <Tab\n selected={this.state.isRelative}\n onClick={() => this.onIsRelativeClick(true)}\n >\n {i18n.t('Relative periods')}\n </Tab>\n <Tab\n selected={!this.state.isRelative}\n onClick={() => this.onIsRelativeClick(false)}\n >\n {i18n.t('Fixed periods')}\n </Tab>\n </TabBar>\n <div className=\"filterContainer\">\n {this.state.isRelative ? (\n <RelativePeriodFilter\n currentFilter={this.state.relativeFilter.periodType}\n onSelectFilter={filter => {\n this.setState({\n relativeFilter: { periodType: filter },\n })\n this.setState({\n allPeriods: getRelativePeriodsOptionsById(\n filter\n ).getPeriods(),\n })\n }}\n />\n ) : (\n <FixedPeriodFilter\n currentPeriodType={this.state.fixedFilter.periodType}\n currentYear={this.state.fixedFilter.year}\n onSelectPeriodType={periodType => {\n this.onSelectFixedPeriods({\n periodType,\n year: this.state.fixedFilter.year,\n })\n }}\n onSelectYear={year => {\n this.onSelectFixedPeriods({\n periodType: this.state.fixedFilter.periodType,\n year,\n })\n }}\n />\n )}\n </div>\n <style jsx>{styles}</style>\n </>\n )\n\n renderRightHeader = () => (\n <>\n <p className=\"rightHeader\">{i18n.t('Selected Periods')}</p>\n <style jsx>{styles}</style>\n </>\n )\n\n onSelectFixedPeriods = fixedFilter => {\n this.setState({\n fixedFilter,\n allPeriods: getFixedPeriodsOptionsById(\n fixedFilter.periodType\n ).getPeriods(fixedPeriodConfig(Number(fixedFilter.year))),\n })\n }\n\n renderEmptySelection = () => (\n <>\n <p className=\"emptySelection\">{i18n.t('No periods selected')}</p>\n <style jsx>{styles}</style>\n </>\n )\n\n render = () => (\n <Transfer\n onChange={({ selected }) => {\n const formattedItems = selected.map(id => ({\n id,\n name: [\n ...this.state.allPeriods,\n ...this.state.selectedPeriods,\n ].find(item => item.id === id).name,\n }))\n this.setState({ selectedPeriods: formattedItems })\n this.props.onSelect(formattedItems)\n }}\n selected={this.state.selectedPeriods.map(period => period.id)}\n leftHeader={this.renderLeftHeader()}\n enableOrderChange\n height={TRANSFER_HEIGHT}\n optionsWidth={TRANSFER_OPTIONS_WIDTH}\n selectedWidth={TRANSFER_SELECTED_WIDTH}\n selectedEmptyComponent={this.renderEmptySelection()}\n rightHeader={this.renderRightHeader()}\n rightFooter={this.props.rightFooter}\n options={[\n ...this.state.allPeriods,\n ...this.state.selectedPeriods,\n ].map(({ id, name }) => ({\n label: name,\n value: id,\n }))}\n renderOption={props => (\n <TransferOption {...props} icon={PeriodIcon} />\n )}\n ></Transfer>\n )\n}\n\nPeriodTransfer.propTypes = {\n onSelect: PropTypes.func.isRequired,\n initialSelectedPeriods: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string,\n name: PropTypes.string,\n })\n ),\n rightFooter: PropTypes.node,\n}\n\nPeriodTransfer.defaultProps = {\n initialSelectedPeriods: [],\n}\n\nexport default PeriodTransfer\n","import React from 'react'\nimport PropTypes from 'prop-types'\n\nimport PeriodTransfer from './PeriodTransfer'\nimport { DIMENSION_ID_PERIOD } from '../../modules/predefinedDimensions'\n\nexport const PeriodDimension = ({ onSelect, selectedPeriods, rightFooter }) => {\n const selectPeriods = periods => {\n onSelect({\n dimensionId: DIMENSION_ID_PERIOD,\n items: periods,\n })\n }\n\n return (\n <PeriodTransfer\n onSelect={selectPeriods}\n initialSelectedPeriods={selectedPeriods}\n rightFooter={rightFooter}\n />\n )\n}\n\nPeriodDimension.propTypes = {\n onSelect: PropTypes.func.isRequired,\n rightFooter: PropTypes.node,\n selectedPeriods: PropTypes.array,\n}\n\nPeriodDimension.defaultProps = {\n selectedPeriods: [],\n}\n\nexport default PeriodDimension\n","import css from 'styled-jsx/css'\nimport { spacers } from '@dhis2/ui'\n\nexport default css`\n .row {\n display: flex;\n margin-bottom: ${spacers.dp8};\n }\n`\n","import React, { Component } from 'react'\nimport propTypes from '@dhis2/prop-types'\nimport i18n from '@dhis2/d2-i18n'\nimport { SingleSelectField, SingleSelectOption } from '@dhis2/ui'\nimport FixedPeriodFilter from './FixedPeriodFilter.js'\nimport {\n parsePeriodCode,\n getFixedPeriodsOptionsById as getPeriodById,\n getYearOffsetFromNow,\n} from './utils/fixedPeriods.js'\nimport styles from './styles/FixedPeriodSelect.style.js'\n\nclass FixedPeriodSelect extends Component {\n state = {\n periodType: '',\n year: '',\n options: null,\n }\n\n static getDerivedStateFromProps({ value, allowedPeriodTypes }) {\n const period = parsePeriodCode(value, allowedPeriodTypes)\n\n if (!period) {\n return null\n }\n\n return {\n periodType: period.id,\n year: period.year,\n options: period.options,\n }\n }\n\n onSelectPeriodType = periodType => {\n this.setState({\n periodType,\n options: this.getUpdatedOptions(periodType, this.state.year),\n })\n this.props.onChange()\n }\n\n onSelectYear = year => {\n this.setState({\n year,\n options: this.getUpdatedOptions(this.state.periodType, year),\n })\n this.props.onChange()\n }\n\n onSelectPeriod = ({ selected: periodId }, event) => {\n const period = this.state.options.find(({ id }) => id === periodId)\n this.props.onChange(period, event)\n }\n\n getUpdatedOptions(periodType, year) {\n const offset = getYearOffsetFromNow(year)\n return getPeriodById(periodType).getPeriods({ offset })\n }\n\n render() {\n return (\n <div\n data-test={this.props.dataTest}\n className={this.props.className}\n >\n <div className=\"row\">\n <FixedPeriodFilter\n allowedPeriodTypes={this.props.allowedPeriodTypes}\n currentPeriodType={this.state.periodType}\n currentYear={this.state.year}\n onSelectPeriodType={this.onSelectPeriodType}\n onSelectYear={this.onSelectYear}\n />\n </div>\n\n {this.state.periodType && this.state.year && (\n <SingleSelectField\n label={i18n.t('Period')}\n onChange={this.onSelectPeriod}\n dense\n selected={this.props.value}\n >\n {this.state.options.map(option => (\n <SingleSelectOption\n key={option.id}\n value={option.id}\n label={option.name}\n />\n ))}\n </SingleSelectField>\n )}\n <style jsx>{styles}</style>\n </div>\n )\n }\n}\n\nFixedPeriodSelect.defaultProps = {\n dataTest: 'dhis2-analytics-fixedperiodselect',\n value: '',\n}\n\nFixedPeriodSelect.propTypes = {\n onChange: propTypes.func.isRequired,\n allowedPeriodTypes: propTypes.arrayOf(propTypes.string),\n className: propTypes.string,\n dataTest: propTypes.string,\n value: propTypes.string,\n}\n\nexport default FixedPeriodSelect\n","import { onError } from './index'\n\nexport const apiFetchOrganisationUnitRoot = d2 => {\n const endPoint = '/organisationUnits'\n const fields = ['id', 'displayName', 'name']\n const url = `${endPoint}?paging=false&userDataViewFallback=true&fields=${fields.join(\n ','\n )}`\n\n return d2.Api.getApi()\n .get(url)\n .then(({ organisationUnits }) => organisationUnits[0])\n .catch(onError)\n}\n\n/**\n * Fetch organisation units\n * @returns {Promise<T | never>}\n */\nexport const apiFetchOrganisationUnits = (d2, displayNameProperty) => {\n const fields = [\n 'id',\n 'path',\n `${displayNameProperty}~rename(displayName)`,\n 'children::isNotEmpty',\n ]\n\n return d2.models.organisationUnits.list({\n paging: false,\n level: 1,\n fields: fields.join(','),\n userDataViewFallback: true,\n })\n}\n\n/**\n * Fetch organisation unit groups\n * @returns {*}\n */\nexport const apiFetchOrganisationUnitGroups = (d2, displayNameProperty) => {\n const endPoint = '/organisationUnitGroups'\n const fields = ['id', `${displayNameProperty}~rename(displayName)`, 'name']\n const url = `${endPoint}?paging=false&fields=${fields.join(',')}`\n\n return d2.Api.getApi()\n .get(url)\n .then(({ organisationUnitGroups }) => organisationUnitGroups)\n .catch(onError)\n}\n\n/**\n * Fetch organisation unit levels\n * @returns {*}\n */\nexport const apiFetchOrganisationUnitLevels = d2 => {\n const endPoint = '/organisationUnitLevels'\n const fields = ['id', 'displayName', 'name', 'level']\n const url = `${endPoint}?paging=false&fields=${fields.join(',')}`\n\n return d2.Api.getApi()\n .get(url)\n .then(({ organisationUnitLevels }) => organisationUnitLevels)\n .catch(onError)\n}\n","const LEVEL_ID_PREFIX = 'LEVEL'\nconst GROUP_ID_PREFIX = 'OU_GROUP'\n\nconst hasGroupPrefix = id =>\n id.substr(0, GROUP_ID_PREFIX.length) === GROUP_ID_PREFIX\n\nconst hasLevelPrefix = id =>\n id.substr(0, LEVEL_ID_PREFIX.length) === LEVEL_ID_PREFIX\n\nconst stripLevelPrefix = id =>\n hasLevelPrefix(id) ? id.substr(LEVEL_ID_PREFIX.length + 1) : id\n\nconst stripGroupPrefix = id =>\n hasGroupPrefix(id) ? id.substr(GROUP_ID_PREFIX.length + 1) : id\n\nconst removePrefix = id => stripGroupPrefix(stripLevelPrefix(id))\n\nexport const ouIdHelper = Object.freeze({\n addLevelPrefix: id => `${LEVEL_ID_PREFIX}-${removePrefix(id)}`,\n addGroupPrefix: id => `${GROUP_ID_PREFIX}-${removePrefix(id)}`,\n removePrefix,\n hasGroupPrefix,\n hasLevelPrefix,\n})\n","import React, { Component, Fragment } from 'react'\nimport PropTypes from 'prop-types'\nimport sortBy from 'lodash/sortBy'\nimport { OrgUnitSelector, userOrgUnits } from '@dhis2/d2-ui-org-unit-dialog'\nimport { CircularLoader, colors } from '@dhis2/ui'\n\nimport {\n apiFetchOrganisationUnitGroups,\n apiFetchOrganisationUnitLevels,\n apiFetchOrganisationUnits,\n} from '../../api/organisationUnits'\nimport { ouIdHelper } from '../../modules/ouIdHelper'\nimport { DIMENSION_ID_ORGUNIT } from '../../modules/predefinedDimensions'\nimport styles from './styles/OrgUnitDimension.style'\n\nexport const defaultState = {\n root: undefined,\n roots: undefined,\n // use \"selected\" property for cloning org units while user org unit(s) is (are) selected\n selected: [],\n ouLevels: [],\n ouGroups: [],\n showOrgUnitsTree: true,\n}\n\nclass OrgUnitDimension extends Component {\n constructor(props) {\n super(props)\n\n this.state = defaultState\n this.userOrgUnitIds = userOrgUnits.map(ou => ou.id)\n\n this.loadOrgUnitTree(props.d2, props.displayNameProperty)\n this.loadOrgUnitGroups(props.d2, props.displayNameProperty)\n this.loadOrgUnitLevels(props.d2)\n }\n\n componentDidUpdate(prevProps) {\n const previousId = prevProps.current ? prevProps.current.id : null\n const currentId = this.props.current ? this.props.current.id : null\n\n // remount org units selector component to ensure\n // only selected org units are expanded\n if (previousId !== currentId) {\n this.hideOrgUnitsTree()\n\n setTimeout(this.showOrgUnitsTree, 0)\n }\n }\n\n showOrgUnitsTree = () => {\n this.setState({ showOrgUnitsTree: true })\n }\n\n hideOrgUnitsTree = () => {\n this.setState({ showOrgUnitsTree: false })\n }\n\n getUserOrgUnitsFromIds = ids => {\n return userOrgUnits.filter(ou => ids.includes(ou.id))\n }\n\n onLevelChange = event => {\n const levelIds = event.target.value.filter(id => !!id)\n\n this.props.onSelect({\n dimensionId: DIMENSION_ID_ORGUNIT,\n items: [\n ...this.props.ouItems.filter(\n ou => !ouIdHelper.hasLevelPrefix(ou.id)\n ),\n ...levelIds.map(id => {\n const levelOu = this.state.ouLevels.find(ou => ou.id === id)\n\n return {\n ...levelOu,\n id: ouIdHelper.addLevelPrefix(levelOu.id),\n }\n }),\n ],\n })\n }\n\n onGroupChange = event => {\n const groupIds = event.target.value.filter(id => !!id)\n\n this.props.onSelect({\n dimensionId: DIMENSION_ID_ORGUNIT,\n items: [\n ...this.props.ouItems.filter(\n ou => !ouIdHelper.hasGroupPrefix(ou.id)\n ),\n ...groupIds.map(id => {\n const groupOu = this.state.ouGroups.find(ou => ou.id === id)\n\n return {\n ...groupOu,\n id: ouIdHelper.addGroupPrefix(id),\n }\n }),\n ],\n })\n }\n\n onDeselectAllClick = () =>\n this.props.onDeselect({\n dimensionId: DIMENSION_ID_ORGUNIT,\n itemIdsToRemove: this.props.ouItems.map(ou => ou.id),\n })\n\n loadOrgUnitTree = (d2, displayNameProperty) => {\n apiFetchOrganisationUnits(d2, displayNameProperty)\n .then(rootLevel => rootLevel.toArray())\n .then(roots => {\n this.setState({\n roots,\n root: roots[0],\n })\n })\n }\n\n loadOrgUnitGroups = (d2, displayNameProperty) => {\n apiFetchOrganisationUnitGroups(\n d2,\n displayNameProperty\n ).then(organisationUnitGroups =>\n this.setState({ ouGroups: organisationUnitGroups })\n )\n }\n\n loadOrgUnitLevels = d2 => {\n apiFetchOrganisationUnitLevels(d2).then(organisationUnitLevels =>\n this.setState({\n ouLevels: sortBy(organisationUnitLevels, ['level']),\n })\n )\n }\n\n handleOrgUnitClick = (event, orgUnit) => {\n const selected = this.props.ouItems\n\n if (selected.some(ou => ou.path === orgUnit.path)) {\n this.props.onDeselect({\n dimensionId: DIMENSION_ID_ORGUNIT,\n itemIdsToRemove: [orgUnit.id],\n })\n } else {\n this.props.onSelect({\n dimensionId: DIMENSION_ID_ORGUNIT,\n items: [\n ...selected,\n {\n ...orgUnit,\n name: orgUnit.name || orgUnit.displayName,\n },\n ],\n })\n }\n }\n\n handleUserOrgUnitClick = (event, checked) => {\n if (checked) {\n if (!this.state.selected.length) {\n this.setState({\n selected: this.props.ouItems.slice(),\n })\n }\n\n this.props.onSelect({\n dimensionId: DIMENSION_ID_ORGUNIT,\n items: [\n ...this.props.ouItems.filter(ou =>\n this.userOrgUnitIds.includes(ou.id)\n ),\n userOrgUnits.find(ou => ou.id === event.target.name),\n ],\n })\n } else {\n if (\n this.props.ouItems.length === 1 &&\n this.state.selected.length > 0\n ) {\n this.props.onSelect({\n dimensionId: DIMENSION_ID_ORGUNIT,\n items: this.state.selected,\n })\n } else {\n this.props.onDeselect({\n dimensionId: DIMENSION_ID_ORGUNIT,\n itemIdsToRemove: [event.target.name],\n })\n }\n }\n }\n\n handleMultipleOrgUnitsSelect = orgUnits => {\n const selected = this.props.ouItems\n\n this.props.onSelect({\n dimensionId: DIMENSION_ID_ORGUNIT,\n items: [\n ...selected,\n ...orgUnits.reduce((obj, ou) => {\n // avoid duplicates when clicking \"Select children\" multiple times\n if (!selected.find(i => i.id === ou.id)) {\n obj.push({ ...ou, name: ou.name || ou.displayName })\n }\n\n return obj\n }, []),\n ],\n })\n }\n\n render = () => {\n const ids = this.props.ouItems.map(ou => ou.id)\n const selected = this.props.ouItems.filter(\n ou =>\n !this.userOrgUnitIds.includes(ou.id) &&\n !ouIdHelper.hasLevelPrefix(ou.id) &&\n !ouIdHelper.hasGroupPrefix(ou.id)\n )\n\n const userOrgUnits = this.getUserOrgUnitsFromIds(ids)\n const level = ids\n .filter(ouIdHelper.hasLevelPrefix)\n .map(ouIdHelper.removePrefix)\n const group = ids\n .filter(ouIdHelper.hasGroupPrefix)\n .map(ouIdHelper.removePrefix)\n\n return (\n <Fragment>\n {this.state.root && this.state.showOrgUnitsTree && (\n <OrgUnitSelector\n d2={this.props.d2}\n root={this.state.root}\n roots={this.state.roots}\n selected={selected}\n userOrgUnits={userOrgUnits}\n level={level}\n group={group}\n levelOptions={this.state.ouLevels}\n groupOptions={this.state.ouGroups}\n onLevelChange={this.onLevelChange}\n onGroupChange={this.onGroupChange}\n onDeselectAllClick={this.onDeselectAllClick}\n handleUserOrgUnitClick={this.handleUserOrgUnitClick}\n handleOrgUnitClick={this.handleOrgUnitClick}\n handleMultipleOrgUnitsSelect={\n this.handleMultipleOrgUnitsSelect\n }\n checkboxColor=\"secondary\"\n deselectAllTooltipFontColor={colors.grey900}\n deselectAllTooltipBackgroundColor={colors.grey300}\n displayNameProperty={this.props.displayNameProperty}\n isUserDataViewFallback={true}\n />\n )}\n {!this.state.root && (\n <div className=\"loader\">\n <CircularLoader />\n </div>\n )}\n <style jsx>{styles}</style>\n </Fragment>\n )\n }\n}\n\nOrgUnitDimension.propTypes = {\n current: PropTypes.object,\n d2: PropTypes.object,\n displayNameProperty: PropTypes.string,\n ouItems: PropTypes.array,\n onDeselect: PropTypes.func,\n onSelect: PropTypes.func,\n}\n\nexport default OrgUnitDimension\n","import React from 'react'\n\nexport default (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n >\n <path\n fill=\"#6E7A8A\"\n d=\"M11,5 L11,11 L5,11 L5,5 L11,5 Z M10,6 L6,6 L6,10 L10,10 L10,6 Z\"\n />\n </svg>\n)\n","import React, { useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { Transfer } from '@dhis2/ui'\nimport i18n from '@dhis2/d2-i18n'\n\nimport styles from '../styles/DimensionSelector.style'\nimport { TransferOption } from '../TransferOption'\nimport GenericIcon from '../../assets/DimensionItemIcons/GenericIcon'\nimport {\n TRANSFER_HEIGHT,\n TRANSFER_OPTIONS_WIDTH,\n TRANSFER_SELECTED_WIDTH,\n} from '../../modules/dimensionSelectorHelper'\n\nconst ItemSelector = ({\n allItems,\n onSelect,\n initialSelectedItemIds,\n leftHeader,\n rightFooter,\n}) => {\n const [selectedItemIds, setSelectedItemIds] = useState(\n initialSelectedItemIds\n )\n\n const renderEmptySelection = () => (\n <>\n <p className=\"emptySelection\">{i18n.t('No items selected')}</p>\n <style jsx>{styles}</style>\n </>\n )\n\n const renderRightHeader = () => (\n <>\n <p className=\"rightHeader\">{i18n.t('Selected Items')}</p>\n <style jsx>{styles}</style>\n </>\n )\n\n return (\n <Transfer\n onChange={({ selected }) => {\n setSelectedItemIds(selected)\n onSelect(selected)\n }}\n selected={selectedItemIds}\n leftHeader={leftHeader}\n filterable\n filterPlaceholder={i18n.t('Search')}\n enableOrderChange\n height={TRANSFER_HEIGHT}\n optionsWidth={TRANSFER_OPTIONS_WIDTH}\n selectedWidth={TRANSFER_SELECTED_WIDTH}\n selectedEmptyComponent={renderEmptySelection()}\n rightHeader={renderRightHeader()}\n rightFooter={rightFooter}\n options={allItems.map(({ id, name, disabled }) => ({\n label: name,\n value: id,\n disabled,\n }))}\n renderOption={props => (\n <TransferOption {...props} icon={GenericIcon} />\n )}\n />\n )\n}\n\nItemSelector.propTypes = {\n allItems: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string,\n name: PropTypes.string,\n })\n ).isRequired,\n onSelect: PropTypes.func.isRequired,\n initialSelectedItemIds: PropTypes.arrayOf(PropTypes.string),\n leftHeader: PropTypes.node,\n rightFooter: PropTypes.node,\n}\n\nItemSelector.defaultProps = {\n initialSelectedItemIds: [],\n}\n\nexport default ItemSelector\n","import React, { useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\n\nimport ItemSelector from './ItemSelector'\nimport { apiFetchItemsByDimension } from '../../api/dimensions'\n\nexport const DynamicDimension = ({\n context,\n dimensionId,\n onSelect,\n selectedItems,\n rightFooter,\n}) => {\n const [items, setItems] = useState([])\n\n useEffect(() => {\n if (!items || !items.length) {\n getItems()\n }\n }, [])\n\n const getItems = async () =>\n setItems(await apiFetchItemsByDimension(context, dimensionId)) // TODO: refactor to use the data engine instead\n // TODO: *** Once pagination is in use, check if there are items that are in selectedItems that needs to be added to the items list\n // TODO: This needs to be refactored to use a loading spinner once Transfer supports it: https://jira.dhis2.org/browse/TECH-379\n\n const onSelectItems = selectedItemIds => {\n const formattedItems = selectedItemIds.map(id => ({\n id,\n name: items.find(item => item.id === id).name, // TODO: Re: *** above, this won't work with pagination\n })) // TODO: fetch the name from somewhere else, as not all content in selectedItems might be present in the items list\n onSelect({\n dimensionId: dimensionId,\n items: formattedItems,\n })\n }\n\n return (\n <ItemSelector\n onSelect={onSelectItems}\n allItems={items}\n initialSelectedItemIds={selectedItems.map(item => item.id)}\n rightFooter={rightFooter}\n // TODO: Pass in a func prop to fetch items, instead of fetching them on this level, to enable the loading spinner?\n />\n )\n}\n\nDynamicDimension.propTypes = {\n context: PropTypes.object.isRequired,\n dimensionId: PropTypes.string.isRequired,\n selectedItems: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string,\n name: PropTypes.string,\n })\n ).isRequired,\n onSelect: PropTypes.func.isRequired,\n rightFooter: PropTypes.node,\n}\n\nDynamicDimension.defaultProps = {\n selectedItems: [],\n onSelect: Function.prototype,\n}\n\nexport default DynamicDimension\n","export const styles = {\n label: {\n display: 'flex',\n outline: 'none',\n },\n}\n","import React, { Component } from 'react'\nimport PropTypes from 'prop-types'\n\nimport { styles } from './styles/DimensionLabel.style'\nimport {\n getPredefinedDimensionProp,\n DIMENSION_PROP_NO_ITEMS,\n} from '../../../modules/predefinedDimensions'\n\nexport class DimensionLabel extends Component {\n static propTypes = {\n id: PropTypes.string.isRequired,\n isDeactivated: PropTypes.bool.isRequired,\n onClick: PropTypes.func.isRequired,\n children: PropTypes.array,\n }\n\n onLabelClick = () => {\n if (\n !this.props.isDeactivated &&\n !getPredefinedDimensionProp(this.props.id, DIMENSION_PROP_NO_ITEMS)\n ) {\n this.props.onClick(this.props.id)\n }\n }\n\n onKeyPress = event => {\n if (event.key === 'Enter' && event.ctrlKey === false) {\n this.onLabelClick()\n }\n }\n\n render() {\n return (\n <div\n data-test={`dimension-id-${this.props.id}`}\n className=\"label\"\n onClick={this.onLabelClick}\n onKeyPress={this.onKeyPress}\n tabIndex={0}\n style={styles.label}\n >\n {this.props.children}\n </div>\n )\n }\n}\n\nexport default DimensionLabel\n","import { colors, theme } from '@dhis2/ui'\n\nexport const styles = {\n toolTip: {\n color: colors.white,\n backgroundColor: '#4a4a4a',\n boxShadow: 'none',\n width: '160px',\n borderRadius: '3px',\n position: 'relative',\n top: '5px',\n fontSize: '12px',\n padding: '7px 9px',\n },\n recommendedIcon: {\n backgroundColor: theme.secondary300,\n height: '8px',\n width: '8px',\n borderRadius: '4px',\n marginLeft: '5px',\n display: 'inline-block',\n cursor: 'pointer',\n },\n}\n","import React, { Component } from 'react'\nimport PropTypes from 'prop-types'\nimport Paper from '@material-ui/core/Paper'\nimport Popper from '@material-ui/core/Popper'\nimport i18n from '@dhis2/d2-i18n'\n\nimport { styles } from './styles/RecommendedIcon.style'\n\nexport class RecommendedIcon extends Component {\n state = { anchorEl: null }\n\n onMouseOver = event => {\n this.setState({ anchorEl: event.currentTarget })\n }\n\n onMouseExit = () => {\n this.setState({ anchorEl: null })\n }\n\n showTooltip = () => (\n <Popper\n anchorEl={this.state.anchorEl}\n open={Boolean(this.state.anchorEl)}\n placement=\"bottom\"\n >\n <Paper style={styles.toolTip}>\n {i18n.t('Dimension recommended with selected data')}\n </Paper>\n </Popper>\n )\n\n render() {\n const TooltipOnHover = this.state.anchorEl ? this.showTooltip() : null\n\n return this.props.isRecommended ? (\n <div\n style={styles.recommendedIcon}\n onMouseOver={this.onMouseOver}\n onMouseLeave={this.onMouseExit}\n >\n {TooltipOnHover}\n </div>\n ) : null\n }\n}\n\nRecommendedIcon.propTypes = {\n isRecommended: PropTypes.bool.isRequired,\n}\n\nexport default RecommendedIcon\n","import React from 'react'\nimport PropTypes from 'prop-types'\n\nconst MoreHorizontalIcon = ({ style }) => {\n return (\n <svg\n style={{\n ...style,\n }}\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"22\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n >\n <path d=\"M0 0h24v24H0z\" fill=\"none\" />\n <path d=\"M6 10c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm12 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm-6 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z\" />\n </svg>\n )\n}\n\nMoreHorizontalIcon.propTypes = {\n style: PropTypes.array,\n}\n\nexport default MoreHorizontalIcon\n","import React from 'react'\nimport IconButton from '@material-ui/core/IconButton'\nimport PropTypes from 'prop-types'\n\nimport MoreHorizontalIcon from '../../../assets/MoreHorizontalIcon'\n\nexport const OptionsButton = ({ style, onClick }) => (\n <IconButton style={style} onClick={onClick}>\n <MoreHorizontalIcon />\n </IconButton>\n)\n\nOptionsButton.propTypes = {\n style: PropTypes.object,\n onClick: PropTypes.func,\n}\n\nexport default OptionsButton\n","import React from 'react'\n\nconst DynamicDimensionIcon = () => {\n return (\n <svg\n width=\"16px\"\n height=\"16px\"\n viewBox=\"0 0 16 16\"\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <g\n id=\"Exp\"\n stroke=\"none\"\n strokeWidth=\"1\"\n fill=\"none\"\n fillRule=\"evenodd\"\n >\n <g id=\"Artboard\" transform=\"translate(-80.000000, -9.000000)\">\n <g\n id=\"icon_dimension_new\"\n transform=\"translate(80.000000, 9.000000)\"\n >\n <rect id=\"frame\" x=\"0\" y=\"0\" width=\"16\" height=\"16\" />\n <g\n id=\"module\"\n transform=\"translate(4.000000, 4.000000)\"\n stroke=\"#000000\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path\n d=\"M0.33209728,1.1742111 L3.16308174,0.0641666694 C3.37911767,-0.0213888898 3.61963794,-0.0213888898 3.83567387,0.0641666694 L6.66665833,1.1742111 C6.87300668,1.26220739 7.00497003,1.467 6.99984343,1.69127776 L6.99984343,5.30887771 C7.00517859,5.53285411 6.87376309,5.73756106 6.66790272,5.82594437 L3.83691826,6.93629991 C3.62076407,7.02123336 3.38048032,7.02123336 3.16432613,6.93629991 L0.333341668,5.82594437 C0.126993317,5.73794808 -0.00497002591,5.53315547 0.000156574133,5.30887771 L0.000156574133,1.69127776 C-0.00517858533,1.46730136 0.126236906,1.26259441 0.33209728,1.1742111 Z\"\n id=\"Shape\"\n />\n <path\n d=\"M3.5,2.72795833 L0.322,1.48195833\"\n id=\"Shape\"\n />\n <path\n d=\"M3.5,2.72795833 L6.678,1.48195833\"\n id=\"Shape\"\n />\n <path d=\"M3.5,6.78125 L3.5,2.72795833\" id=\"Shape\" />\n </g>\n </g>\n </g>\n </g>\n </svg>\n )\n}\n\nexport default DynamicDimensionIcon\n","import { colors, theme } from '@dhis2/ui'\n\nexport const styles = {\n labelWrapper: {\n padding: '2px 5px 2px 0',\n },\n text: {\n color: colors.grey900,\n userSelect: 'none',\n cursor: 'pointer',\n wordBreak: 'break-word',\n fontSize: '14px',\n },\n textDeactivated: {\n cursor: 'auto',\n color: colors.grey500,\n },\n item: {\n display: 'flex',\n minHeight: '24px',\n marginTop: 3,\n marginBottom: 3,\n alignItems: 'center',\n borderRadius: '2px',\n },\n selected: {\n backgroundColor: theme.secondary100,\n fontWeight: 500,\n },\n fixedDimensionIcon: {\n paddingLeft: '6px',\n paddingBottom: '2px',\n },\n dynamicDimensionIcon: {\n paddingLeft: '9px',\n paddingRight: '9px',\n },\n iconWrapper: {\n display: 'flex',\n flexDirection: 'column',\n padding: '3px 8px 0 8px',\n },\n lockIcon: {\n fontSize: '14px',\n marginTop: '1px',\n },\n optionsWrapper: {\n position: 'relative',\n height: '24px',\n minWidth: '22px',\n left: '5px',\n alignSelf: 'start',\n },\n optionsButton: {\n border: 'none',\n background: 'none',\n outline: 'none',\n cursor: 'pointer',\n padding: '1px 0px 0px 0px',\n },\n}\n","import React, { Component, createRef } from 'react'\nimport PropTypes from 'prop-types'\nimport LockIcon from '@material-ui/icons/Lock'\n\nimport DimensionLabel from './DimensionLabel'\nimport RecommendedIcon from './RecommendedIcon'\nimport OptionsButton from './OptionsButton'\nimport DynamicDimensionIcon from '../../../assets/DynamicDimensionIcon'\nimport { getPredefinedDimensionProp } from '../../../modules/predefinedDimensions'\nimport { styles } from './styles/DimensionItem.style'\n\nexport class DimensionItem extends Component {\n state = { mouseOver: false }\n\n onOptionsClick = (id, ref) => event =>\n this.props.onOptionsClick(event, id, ref)\n\n onMouseOver = () => {\n this.setState({ mouseOver: true })\n }\n\n onMouseExit = () => {\n this.setState({ mouseOver: false })\n }\n\n getDimensionIcon = () => {\n const Icon = getPredefinedDimensionProp(this.props.id, 'icon')\n return Icon ? (\n <Icon style={styles.fixedDimensionIcon} />\n ) : (\n <DynamicDimensionIcon style={styles.dynamicDimensionIcon} />\n )\n }\n\n getDimensionType = () => {\n const { id, name, isDeactivated } = this.props\n\n return (\n <span\n data-dimensionid={id}\n style={{\n ...styles.text,\n ...(isDeactivated ? styles.textDeactivated : {}),\n }}\n >\n {name}\n </span>\n )\n }\n\n render() {\n const {\n id,\n isDeactivated,\n isSelected,\n isRecommended,\n isLocked,\n onClick,\n onOptionsClick,\n innerRef,\n style,\n ...rest\n } = this.props\n\n const Icon = this.getDimensionIcon()\n const Label = this.getDimensionType()\n const itemStyle =\n isSelected && !isDeactivated\n ? { ...styles.item, ...styles.selected }\n : styles.item\n\n const optionsRef = createRef()\n\n return (\n <li\n onMouseOver={this.onMouseOver}\n onMouseLeave={this.onMouseExit}\n ref={innerRef}\n style={Object.assign({}, itemStyle, style)}\n {...rest}\n >\n <DimensionLabel\n id={id}\n isDeactivated={isDeactivated}\n onClick={onClick}\n >\n <div style={styles.iconWrapper}>{Icon}</div>\n <div style={styles.labelWrapper}>\n {Label}\n <RecommendedIcon isRecommended={isRecommended} />\n </div>\n {isLocked && (\n <div style={styles.iconWrapper}>\n <LockIcon style={styles.lockIcon} />\n </div>\n )}\n </DimensionLabel>\n {onOptionsClick ? (\n <div style={styles.optionsWrapper} ref={optionsRef}>\n {this.state.mouseOver && !isDeactivated && !isLocked ? (\n <OptionsButton\n style={styles.optionsButton}\n onClick={this.onOptionsClick(id, optionsRef)}\n />\n ) : null}\n </div>\n ) : null}\n </li>\n )\n }\n}\n\nDimensionItem.propTypes = {\n id: PropTypes.string.isRequired,\n isSelected: PropTypes.bool.isRequired, // XXX\n name: PropTypes.string.isRequired,\n innerRef: PropTypes.func,\n isDeactivated: PropTypes.bool,\n isLocked: PropTypes.bool,\n isRecommended: PropTypes.bool,\n style: PropTypes.object,\n onClick: PropTypes.func,\n onOptionsClick: PropTypes.func,\n}\n\nDimensionItem.defaultProps = {\n isDeactivated: false,\n isRecommended: false,\n isSelected: false,\n isLocked: false,\n onClick: Function.prototype,\n innerRef: Function.prototype,\n style: {},\n}\n\nexport default DimensionItem\n","import { colors, spacers } from '@dhis2/ui'\n\n// Fix for vertical flex scrolling in Firefox/Safari:\n// Wrap the list in a div with position:relative (and flex:1 instead of on the list)\n// On the list, set position:absolute, width:100%, height:100%\n\nexport const styles = {\n container: {\n position: 'relative',\n flex: '1 1 0%',\n minHeight: '30vh',\n },\n wrapper: {\n position: 'absolute',\n width: '100%',\n height: '100%',\n overflow: 'auto',\n marginTop: '0px',\n padding: 0,\n },\n list: {\n margin: 0,\n padding: 0,\n },\n header: {\n textTransform: 'uppercase',\n fontSize: '11px',\n color: colors.grey700,\n margin: '5px 0',\n letterSpacing: '0.3px',\n },\n section: {\n '&:not(:last-child)': {\n marginBottom: spacers.dp24,\n },\n },\n}\n","import React, { Component } from 'react'\nimport PropTypes from 'prop-types'\nimport { withStyles } from '@material-ui/core/styles'\nimport i18n from '@dhis2/d2-i18n'\n\nimport DimensionItem from './DimensionItem'\nimport { styles } from './styles/DimensionList.style'\nimport {\n getPredefinedDimensions,\n getFixedDimensions,\n} from '../../../modules/predefinedDimensions'\n\nexport class DimensionList extends Component {\n nameContainsFilterText = dimension =>\n dimension.name\n .toLowerCase()\n .includes(this.props.filterText.toLowerCase())\n\n isDisabled = dimensionId =>\n this.props.disabledDimension(dimensionId) || false\n\n isRecommended = dimensionId =>\n this.props.recommendedDimension(dimensionId) || false\n\n isLocked = dimensionId => this.props.lockedDimension(dimensionId) || false\n\n renderItem = dimension => (\n <DimensionItem\n id={dimension.id}\n key={dimension.id}\n name={dimension.name}\n isLocked={this.isLocked(dimension.id)}\n isSelected={this.props.selectedIds.includes(dimension.id)}\n isRecommended={this.isRecommended(dimension.id)}\n isDeactivated={this.isDisabled(dimension.id)}\n onClick={this.props.onDimensionClick}\n onOptionsClick={this.props.onDimensionOptionsClick}\n onDragStart={this.props.onDimensionDragStart}\n />\n )\n\n getDimensionItemsByFilter = filter =>\n this.props.dimensions\n .filter(filter)\n .filter(this.nameContainsFilterText)\n .map(this.renderItem)\n\n render() {\n const { classes } = this.props\n const fixedDimensions = this.getDimensionItemsByFilter(dimension =>\n Object.values(getFixedDimensions()).some(\n fixedDim => fixedDim.id === dimension.id\n )\n )\n const nonPredefinedDimensions = this.getDimensionItemsByFilter(\n dimension =>\n !Object.values(getPredefinedDimensions()).some(\n predefDim => predefDim.id === dimension.id\n )\n )\n\n return (\n <div className={classes.container}>\n <div className={classes.wrapper}>\n <div className={classes.section}>\n <h3 className={classes.header}>\n {i18n.t('Main dimensions')}\n </h3>\n <ul className={classes.list}>{fixedDimensions}</ul>\n </div>\n <div className={classes.section}>\n <h3 className={classes.header}>\n {i18n.t('Your dimensions')}\n </h3>\n <ul className={classes.list}>\n {nonPredefinedDimensions}\n </ul>\n </div>\n </div>\n </div>\n )\n }\n}\n\nDimensionList.propTypes = {\n dimensions: PropTypes.array.isRequired,\n filterText: PropTypes.string.isRequired,\n classes: PropTypes.object,\n disabledDimension: PropTypes.func,\n lockedDimension: PropTypes.func,\n recommendedDimension: PropTypes.func,\n selectedIds: PropTypes.array,\n onDimensionClick: PropTypes.func,\n onDimensionDragStart: PropTypes.func,\n onDimensionOptionsClick: PropTypes.func,\n}\n\nDimensionList.defaultProps = {\n selectedIds: [],\n disabledDimension: Function.prototype,\n lockedDimension: Function.prototype,\n recommendedDimension: Function.prototype,\n}\n\nexport default withStyles(styles)(DimensionList)\n","import { colors } from '@dhis2/ui'\n\nexport const styles = {\n divContainer: {\n height: '100%',\n display: 'flex',\n flexDirection: 'column',\n backgroundColor: colors.grey050,\n padding: '8px',\n overflow: 'hidden',\n },\n textField: {\n marginBottom: '6px',\n background: colors.white,\n border: `1px solid ${colors.grey400}`,\n borderRadius: '5px',\n },\n}\n","import React, { Component } from 'react'\nimport PropTypes from 'prop-types'\nimport i18n from '@dhis2/d2-i18n'\n\nimport Filter from '../Filter/Filter'\nimport DimensionList from './List/DimensionList'\nimport { styles } from './styles/DimensionsPanel.style'\n\nexport class DimensionsPanel extends Component {\n state = { filterText: '' }\n\n onClearFilter = () => {\n this.setState({ filterText: '' })\n }\n\n onFilterTextChange = filterText => {\n this.setState({ filterText })\n }\n\n render() {\n const {\n dimensions,\n selectedIds,\n disabledDimension,\n lockedDimension,\n recommendedDimension,\n onDimensionClick,\n onDimensionOptionsClick,\n onDimensionDragStart,\n style,\n } = this.props\n\n return (\n <div style={{ ...styles.divContainer, ...style }}>\n <Filter\n style={styles.textField}\n placeholder={i18n.t('Filter dimensions')}\n text={this.state.filterText}\n onChange={this.onFilterTextChange}\n onClear={this.onClearFilter}\n type=\"search\"\n />\n <DimensionList\n dimensions={dimensions}\n selectedIds={selectedIds}\n filterText={this.state.filterText}\n disabledDimension={disabledDimension}\n lockedDimension={lockedDimension}\n recommendedDimension={recommendedDimension}\n onDimensionOptionsClick={onDimensionOptionsClick}\n onDimensionClick={onDimensionClick}\n onDimensionDragStart={onDimensionDragStart}\n />\n </div>\n )\n }\n}\n\nDimensionsPanel.propTypes = {\n dimensions: PropTypes.array.isRequired,\n disabledDimension: PropTypes.func,\n lockedDimension: PropTypes.func,\n recommendedDimension: PropTypes.func,\n selectedIds: PropTypes.array,\n style: PropTypes.object,\n onDimensionClick: PropTypes.func,\n onDimensionDragStart: PropTypes.func,\n onDimensionOptionsClick: PropTypes.func,\n}\n\nDimensionsPanel.defaultProps = {\n selectedIds: [],\n style: {},\n onDimensionClick: Function.prototype,\n}\n\nexport default DimensionsPanel\n","// Axis\n\nexport const AXIS = {\n defaultValue: [],\n isValid: axis => Array.isArray(axis),\n}\n\n// Axis ids\n\nexport const AXIS_ID_COLUMNS = 'columns'\nexport const AXIS_ID_ROWS = 'rows'\nexport const AXIS_ID_FILTERS = 'filters'\nexport const AXIS_ID_YEAR_OVER_YEAR_SERIES = 'yearOverYearSeries'\nexport const AXIS_ID_YEAR_OVER_YEAR_CATEGORY = 'yearOverYearCategory'\n\nexport const DEFAULT_AXIS_IDS = [AXIS_ID_COLUMNS, AXIS_ID_ROWS, AXIS_ID_FILTERS]\nexport const ALL_AXIS_IDS = [\n AXIS_ID_COLUMNS,\n AXIS_ID_ROWS,\n AXIS_ID_FILTERS,\n AXIS_ID_YEAR_OVER_YEAR_SERIES,\n AXIS_ID_YEAR_OVER_YEAR_CATEGORY,\n]\n","import React from 'react'\nimport SvgIcon from '@material-ui/core/SvgIcon'\n\nexport default (\n <SvgIcon viewBox=\"0 0 16 16\">\n <g stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\n <g fill=\"#7B8998\">\n <rect x=\"0\" y=\"15\" width=\"16\" height=\"1\"></rect>\n <rect x=\"0\" y=\"0\" width=\"1\" height=\"16\"></rect>\n <rect x=\"1\" y=\"10\" width=\"13\" height=\"3\"></rect>\n <rect x=\"1\" y=\"5\" width=\"10\" height=\"3\"></rect>\n <rect x=\"1\" y=\"0\" width=\"5\" height=\"3\"></rect>\n </g>\n </g>\n </SvgIcon>\n)\n","import React from 'react'\nimport SvgIcon from '@material-ui/core/SvgIcon'\n\nexport default (\n <SvgIcon viewBox=\"0 0 16 16\">\n <g stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\n <g fill=\"#7B8998\">\n <rect x=\"0\" y=\"15\" width=\"16\" height=\"1\"></rect>\n <rect x=\"0\" y=\"0\" width=\"1\" height=\"16\"></rect>\n <rect x=\"1\" y=\"10\" width=\"6\" height=\"3\"></rect>\n <rect x=\"8\" y=\"10\" width=\"6\" height=\"3\"></rect>\n <rect x=\"1\" y=\"5\" width=\"3\" height=\"3\"></rect>\n <rect x=\"5\" y=\"5\" width=\"5\" height=\"3\"></rect>\n <rect x=\"1\" y=\"0\" width=\"4\" height=\"3\"></rect>\n <rect x=\"6\" y=\"0\" width=\"3\" height=\"3\"></rect>\n </g>\n </g>\n </SvgIcon>\n)\n","import React from 'react'\nimport SvgIcon from '@material-ui/core/SvgIcon'\n\nexport default (\n <SvgIcon viewBox=\"0 0 16 16\">\n <g stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\n <g fill=\"#7B8998\">\n <rect x=\"0\" y=\"15\" width=\"16\" height=\"1\"></rect>\n <rect x=\"0\" y=\"0\" width=\"1\" height=\"16\"></rect>\n <rect x=\"13\" y=\"8\" width=\"3\" height=\"7\"></rect>\n <rect x=\"8\" y=\"2\" width=\"3\" height=\"13\"></rect>\n <rect x=\"3\" y=\"4\" width=\"3\" height=\"11\"></rect>\n </g>\n </g>\n </SvgIcon>\n)\n","import React from 'react'\nimport SvgIcon from '@material-ui/core/SvgIcon'\n\nexport default (\n <SvgIcon viewBox=\"0 0 16 16\">\n <g stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\n <g fill=\"#7B8998\">\n <rect x=\"0\" y=\"15\" width=\"16\" height=\"1\"></rect>\n <rect x=\"0\" y=\"0\" width=\"1\" height=\"16\"></rect>\n <rect x=\"13\" y=\"8\" width=\"3\" height=\"7\"></rect>\n <rect x=\"13\" y=\"4\" width=\"3\" height=\"3\"></rect>\n <rect x=\"8\" y=\"9\" width=\"3\" height=\"6\"></rect>\n <rect x=\"8\" y=\"1\" width=\"3\" height=\"7\"></rect>\n <rect x=\"3\" y=\"13\" width=\"3\" height=\"2\"></rect>\n <rect x=\"3\" y=\"7\" width=\"3\" height=\"5\"></rect>\n </g>\n </g>\n </SvgIcon>\n)\n","import React from 'react'\nimport SvgIcon from '@material-ui/core/SvgIcon'\n\nexport default (\n <SvgIcon viewBox=\"0 0 16 16\">\n <g stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\n <g>\n <mask id=\"mask-2\" fill=\"white\">\n <rect x=\"0\" y=\"0\" width=\"16\" height=\"16\"></rect>\n </mask>\n <rect\n fill=\"#7B8998\"\n mask=\"url(#mask-2)\"\n x=\"0\"\n y=\"15\"\n width=\"16\"\n height=\"1\"\n ></rect>\n <rect\n fill=\"#7B8998\"\n mask=\"url(#mask-2)\"\n x=\"0\"\n y=\"0\"\n width=\"1\"\n height=\"16\"\n ></rect>\n <polyline\n stroke=\"#7B8998\"\n strokeWidth=\"1.5\"\n mask=\"url(#mask-2)\"\n points=\"0 5 5 9 9 7 15 12\"\n ></polyline>\n </g>\n </g>\n </SvgIcon>\n)\n","import React from 'react'\nimport SvgIcon from '@material-ui/core/SvgIcon'\n\nexport default (\n <SvgIcon viewBox=\"0 0 16 16\">\n <g stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\n <mask fill=\"white\">\n <rect x=\"0\" y=\"0\" width=\"16\" height=\"16\"></rect>\n </mask>\n <rect\n fill=\"#7B8998\"\n mask=\"url(#mask-2)\"\n x=\"0\"\n y=\"15\"\n width=\"16\"\n height=\"1\"\n ></rect>\n <rect\n fill=\"#7B8998\"\n mask=\"url(#mask-2)\"\n x=\"0\"\n y=\"0\"\n width=\"1\"\n height=\"16\"\n ></rect>\n <polygon\n stroke=\"#7B8998\"\n strokeWidth=\"1.5\"\n fill=\"#7B8998\"\n mask=\"url(#mask-2)\"\n points=\"3 5 7 9 10 7 15 12 15 13 3 13\"\n ></polygon>\n </g>\n </SvgIcon>\n)\n","import React from 'react'\nimport SvgIcon from '@material-ui/core/SvgIcon'\n\nexport default (\n <SvgIcon viewBox=\"0 0 16 16\">\n <g fill=\"none\" fillRule=\"evenodd\" transform=\"matrix(0 -1 -1 0 48 48)\">\n <polygon points=\"0 0 48 0 48 48 0 48\" />\n <polygon fill=\"#4A5768\" points=\"6 6 8 6 8 42 6 42\" />\n <polygon fill=\"#4A5768\" points=\"6 40 42 40 42 42 6 42\" />\n <polygon\n fill=\"#FFE7A7\"\n points=\"33 36 27 28 30 23 25 17 27 10 17 10 21 17 18 23 22 28 17 36\"\n />\n <polygon\n fill=\"#90CAF9\"\n points=\"16 36 22 28 18 23 21 17 17 10 12 10 12 36\"\n />\n <polyline\n stroke=\"#FFC324\"\n strokeWidth=\"2\"\n points=\"33 36 27 28 30 23 25 17 27 10\"\n />\n <polyline\n stroke=\"#147CD7\"\n strokeWidth=\"2\"\n points=\"16 36 22 28 18 23 21 17 16.5 10\"\n />\n </g>\n </SvgIcon>\n)\n","import React from 'react'\nimport SvgIcon from '@material-ui/core/SvgIcon'\n\nexport default (\n <SvgIcon viewBox=\"0 0 16 16\">\n <g stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\n <g transform=\"translate(-1.000000, 0.000000)\">\n <path\n d=\"M9,0 C11.86,0 14.5,1.52 15.93,4 C17.36,6.48 17.36,9.52 15.93,12 C14.5,14.48 11.86,16 9,16 C6.14,16 3.5,14.48 2.07,12 C0.64,9.52 0.64,6.48 2.07,4 C3.5,1.52 6.14,0 9,0 L9,8 C9,8 9,8 9,8 C9,8 9,8 9,8 C9,8 9,8 9,8 C9,8 9,8 9,8 C9,8 9,8 9,8 C9,8 9,8 9,8 L9,0 Z\"\n fillOpacity=\"0.002\"\n fill=\"#455A64\"\n ></path>\n <path\n d=\"M9.25,0.253999142 L9.25,7.62589712 L16.0605377,4.80583684 C15.9597575,4.58208479 15.8426843,4.35299631 15.7134245,4.12488021 C14.3709859,1.79673487 11.9260373,0.33967375 9.25,0.253999142 Z\"\n stroke=\"#FFFFFF\"\n strokeWidth=\"0.5\"\n fill=\"#7B8998\"\n ></path>\n <path\n d=\"M16.2507321,5.26825168 L9.25,8.16706634 L9.25,15.7459734 C11.5677905,15.6712788 13.7388491,14.5610154 15.1515843,12.7179105 C16.7838303,10.5884861 17.1923733,7.7729977 16.2507321,5.26825168 Z\"\n stroke=\"#FFFFFF\"\n strokeWidth=\"0.5\"\n fill=\"#7B8998\"\n ></path>\n <path\n d=\"M8.75,15.7460009 L8.75,0.253999142 C6.07396269,0.33967375 3.62901411,1.79673487 2.28657547,4.12488021 C0.901141511,6.52759085 0.901141511,9.47240915 2.28657547,11.8751198 C3.62901411,14.2032651 6.07396269,15.6603262 8.75,15.7460009 Z\"\n stroke=\"#FFFFFF\"\n strokeWidth=\"0.5\"\n fill=\"#7B8998\"\n ></path>\n </g>\n <g transform=\"translate(-1.000000, 0.000000)\">\n <path\n d=\"M9,0 C11.86,0 14.5,1.52 15.93,4 C17.36,6.48 17.36,9.52 15.93,12 C14.5,14.48 11.86,16 9,16 C6.14,16 3.5,14.48 2.07,12 C0.64,9.52 0.64,6.48 2.07,4 C3.5,1.52 6.14,0 9,0 L9,8 C9,8 9,8 9,8 C9,8 9,8 9,8 C9,8 9,8 9,8 C9,8 9,8 9,8 C9,8 9,8 9,8 C9,8 9,8 9,8 L9,0 Z\"\n fillOpacity=\"0.002\"\n fill=\"#455A64\"\n ></path>\n <path\n d=\"M9.25,0.253999142 L9.25,7.87969351 L15.208572,12.6370174 C15.3964843,12.3885798 15.5650482,12.1347754 15.7134245,11.8751198 C17.0988585,9.47240915 17.0988585,6.52759085 15.7134245,4.12488021 C14.3709859,1.79673487 11.9260373,0.33967375 9.25,0.253999142 Z\"\n stroke=\"#FFFFFF\"\n strokeWidth=\"0.5\"\n fill=\"#7B8998\"\n ></path>\n <path\n d=\"M14.8955472,13.0269114 L9.08920592,8.3911285 L5.86513188,15.0901411 C6.48561254,15.3656722 7.15156976,15.5571176 7.84755483,15.6628368 C10.5003854,16.0659171 13.160928,15.0629335 14.8955472,13.0269114 Z\"\n stroke=\"#FFFFFF\"\n strokeWidth=\"0.5\"\n fill=\"#7B8998\"\n ></path>\n <path\n d=\"M5.41482695,14.8728263 L8.75,7.94297101 L8.75,0.253977185 C7.27404265,0.301055104 5.8471024,0.764373723 4.63088851,1.5965198 C2.34652789,3.15491836 1.06570164,5.81818129 1.26932408,8.58162875 C1.46659354,11.2588571 3.03960782,13.6359852 5.41482695,14.8728263 Z\"\n stroke=\"#FFFFFF\"\n strokeWidth=\"0.5\"\n fill=\"#7B8998\"\n ></path>\n </g>\n </g>\n </SvgIcon>\n)\n","import React from 'react'\nimport SvgIcon from '@material-ui/core/SvgIcon'\n\nexport default (\n <SvgIcon viewBox=\"0 0 16 16\">\n <g stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\n <circle stroke=\"#7B8998\" cx=\"8\" cy=\"8\" r=\"6\"></circle>\n <circle stroke=\"#7B8998\" cx=\"8\" cy=\"8\" r=\"3\"></circle>\n <circle fill=\"#7B8998\" cx=\"8\" cy=\"2\" r=\"2\"></circle>\n <circle fill=\"#7B8998\" cx=\"3\" cy=\"12\" r=\"2\"></circle>\n </g>\n </SvgIcon>\n)\n","import React from 'react'\nimport SvgIcon from '@material-ui/core/SvgIcon'\n\nexport default (\n <SvgIcon viewBox=\"0 0 16 16\">\n <g stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\n <g>\n <mask fill=\"white\">\n <polygon points=\"0 0 16 0 16 16 0 16\"></polygon>\n </mask>\n </g>\n <path\n d=\"M15,12 C15,8.13400675 11.8659932,5 8,5 C4.13400675,5 1,8.13400675 1,12\"\n stroke=\"#7B8998\"\n ></path>\n <g transform=\"translate(1.000000, 6.000000)\">\n <path\n d=\"M7,0 C9.14,0 11.13,1.14 12.2,3 C13.27,4.86 13.27,7.14 12.2,9 C11.13,10.86 9.14,12 7,12 C4.86,12 2.87,10.86 1.8,9 C0.73,7.14 0.73,4.86 1.8,3 C2.87,1.14 4.86,0 7,0 L7,3 C5.93,3 4.94,3.57 4.4,4.5 C3.86,5.43 3.86,6.57 4.4,7.5 C4.94,8.43 5.93,9 7,9 C8.07,9 9.06,8.43 9.6,7.5 C10.14,6.57 10.14,5.43 9.6,4.5 C9.06,3.57 8.07,3 7,3 L7,0 Z\"\n fillOpacity=\"0.002\"\n fill=\"#455A64\"\n ></path>\n <path\n d=\"M1,6 C1,3.86 2.14,1.87 4,0.8 C4.91,0.27 5.95,0 7,0 L7,3 C5.93,3 4.94,3.57 4.4,4.5 C4.14,4.96 4,5.47 4,6 L1,6 Z\"\n fill=\"#7B8998\"\n ></path>\n </g>\n </g>\n </SvgIcon>\n)\n","import React from 'react'\nimport SvgIcon from '@material-ui/core/SvgIcon'\n\nexport default (\n <SvgIcon viewBox=\"0 0 16 16\">\n <g stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\n <g>\n <mask id=\"mask-2\" fill=\"white\">\n <rect id=\"path-1\" x=\"0\" y=\"0\" width=\"16\" height=\"16\"></rect>\n </mask>\n <rect\n fill=\"#7B8998\"\n mask=\"url(#mask-2)\"\n x=\"0\"\n y=\"15\"\n width=\"16\"\n height=\"1\"\n ></rect>\n <rect\n fill=\"#7B8998\"\n mask=\"url(#mask-2)\"\n x=\"0\"\n y=\"0\"\n width=\"1\"\n height=\"16\"\n ></rect>\n <polyline\n stroke=\"#7B8998\"\n strokeWidth=\"1.5\"\n mask=\"url(#mask-2)\"\n points=\"0 5 5 10 10 6 15 12\"\n ></polyline>\n <polyline\n stroke=\"#7B8998\"\n strokeWidth=\"1.5\"\n mask=\"url(#mask-2)\"\n points=\"0 10 5 2 10 12 15 4\"\n ></polyline>\n </g>\n </g>\n </SvgIcon>\n)\n","import React from 'react'\nimport SvgIcon from '@material-ui/core/SvgIcon'\n\nexport default (\n <SvgIcon viewBox=\"0 0 16 16\">\n <g stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\n <g fill=\"#7B8998\">\n <rect x=\"0\" y=\"15\" width=\"16\" height=\"1\"></rect>\n <rect x=\"0\" y=\"0\" width=\"1\" height=\"16\"></rect>\n <rect x=\"14\" y=\"9\" width=\"2\" height=\"6\"></rect>\n <rect x=\"11\" y=\"2\" width=\"2\" height=\"13\"></rect>\n <rect x=\"3\" y=\"11\" width=\"2\" height=\"4\"></rect>\n <rect x=\"6\" y=\"9\" width=\"2\" height=\"6\"></rect>\n </g>\n </g>\n </SvgIcon>\n)\n","import React from 'react'\nimport SvgIcon from '@material-ui/core/SvgIcon'\n\nexport default (\n <SvgIcon viewBox=\"0 0 16 16\">\n <g stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\n <path\n d=\"M3.85595703,11 L2.37060547,11 L2.37060547,6.27148438 L0.911621094,6.69775391 L0.911621094,5.57275391 L3.71972656,4.6015625 L3.85595703,4.6015625 L3.85595703,11 Z M10.25,11 L5.78515625,11 L5.78515625,10.0332031 L7.84179688,7.87109375 C8.34863535,7.29394243 8.60205078,6.83545092 8.60205078,6.49560547 C8.60205078,6.22021347 8.54199279,6.01074291 8.421875,5.8671875 C8.30175721,5.72363209 8.12744255,5.65185547 7.89892578,5.65185547 C7.67333872,5.65185547 7.49023508,5.74780177 7.34960938,5.93969727 C7.20898367,6.13159276 7.13867188,6.37109231 7.13867188,6.65820312 L5.65332031,6.65820312 C5.65332031,6.26562304 5.75146386,5.90307783 5.94775391,5.57055664 C6.14404395,5.23803545 6.41650216,4.97802828 6.76513672,4.79052734 C7.11377127,4.60302641 7.50341582,4.50927734 7.93408203,4.50927734 C8.62549174,4.50927734 9.15795712,4.66894372 9.53149414,4.98828125 C9.90503116,5.30761878 10.0917969,5.76611029 10.0917969,6.36376953 C10.0917969,6.61572392 10.0449223,6.86108279 9.95117188,7.09985352 C9.85742141,7.33862424 9.71167091,7.58911002 9.51391602,7.85131836 C9.31616112,8.1135267 8.99756079,8.46435327 8.55810547,8.90380859 L7.73193359,9.85742188 L10.25,9.85742188 L10.25,11 Z M12.3505859,7.18115234 L13.0493164,7.18115234 C13.6030301,7.18115234 13.8798828,6.91015896 13.8798828,6.36816406 C13.8798828,6.15722551 13.8139655,5.98510809 13.6821289,5.85180664 C13.5502923,5.71850519 13.364259,5.65185547 13.1240234,5.65185547 C12.9277334,5.65185547 12.7570808,5.7089838 12.6120605,5.82324219 C12.4670403,5.93750057 12.3945312,6.07958899 12.3945312,6.24951172 L10.9135742,6.24951172 C10.9135742,5.91259597 11.0073233,5.61230601 11.1948242,5.34863281 C11.3823252,5.08495962 11.6423323,4.87915113 11.9748535,4.73120117 C12.3073747,4.58325121 12.6728496,4.50927734 13.0712891,4.50927734 C13.7832067,4.50927734 14.3427714,4.67187337 14.75,4.99707031 C15.1572286,5.32226725 15.3608398,5.76904013 15.3608398,6.33740234 C15.3608398,6.61279435 15.2766122,6.87280151 15.1081543,7.11743164 C14.9396964,7.36206177 14.6943375,7.56054611 14.3720703,7.71289062 C14.7119158,7.83593812 14.9785147,8.02270383 15.171875,8.27319336 C15.3652353,8.52368289 15.4619141,8.83349425 15.4619141,9.20263672 C15.4619141,9.77392864 15.2421897,10.2309553 14.8027344,10.5737305 C14.3632791,10.9165056 13.7861364,11.0878906 13.0712891,11.0878906 C12.6523417,11.0878906 12.2634295,11.0080574 11.904541,10.8483887 C11.5456525,10.6887199 11.2739267,10.4675307 11.0893555,10.1848145 C10.9047842,9.9020982 10.8125,9.58056821 10.8125,9.22021484 L12.3022461,9.22021484 C12.3022461,9.41650489 12.3813469,9.58642506 12.5395508,9.72998047 C12.6977547,9.87353587 12.892577,9.9453125 13.1240234,9.9453125 C13.3847669,9.9453125 13.5927727,9.87280346 13.7480469,9.7277832 C13.9033211,9.58276295 13.980957,9.39746207 13.980957,9.171875 C13.980957,8.84960776 13.9003914,8.62109442 13.7392578,8.48632812 C13.5781242,8.35156183 13.3554702,8.28417969 13.0712891,8.28417969 L12.3505859,8.28417969 L12.3505859,7.18115234 Z\"\n fill=\"#7B8998\"\n fillRule=\"nonzero\"\n ></path>\n </g>\n </SvgIcon>\n)\n","import React from 'react'\nimport SvgIcon from '@material-ui/core/SvgIcon'\n\nexport default (\n <SvgIcon viewBox=\"0 0 16 16\">\n <g stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\n <g>\n <polygon\n fill=\"#7B8998\"\n points=\"1 11 15 11 15 12 1 12\"\n ></polygon>\n <polygon fill=\"#7B8998\" points=\"6 1 7 1 7 15 6 15\"></polygon>\n <polygon fill=\"#7B8998\" points=\"1 6 15 6 15 7 1 7\"></polygon>\n <rect\n stroke=\"#7B8998\"\n x=\"0.5\"\n y=\"0.5\"\n width=\"15\"\n height=\"15\"\n ></rect>\n </g>\n </g>\n </SvgIcon>\n)\n","import i18n from '@dhis2/d2-i18n'\nimport BarIcon from '../assets/BarIcon'\nimport StackedBarIcon from '../assets/StackedBarIcon'\nimport ColumnIcon from '../assets/ColumnIcon'\nimport StackedColumnIcon from '../assets/StackedColumnIcon'\nimport LineIcon from '../assets/LineIcon'\nimport AreaIcon from '../assets/AreaIcon'\nimport StackedAreaIcon from '../assets/StackedAreaIcon'\nimport PieIcon from '../assets/PieIcon'\nimport RadarIcon from '../assets/RadarIcon'\nimport GaugeIcon from '../assets/GaugeIcon'\nimport YearOverYearLineIcon from '../assets/YearOverYearLineIcon'\nimport YearOverYearColumnIcon from '../assets/YearOverYearColumnIcon'\nimport SingleValueIcon from '../assets/SingleValueIcon'\nimport PivotTableIcon from '../assets/PivotTableIcon'\n\nexport const VIS_TYPE_COLUMN = 'COLUMN'\nexport const VIS_TYPE_STACKED_COLUMN = 'STACKED_COLUMN'\nexport const VIS_TYPE_BAR = 'BAR'\nexport const VIS_TYPE_STACKED_BAR = 'STACKED_BAR'\nexport const VIS_TYPE_LINE = 'LINE'\nexport const VIS_TYPE_AREA = 'AREA'\nexport const VIS_TYPE_STACKED_AREA = 'STACKED_AREA'\nexport const VIS_TYPE_PIE = 'PIE'\nexport const VIS_TYPE_RADAR = 'RADAR'\nexport const VIS_TYPE_GAUGE = 'GAUGE'\nexport const VIS_TYPE_BUBBLE = 'BUBBLE'\nexport const VIS_TYPE_YEAR_OVER_YEAR_LINE = 'YEAR_OVER_YEAR_LINE'\nexport const VIS_TYPE_YEAR_OVER_YEAR_COLUMN = 'YEAR_OVER_YEAR_COLUMN'\nexport const VIS_TYPE_SINGLE_VALUE = 'SINGLE_VALUE'\nexport const VIS_TYPE_PIVOT_TABLE = 'PIVOT_TABLE'\n\nexport const visTypeDisplayNames = {\n [VIS_TYPE_PIVOT_TABLE]: i18n.t('Pivot table'),\n [VIS_TYPE_COLUMN]: i18n.t('Column'),\n [VIS_TYPE_STACKED_COLUMN]: i18n.t('Stacked column'),\n [VIS_TYPE_BAR]: i18n.t('Bar'),\n [VIS_TYPE_STACKED_BAR]: i18n.t('Stacked bar'),\n [VIS_TYPE_LINE]: i18n.t('Line'),\n [VIS_TYPE_AREA]: i18n.t('Area'),\n [VIS_TYPE_STACKED_AREA]: i18n.t('Stacked area'),\n [VIS_TYPE_PIE]: i18n.t('Pie'),\n [VIS_TYPE_RADAR]: i18n.t('Radar'),\n [VIS_TYPE_GAUGE]: i18n.t('Gauge'),\n [VIS_TYPE_YEAR_OVER_YEAR_LINE]: i18n.t('Year over year (line)'),\n [VIS_TYPE_YEAR_OVER_YEAR_COLUMN]: i18n.t('Year over year (column)'),\n [VIS_TYPE_SINGLE_VALUE]: i18n.t('Single value'),\n}\n\nexport const visTypeDescriptions = {\n [VIS_TYPE_PIVOT_TABLE]: i18n.t(\n 'View data and indicators in a manipulatable table.'\n ),\n [VIS_TYPE_COLUMN]: i18n.t(\n 'Compare sizes of related element, displayed vertically. Recommend period in filter.'\n ),\n [VIS_TYPE_STACKED_COLUMN]: i18n.t(\n 'Compare parts of a whole against related elements, vertically. Recommend data or org. unit as series.'\n ),\n [VIS_TYPE_BAR]: i18n.t(\n 'Compare sizes of related elements, displayed horizontally. Recommend period in filter.'\n ),\n [VIS_TYPE_STACKED_BAR]: i18n.t(\n 'Compare parts of a whole against related elements, horizontally. Recommend data or org. unit as series.'\n ),\n [VIS_TYPE_LINE]: i18n.t(\n 'Track or compare changes over time. Recommend period as the category.'\n ),\n [VIS_TYPE_AREA]: i18n.t(\n 'Track or compare changes over time. Recommend period as the category.'\n ),\n [VIS_TYPE_STACKED_AREA]: i18n.t(\n 'Track or compare over time parts of a whole. Recommend data in series and period in category.'\n ),\n [VIS_TYPE_PIE]: i18n.t(\n 'Compare parts of a whole at a single point in time. Recommend period in the filter.'\n ),\n [VIS_TYPE_RADAR]: i18n.t(\n 'Compare several items against multiple variables.'\n ),\n [VIS_TYPE_GAUGE]: i18n.t(\n 'Compare a percentage indicator against a 100% scale. Recommend period in filter.'\n ),\n [VIS_TYPE_YEAR_OVER_YEAR_LINE]: i18n.t(\n 'Compare changes over time between multiple time periods.'\n ),\n [VIS_TYPE_YEAR_OVER_YEAR_COLUMN]: i18n.t(\n 'Compare changes over time between multiple time periods.'\n ),\n [VIS_TYPE_SINGLE_VALUE]: i18n.t(\n 'Display a single value. Recommend relative period to show latest data.'\n ),\n}\n\nexport const visTypeIcons = {\n [VIS_TYPE_PIVOT_TABLE]: PivotTableIcon,\n [VIS_TYPE_BAR]: BarIcon,\n [VIS_TYPE_STACKED_BAR]: StackedBarIcon,\n [VIS_TYPE_COLUMN]: ColumnIcon,\n [VIS_TYPE_STACKED_COLUMN]: StackedColumnIcon,\n [VIS_TYPE_LINE]: LineIcon,\n [VIS_TYPE_AREA]: AreaIcon,\n [VIS_TYPE_STACKED_AREA]: StackedAreaIcon,\n [VIS_TYPE_PIE]: PieIcon,\n [VIS_TYPE_RADAR]: RadarIcon,\n [VIS_TYPE_GAUGE]: GaugeIcon,\n [VIS_TYPE_YEAR_OVER_YEAR_LINE]: YearOverYearLineIcon,\n [VIS_TYPE_YEAR_OVER_YEAR_COLUMN]: YearOverYearColumnIcon,\n [VIS_TYPE_SINGLE_VALUE]: SingleValueIcon,\n}\n\nexport const getDisplayNameByVisType = visType => {\n const displayName = visTypeDisplayNames[visType]\n\n if (!displayName) {\n throw new Error(`${visType} is not a valid visualization type`)\n }\n\n return displayName\n}\n\nconst stackedTypes = [\n VIS_TYPE_STACKED_COLUMN,\n VIS_TYPE_STACKED_BAR,\n VIS_TYPE_STACKED_AREA,\n]\n\nconst yearOverYearTypes = [\n VIS_TYPE_YEAR_OVER_YEAR_LINE,\n VIS_TYPE_YEAR_OVER_YEAR_COLUMN,\n]\n\nconst dualAxisTypes = [\n VIS_TYPE_COLUMN,\n VIS_TYPE_BAR,\n VIS_TYPE_LINE,\n VIS_TYPE_AREA,\n]\n\nconst twoCategoryChartTypes = [\n VIS_TYPE_COLUMN,\n VIS_TYPE_STACKED_COLUMN,\n VIS_TYPE_BAR,\n VIS_TYPE_STACKED_BAR,\n VIS_TYPE_LINE,\n VIS_TYPE_AREA,\n VIS_TYPE_STACKED_AREA,\n]\n\nconst verticalTypes = [VIS_TYPE_BAR, VIS_TYPE_STACKED_BAR, VIS_TYPE_GAUGE]\n\nexport const defaultVisType = VIS_TYPE_COLUMN\nexport const isStacked = type => stackedTypes.includes(type)\nexport const isYearOverYear = type => yearOverYearTypes.includes(type)\nexport const isDualAxisType = type => dualAxisTypes.includes(type)\nexport const isSingleValue = type => type === VIS_TYPE_SINGLE_VALUE\nexport const isTwoCategoryChartType = type =>\n twoCategoryChartTypes.includes(type)\nexport const isVerticalType = type => verticalTypes.includes(type)\n","import { AXIS_ID_COLUMNS, AXIS_ID_ROWS, AXIS_ID_FILTERS } from '../layout/axis'\nimport { DIMENSION_ID_PERIOD, DIMENSION_ID_DATA } from '../predefinedDimensions'\nimport {\n VIS_TYPE_COLUMN,\n VIS_TYPE_STACKED_COLUMN,\n VIS_TYPE_BAR,\n VIS_TYPE_STACKED_BAR,\n VIS_TYPE_LINE,\n VIS_TYPE_AREA,\n VIS_TYPE_STACKED_AREA,\n VIS_TYPE_RADAR,\n VIS_TYPE_GAUGE,\n VIS_TYPE_PIE,\n VIS_TYPE_SINGLE_VALUE,\n VIS_TYPE_YEAR_OVER_YEAR_LINE,\n VIS_TYPE_YEAR_OVER_YEAR_COLUMN,\n VIS_TYPE_PIVOT_TABLE,\n} from '../visTypes'\n\nconst RULE_PROP_AVAILABLE_AXES = 'availableAxes',\n RULE_PROP_MAX_DIMS_PER_AXIS = 'maxNumberOfDimsPerAxis',\n RULE_PROP_MIN_DIMS_PER_AXIS = 'minNumberOfDimsPerAxis',\n RULE_PROP_MAX_ITEMS_PER_AXIS = 'maxNumberOfItemsPerAxis',\n RULE_PROP_DISALLOWED_DIMS = 'disallowedDims',\n RULE_PROP_LOCKED_DIMS = 'lockedDims'\n\nconst defaultRules = {\n [RULE_PROP_AVAILABLE_AXES]: [\n AXIS_ID_COLUMNS,\n AXIS_ID_ROWS,\n AXIS_ID_FILTERS,\n ],\n [RULE_PROP_MAX_DIMS_PER_AXIS]: {\n [AXIS_ID_COLUMNS]: 1,\n [AXIS_ID_ROWS]: 2,\n },\n [RULE_PROP_MIN_DIMS_PER_AXIS]: {\n [AXIS_ID_COLUMNS]: 1,\n [AXIS_ID_ROWS]: 1,\n },\n}\n\nconst pieRules = {\n [RULE_PROP_AVAILABLE_AXES]: [AXIS_ID_COLUMNS, AXIS_ID_FILTERS],\n [RULE_PROP_MAX_DIMS_PER_AXIS]: {\n [AXIS_ID_COLUMNS]: 1,\n },\n [RULE_PROP_MIN_DIMS_PER_AXIS]: {\n [AXIS_ID_COLUMNS]: 1,\n },\n}\n\nconst radarRules = {\n [RULE_PROP_AVAILABLE_AXES]: [\n AXIS_ID_COLUMNS,\n AXIS_ID_ROWS,\n AXIS_ID_FILTERS,\n ],\n [RULE_PROP_MAX_DIMS_PER_AXIS]: {\n [AXIS_ID_COLUMNS]: 1,\n [AXIS_ID_ROWS]: 1,\n },\n [RULE_PROP_MIN_DIMS_PER_AXIS]: {\n [AXIS_ID_COLUMNS]: 1,\n [AXIS_ID_ROWS]: 1,\n },\n}\n\nconst singleValueRules = {\n [RULE_PROP_AVAILABLE_AXES]: [AXIS_ID_FILTERS],\n [RULE_PROP_MAX_DIMS_PER_AXIS]: {\n [AXIS_ID_COLUMNS]: 1,\n },\n [RULE_PROP_MIN_DIMS_PER_AXIS]: {\n [AXIS_ID_COLUMNS]: 1,\n },\n [RULE_PROP_MAX_ITEMS_PER_AXIS]: {\n [AXIS_ID_COLUMNS]: 1,\n },\n [RULE_PROP_LOCKED_DIMS]: {\n [DIMENSION_ID_DATA]: AXIS_ID_COLUMNS,\n },\n}\n\nconst yearOverYearRules = {\n [RULE_PROP_AVAILABLE_AXES]: [AXIS_ID_FILTERS],\n [RULE_PROP_DISALLOWED_DIMS]: [DIMENSION_ID_PERIOD],\n}\n\nconst pivotTableRules = {\n [RULE_PROP_AVAILABLE_AXES]: [\n AXIS_ID_COLUMNS,\n AXIS_ID_ROWS,\n AXIS_ID_FILTERS,\n ],\n}\n\nconst visTypeToRules = {\n [VIS_TYPE_COLUMN]: defaultRules,\n [VIS_TYPE_STACKED_COLUMN]: defaultRules,\n [VIS_TYPE_BAR]: defaultRules,\n [VIS_TYPE_STACKED_BAR]: defaultRules,\n [VIS_TYPE_LINE]: defaultRules,\n [VIS_TYPE_AREA]: defaultRules,\n [VIS_TYPE_STACKED_AREA]: defaultRules,\n [VIS_TYPE_RADAR]: radarRules,\n [VIS_TYPE_GAUGE]: singleValueRules,\n [VIS_TYPE_PIE]: pieRules,\n [VIS_TYPE_SINGLE_VALUE]: singleValueRules,\n [VIS_TYPE_YEAR_OVER_YEAR_LINE]: yearOverYearRules,\n [VIS_TYPE_YEAR_OVER_YEAR_COLUMN]: yearOverYearRules,\n [VIS_TYPE_PIVOT_TABLE]: pivotTableRules,\n}\n\nconst getRulesByVisType = visType => {\n const rules = visTypeToRules[visType]\n\n if (!rules) {\n throw new Error(`${visType} is not a known visualization type`)\n }\n\n return rules\n}\n\n// Selectors\n\nexport const getAvailableAxesByVisType = visType =>\n getRulesByVisType(visType)[RULE_PROP_AVAILABLE_AXES] || []\n\nexport const getMaxNumberOfDimsPerAxisByVisType = visType =>\n getRulesByVisType(visType)[RULE_PROP_MAX_DIMS_PER_AXIS] || {}\n\nexport const getMinNumberOfDimsPerAxisByVisType = visType =>\n getRulesByVisType(visType)[RULE_PROP_MIN_DIMS_PER_AXIS] || {}\n\nexport const getMaxNumberOfItemsPerAxisByVisType = visType =>\n getRulesByVisType(visType)[RULE_PROP_MAX_ITEMS_PER_AXIS] || {}\n\nexport const getDisallowedDimsByVisType = visType =>\n getRulesByVisType(visType)[RULE_PROP_DISALLOWED_DIMS] || []\n\nexport const getLockedDimsByVisType = visType =>\n getRulesByVisType(visType)[RULE_PROP_LOCKED_DIMS] || {}\n\n// Test exports\n\nexport const testResourceRequiredProps = [RULE_PROP_AVAILABLE_AXES]\n\nexport const testResourceRules = [...new Set(Object.values(visTypeToRules))]\n\nexport const testResourceAllRuleProps = {\n AVAILABLE_AXES: RULE_PROP_AVAILABLE_AXES,\n MAX_DIMS_PER_AXIS: RULE_PROP_MAX_DIMS_PER_AXIS,\n MIN_DIMS_PER_AXIS: RULE_PROP_MIN_DIMS_PER_AXIS,\n MAX_ITEMS_PER_AXIS: RULE_PROP_MAX_ITEMS_PER_AXIS,\n DISALLOWED_DIMS: RULE_PROP_DISALLOWED_DIMS,\n LOCKED_DIMS: RULE_PROP_LOCKED_DIMS,\n}\n","import {\n getMaxNumberOfItemsPerAxisByVisType,\n getMaxNumberOfDimsPerAxisByVisType,\n getMinNumberOfDimsPerAxisByVisType,\n getLockedDimsByVisType,\n} from './rules'\n\n// Selectors\n\nexport { getAvailableAxesByVisType, getDisallowedDimsByVisType } from './rules'\n\nexport const getAxisMaxNumberOfItemsByVisType = (visType, axisId) =>\n getMaxNumberOfItemsPerAxisByVisType(visType)[axisId]\n\nexport const getAxisMaxNumberOfDimsByVisType = (visType, axisId) =>\n getMaxNumberOfDimsPerAxisByVisType(visType)[axisId]\n\nexport const getAxisMinNumberOfDimsByVisType = (visType, axisId) =>\n getMinNumberOfDimsPerAxisByVisType(visType)[axisId]\n\nexport const getAxisPerLockedDimByVisType = (visType, dimensionId) =>\n getLockedDimsByVisType(visType)[dimensionId]\n\nexport const getAllLockedDimIdsByVisType = visType =>\n Object.keys(getLockedDimsByVisType(visType))\n","import { getLockedDimsByVisType } from './rules'\n\nimport {\n getAxisMaxNumberOfDimsByVisType,\n getAxisMaxNumberOfItemsByVisType,\n getAllLockedDimIdsByVisType,\n} from './rulesHelper'\n\nexport const hasAxisTooManyItemsByVisType = (\n visType,\n axisId,\n numberOfItems\n) => {\n const maxNumberOfItemsPerAxis = getAxisMaxNumberOfItemsByVisType(\n visType,\n axisId\n )\n\n return maxNumberOfItemsPerAxis\n ? numberOfItems > maxNumberOfItemsPerAxis\n : false\n}\n\nexport const isDimensionLockedByVisType = (visType, dimensionId) =>\n getAllLockedDimIdsByVisType(visType).includes(dimensionId)\n\nexport const isAxisFullByVisType = (visType, axisId, axisDimensionsCount) =>\n axisDimensionsCount >= getAxisMaxNumberOfDimsByVisType(visType, axisId)\n\nexport const canDimensionBeAddedToAxisByVisType = (visType, axis, axisId) => {\n const axisIsFull = isAxisFullByVisType(visType, axisId, axis.length)\n const transferableDimension = getTransferableDimensionPerAxisByVisType(\n visType,\n axisId,\n axis\n )\n\n // 1 dimension allowed in axis\n // 1 dimension is already present and not locked\n // the dragged one can be added and will cause the old one to be moved to filters\n // what happens with max limit > 1, axis full and 1 or more locked dimensions?\n return !(axisIsFull && !transferableDimension)\n}\n\nexport const getTransferableDimensionPerAxisByVisType = (\n visType,\n axisId,\n axis\n) => {\n const lockedDimsByVisType = getLockedDimsByVisType(visType)\n const lockedDimIdsByAxis = Object.keys(lockedDimsByVisType).filter(\n dimId => lockedDimsByVisType[dimId] === axisId\n )\n\n // return the last \"transferable\" dimension, this needs to be adjusted\n // if we allow a defined max limit > 1 and the DND wants to drop the new\n // dimension in a specific position\n return axis.filter(dimId => !lockedDimIdsByAxis.includes(dimId)).pop()\n}\n","export const LAYOUT_TYPE_DEFAULT = 'LAYOUT_TYPE_DEFAULT'\nexport const LAYOUT_TYPE_PIE = 'LAYOUT_TYPE_PIE'\nexport const LAYOUT_TYPE_SINGLE_VALUE = 'LAYOUT_TYPE_SINGLE_VALUE'\nexport const LAYOUT_TYPE_YEAR_OVER_YEAR = 'LAYOUT_TYPE_YEAR_OVER_YEAR'\nexport const LAYOUT_TYPE_PIVOT_TABLE = 'LAYOUT_TYPE_PIVOT_TABLE'\n","import i18n from '@dhis2/d2-i18n'\nimport { AXIS_ID_COLUMNS, AXIS_ID_ROWS, AXIS_ID_FILTERS } from './layout/axis'\nimport {\n LAYOUT_TYPE_DEFAULT,\n LAYOUT_TYPE_PIE,\n LAYOUT_TYPE_YEAR_OVER_YEAR,\n LAYOUT_TYPE_PIVOT_TABLE,\n} from './layoutTypes'\n\nconst getAxisNamesByLayoutType = layoutType => {\n switch (layoutType) {\n case LAYOUT_TYPE_DEFAULT:\n case LAYOUT_TYPE_PIE:\n case LAYOUT_TYPE_YEAR_OVER_YEAR:\n default:\n return {\n [AXIS_ID_COLUMNS]: i18n.t('Series'),\n [AXIS_ID_ROWS]: i18n.t('Category'),\n [AXIS_ID_FILTERS]: i18n.t('Filter'),\n }\n case LAYOUT_TYPE_PIVOT_TABLE:\n return {\n [AXIS_ID_COLUMNS]: i18n.t('Columns'),\n [AXIS_ID_ROWS]: i18n.t('Rows'),\n [AXIS_ID_FILTERS]: i18n.t('Filter'),\n }\n }\n}\n\nexport const getAxisNameByLayoutType = (axisId, layoutType) => {\n const name = getAxisNamesByLayoutType(layoutType)[axisId]\n if (!name) {\n throw new Error(`${axisId} is not a valid axis id`)\n }\n\n return name\n}\n\nexport const getAxisName = axisId =>\n getAxisNameByLayoutType(axisId, LAYOUT_TYPE_DEFAULT)\n\nexport const hasCustomAxes = series =>\n Boolean(series?.length && series.some(item => item.axis > 0))\n","import {\n VIS_TYPE_COLUMN,\n VIS_TYPE_STACKED_COLUMN,\n VIS_TYPE_BAR,\n VIS_TYPE_STACKED_BAR,\n VIS_TYPE_LINE,\n VIS_TYPE_AREA,\n VIS_TYPE_STACKED_AREA,\n VIS_TYPE_PIE,\n VIS_TYPE_RADAR,\n VIS_TYPE_GAUGE,\n VIS_TYPE_YEAR_OVER_YEAR_LINE,\n VIS_TYPE_YEAR_OVER_YEAR_COLUMN,\n VIS_TYPE_SINGLE_VALUE,\n VIS_TYPE_PIVOT_TABLE,\n} from './visTypes'\nimport {\n LAYOUT_TYPE_DEFAULT,\n LAYOUT_TYPE_PIE,\n LAYOUT_TYPE_YEAR_OVER_YEAR,\n LAYOUT_TYPE_PIVOT_TABLE,\n} from './layoutTypes'\n\nconst visTypeToLayoutType = {\n [VIS_TYPE_COLUMN]: LAYOUT_TYPE_DEFAULT,\n [VIS_TYPE_STACKED_COLUMN]: LAYOUT_TYPE_DEFAULT,\n [VIS_TYPE_BAR]: LAYOUT_TYPE_DEFAULT,\n [VIS_TYPE_STACKED_BAR]: LAYOUT_TYPE_DEFAULT,\n [VIS_TYPE_LINE]: LAYOUT_TYPE_DEFAULT,\n [VIS_TYPE_AREA]: LAYOUT_TYPE_DEFAULT,\n [VIS_TYPE_STACKED_AREA]: LAYOUT_TYPE_DEFAULT,\n [VIS_TYPE_PIE]: LAYOUT_TYPE_PIE,\n [VIS_TYPE_RADAR]: LAYOUT_TYPE_DEFAULT,\n [VIS_TYPE_GAUGE]: LAYOUT_TYPE_PIE,\n [VIS_TYPE_YEAR_OVER_YEAR_LINE]: LAYOUT_TYPE_YEAR_OVER_YEAR,\n [VIS_TYPE_YEAR_OVER_YEAR_COLUMN]: LAYOUT_TYPE_YEAR_OVER_YEAR,\n [VIS_TYPE_SINGLE_VALUE]: LAYOUT_TYPE_PIE,\n [VIS_TYPE_PIVOT_TABLE]: LAYOUT_TYPE_PIVOT_TABLE,\n}\n\nexport const getLayoutTypeByVisType = visType => visTypeToLayoutType[visType]\n","import React from 'react'\nimport { MenuDivider, FlyoutMenu, MenuItem, Tooltip } from '@dhis2/ui'\nimport i18n from '@dhis2/d2-i18n'\nimport PropTypes from 'prop-types'\n\nimport { getAvailableAxes } from '../modules/layoutUiRules'\nimport { AXIS_ID_FILTERS } from '../modules/layout/axis'\nimport {\n DIMENSION_ID_DATA,\n getPredefinedDimensionProp,\n DIMENSION_PROP_NO_ITEMS,\n} from '../modules/predefinedDimensions'\nimport { getDisplayNameByVisType } from '../modules/visTypes'\nimport { getAxisNameByLayoutType } from '../modules/axis'\nimport { getLayoutTypeByVisType } from '../modules/visTypeToLayoutType'\n\nconst getAxisItemLabel = (axisName, isDimensionInLayout) =>\n isDimensionInLayout\n ? i18n.t('Move to {{axisName}}', { axisName })\n : i18n.t('Add to {{axisName}}', { axisName })\n\nconst getRemoveMenuItem = onClick => (\n <MenuItem\n key=\"remove-menu-item\"\n onClick={onClick}\n label={i18n.t('Remove')}\n />\n)\n\nconst getDividerItem = key => <MenuDivider dense key={key} />\n\nconst getUnavailableLabel = visType =>\n i18n.t('Not available for {{visualizationType}}', {\n visualizationType: getDisplayNameByVisType(visType),\n })\n\nconst DimensionMenu = ({\n dimensionId,\n currentAxisId,\n visType,\n numberOfDimensionItems,\n assignedCategoriesItemHandler,\n isAssignedCategoriesInLayout,\n axisItemHandler,\n removeItemHandler,\n classes,\n onClose,\n}) => {\n const menuItems = []\n\n const isDimensionInLayout = !!currentAxisId\n\n // add/move to axis item\n const availableAxisIds = getAvailableAxes(visType)\n\n const applicableAxisIds = availableAxisIds.filter(\n axisId => axisId !== currentAxisId\n )\n\n const assignedCategoriesAvailableDestinations = getAvailableAxes(\n visType\n ).filter(axis => axis !== AXIS_ID_FILTERS)\n\n const assignedCategoriesItemLabel = isAssignedCategoriesInLayout\n ? i18n.t('Remove Assigned Categories')\n : i18n.t('Add Assigned Categories')\n\n // Assigned categories\n if (dimensionId === DIMENSION_ID_DATA && assignedCategoriesItemHandler) {\n if (assignedCategoriesAvailableDestinations.length) {\n if (!isAssignedCategoriesInLayout) {\n menuItems.push(\n <MenuItem\n label={assignedCategoriesItemLabel}\n key={`assigned-categories-item-${dimensionId}`}\n >\n {assignedCategoriesAvailableDestinations.map(\n destination => (\n <MenuItem\n key={destination}\n onClick={() => {\n assignedCategoriesItemHandler(\n destination\n )\n onClose()\n }}\n label={getAxisItemLabel(\n getAxisNameByLayoutType(\n destination,\n getLayoutTypeByVisType(visType)\n )\n )}\n />\n )\n )}\n </MenuItem>\n )\n } else {\n menuItems.push(\n <MenuItem\n key={`assigned-categories-item-${dimensionId}`}\n onClick={() => {\n assignedCategoriesItemHandler()\n onClose()\n }}\n label={assignedCategoriesItemLabel}\n />\n )\n }\n } else {\n menuItems.push(\n <Tooltip\n key={`assigned-categories-item-${dimensionId}`}\n content={getUnavailableLabel(visType)}\n aria-label=\"disabled\"\n classes={classes}\n >\n <MenuItem\n disabled\n dense\n label={assignedCategoriesItemLabel}\n />\n </Tooltip>\n )\n }\n }\n\n // divider\n menuItems.length &&\n menuItems.push(getDividerItem('assigned-categories-divider'))\n\n menuItems.push(\n ...applicableAxisIds.map(axisId => (\n <MenuItem\n key={`${dimensionId}-to-${axisId}`}\n onClick={() => {\n axisItemHandler({\n dimensionId,\n axisId,\n numberOfDimensionItems,\n requireItems: !getPredefinedDimensionProp(\n dimensionId,\n DIMENSION_PROP_NO_ITEMS\n ),\n isDimensionInLayout,\n })\n onClose()\n }}\n label={getAxisItemLabel(\n getAxisNameByLayoutType(\n axisId,\n getLayoutTypeByVisType(visType)\n ),\n isDimensionInLayout\n )}\n />\n ))\n )\n\n // remove item\n if (isDimensionInLayout) {\n // divider\n if (applicableAxisIds.length) {\n menuItems.push(getDividerItem('remove-item-divider'))\n }\n\n menuItems.push(\n getRemoveMenuItem(() => {\n removeItemHandler(dimensionId)\n onClose()\n })\n )\n }\n\n return <FlyoutMenu dense>{menuItems}</FlyoutMenu>\n}\n\nDimensionMenu.propTypes = {\n axisItemHandler: PropTypes.func.isRequired,\n numberOfDimensionItems: PropTypes.number.isRequired,\n removeItemHandler: PropTypes.func.isRequired,\n onClose: PropTypes.func.isRequired,\n assignedCategoriesItemHandler: PropTypes.func,\n classes: PropTypes.object,\n currentAxisId: PropTypes.string,\n dimensionId: PropTypes.string,\n isAssignedCategoriesInLayout: PropTypes.bool,\n visType: PropTypes.string,\n}\n\nexport default DimensionMenu\n","export const parseValue = valueString => {\n const parsedValue = parseFloat(valueString)\n if (isNaN(parsedValue)) {\n return valueString\n }\n return parsedValue\n}\n","export const SORT_ORDER_ASCENDING = 1\nexport const SORT_ORDER_DESCENDING = -1\n\nexport const CELL_TYPE_VALUE = 'value'\nexport const CELL_TYPE_SUBTOTAL = 'subtotal'\nexport const CELL_TYPE_TOTAL = 'total'\n\nexport const AGGREGATE_TYPE_SUM = 'SUM'\nexport const AGGREGATE_TYPE_AVERAGE = 'AVERAGE'\nexport const AGGREGATE_TYPE_NA = 'N/A'\n\nexport const VALUE_TYPE_TEXT = 'TEXT'\nexport const VALUE_TYPE_NUMBER = 'NUMBER'\n\nexport const NUMBER_TYPE_VALUE = 'VALUE'\nexport const NUMBER_TYPE_ROW_PERCENTAGE = 'ROW_PERCENTAGE'\nexport const NUMBER_TYPE_COLUMN_PERCENTAGE = 'COLUMN_PERCENTAGE'\n\nexport const FONT_SIZE_OPTION_SMALL = 'SMALL'\nexport const FONT_SIZE_SMALL = 10\nexport const FONT_SIZE_OPTION_NORMAL = 'NORMAL'\nexport const FONT_SIZE_NORMAL = 11\nexport const FONT_SIZE_OPTION_LARGE = 'LARGE'\nexport const FONT_SIZE_LARGE = 13\n\nexport const DISPLAY_DENSITY_OPTION_COMPACT = 'COMPACT'\nexport const DISPLAY_DENSITY_PADDING_COMPACT = 4\nexport const DISPLAY_DENSITY_OPTION_NORMAL = 'NORMAL'\nexport const DISPLAY_DENSITY_PADDING_NORMAL = 5\nexport const DISPLAY_DENSITY_OPTION_COMFORTABLE = 'COMFORTABLE'\nexport const DISPLAY_DENSITY_PADDING_COMFORTABLE = 7\n\nexport const CLIPPED_CELL_MAX_WIDTH = 360\n\nexport const COLUMN_PARTITION_SIZE_PX = 1000\n\nexport const DIMENSION_TYPE_DATA_ELEMENT_GROUP_SET = 'DATA_ELEMENT_GROUP_SET'\nexport const DIMENSION_TYPE_DATA = 'DATA_X'\nexport const DIMENSION_TYPE_PERIOD = 'PERIOD'\nexport const DIMENSION_TYPE_ORGUNIT = 'ORGANISATION_UNIT'\n","import {\n NUMBER_TYPE_ROW_PERCENTAGE,\n NUMBER_TYPE_COLUMN_PERCENTAGE,\n VALUE_TYPE_NUMBER,\n} from './pivotTableConstants'\n\nconst trimTrailingZeros = stringValue => stringValue.replace(/\\.?0+$/, '')\n\nconst defaultDecimalSeparator = '.'\n\nconst separateDigitGroups = (stringValue, decimalSeparator) => {\n const isNegative = stringValue[0] === '-'\n const [integer, remainder] = stringValue.replace(/^-/, '').split('.')\n\n const groups = []\n for (let i = integer.length; i > 0; i -= 3) {\n groups.unshift(integer.substring(i - 3, i))\n }\n\n if (isNegative) {\n groups[0] = '-' + groups[0]\n }\n\n if (remainder) {\n const trimmedRemainder = trimTrailingZeros(remainder)\n if (trimmedRemainder.length) {\n groups[groups.length - 1] += decimalSeparator + remainder\n }\n }\n\n return groups\n}\n\nconst getSeparator = visualization => {\n switch (visualization.digitGroupSeparator) {\n case 'SPACE':\n return ' '\n case 'COMMA':\n return ','\n // TODO: Requires backend support, and decimalSeparator would need to be separately configurable\n // case 'PERIOD':\n // return '.'\n case 'NONE':\n default:\n return ''\n }\n}\n\nconst toFixedPrecisionString = (value, skipRounding) => {\n if (typeof value !== 'number') {\n // Values returned from the server should keep their string representation\n return value\n }\n\n const precision = skipRounding ? 10 : value > -1 && value < 1 ? 2 : 1\n\n return value.toFixed(precision)\n}\n\nexport const renderValue = (value, valueType, visualization) => {\n if (valueType !== VALUE_TYPE_NUMBER || value === undefined) {\n return value\n }\n\n if (\n visualization.numberType === NUMBER_TYPE_ROW_PERCENTAGE ||\n visualization.numberType === NUMBER_TYPE_COLUMN_PERCENTAGE\n ) {\n return (\n trimTrailingZeros(\n toFixedPrecisionString(value * 100, visualization.skipRounding)\n ) + '%'\n )\n }\n\n const stringValue = toFixedPrecisionString(\n value,\n visualization.skipRounding\n )\n\n const digitGroups = separateDigitGroups(\n stringValue,\n defaultDecimalSeparator\n )\n return digitGroups.join(getSeparator(visualization))\n}\n","let canvas\n\nconst getContext = fontSize => {\n if (!canvas) {\n canvas = document.createElement('canvas')\n }\n\n const ctx = canvas.getContext('2d')\n ctx.font = `${fontSize}px Roboto, Arial, sans-serif`\n\n return ctx\n}\n\nexport const measureText = (text, fontSize = 11) => {\n const ctx = getContext(fontSize)\n\n const textMetrics = ctx.measureText(text)\n return textMetrics.width\n}\n","import times from 'lodash/times'\n\nimport { parseValue } from './parseValue'\nimport { renderValue } from './renderValue'\nimport { measureText } from './measureText'\n\nimport { DIMENSION_ID_ORGUNIT } from '../predefinedDimensions'\n\nimport {\n AGGREGATE_TYPE_NA,\n AGGREGATE_TYPE_AVERAGE,\n AGGREGATE_TYPE_SUM,\n CELL_TYPE_VALUE,\n CELL_TYPE_TOTAL,\n CELL_TYPE_SUBTOTAL,\n SORT_ORDER_ASCENDING,\n SORT_ORDER_DESCENDING,\n DISPLAY_DENSITY_PADDING_COMPACT,\n DISPLAY_DENSITY_PADDING_COMFORTABLE,\n DISPLAY_DENSITY_OPTION_COMFORTABLE,\n DISPLAY_DENSITY_OPTION_COMPACT,\n DISPLAY_DENSITY_OPTION_NORMAL,\n DISPLAY_DENSITY_PADDING_NORMAL,\n FONT_SIZE_OPTION_SMALL,\n FONT_SIZE_SMALL,\n FONT_SIZE_OPTION_LARGE,\n FONT_SIZE_LARGE,\n FONT_SIZE_OPTION_NORMAL,\n FONT_SIZE_NORMAL,\n COLUMN_PARTITION_SIZE_PX,\n CLIPPED_CELL_MAX_WIDTH,\n VALUE_TYPE_NUMBER,\n NUMBER_TYPE_COLUMN_PERCENTAGE,\n NUMBER_TYPE_ROW_PERCENTAGE,\n DIMENSION_TYPE_DATA,\n DIMENSION_TYPE_DATA_ELEMENT_GROUP_SET,\n DIMENSION_TYPE_ORGUNIT,\n DIMENSION_TYPE_PERIOD,\n VALUE_TYPE_TEXT,\n NUMBER_TYPE_VALUE,\n} from './pivotTableConstants'\n\nconst dataFields = [\n 'value',\n 'numerator',\n 'denominator',\n 'factor',\n 'multiplier',\n 'divisor',\n]\nconst defaultOptions = {\n hideEmptyColumns: false,\n hideEmptyRows: false,\n showRowTotals: false,\n showColumnTotals: false,\n showRowSubtotals: false,\n showColumnSubtotals: false,\n}\n\nconst isDxDimension = dimensionItem =>\n [DIMENSION_TYPE_DATA, DIMENSION_TYPE_DATA_ELEMENT_GROUP_SET].includes(\n dimensionItem.dimensionType\n )\n\nconst countFromDisaggregates = list => {\n let count = 1\n list.forEach(x => {\n count *= x.items.length\n })\n return count\n}\n\nconst addSize = list => {\n const reversedList = list.slice().reverse()\n reversedList.forEach((level, idx) => {\n // Start at the \"leaf\" disaggregate\n const lastLevel = reversedList[idx - 1]\n level.size = lastLevel ? lastLevel.count * lastLevel.size : 1\n })\n}\n\nconst listByDimension = list =>\n list.reduce((all, item) => {\n all[item.dimension] = item\n return all\n }, {})\n\nconst sortByHierarchy = items => {\n items.sort((a, b) => {\n if (!a.hierarchy || !b.hierarchy) {\n return 0\n }\n return a.hierarchy.join('/').localeCompare(b.hierarchy.join('/'))\n })\n}\n\nconst buildDimensionLookup = (visualization, metadata, headers) => {\n const rows = visualization.rows.map(row => ({\n dimension: row.dimension,\n meta: metadata.items[row.dimension],\n count: metadata.dimensions[row.dimension].length,\n itemIds: metadata.dimensions[row.dimension],\n items: metadata.dimensions[row.dimension].map(\n item => metadata.items[item]\n ),\n isDxDimension: isDxDimension(metadata.items[row.dimension]),\n position: 'row',\n }))\n const columns = visualization.columns.map(column => ({\n dimension: column.dimension,\n meta: metadata.items[column.dimension],\n count: metadata.dimensions[column.dimension].length,\n itemIds: metadata.dimensions[column.dimension],\n items: metadata.dimensions[column.dimension].map(\n item => metadata.items[item]\n ),\n isDxDimension: isDxDimension(metadata.items[column.dimension]),\n position: 'column',\n }))\n\n addSize(rows)\n addSize(columns)\n\n const allByDimension = {\n ...listByDimension(rows),\n ...listByDimension(columns),\n }\n\n const headerDimensions = headers.map(header => allByDimension[header.name])\n\n const rowHeaders = headerDimensions\n .map((_, idx) => idx)\n .filter(\n idx =>\n headerDimensions[idx] &&\n headerDimensions[idx].position === 'row'\n )\n const columnHeaders = headerDimensions\n .map((_, idx) => idx)\n .filter(\n idx =>\n headerDimensions[idx] &&\n headerDimensions[idx].position === 'column'\n )\n\n const dataHeaders = dataFields.reduce((out, field) => {\n out[field] = headers.findIndex(header => header.name === field)\n return out\n }, {})\n\n const ouDimension = allByDimension[DIMENSION_ID_ORGUNIT]\n\n if (\n visualization.showHierarchy &&\n metadata.ouNameHierarchy &&\n ouDimension\n ) {\n ouDimension.items.forEach(ou => {\n const hierarchy = metadata.ouNameHierarchy[ou.uid]\n if (hierarchy) {\n ou.hierarchy = hierarchy.split('/').filter(x => x.length)\n }\n })\n sortByHierarchy(ouDimension.items)\n ouDimension.itemIds = ouDimension.items.map(item => item.uid)\n }\n\n return {\n rows,\n columns,\n allByDimension,\n headerDimensions,\n rowHeaders,\n columnHeaders,\n dataHeaders,\n }\n}\n\nconst lookup = (\n dataRow,\n dimensionLookup,\n { doColumnSubtotals, doRowSubtotals }\n) => {\n let row = 0\n for (const headerIndex of dimensionLookup.rowHeaders) {\n const idx = dimensionLookup.headerDimensions[\n headerIndex\n ].itemIds.indexOf(dataRow[headerIndex])\n\n if (idx === -1) {\n return undefined\n }\n\n const size = dimensionLookup.headerDimensions[headerIndex].size\n row += idx * size\n }\n\n if (doColumnSubtotals) {\n row += Math.floor(row / dimensionLookup.rows[0].size)\n }\n\n let column = 0\n for (const headerIndex of dimensionLookup.columnHeaders) {\n const idx = dimensionLookup.headerDimensions[\n headerIndex\n ].itemIds.indexOf(dataRow[headerIndex])\n\n if (idx === -1) {\n return undefined\n }\n const size = dimensionLookup.headerDimensions[headerIndex].size\n column += idx * size\n }\n\n if (doRowSubtotals) {\n column += Math.floor(column / dimensionLookup.columns[0].size)\n }\n\n return { column, row }\n}\n\nconst applyTotalAggregationType = (\n {\n totalAggregationType,\n value,\n numerator,\n denominator,\n multiplier,\n divisor,\n },\n overrideTotalAggregationType\n) => {\n switch (overrideTotalAggregationType || totalAggregationType) {\n case AGGREGATE_TYPE_NA:\n return 'N/A'\n case AGGREGATE_TYPE_AVERAGE:\n return (\n ((numerator || value) * multiplier) /\n (denominator * divisor || 1)\n )\n case AGGREGATE_TYPE_SUM:\n default:\n return value\n }\n}\n\nexport class PivotTableEngine {\n visualization\n rawData\n options\n legendSets\n\n dimensionLookup\n\n columnDepth = 0\n rowDepth = 0\n\n height = 0\n width = 0\n data = []\n columnWidths = []\n rowMap = []\n columnMap = []\n\n constructor(visualization, data, legendSets) {\n this.visualization = visualization\n this.legendSets = (legendSets || []).reduce((sets, set) => {\n sets[set.id] = set\n return sets\n }, {})\n this.rawData = data\n this.options = {\n ...defaultOptions,\n showColumnTotals: visualization.colTotals,\n showRowTotals: visualization.rowTotals,\n showColumnSubtotals: visualization.colSubTotals,\n showRowSubtotals: visualization.rowSubTotals,\n hideEmptyColumns: visualization.hideEmptyColumns,\n hideEmptyRows: visualization.hideEmptyRows,\n title: visualization.hideTitle ? undefined : visualization.title,\n subtitle: visualization.hideSubtitle\n ? undefined\n : visualization.subtitle,\n }\n\n this.dimensionLookup = buildDimensionLookup(\n this.visualization,\n this.rawData.metaData,\n this.rawData.headers\n )\n\n const doColumnSubtotals =\n this.options.showColumnSubtotals &&\n this.dimensionLookup.rows.length > 1\n const singularRow =\n this.dimensionLookup.rows.length === 1 &&\n this.dimensionLookup.rows[0].count === 1\n const firstColumnIsSortable = !doColumnSubtotals && !singularRow\n\n this.columnDepth =\n this.dimensionLookup.columns.length ||\n (this.visualization.showDimensionLabels || firstColumnIsSortable\n ? 1\n : 0)\n this.rowDepth =\n this.dimensionLookup.rows.length ||\n (this.visualization.showDimensionLabels ? 1 : 0)\n\n this.buildMatrix()\n }\n\n getRaw({ row, column }) {\n const cellType = this.getRawCellType({ row, column })\n const dxDimension = this.getRawCellDxDimension({ row, column })\n\n const headers = [\n ...this.getRawRowHeader(row),\n ...this.getRawColumnHeader(column),\n ]\n const peId = headers.find(\n header => header?.dimensionItemType === DIMENSION_TYPE_PERIOD\n )?.uid\n const ouId = headers.find(\n header => header?.dimensionItemType === DIMENSION_TYPE_ORGUNIT\n )?.uid\n\n if (!this.data[row] || !this.data[row][column]) {\n return {\n cellType,\n empty: true,\n ouId,\n peId,\n }\n }\n\n const dataRow = this.data[row][column]\n\n let rawValue =\n cellType === CELL_TYPE_VALUE\n ? dataRow[this.dimensionLookup.dataHeaders.value]\n : dataRow.value\n let renderedValue = rawValue\n const valueType = dxDimension?.valueType || VALUE_TYPE_TEXT\n\n if (valueType === VALUE_TYPE_NUMBER) {\n rawValue = parseValue(rawValue)\n switch (this.visualization.numberType) {\n case NUMBER_TYPE_ROW_PERCENTAGE:\n renderedValue = rawValue / this.percentageTotals[row].value\n break\n case NUMBER_TYPE_COLUMN_PERCENTAGE:\n renderedValue =\n rawValue / this.percentageTotals[column].value\n break\n default:\n break\n }\n }\n\n renderedValue = renderValue(\n renderedValue,\n valueType,\n this.visualization\n )\n\n return {\n cellType,\n empty: false,\n valueType,\n rawValue,\n renderedValue,\n dxDimension,\n ouId,\n peId,\n }\n }\n\n get({ row, column }) {\n const mappedRow = this.rowMap[row],\n mappedColumn = this.columnMap[column]\n if (\n (!mappedRow && mappedRow !== 0) ||\n (!mappedColumn && mappedColumn !== 0)\n ) {\n return undefined\n }\n\n return this.getRaw({ row: mappedRow, column: mappedColumn })\n }\n\n getRawCellType({ row, column }) {\n const isRowTotal = this.doRowTotals && column === this.dataWidth - 1\n const isColumnTotal = this.doColumnTotals && row === this.dataHeight - 1\n if (isRowTotal || isColumnTotal) {\n return CELL_TYPE_TOTAL\n }\n\n const isRowSubtotal =\n this.doRowSubtotals &&\n (column + 1) % (this.dimensionLookup.columns[0].size + 1) === 0\n const isColumnSubtotal =\n this.doColumnSubtotals &&\n (row + 1) % (this.dimensionLookup.rows[0].size + 1) === 0\n\n if (isRowSubtotal || isColumnSubtotal) {\n return CELL_TYPE_SUBTOTAL\n }\n\n return CELL_TYPE_VALUE\n }\n getCellType({ row, column }) {\n row = this.rowMap[row]\n column = this.columnMap[column]\n return this.getRawCellType({ row, column })\n }\n\n getDimensionLabel(rowLevel, columnLevel) {\n const lastRowLevel = this.rowDepth - 1\n const lastColumnLevel = this.columnDepth - 1\n\n if (rowLevel !== lastRowLevel && columnLevel !== lastColumnLevel) {\n return null\n }\n if (\n rowLevel === lastRowLevel &&\n this.dimensionLookup.rows[lastRowLevel] &&\n columnLevel === lastColumnLevel &&\n this.dimensionLookup.columns[lastColumnLevel]\n ) {\n return `${this.dimensionLookup.rows[lastRowLevel].meta.name} / ${this.dimensionLookup.columns[lastColumnLevel].meta.name}`\n }\n\n if (lastRowLevel === -1) {\n return this.dimensionLookup.columns[columnLevel].meta.name\n }\n if (lastColumnLevel === -1) {\n return this.dimensionLookup.rows[rowLevel].meta.name\n }\n\n if (\n rowLevel === lastRowLevel &&\n this.dimensionLookup.columns[columnLevel]\n ) {\n return this.dimensionLookup.columns[columnLevel].meta.name\n }\n if (\n columnLevel === lastColumnLevel &&\n this.dimensionLookup.rows[rowLevel]\n ) {\n return this.dimensionLookup.rows[rowLevel].meta.name\n }\n }\n\n getCellDxDimension({ row, column }) {\n return this.getRawCellDxDimension({\n row: this.rowMap[row],\n column: this.columnMap[column],\n })\n }\n getRawCellDxDimension({ row, column }) {\n if (!this.data[row]) {\n return undefined\n }\n const cellValue = this.data[row][column]\n if (!cellValue) {\n return undefined\n }\n if (!Array.isArray(cellValue)) {\n // This is a total cell\n return {\n valueType: cellValue.valueType,\n totalAggregationType: cellValue.totalAggregationType,\n legendSet: undefined,\n }\n }\n\n const rowHeaders = this.getRawRowHeader(row)\n const columnHeaders = this.getRawColumnHeader(column)\n\n const dxRowIndex = this.dimensionLookup.rows.findIndex(\n dim => dim.isDxDimension\n )\n if (rowHeaders.length && dxRowIndex !== -1) {\n return {\n valueType: rowHeaders[dxRowIndex].valueType,\n totalAggregationType:\n rowHeaders[dxRowIndex].totalAggregationType,\n legendSet: rowHeaders[dxRowIndex].legendSet,\n }\n }\n\n const dxColumnIndex = this.dimensionLookup.columns.findIndex(\n dim => dim.isDxDimension\n )\n if (columnHeaders.length && dxColumnIndex !== -1) {\n return {\n valueType: columnHeaders[dxColumnIndex].valueType,\n totalAggregationType:\n columnHeaders[dxColumnIndex].totalAggregationType,\n legendSet: columnHeaders[dxColumnIndex].legendSet,\n }\n }\n\n // Data is in Filter\n // TODO : This assumes the server ignores text types, we should confirm this is the case\n return {\n valueType: VALUE_TYPE_NUMBER,\n totalAggregationType: AGGREGATE_TYPE_SUM,\n }\n }\n\n rowIsEmpty(row) {\n return !this.data[row] || this.data[row].length === 0\n }\n columnIsEmpty(column) {\n return !this.columnWidths[column]\n }\n\n getRawColumnHeader(column) {\n if (this.doRowTotals && column === this.dataWidth - 1) {\n return times(this.columnDepth - 1, () => undefined).concat([\n { name: 'Total' },\n ])\n }\n if (this.doRowSubtotals) {\n if (\n (column + 1) % (this.dimensionLookup.columns[0].size + 1) ===\n 0\n ) {\n return times(this.columnDepth - 1, () => undefined).concat([\n { name: 'Subtotal' },\n ])\n }\n column -= Math.floor(\n column / (this.dimensionLookup.columns[0].size + 1)\n )\n }\n return this.dimensionLookup.columns.map(dimension => {\n const itemIndex =\n Math.floor(column / dimension.size) % dimension.count\n return dimension.items[itemIndex]\n })\n }\n getColumnHeader(column) {\n return this.getRawColumnHeader(this.columnMap[column])\n }\n\n getRawRowHeader(row) {\n if (this.doColumnTotals && row === this.dataHeight - 1) {\n return times(this.rowDepth - 1, () => undefined).concat([\n { name: 'Total' },\n ])\n }\n if (this.doColumnSubtotals) {\n if ((row + 1) % (this.dimensionLookup.rows[0].size + 1) === 0) {\n return times(this.rowDepth - 1, () => undefined).concat([\n { name: 'Subtotal' },\n ])\n }\n row -= Math.floor(row / (this.dimensionLookup.rows[0].size + 1))\n }\n\n return this.dimensionLookup.rows.map(dimension => {\n const itemIndex = Math.floor(row / dimension.size) % dimension.count\n return dimension.items[itemIndex]\n })\n }\n getRowHeader(row) {\n return this.getRawRowHeader(this.rowMap[row])\n }\n\n getDependantTotalCells({ row, column }) {\n const rowSubtotalSize = this.dimensionLookup.columns[0]?.size + 1\n const rowSubtotal = rowSubtotalSize &&\n this.doRowSubtotals && {\n row,\n column:\n Math.ceil((column + 1) / rowSubtotalSize) *\n rowSubtotalSize -\n 1,\n size: rowSubtotalSize - 1,\n }\n const rowSubtotalColumnTotal = this.doRowSubtotals &&\n this.doColumnTotals && {\n row: this.dataHeight - 1,\n column: rowSubtotal.column,\n size: this.rawDataHeight,\n }\n\n const columnSubtotalSize = this.dimensionLookup.rows[0]?.size + 1\n const columnSubtotal = columnSubtotalSize &&\n this.doColumnSubtotals && {\n row:\n Math.ceil((row + 1) / columnSubtotalSize) *\n columnSubtotalSize -\n 1,\n column,\n size: columnSubtotalSize - 1,\n }\n\n const columnSubtotalRowTotal = this.doColumnSubtotals &&\n this.doRowTotals && {\n row: columnSubtotal.row,\n column: this.dataWidth - 1,\n size: this.rawDataWidth,\n }\n\n const combinedSubtotal = rowSubtotalSize &&\n columnSubtotalSize &&\n this.doColumnSubtotals &&\n this.doRowSubtotals && {\n row: columnSubtotal.row,\n column: rowSubtotal.column,\n size: columnSubtotalSize * rowSubtotalSize,\n }\n\n const rowTotal = this.doRowTotals && {\n row,\n column: this.dataWidth - 1,\n size: this.rawDataWidth,\n }\n\n const columnTotal = this.doColumnTotals && {\n row: this.dataHeight - 1,\n column,\n size: this.rawDataHeight,\n }\n\n const combinedTotal = this.doColumnTotals &&\n this.doRowTotals && {\n row: this.dataHeight - 1,\n column: this.dataWidth - 1,\n size: this.rawDataHeight * this.rawDataWidth,\n }\n\n return {\n rowSubtotal,\n rowSubtotalColumnTotal,\n columnSubtotal,\n columnSubtotalRowTotal,\n rowTotal,\n columnTotal,\n combinedSubtotal,\n combinedTotal,\n }\n }\n\n addCellValueToTotals(pos, dataRow) {\n const totals = this.getDependantTotalCells(pos)\n const dxDimension = this.getRawCellDxDimension(pos)\n\n Object.values(totals).forEach(totalItem => {\n if (!totalItem) return\n\n this.data[totalItem.row] = this.data[totalItem.row] || []\n\n this.data[totalItem.row][totalItem.column] = this.data[\n totalItem.row\n ][totalItem.column] || {\n count: 0,\n totalCount: totalItem.size,\n }\n const totalCell = this.data[totalItem.row][totalItem.column]\n\n const currentAggType = dxDimension?.totalAggregationType\n const previousAggType =\n totalCell.totalAggregationType || currentAggType\n if (previousAggType && currentAggType !== previousAggType) {\n totalCell.totalAggregationType = AGGREGATE_TYPE_NA\n } else {\n totalCell.totalAggregationType = currentAggType\n }\n\n const currentValueType = dxDimension?.valueType\n const previousValueType = totalCell.valueType\n if (previousValueType && currentValueType !== previousValueType) {\n totalCell.valueType = AGGREGATE_TYPE_NA\n } else {\n totalCell.valueType = currentValueType\n }\n\n if (dxDimension?.valueType === VALUE_TYPE_NUMBER) {\n dataFields.forEach(field => {\n const headerIndex = this.dimensionLookup.dataHeaders[field]\n const value = parseValue(dataRow[headerIndex])\n if (value && !isNaN(value)) {\n totalCell[field] = (totalCell[field] || 0) + value\n }\n })\n }\n totalCell.count += 1\n })\n\n if (this.visualization.numberType === NUMBER_TYPE_ROW_PERCENTAGE) {\n if (!this.percentageTotals[pos.row]) {\n this.percentageTotals[pos.row] = {\n count: 0,\n totalCount: this.rawDataWidth,\n }\n }\n const percentageTotal = this.percentageTotals[pos.row]\n dataFields.forEach(field => {\n const headerIndex = this.dimensionLookup.dataHeaders[field]\n const value = parseValue(dataRow[headerIndex])\n if (value && !isNaN(value)) {\n percentageTotal[field] =\n (percentageTotal[field] || 0) + value\n }\n })\n\n if (totals.columnSubtotal) {\n if (!this.percentageTotals[totals.columnSubtotal.row]) {\n this.percentageTotals[totals.columnSubtotal.row] = {\n count: 0,\n totalCount: this.rawDataWidth,\n }\n }\n const percentageTotal = this.percentageTotals[\n totals.columnSubtotal.row\n ]\n dataFields.forEach(field => {\n const headerIndex = this.dimensionLookup.dataHeaders[field]\n const value = parseValue(dataRow[headerIndex])\n if (value && !isNaN(value)) {\n percentageTotal[field] =\n (percentageTotal[field] || 0) + value\n }\n })\n }\n\n if (totals.columnTotal) {\n if (!this.percentageTotals[totals.columnTotal.row]) {\n this.percentageTotals[totals.columnTotal.row] = {\n count: 0,\n totalCount: this.rawDataWidth,\n }\n }\n const percentageTotal = this.percentageTotals[\n totals.columnTotal.row\n ]\n dataFields.forEach(field => {\n const headerIndex = this.dimensionLookup.dataHeaders[field]\n const value = parseValue(dataRow[headerIndex])\n if (value && !isNaN(value)) {\n percentageTotal[field] =\n (percentageTotal[field] || 0) + value\n }\n })\n }\n }\n\n if (this.visualization.numberType === NUMBER_TYPE_COLUMN_PERCENTAGE) {\n if (!this.percentageTotals[pos.column]) {\n this.percentageTotals[pos.column] = {\n count: 0,\n totalCount: this.rawDataHeight,\n }\n }\n const percentageTotal = this.percentageTotals[pos.column]\n dataFields.forEach(field => {\n const headerIndex = this.dimensionLookup.dataHeaders[field]\n const value = parseValue(dataRow[headerIndex])\n if (value && !isNaN(value)) {\n percentageTotal[field] =\n (percentageTotal[field] || 0) + value\n }\n })\n\n if (totals.rowSubtotal) {\n if (!this.percentageTotals[totals.rowSubtotal.column]) {\n this.percentageTotals[totals.rowSubtotal.column] = {\n count: 0,\n totalCount: this.rawDataHeight,\n }\n }\n const percentageTotal = this.percentageTotals[\n totals.rowSubtotal.column\n ]\n dataFields.forEach(field => {\n const headerIndex = this.dimensionLookup.dataHeaders[field]\n const value = parseValue(dataRow[headerIndex])\n if (value && !isNaN(value)) {\n percentageTotal[field] =\n (percentageTotal[field] || 0) + value\n }\n })\n }\n\n if (totals.rowTotal) {\n if (!this.percentageTotals[totals.rowTotal.column]) {\n this.percentageTotals[totals.rowTotal.column] = {\n count: 0,\n totalCount: this.rawDataHeight,\n }\n }\n const percentageTotal = this.percentageTotals[\n totals.rowTotal.column\n ]\n dataFields.forEach(field => {\n const headerIndex = this.dimensionLookup.dataHeaders[field]\n const value = parseValue(dataRow[headerIndex])\n if (value && !isNaN(value)) {\n percentageTotal[field] =\n (percentageTotal[field] || 0) + value\n }\n })\n }\n }\n }\n finalizeTotal({ row, column }) {\n if (!this.data[row]) {\n return\n }\n const totalCell = this.data[row][column]\n if (totalCell && totalCell.count) {\n totalCell.value = applyTotalAggregationType(\n totalCell,\n this.visualization.numberType !== NUMBER_TYPE_VALUE &&\n AGGREGATE_TYPE_SUM\n )\n this.addCellForAdaptiveClipping(\n { row, column },\n renderValue(\n totalCell.value,\n totalCell.valueType,\n this.visualization\n )\n )\n }\n }\n\n finalizeTotals() {\n const columnSubtotalSize = this.dimensionLookup.rows[0]?.size + 1\n const rowSubtotalSize = this.dimensionLookup.columns[0]?.size + 1\n\n if (this.doRowSubtotals && rowSubtotalSize) {\n times(\n this.dimensionLookup.columns[0].count,\n n => (n + 1) * rowSubtotalSize - 1\n ).forEach(column => {\n times(\n this.dataHeight - (this.doColumnTotals ? 1 : 0),\n n => n\n ).forEach(row => {\n // skip combined subtotal cells\n if (\n !this.doColumnSubtotals ||\n (row + 1) % columnSubtotalSize !== 0\n ) {\n this.finalizeTotal({ row, column })\n }\n })\n })\n }\n if (this.doColumnSubtotals && columnSubtotalSize) {\n times(\n this.dimensionLookup.rows[0].count,\n n => (n + 1) * columnSubtotalSize - 1\n ).forEach(row => {\n times(\n this.dataWidth - (this.doRowTotals ? 1 : 0),\n n => n\n ).forEach(column => {\n // skip combined subtotal cells\n if (\n !this.doRowSubtotals ||\n (column + 1) % rowSubtotalSize !== 0\n ) {\n this.finalizeTotal({ row, column })\n }\n })\n })\n }\n\n // Combined subtotal cells\n if (\n this.doRowSubtotals &&\n this.doColumnSubtotals &&\n rowSubtotalSize &&\n columnSubtotalSize\n ) {\n times(\n this.dimensionLookup.rows[0].count,\n n => (n + 1) * columnSubtotalSize - 1\n ).forEach(row => {\n times(\n this.dimensionLookup.columns[0].count,\n n => (n + 1) * rowSubtotalSize - 1\n ).forEach(column => {\n this.finalizeTotal({ row, column })\n })\n })\n }\n if (this.doRowTotals) {\n const column = this.dataWidth - 1\n times(this.dataHeight - 1, n => n).forEach(row => {\n this.finalizeTotal({ row, column })\n })\n }\n\n if (this.doColumnTotals) {\n const row = this.dataHeight - 1\n times(this.dataWidth - 1, n => n).forEach(column => {\n this.finalizeTotal({ row, column })\n })\n }\n\n if (this.doRowTotals && this.doColumnTotals) {\n this.finalizeTotal({\n row: this.dataHeight - 1,\n column: this.dataWidth - 1,\n })\n }\n\n if (this.percentageTotals) {\n this.percentageTotals.forEach(item => {\n item.value = applyTotalAggregationType(item)\n })\n }\n }\n\n addCellForAdaptiveClipping({ column }, renderedValue) {\n this.columnWidths[column] = Math.max(\n this.columnWidths[column] || 0,\n measureText(renderedValue, this.fontSize)\n )\n }\n\n finalizeAdaptiveClipping() {\n this.dataPixelWidth = 0\n this.rowHeaderPixelWidth = 0\n\n let nextPartitionPx = 0\n this.columnPartitions = []\n\n const getColumnWidth = contentWidth =>\n Math.min(CLIPPED_CELL_MAX_WIDTH, Math.ceil(contentWidth)) +\n this.cellPadding * 2 +\n /*border*/ 2\n\n this.columnMap.forEach(column => {\n const header = this.getRawColumnHeader(column)[this.columnDepth - 1]\n const label =\n this.visualization.showHierarchy && header?.hierarchy\n ? header.hierarchy.join(' / ')\n : header?.name\n\n if (label) {\n const headerSize = measureText(label, this.fontSize)\n this.columnWidths[column] = Math.max(\n this.columnWidths[column] || 0,\n headerSize +\n (this.isSortable(column) ? this.scrollIconBuffer : 0)\n )\n }\n\n const colWidth = getColumnWidth(this.columnWidths[column])\n this.columnWidths[column] = {\n pre: this.dataPixelWidth,\n width: colWidth,\n }\n\n if (this.dataPixelWidth >= nextPartitionPx) {\n this.columnPartitions.push(column)\n nextPartitionPx += COLUMN_PARTITION_SIZE_PX\n }\n this.dataPixelWidth += colWidth\n })\n\n if (\n !this.dimensionLookup.rows.length &&\n this.visualization.showDimensionLabels\n ) {\n let maxWidth = 0\n this.dimensionLookup.columns.forEach((_, columnLevel) => {\n const label = this.getDimensionLabel(0, columnLevel)\n if (label) {\n const headerSize = measureText(label, this.fontSize)\n maxWidth = Math.max(maxWidth, headerSize)\n }\n })\n\n const columnWidth = getColumnWidth(maxWidth)\n this.rowHeaderPixelWidth = columnWidth\n this.rowHeaderWidths = [columnWidth]\n }\n\n this.rowHeaderWidths = this.dimensionLookup.rows.map((_, rowLevel) => {\n let maxWidth = 0\n this.rowMap.forEach(rawColumn => {\n const header = this.getRawRowHeader(rawColumn)[rowLevel]\n const label =\n this.visualization.showHierarchy && header?.hierarchy\n ? header.hierarchy.join(' / ')\n : header?.name\n if (label) {\n const headerSize = measureText(label, this.fontSize)\n maxWidth = Math.max(maxWidth, headerSize)\n }\n }, 0)\n\n if (this.visualization.showDimensionLabels) {\n this.dimensionLookup.columns.forEach((_, columnLevel) => {\n const label = this.getDimensionLabel(rowLevel, columnLevel)\n if (label) {\n const headerSize = measureText(label, this.fontSize)\n maxWidth = Math.max(maxWidth, headerSize)\n }\n })\n }\n const columnWidth = getColumnWidth(maxWidth)\n this.rowHeaderPixelWidth += columnWidth\n return columnWidth\n })\n }\n\n resetRowMap() {\n this.rowMap = this.options.hideEmptyRows\n ? times(this.dataHeight, n => n).filter(idx => !!this.data[idx])\n : times(this.dataHeight, n => n)\n }\n\n resetColumnMap() {\n this.columnMap = this.options.hideEmptyColumns\n ? times(this.dataWidth, n => n).filter(\n idx => !!this.columnWidths[idx]\n )\n : times(this.dataWidth, n => n)\n }\n\n get cellPadding() {\n switch (this.visualization.displayDensity) {\n case DISPLAY_DENSITY_OPTION_COMPACT:\n return DISPLAY_DENSITY_PADDING_COMPACT\n case DISPLAY_DENSITY_OPTION_COMFORTABLE:\n return DISPLAY_DENSITY_PADDING_COMFORTABLE\n case DISPLAY_DENSITY_OPTION_NORMAL:\n default:\n return DISPLAY_DENSITY_PADDING_NORMAL\n }\n }\n\n get fontSize() {\n switch (this.visualization.fontSize) {\n case FONT_SIZE_OPTION_SMALL:\n return FONT_SIZE_SMALL\n case FONT_SIZE_OPTION_LARGE:\n return FONT_SIZE_LARGE\n case FONT_SIZE_OPTION_NORMAL:\n default:\n return FONT_SIZE_NORMAL\n }\n }\n\n get scrollIconBuffer() {\n switch (this.visualization.fontSize) {\n case FONT_SIZE_OPTION_SMALL:\n return 11\n case FONT_SIZE_OPTION_LARGE:\n return 15\n case FONT_SIZE_OPTION_NORMAL:\n default:\n return 13\n }\n }\n\n buildMatrix() {\n this.data = []\n this.columnWidths = []\n\n this.dataHeight = this.rawDataHeight = countFromDisaggregates(\n this.dimensionLookup.rows\n )\n\n this.dataWidth = this.rawDataWidth = countFromDisaggregates(\n this.dimensionLookup.columns\n )\n\n // TODO: Check last row/col dimension for size===1, skip redundant sub-totals\n this.doRowSubtotals =\n this.options.showRowSubtotals && this.columnDepth > 1\n this.doColumnSubtotals =\n this.options.showColumnSubtotals && this.rowDepth > 1\n\n this.doRowTotals = this.options.showRowTotals && this.dataWidth > 1\n this.doColumnTotals =\n this.options.showColumnTotals && this.dataHeight > 1\n\n if (this.doRowSubtotals) {\n this.dataWidth += this.dimensionLookup.columns[0].count\n }\n if (this.doColumnSubtotals) {\n this.dataHeight += this.dimensionLookup.rows[0].count\n }\n if (this.doRowTotals) {\n this.dataWidth += 1\n }\n if (this.doColumnTotals) {\n this.dataHeight += 1\n }\n\n // TODO: Use total cell calculation, don't duplicate here\n if (\n this.visualization.numberType === NUMBER_TYPE_ROW_PERCENTAGE ||\n this.visualization.numberType === NUMBER_TYPE_COLUMN_PERCENTAGE\n ) {\n this.percentageTotals = []\n }\n\n this.rawData.rows.forEach(dataRow => {\n const pos = lookup(dataRow, this.dimensionLookup, this)\n\n if (pos) {\n this.data[pos.row] = this.data[pos.row] || []\n this.data[pos.row][pos.column] = dataRow\n\n this.addCellValueToTotals(pos, dataRow)\n }\n })\n\n this.finalizeTotals()\n\n this.rawData.rows.forEach(dataRow => {\n const pos = lookup(dataRow, this.dimensionLookup, this)\n if (pos) {\n this.addCellForAdaptiveClipping(\n pos,\n this.getRaw(pos).renderedValue\n )\n }\n })\n\n this.resetRowMap()\n this.resetColumnMap()\n\n this.height = this.rowMap.length\n this.width = this.columnMap.length\n\n this.finalizeAdaptiveClipping()\n }\n\n getColumnType(column) {\n column = this.columnMap[column]\n if (!column && column !== 0) {\n return undefined\n }\n if (\n this.doRowSubtotals &&\n (column + 1) % (this.dimensionLookup.columns[0].size + 1) === 0\n ) {\n return CELL_TYPE_SUBTOTAL\n }\n if (this.doRowTotals && column === this.dataWidth - 1) {\n return CELL_TYPE_TOTAL\n }\n return CELL_TYPE_VALUE\n }\n\n isSortable(column) {\n return (\n this.dataHeight > 1 &&\n !this.doColumnSubtotals &&\n this.getColumnType(column) !== undefined\n )\n }\n\n sort(column, order) {\n if (order !== SORT_ORDER_ASCENDING && order !== SORT_ORDER_DESCENDING) {\n console.warn(`Invalid sort order ${order}`)\n return\n }\n\n if (!this.isSortable(column)) {\n console.warn(`Invalid sort column ${column}`)\n return\n }\n\n const mappedColumn = this.columnMap[column]\n this.rowMap.sort((rowA, rowB) => {\n if (this.doColumnTotals && rowA === this.dataHeight - 1) {\n return 1\n }\n if (this.doColumnTotals && rowB === this.dataHeight - 1) {\n return -1\n }\n const valueA = this.getRaw({ row: rowA, column: mappedColumn })\n const valueB = this.getRaw({ row: rowB, column: mappedColumn })\n\n if ((!valueA || valueA.empty) && (!valueB || valueB.empty)) {\n return 0\n }\n if (!valueA || valueA.empty) {\n return -1 * order\n }\n if (!valueB || valueB.empty) {\n return 1 * order\n }\n\n if (\n valueA.valueType === VALUE_TYPE_NUMBER &&\n valueB.valueType === VALUE_TYPE_NUMBER\n ) {\n return (valueA.rawValue - valueB.rawValue) * order\n }\n return (\n valueA.renderedValue.localeCompare(valueB.renderedValue) * order\n )\n })\n }\n\n clearSort() {\n this.resetRowMap()\n }\n}\n","import { useState, useEffect } from 'react'\nimport ResizeObserver from 'resize-observer-polyfill'\n\nconst initialState = { width: 0, height: 0 }\n\nexport const useParentSize = (\n elementRef,\n renderCounter,\n initialSize = initialState\n) => {\n const [size, setSize] = useState({\n width: initialSize.width || 0,\n height: initialSize.height || 0,\n })\n\n useEffect(() => {\n const el = elementRef.current && elementRef.current.parentElement\n if (!el) return\n\n const onResize = () => {\n setSize({\n width: el.clientWidth,\n height: el.clientHeight,\n })\n }\n\n onResize(el)\n\n if (renderCounter) {\n setSize(initialState)\n }\n\n const observer = new ResizeObserver(onResize)\n observer.observe(el)\n\n return () => observer.disconnect()\n }, [elementRef, renderCounter])\n\n return size\n}\n","import { useState, useCallback, useEffect } from 'react'\n\nimport debounce from 'lodash/debounce'\n\nexport const useScrollPosition = (containerRef, debounceWait = 10) => {\n const [scrollPosition, setScrollPosition] = useState({ x: 0, y: 0 })\n\n const onScroll = useCallback(\n debounce(() => {\n const scroll = {\n x: containerRef.current.scrollLeft,\n y: containerRef.current.scrollTop,\n }\n setScrollPosition(scroll)\n }, debounceWait)\n )\n\n useEffect(() => {\n const currentRef = containerRef.current\n if (!currentRef) {\n return\n }\n\n currentRef.addEventListener('scroll', onScroll)\n return () => {\n currentRef.removeEventListener('scroll', onScroll)\n }\n }, [containerRef, onScroll])\n\n return scrollPosition\n}\n","import times from 'lodash/times'\n\nexport const clipAxis = ({ position, size, step, totalCount, headerCount }) => {\n const floor = headerCount * step\n const offset = position < floor ? floor - position : 0\n\n const count = Math.min(totalCount, Math.ceil((size - offset) / step) + 1)\n position = Math.max(0, position - floor) // TODO: Support sticky headers\n const start = Math.min(totalCount - count, Math.floor(position / step))\n const pre = Math.max(start * step, 0)\n const post = (totalCount - (start + count)) * step\n const indices = times(count, n => start + n)\n\n return {\n indices,\n pre,\n post,\n }\n}\n","export const clipPartitionedAxis = ({\n partitionSize,\n partitions,\n axisMap,\n widthMap,\n viewportWidth,\n viewportPosition,\n totalWidth,\n}) => {\n const partition = Math.floor(viewportPosition / partitionSize)\n\n if (partitions[partition] === undefined) {\n return {\n indices: [0],\n pre: 0,\n post: 0,\n }\n }\n\n let start = partitions[partition] - partitions[0]\n while (\n start < axisMap.length &&\n widthMap[axisMap[start]].pre < viewportPosition\n ) {\n ++start\n }\n start = start === 0 ? start : start - 1\n const pre = widthMap[axisMap[start]].pre\n const indices = []\n let end = start\n while (\n end < axisMap.length &&\n widthMap[axisMap[end]].pre < viewportPosition + viewportWidth\n ) {\n indices.push(end)\n ++end\n }\n end = end === 0 ? end : end - 1\n const post =\n totalWidth - (widthMap[axisMap[end]].pre + widthMap[axisMap[end]].width)\n\n return {\n indices,\n pre,\n post,\n }\n}\n","import { useMemo } from 'react'\nimport { useScrollPosition } from './useScrollPosition'\nimport { clipAxis } from './clipAxis'\nimport { COLUMN_PARTITION_SIZE_PX } from './pivotTableConstants'\nimport { clipPartitionedAxis } from './clipPartitionedAxis'\n\nexport const useTableClipping = ({\n containerRef,\n width,\n height,\n engine,\n visualization,\n}) => {\n const scrollPosition = useScrollPosition(containerRef)\n\n const rows = useMemo(\n () =>\n clipAxis({\n position: scrollPosition.y,\n size: height,\n step: engine.fontSize + engine.cellPadding * 2 + 2,\n totalCount: engine.height,\n headerCount:\n visualization.columns.length +\n (engine.options.title ? 1 : 0) +\n (engine.options.subtitle ? 1 : 0),\n }),\n [\n scrollPosition.y,\n height,\n engine.fontSize,\n engine.cellPadding,\n engine.height,\n engine.options.title,\n engine.options.subtitle,\n visualization.columns.length,\n ]\n )\n const columns = useMemo(() => {\n const viewportPosition = Math.max(\n 0,\n scrollPosition.x - engine.rowHeaderPixelWidth\n )\n const viewportWidth =\n width - Math.max(engine.rowHeaderPixelWidth - scrollPosition.x, 0)\n return clipPartitionedAxis({\n partitionSize: COLUMN_PARTITION_SIZE_PX,\n partitions: engine.columnPartitions,\n axisMap: engine.columnMap,\n widthMap: engine.columnWidths,\n viewportWidth,\n viewportPosition,\n totalWidth: engine.dataPixelWidth,\n })\n }, [\n scrollPosition.x,\n engine.rowHeaderPixelWidth,\n engine.columnPartitions,\n engine.columnMap,\n engine.columnWidths,\n engine.dataPixelWidth,\n width,\n ])\n\n return {\n rows,\n columns,\n scrollPosition,\n }\n}\n","import React, { createContext, useContext } from 'react'\nimport PropTypes from 'prop-types'\n\nexport const PivotTableEngineContext = createContext(null)\n\nexport const Provider = ({ engine, children }) => {\n return (\n <PivotTableEngineContext.Provider value={engine}>\n {children}\n </PivotTableEngineContext.Provider>\n )\n}\nProvider.propTypes = {\n engine: PropTypes.object.isRequired,\n children: PropTypes.node,\n}\n\nexport const usePivotTableEngine = () => {\n return useContext(PivotTableEngineContext)\n}\n","import css from 'styled-jsx/css'\nimport { colors } from '@dhis2/ui'\nimport {\n DISPLAY_DENSITY_PADDING_COMPACT,\n DISPLAY_DENSITY_PADDING_NORMAL,\n DISPLAY_DENSITY_PADDING_COMFORTABLE,\n FONT_SIZE_SMALL,\n FONT_SIZE_NORMAL,\n FONT_SIZE_LARGE,\n} from '../../../modules/pivotTable/pivotTableConstants'\n\nexport const table = css`\n div.pivot-table-container {\n font-family: 'Roboto', Arial, sans-serif;\n overflow: auto;\n color: ${colors.grey900};\n }\n table {\n border-spacing: 0;\n border-collapse: collapse;\n white-space: nowrap;\n overflow: hidden;\n box-sizing: border-box;\n text-align: center;\n }\n`\n\nexport const cell = css`\n td,\n th {\n box-sizing: border-box;\n font-weight: normal;\n overflow: hidden;\n text-overflow: ellipsis;\n border: 1px solid #b2b2b2;\n cursor: default;\n }\n\n .fontsize-SMALL {\n font-size: ${FONT_SIZE_SMALL}px;\n line-height: ${FONT_SIZE_SMALL}px;\n }\n .fontsize-NORMAL {\n font-size: ${FONT_SIZE_NORMAL}px;\n line-height: ${FONT_SIZE_NORMAL}px;\n }\n .fontsize-LARGE {\n font-size: ${FONT_SIZE_LARGE}px;\n line-height: ${FONT_SIZE_LARGE}px;\n }\n\n .displaydensity-COMPACT {\n padding: ${DISPLAY_DENSITY_PADDING_COMPACT}px;\n }\n .displaydensity-NORMAL {\n padding: ${DISPLAY_DENSITY_PADDING_NORMAL}px;\n }\n .displaydensity-COMFORTABLE {\n padding: ${DISPLAY_DENSITY_PADDING_COMFORTABLE}px;\n }\n\n .column-header {\n background-color: #dae6f8;\n }\n div.column-header-inner {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n }\n .title {\n font-weight: bold;\n background-color: #cddaed;\n }\n .row-header {\n background-color: #dae6f8;\n }\n .row-header-hierarchy {\n text-align: left;\n }\n .empty-header {\n background-color: #cddaed;\n }\n .total-header {\n background-color: #bac6d8;\n }\n .value {\n background-color: #ffffff;\n }\n .TEXT {\n text-align: left;\n }\n .NUMBER {\n text-align: right;\n }\n .clickable {\n cursor: pointer;\n }\n\n .value:hover {\n background-color: #f3f3f3;\n }\n\n .subtotal {\n background-color: #f4f4f4;\n }\n .total {\n background-color: #d8d8d8;\n }\n\n .column-header-label {\n overflow: hidden;\n text-overflow: ellipsis;\n }\n`\n\nexport const sortIcon = css`\n .fontsize-SMALL {\n height: ${FONT_SIZE_SMALL}px;\n margin-bottom: 1px;\n margin-left: 5px;\n }\n\n .fontsize-NORMAL {\n height: ${FONT_SIZE_NORMAL}px;\n max-height: 11px;\n margin-bottom: 2px;\n margin-left: 6px;\n }\n\n .fontsize-LARGE {\n height: ${FONT_SIZE_LARGE}px;\n margin-bottom: 2px;\n margin-left: 7px;\n }\n`\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { table as tableStyle } from './styles/PivotTable.style'\n\nexport const PivotTableContainer = React.forwardRef(\n ({ width, height, children }, ref) => (\n <div\n className=\"pivot-table-container\"\n style={{ width, height }}\n ref={ref}\n >\n <style jsx>{tableStyle}</style>\n {width === 0 || height === 0 ? null : <table>{children}</table>}\n </div>\n )\n)\n\nPivotTableContainer.displayName = 'PivotTableContainer'\n\nPivotTableContainer.propTypes = {\n children: PropTypes.node.isRequired,\n height: PropTypes.number.isRequired,\n width: PropTypes.number.isRequired,\n}\n","import React from 'react'\n\nexport const PivotTableClippedAxis = ({\n axisClippingResult,\n EmptyComponent,\n ItemComponent,\n}) => [\n axisClippingResult.pre ? (\n <EmptyComponent key=\"pre\" size={axisClippingResult.pre} />\n ) : null,\n axisClippingResult.indices.map(index => (\n <ItemComponent key={index} index={index} />\n )),\n axisClippingResult.post ? (\n <EmptyComponent key=\"post\" size={axisClippingResult.post} />\n ) : null,\n]\n","const headerStacksAreEqual = (a, b, limit) => {\n for (let i = 0; i <= limit; ++i) {\n if (a[i] !== b[i]) {\n return false\n }\n }\n return true\n}\n\nexport const getHeaderForDisplay = ({\n start,\n count,\n index,\n dimensionLevel,\n getHeader,\n showHierarchy,\n}) => {\n const header = getHeader(index)\n const showHeader =\n index === start ||\n !headerStacksAreEqual(header, getHeader(index - 1), dimensionLevel)\n if (!showHeader) {\n return null\n }\n\n let span = 1\n for (let i = index + 1; i < start + count; ++i) {\n if (!headerStacksAreEqual(getHeader(i), header, dimensionLevel)) {\n break\n }\n ++span\n }\n\n const currentHeader = header[dimensionLevel]\n\n const includesHierarchy = showHierarchy && currentHeader?.hierarchy\n\n const label = includesHierarchy\n ? currentHeader.hierarchy.join(' / ')\n : currentHeader?.name\n\n return {\n span,\n label,\n includesHierarchy,\n }\n}\n","import PropTypes from 'prop-types'\nimport { getHeaderForDisplay } from '../../modules/pivotTable/getHeaderForDisplay'\n\nexport const PivotTableHeaderCell = ({\n axisClippingResult,\n index,\n level,\n getHeader,\n render,\n showHierarchy,\n}) => {\n const header = getHeaderForDisplay({\n start: axisClippingResult.indices[0],\n count: axisClippingResult.indices.length,\n index,\n dimensionLevel: level,\n getHeader,\n showHierarchy,\n })\n\n return !header ? null : render(header)\n}\n\nPivotTableHeaderCell.propTypes = {\n axisClippingResult: PropTypes.object.isRequired,\n getHeader: PropTypes.func.isRequired,\n index: PropTypes.number.isRequired,\n level: PropTypes.number.isRequired,\n render: PropTypes.func.isRequired,\n showHierarchy: PropTypes.bool.isRequired,\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport classnames from 'classnames'\nimport { cell as cellStyle } from './styles/PivotTable.style'\nimport { usePivotTableEngine } from './PivotTableEngineContext'\n\nexport const PivotTableCell = React.forwardRef(\n ({ classes, isColumnHeader, children, style = {}, ...props }, ref) => {\n const engine = usePivotTableEngine()\n style.height = style.minHeight = style.maxHeight =\n style.height || engine.fontSize + engine.cellPadding * 2 + 2\n\n const className = classnames(\n classes,\n `fontsize-${engine.visualization.fontSize}`,\n `displaydensity-${engine.visualization.displayDensity}`\n )\n\n return isColumnHeader ? (\n <th className={className} style={style} {...props}>\n <style jsx>{cellStyle}</style>\n {children}\n </th>\n ) : (\n <td ref={ref} className={className} style={style} {...props}>\n <style jsx>{cellStyle}</style>\n {children}\n </td>\n )\n }\n)\n\nPivotTableCell.displayName = 'PivotTableCell'\n\nPivotTableCell.defaultProps = {\n isColumnHeader: false,\n}\nPivotTableCell.propTypes = {\n children: PropTypes.node,\n classes: PropTypes.oneOfType([\n PropTypes.array,\n PropTypes.object,\n PropTypes.string,\n ]),\n isColumnHeader: PropTypes.bool,\n style: PropTypes.object,\n}\n","import React from 'react'\n\nexport const SortIconAscending = () => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 6 10\" height=\"100%\">\n <g fill=\"none\" fillRule=\"evenodd\" transform=\"translate(-3 -1)\">\n <rect width=\"12\" height=\"12\" />\n <polygon fill=\"#A0ADBA\" points=\"6 11 3 7 9 7\" />\n <polygon fill=\"#212934\" points=\"3 5 9 5 6 1\" />\n </g>\n </svg>\n)\n","import React from 'react'\n\nexport const SortIconDescending = () => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 6 10\" height=\"100%\">\n <g fill=\"none\" fillRule=\"evenodd\" transform=\"translate(-3 -1)\">\n <rect width=\"12\" height=\"12\" />\n <polygon fill=\"#212934\" points=\"6 11 3 7 9 7\" />\n <polygon fill=\"#A0ADBA\" points=\"3 5 9 5 6 1\" />\n </g>\n </svg>\n)\n","import React from 'react'\n\nexport const SortIconIdle = () => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 6 10\" height=\"100%\">\n <g fill=\"none\" fillRule=\"evenodd\" transform=\"translate(-3 -1)\">\n <rect width=\"12\" height=\"12\" />\n <polygon fill=\"#A0ADBA\" points=\"6 11 3 7 9 7\" />\n <polygon fill=\"#A0ADBA\" points=\"3 5 9 5 6 1\" />\n </g>\n </svg>\n)\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { usePivotTableEngine } from './PivotTableEngineContext'\nimport { SORT_ORDER_ASCENDING } from '../../modules/pivotTable/pivotTableConstants'\nimport { sortIcon as sortIconStyle } from './styles/PivotTable.style'\nimport { SortIconAscending } from './icons/SortIconAscending'\nimport { SortIconDescending } from './icons/SortIconDescending'\nimport { SortIconIdle } from './icons/SortIconIdle'\n\nexport const PivotTableSortIcon = ({ index, sortBy }) => {\n const engine = usePivotTableEngine()\n\n const SortIcon =\n sortBy?.column === index\n ? sortBy.order === SORT_ORDER_ASCENDING\n ? SortIconAscending\n : SortIconDescending\n : SortIconIdle\n\n return (\n <span className={`fontsize-${engine.visualization.fontSize}`}>\n <style jsx>{sortIconStyle}</style>\n <SortIcon />\n </span>\n )\n}\n\nPivotTableSortIcon.propTypes = {\n index: PropTypes.number.isRequired,\n sortBy: PropTypes.object,\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { PivotTableHeaderCell } from './PivotTableHeaderCell'\nimport { cell as cellStyle } from './styles/PivotTable.style'\n\nimport { PivotTableCell } from './PivotTableCell'\nimport { usePivotTableEngine } from './PivotTableEngineContext'\nimport { PivotTableSortIcon } from './PivotTableSortIcon'\n\nexport const PivotTableColumnHeaderCell = ({\n clippingResult,\n index,\n level,\n onSortByColumn,\n sortBy,\n}) => {\n const engine = usePivotTableEngine()\n\n const width = engine.columnWidths[index]?.width\n\n return (\n <PivotTableHeaderCell\n axisClippingResult={clippingResult.columns}\n index={index}\n level={level}\n getHeader={idx => engine.getColumnHeader(idx)}\n showHierarchy={engine.visualization.showHierarchy}\n render={header => {\n const isSortable =\n level === engine.columnDepth - 1 &&\n header.span === 1 &&\n engine.isSortable(index)\n\n return (\n <PivotTableCell\n isColumnHeader\n classes={\n header.label &&\n header.label !== 'Total' &&\n header.label !== 'Subtotal' // TODO: Actually look up the column type!\n ? 'column-header'\n : 'empty-header'\n }\n colSpan={header.span}\n title={header.label}\n style={{\n cursor: isSortable ? 'pointer' : 'default',\n width,\n maxWidth: width,\n minWidth: width,\n }}\n onClick={\n isSortable ? () => onSortByColumn(index) : undefined\n }\n >\n <style jsx>{cellStyle}</style>\n <div className=\"column-header-inner\">\n <span className=\"column-header-label\">\n {header.label}\n </span>\n {isSortable ? (\n <PivotTableSortIcon\n index={index}\n sortBy={sortBy}\n />\n ) : null}\n </div>\n </PivotTableCell>\n )\n }}\n />\n )\n}\n\nPivotTableColumnHeaderCell.propTypes = {\n clippingResult: PropTypes.shape({ columns: PropTypes.object.isRequired })\n .isRequired,\n index: PropTypes.number.isRequired,\n level: PropTypes.number.isRequired,\n onSortByColumn: PropTypes.func.isRequired,\n sortBy: PropTypes.shape({\n column: PropTypes.number.isRequired,\n order: PropTypes.number.isRequired,\n }),\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { usePivotTableEngine } from './PivotTableEngineContext'\nimport { PivotTableCell } from './PivotTableCell'\n\nexport const PivotTableDimensionLabelCell = ({ rowLevel, columnLevel }) => {\n const engine = usePivotTableEngine()\n\n const colCount = engine.rowDepth\n const rowCount = engine.columnDepth\n\n let colSpan = 1,\n rowSpan = 1,\n label\n\n if (!engine.visualization.showDimensionLabels) {\n if (rowLevel > 0 || columnLevel > 0) {\n colSpan = rowSpan = 0\n } else {\n colSpan = colCount\n rowSpan = rowCount\n }\n } else {\n label = engine.getDimensionLabel(rowLevel, columnLevel)\n if (!label) {\n if (rowLevel > 0 || columnLevel > 0) {\n colSpan = rowSpan = 0\n } else {\n colSpan = colCount - 1\n rowSpan = rowCount - 1\n }\n }\n }\n\n if (!colSpan || !rowSpan) {\n return null\n }\n\n const width = engine.rowHeaderWidths[rowLevel]\n return (\n <PivotTableCell\n classes={['empty-header', 'column-header']}\n colSpan={colSpan}\n rowSpan={rowSpan}\n title={label}\n style={{ width, maxWidth: width, minWidth: width }}\n >\n {label}\n </PivotTableCell>\n )\n}\n\nPivotTableDimensionLabelCell.propTypes = {\n columnLevel: PropTypes.number.isRequired,\n rowLevel: PropTypes.number.isRequired,\n}\n","import React from 'react'\nimport { cell as cellStyle } from './styles/PivotTable.style'\nimport { PivotTableCell } from './PivotTableCell'\n\nexport const PivotTableEmptyCell = React.forwardRef(({ ...props }, ref) => {\n return (\n <PivotTableCell ref={ref} {...props}>\n <style jsx>{cellStyle}</style>\n </PivotTableCell>\n )\n})\n\nPivotTableEmptyCell.displayName = 'PivotTableEmptyCell'\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { PivotTableClippedAxis } from './PivotTableClippedAxis'\nimport { PivotTableColumnHeaderCell } from './PivotTableColumnHeaderCell'\nimport { PivotTableDimensionLabelCell } from './PivotTableDimensionLabelCell'\nimport { PivotTableEmptyCell } from './PivotTableEmptyCell'\nimport { usePivotTableEngine } from './PivotTableEngineContext'\nimport times from 'lodash/times'\n\nexport const PivotTableColumnHeaders = ({\n clippingResult,\n onSortByColumn,\n sortBy,\n}) => {\n const engine = usePivotTableEngine()\n\n const columns = times(engine.columnDepth, x => x)\n const rows = times(engine.rowDepth, x => x)\n\n return columns.map(columnLevel => (\n <tr key={columnLevel}>\n {rows.map(rowLevel => (\n <PivotTableDimensionLabelCell\n key={rowLevel}\n rowLevel={rowLevel}\n columnLevel={columnLevel}\n />\n ))}\n <PivotTableClippedAxis\n axisClippingResult={clippingResult.columns}\n EmptyComponent={({ size }) => (\n <PivotTableEmptyCell\n classes=\"column-header\"\n style={{ minWidth: size }}\n />\n )}\n ItemComponent={({ index }) => (\n <PivotTableColumnHeaderCell\n clippingResult={clippingResult}\n index={index}\n level={columnLevel}\n onSortByColumn={onSortByColumn}\n sortBy={sortBy}\n />\n )}\n />\n </tr>\n ))\n}\n\nPivotTableColumnHeaders.propTypes = {\n clippingResult: PropTypes.shape({\n columns: PropTypes.object.isRequired,\n }).isRequired,\n onSortByColumn: PropTypes.func.isRequired,\n sortBy: PropTypes.shape({\n column: PropTypes.number.isRequired,\n order: PropTypes.number.isRequired,\n }),\n}\n","import React, { useState, useEffect } from 'react'\nimport PropTypes from 'prop-types'\nimport { cell as cellStyle } from './styles/PivotTable.style'\nimport { usePivotTableEngine } from './PivotTableEngineContext'\nimport { PivotTableCell } from './PivotTableCell'\n\nexport const PivotTableTitleRow = ({\n title,\n scrollPosition,\n containerWidth,\n totalWidth,\n}) => {\n const engine = usePivotTableEngine()\n const columnCount = engine.width + engine.rowDepth\n\n const [position, setPosition] = useState(scrollPosition.x)\n useEffect(() => {\n setPosition(\n Math.max(0, Math.min(scrollPosition.x, totalWidth - containerWidth))\n )\n }, [containerWidth, scrollPosition.x, totalWidth])\n return (\n <tr>\n <style jsx>{cellStyle}</style>\n <PivotTableCell\n classes={['column-header', 'title']}\n colSpan={columnCount}\n >\n <div\n style={{\n marginLeft: position,\n maxWidth: containerWidth,\n textAlign: 'center',\n }}\n >\n {title}\n </div>\n </PivotTableCell>\n </tr>\n )\n}\n\nPivotTableTitleRow.propTypes = {\n containerWidth: PropTypes.number.isRequired,\n scrollPosition: PropTypes.shape({ x: PropTypes.number.isRequired })\n .isRequired,\n title: PropTypes.string.isRequired,\n totalWidth: PropTypes.number.isRequired,\n}\n","import isObject from 'lodash/isObject'\nimport isString from 'lodash/isString'\n\n// Dimension\n\nexport const DIMENSION = {\n isValid: dimension => isObject(dimension),\n}\n\n// Props\n\nexport const DIMENSION_PROP_ID = {\n name: 'dimension',\n defaultValue: '',\n required: true,\n isValid: prop => isString(prop),\n}\n\nexport const DIMENSION_PROP_ITEMS = {\n name: 'items',\n defaultValue: [],\n required: false,\n isValid: prop => Array.isArray(prop),\n}\n\nexport const DIMENSION_PROPS = [DIMENSION_PROP_ID, DIMENSION_PROP_ITEMS]\n","import { DIMENSION_PROP_ID } from './dimension'\n\nexport const dimensionIs = (dimension, dimensionId) =>\n dimension[DIMENSION_PROP_ID.name] === dimensionId\n","import { DIMENSION, DIMENSION_PROP_ITEMS } from './dimension'\n\nexport const dimensionIsEmpty = dimension =>\n !(\n DIMENSION.isValid(dimension) &&\n DIMENSION_PROP_ITEMS.isValid(dimension[DIMENSION_PROP_ITEMS.name]) &&\n dimension[DIMENSION_PROP_ITEMS.name].length\n )\n","import { DIMENSION, DIMENSION_PROPS } from './dimension'\nimport { dimensionIsEmpty } from './dimensionIsEmpty'\n\nexport const dimensionIsValid = (dimension, { requireItems } = {}) => {\n if (!DIMENSION.isValid(dimension)) {\n return false\n }\n\n const requiredProps = DIMENSION_PROPS.filter(prop => prop.required)\n\n if (!requiredProps.every(prop => prop.isValid(dimension[prop.name]))) {\n return false\n }\n\n if (requireItems === true && dimensionIsEmpty(dimension)) {\n return false\n }\n\n return true\n}\n","import { DIMENSION_PROP_ITEMS } from './dimension'\nimport { dimensionIsValid } from './dimensionIsValid'\n\nexport const dimensionGetItems = dimension =>\n dimensionIsValid(dimension, { requireItems: true })\n ? dimension[DIMENSION_PROP_ITEMS.name]\n : DIMENSION_PROP_ITEMS.defaultValue\n","import i18n from '@dhis2/d2-i18n'\nimport { ouIdHelper } from './ouIdHelper'\nimport { dimensionIs } from './layout/dimensionIs'\nimport { dimensionGetItems } from './layout/dimensionGetItems'\nimport { DIMENSION_ID_ORGUNIT } from './predefinedDimensions'\n\nexport const getOuLevelAndGroupText = (filter, metaData) => {\n if (!dimensionIs(DIMENSION_ID_ORGUNIT)) {\n return ''\n }\n\n const items = dimensionGetItems(filter)\n const hasOuLevel = items.some(item => ouIdHelper.hasLevelPrefix(item.id))\n const hasOuGroup = items.some(item => ouIdHelper.hasGroupPrefix(item.id))\n\n const filterFragments = []\n\n if (hasOuGroup) {\n filterFragments.push(getLevelAndGroupText(items, metaData, false))\n }\n\n if (hasOuLevel) {\n filterFragments.push(getLevelAndGroupText(items, metaData, true))\n }\n\n return filterFragments.join(' - ')\n}\n\nconst getLevelAndGroupText = (items, metaData, isLevel) => {\n const getNameFromMetadata = id =>\n metaData.items[id] ? metaData.items[id].name : id\n\n const dynamicOuItems = items.filter(item =>\n isLevel\n ? ouIdHelper.hasLevelPrefix(item.id)\n : ouIdHelper.hasGroupPrefix(item.id)\n )\n const lastItem = dynamicOuItems.length > 1 ? dynamicOuItems.pop() : null\n const dynamicOuNames = dynamicOuItems\n .map(item => getNameFromMetadata(ouIdHelper.removePrefix(item.id)))\n .join(', ')\n\n let allDynamicOuNames\n\n if (lastItem) {\n const lastOuName = getNameFromMetadata(\n ouIdHelper.removePrefix(lastItem.id)\n )\n allDynamicOuNames = i18n.t('{{dynamicOuNames}} and {{lastOuName}}', {\n dynamicOuNames,\n lastOuName,\n })\n } else {\n allDynamicOuNames = dynamicOuNames\n }\n\n const staticOuNames = items\n .filter(\n item =>\n !ouIdHelper.hasGroupPrefix(item.id) &&\n !ouIdHelper.hasLevelPrefix(item.id)\n )\n .map(item => getNameFromMetadata(item.id))\n .join(', ')\n\n let ouLevelAndGroupText = ''\n if (!staticOuNames) {\n if (isLevel) {\n ouLevelAndGroupText = i18n.t('{{allDynamicOuNames}} levels', {\n allDynamicOuNames,\n })\n } else {\n ouLevelAndGroupText = i18n.t('{{allDynamicOuNames}} groups', {\n allDynamicOuNames,\n })\n }\n } else {\n if (isLevel) {\n ouLevelAndGroupText = i18n.t(\n '{{allDynamicOuNames}} levels in {{staticOuNames}}',\n {\n allDynamicOuNames,\n staticOuNames,\n }\n )\n } else {\n ouLevelAndGroupText = i18n.t(\n '{{allDynamicOuNames}} groups in {{staticOuNames}}',\n {\n allDynamicOuNames,\n staticOuNames,\n }\n )\n }\n }\n\n return ouLevelAndGroupText\n}\n","import { ouIdHelper } from '../../modules/ouIdHelper'\nimport { dimensionIs } from '../../modules/layout/dimensionIs'\nimport {\n DIMENSION_ID_ORGUNIT,\n DIMENSION_ID_PERIOD,\n} from '../../modules/predefinedDimensions'\nimport { dimensionGetItems } from '../../modules/layout/dimensionGetItems'\nimport { getOuLevelAndGroupText } from '../../modules/getOuLevelAndGroupText'\n\nexport default function(filters, metaData) {\n if (!Array.isArray(filters) || !filters.length) {\n return ''\n }\n\n const titleFragments = []\n let i\n let l\n\n filters.forEach(filter => {\n const items = dimensionGetItems(filter)\n\n if (\n dimensionIs(filter, DIMENSION_ID_ORGUNIT) &&\n items.some(\n ({ id }) =>\n ouIdHelper.hasGroupPrefix(id) ||\n ouIdHelper.hasLevelPrefix(id)\n )\n ) {\n titleFragments.push(getOuLevelAndGroupText(filter, metaData))\n } else {\n let filterItems = []\n\n if (dimensionIs(filter, DIMENSION_ID_PERIOD)) {\n filterItems = items.map(({ id }) => id)\n } else {\n filterItems = metaData.dimensions[filter.dimension]\n }\n\n if (Array.isArray(filterItems)) {\n l = filterItems.length\n let id\n const sectionParts = []\n\n for (i = 0; i < l; i++) {\n id = filterItems[i]\n\n // if the value is present in items take the name to show from there\n if (metaData.items[id]) {\n sectionParts.push(metaData.items[id].name)\n }\n // otherwise use the values directly\n // this is a temporary fix to avoid app crashing when using filters with data items in EV\n else {\n sectionParts.push(\n metaData.items[filter.dimension].name +\n ': ' +\n filterItems.join(', ')\n )\n\n break\n }\n }\n\n titleFragments.push(sectionParts.join(', '))\n }\n }\n })\n\n return titleFragments.join(' - ')\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { usePivotTableEngine } from './PivotTableEngineContext'\nimport { PivotTableTitleRow } from './PivotTableTitleRow'\nimport getFilterText from '../../visualizations/util/getFilterText'\n\nexport const PivotTableTitleRows = ({ clippingResult, width }) => {\n const engine = usePivotTableEngine()\n return (\n <>\n {engine.options.title ? (\n <PivotTableTitleRow\n title={engine.options.title}\n scrollPosition={clippingResult.scrollPosition}\n containerWidth={width}\n totalWidth={\n engine.dataPixelWidth + engine.rowHeaderPixelWidth\n }\n />\n ) : null}\n {engine.options.subtitle ? (\n <PivotTableTitleRow\n title={engine.options.subtitle}\n scrollPosition={clippingResult.scrollPosition}\n containerWidth={width}\n totalWidth={\n engine.dataPixelWidth + engine.rowHeaderPixelWidth\n }\n />\n ) : null}\n {engine.visualization.filters?.length ? (\n <PivotTableTitleRow\n title={getFilterText(\n engine.visualization.filters,\n engine.rawData.metaData\n )}\n scrollPosition={clippingResult.scrollPosition}\n containerWidth={width}\n totalWidth={\n engine.dataPixelWidth + engine.rowHeaderPixelWidth\n }\n />\n ) : null}\n </>\n )\n}\n\nPivotTableTitleRows.propTypes = {\n clippingResult: PropTypes.object.isRequired,\n width: PropTypes.number.isRequired,\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { PivotTableColumnHeaders } from './PivotTableColumnHeaders'\nimport { PivotTableTitleRows } from './PivotTableTitleRows'\n\nexport const PivotTableHead = ({\n clippingResult,\n width,\n sortBy,\n onSortByColumn,\n}) => (\n <thead>\n <PivotTableTitleRows clippingResult={clippingResult} width={width} />\n <PivotTableColumnHeaders\n clippingResult={clippingResult}\n sortBy={sortBy}\n onSortByColumn={onSortByColumn}\n />\n </thead>\n)\n\nPivotTableHead.propTypes = {\n clippingResult: PropTypes.object.isRequired,\n width: PropTypes.number.isRequired,\n onSortByColumn: PropTypes.func.isRequired,\n sortBy: PropTypes.object,\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { usePivotTableEngine } from './PivotTableEngineContext'\nimport { PivotTableCell } from './PivotTableCell'\n\nexport const PivotTableEmptyRow = ({ height, columns }) => {\n const engine = usePivotTableEngine()\n\n return (\n <tr>\n <PivotTableCell\n colSpan={engine.rowDepth}\n style={{ height }}\n classes=\"row-header\"\n />\n {columns.map(i => (\n <PivotTableCell key={i} />\n ))}\n </tr>\n )\n}\n\nPivotTableEmptyRow.propTypes = {\n columns: PropTypes.array.isRequired,\n height: PropTypes.number.isRequired,\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { PivotTableHeaderCell } from './PivotTableHeaderCell'\nimport { PivotTableCell } from './PivotTableCell'\nimport { usePivotTableEngine } from './PivotTableEngineContext'\n\nexport const PivotTableRowHeaderCell = ({\n clippingResult,\n rowIndex,\n rowLevel,\n}) => {\n const engine = usePivotTableEngine()\n const width = engine.rowHeaderWidths[rowLevel]\n\n return (\n <PivotTableHeaderCell\n axisClippingResult={clippingResult.rows}\n index={rowIndex}\n level={rowLevel}\n getHeader={idx => engine.getRowHeader(idx)}\n showHierarchy={engine.visualization.showHierarchy}\n render={header => (\n <PivotTableCell\n classes={[\n header.label &&\n header.label !== 'Total' &&\n header.label !== 'Subtotal'\n ? 'row-header'\n : 'empty-header',\n header.includesHierarchy && 'row-header-hierarchy',\n ]}\n rowSpan={header.span}\n title={header.label}\n style={{ width, maxWidth: width, minWidth: width }}\n >\n {header.label}\n </PivotTableCell>\n )}\n />\n )\n}\n\nPivotTableRowHeaderCell.propTypes = {\n clippingResult: PropTypes.shape({ rows: PropTypes.object.isRequired })\n .isRequired,\n rowIndex: PropTypes.number.isRequired,\n rowLevel: PropTypes.number.isRequired,\n}\n","const calculateColorBrightness = function(rgb) {\n return Math.round(\n (parseInt(rgb[0]) * 299 +\n parseInt(rgb[1]) * 587 +\n parseInt(rgb[2]) * 114) /\n 1000\n )\n}\n\nconst isHex = color => {\n return typeof color === 'string' && color.charAt(0) === '#'\n}\n\nconst hexToRgb = hex => {\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex)\n\n return result\n ? [\n parseInt(result[1], 16),\n parseInt(result[2], 16),\n parseInt(result[3], 16),\n ]\n : null\n}\n\nexport const isColorBright = color => {\n if (isHex(color)) {\n color = hexToRgb(color)\n }\n\n return calculateColorBrightness(color) > 125\n}\n","export const LEGEND_DISPLAY_STRATEGY_BY_DATA_ITEM = 'BY_DATA_ITEM'\nexport const LEGEND_DISPLAY_STRATEGY_FIXED = 'FIXED'\n\nexport const LEGEND_DISPLAY_STYLE_FILL = 'FILL'\nexport const LEGEND_DISPLAY_STYLE_TEXT = 'TEXT'\n\nexport const getColorByValueFromLegendSet = (legendSet, value) => {\n const legend = legendSet.legends.find(\n legend => value >= legend.startValue && value < legend.endValue // TODO: Confirm inclusive/exclusive bounds\n )\n return legend && legend.color\n}\n","import { isColorBright } from './isColorBright'\nimport { colors } from '@dhis2/ui'\nimport {\n getColorByValueFromLegendSet,\n LEGEND_DISPLAY_STRATEGY_BY_DATA_ITEM,\n LEGEND_DISPLAY_STRATEGY_FIXED,\n LEGEND_DISPLAY_STYLE_TEXT,\n LEGEND_DISPLAY_STYLE_FILL,\n} from '../legends'\n\nconst getLegendSet = (engine, dxDimension) => {\n let legendSetId\n switch (engine.visualization.legendDisplayStrategy) {\n case LEGEND_DISPLAY_STRATEGY_BY_DATA_ITEM:\n if (dxDimension && dxDimension.legendSet) {\n legendSetId = dxDimension.legendSet\n }\n break\n case LEGEND_DISPLAY_STRATEGY_FIXED:\n default:\n legendSetId = engine.visualization.legendSet\n ? engine.visualization.legendSet.id\n : undefined\n break\n }\n\n return engine.legendSets[legendSetId]\n}\n\nconst buildStyleObject = (legendColor, engine) => {\n const style = {}\n switch (engine.visualization.legendDisplayStyle) {\n case LEGEND_DISPLAY_STYLE_TEXT:\n style.color = legendColor\n break\n case LEGEND_DISPLAY_STYLE_FILL:\n default:\n style.backgroundColor = legendColor\n if (isColorBright(legendColor)) {\n style.color = colors.grey900\n } else {\n style.color = colors.white\n }\n break\n }\n return style\n}\n\nexport const applyLegendSet = (value, dxDimension, engine) => {\n if (isNaN(value) || !engine.legendSets) {\n return {}\n }\n\n const legendSet = getLegendSet(engine, dxDimension)\n if (!legendSet) {\n return {}\n }\n\n const legendColor = getColorByValueFromLegendSet(legendSet, value)\n if (!legendColor) {\n return {}\n }\n\n return buildStyleObject(legendColor, engine)\n}\n","import React, { useRef } from 'react'\nimport PropTypes from 'prop-types'\n\nimport { applyLegendSet } from '../../modules/pivotTable/applyLegendSet'\nimport { PivotTableCell } from './PivotTableCell'\nimport { usePivotTableEngine } from './PivotTableEngineContext'\nimport {\n VALUE_TYPE_NUMBER,\n CELL_TYPE_VALUE,\n} from '../../modules/pivotTable/pivotTableConstants'\nimport { PivotTableEmptyCell } from './PivotTableEmptyCell'\n\nexport const PivotTableValueCell = ({\n row,\n column,\n onToggleContextualMenu,\n}) => {\n const engine = usePivotTableEngine()\n const cellRef = useRef(undefined)\n\n const cellContent = engine.get({\n row,\n column,\n })\n\n const isClickable =\n onToggleContextualMenu &&\n cellContent.cellType === CELL_TYPE_VALUE &&\n cellContent.ouId\n const classes = [\n cellContent.cellType,\n cellContent.valueType,\n isClickable && 'clickable',\n ]\n const onClick = () => {\n onToggleContextualMenu(cellRef, cellContent)\n }\n\n if (!cellContent || cellContent.empty) {\n return (\n <PivotTableEmptyCell\n onClick={isClickable ? onClick : undefined}\n ref={cellRef}\n classes={[cellContent.cellType, isClickable && 'clickable']}\n />\n )\n }\n\n // TODO: Add support for 'INTEGER' type (requires server changes)\n const legendStyle =\n cellContent.cellType === CELL_TYPE_VALUE &&\n cellContent.valueType === VALUE_TYPE_NUMBER\n ? applyLegendSet(\n cellContent.rawValue,\n cellContent.dxDimension,\n engine\n )\n : undefined\n\n const width = engine.columnWidths[engine.columnMap[column]].width\n const style = {\n ...legendStyle,\n width,\n minWidth: width,\n maxWidth: width,\n }\n\n return (\n <PivotTableCell\n key={column}\n classes={classes}\n title={cellContent.renderedValue}\n style={style}\n onClick={isClickable ? onClick : undefined}\n ref={cellRef}\n >\n {cellContent.renderedValue ?? null}\n </PivotTableCell>\n )\n}\n\nPivotTableValueCell.propTypes = {\n column: PropTypes.number.isRequired,\n row: PropTypes.number.isRequired,\n onToggleContextualMenu: PropTypes.func,\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { PivotTableClippedAxis } from './PivotTableClippedAxis'\nimport { PivotTableRowHeaderCell } from './PivotTableRowHeaderCell'\nimport { PivotTableValueCell } from './PivotTableValueCell'\nimport { PivotTableEmptyCell } from './PivotTableEmptyCell'\nimport { usePivotTableEngine } from './PivotTableEngineContext'\nimport times from 'lodash/times'\n\nexport const PivotTableRow = ({\n clippingResult,\n rowIndex,\n onToggleContextualMenu,\n}) => {\n const engine = usePivotTableEngine()\n return (\n <tr>\n {times(engine.rowDepth, x => x).map(rowLevel => (\n <PivotTableRowHeaderCell\n key={rowLevel}\n clippingResult={clippingResult}\n rowIndex={rowIndex}\n rowLevel={rowLevel}\n />\n ))}\n <PivotTableClippedAxis\n axisClippingResult={clippingResult.columns}\n EmptyComponent={() => <PivotTableEmptyCell classes=\"value\" />}\n ItemComponent={({ index: columnIndex }) => (\n <PivotTableValueCell\n row={rowIndex}\n column={columnIndex}\n onToggleContextualMenu={onToggleContextualMenu}\n />\n )}\n />\n </tr>\n )\n}\n\nPivotTableRow.propTypes = {\n clippingResult: PropTypes.shape({\n columns: PropTypes.object.isRequired,\n rows: PropTypes.object.isRequired,\n }).isRequired,\n rowIndex: PropTypes.number.isRequired,\n onToggleContextualMenu: PropTypes.func,\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { PivotTableClippedAxis } from './PivotTableClippedAxis'\nimport { PivotTableEmptyRow } from './PivotTableEmptyRow'\nimport { PivotTableRow } from './PivotTableRow'\n\nexport const PivotTableBody = ({ clippingResult, onToggleContextualMenu }) => (\n <tbody>\n <PivotTableClippedAxis\n axisClippingResult={clippingResult.rows}\n EmptyComponent={({ size }) => (\n <PivotTableEmptyRow\n height={size}\n columns={clippingResult.columns.indices}\n />\n )}\n ItemComponent={({ index }) => (\n <PivotTableRow\n key={index}\n clippingResult={clippingResult}\n rowIndex={index}\n onToggleContextualMenu={onToggleContextualMenu}\n />\n )}\n />\n </tbody>\n)\n\nPivotTableBody.propTypes = {\n clippingResult: PropTypes.object.isRequired,\n onToggleContextualMenu: PropTypes.func,\n}\n","import { useState } from 'react'\nimport {\n SORT_ORDER_ASCENDING,\n SORT_ORDER_DESCENDING,\n} from './pivotTableConstants'\n\nexport const useSortableColumns = engine => {\n const [sortBy, setSortBy] = useState(null)\n\n const onSortByColumn = column => {\n let order = SORT_ORDER_ASCENDING\n if (sortBy && sortBy.column === column) {\n if (sortBy.order === SORT_ORDER_ASCENDING) {\n order = SORT_ORDER_DESCENDING\n } else if (sortBy.order === SORT_ORDER_DESCENDING) {\n engine.clearSort()\n setSortBy(null)\n return\n }\n }\n engine.sort(column, order)\n setSortBy({ column, order }) // Force a re-render\n }\n\n return {\n sortBy,\n onSortByColumn,\n }\n}\n","import React, { useRef, useMemo } from 'react'\nimport PropTypes from 'prop-types'\n\nimport { PivotTableEngine } from '../../modules/pivotTable/PivotTableEngine'\nimport { useParentSize } from '../../modules/pivotTable/useParentSize'\nimport { useTableClipping } from '../../modules/pivotTable/useTableClipping'\nimport { Provider } from './PivotTableEngineContext'\nimport { PivotTableContainer } from './PivotTableContainer'\nimport { PivotTableHead } from './PivotTableHead'\nimport { PivotTableBody } from './PivotTableBody'\nimport { useSortableColumns } from '../../modules/pivotTable/useSortableColumns'\n\nconst PivotTable = ({\n visualization,\n data,\n legendSets,\n renderCounter,\n onToggleContextualMenu,\n}) => {\n const containerRef = useRef(undefined)\n const { width, height } = useParentSize(containerRef, renderCounter)\n\n const engine = useMemo(\n () => new PivotTableEngine(visualization, data, legendSets),\n [visualization, data, legendSets]\n )\n\n const { sortBy, onSortByColumn } = useSortableColumns(engine)\n\n const clippingResult = useTableClipping({\n containerRef,\n width,\n height,\n engine,\n visualization,\n })\n\n return (\n <Provider engine={engine}>\n <PivotTableContainer\n ref={containerRef}\n width={width}\n height={height}\n >\n <PivotTableHead\n clippingResult={clippingResult}\n width={width}\n sortBy={sortBy}\n onSortByColumn={onSortByColumn}\n />\n <PivotTableBody\n clippingResult={clippingResult}\n onToggleContextualMenu={onToggleContextualMenu}\n />\n </PivotTableContainer>\n </Provider>\n )\n}\n\nPivotTable.propTypes = {\n data: PropTypes.object.isRequired,\n visualization: PropTypes.object.isRequired,\n legendSets: PropTypes.arrayOf(PropTypes.object),\n renderCounter: PropTypes.number,\n onToggleContextualMenu: PropTypes.func,\n}\n\nexport default PivotTable\n","import { getRelativePeriodIds } from '../../components/PeriodDimension/utils/relativePeriods'\nimport { ouIdHelper } from '../ouIdHelper'\nimport {\n DIMENSION_ID_ASSIGNED_CATEGORIES,\n DIMENSION_ID_ORGUNIT,\n DIMENSION_ID_PERIOD,\n} from '../predefinedDimensions'\n\nexport const hasRelativeItems = (dimension, itemIds = []) =>\n dimension === DIMENSION_ID_ASSIGNED_CATEGORIES ||\n (dimension === DIMENSION_ID_ORGUNIT &&\n Array.isArray(itemIds) &&\n itemIds.some(\n id =>\n ouIdHelper.hasLevelPrefix(id) ||\n ouIdHelper.hasGroupPrefix(id) ||\n [\n 'USER_ORGUNIT',\n 'USER_ORGUNIT_CHILDREN',\n 'USER_ORGUNIT_GRAND_CHILDREN',\n ].includes(id)\n )) ||\n (dimension === DIMENSION_ID_PERIOD &&\n Array.isArray(itemIds) &&\n itemIds.some(id => getRelativePeriodIds().includes(id)))\n","import isObject from 'lodash/isObject'\n\nexport const LAYOUT = {\n isValid: layout => isObject(layout),\n}\n","import { DIMENSION_PROP_ID } from './dimension'\n\nexport const dimensionGetId = dimension => dimension[DIMENSION_PROP_ID.name]\n","import { AXIS, DEFAULT_AXIS_IDS } from './axis'\nimport { dimensionGetId } from './dimensionGetId'\n\nexport const layoutFilterDimensions = (layout, dimensionIds) => {\n const idArray = Array.isArray(dimensionIds) ? dimensionIds : [dimensionIds]\n const filteredLayout = Object.assign({}, layout)\n\n DEFAULT_AXIS_IDS.forEach(axisId => {\n if (AXIS.isValid(filteredLayout[axisId])) {\n filteredLayout[axisId] = filteredLayout[axisId].filter(\n dimension => !idArray.includes(dimensionGetId(dimension))\n )\n }\n })\n\n return filteredLayout\n}\n","import { AXIS_ID_COLUMNS, AXIS_ID_ROWS, AXIS_ID_FILTERS } from './axis'\n\nexport const layoutGetAllAxes = layout => [\n layout[AXIS_ID_COLUMNS],\n layout[AXIS_ID_ROWS],\n layout[AXIS_ID_FILTERS],\n]\n","import { layoutGetAllAxes } from './layoutGetAllAxes'\n\nexport const layoutGetAllDimensions = layout =>\n layoutGetAllAxes(layout).reduce((allDimensions, axis) => {\n allDimensions.push(...axis)\n return allDimensions\n }, [])\n","import { dimensionGetItems } from './dimensionGetItems'\n\nexport const axisGetAllItems = axis =>\n axis.reduce((allItems, dimension) => {\n allItems.push(...dimensionGetItems(dimension))\n return allItems\n }, [])\n","import { layoutGetAllAxes } from './layoutGetAllAxes'\nimport { axisGetAllItems } from './axisGetAllItems'\n\nexport const layoutGetAllItems = layout =>\n layoutGetAllAxes(layout).reduce((allItems, axis) => {\n allItems.push(...axisGetAllItems(axis))\n return allItems\n }, [])\n","import isObject from 'lodash/isObject'\nimport isString from 'lodash/isString'\n\n// Item\n\nexport const ITEM = {\n isValid: item => isObject(item),\n}\n\n// Props\n\nexport const ITEM_PROP_ID = {\n name: 'id',\n defaultValue: '',\n required: true,\n isValid: prop => isString(prop),\n}\n\nexport const ITEM_PROPS = [ITEM_PROP_ID]\n","import { ITEM_PROP_ID } from './item'\n\nexport const itemGetId = item =>\n ITEM_PROP_ID.isValid(item[ITEM_PROP_ID.name])\n ? item[ITEM_PROP_ID.name]\n : ITEM_PROP_ID.defaultValue\n","import { layoutGetAllItems } from './layoutGetAllItems'\nimport { itemGetId } from './itemGetId'\n\nexport const layoutGetAllItemIds = layout =>\n layoutGetAllItems(layout).map(item => itemGetId(item))\n","import { AXIS } from './axis'\nimport { dimensionGetId } from './dimensionGetId'\n\nexport const axisGetDimensionIds = axis =>\n AXIS.isValid(axis)\n ? axis.map(dimension => dimensionGetId(dimension))\n : AXIS.defaultValue\n","import { AXIS, DEFAULT_AXIS_IDS } from './axis'\nimport { axisGetDimensionIds } from './axisGetDimensionIds'\n\nexport const layoutGetAxisIdDimensionIdsObject = layout =>\n DEFAULT_AXIS_IDS.reduce((obj, axisId) => {\n if (AXIS.isValid(layout[axisId])) {\n obj[axisId] = axisGetDimensionIds(layout[axisId])\n }\n\n return obj\n }, {})\n","import { layoutGetAllDimensions } from './layoutGetAllDimensions'\nimport { dimensionIs } from './dimensionIs'\n\nexport const layoutGetDimension = (layout, dimensionId) =>\n layoutGetAllDimensions(layout).find(dimension =>\n dimensionIs(dimension, dimensionId)\n )\n","import { layoutGetDimension } from './layoutGetDimension'\nimport { dimensionGetItems } from './dimensionGetItems'\n\nexport const layoutGetDimensionItems = (layout, dimensionId) =>\n dimensionGetItems(layoutGetDimension(layout, dimensionId))\n","import { dimensionIs } from './dimensionIs'\nimport { AXIS } from './axis'\n\nexport const axisGetDimension = (axis, dimensionId) =>\n AXIS.isValid(axis) &&\n axis.find(dimension => dimensionIs(dimension, dimensionId))\n","import { axisGetDimension } from './axisGetDimension'\n\nexport const axisHasDimension = (axis, dimensionId) =>\n Boolean(axisGetDimension(axis, dimensionId))\n","import { DEFAULT_AXIS_IDS } from './axis'\nimport { axisHasDimension } from './axisHasDimension'\nimport { dimensionIs } from './dimensionIs'\n\nexport const layoutReplaceDimension = (layout, dimensionId, items) => {\n const axisId = DEFAULT_AXIS_IDS.find(a =>\n axisHasDimension(layout[a], dimensionId)\n )\n\n if (!axisId) {\n return Object.assign({}, layout)\n }\n\n const newAxisDimensions = layout[axisId].map(dimension => {\n if (dimensionIs(dimension, dimensionId)) {\n return Object.assign({}, dimension, { items })\n }\n return dimension\n })\n\n return Object.assign({}, layout, { [axisId]: newAxisDimensions })\n}\n","import { dimensionGetItems } from './dimensionGetItems'\nimport { itemGetId } from './itemGetId'\n\nexport const dimensionGetItemIds = dimension =>\n dimensionGetItems(dimension).map(item => itemGetId(item))\n","import { layoutGetAllDimensions } from './layoutGetAllDimensions'\nimport { dimensionGetItemIds } from './dimensionGetItemIds'\nimport { dimensionGetId } from './dimensionGetId'\n\nexport const layoutGetDimensionIdItemIdsObject = layout =>\n layoutGetAllDimensions(layout).reduce((obj, dimension) => {\n obj[dimensionGetId(dimension)] = dimensionGetItemIds(dimension)\n return obj\n }, {})\n","import { DIMENSION_ID_DATA } from '../predefinedDimensions'\nimport { axisHasDimension } from './axisHasDimension'\n\nexport const axisHasDataDimension = axis =>\n axisHasDimension(axis, DIMENSION_ID_DATA)\n","import { layoutGetAllAxes } from './layoutGetAllAxes'\nimport { axisHasDataDimension } from './axisHasDataDimension'\n\nexport const layoutHasDataDimension = layout =>\n Boolean(layoutGetAllAxes(layout).find(axis => axisHasDataDimension(axis)))\n","import { layoutGetDimension } from './layoutGetDimension'\n\nexport const layoutHasDimension = (layout, dimensionId) =>\n Boolean(layoutGetDimension(layout, dimensionId))\n","import { layoutGetAllDimensions } from './layoutGetAllDimensions'\nimport { dimensionGetId } from './dimensionGetId'\nimport { getPredefinedDimensions } from '../predefinedDimensions'\n\nexport const layoutHasDynamicDimension = layout => {\n const fixedIds = Object.keys(getPredefinedDimensions())\n\n return Boolean(\n layoutGetAllDimensions(layout).find(\n dimension => !fixedIds.includes(dimensionGetId(dimension))\n )\n )\n}\n","import { DIMENSION_ID_PERIOD } from '../predefinedDimensions'\nimport { axisHasDimension } from './axisHasDimension'\n\nexport const axisHasPeriodDimension = axis =>\n axisHasDimension(axis, DIMENSION_ID_PERIOD)\n","import { layoutGetAllAxes } from './layoutGetAllAxes'\nimport { axisHasPeriodDimension } from './axisHasPeriodDimension'\n\nexport const layoutHasPeriodDimension = layout =>\n Boolean(layoutGetAllAxes(layout).find(axis => axisHasPeriodDimension(axis)))\n","import { DIMENSION_ID_ORGUNIT } from '../predefinedDimensions'\nimport { axisHasDimension } from './axisHasDimension'\n\nexport const axisHasOuDimension = axis =>\n axisHasDimension(axis, DIMENSION_ID_ORGUNIT)\n","export const axisIsEmpty = axis => !axis.length\n","import { DIMENSION_PROP_ID, DIMENSION_PROP_ITEMS } from './dimension'\n\nexport const dimensionCreate = (dimensionId, itemIds = []) => ({\n [DIMENSION_PROP_ID.name]: dimensionId,\n [DIMENSION_PROP_ITEMS.name]: itemIds.map(id => ({ id })),\n})\n","import { ITEM, ITEM_PROPS } from './item'\n\nexport const itemIsValid = item => {\n if (!ITEM.isValid(item)) {\n return false\n }\n\n const requiredProps = ITEM_PROPS.filter(prop => prop.required)\n\n return requiredProps.every(prop => prop.isValid(item[prop.name]))\n}\n","import isArray from 'd2-utilizr/lib/isArray'\nimport isObject from 'd2-utilizr/lib/isObject'\nimport isString from 'd2-utilizr/lib/isString'\n\nconst MODULE = 'Data validator: '\n\nfunction getMessage(text) {\n return MODULE + text\n}\n\nfunction validateHeader(header, error) {\n if (!isObject(header)) {\n error(getMessage('Header is not an object'))\n }\n\n if (header.meta) {\n if (!isString(header.name)) {\n error(getMessage('Header name is not a string'))\n }\n }\n}\n\nfunction validateRowValue(rowValue, error) {\n if (!isString(rowValue)) {\n error(getMessage('Row value is not a string'))\n }\n}\n\nfunction validateRow(row, headersLength, error) {\n if (!isArray(row)) {\n error(getMessage('Data row is not an array'))\n }\n\n if (row.length !== headersLength) {\n error(getMessage('Data row length is invalid'))\n }\n\n row.forEach(rowValue => validateRowValue(rowValue, error))\n}\n\nexport default function({ data, error, warning }) {\n if (!isObject(data)) {\n error(getMessage('Data is not an object'))\n }\n\n // headers\n\n if (!isArray(data.headers)) {\n error(getMessage('Response headers is not an array'))\n }\n\n if (!data.headers.length > 1) {\n error(getMessage('At least two response headers required'))\n }\n\n data.headers.forEach(header => validateHeader(header, error))\n\n // meta data\n\n if (!isObject(data.metaData)) {\n error(getMessage('Metadata is not an object'))\n }\n\n if (!isObject(data.metaData.items)) {\n error(getMessage('Metadata items is not an object'))\n }\n\n if (!isObject(data.metaData.dimensions)) {\n error(getMessage('Metadata dimensions is not an object'))\n }\n\n // data\n\n if (!isArray(data.rows)) {\n warning(getMessage('Data rows is not an array'))\n }\n\n if (!data.rows.length) {\n warning(getMessage('No data rows provided'))\n }\n\n data.rows.forEach(row => validateRow(row, data.headers.length, error))\n\n return data\n}\n","import dhis from './dhis'\n\nconst noValidation = data => data\n\nexport default {\n dhis,\n noValidation,\n}\n","export default function(acc, series, categories, idValueMap) {\n const serieData = []\n\n categories[0].forEach(categoryItemId => {\n const value = idValueMap.get(categoryItemId)\n\n // DHIS2-1261: 0 is a valid value\n // undefined value means the key was not found within the rows\n // in that case null is returned as value in the serie for highcharts\n serieData.push(value === undefined ? null : parseFloat(value))\n })\n\n acc.push({\n name: '', //TODO: not used?\n data: serieData,\n })\n\n return acc\n}\n","export default function(acc, series, categories, idValueMap, metaData) {\n series[0].forEach(serieItemId => {\n const value = idValueMap.get(serieItemId)\n\n if (value) {\n acc.push({\n id: serieItemId,\n name: metaData.items[serieItemId].name,\n y: parseFloat(value),\n })\n }\n })\n\n return acc\n}\n","export default function(acc, series, categories, idValueMap) {\n const serieItemId = series[0][0]\n\n acc.push({\n data: [parseFloat(idValueMap.get(serieItemId))],\n })\n}\n","export default function getTwoCategorySplitSerieData(serieData) {\n // Add a null value after the last point of the first group\n // this results in 2 separated charts for line and area\n const splitSerieData = []\n let index = 0\n\n serieData.forEach((groupData, groupIndex) => {\n groupData.map(point => splitSerieData.push([index++, point]))\n\n if (groupIndex + 1 < serieData.length) {\n splitSerieData.push([index - 0.5, null])\n }\n })\n\n return splitSerieData\n}\n","import getTwoCategorySplitSerieData from '../../../config/adapters/dhis_highcharts/getTwoCategorySplitSerieData'\n\n// 1 series, 2 categories\nexport default function(acc, series, categories, idValueMap, metaData) {\n series[0].forEach(seriesItemId => {\n const groupedData = []\n\n categories[0].forEach(category1ItemId => {\n const groupData = []\n\n categories[1].forEach(category2ItemId => {\n const value = idValueMap.get(\n `${seriesItemId}-${category1ItemId}-${category2ItemId}`\n )\n\n groupData.push(value === undefined ? null : parseFloat(value))\n })\n\n groupedData.push(groupData)\n })\n\n const serieData = getTwoCategorySplitSerieData(groupedData)\n\n // avoid a list of null values\n if (serieData.every(e => e === null)) {\n serieData.length = 0\n groupedData.length = 0\n }\n\n acc.push({\n id: seriesItemId,\n name: metaData.items[seriesItemId].name,\n data: serieData,\n custom: {\n data: groupedData,\n },\n xAxis: 0,\n })\n })\n\n acc.push({\n // with line the other column/bars are centered in the 2nd axis section\n type: 'line',\n // with null the fake series does not appear in the tooltip\n data: Array.from({ length: categories[0].length }, () => null),\n showInLegend: false,\n // assign the serie to the 2nd axis so the labels show\n xAxis: 1,\n // always hide the series' values\n dataLabels: {\n enabled: false,\n },\n custom: {\n isTwoCategoryFakeSerie: true,\n },\n })\n\n return acc\n}\n","import arrayContains from 'd2-utilizr/lib/arrayContains'\nimport arrayUnique from 'd2-utilizr/lib/arrayUnique'\n\nimport getYearOnYear from './yearOnYear'\nimport getPie from './pie'\nimport getGauge from './gauge'\nimport getTwoCategory from './twoCategory'\n\nimport {\n VIS_TYPE_YEAR_OVER_YEAR_COLUMN,\n VIS_TYPE_YEAR_OVER_YEAR_LINE,\n VIS_TYPE_PIE,\n VIS_TYPE_GAUGE,\n isTwoCategoryChartType,\n} from '../../../../modules/visTypes'\n\nconst VALUE_ID = 'value'\n\nfunction arrayNullsOnly(array) {\n return arrayContains(array, null) && arrayUnique(array).length === 1\n}\n\nfunction getHeaderIdIndexMap(headers) {\n const map = new Map()\n\n headers.forEach((header, index) => {\n map.set(header.name, index)\n })\n\n return map\n}\n\nfunction getPrefixedId(row, header) {\n return (header.isPrefix ? header.name + '_' : '') + row[header.index]\n}\n\nfunction getIdValueMap(rows, seriesHeader, categoryHeaders, valueIndex) {\n const map = new Map()\n\n let key\n let value\n\n rows.forEach(row => {\n key = [\n ...(seriesHeader ? [getPrefixedId(row, seriesHeader)] : []),\n ...(categoryHeaders\n ? categoryHeaders.map(categoryHeader =>\n getPrefixedId(row, categoryHeader)\n )\n : []),\n ].join('-')\n\n value = row[valueIndex]\n\n map.set(key, value)\n })\n\n return map\n}\n\n// 1 series, 1 category\nfunction getDefault(acc, series, categories, idValueMap, metaData) {\n series[0].forEach(serieItemId => {\n const serieData = []\n\n categories[0].forEach(categoryItemId => {\n const value = idValueMap.get(`${serieItemId}-${categoryItemId}`)\n\n // DHIS2-1261: 0 is a valid value\n // undefined value means the key was not found within the rows\n // in that case null is returned as value in the serie\n // this is to keep the correct indexes for the values within the serie array\n serieData.push(value === undefined ? null : parseFloat(value))\n })\n\n // if the whole serie has no data, do not return a list of null values\n // otherwise Highcharts thinks that data is available and does not show the \"No data to display\" message\n if (arrayNullsOnly(serieData)) {\n serieData.length = 0\n }\n\n acc.push({\n id: serieItemId,\n name: metaData.items[serieItemId].name,\n data: serieData,\n })\n })\n\n return acc\n}\n\nfunction getSeriesFunction(type, categoryIds) {\n if (isTwoCategoryChartType(type) && categoryIds.length === 2) {\n return getTwoCategory\n }\n\n switch (type) {\n case VIS_TYPE_PIE:\n return getPie\n case VIS_TYPE_GAUGE:\n return getGauge\n case VIS_TYPE_YEAR_OVER_YEAR_COLUMN:\n case VIS_TYPE_YEAR_OVER_YEAR_LINE:\n return getYearOnYear\n default:\n return getDefault\n }\n}\n\nexport default function({ type, data, seriesId, categoryIds }) {\n categoryIds = categoryIds || []\n\n const seriesFunction = getSeriesFunction(type, categoryIds)\n\n return data.reduce((acc, res) => {\n const headers = res.headers\n const metaData = res.metaData\n const rows = res.rows\n const headerIdIndexMap = getHeaderIdIndexMap(headers)\n\n const seriesHeader = headers[headerIdIndexMap.get(seriesId)]\n const categoryHeaders = categoryIds.map(\n categoryId => headers[headerIdIndexMap.get(categoryId)]\n )\n\n const idValueMap = getIdValueMap(\n rows,\n seriesHeader,\n categoryHeaders,\n headerIdIndexMap.get(VALUE_ID)\n )\n\n const series = [metaData.dimensions[seriesId]]\n const categories = categoryIds.map(id => metaData.dimensions[id])\n\n seriesFunction(acc, series, categories, idValueMap, metaData)\n\n return acc\n }, [])\n}\n","export default function(acc, seriesIds, categoryIds, idValueMap) {\n const seriesId = seriesIds[0]\n\n acc.push(idValueMap.get(seriesId))\n}\n","import getSingleValue from './singleValue'\nimport { VIS_TYPE_SINGLE_VALUE } from '../../../../modules/visTypes'\n\nconst VALUE_ID = 'value'\n\nfunction getHeaderIdIndexMap(headers) {\n const map = new Map()\n\n headers.forEach((header, index) => {\n map.set(header.name, index)\n })\n\n return map\n}\n\nfunction getPrefixedId(row, header) {\n return (header.isPrefix ? header.name + '_' : '') + row[header.index]\n}\n\nfunction getIdValueMap(rows, seriesHeader, categoryHeader, valueIndex) {\n const map = new Map()\n\n let key\n let value\n\n rows.forEach(row => {\n key = [\n ...(seriesHeader ? [getPrefixedId(row, seriesHeader)] : []),\n ...(categoryHeader ? [getPrefixedId(row, categoryHeader)] : []),\n ].join('-')\n\n value = row[valueIndex]\n\n map.set(key, value)\n })\n\n return map\n}\n\nfunction getDefault(acc, seriesIds, categoryIds, idValueMap, metaData) {\n seriesIds.forEach(seriesId => {\n const serieData = []\n\n categoryIds.forEach(categoryId => {\n const value = idValueMap.get(`${seriesId}-${categoryId}`)\n\n // DHIS2-1261: 0 is a valid value\n // undefined value means the key was not found within the rows\n // in that case null is returned as value in the serie\n serieData.push(value === undefined ? null : parseFloat(value))\n })\n\n acc.push({\n id: seriesId,\n name: metaData.items[seriesId].name,\n data: serieData,\n })\n })\n\n return acc\n}\n\nfunction getValueFunction(type) {\n switch (type) {\n case VIS_TYPE_SINGLE_VALUE:\n return getSingleValue\n default:\n return getDefault\n }\n}\n\nexport default function({ type, data, seriesId, categoryId }) {\n const valueFunction = getValueFunction(type)\n\n return data.reduce((acc, res) => {\n const headers = res.headers\n const metaData = res.metaData\n const rows = res.rows\n const headerIdIndexMap = getHeaderIdIndexMap(headers)\n\n const seriesIndex = headerIdIndexMap.get(seriesId)\n const categoryIndex = headerIdIndexMap.get(categoryId)\n const valueIndex = headerIdIndexMap.get(VALUE_ID)\n\n const seriesHeader = headers[seriesIndex]\n const categoryHeader = headers[categoryIndex]\n\n const idValueMap = getIdValueMap(\n rows,\n seriesHeader,\n categoryHeader,\n valueIndex\n )\n\n const seriesIds = metaData.dimensions[seriesId]\n const categoryIds = metaData.dimensions[categoryId]\n\n valueFunction(acc, seriesIds, categoryIds, idValueMap, metaData)\n\n return acc\n }, [])\n}\n","import dhis_highcharts from './dhis_highcharts'\nimport dhis_dhis from './dhis_dhis'\n\nexport default {\n dhis_highcharts,\n dhis_dhis,\n}\n","import validators from './validators'\nimport adapters from './adapters'\n\nexport default function({\n data,\n inputFormat = 'dhis',\n outputFormat = 'highcharts',\n seriesId: initialSeriesId,\n categoryId: initialCategoryId,\n error,\n warning,\n}) {\n const _validator = validators[inputFormat] || validators.noValidation\n const _adapter = adapters[inputFormat + '_' + outputFormat]\n\n if (_validator === validators.noValidation) {\n warning(\n `Validation not supported for data input format \"${inputFormat}\"`\n )\n }\n\n if (!_adapter) {\n error(\n `Data tranformation from \"${inputFormat}\" to \"${outputFormat}\" is not supported`\n )\n }\n\n this.data = data\n\n this.generateData = ({\n type,\n seriesId = initialSeriesId,\n categoryIds = [initialCategoryId],\n }) => {\n return _adapter({\n type,\n data: data.map(d => _validator({ data: d, error, warning })),\n seriesId,\n categoryIds,\n })\n }\n}\n","export default function({ layout }) {\n return layout\n}\n","import dhis from './dhis'\n\nconst noValidation = data => data\n\nexport default {\n dhis,\n noValidation,\n}\n","import {\n VIS_TYPE_BAR,\n VIS_TYPE_STACKED_BAR,\n VIS_TYPE_LINE,\n VIS_TYPE_YEAR_OVER_YEAR_LINE,\n VIS_TYPE_AREA,\n VIS_TYPE_STACKED_AREA,\n VIS_TYPE_PIE,\n VIS_TYPE_RADAR,\n VIS_TYPE_GAUGE,\n VIS_TYPE_COLUMN,\n VIS_TYPE_STACKED_COLUMN,\n VIS_TYPE_YEAR_OVER_YEAR_COLUMN,\n} from '../../../../modules/visTypes'\n\nexport default function(type) {\n switch (type) {\n case VIS_TYPE_BAR:\n case VIS_TYPE_STACKED_BAR:\n return { type: 'bar' }\n case VIS_TYPE_LINE:\n case VIS_TYPE_YEAR_OVER_YEAR_LINE:\n return { type: 'line' }\n case VIS_TYPE_AREA:\n case VIS_TYPE_STACKED_AREA:\n return { type: 'area' }\n case VIS_TYPE_PIE:\n return { type: 'pie' }\n case VIS_TYPE_RADAR:\n return { type: 'line', polar: true }\n case VIS_TYPE_GAUGE:\n return { type: 'solidgauge' }\n case VIS_TYPE_COLUMN:\n case VIS_TYPE_STACKED_COLUMN:\n case VIS_TYPE_YEAR_OVER_YEAR_COLUMN:\n default:\n return { type: 'column' }\n }\n}\n","import getType from './type'\n\nconst DEFAULT_CHART = {\n spacingTop: 20,\n style: {\n fontFamily: 'Roboto,Helvetica Neue,Helvetica,Arial,sans-serif',\n },\n}\n\nconst DASHBOARD_CHART = {\n spacingTop: 0,\n spacingRight: 5,\n spacingBottom: 2,\n spacingLeft: 5,\n}\n\nconst getEvents = () => ({\n events: {\n load: function() { // Align legend icon with legend text\n this.legend.allItems.forEach((item) => {\n if (item.legendSymbol) {\n item.legendSymbol.attr({\n translateY: -((item.legendItem.getBBox().height) * 0.75 / 4 ) + ( item.legendSymbol.r / 2 )\n });\n }\n \n });\n }\n }\n})\n\nexport default function(layout, el, dashboard) {\n return Object.assign(\n {},\n getType(layout.type),\n { renderTo: el || layout.el },\n DEFAULT_CHART,\n dashboard ? DASHBOARD_CHART : undefined,\n getEvents(),\n )\n}\n","/*eslint no-unused-vars: [\"error\", { \"ignoreRestSiblings\": true }]*/\nimport i18n from '@dhis2/d2-i18n'\nimport { colors } from '@dhis2/ui'\n\nimport { isVerticalType } from './visTypes'\n\n// Font styles\nexport const FONT_STYLE_VISUALIZATION_TITLE = 'visualizationTitle'\nexport const FONT_STYLE_VISUALIZATION_SUBTITLE = 'visualizationSubtitle'\nexport const FONT_STYLE_HORIZONTAL_AXIS_TITLE = 'horizontalAxisTitle'\nexport const FONT_STYLE_VERTICAL_AXIS_TITLE = 'verticalAxisTitle'\nexport const FONT_STYLE_LEGEND = 'legend'\nexport const FONT_STYLE_SERIES_AXIS_LABELS = 'seriesAxisLabel'\nexport const FONT_STYLE_CATEGORY_AXIS_LABELS = 'categoryAxisLabel'\nexport const FONT_STYLE_TARGET_LINE_LABEL = 'targetLineLabel'\nexport const FONT_STYLE_BASE_LINE_LABEL = 'baseLineLabel'\n// Options\nexport const FONT_STYLE_OPTION_FONT = 'font'\nexport const FONT_STYLE_OPTION_FONT_SIZE = 'fontSize'\nexport const FONT_STYLE_OPTION_BOLD = 'bold'\nexport const FONT_STYLE_OPTION_ITALIC = 'italic'\nexport const FONT_STYLE_OPTION_UNDERLINE = 'underline'\nexport const FONT_STYLE_OPTION_TEXT_COLOR = 'textColor'\nexport const FONT_STYLE_OPTION_TEXT_ALIGN = 'textAlign'\n// Text align\nexport const TEXT_ALIGN_LEFT = 'LEFT'\nexport const TEXT_ALIGN_CENTER = 'CENTER'\nexport const TEXT_ALIGN_RIGHT = 'RIGHT'\n\n// Tiers\nconst TIER1 = 'tier1'\nconst TIER2 = 'tier2'\n\nexport const getFontSizeOptions = fontStyleKey => {\n const fontSizes = [\n {\n key: 'xSmall',\n label: i18n.t('Extra Small'),\n [TIER1]: 11,\n [TIER2]: 9,\n },\n {\n key: 'small',\n label: i18n.t('Small'),\n [TIER1]: 13,\n [TIER2]: 11,\n },\n {\n key: 'regular',\n label: i18n.t('Regular'),\n [TIER1]: 18,\n [TIER2]: 13,\n },\n {\n key: 'large',\n label: i18n.t('Large'),\n [TIER1]: 27,\n [TIER2]: 18,\n },\n {\n key: 'xLarge',\n label: i18n.t('Extra Large'),\n [TIER1]: 42,\n [TIER2]: 24,\n },\n ]\n\n const tier = [\n FONT_STYLE_VISUALIZATION_TITLE,\n FONT_STYLE_VISUALIZATION_SUBTITLE,\n ].includes(fontStyleKey)\n ? TIER1\n : TIER2\n\n const result = {}\n fontSizes.forEach(size => {\n result[size.key] = {\n label: size.label,\n value: size[tier],\n }\n })\n return result\n}\n\nexport const getTextAlignOptions = (fontStyleKey, visType) => {\n switch (fontStyleKey) {\n case FONT_STYLE_HORIZONTAL_AXIS_TITLE:\n case FONT_STYLE_VERTICAL_AXIS_TITLE:\n return axisTitleAlignOptions()\n case FONT_STYLE_TARGET_LINE_LABEL:\n case FONT_STYLE_BASE_LINE_LABEL:\n return isVerticalType(visType)\n ? verticalAlignOptions()\n : defaultAlignOptions()\n case FONT_STYLE_VISUALIZATION_TITLE:\n case FONT_STYLE_VISUALIZATION_SUBTITLE:\n case FONT_STYLE_LEGEND:\n default:\n return defaultAlignOptions()\n }\n}\n\nconst defaultAlignOptions = () => [\n {\n label: i18n.t('Left'),\n value: TEXT_ALIGN_LEFT,\n },\n {\n label: i18n.t('Center'),\n value: TEXT_ALIGN_CENTER,\n },\n {\n label: i18n.t('Right'),\n value: TEXT_ALIGN_RIGHT,\n },\n]\n\nconst axisTitleAlignOptions = () => [\n {\n label: i18n.t('Start'),\n value: TEXT_ALIGN_LEFT,\n },\n {\n label: i18n.t('Middle'),\n value: TEXT_ALIGN_CENTER,\n },\n {\n label: i18n.t('End'),\n value: TEXT_ALIGN_RIGHT,\n },\n]\n\nconst verticalAlignOptions = () => [\n {\n label: i18n.t('Top'),\n value: TEXT_ALIGN_LEFT,\n },\n {\n label: i18n.t('Middle'),\n value: TEXT_ALIGN_CENTER,\n },\n {\n label: i18n.t('Bottom'),\n value: TEXT_ALIGN_RIGHT,\n },\n]\n\nconst defaultFont = 'Roboto'\n\nexport const defaultFontStyle = {\n [FONT_STYLE_VISUALIZATION_TITLE]: {\n [FONT_STYLE_OPTION_FONT]: defaultFont,\n [FONT_STYLE_OPTION_FONT_SIZE]: getFontSizeOptions(\n FONT_STYLE_VISUALIZATION_TITLE\n ).regular.value,\n [FONT_STYLE_OPTION_BOLD]: false,\n [FONT_STYLE_OPTION_ITALIC]: false,\n [FONT_STYLE_OPTION_UNDERLINE]: false,\n [FONT_STYLE_OPTION_TEXT_COLOR]: colors.grey900,\n [FONT_STYLE_OPTION_TEXT_ALIGN]: TEXT_ALIGN_CENTER,\n },\n [FONT_STYLE_VISUALIZATION_SUBTITLE]: {\n [FONT_STYLE_OPTION_FONT]: defaultFont,\n [FONT_STYLE_OPTION_FONT_SIZE]: getFontSizeOptions(\n FONT_STYLE_VISUALIZATION_SUBTITLE\n ).small.value,\n [FONT_STYLE_OPTION_BOLD]: false,\n [FONT_STYLE_OPTION_ITALIC]: false,\n [FONT_STYLE_OPTION_UNDERLINE]: false,\n [FONT_STYLE_OPTION_TEXT_COLOR]: colors.grey700,\n [FONT_STYLE_OPTION_TEXT_ALIGN]: TEXT_ALIGN_CENTER,\n },\n [FONT_STYLE_HORIZONTAL_AXIS_TITLE]: {\n [FONT_STYLE_OPTION_FONT]: defaultFont,\n [FONT_STYLE_OPTION_FONT_SIZE]: getFontSizeOptions(\n FONT_STYLE_HORIZONTAL_AXIS_TITLE\n ).regular.value,\n [FONT_STYLE_OPTION_BOLD]: false,\n [FONT_STYLE_OPTION_ITALIC]: false,\n [FONT_STYLE_OPTION_UNDERLINE]: false,\n [FONT_STYLE_OPTION_TEXT_COLOR]: colors.grey900,\n [FONT_STYLE_OPTION_TEXT_ALIGN]: TEXT_ALIGN_CENTER,\n },\n [FONT_STYLE_VERTICAL_AXIS_TITLE]: {\n [FONT_STYLE_OPTION_FONT]: defaultFont,\n [FONT_STYLE_OPTION_FONT_SIZE]: getFontSizeOptions(\n FONT_STYLE_VERTICAL_AXIS_TITLE\n ).regular.value,\n [FONT_STYLE_OPTION_BOLD]: false,\n [FONT_STYLE_OPTION_ITALIC]: false,\n [FONT_STYLE_OPTION_UNDERLINE]: false,\n [FONT_STYLE_OPTION_TEXT_COLOR]: colors.grey900,\n [FONT_STYLE_OPTION_TEXT_ALIGN]: TEXT_ALIGN_CENTER,\n },\n [FONT_STYLE_LEGEND]: {\n [FONT_STYLE_OPTION_FONT]: defaultFont,\n [FONT_STYLE_OPTION_FONT_SIZE]: getFontSizeOptions(FONT_STYLE_LEGEND)\n .regular.value,\n [FONT_STYLE_OPTION_BOLD]: false,\n [FONT_STYLE_OPTION_ITALIC]: false,\n [FONT_STYLE_OPTION_UNDERLINE]: false,\n [FONT_STYLE_OPTION_TEXT_COLOR]: colors.grey900,\n [FONT_STYLE_OPTION_TEXT_ALIGN]: TEXT_ALIGN_CENTER,\n },\n [FONT_STYLE_SERIES_AXIS_LABELS]: {\n [FONT_STYLE_OPTION_FONT]: defaultFont,\n [FONT_STYLE_OPTION_FONT_SIZE]: getFontSizeOptions(\n FONT_STYLE_SERIES_AXIS_LABELS\n ).small.value,\n [FONT_STYLE_OPTION_BOLD]: false,\n [FONT_STYLE_OPTION_ITALIC]: false,\n [FONT_STYLE_OPTION_UNDERLINE]: false,\n [FONT_STYLE_OPTION_TEXT_COLOR]: colors.grey800,\n },\n [FONT_STYLE_CATEGORY_AXIS_LABELS]: {\n [FONT_STYLE_OPTION_FONT]: defaultFont,\n [FONT_STYLE_OPTION_FONT_SIZE]: getFontSizeOptions(\n FONT_STYLE_CATEGORY_AXIS_LABELS\n ).small.value,\n [FONT_STYLE_OPTION_BOLD]: false,\n [FONT_STYLE_OPTION_ITALIC]: false,\n [FONT_STYLE_OPTION_UNDERLINE]: false,\n [FONT_STYLE_OPTION_TEXT_COLOR]: colors.grey800,\n },\n [FONT_STYLE_TARGET_LINE_LABEL]: {\n [FONT_STYLE_OPTION_FONT]: defaultFont,\n [FONT_STYLE_OPTION_FONT_SIZE]: getFontSizeOptions(\n FONT_STYLE_TARGET_LINE_LABEL\n ).regular.value,\n [FONT_STYLE_OPTION_BOLD]: false,\n [FONT_STYLE_OPTION_ITALIC]: false,\n [FONT_STYLE_OPTION_UNDERLINE]: false,\n [FONT_STYLE_OPTION_TEXT_COLOR]: colors.grey900,\n [FONT_STYLE_OPTION_TEXT_ALIGN]: TEXT_ALIGN_LEFT,\n },\n [FONT_STYLE_BASE_LINE_LABEL]: {\n [FONT_STYLE_OPTION_FONT]: defaultFont,\n [FONT_STYLE_OPTION_FONT_SIZE]: getFontSizeOptions(\n FONT_STYLE_BASE_LINE_LABEL\n ).regular.value,\n [FONT_STYLE_OPTION_BOLD]: false,\n [FONT_STYLE_OPTION_ITALIC]: false,\n [FONT_STYLE_OPTION_UNDERLINE]: false,\n [FONT_STYLE_OPTION_TEXT_COLOR]: colors.grey900,\n [FONT_STYLE_OPTION_TEXT_ALIGN]: TEXT_ALIGN_LEFT,\n },\n}\n\nexport const mergeFontStyleWithDefault = fontStyle => {\n const result = { ...defaultFontStyle }\n for (const style in fontStyle) {\n result[style] = {\n ...result[style],\n ...fontStyle[style],\n }\n }\n return result\n}\n\nexport const deleteFontStyleOption = (inputFontStyle, fontStyleKey, option) => {\n const style = {\n ...inputFontStyle,\n [fontStyleKey]: {\n ...inputFontStyle[fontStyleKey],\n },\n }\n style[fontStyleKey] && delete style[fontStyleKey][option]\n !Object.keys(style[fontStyleKey]).length && delete style[fontStyleKey]\n return Object.keys(style).length ? style : null\n}\n","import { TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER, TEXT_ALIGN_RIGHT, FONT_STYLE_HORIZONTAL_AXIS_TITLE, FONT_STYLE_VERTICAL_AXIS_TITLE, FONT_STYLE_TARGET_LINE_LABEL, FONT_STYLE_BASE_LINE_LABEL, FONT_STYLE_VISUALIZATION_TITLE, FONT_STYLE_VISUALIZATION_SUBTITLE, FONT_STYLE_LEGEND } from \"../../../../modules/fontStyle\"\nimport { isVerticalType } from \"../../../../modules/visTypes\"\n\nconst defaultAlignOptions = {\n [TEXT_ALIGN_LEFT]: 'left',\n [TEXT_ALIGN_CENTER]: 'center',\n [TEXT_ALIGN_RIGHT]: 'right',\n}\n\nconst axisTitleAlignOptions = {\n [TEXT_ALIGN_LEFT]: 'low',\n [TEXT_ALIGN_CENTER]: 'middle',\n [TEXT_ALIGN_RIGHT]: 'high',\n}\n\nconst verticalAlignOptions = {\n [TEXT_ALIGN_LEFT]: 'top',\n [TEXT_ALIGN_CENTER]: 'middle',\n [TEXT_ALIGN_RIGHT]: 'bottom'\n}\n\nconst getTextAlignOptions = (fontStyleKey, visType) => {\n switch (fontStyleKey) {\n case FONT_STYLE_HORIZONTAL_AXIS_TITLE:\n case FONT_STYLE_VERTICAL_AXIS_TITLE:\n return axisTitleAlignOptions\n case FONT_STYLE_TARGET_LINE_LABEL:\n case FONT_STYLE_BASE_LINE_LABEL:\n return isVerticalType(visType)\n ? verticalAlignOptions\n : defaultAlignOptions\n case FONT_STYLE_VISUALIZATION_TITLE:\n case FONT_STYLE_VISUALIZATION_SUBTITLE:\n case FONT_STYLE_LEGEND:\n default:\n return defaultAlignOptions\n }\n}\n\nexport const getTextAlignOption = (option, fontStyleKey, visType) => \n getTextAlignOptions(fontStyleKey, visType)[option]\n","import isString from 'd2-utilizr/lib/isString'\nimport { \n FONT_STYLE_OPTION_FONT_SIZE, \n FONT_STYLE_OPTION_TEXT_COLOR,\n FONT_STYLE_OPTION_BOLD ,\n FONT_STYLE_OPTION_ITALIC,\n FONT_STYLE_OPTION_TEXT_ALIGN,\n} from '../../../../modules/fontStyle'\nimport { getTextAlignOption } from './getTextAlignOption'\n\nconst getTitleStyle = (fontStyle, titleType, visType) => fontStyle ? {\n align: (getTextAlignOption(fontStyle[FONT_STYLE_OPTION_TEXT_ALIGN], titleType , visType)),\n margin: 15,\n style: {\n color: fontStyle[FONT_STYLE_OPTION_TEXT_COLOR],\n fontSize: `${fontStyle[FONT_STYLE_OPTION_FONT_SIZE]}px`,\n fontWeight: fontStyle[FONT_STYLE_OPTION_BOLD] ? FONT_STYLE_OPTION_BOLD : 'normal',\n fontStyle: fontStyle[FONT_STYLE_OPTION_ITALIC] ? FONT_STYLE_OPTION_ITALIC : 'normal'\n },\n} : {}\n\nexport default function(title, fontStyle, titleType, visType) {\n return isString(title)\n ? Object.assign({}, getTitleStyle(fontStyle, titleType, visType), {\n text: title,\n })\n : {\n text: null,\n }\n}\n","import isArray from 'd2-utilizr/lib/isArray'\n\nexport default function(metaData, dimensionId) {\n const dimensionItemsIds = isArray(metaData.dimensions[dimensionId])\n ? metaData.dimensions[dimensionId]\n : []\n\n return dimensionItemsIds.map(id => metaData.items[id].name)\n}\n","export default function(store, layout, extraOptions) {\n let categories\n\n if (extraOptions.xAxisLabels) {\n categories = extraOptions.xAxisLabels\n } else {\n // look for the response with the longer list of periods.\n // in some cases (ie. weeks per year) responses might have a different number of periods in metadata\n const res = store.data.reduce((out, r) => {\n if (out) {\n if (\n r.metaData.dimensions.pe.length >\n out.metaData.dimensions.pe.length\n ) {\n out = r\n }\n } else {\n out = r\n }\n\n return out\n }, {})\n\n const metaData = res.metaData\n\n categories = metaData.dimensions.pe.reduce((categories, periodId) => {\n // TODO use shortName or pass extra option to the request for getting short names in name prop\n categories.push(metaData.items[periodId].name)\n return categories\n }, [])\n }\n\n return {\n categories,\n }\n}\n","import getAxisTitle from '../getAxisTitle'\nimport getCategories from '../getCategories'\nimport { getLabelsStyle } from './'\nimport {\n FONT_STYLE_HORIZONTAL_AXIS_TITLE,\n FONT_STYLE_CATEGORY_AXIS_LABELS,\n} from '../../../../../modules/fontStyle'\n\n\nexport default function(store, layout) {\n const axis1Categories = getCategories(\n store.data[0].metaData,\n layout.rows[1].dimension\n )\n\n const axis2Categories = getCategories(\n store.data[0].metaData,\n layout.rows[0].dimension\n )\n\n // bottom x axis\n const xAxis = [\n {\n title: getAxisTitle(layout.domainAxisLabel, layout.fontStyle[FONT_STYLE_HORIZONTAL_AXIS_TITLE], FONT_STYLE_HORIZONTAL_AXIS_TITLE, layout.type),\n categories: Array.from(\n { length: axis2Categories.length || 1 },\n () => axis1Categories\n ),\n labels: getLabelsStyle(layout.fontStyle[FONT_STYLE_CATEGORY_AXIS_LABELS]),\n },\n ]\n\n // top x axis\n xAxis.push({\n categories: axis2Categories,\n labels: xAxis[0].labels,\n gridLineWidth: 1,\n opposite: 'true',\n })\n\n return xAxis\n}\n","import isString from 'd2-utilizr/lib/isString'\nimport { FONT_STYLE_HORIZONTAL_AXIS_TITLE, FONT_STYLE_OPTION_TEXT_ALIGN, TEXT_ALIGN_CENTER } from '../../../../../modules/fontStyle'\nimport { getDefault } from './'\n\nexport default (store, layout) => {\n const config = getDefault(store, layout)\n\n if (isString(layout.domainAxisLabel) && config.title && layout.fontStyle[FONT_STYLE_HORIZONTAL_AXIS_TITLE][FONT_STYLE_OPTION_TEXT_ALIGN] === TEXT_ALIGN_CENTER) {\n config.title.textAlign = 'right'\n }\n \n return config\n}\n","import objectClean from 'd2-utilizr/lib/objectClean'\nimport getAxisTitle from '../getAxisTitle'\nimport getCategories from '../getCategories'\nimport getYearOnYear from './yearOnYear'\nimport getTwoCategory from './twoCategory'\nimport getRadar from './radar'\nimport {\n VIS_TYPE_GAUGE,\n VIS_TYPE_YEAR_OVER_YEAR_LINE,\n VIS_TYPE_YEAR_OVER_YEAR_COLUMN,\n VIS_TYPE_PIE,\n VIS_TYPE_RADAR,\n isTwoCategoryChartType, \n} from '../../../../../modules/visTypes'\nimport { \n FONT_STYLE_HORIZONTAL_AXIS_TITLE, \n FONT_STYLE_CATEGORY_AXIS_LABELS,\n FONT_STYLE_OPTION_TEXT_COLOR,\n FONT_STYLE_OPTION_FONT_SIZE,\n FONT_STYLE_OPTION_BOLD,\n FONT_STYLE_OPTION_ITALIC \n} from '../../../../../modules/fontStyle'\n\nfunction noAxis() {\n return null\n}\n\nexport const getLabelsStyle = fontStyle => fontStyle ? {\n style: {\n color: fontStyle[FONT_STYLE_OPTION_TEXT_COLOR],\n fontSize: `${fontStyle[FONT_STYLE_OPTION_FONT_SIZE]}px`,\n fontWeight: fontStyle[FONT_STYLE_OPTION_BOLD] ? FONT_STYLE_OPTION_BOLD : 'normal',\n fontStyle: fontStyle[FONT_STYLE_OPTION_ITALIC] ? FONT_STYLE_OPTION_ITALIC : 'normal'\n },\n} : {}\n\nexport const getDefault = (store, layout) =>\n objectClean({\n categories: getCategories(store.data[0].metaData, layout.rows[0].dimension),\n title: getAxisTitle(layout.domainAxisLabel, layout.fontStyle[FONT_STYLE_HORIZONTAL_AXIS_TITLE], FONT_STYLE_HORIZONTAL_AXIS_TITLE, layout.type),\n labels: getLabelsStyle(layout.fontStyle[FONT_STYLE_CATEGORY_AXIS_LABELS]),\n })\n\nexport default function(store, layout, extraOptions) {\n let xAxis\n\n if (isTwoCategoryChartType(layout.type) && layout.rows.length > 1) {\n xAxis = getTwoCategory(store, layout, extraOptions)\n } else {\n switch (layout.type) {\n case VIS_TYPE_PIE:\n case VIS_TYPE_GAUGE:\n xAxis = noAxis()\n break\n case VIS_TYPE_YEAR_OVER_YEAR_LINE:\n case VIS_TYPE_YEAR_OVER_YEAR_COLUMN:\n xAxis = [getYearOnYear(store, layout, extraOptions)]\n break\n case VIS_TYPE_RADAR:\n xAxis = [getRadar(store, layout)]\n break\n default:\n xAxis = [getDefault(store, layout)]\n }\n }\n\n return xAxis\n}\n","import arrayClean from 'd2-utilizr/lib/arrayClean'\nimport isNumber from 'd2-utilizr/lib/isNumber'\nimport objectClean from 'd2-utilizr/lib/objectClean'\nimport i18n from '@dhis2/d2-i18n'\nimport { getColorByValueFromLegendSet, LEGEND_DISPLAY_STYLE_FILL } from '../../../../../modules/legends'\nimport { FONT_STYLE_OPTION_TEXT_COLOR,\n FONT_STYLE_OPTION_FONT_SIZE,\n FONT_STYLE_OPTION_BOLD,\n FONT_STYLE_OPTION_ITALIC, \n TEXT_ALIGN_LEFT, \n TEXT_ALIGN_RIGHT, \n TEXT_ALIGN_CENTER, \n FONT_STYLE_BASE_LINE_LABEL, \n FONT_STYLE_TARGET_LINE_LABEL, \n FONT_STYLE_OPTION_TEXT_ALIGN, \n FONT_STYLE_SERIES_AXIS_LABELS \n} from '../../../../../modules/fontStyle'\nimport { VIS_TYPE_GAUGE } from '../../../../../modules/visTypes'\nimport { getTextAlignOption } from '../getTextAlignOption'\n\nconst DEFAULT_MAX_VALUE = 100\n\nconst DEFAULT_TARGET_LINE_LABEL = i18n.t('Target')\nconst DEFAULT_BASE_LINE_LABEL = i18n.t('Base')\n\nconst getLabelOffsetFromTextAlign = textAlign => {\n switch (textAlign) {\n case TEXT_ALIGN_LEFT:\n return -10\n case TEXT_ALIGN_RIGHT:\n return 10\n case TEXT_ALIGN_CENTER:\n default:\n return 0\n }\n}\n\nfunction getPlotLine(value, label, fontStyle, fontStyleType) {\n const verticalAlign = getTextAlignOption(fontStyle[FONT_STYLE_OPTION_TEXT_ALIGN], fontStyleType, VIS_TYPE_GAUGE)\n const y = getLabelOffsetFromTextAlign(fontStyle[FONT_STYLE_OPTION_TEXT_ALIGN])\n return {\n value,\n zIndex: 5,\n width: 1,\n color: fontStyle[FONT_STYLE_OPTION_TEXT_COLOR] || '#000',\n ...(label && {\n label: {\n text: `${label}: ${value}`,\n verticalAlign,\n y,\n style: {\n color: fontStyle[FONT_STYLE_OPTION_TEXT_COLOR],\n fontSize: `${fontStyle[FONT_STYLE_OPTION_FONT_SIZE]}px`,\n fontWeight: fontStyle[FONT_STYLE_OPTION_BOLD]\n ? FONT_STYLE_OPTION_BOLD\n : 'normal',\n fontStyle: fontStyle[FONT_STYLE_OPTION_ITALIC]\n ? FONT_STYLE_OPTION_ITALIC\n : 'normal',\n }\n }\n })\n }\n}\n\nconst getLabels = fontStyle => (\n {\n y: parseInt(fontStyle[FONT_STYLE_OPTION_FONT_SIZE], 10) + 7,\n style: {\n color: fontStyle[FONT_STYLE_OPTION_TEXT_COLOR],\n fontSize: `${fontStyle[FONT_STYLE_OPTION_FONT_SIZE]}px`,\n fontWeight: fontStyle[FONT_STYLE_OPTION_BOLD]\n ? FONT_STYLE_OPTION_BOLD\n : 'normal',\n fontStyle: fontStyle[FONT_STYLE_OPTION_ITALIC]\n ? FONT_STYLE_OPTION_ITALIC\n : 'normal',\n },\n }\n)\n\nexport default function(layout, series, legendSet) {\n const plotLines = arrayClean([\n isNumber(layout.baseLineValue) ? getPlotLine(layout.baseLineValue, layout.baseLineLabel || DEFAULT_BASE_LINE_LABEL, layout.fontStyle[FONT_STYLE_BASE_LINE_LABEL], FONT_STYLE_BASE_LINE_LABEL) : null,\n isNumber(layout.targetLineValue) ? getPlotLine(layout.targetLineValue, layout.targetLineLabel || DEFAULT_TARGET_LINE_LABEL, layout.fontStyle[FONT_STYLE_TARGET_LINE_LABEL], FONT_STYLE_TARGET_LINE_LABEL) : null\n ])\n const fillColor = (layout.legendDisplayStyle === LEGEND_DISPLAY_STYLE_FILL && legendSet) ? getColorByValueFromLegendSet(legendSet, series[0].data) : undefined\n return objectClean({\n min: isNumber(layout.rangeAxisMinValue) ? layout.rangeAxisMinValue : 0,\n max: isNumber(layout.rangeAxisMaxValue) ? layout.rangeAxisMaxValue : DEFAULT_MAX_VALUE,\n lineWidth: 0,\n minorTickInterval: null,\n tickLength: 0,\n tickAmount: 0,\n tickPositioner: function() {\n return [this.min, this.max];\n }, \n minColor: fillColor,\n maxColor: fillColor,\n labels: getLabels(layout.fontStyle[FONT_STYLE_SERIES_AXIS_LABELS]),\n title: {\n text: series[0].name,\n },\n ...(plotLines.length && {\n plotLines\n })\n })\n}\n","export const CUSTOM_AXES_DIMENSION_ITEM = 'dimensionItem'\nexport const CUSTOM_AXES_AXIS = 'axis'\n\n// returns:\n// {\n// a: 1,\n// b: 1,\n// }\nexport function getIdAxisMap(customAxes) {\n return customAxes.reduce((map, item) => {\n map[item[CUSTOM_AXES_DIMENSION_ITEM]] = item[CUSTOM_AXES_AXIS]\n return map\n }, {})\n}\n\nexport function getFullIdAxisMap(customAxes = [], series = []) {\n const idAxisMap = getIdAxisMap(customAxes.filter(axisItem => series.find(seriesItem => seriesItem.id === axisItem.dimensionItem)))\n\n // adds first axis ids to seriesAxisMap\n series.forEach(s => {\n if (!(s.id in idAxisMap)) {\n idAxisMap[s.id] = 0\n }\n })\n\n return idAxisMap\n}\n\n// returns:\n// {\n// 0: ['a', 'b'],\n// 1: ['c'],\n// }\nexport function getAxisIdsMap(customAxes, series) {\n const fullIdAxisMap = getFullIdAxisMap(customAxes, series)\n\n return Object.entries(fullIdAxisMap).reduce((map, [id, axis]) => {\n if (!(axis in map)) {\n map[axis] = []\n }\n\n map[axis].push(id)\n return map\n }, {})\n}\n","const AXIS_ID_PREFIX = 'AXIS_'\n\nexport const getAxisStringFromId = (id) => `${AXIS_ID_PREFIX}${id}`","import { hasRelativeItems } from '../relativeItems'\nimport { dimensionGetId } from './dimensionGetId'\nimport { dimensionGetItemIds } from './dimensionGetItemIds'\n\nexport const dimensionHasRelativeItems = dimension =>\n hasRelativeItems(dimensionGetId(dimension), dimensionGetItemIds(dimension))\n","import { dimensionHasRelativeItems } from './dimensionHasRelativeItems'\n\nexport const axisHasRelativeItems = axis =>\n axis.some(dimension => dimensionHasRelativeItems(dimension))\n","import i18n from '@dhis2/d2-i18n'\n\nimport arrayClean from 'd2-utilizr/lib/arrayClean'\nimport objectClean from 'd2-utilizr/lib/objectClean'\nimport isNumeric from 'd2-utilizr/lib/isNumeric'\nimport isString from 'd2-utilizr/lib/isString'\nimport getAxisTitle from '../getAxisTitle'\nimport getGauge from './gauge'\nimport {\n isStacked,\n VIS_TYPE_GAUGE,\n isDualAxisType,\n isVerticalType,\n} from '../../../../../modules/visTypes'\nimport { hasCustomAxes } from '../../../../../modules/axis'\nimport { getAxisIdsMap } from '../customAxes'\nimport { getAxisStringFromId } from '../../../../util/axisId'\nimport {\n FONT_STYLE_VERTICAL_AXIS_TITLE,\n FONT_STYLE_SERIES_AXIS_LABELS,\n FONT_STYLE_TARGET_LINE_LABEL,\n FONT_STYLE_BASE_LINE_LABEL,\n FONT_STYLE_OPTION_TEXT_COLOR,\n FONT_STYLE_OPTION_FONT_SIZE,\n FONT_STYLE_OPTION_BOLD,\n FONT_STYLE_OPTION_ITALIC,\n FONT_STYLE_OPTION_TEXT_ALIGN,\n TEXT_ALIGN_LEFT,\n TEXT_ALIGN_CENTER,\n TEXT_ALIGN_RIGHT,\n} from '../../../../../modules/fontStyle'\nimport { getTextAlignOption } from '../getTextAlignOption'\nimport { axisHasRelativeItems } from '../../../../../modules/layout/axisHasRelativeItems'\n\nconst DEFAULT_MIN_VALUE = 0\n\nconst DEFAULT_GRIDLINE_COLOR = '#E1E1E1'\n\nfunction getPlotLineStyle(fontStyle) {\n return {\n color: fontStyle[FONT_STYLE_OPTION_TEXT_COLOR] || '#000',\n width: 2,\n zIndex: 4,\n }\n}\n\nfunction getPlotLineLabelStyle(fontStyle) {\n return {\n y: -7,\n style: {\n color: fontStyle[FONT_STYLE_OPTION_TEXT_COLOR],\n fontSize: `${fontStyle[FONT_STYLE_OPTION_FONT_SIZE]}px`,\n fontWeight: fontStyle[FONT_STYLE_OPTION_BOLD]\n ? FONT_STYLE_OPTION_BOLD\n : 'normal',\n fontStyle: fontStyle[FONT_STYLE_OPTION_ITALIC]\n ? FONT_STYLE_OPTION_ITALIC\n : 'normal',\n },\n }\n}\n\nfunction getMinValue(layout) {\n return isNumeric(layout.rangeAxisMinValue)\n ? layout.rangeAxisMinValue\n : DEFAULT_MIN_VALUE\n}\n\nfunction getMaxValue(layout) {\n return isNumeric(layout.rangeAxisMaxValue)\n ? layout.rangeAxisMaxValue\n : undefined\n}\n\nfunction getSteps(layout) {\n return isNumeric(layout.rangeAxisSteps) ? layout.rangeAxisSteps : undefined\n}\n\nconst getLabelOffsetFromTextAlign = textAlign => {\n switch (textAlign) {\n case TEXT_ALIGN_LEFT:\n return 10\n case TEXT_ALIGN_RIGHT:\n return -10\n case TEXT_ALIGN_CENTER:\n default:\n return 0\n }\n}\n\nconst getLineLabelStyle = (fontStyle, fontStyleType, visType) => {\n const isVertical = isVerticalType(visType)\n const alignKey = isVertical ? 'verticalAlign' : 'align'\n const alignValue = getTextAlignOption(fontStyle, fontStyleType, visType)\n const offsetKey = isVertical ? 'y' : 'x'\n const offsetValue = getLabelOffsetFromTextAlign(fontStyle)\n\n const result = {[alignKey]: alignValue, [offsetKey]: offsetValue }\n if (isVertical) {\n result.align = getTextAlignOption(fontStyle, fontStyleType)\n }\n return result\n}\n\nfunction getTargetLine(layout) {\n const fontStyle = layout.fontStyle[FONT_STYLE_TARGET_LINE_LABEL]\n\n const plotLineStyle = getPlotLineStyle(fontStyle)\n const plotLineLabelStyle = getPlotLineLabelStyle(fontStyle)\n\n return isNumeric(layout.targetLineValue)\n ? Object.assign(\n {},\n plotLineStyle,\n objectClean({\n value: layout.targetLineValue,\n label: isString(layout.targetLineLabel)\n ? Object.assign({}, plotLineLabelStyle, {\n text: layout.targetLineLabel,\n ...getLineLabelStyle(fontStyle[FONT_STYLE_OPTION_TEXT_ALIGN], FONT_STYLE_BASE_LINE_LABEL, layout.type),\n })\n : undefined,\n })\n )\n : undefined\n}\n\nfunction getBaseLine(layout) {\n const fontStyle = layout.fontStyle[FONT_STYLE_BASE_LINE_LABEL]\n\n const plotLineStyle = getPlotLineStyle(fontStyle)\n const plotLineLabelStyle = getPlotLineLabelStyle(fontStyle)\n\n return isNumeric(layout.baseLineValue)\n ? Object.assign(\n {},\n plotLineStyle,\n objectClean({\n value: layout.baseLineValue,\n label: isString(layout.baseLineLabel)\n ? Object.assign({}, plotLineLabelStyle, {\n text: layout.baseLineLabel,\n ...getLineLabelStyle(fontStyle[FONT_STYLE_OPTION_TEXT_ALIGN], FONT_STYLE_BASE_LINE_LABEL, layout.type),\n })\n : undefined,\n })\n )\n : undefined\n}\n\nfunction getFormatter(layout) {\n return isNumeric(layout.rangeAxisDecimals)\n ? {\n formatter: function() {\n return this.value.toFixed(layout.rangeAxisDecimals)\n },\n }\n : {}\n}\n\nfunction getLabels(layout) {\n const fontStyle = layout.fontStyle[FONT_STYLE_SERIES_AXIS_LABELS]\n return {\n style: {\n color: fontStyle[FONT_STYLE_OPTION_TEXT_COLOR],\n fontSize: `${fontStyle[FONT_STYLE_OPTION_FONT_SIZE]}px`,\n fontWeight: fontStyle[FONT_STYLE_OPTION_BOLD]\n ? FONT_STYLE_OPTION_BOLD\n : 'normal',\n fontStyle: fontStyle[FONT_STYLE_OPTION_ITALIC]\n ? FONT_STYLE_OPTION_ITALIC\n : 'normal',\n },\n ...getFormatter(layout),\n }\n}\n\nfunction getMultipleAxes(theme, axes) {\n const axisObjects = []\n axes.forEach(axisId => {\n const id = Number(axisId)\n axisObjects.push({\n title: {\n text: i18n.t('Axis {{axisId}}', {\n axisId: id + 1,\n }),\n style: {\n color: theme[id].mainColor,\n 'font-weight': 700,\n },\n },\n id: getAxisStringFromId(id),\n opposite: !!(id % 2),\n })\n })\n return axisObjects\n}\n\nfunction getDefault(layout, series, extraOptions) {\n const axes = []\n const filteredSeries = layout.series?.filter(layoutSeriesItem =>\n series.some(\n seriesItem => seriesItem.id === layoutSeriesItem.dimensionItem\n )\n )\n if (isDualAxisType(layout.type) && hasCustomAxes(filteredSeries) && !axisHasRelativeItems(layout.columns)) {\n const axisIdsMap = getAxisIdsMap(layout.series, series)\n axes.push(\n ...getMultipleAxes(\n extraOptions.multiAxisTheme,\n [...new Set(Object.keys(axisIdsMap))].sort((a, b) => a - b)\n )\n )\n } else {\n axes.push(\n objectClean({\n min: getMinValue(layout),\n max: getMaxValue(layout),\n tickAmount: getSteps(layout),\n title: getAxisTitle(layout.rangeAxisLabel, layout.fontStyle[FONT_STYLE_VERTICAL_AXIS_TITLE], FONT_STYLE_VERTICAL_AXIS_TITLE, layout.type\n ),\n plotLines: arrayClean([\n getTargetLine(layout),\n getBaseLine(layout),\n ]),\n gridLineColor: DEFAULT_GRIDLINE_COLOR,\n labels: getLabels(layout),\n id: getAxisStringFromId(0),\n\n // DHIS2-649: put first serie at the bottom of the stack\n // in this way the legend sequence matches the serie sequence\n reversedStacks: isStacked(layout.type) ? false : true,\n })\n )\n }\n\n return axes\n}\n\nexport default function(layout, series, extraOptions) {\n let yAxis\n switch (layout.type) {\n case VIS_TYPE_GAUGE:\n yAxis = getGauge(layout, series, extraOptions.legendSets[0])\n break\n default:\n yAxis = getDefault(layout, series, extraOptions)\n }\n\n return yAxis\n}\n","import numberDecimals from 'd2-utilizr/lib/numberDecimals'\nimport { isTwoCategoryChartType } from '../../../../modules/visTypes'\nimport getTwoCategorySplitSerieData from './getTwoCategorySplitSerieData'\n\nfunction getDefaultCumulativeData(series) {\n let decimals = 0\n let cumulativeValues = []\n\n series.forEach(seriesObj => {\n cumulativeValues = seriesObj.data.reduce(\n (accumulator, value, index) => {\n decimals = Math.max(decimals, numberDecimals(value))\n\n if (index > 0) {\n value += accumulator[index - 1]\n }\n\n accumulator.push(value)\n\n return accumulator\n },\n []\n )\n\n // round values to the largest number of decimals found in the serie\n // this is to avoid the floating-point problems in JavaScript\n // the condition in the return statement is because sometimes value can be null\n seriesObj.data = cumulativeValues.map(value => {\n return value ? parseFloat(value.toFixed(decimals)) : value\n })\n\n decimals = 0\n })\n\n return series\n}\n\nfunction getTwoCategoryCumulativeData(series) {\n let decimals = 0\n\n series\n .filter(seriesObj => !seriesObj.custom.isTwoCategoryFakeSerie)\n .forEach(seriesObj => {\n const cumulativeValues = []\n\n seriesObj.custom.data.forEach(groupObj => {\n const cumulativeGroupValues = []\n\n groupObj.forEach((value, index) => {\n decimals = Math.max(decimals, numberDecimals(value))\n\n if (index > 0) {\n value += cumulativeGroupValues[index - 1]\n }\n\n cumulativeGroupValues.push(value)\n })\n\n cumulativeValues.push(cumulativeGroupValues)\n })\n\n // round values to the largest number of decimals found in the serie\n // this is to avoid the floating-point problems in JavaScript\n // the condition in the return statement is because sometimes value can be null\n seriesObj.custom.data = cumulativeValues.map(groupObj =>\n groupObj.map(value =>\n value ? parseFloat(value.toFixed(decimals)) : value\n )\n )\n\n seriesObj.data = getTwoCategorySplitSerieData(seriesObj.custom.data)\n\n decimals = 0\n })\n\n return series\n}\n\nexport default function(series, layout) {\n if (isTwoCategoryChartType(layout.type) && layout.rows.length > 1) {\n return getTwoCategoryCumulativeData(series)\n } else {\n return getDefaultCumulativeData(series)\n }\n}\n","export default function(series, colors) {\n return [\n {\n colorByPoint: true,\n allowPointSelect: true,\n cursor: 'pointer',\n data: series,\n colors: colors,\n dataLabels: {\n enabled: true,\n formatter: function() {\n return (\n '<span style=\"font-weight:normal\">' +\n this.point.name +\n '</span><br/>' +\n this.y +\n '<span style=\"font-weight:normal\"> (' +\n this.percentage.toFixed(1) +\n ' %)</span>'\n )\n },\n },\n tooltip: {\n headerFormat: '',\n pointFormat:\n '<span style=\"color:{point.color}\">\\u25CF</span> {point.name}: <b>{point.y}</b><br/>',\n },\n },\n ]\n}\n","import { colors } from '@dhis2/ui'\n\nimport {\n getColorByValueFromLegendSet,\n LEGEND_DISPLAY_STYLE_TEXT,\n} from '../../../../../modules/legends'\n\nconst DEFAULT_FONT_SIZE = '28px'\n\nexport default function(series, layout, legendSet) {\n return [\n {\n name: series[0].name,\n data: series[0].data,\n enableMouseTracking: false,\n dataLabels: {\n y: 0,\n borderWidth: 0,\n verticalAlign: 'bottom',\n style: {\n fontSize: DEFAULT_FONT_SIZE,\n color:\n layout.legendDisplayStyle ===\n LEGEND_DISPLAY_STYLE_TEXT && legendSet\n ? getColorByValueFromLegendSet(\n legendSet,\n series[0].data\n )\n : colors.grey900,\n },\n },\n },\n ]\n}\n","export const generateColors = (start, end, steps) => {\n if (!end || !steps || steps < 2) {\n return [start];\n }\n const stepFactor = 1 / (steps - 1),\n result = [];\n \n for (let step = 0; step < steps; step++) {\n const color1 = convertHexToRGB(start),\n color2 = convertHexToRGB(end),\n factor = stepFactor * step;\n \n const rgbArray = color1.slice();\n rgbArray.forEach(\n (part, index, array) =>\n (array[index] = Math.round(\n part + factor * (color2[index] - color1[index])\n ))\n );\n result.push(convertRGBToHex(rgbArray));\n }\n \n return result;\n };\n \n const convertRGBToHex = (rgb) =>\n \"#\" +\n ((1 << 24) + (rgb[0] << 16) + (rgb[1] << 8) + rgb[2]).toString(16).slice(1);\n \n const convertHexToRGB = (hex) =>\n hex\n .replace(/^#/, \"\")\n .match(/.{1,2}/g)\n .map((val) => parseInt(val, 16));\n ","import H from 'highcharts'\nimport HPF from 'highcharts/modules/pattern-fill'\n\nHPF(H)\n\nexport const COLOR_SET_DEFAULT = 'DEFAULT'\nexport const COLOR_SET_BRIGHT = 'BRIGHT'\nexport const COLOR_SET_DARK = 'DARK'\nexport const COLOR_SET_GRAY = 'GRAY'\nexport const COLOR_SET_COLOR_BLIND = 'COLOR_BLIND'\nexport const COLOR_SET_PATTERNS = 'PATTERNS'\n\nexport const colorSets = {\n [COLOR_SET_DEFAULT]: {\n colors: [\n '#a8bf24',\n '#518cc3',\n '#d74554',\n '#ff9e21',\n '#968f8f',\n '#ba3ba1',\n '#ffda54',\n '#45beae',\n '#b98037',\n '#676767',\n '#6b2dd4',\n '#47792c',\n '#fcbdbd',\n '#830000',\n '#a5ffc0',\n '#000078',\n '#817c00',\n '#bdf023',\n '#fffac4',\n ],\n },\n [COLOR_SET_BRIGHT]: {\n colors: [\n '#fd7f6f',\n '#8bd3c7',\n '#beb9db',\n '#7eb0d5',\n '#ffb55a',\n '#fdcce5',\n '#ffffaf',\n '#d9d9d9',\n '#bd7ebe',\n '#cbecc4',\n '#9fe778',\n '#ffef65',\n ],\n },\n [COLOR_SET_DARK]: {\n colors: [\n '#115688',\n '#207718',\n '#b51208',\n '#803d00',\n '#5e338a',\n '#078a7f',\n '#56a2cd',\n '#73b62f',\n '#db0606',\n '#e68a00',\n '#9e6fb3',\n '#aaad00',\n ],\n },\n [COLOR_SET_GRAY]: {\n colors: ['#cfcfcf', '#8f8782', '#414451', '#a5acaf', '#60636a'],\n },\n [COLOR_SET_COLOR_BLIND]: {\n colors: [\n '#cfcfcf',\n '#ffbc79',\n '#a2c8ec',\n '#898989',\n '#c85200',\n '#5f9ed1',\n '#595959',\n '#ababab',\n '#ff800e',\n '#006ba4',\n ],\n },\n [COLOR_SET_PATTERNS]: {\n patterns: H.patterns,\n },\n}\n","import { colors } from '@dhis2/ui'\n\nimport getCumulativeData from '../getCumulativeData'\nimport getPie from './pie'\nimport getGauge from './gauge'\nimport getType from '../type'\nimport { getFullIdAxisMap, getAxisIdsMap } from '../customAxes'\nimport { generateColors } from '../../../../util/colors/gradientColorGenerator'\nimport {\n colorSets,\n COLOR_SET_PATTERNS,\n} from '../../../../util/colors/colorSets'\nimport {\n VIS_TYPE_PIE,\n VIS_TYPE_GAUGE,\n isDualAxisType,\n isYearOverYear,\n VIS_TYPE_LINE,\n} from '../../../../../modules/visTypes'\nimport { hasCustomAxes } from '../../../../../modules/axis'\nimport { getAxisStringFromId } from '../../../../util/axisId'\nimport { axisHasRelativeItems } from '../../../../../modules/layout/axisHasRelativeItems'\n\nconst DEFAULT_ANIMATION_DURATION = 200\n\nconst HIGHCHARTS_TYPE_COLUMN = 'column'\nconst HIGHCHARTS_TYPE_BAR = 'bar'\nconst HIGHCHARTS_TYPE_PERCENT = 'percent'\nconst HIGHCHARTS_TYPE_NORMAL = 'normal'\n\nconst INCREASED_Z_INDEX = 1\n\nconst epiCurveTypes = [HIGHCHARTS_TYPE_COLUMN, HIGHCHARTS_TYPE_BAR]\n\nfunction getAnimation(option, fallback) {\n return typeof option === 'number' ? option : fallback\n}\n\nfunction getColor(colors, index) {\n return colors[index] || getColor(colors, index - colors.length)\n}\n\nfunction getPatternIndex(index) {\n return index < 10 ? index : getPatternIndex(index - 10)\n}\n\nfunction getIndexColorPatternMap(series, layout, extraOptions) {\n const colors = colorSets[layout.colorSet]?.colors || extraOptions.colors\n\n return series.reduce((map, s, index) => {\n map[index] =\n layout.colorSet === COLOR_SET_PATTERNS\n ? { patternIndex: getPatternIndex(index) }\n : getColor(colors, index)\n return map\n }, {})\n}\n\nfunction getIdColorMap(series, layout, extraOptions) {\n const filteredSeries = layout.series?.filter(layoutSeriesItem =>\n series.some(\n seriesItem => seriesItem.id === layoutSeriesItem.dimensionItem\n )\n )\n\n if (isDualAxisType(layout.type) && hasCustomAxes(filteredSeries) && !axisHasRelativeItems(layout.columns)) {\n const axisIdsMap = getAxisIdsMap(layout.series, series)\n const theme = extraOptions.multiAxisTheme\n\n const colorsByAxis = Object.keys(axisIdsMap).reduce((map, axis) => {\n const numberOfIds = axisIdsMap[axis].length\n map[axis] =\n numberOfIds > 1\n ? generateColors(\n theme[axis].startColor,\n theme[axis].endColor,\n numberOfIds\n )\n : [theme[axis].mainColor]\n return map\n }, {})\n\n return Object.keys(colorsByAxis).reduce((map, axis) => {\n const colors = colorsByAxis[axis]\n const ids = axisIdsMap[axis]\n\n ids.forEach((id, index) => {\n map[id] = colors[index]\n })\n\n return map\n }, {})\n } else {\n const indexColorPatternMap = getIndexColorPatternMap(\n series,\n layout,\n extraOptions\n )\n\n return series.reduce((map, s, index) => {\n map[s.id] = indexColorPatternMap[index]\n return map\n }, {})\n }\n}\n\nfunction getDefault(series, layout, isStacked, extraOptions) {\n const fullIdAxisMap = getFullIdAxisMap(layout.series, series)\n const idColorMap = getIdColorMap(series, layout, extraOptions)\n const indexColorPatternMap = getIndexColorPatternMap(\n series,\n layout,\n extraOptions\n )\n\n series.forEach((seriesObj, index) => {\n // show values\n if (!seriesObj.dataLabels && (layout.showValues || layout.showData)) {\n seriesObj.dataLabels = {\n enabled: true,\n color: colors.grey900\n }\n }\n\n // stacked\n if (isStacked && !seriesObj?.custom?.isTwoCategoryFakeSerie) {\n // DHIS2-1060: stacked charts can optionally be shown as 100% stacked charts\n if (layout.percentStackedValues === true) {\n seriesObj.stacking = HIGHCHARTS_TYPE_PERCENT\n seriesObj.connectNulls = false\n } else {\n seriesObj.stacking = HIGHCHARTS_TYPE_NORMAL\n }\n }\n\n const matchedObject = layout.series?.find(\n item => item.dimensionItem === seriesObj.id\n )\n\n if (matchedObject && !axisHasRelativeItems(layout.columns)) {\n // Checks if the item has custom options\n if (matchedObject.type) {\n seriesObj.type = getType(matchedObject.type).type\n\n if (matchedObject.type === VIS_TYPE_LINE) {\n seriesObj.zIndex = INCREASED_Z_INDEX // Custom options, item type Line\n }\n } else if (layout.type === VIS_TYPE_LINE) {\n seriesObj.zIndex = INCREASED_Z_INDEX // Custom options, no item type, visType Line\n }\n } else if (layout.type === VIS_TYPE_LINE) {\n seriesObj.zIndex = INCREASED_Z_INDEX // No custom options, visType Line\n }\n\n // DHIS2-2101\n // show bar/column chart as EPI curve (basically remove spacing between bars/columns)\n if (\n layout.noSpaceBetweenColumns &&\n epiCurveTypes.includes(getType(layout.type).type)\n ) {\n seriesObj.pointPadding = 0\n seriesObj.groupPadding = 0\n }\n\n // color\n seriesObj.color = isYearOverYear(layout.type)\n ? indexColorPatternMap[index]\n : idColorMap[seriesObj.id]\n\n // axis number\n seriesObj.yAxis = isDualAxisType(layout.type) && !axisHasRelativeItems(layout.columns)\n ? getAxisStringFromId(fullIdAxisMap[seriesObj.id])\n : getAxisStringFromId(0)\n\n // custom names for \"year over year\" series\n if (extraOptions.yearlySeries) {\n seriesObj.name = extraOptions.yearlySeries[index]\n }\n })\n\n // DHIS2-701: use cumulative values\n if (layout.cumulativeValues === true) {\n series = getCumulativeData(series, layout)\n }\n\n return series\n}\n\nexport default function(series, store, layout, isStacked, extraOptions) {\n switch (layout.type) {\n case VIS_TYPE_PIE:\n series = getPie(\n series,\n Object.values(getIdColorMap(series, layout, extraOptions))\n )\n break\n case VIS_TYPE_GAUGE:\n series = getGauge(series, layout, extraOptions.legendSets[0])\n break\n default:\n series = getDefault(series, layout, isStacked, extraOptions)\n }\n\n series.forEach(seriesObj => {\n // animation\n seriesObj.animation = {\n duration: getAnimation(\n extraOptions.animation,\n DEFAULT_ANIMATION_DURATION\n ),\n }\n })\n\n return series\n}\n","import getFilterText from '../../../../util/getFilterText'\n\nexport default function(layout, metaData, dashboard) {\n const titleFragments = []\n\n if (layout.columns && layout.columns.length && !dashboard) {\n titleFragments.push(getFilterText(layout.columns, metaData))\n }\n\n if (layout.filters && layout.filters.length && !dashboard) {\n titleFragments.push(getFilterText(layout.filters, metaData))\n }\n\n return titleFragments.length ? titleFragments.join(' - ') : null\n}\n","import isString from 'd2-utilizr/lib/isString'\nimport getFilterText from '../../../../util/getFilterText'\nimport {\n VIS_TYPE_YEAR_OVER_YEAR_LINE,\n VIS_TYPE_YEAR_OVER_YEAR_COLUMN,\n VIS_TYPE_GAUGE,\n} from '../../../../../modules/visTypes'\nimport getYearOverYearTitle from './yearOverYear'\nimport { \n FONT_STYLE_OPTION_ITALIC, \n FONT_STYLE_OPTION_BOLD, \n FONT_STYLE_OPTION_TEXT_COLOR,\n FONT_STYLE_OPTION_FONT_SIZE,\n FONT_STYLE_OPTION_TEXT_ALIGN,\n FONT_STYLE_VISUALIZATION_TITLE\n } from '../../../../../modules/fontStyle'\nimport { getTextAlignOption } from '../getTextAlignOption'\n\nconst DASHBOARD_TITLE_STYLE = {\n margin: 15,\n y: 12,\n style: {\n fontSize: '13px',\n fontWeight: 'bold',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n },\n}\n\nfunction getDefault(layout, metaData, dashboard) {\n // filters\n if (layout.filters && !dashboard) {\n return getFilterText(layout.filters, metaData)\n }\n\n return null\n}\n\nexport default function(layout, metaData, dashboard) {\n const fontStyle = layout.fontStyle && layout.fontStyle[FONT_STYLE_VISUALIZATION_TITLE]\n \n const title = {\n text: undefined,\n }\n\n if (layout.hideTitle) {\n return title\n }\n\n if (isString(layout.title) && layout.title.length) {\n title.text = layout.title\n } else {\n switch (layout.type) {\n case VIS_TYPE_GAUGE:\n case VIS_TYPE_YEAR_OVER_YEAR_LINE:\n case VIS_TYPE_YEAR_OVER_YEAR_COLUMN:\n title.text = getYearOverYearTitle(layout, metaData, dashboard)\n break\n default:\n title.text = getDefault(layout, metaData, dashboard)\n break\n }\n }\n\n return Object.assign(\n {},\n dashboard ? DASHBOARD_TITLE_STYLE : {\n margin: 30,\n align: (getTextAlignOption(fontStyle[FONT_STYLE_OPTION_TEXT_ALIGN], FONT_STYLE_VISUALIZATION_TITLE, layout.type)),\n style: {\n color: fontStyle[FONT_STYLE_OPTION_TEXT_COLOR],\n fontSize: `${fontStyle[FONT_STYLE_OPTION_FONT_SIZE]}px`,\n fontWeight: fontStyle[FONT_STYLE_OPTION_BOLD] ? FONT_STYLE_OPTION_BOLD : 'normal',\n fontStyle: fontStyle[FONT_STYLE_OPTION_ITALIC] ? FONT_STYLE_OPTION_ITALIC : 'normal',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n },\n },\n title\n )\n}\n","import isString from 'd2-utilizr/lib/isString'\nimport getFilterText from '../../../../util/getFilterText'\nimport {\n VIS_TYPE_YEAR_OVER_YEAR_LINE,\n VIS_TYPE_YEAR_OVER_YEAR_COLUMN,\n} from '../../../../../modules/visTypes'\nimport getYearOverYearTitle from '../title/yearOverYear'\nimport { \n FONT_STYLE_OPTION_ITALIC, \n FONT_STYLE_OPTION_BOLD, \n FONT_STYLE_OPTION_TEXT_COLOR,\n FONT_STYLE_OPTION_FONT_SIZE,\n FONT_STYLE_OPTION_TEXT_ALIGN,\n FONT_STYLE_VISUALIZATION_SUBTITLE\n } from '../../../../../modules/fontStyle'\nimport { getTextAlignOption } from '../getTextAlignOption'\n\nconst DASHBOARD_SUBTITLE = {\n style: {\n // DHIS2-578: dynamically truncate subtitle when it's taking more than 1 line\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n fontSize: '12px',\n color: '#555',\n textShadow: '0 0 #999',\n },\n}\n\nfunction getDefault(layout, dashboard, filterTitle) {\n return {\n text: dashboard || isString(layout.title) ? filterTitle : undefined,\n }\n}\n\nexport default function(series, layout, metaData, dashboard) {\n const fontStyle = layout.fontStyle && layout.fontStyle[FONT_STYLE_VISUALIZATION_SUBTITLE]\n let subtitle = {\n text: undefined,\n }\n\n if (layout.hideSubtitle) {\n return null\n }\n\n // DHIS2-578: allow for optional custom subtitle\n if (isString(layout.subtitle)) {\n subtitle.text = layout.subtitle\n } else {\n const filterTitle = getFilterText(layout.filters, metaData)\n\n switch (layout.type) {\n case VIS_TYPE_YEAR_OVER_YEAR_LINE:\n case VIS_TYPE_YEAR_OVER_YEAR_COLUMN:\n subtitle.text = getYearOverYearTitle(\n layout,\n metaData,\n Boolean(!dashboard)\n )\n break\n default:\n subtitle = getDefault(layout, dashboard, filterTitle)\n }\n }\n\n return subtitle\n ? Object.assign(\n {},\n dashboard ? DASHBOARD_SUBTITLE : {\n align: (getTextAlignOption(fontStyle[FONT_STYLE_OPTION_TEXT_ALIGN], FONT_STYLE_VISUALIZATION_SUBTITLE, layout.type)),\n style: {\n // DHIS2-578: dynamically truncate subtitle when it's taking more than 1 line\n color: fontStyle[FONT_STYLE_OPTION_TEXT_COLOR],\n fontSize: `${fontStyle[FONT_STYLE_OPTION_FONT_SIZE]}px`,\n fontWeight: fontStyle[FONT_STYLE_OPTION_BOLD] ? FONT_STYLE_OPTION_BOLD : 'normal',\n fontStyle: fontStyle[FONT_STYLE_OPTION_ITALIC] ? FONT_STYLE_OPTION_ITALIC : 'normal',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n },\n },\n subtitle\n )\n : subtitle\n}\n","\nimport { \n FONT_STYLE_OPTION_FONT_SIZE, \n FONT_STYLE_OPTION_TEXT_COLOR,\n FONT_STYLE_OPTION_BOLD ,\n FONT_STYLE_OPTION_ITALIC,\n FONT_STYLE_OPTION_TEXT_ALIGN,\n FONT_STYLE_LEGEND,\n} from '../../../../modules/fontStyle'\nimport { getTextAlignOption } from './getTextAlignOption'\n\nconst DASHBOARD_ITEM_STYLE = {\n fontSize: '11px',\n fontWeight: 500,\n}\n\nconst DASHBOARD_LEGEND = {\n symbolPadding: 3,\n itemDistance: 10,\n}\n\nfunction getItemStyle(fontStyle, dashboard) {\n return {\n itemStyle: Object.assign(\n {},\n {\n fontSize: '13px',\n fontWeight: 'normal',\n },\n dashboard ? DASHBOARD_ITEM_STYLE : {\n color: fontStyle[FONT_STYLE_OPTION_TEXT_COLOR],\n fontSize: `${fontStyle[FONT_STYLE_OPTION_FONT_SIZE]}px`,\n fontWeight: fontStyle[FONT_STYLE_OPTION_BOLD] ? FONT_STYLE_OPTION_BOLD : 'normal',\n fontStyle: fontStyle[FONT_STYLE_OPTION_ITALIC] ? FONT_STYLE_OPTION_ITALIC : 'normal'\n }\n ),\n }\n}\n\nfunction getLegend(fontStyle, dashboard, visType) {\n return Object.assign(\n {},\n {\n symbolWidth: 11,\n symbolHeight: 11,\n itemMarginBottom: 2,\n },\n dashboard ? DASHBOARD_LEGEND : {\n align: (getTextAlignOption(fontStyle[FONT_STYLE_OPTION_TEXT_ALIGN], FONT_STYLE_LEGEND, visType)),\n }\n )\n}\n\nexport default function(layout, dashboard) {\n const fontStyle = layout.fontStyle[FONT_STYLE_LEGEND]\n return layout.hideLegend\n ? {\n enabled: false,\n }\n : Object.assign({}, getLegend(fontStyle, dashboard, layout.type), getItemStyle(fontStyle, dashboard))\n}\n","const DEFAULT_PANE_SIZE = '100%'\n\nexport default function() {\n return {\n center: ['50%', '85%'],\n size: DEFAULT_PANE_SIZE,\n startAngle: -90,\n endAngle: 90,\n background: {\n backgroundColor: '#F1F1F1',\n innerRadius: '60%',\n outerRadius: '100%',\n shape: 'arc',\n },\n }\n}\n","import getGauge from './gauge'\nimport { VIS_TYPE_GAUGE } from '../../../../../modules/visTypes'\n\nexport default function(type) {\n switch (type) {\n case VIS_TYPE_GAUGE:\n return getGauge()\n default:\n return undefined\n }\n}\n","export default function() {\n return {\n style: {\n fontSize: '13px',\n fontWeight: 'normal',\n },\n }\n}\n","import { isTwoCategoryChartType } from '../../../../modules/visTypes'\n\nexport default function(series, layout) {\n if (isTwoCategoryChartType(layout.type) && layout.rows.length > 1) {\n return getTwoCategoryStackedData(series)\n } else {\n return getDefaultStackedData(series)\n }\n}\n\nfunction getDefaultStackedData(series, isZeroAsNull) {\n return series[0].data\n .map((value, index) => {\n return series.reduce((total, obj) => {\n return total + obj.data[index]\n }, 0)\n })\n .map(value => (isZeroAsNull && value === 0 ? null : value))\n}\n\nfunction getTwoCategoryStackedData(series) {\n return series[0].custom.data.map((groupObj, groupIndex) => {\n return groupObj.map((value, index) => {\n return series\n .filter(serieObj => !serieObj.custom.isTwoCategoryFakeSerie)\n .reduce((total, serieObj) => {\n return total + serieObj.custom.data[groupIndex][index]\n }, 0)\n })\n })\n}\n","import arrayPluck from 'd2-utilizr/lib/arrayPluck'\nimport arraySort from 'd2-utilizr/lib/arraySort'\nimport getStackedData from './getStackedData'\nimport { isTwoCategoryChartType } from '../../../../modules/visTypes'\nimport getTwoCategorySplitSerieData from './getTwoCategorySplitSerieData'\n\nconst sortOrderMap = new Map([\n [-1, 'ASC'],\n [1, 'DESC'],\n])\n\nfunction getIndexOrder(dataToBeSorted, layout) {\n const dataObjectsToBeSorted = dataToBeSorted.map((value, index) => ({\n index,\n value,\n }))\n\n const direction = sortOrderMap.get(layout.sortOrder)\n\n arraySort(dataObjectsToBeSorted, direction, 'value')\n\n return arrayPluck(dataObjectsToBeSorted, 'index')\n}\n\nfunction getTwoCategorySortedConfig(config, layout, stacked) {\n const series = config.series\n const sortedConfig = Object.assign({}, config)\n\n const stackedData = getStackedData(series, layout)\n const indexOrder = []\n\n // loop through serie groups\n sortedConfig.series = series.map((seriesObj, seriesIndex) => {\n if (seriesObj.custom.isTwoCategoryFakeSerie) {\n return seriesObj\n } else {\n seriesObj.custom.data = seriesObj.custom.data.map(\n (groupObj, groupIndex) => {\n // sorting index computed on 1st serie data\n if (seriesIndex === 0) {\n indexOrder[groupIndex] = getIndexOrder(\n stacked ? stackedData[groupIndex] : groupObj,\n layout\n )\n\n // reorder 2nd category labels only once\n // based on the 1st serie group ordering\n const groupCategoryLabels =\n config.xAxis[0].categories[groupIndex]\n\n sortedConfig.xAxis[0].categories[\n groupIndex\n ] = groupCategoryLabels.map(\n (value, index) =>\n groupCategoryLabels[\n indexOrder[groupIndex][index]\n ]\n )\n }\n\n return groupObj.map(\n (value, index) =>\n groupObj[indexOrder[groupIndex][index]]\n )\n }\n )\n\n seriesObj.data = getTwoCategorySplitSerieData(seriesObj.custom.data)\n\n return seriesObj\n }\n })\n\n return sortedConfig\n}\n\nfunction getDefaultSortedConfig(config, layout, stacked) {\n const categories = config.xAxis?.length && config.xAxis[0].categories\n const series = config.series\n const indexOrder = getIndexOrder(\n stacked ? getStackedData(series, layout) : series[0].data,\n layout\n )\n const sortedConfig = Object.assign({}, config)\n\n if (categories) {\n sortedConfig.xAxis[0].categories = indexOrder.map(\n index => categories[index]\n )\n }\n\n sortedConfig.series = series.map(seriesObj => ({\n ...seriesObj,\n data: seriesObj.data.map(\n (value, index) => seriesObj.data[indexOrder[index]]\n ),\n }))\n\n return sortedConfig\n}\n\nexport default function(config, layout, stacked) {\n if (isTwoCategoryChartType(layout.type) && layout.rows.length > 1) {\n return getTwoCategorySortedConfig(config, layout, stacked)\n } else {\n return getDefaultSortedConfig(config, layout, stacked)\n }\n}\n","import arrayContains from 'd2-utilizr/lib/arrayContains'\nimport arrayUnique from 'd2-utilizr/lib/arrayUnique'\nimport { isTwoCategoryChartType } from '../../../../modules/visTypes'\nimport getTwoCategorySplitSerieData from './getTwoCategorySplitSerieData'\n\nfunction arrayCleanUndefined(array) {\n return array.filter(item => item !== undefined)\n}\n\nfunction arrayNullsOnly(array) {\n return arrayContains(array, null) && arrayUnique(array).length === 1\n}\n\nfunction getEmptySeriesIndexes(series) {\n const emptyIndexes = []\n let seriesValues\n\n series[0].data.forEach((value, index) => {\n seriesValues = []\n\n series.forEach(seriesObj => {\n seriesValues.push(seriesObj.data[index])\n })\n\n if (arrayNullsOnly(seriesValues)) {\n emptyIndexes.push(index)\n }\n })\n\n return emptyIndexes\n}\n\nfunction getFirstLastValueIndexes(series) {\n let firstValueIndex = undefined\n let lastValueIndex = 0\n let data\n let i\n\n series.forEach(seriesObj => {\n // make a copy of the array so we can reverse it\n // without affecting the original\n data = seriesObj.data.slice()\n\n i = data.findIndex(value => value !== undefined && value !== null)\n\n if (i > -1) {\n firstValueIndex =\n firstValueIndex !== undefined ? Math.min(firstValueIndex, i) : i\n }\n\n i = data\n .reverse()\n .findIndex(value => value !== undefined && value !== null)\n\n if (i > -1) {\n lastValueIndex = Math.max(lastValueIndex, data.length - 1 - i)\n }\n })\n\n return { firstValueIndex, lastValueIndex }\n}\n\nfunction cleanData(\n data,\n emptySeriesIndexes,\n firstValueIndex,\n lastValueIndex,\n hideEmptyRowItems\n) {\n let cleanedData\n\n switch (hideEmptyRowItems) {\n case 'ALL':\n cleanedData = arrayCleanUndefined(\n data.map((value, index) =>\n arrayContains(emptySeriesIndexes, index) ? undefined : value\n )\n )\n break\n case 'BEFORE_FIRST':\n cleanedData = data.slice(firstValueIndex)\n break\n case 'AFTER_LAST':\n cleanedData = data.slice(0, lastValueIndex + 1)\n break\n case 'BEFORE_FIRST_AFTER_LAST':\n cleanedData = data.slice(firstValueIndex, lastValueIndex + 1)\n break\n default:\n cleanedData = data\n }\n\n return cleanedData\n}\n\nexport default function(config, layout) {\n if (isTwoCategoryChartType(layout.type) && layout.rows.length > 1) {\n return getTwoCategoryTrimmedConfig(config, layout)\n } else {\n return getDefaultTrimmedConfig(config, layout)\n }\n}\n\nfunction getEmptySeriesGroupIndexes(series) {\n const emptyGroupIndexes = []\n\n series[0].custom.data.forEach((groupObj, groupIndex) => {\n const seriesGroupValues = []\n\n groupObj.forEach((_, index) =>\n series.forEach(seriesObj =>\n seriesGroupValues.push(seriesObj.custom.data[groupIndex][index])\n )\n )\n\n if (arrayNullsOnly(seriesGroupValues)) {\n emptyGroupIndexes.push(groupIndex)\n }\n })\n\n return emptyGroupIndexes\n}\n\nfunction getFirstLastGroupWithValuesIndexes(series) {\n let firstGroupWithValuesIndex = undefined\n let lastGroupWithValuesIndex = 0\n\n series.forEach(seriesObj => {\n // make a copy of the groups array so we can reverse it\n // without affecting the original\n const groups = seriesObj.custom.data.slice()\n\n groups.forEach((groupObj, groupIndex) => {\n if (groupObj.some(value => value !== undefined && value !== null)) {\n firstGroupWithValuesIndex =\n firstGroupWithValuesIndex !== undefined\n ? Math.min(firstGroupWithValuesIndex, groupIndex)\n : groupIndex\n }\n })\n\n groups.reverse().forEach((groupObj, groupIndex) => {\n if (groupObj.some(value => value !== undefined && value !== null)) {\n lastGroupWithValuesIndex = Math.max(\n lastGroupWithValuesIndex,\n groups.length - 1 - groupIndex\n )\n }\n })\n })\n\n return { firstGroupWithValuesIndex, lastGroupWithValuesIndex }\n}\n\nfunction getTwoCategoryTrimmedConfig(config, layout) {\n const filteredSeries = config.series.filter(\n serieObj => !serieObj.custom.isTwoCategoryFakeSerie\n )\n const emptyGroupIndexes = getEmptySeriesGroupIndexes(filteredSeries)\n\n if (emptyGroupIndexes.length && config.xAxis && config.series) {\n const {\n firstGroupWithValuesIndex,\n lastGroupWithValuesIndex,\n } = getFirstLastGroupWithValuesIndexes(filteredSeries)\n\n const trimmedSeries = config.series.map(seriesObj => {\n if (seriesObj.custom.isTwoCategoryFakeSerie) {\n seriesObj.data = cleanData(\n seriesObj.data,\n emptyGroupIndexes,\n firstGroupWithValuesIndex,\n lastGroupWithValuesIndex,\n layout.hideEmptyRowItems\n )\n } else {\n seriesObj.custom.data = cleanData(\n seriesObj.custom.data,\n emptyGroupIndexes,\n firstGroupWithValuesIndex,\n lastGroupWithValuesIndex,\n layout.hideEmptyRowItems\n )\n\n seriesObj.data = getTwoCategorySplitSerieData(\n seriesObj.custom.data\n )\n }\n\n return seriesObj\n })\n\n const trimmedXAxis = config.xAxis.map(xAxis => {\n xAxis.categories = cleanData(\n xAxis.categories,\n emptyGroupIndexes,\n firstGroupWithValuesIndex,\n lastGroupWithValuesIndex,\n layout.hideEmptyRowItems\n )\n\n return xAxis\n })\n\n return Object.assign({}, config, {\n series: trimmedSeries,\n xAxis: trimmedXAxis,\n })\n } else {\n return config\n }\n}\n\nfunction getDefaultTrimmedConfig(config, layout) {\n const emptySeriesIndexes = getEmptySeriesIndexes(config.series)\n\n if (emptySeriesIndexes.length && config.xAxis && config.series) {\n const { firstValueIndex, lastValueIndex } = getFirstLastValueIndexes(\n config.series\n )\n const trimmedSeries = config.series.map(seriesObj => ({\n ...seriesObj,\n data: cleanData(\n seriesObj.data,\n emptySeriesIndexes,\n firstValueIndex,\n lastValueIndex,\n layout.hideEmptyRowItems\n ),\n }))\n\n const trimmedXAxis = [\n {\n ...config.xAxis,\n categories: cleanData(\n config.xAxis[0].categories,\n emptySeriesIndexes,\n firstValueIndex,\n lastValueIndex,\n layout.hideEmptyRowItems\n ),\n },\n ]\n\n return Object.assign({}, config, {\n series: trimmedSeries,\n xAxis: trimmedXAxis,\n })\n } else {\n return config\n }\n}\n","import arrayContains from 'd2-utilizr/lib/arrayContains'\nimport { rgb } from 'd3-color'\n\nimport { colorSets, COLOR_SET_PATTERNS } from '../../../util/colors/colorSets'\nimport getStackedData from './getStackedData'\nimport {\n VIS_TYPE_GAUGE,\n VIS_TYPE_PIE,\n isTwoCategoryChartType,\n} from '../../../../modules/visTypes'\n\nconst DEFAULT_TRENDLINE = {\n type: 'spline',\n name: 'Trend',\n dashStyle: 'solid',\n color: '#333',\n lineWidth: 1,\n marker: {\n enabled: false,\n symbol: 'circle',\n radius: 2,\n },\n}\n\nexport const isRegressionIneligible = type =>\n arrayContains([VIS_TYPE_GAUGE, VIS_TYPE_PIE], type)\n\nexport default function(layout, series, isStacked) {\n if (isTwoCategoryChartType(layout.type) && layout.rows.length > 1) {\n return getTwoCategoryTrendLines(layout, series, isStacked)\n } else {\n return getDefaultTrendLines(layout, series, isStacked)\n }\n}\n\nfunction getDefaultTrendLines(layout, series, isStacked) {\n const newSeries = []\n\n if (isStacked) {\n newSeries.push(\n ...series,\n Object.assign(\n {},\n getRegressionObj(\n getStackedData(series, layout),\n layout.regressionType\n )\n )\n )\n } else {\n series.forEach(seriesObj => {\n newSeries.push(\n seriesObj,\n Object.assign(\n {},\n getRegressionObj(seriesObj.data, layout.regressionType),\n {\n name: seriesObj.name + ' (trend)',\n color: getDarkerColor(seriesObj.color),\n }\n )\n )\n })\n }\n\n return newSeries\n}\n\nfunction getTwoCategoryTrendlineConfig(\n groupObj,\n groupIndex,\n groupRegressionObject,\n regressionType,\n trendlineId\n) {\n const trendlineConfig = getRegressionObj(groupObj, regressionType)\n\n groupRegressionObject.splice(\n groupIndex * groupObj.length,\n groupObj.length,\n ...trendlineConfig.data.map(point => point[1])\n )\n\n trendlineConfig.data = groupRegressionObject\n\n // link trendlines\n // so only 1 label in the legend is shown and all linked trendlines\n // can be toggled simultaneously\n if (groupIndex === 0) {\n trendlineConfig.id = trendlineId\n } else {\n trendlineConfig.linkedTo = trendlineId\n }\n\n return trendlineConfig\n}\n\nfunction getTwoCategoryTrendLines(layout, series, isStacked) {\n const newSeries = []\n\n if (isStacked) {\n newSeries.push(...series)\n\n const stackedData = getStackedData(series, layout)\n\n const groupRegressionTemplate = Array.from(\n { length: stackedData.flat().length },\n () => null\n )\n\n stackedData.forEach((groupObj, groupIndex) => {\n const trendlineConfig = getTwoCategoryTrendlineConfig(\n groupObj,\n groupIndex,\n groupRegressionTemplate.slice(),\n layout.regressionType,\n 'trendline-stacked'\n )\n\n newSeries.push(trendlineConfig)\n })\n } else {\n series.forEach(seriesObj => {\n const trendlineSerieId = `trendline-${seriesObj.id}`\n\n newSeries.push(seriesObj)\n\n if (!seriesObj.custom.isTwoCategoryFakeSerie) {\n const groupRegressionTemplate = Array.from(\n { length: seriesObj.custom.data.flat().length },\n () => null\n )\n\n seriesObj.custom.data.forEach((groupObj, groupIndex) => {\n const trendlineConfig = getTwoCategoryTrendlineConfig(\n groupObj,\n groupIndex,\n groupRegressionTemplate.slice(),\n layout.regressionType,\n trendlineSerieId\n )\n\n newSeries.push(\n Object.assign({}, trendlineConfig, {\n name: seriesObj.name + ' (trend)',\n color: getDarkerColor(seriesObj.color),\n })\n )\n })\n }\n })\n }\n\n return newSeries\n}\n\nfunction getDarkerColor(color) {\n // For patterns, color is an object containing patternIndex.\n // patternIndex can be 0, thus the need to check for the presence of the key in the object.\n // The actual color code needs to be extracted for the the Highcharts pattern definition.\n if (Object.prototype.hasOwnProperty.call(color, 'patternIndex')) {\n const colorSetPatterns = colorSets[COLOR_SET_PATTERNS].patterns\n color =\n colorSetPatterns[color.patternIndex].color ||\n DEFAULT_TRENDLINE.color\n }\n\n return rgb(color)\n .darker(0.5)\n .toString()\n}\n\nfunction getRegressionData(data) {\n return data.map((value, index) => {\n return [index, value]\n })\n}\n\nfunction getRegressionObj(data, regressionType) {\n // LINEAR:\n // - decimalPlaces (default = 2)\n // LOESS:\n // - loessSmooth (default = 25)\n // POLYNOMIAL:\n // - order (default = 2)\n // - extrapolate (default = 0)\n // - decimalPlaces (default = 2)\n\n let regression\n const regressionTypeOptions = {}\n const regressionData = getRegressionData(data)\n\n switch (regressionType) {\n case 'POLYNOMIAL':\n // polynomial(data, order, extrapolate)\n // min 2 data points for this regression to work\n if (regressionData.length > 1) {\n regression = polynomial(regressionData)\n } else {\n regression = { points: [] }\n }\n\n break\n case 'LOESS':\n // loess(data, smoothing)\n regression = loess(regressionData, 0.25)\n break\n case 'LINEAR':\n default:\n // linear(data, decimalPlaces)\n regression = linear(regressionData)\n regressionTypeOptions.type = 'line'\n break\n }\n\n return Object.assign({}, DEFAULT_TRENDLINE, regressionTypeOptions, {\n data: regression.points,\n })\n}\n\n// Code extracted from https://github.com/Tom-Alexander/regression-js/\nfunction gaussianElimination(a, o) {\n let maxrow = 0,\n tmp = 0\n const n = a.length - 1,\n x = new Array(o)\n\n for (let i = 0; i < n; i++) {\n maxrow = i\n\n for (let j = i + 1; j < n; j++) {\n if (Math.abs(a[i][j]) > Math.abs(a[i][maxrow])) {\n maxrow = j\n }\n }\n\n for (let k = i; k < n + 1; k++) {\n tmp = a[k][i]\n a[k][i] = a[k][maxrow]\n a[k][maxrow] = tmp\n }\n\n for (let j = i + 1; j < n; j++) {\n for (let k = n; k >= i; k--) {\n a[k][j] -= (a[k][i] * a[i][j]) / a[i][i]\n }\n }\n }\n\n for (let j = n - 1; j >= 0; j--) {\n tmp = 0\n\n for (let k = j + 1; k < n; k++) {\n tmp += a[k][j] * x[k]\n }\n\n x[j] = (a[n][j] - tmp) / a[j][j]\n }\n\n return x\n}\n\n// Code extracted from https://github.com/Tom-Alexander/regression-js/\n// Human readable formulas:\n//\n// N * Σ(XY) - Σ(X)\n// intercept = ---------------------\n// N * Σ(X^2) - Σ(X)^2\n//\n// correlation = N * Σ(XY) - Σ(X) * Σ (Y) / √ ( N * Σ(X^2) - Σ(X) ) * ( N * Σ(Y^2) - Σ(Y)^2 ) ) )\nfunction linear(data, decimalPlaces = 2) {\n const sum = [0, 0, 0, 0, 0],\n results = []\n let N = data.length\n\n for (let n = 0, len = data.length; n < len; n++) {\n if (data[n]['x'] != null) {\n data[n][0] = data[n].x\n data[n][1] = data[n].y\n }\n if (data[n][1] != null) {\n sum[0] += data[n][0] // Σ(X)\n sum[1] += data[n][1] // Σ(Y)\n sum[2] += data[n][0] * data[n][0] // Σ(X^2)\n sum[3] += data[n][0] * data[n][1] // Σ(XY)\n sum[4] += data[n][1] * data[n][1] // Σ(Y^2)\n } else {\n N -= 1\n }\n }\n\n const gradient =\n (N * sum[3] - sum[0] * sum[1]) / (N * sum[2] - sum[0] * sum[0])\n const intercept = sum[1] / N - (gradient * sum[0]) / N\n // let correlation = (N * sum[3] - sum[0] * sum[1]) / Math.sqrt((N * sum[2] - sum[0] * sum[0]) * (N * sum[4] - sum[1] * sum[1]));\n\n for (let i = 0, len = data.length; i < len; i++) {\n let coorY = data[i][0] * gradient + intercept\n\n if (decimalPlaces) {\n coorY = parseFloat(coorY.toFixed(decimalPlaces))\n }\n\n const coordinate = [data[i][0], coorY]\n results.push(coordinate)\n }\n\n results.sort((a, b) => {\n if (a[0] > b[0]) {\n return 1\n }\n if (a[0] < b[0]) {\n return -1\n }\n\n return 0\n })\n\n const string =\n 'y = ' +\n Math.round(gradient * 100) / 100 +\n 'x + ' +\n Math.round(intercept * 100) / 100\n\n return {\n equation: [gradient, intercept],\n points: results,\n string: string,\n }\n}\n\n// Code extracted from https://github.com/Tom-Alexander/regression-js/\nfunction polynomial(data, order = 2, extrapolate = 0, decimalPlaces = 2) {\n const lhs = [],\n rhs = [],\n results = [],\n k = order + 1\n let a = 0,\n b = 0\n\n for (let i = 0; i < k; i++) {\n for (let l = 0, len = data.length; l < len; l++) {\n if (data[l].x != null) {\n data[l][0] = data[l].x\n data[l][1] = data[l].y\n }\n if (data[l][1] != null) {\n a += Math.pow(data[l][0], i) * data[l][1]\n }\n }\n\n lhs.push(a)\n\n a = 0\n\n const c = []\n\n for (let j = 0; j < k; j++) {\n for (let l = 0, len = data.length; l < len; l++) {\n if (data[l][1]) {\n b += Math.pow(data[l][0], i + j)\n }\n }\n\n c.push(b)\n\n b = 0\n }\n\n rhs.push(c)\n }\n\n rhs.push(lhs)\n\n const equation = gaussianElimination(rhs, k)\n\n const resultLength = data.length + extrapolate\n const step = data[data.length - 1][0] - data[data.length - 2][0]\n\n for (let i = 0, len = resultLength; i < len; i++) {\n let answer = 0,\n x = 0\n\n if (typeof data[i] !== 'undefined') {\n x = data[i][0]\n } else {\n x = data[data.length - 1][0] + (i - data.length) * step\n }\n\n for (let w = 0; w < equation.length; w++) {\n answer += equation[w] * Math.pow(x, w)\n\n if (decimalPlaces) {\n answer = parseFloat(answer.toFixed(decimalPlaces))\n }\n }\n\n results.push([x, answer])\n }\n\n results.sort((a, b) => {\n if (a[0] > b[0]) {\n return 1\n }\n if (a[0] < b[0]) {\n return -1\n }\n\n return 0\n })\n\n let string = 'y = '\n\n for (let i = equation.length - 1; i >= 0; i--) {\n if (i > 1) {\n string += Math.round(equation[i] * 100) / 100 + 'x^' + i + ' + '\n } else if (i === 1) {\n string += Math.round(equation[i] * 100) / 100 + 'x + '\n } else {\n string += Math.round(equation[i] * 100) / 100\n }\n }\n\n return {\n equation: equation,\n points: results,\n string: string,\n }\n}\n\n// @author: Ignacio Vazquez\n// Based on\n// - http://commons.apache.org/proper/commons-math/download_math.cgi LoesInterpolator.java\n// - https://gist.github.com/avibryant/1151823\nfunction loess(data, bandwidth = 0.25) {\n const xval = data.map(pair => {\n return pair[0]\n })\n\n const distinctX = array_unique(xval)\n\n if (2 / distinctX.length > bandwidth) {\n bandwidth = Math.min(2 / distinctX.length, 1)\n }\n\n const yval = data.map(pair => {\n return pair[1]\n })\n\n function array_unique(values) {\n const o = {},\n l = values.length,\n r = []\n\n for (let i = 0; i < l; i += 1) {\n o[values[i]] = values[i]\n }\n\n for (const i in o) {\n r.push(o[i])\n }\n\n return r\n }\n\n function tricube(x) {\n const tmp = 1 - x * x * x\n\n return tmp * tmp * tmp\n }\n\n const res = []\n\n let left = 0\n let right = Math.floor(bandwidth * xval.length) - 1\n\n for (const i in xval) {\n const x = xval[i]\n\n if (i > 0) {\n if (\n right < xval.length - 1 &&\n xval[right + 1] - xval[i] < xval[i] - xval[left]\n ) {\n left++\n right++\n }\n }\n\n let edge\n\n if (xval[i] - xval[left] > xval[right] - xval[i]) {\n edge = left\n } else {\n edge = right\n }\n\n const denom = Math.abs(1.0 / (xval[edge] - x))\n let sumWeights = 0\n let sumX = 0,\n sumXSquared = 0,\n sumY = 0,\n sumXY = 0\n\n let k = left\n\n while (k <= right) {\n const xk = xval[k]\n const yk = yval[k]\n let dist\n\n if (k < i) {\n dist = x - xk\n } else {\n dist = xk - x\n }\n\n const w = tricube(dist * denom)\n const xkw = xk * w\n\n sumWeights += w\n sumX += xkw\n sumXSquared += xk * xkw\n sumY += yk * w\n sumXY += yk * xkw\n k++\n }\n\n const meanX = sumX / sumWeights\n\n const meanY = sumY / sumWeights\n const meanXY = sumXY / sumWeights\n const meanXSquared = sumXSquared / sumWeights\n let beta\n\n if (meanXSquared === meanX * meanX) {\n beta = 0\n } else {\n beta = (meanXY - meanX * meanY) / (meanXSquared - meanX * meanX)\n }\n\n const alpha = meanY - beta * meanX\n res[i] = beta * x + alpha\n }\n\n return {\n equation: '',\n points: xval.map((x, i) => {\n return [x, res[i]]\n }),\n string: '',\n }\n}\n","export const theme1 = '#a9be3b|#558cc0|#d34957|#ff9f3a|#968f8f|#b7409f|#ffda64|#4fbdae|#b78040|#676767|#6a33cf|#4a7833|#454545'.split(\n '|'\n)\n\nexport const defaultMultiAxisTheme1 = {\n 0: { startColor: '#08306b', endColor: '#c6dbef', mainColor: '#4292c6' },\n 1: { startColor: '#67000d', endColor: '#fcbba1', mainColor: '#cb181d' },\n 2: { startColor: '#00441b', endColor: '#c7e9c0', mainColor: '#41ab5d' },\n 3: { startColor: '#3f007d', endColor: '#dadaeb', mainColor: '#6c66b8' },\n}\n","import objectClean from 'd2-utilizr/lib/objectClean'\nimport isString from 'd2-utilizr/lib/isString'\nimport getChart from './chart'\nimport getXAxis from './xAxis'\nimport getYAxis from './yAxis'\nimport getSeries from './series'\nimport getTitle from './title'\nimport getSubtitle from './subtitle'\nimport getLegend from './legend'\nimport getPane from './pane'\nimport getNoData from './noData'\nimport { isStacked, isDualAxisType } from '../../../../modules/visTypes'\nimport getSortedConfig from './getSortedConfig'\nimport getTrimmedConfig from './getTrimmedConfig'\nimport addTrendLines, { isRegressionIneligible } from './addTrendLines'\nimport { defaultMultiAxisTheme1 } from '../../../util/colors/themes'\nimport { hasCustomAxes } from '../../../../modules/axis'\nimport { axisHasRelativeItems } from '../../../../modules/layout/axisHasRelativeItems'\n\nconst getTransformedLayout = layout => ({\n ...layout,\n type: String(layout.type).toUpperCase(),\n rangeAxisLabel: layout.rangeAxisLabel || layout.rangeAxisTitle,\n domainAxisLabel: layout.domainAxisLabel || layout.domainAxisTitle,\n targetLineLabel: layout.targetLineLabel || layout.targetLineTitle,\n baseLineLabel: layout.baseLineLabel || layout.baseLineTitle,\n})\n\nconst getTransformedExtraOptions = extraOptions => ({\n ...extraOptions,\n multiAxisTheme: extraOptions.multiAxisTheme || defaultMultiAxisTheme1,\n})\n\nexport default function({ store, layout, el, extraConfig, extraOptions }) {\n const _layout = getTransformedLayout(layout)\n const _extraOptions = getTransformedExtraOptions(extraOptions)\n\n const stacked = isStacked(_layout.type)\n\n const series = store.generateData({\n type: _layout.type,\n seriesId:\n _layout.columns && _layout.columns.length\n ? _layout.columns[0].dimension\n : null,\n categoryIds:\n _layout.rows && _layout.rows.length\n ? _layout.rows.map(row => row.dimension)\n : null,\n })\n\n let config = {\n // type etc\n chart: getChart(_layout, el, _extraOptions.dashboard),\n\n // title\n title: getTitle(\n _layout,\n store.data[0].metaData,\n _extraOptions.dashboard\n ),\n\n // subtitle\n subtitle: getSubtitle(\n series,\n _layout,\n store.data[0].metaData,\n _extraOptions.dashboard\n ),\n\n // x-axis\n xAxis: getXAxis(store, _layout, _extraOptions),\n\n // y-axis\n yAxis: getYAxis(_layout, series, _extraOptions),\n\n // series\n series: getSeries(\n series.slice(),\n store,\n _layout,\n stacked,\n _extraOptions\n ),\n\n // legend\n legend: getLegend(_layout, _extraOptions.dashboard),\n\n // pane\n pane: getPane(_layout.type),\n\n // no data\n lang: {\n noData: _extraOptions.noData.text,\n },\n noData: getNoData(),\n\n // credits\n credits: {\n enabled: false,\n },\n\n // exporting\n exporting: {\n // disable exporting context menu\n enabled: false,\n },\n }\n\n // hide empty categories\n if (_layout.hideEmptyRowItems !== 'NONE') {\n config = getTrimmedConfig(config, _layout)\n }\n\n // sorting\n if (_layout.sortOrder) {\n config = getSortedConfig(config, _layout, stacked)\n }\n\n // DHIS2-9010 prevent trend lines from render when using multiple axes\n const filteredSeries = layout.series?.filter(layoutSeriesItem =>\n series.some(\n seriesItem => seriesItem.id === layoutSeriesItem.dimensionItem\n )\n )\n\n // DHIS2-1243 add trend lines after sorting\n // trend line on pie and gauge does not make sense\n if (\n isString(_layout.regressionType) &&\n _layout.regressionType !== 'NONE' &&\n !isRegressionIneligible(_layout.type) &&\n ((!(isDualAxisType(layout.type) && hasCustomAxes(filteredSeries)) || axisHasRelativeItems(layout.columns)))\n ) {\n config.series = addTrendLines(_layout, config.series, stacked)\n }\n\n // flatten category groups\n if (config.xAxis?.length) {\n config.xAxis = config.xAxis.map(xAxis => ({\n ...xAxis,\n categories: xAxis.categories.flat(),\n }))\n }\n\n // force apply extra config\n Object.assign(config, extraConfig)\n\n return objectClean(config)\n}\n","import getFilterText from '../../../../util/getFilterText'\n\nexport default function(layout, metaData) {\n if (layout.columns) {\n const firstItem = layout.columns[0].items[0]\n\n const column = Object.assign({}, layout.columns[0], {\n items: [firstItem],\n })\n\n return getFilterText([column], metaData)\n }\n\n return ''\n}\n","import getFilterText from '../../../../util/getFilterText'\nimport { VIS_TYPE_SINGLE_VALUE } from '../../../../../modules/visTypes'\nimport getSingleValueTitle from './singleValue'\n\nfunction getDefault(layout, metaData, dashboard) {\n return layout.filters && !dashboard\n ? getFilterText(layout.filters, metaData)\n : ''\n}\n\nexport default function(layout, metaData, dashboard) {\n if (layout.hideTitle) {\n return ''\n }\n\n if (typeof layout.title === 'string' && layout.title.length) {\n return layout.title\n } else {\n let title\n switch (layout.type) {\n case VIS_TYPE_SINGLE_VALUE:\n title = getSingleValueTitle(layout, metaData)\n\n break\n default:\n title = getDefault(layout, metaData, dashboard)\n }\n return title\n }\n}\n","import getFilterText from '../../../../util/getFilterText'\n\nexport default function(layout, metaData) {\n return layout.filters ? getFilterText(layout.filters, metaData) : ''\n}\n","import getFilterText from '../../../../util/getFilterText'\nimport getSingleValueTitle from './singleValue'\nimport { VIS_TYPE_SINGLE_VALUE } from '../../../../../modules/visTypes'\n\nfunction getDefault(layout, dashboard, metaData) {\n if (dashboard || typeof layout.title === 'string') {\n return getFilterText(layout.filters, metaData)\n }\n\n return ''\n}\n\nexport default function(layout, metaData, dashboard) {\n if (layout.hideSubtitle) {\n return ''\n }\n\n if (typeof layout.subtitle === 'string' && layout.subtitle.length) {\n return layout.subtitle\n } else {\n let subtitle\n switch (layout.type) {\n case VIS_TYPE_SINGLE_VALUE:\n subtitle = getSingleValueTitle(layout, metaData)\n\n break\n default:\n subtitle = getDefault(layout, dashboard, metaData)\n }\n\n return subtitle\n }\n}\n","import { renderValue } from '../../../../../modules/pivotTable/renderValue'\nimport { VALUE_TYPE_TEXT } from '../../../../../modules/pivotTable/pivotTableConstants'\n\nexport default function(value, layout, metaData, extraOptions) {\n const valueType = metaData.items[metaData.dimensions.dx[0]].valueType\n return (\n renderValue(value, valueType || VALUE_TYPE_TEXT, {\n digitGroupSeparator: layout.digitGroupSeparator,\n skipRounding: layout.skipRounding,\n }) || extraOptions.noData.text\n )\n}\n","import getTitle from './title'\nimport getSubtitle from './subtitle'\nimport getValue from './value'\n\nexport default function({ store, layout, extraOptions }) {\n const data = store.generateData({\n type: layout.type,\n seriesId:\n layout.columns && layout.columns.length\n ? layout.columns[0].dimension\n : null,\n categoryId:\n layout.rows && layout.rows.length ? layout.rows[0].dimension : null,\n })\n\n const config = {\n value: data[0] === undefined ? extraOptions.noData.text : data[0],\n formattedValue: getValue(\n data[0],\n layout,\n store.data[0].metaData,\n extraOptions\n ),\n title: getTitle(layout, store.data[0].metaData, extraOptions.dashboard),\n subtitle: getSubtitle(\n layout,\n store.data[0].metaData,\n extraOptions.dashboard\n ),\n }\n\n return config\n}\n","import dhis_highcharts from './dhis_highcharts'\nimport dhis_dhis from './dhis_dhis'\n\nexport default {\n dhis_highcharts,\n dhis_dhis,\n}\n","import H from 'highcharts'\nimport HM from 'highcharts/highcharts-more'\nimport HSG from 'highcharts/modules/solid-gauge'\nimport HNDTD from 'highcharts/modules/no-data-to-display'\nimport HE from 'highcharts/modules/exporting'\nimport HPF from 'highcharts/modules/pattern-fill'\n\n// apply\nHM(H)\nHSG(H)\nHNDTD(H)\nHE(H)\nHPF(H)\n\nexport default function(config, el) {\n if (config) {\n config.chart.renderTo = el || config.chart.renderTo\n\n return new H.Chart(config)\n }\n}\n","import { colors } from '@dhis2/ui'\n\nimport { getColorByValueFromLegendSet } from '../../../../modules/legends'\nimport {\n FONT_STYLE_VISUALIZATION_TITLE,\n FONT_STYLE_VISUALIZATION_SUBTITLE,\n FONT_STYLE_OPTION_FONT_SIZE,\n FONT_STYLE_OPTION_TEXT_COLOR,\n FONT_STYLE_OPTION_TEXT_ALIGN,\n FONT_STYLE_OPTION_ITALIC,\n FONT_STYLE_OPTION_BOLD,\n TEXT_ALIGN_LEFT,\n TEXT_ALIGN_RIGHT,\n TEXT_ALIGN_CENTER,\n} from '../../../../modules/fontStyle'\n\nconst svgNS = 'http://www.w3.org/2000/svg'\n\nconst generateValueSVG = (value, formattedValue, legendSet, y) => {\n const textSize = 300\n const defaultFillColor = colors.grey900\n\n const svgValue = document.createElementNS(svgNS, 'svg')\n svgValue.setAttribute('xmlns', svgNS)\n svgValue.setAttribute(\n 'viewBox',\n `0 -${textSize + 50} ${textSize *\n 0.75 *\n formattedValue.length} ${textSize + 200}`\n )\n\n if (y) {\n svgValue.setAttribute('y', y)\n }\n\n const fillColor = legendSet\n ? getColorByValueFromLegendSet(legendSet, value)\n : defaultFillColor\n\n const text = document.createElementNS(svgNS, 'text')\n text.setAttribute('text-anchor', 'middle')\n text.setAttribute('font-size', textSize)\n text.setAttribute('font-weight', '300')\n text.setAttribute('letter-spacing', '-5')\n text.setAttribute('x', '50%')\n text.setAttribute('fill', fillColor)\n text.appendChild(document.createTextNode(formattedValue))\n\n svgValue.appendChild(text)\n\n return svgValue\n}\n\nconst generateDashboardItem = (config, legendSet) => {\n const container = document.createElement('div')\n container.setAttribute(\n 'style',\n 'display: flex; flex-direction: column; align-items: center; justify-content: center; width: 100%; height: 100%'\n )\n\n const titleStyle = 'font-size: 12px; color: #666;'\n\n const title = document.createElement('span')\n title.setAttribute('style', titleStyle)\n if (config.title) {\n title.appendChild(document.createTextNode(config.title))\n\n container.appendChild(title)\n }\n\n const subtitle = document.createElement('span')\n subtitle.setAttribute('style', titleStyle + ' margin-top: 4px')\n if (config.subtitle) {\n subtitle.appendChild(document.createTextNode(config.subtitle))\n\n container.appendChild(subtitle)\n }\n\n container.appendChild(\n generateValueSVG(config.value, config.formattedValue, legendSet)\n )\n\n return container\n}\n\nconst getTextAnchorFromTextAlign = textAlign => {\n switch (textAlign) {\n default:\n case TEXT_ALIGN_LEFT:\n return 'start'\n case TEXT_ALIGN_CENTER:\n return 'middle'\n case TEXT_ALIGN_RIGHT:\n return 'end'\n }\n}\n\nconst getXFromTextAlign = textAlign => {\n switch (textAlign) {\n default:\n case TEXT_ALIGN_LEFT:\n return '1%'\n case TEXT_ALIGN_CENTER:\n return '50%'\n case TEXT_ALIGN_RIGHT:\n return '99%'\n }\n}\n\nconst generateDVItem = (config, legendSet, parentEl, fontStyle) => {\n const parentElBBox = parentEl.getBoundingClientRect()\n\n const width = parentElBBox.width\n const height = parentElBBox.height\n\n const svgNS = 'http://www.w3.org/2000/svg'\n\n const svg = document.createElementNS(svgNS, 'svg')\n svg.setAttribute('xmlns', svgNS)\n svg.setAttribute('viewBox', `0 0 ${width} ${height}`)\n svg.setAttribute('width', '100%')\n svg.setAttribute('height', '100%')\n\n const title = document.createElementNS(svgNS, 'text')\n const titleFontStyle = fontStyle[FONT_STYLE_VISUALIZATION_TITLE]\n title.setAttribute(\n 'x',\n getXFromTextAlign(titleFontStyle[FONT_STYLE_OPTION_TEXT_ALIGN])\n )\n title.setAttribute('y', 28)\n title.setAttribute(\n 'text-anchor',\n getTextAnchorFromTextAlign(titleFontStyle[FONT_STYLE_OPTION_TEXT_ALIGN])\n )\n title.setAttribute(\n 'font-size',\n `${titleFontStyle[FONT_STYLE_OPTION_FONT_SIZE]}px`\n )\n title.setAttribute(\n 'font-weight',\n titleFontStyle[FONT_STYLE_OPTION_BOLD]\n ? FONT_STYLE_OPTION_BOLD\n : 'normal'\n )\n title.setAttribute(\n 'font-style',\n titleFontStyle[FONT_STYLE_OPTION_ITALIC]\n ? FONT_STYLE_OPTION_ITALIC\n : 'normal'\n )\n title.setAttribute('fill', titleFontStyle[FONT_STYLE_OPTION_TEXT_COLOR])\n\n if (config.title) {\n title.appendChild(document.createTextNode(config.title))\n\n svg.appendChild(title)\n }\n\n const subtitleFontStyle = fontStyle[FONT_STYLE_VISUALIZATION_SUBTITLE]\n const subtitle = document.createElementNS(svgNS, 'text')\n subtitle.setAttribute(\n 'x',\n getXFromTextAlign(subtitleFontStyle[FONT_STYLE_OPTION_TEXT_ALIGN])\n )\n subtitle.setAttribute('y', 28)\n subtitle.setAttribute('dy', 22)\n subtitle.setAttribute(\n 'text-anchor',\n getTextAnchorFromTextAlign(\n subtitleFontStyle[FONT_STYLE_OPTION_TEXT_ALIGN]\n )\n )\n subtitle.setAttribute(\n 'font-size',\n `${subtitleFontStyle[FONT_STYLE_OPTION_FONT_SIZE]}px`\n )\n subtitle.setAttribute(\n 'font-weight',\n subtitleFontStyle[FONT_STYLE_OPTION_BOLD]\n ? FONT_STYLE_OPTION_BOLD\n : 'normal'\n )\n subtitle.setAttribute(\n 'font-style',\n subtitleFontStyle[FONT_STYLE_OPTION_ITALIC]\n ? FONT_STYLE_OPTION_ITALIC\n : 'normal'\n )\n subtitle.setAttribute(\n 'fill',\n subtitleFontStyle[FONT_STYLE_OPTION_TEXT_COLOR]\n )\n if (config.subtitle) {\n subtitle.appendChild(document.createTextNode(config.subtitle))\n\n svg.appendChild(subtitle)\n }\n\n svg.appendChild(\n generateValueSVG(config.value, config.formattedValue, legendSet, 20)\n )\n\n return svg\n}\n\nexport default function(\n config,\n parentEl,\n { dashboard, legendSets, fontStyle }\n) {\n const legendSet = legendSets[0]\n parentEl.style.overflow = 'hidden'\n parentEl.style.display = 'flex'\n parentEl.style.justifyContent = 'center'\n\n return dashboard\n ? generateDashboardItem(config, legendSet)\n : generateDVItem(config, legendSet, parentEl, fontStyle)\n}\n","import getSingleValueGenerator from './singleValue'\nimport { VIS_TYPE_SINGLE_VALUE } from '../../../../modules/visTypes'\n\nexport default function(config, parentEl, extraOptions) {\n if (config) {\n const node =\n typeof parentEl === 'object'\n ? parentEl\n : typeof parentEl === 'string'\n ? document.querySelector(parentEl)\n : null\n\n if (node) {\n if (node.lastChild) {\n node.removeChild(node.lastChild)\n }\n\n let content\n\n switch (config.type) {\n case VIS_TYPE_SINGLE_VALUE:\n default:\n content = getSingleValueGenerator(\n config,\n node,\n extraOptions,\n )\n break\n }\n\n node.appendChild(content)\n\n return node.innerHTML\n }\n }\n}\n","import highcharts from './highcharts'\nimport dhis from './dhis'\n\nexport default {\n highcharts,\n dhis,\n}\n","import i18n from '@dhis2/d2-i18n'\nimport validators from './validators'\nimport adapters from './adapters'\nimport generators from './generators'\nimport { theme1 } from '../util/colors'\n\nexport default function({\n store,\n layout,\n el,\n inputFormat = 'dhis',\n outputFormat = 'highcharts',\n extraLayout,\n extraOptions,\n onError,\n onWarning,\n}) {\n const _validator = validators[inputFormat] || validators.noValidation\n const _adapter = adapters[inputFormat + '_' + outputFormat]\n const _generator = generators[outputFormat]\n\n if (_validator === validators.noValidation) {\n onWarning(\n `No validation implementation for config input format \"${inputFormat}\"`\n )\n }\n\n if (!_adapter) {\n onError(\n `No config tranformation implementation for format \"${inputFormat}\" to format \"${outputFormat}\"`\n )\n }\n\n if (!_generator) {\n onError(`No visualization implementation for format ${outputFormat}`)\n }\n\n this.getConfig = () => {\n const DEFAULT_EXTRA_OPTIONS = {\n colors: theme1,\n noData: {\n text: i18n.t('No data'),\n },\n }\n\n return _adapter({\n layout: _validator({ layout, onError, onWarning }),\n extraOptions: Object.assign(\n {},\n DEFAULT_EXTRA_OPTIONS,\n extraOptions\n ),\n store,\n el,\n extraLayout,\n })\n }\n\n this.createVisualization = () => \n _generator(this.getConfig(), el, {\n ...extraOptions,\n fontStyle: layout.fontStyle\n })\n}\n","import isArray from 'd2-utilizr/lib/isArray'\nimport 'core-js/fn/array/find-index'\n\nimport Store from './store'\nimport Config from './config'\nimport { mergeFontStyleWithDefault } from '../modules/fontStyle'\n\nconst defaultError = error => {\n throw new Error(error)\n}\n\nconst defaultWarning = warning => {\n console.log(warning)\n}\n\nfunction createVisualization(\n data,\n layout,\n el,\n extraOptions,\n error = defaultError,\n warning = defaultWarning,\n outputFormat\n) {\n const _data = isArray(data) ? data : [data]\n const store = new Store({ data: _data, error, warning, outputFormat })\n const config = new Config({\n store,\n layout: {\n ...layout,\n fontStyle: mergeFontStyleWithDefault(\n layout.fontStyle\n ),\n },\n el,\n outputFormat,\n extraOptions,\n error,\n warning,\n })\n\n return {\n store,\n config,\n visualization: config.createVisualization(),\n }\n}\n\nexport { Store, Config, createVisualization }\n\nexport default createVisualization\n"],"names":["namespace","i18n","addResources","arTranslations","ar_EGTranslations","ar_IQTranslations","ckbTranslations","daTranslations","enTranslations","esTranslations","frTranslations","idTranslations","kmTranslations","loTranslations","myTranslations","nbTranslations","prsTranslations","psTranslations","ptTranslations","pt_BRTranslations","ruTranslations","svTranslations","tetTranslations","tgTranslations","ukTranslations","urTranslations","uz_CyrlTranslations","viTranslations","zhTranslations","zh_CNTranslations","ItemIcon","backgroundColor","propTypes","PropTypes","string","colors","white","theme","secondary800","onClickWrapper","id","index","onClick","event","isCtrlPressed","metaKey","ctrlKey","isShiftPressed","shiftKey","Item","name","highlighted","rest","cx","grey500","defualtProps","bool","isRequired","number","func","grey700","ArrowButton","iconType","toggler","lastClickedIndex","highlightedIds","items","ids","newIndex","minIndex","getMinIndex","maxIndex","getMaxIndex","mergeIds","newArr","updateArray","orderedIds","filter","item","includes","length","slice","concat","idIndex","findIndex","highlightedId","UnselectedItems","Component","constructor","props","onSelect","state","setState","map","i","dataDimId","displayName","toLowerCase","filterText","filterTextContains","renderListItem","newState","dataDim","onDoubleClickItem","toggleHighlight","throttle","node","scrolElRef","current","bottom","scrollHeight","scrollTop","clientHeight","requestMoreItems","listItems","filterItems","onSelectAllClick","t","AssignButton","onSelectClick","React","createRef","arrayOf","shape","defaultProps","DeselectIconButton","fill","iconStyle","height","width","e","stopPropagation","secondary600","secondary200","ghost","active","onRemoveItem","reorderList","highlightedItemIds","destinationIndex","sourceIndex","draggableId","isMultiDrag","list","Array","from","indexedItemsToMove","sortBy","highlightedItemId","idx","indexOf","highlightedAboveDestination","newDestinationIndex","forEach","indexed","splice","grey300","grey900","Subtitle","InfoBox","message","fontSize","color","grey600","ItemsList","innerRef","children","CLONE_INDEX","SelectedItems","draggingId","onDeselect","start","selected","find","itemId","destination","source","newList","onReorder","isActive","provided","snapshot","isDraggedItem","isDragging","Boolean","itemText","onDeselectOne","draggableProps","dragHandleProps","cloneId","push","clone","itemList","getItemListWithClone","renderCloneItem","infoBoxMessage","onDragStart","onDragEnd","droppableProps","placeholder","onDeselectAll","UnAssignButton","onDeselectHighlighted","array","ItemSelector","render","unselected","filterZone","object","dialogId","REPORTING_RATE","REPORTING_RATE_ON_TIME","ACTUAL_REPORTS","ACTUAL_REPORTS_ON_TIME","EXPECTED_REPORTS","DATA_SETS_CONSTANTS","getName","CHART_AGGREGATE_AGGREGATABLE_TYPES","ALL_ID","INDICATORS","DATA_ELEMENTS","DATA_SETS","EVENT_DATA_ITEMS","PROGRAM_INDICATORS","TOTALS","DETAIL","getProgramText","getSelectProgramText","dataTypes","getGroupLabel","defaultGroup","groupDetail","default","augmentAlternatives","alternatives","groupId","getReportingRates","getPlaceholder","defaultGroupId","dataType","defaultGroupDetail","DEFAULT_DATATYPE_ID","contents","groupSetId","dataSets","reportingRate","dataSet","concatReportingRate","reportingRateIndex","DataTypes","currentDataType","onChange","ref","Object","values","type","getOptions","Detail","currentValue","options","entries","option","Groups","detailValue","groups","onDetailChange","onGroupChange","optionItems","Filter","text","onClear","value","FilterField","onFilterTextChange","onClearFilter","onError","error","console","log","selectFromResponse","response","entity","selectorFn","request","d2","paramString","url","Api","getApi","get","then","catch","requestWithPaging","page","paging","dimensionItems","nextPage","pager","apiFetchDimensions","nameProp","fields","order","params","apiFetchRecommendedIds","dxIds","ouIds","dimensions","join","Promise","resolve","apiFetchItemsByDimension","dimensionId","apiFetchGroups","dataSetGroups","apiFetchAlternatives","args","queryParams","fetchIndicators","fetchDataElementOperands","fetchDataElements","fetchDataSets","getEventDataItems","fetchProgramIndicators","idField","textFilter","fetchProgramDataElements","program","fetchTrackedEntityAttributes","r","isArray","programTrackedEntityAttributes","a","trackedEntityAttribute","dataElementsObj","attributes","all","filterInvalidTypes","valueType","programFilter","DataIcon","PeriodIcon","OrgUnitIcon","AssignedCategoriesIcon","DIMENSION_ID_DATA","DIMENSION_ID_PERIOD","DIMENSION_ID_ORGUNIT","DIMENSION_ID_ASSIGNED_CATEGORIES","DIMENSION_PROP_NO_ITEMS","getFixedDimensions","iconName","icon","getDynamicDimensions","getPredefinedDimensions","filterOutPredefinedDimensions","dimensionIds","keys","getPredefinedDimensionProp","propName","getDimensionById","FIRST_PAGE","DEFAULT_ALTERNATIVES","DataDimension","indicators","dataElements","dataElementOperands","eventDataItems","programIndicators","itemsCopy","dataTypeGroups","displayNameProp","assign","updateAlternatives","currentFilter","updateGroups","concatItems","augmentFn","di","selectedDimensions","debounce","debouncedUpdateAlternatives","selectedIds","itemsToAdd","itemIdsToRemove","itemIds","onDataTypeChange","getUnselectedItems","selectItems","deselectItems","reorderItems","componentDidMount","componentDidUpdate","prevProps","prevItems","currentItems","isEqual","Function","prototype","DAILY","WEEKLY","BIWEEKLY","WEEKLYWED","WEEKLYTHU","WEEKLYSAT","WEEKLYSUN","MONTHLY","BIMONTHLY","QUARTERLY","SIXMONTHLY","SIXMONTHLYAPR","YEARLY","FYNOV","FYOCT","FYJUL","FYAPR","PERIOD_TYPE_REGEX","getMonthName","key","monthNames","getDailyPeriodType","formatYyyyMmDd","fnFilter","config","periods","offset","parseInt","isFilter","filterFuturePeriods","isReverse","reversePeriods","year","Date","now","getFullYear","date","period","startDate","endDate","iso","replace","setDate","getDate","reverse","getWeeklyPeriodType","weekObj","getEpiWeekStartDay","startDayOfWeek","jan4","jan4DayOfWeek","getDay","dayDiff","startDay","week","shortName","weekNumber","getBiWeeklyPeriodType","day","biWeek","biWeekNumber","getMonthlyPeriodType","formatIso","y","m","String","getMonth","monthName","getBiMonthlyPeriodType","monthStart","monthEnd","fullYear","getQuarterlyPeriodType","quarter","getSixMonthlyPeriodType","getSixMonthlyAprilPeriodType","getYearlyPeriodType","setMonth","dateString","toString","getFinancialOctoberPeriodType","setYear","yearStart","yearEnd","getFinancialNovemberPeriodType","getFinancialJulyPeriodType","getFinancialAprilPeriodType","d","getPeriods","getFixedPeriodsOptionsById","getFixedPeriodsOptions","getYearOffsetFromNow","yearStr","parsePeriodCode","code","allowedTypes","periodTypes","undefined","match","some","spacers","dp8","FixedPeriodFilter","allowedPeriodTypes","currentPeriodType","currentYear","onSelectPeriodType","onSelectYear","onlyAllowedTypeIsSelected","DAYS","WEEKS","BIWEEKS","MONTHS","BIMONTHS","QUARTERS","SIXMONTHS","FINACIALYEARS","YEARS","getDaysPeriodType","getWeeksPeriodType","getBiWeeksPeriodType","getMonthsPeriodType","getBiMonthsPeriodType","getQuartersPeriodType","getSixMonthsPeriodType","getFinancialYearsPeriodType","getYearsPeriodType","getRelativePeriodsOptionsById","getRelativePeriodsOptions","getRelativePeriodIds","flat","RelativePeriodFilter","onSelectFilter","dp12","dp24","dp4","grey200","secondary100","secondary900","secondary700","TransferOption","disabled","label","onDoubleClick","TRANSFER_OPTIONS_WIDTH","TRANSFER_SELECTED_WIDTH","TRANSFER_HEIGHT","defaultRelativePeriodType","defaultFixedPeriodType","defaultFixedPeriodYear","fixedPeriodConfig","PeriodTransfer","allPeriods","selectedPeriods","isRelative","relativeFilter","periodType","fixedFilter","Number","onIsRelativeClick","onSelectFixedPeriods","formattedItems","renderLeftHeader","renderEmptySelection","renderRightHeader","rightFooter","initialSelectedPeriods","PeriodDimension","selectPeriods","FixedPeriodSelect","getUpdatedOptions","periodId","getDerivedStateFromProps","getPeriodById","dataTest","className","onSelectPeriod","apiFetchOrganisationUnits","displayNameProperty","models","organisationUnits","level","userDataViewFallback","apiFetchOrganisationUnitGroups","endPoint","organisationUnitGroups","apiFetchOrganisationUnitLevels","organisationUnitLevels","LEVEL_ID_PREFIX","GROUP_ID_PREFIX","hasGroupPrefix","substr","hasLevelPrefix","stripLevelPrefix","stripGroupPrefix","removePrefix","ouIdHelper","freeze","addLevelPrefix","addGroupPrefix","defaultState","root","roots","ouLevels","ouGroups","showOrgUnitsTree","OrgUnitDimension","userOrgUnits","ou","levelIds","target","ouItems","levelOu","groupIds","groupOu","rootLevel","toArray","orgUnit","path","checked","userOrgUnitIds","orgUnits","reduce","obj","getUserOrgUnitsFromIds","group","onLevelChange","onDeselectAllClick","handleUserOrgUnitClick","handleOrgUnitClick","handleMultipleOrgUnitsSelect","loadOrgUnitTree","loadOrgUnitGroups","loadOrgUnitLevels","previousId","currentId","hideOrgUnitsTree","setTimeout","allItems","initialSelectedItemIds","leftHeader","selectedItemIds","setSelectedItemIds","useState","GenericIcon","DynamicDimension","context","selectedItems","setItems","useEffect","getItems","onSelectItems","styles","display","outline","DimensionLabel","isDeactivated","onLabelClick","onKeyPress","toolTip","boxShadow","borderRadius","position","top","padding","recommendedIcon","secondary300","marginLeft","cursor","RecommendedIcon","anchorEl","currentTarget","TooltipOnHover","showTooltip","isRecommended","onMouseOver","onMouseExit","MoreHorizontalIcon","style","OptionsButton","DynamicDimensionIcon","labelWrapper","userSelect","wordBreak","textDeactivated","minHeight","marginTop","marginBottom","alignItems","fontWeight","fixedDimensionIcon","paddingLeft","paddingBottom","dynamicDimensionIcon","paddingRight","iconWrapper","flexDirection","lockIcon","optionsWrapper","minWidth","left","alignSelf","optionsButton","border","background","DimensionItem","mouseOver","onOptionsClick","Icon","isSelected","isLocked","getDimensionIcon","Label","getDimensionType","itemStyle","optionsRef","container","flex","wrapper","overflow","margin","header","textTransform","letterSpacing","section","DimensionList","dimension","disabledDimension","recommendedDimension","lockedDimension","isDisabled","onDimensionClick","onDimensionOptionsClick","onDimensionDragStart","nameContainsFilterText","renderItem","classes","fixedDimensions","getDimensionItemsByFilter","fixedDim","nonPredefinedDimensions","predefDim","withStyles","divContainer","grey050","textField","grey400","DimensionsPanel","AXIS","defaultValue","isValid","axis","AXIS_ID_COLUMNS","AXIS_ID_ROWS","AXIS_ID_FILTERS","DEFAULT_AXIS_IDS","VIS_TYPE_COLUMN","VIS_TYPE_STACKED_COLUMN","VIS_TYPE_BAR","VIS_TYPE_STACKED_BAR","VIS_TYPE_LINE","VIS_TYPE_AREA","VIS_TYPE_STACKED_AREA","VIS_TYPE_PIE","VIS_TYPE_RADAR","VIS_TYPE_GAUGE","VIS_TYPE_BUBBLE","VIS_TYPE_YEAR_OVER_YEAR_LINE","VIS_TYPE_YEAR_OVER_YEAR_COLUMN","VIS_TYPE_SINGLE_VALUE","VIS_TYPE_PIVOT_TABLE","visTypeDisplayNames","visTypeDescriptions","visTypeIcons","PivotTableIcon","BarIcon","StackedBarIcon","ColumnIcon","StackedColumnIcon","LineIcon","AreaIcon","StackedAreaIcon","PieIcon","RadarIcon","GaugeIcon","YearOverYearLineIcon","YearOverYearColumnIcon","SingleValueIcon","getDisplayNameByVisType","visType","Error","stackedTypes","yearOverYearTypes","dualAxisTypes","twoCategoryChartTypes","verticalTypes","defaultVisType","isStacked","isYearOverYear","isDualAxisType","isSingleValue","isTwoCategoryChartType","isVerticalType","RULE_PROP_AVAILABLE_AXES","RULE_PROP_MAX_DIMS_PER_AXIS","RULE_PROP_MIN_DIMS_PER_AXIS","RULE_PROP_MAX_ITEMS_PER_AXIS","RULE_PROP_DISALLOWED_DIMS","RULE_PROP_LOCKED_DIMS","defaultRules","pieRules","radarRules","singleValueRules","yearOverYearRules","pivotTableRules","visTypeToRules","getRulesByVisType","rules","getAvailableAxesByVisType","getMaxNumberOfDimsPerAxisByVisType","getMinNumberOfDimsPerAxisByVisType","getMaxNumberOfItemsPerAxisByVisType","getDisallowedDimsByVisType","getLockedDimsByVisType","testResourceRules","Set","getAxisMaxNumberOfItemsByVisType","axisId","getAxisMaxNumberOfDimsByVisType","getAxisMinNumberOfDimsByVisType","getAxisPerLockedDimByVisType","getAllLockedDimIdsByVisType","hasAxisTooManyItemsByVisType","numberOfItems","maxNumberOfItemsPerAxis","isDimensionLockedByVisType","isAxisFullByVisType","axisDimensionsCount","canDimensionBeAddedToAxisByVisType","axisIsFull","transferableDimension","getTransferableDimensionPerAxisByVisType","lockedDimsByVisType","lockedDimIdsByAxis","dimId","pop","LAYOUT_TYPE_DEFAULT","LAYOUT_TYPE_PIE","LAYOUT_TYPE_SINGLE_VALUE","LAYOUT_TYPE_YEAR_OVER_YEAR","LAYOUT_TYPE_PIVOT_TABLE","getAxisNamesByLayoutType","layoutType","getAxisNameByLayoutType","getAxisName","hasCustomAxes","series","visTypeToLayoutType","getLayoutTypeByVisType","getAxisItemLabel","axisName","isDimensionInLayout","getRemoveMenuItem","getDividerItem","getUnavailableLabel","visualizationType","DimensionMenu","currentAxisId","numberOfDimensionItems","assignedCategoriesItemHandler","isAssignedCategoriesInLayout","axisItemHandler","removeItemHandler","onClose","menuItems","availableAxisIds","getAvailableAxes","applicableAxisIds","assignedCategoriesAvailableDestinations","assignedCategoriesItemLabel","requireItems","parseValue","valueString","parsedValue","parseFloat","isNaN","SORT_ORDER_ASCENDING","SORT_ORDER_DESCENDING","CELL_TYPE_VALUE","CELL_TYPE_SUBTOTAL","CELL_TYPE_TOTAL","AGGREGATE_TYPE_SUM","AGGREGATE_TYPE_AVERAGE","AGGREGATE_TYPE_NA","VALUE_TYPE_TEXT","VALUE_TYPE_NUMBER","NUMBER_TYPE_VALUE","NUMBER_TYPE_ROW_PERCENTAGE","NUMBER_TYPE_COLUMN_PERCENTAGE","FONT_SIZE_OPTION_SMALL","FONT_SIZE_SMALL","FONT_SIZE_OPTION_NORMAL","FONT_SIZE_NORMAL","FONT_SIZE_OPTION_LARGE","FONT_SIZE_LARGE","DISPLAY_DENSITY_OPTION_COMPACT","DISPLAY_DENSITY_PADDING_COMPACT","DISPLAY_DENSITY_OPTION_NORMAL","DISPLAY_DENSITY_PADDING_NORMAL","DISPLAY_DENSITY_OPTION_COMFORTABLE","DISPLAY_DENSITY_PADDING_COMFORTABLE","CLIPPED_CELL_MAX_WIDTH","COLUMN_PARTITION_SIZE_PX","DIMENSION_TYPE_DATA_ELEMENT_GROUP_SET","DIMENSION_TYPE_DATA","DIMENSION_TYPE_PERIOD","DIMENSION_TYPE_ORGUNIT","trimTrailingZeros","stringValue","defaultDecimalSeparator","separateDigitGroups","decimalSeparator","isNegative","integer","remainder","split","unshift","substring","trimmedRemainder","getSeparator","visualization","digitGroupSeparator","toFixedPrecisionString","skipRounding","precision","toFixed","renderValue","numberType","digitGroups","canvas","getContext","document","createElement","ctx","font","measureText","textMetrics","dataFields","defaultOptions","hideEmptyColumns","hideEmptyRows","showRowTotals","showColumnTotals","showRowSubtotals","showColumnSubtotals","isDxDimension","dimensionItem","dimensionType","countFromDisaggregates","count","x","addSize","reversedList","lastLevel","size","listByDimension","sortByHierarchy","sort","b","hierarchy","localeCompare","buildDimensionLookup","metadata","headers","rows","row","meta","columns","column","allByDimension","headerDimensions","rowHeaders","_","columnHeaders","dataHeaders","out","field","ouDimension","showHierarchy","ouNameHierarchy","uid","lookup","dataRow","dimensionLookup","doColumnSubtotals","doRowSubtotals","headerIndex","Math","floor","applyTotalAggregationType","totalAggregationType","numerator","denominator","multiplier","divisor","overrideTotalAggregationType","PivotTableEngine","data","legendSets","sets","set","rawData","colTotals","rowTotals","colSubTotals","rowSubTotals","title","hideTitle","subtitle","hideSubtitle","metaData","singularRow","firstColumnIsSortable","columnDepth","showDimensionLabels","rowDepth","buildMatrix","getRaw","cellType","getRawCellType","dxDimension","getRawCellDxDimension","getRawRowHeader","getRawColumnHeader","peId","dimensionItemType","ouId","empty","rawValue","renderedValue","percentageTotals","mappedRow","rowMap","mappedColumn","columnMap","isRowTotal","doRowTotals","dataWidth","isColumnTotal","doColumnTotals","dataHeight","isRowSubtotal","isColumnSubtotal","getCellType","getDimensionLabel","rowLevel","columnLevel","lastRowLevel","lastColumnLevel","getCellDxDimension","cellValue","legendSet","dxRowIndex","dim","dxColumnIndex","rowIsEmpty","columnIsEmpty","columnWidths","times","itemIndex","getColumnHeader","getRowHeader","getDependantTotalCells","rowSubtotalSize","rowSubtotal","ceil","rowSubtotalColumnTotal","rawDataHeight","columnSubtotalSize","columnSubtotal","columnSubtotalRowTotal","rawDataWidth","combinedSubtotal","rowTotal","columnTotal","combinedTotal","addCellValueToTotals","pos","totals","totalItem","totalCount","totalCell","currentAggType","previousAggType","currentValueType","previousValueType","percentageTotal","finalizeTotal","addCellForAdaptiveClipping","finalizeTotals","n","max","finalizeAdaptiveClipping","dataPixelWidth","rowHeaderPixelWidth","nextPartitionPx","columnPartitions","getColumnWidth","contentWidth","min","cellPadding","headerSize","isSortable","scrollIconBuffer","colWidth","pre","maxWidth","columnWidth","rowHeaderWidths","rawColumn","resetRowMap","resetColumnMap","displayDensity","getColumnType","warn","rowA","rowB","valueA","valueB","clearSort","initialState","useParentSize","elementRef","renderCounter","initialSize","setSize","el","parentElement","onResize","clientWidth","observer","ResizeObserver","observe","disconnect","useScrollPosition","containerRef","debounceWait","scrollPosition","setScrollPosition","onScroll","useCallback","scroll","scrollLeft","currentRef","addEventListener","removeEventListener","clipAxis","step","headerCount","post","indices","clipPartitionedAxis","partitionSize","partitions","axisMap","widthMap","viewportWidth","viewportPosition","totalWidth","partition","end","useTableClipping","engine","useMemo","PivotTableEngineContext","createContext","Provider","usePivotTableEngine","useContext","table","cell","sortIcon","PivotTableContainer","forwardRef","PivotTableClippedAxis","axisClippingResult","EmptyComponent","ItemComponent","headerStacksAreEqual","limit","getHeaderForDisplay","dimensionLevel","getHeader","showHeader","span","currentHeader","includesHierarchy","PivotTableHeaderCell","PivotTableCell","isColumnHeader","maxHeight","classnames","oneOfType","SortIconAscending","SortIconDescending","SortIconIdle","PivotTableSortIcon","SortIcon","PivotTableColumnHeaderCell","clippingResult","onSortByColumn","PivotTableDimensionLabelCell","colCount","rowCount","colSpan","rowSpan","PivotTableEmptyCell","PivotTableColumnHeaders","PivotTableTitleRow","containerWidth","columnCount","setPosition","textAlign","DIMENSION","isObject","DIMENSION_PROP_ID","required","prop","isString","DIMENSION_PROP_ITEMS","DIMENSION_PROPS","dimensionIs","dimensionIsEmpty","dimensionIsValid","requiredProps","every","dimensionGetItems","getOuLevelAndGroupText","hasOuLevel","hasOuGroup","filterFragments","getLevelAndGroupText","isLevel","getNameFromMetadata","dynamicOuItems","lastItem","dynamicOuNames","allDynamicOuNames","lastOuName","staticOuNames","ouLevelAndGroupText","filters","titleFragments","l","sectionParts","PivotTableTitleRows","getFilterText","PivotTableHead","PivotTableEmptyRow","PivotTableRowHeaderCell","rowIndex","calculateColorBrightness","rgb","round","isHex","charAt","hexToRgb","hex","result","exec","isColorBright","LEGEND_DISPLAY_STRATEGY_BY_DATA_ITEM","LEGEND_DISPLAY_STRATEGY_FIXED","LEGEND_DISPLAY_STYLE_FILL","LEGEND_DISPLAY_STYLE_TEXT","getColorByValueFromLegendSet","legend","legends","startValue","endValue","getLegendSet","legendSetId","legendDisplayStrategy","buildStyleObject","legendColor","legendDisplayStyle","applyLegendSet","PivotTableValueCell","onToggleContextualMenu","cellRef","useRef","cellContent","isClickable","legendStyle","PivotTableRow","columnIndex","PivotTableBody","useSortableColumns","setSortBy","PivotTable","hasRelativeItems","LAYOUT","layout","dimensionGetId","layoutFilterDimensions","idArray","filteredLayout","layoutGetAllAxes","layoutGetAllDimensions","allDimensions","axisGetAllItems","layoutGetAllItems","ITEM","ITEM_PROP_ID","ITEM_PROPS","itemGetId","layoutGetAllItemIds","axisGetDimensionIds","layoutGetAxisIdDimensionIdsObject","layoutGetDimension","layoutGetDimensionItems","axisGetDimension","axisHasDimension","layoutReplaceDimension","newAxisDimensions","dimensionGetItemIds","layoutGetDimensionIdItemIdsObject","axisHasDataDimension","layoutHasDataDimension","layoutHasDimension","layoutHasDynamicDimension","fixedIds","axisHasPeriodDimension","layoutHasPeriodDimension","axisHasOuDimension","axisIsEmpty","dimensionCreate","itemIsValid","MODULE","getMessage","validateHeader","validateRowValue","rowValue","validateRow","headersLength","warning","noValidation","dhis","acc","categories","idValueMap","serieData","categoryItemId","serieItemId","getTwoCategorySplitSerieData","splitSerieData","groupData","groupIndex","point","seriesItemId","groupedData","category1ItemId","category2ItemId","custom","xAxis","showInLegend","dataLabels","enabled","isTwoCategoryFakeSerie","VALUE_ID","arrayNullsOnly","arrayContains","arrayUnique","getHeaderIdIndexMap","Map","getPrefixedId","isPrefix","getIdValueMap","seriesHeader","categoryHeaders","valueIndex","categoryHeader","getDefault","getSeriesFunction","categoryIds","getTwoCategory","getPie","getGauge","getYearOnYear","seriesId","seriesFunction","res","headerIdIndexMap","categoryId","seriesIds","getValueFunction","getSingleValue","valueFunction","seriesIndex","categoryIndex","dhis_highcharts","dhis_dhis","inputFormat","outputFormat","initialSeriesId","initialCategoryId","_validator","validators","_adapter","adapters","generateData","polar","DEFAULT_CHART","spacingTop","fontFamily","DASHBOARD_CHART","spacingRight","spacingBottom","spacingLeft","getEvents","events","load","legendSymbol","attr","translateY","legendItem","getBBox","dashboard","getType","renderTo","FONT_STYLE_VISUALIZATION_TITLE","FONT_STYLE_VISUALIZATION_SUBTITLE","FONT_STYLE_HORIZONTAL_AXIS_TITLE","FONT_STYLE_VERTICAL_AXIS_TITLE","FONT_STYLE_LEGEND","FONT_STYLE_SERIES_AXIS_LABELS","FONT_STYLE_CATEGORY_AXIS_LABELS","FONT_STYLE_TARGET_LINE_LABEL","FONT_STYLE_BASE_LINE_LABEL","FONT_STYLE_OPTION_FONT","FONT_STYLE_OPTION_FONT_SIZE","FONT_STYLE_OPTION_BOLD","FONT_STYLE_OPTION_ITALIC","FONT_STYLE_OPTION_UNDERLINE","FONT_STYLE_OPTION_TEXT_COLOR","FONT_STYLE_OPTION_TEXT_ALIGN","TEXT_ALIGN_LEFT","TEXT_ALIGN_CENTER","TEXT_ALIGN_RIGHT","TIER1","TIER2","getFontSizeOptions","fontStyleKey","fontSizes","tier","getTextAlignOptions","axisTitleAlignOptions","verticalAlignOptions","defaultAlignOptions","defaultFont","defaultFontStyle","regular","small","grey800","mergeFontStyleWithDefault","fontStyle","deleteFontStyleOption","inputFontStyle","getTextAlignOption","getTitleStyle","titleType","align","dimensionItemsIds","store","extraOptions","xAxisLabels","pe","axis1Categories","getCategories","axis2Categories","getAxisTitle","domainAxisLabel","labels","getLabelsStyle","gridLineWidth","opposite","noAxis","objectClean","getRadar","DEFAULT_MAX_VALUE","DEFAULT_TARGET_LINE_LABEL","DEFAULT_BASE_LINE_LABEL","getLabelOffsetFromTextAlign","getPlotLine","fontStyleType","verticalAlign","zIndex","getLabels","plotLines","arrayClean","isNumber","baseLineValue","baseLineLabel","targetLineValue","targetLineLabel","fillColor","rangeAxisMinValue","rangeAxisMaxValue","lineWidth","minorTickInterval","tickLength","tickAmount","tickPositioner","minColor","maxColor","CUSTOM_AXES_DIMENSION_ITEM","CUSTOM_AXES_AXIS","getIdAxisMap","customAxes","getFullIdAxisMap","idAxisMap","axisItem","seriesItem","s","getAxisIdsMap","fullIdAxisMap","AXIS_ID_PREFIX","getAxisStringFromId","dimensionHasRelativeItems","axisHasRelativeItems","DEFAULT_MIN_VALUE","DEFAULT_GRIDLINE_COLOR","getPlotLineStyle","getPlotLineLabelStyle","getMinValue","isNumeric","getMaxValue","getSteps","rangeAxisSteps","getLineLabelStyle","isVertical","alignKey","alignValue","offsetKey","offsetValue","getTargetLine","plotLineStyle","plotLineLabelStyle","getBaseLine","getFormatter","rangeAxisDecimals","formatter","getMultipleAxes","axes","axisObjects","mainColor","filteredSeries","layoutSeriesItem","axisIdsMap","multiAxisTheme","rangeAxisLabel","gridLineColor","reversedStacks","yAxis","getDefaultCumulativeData","decimals","cumulativeValues","seriesObj","accumulator","numberDecimals","getTwoCategoryCumulativeData","groupObj","cumulativeGroupValues","colorByPoint","allowPointSelect","percentage","tooltip","headerFormat","pointFormat","DEFAULT_FONT_SIZE","enableMouseTracking","borderWidth","generateColors","steps","stepFactor","color1","convertHexToRGB","color2","factor","rgbArray","part","convertRGBToHex","val","HPF","H","COLOR_SET_DEFAULT","COLOR_SET_BRIGHT","COLOR_SET_DARK","COLOR_SET_GRAY","COLOR_SET_COLOR_BLIND","COLOR_SET_PATTERNS","colorSets","patterns","DEFAULT_ANIMATION_DURATION","HIGHCHARTS_TYPE_COLUMN","HIGHCHARTS_TYPE_BAR","HIGHCHARTS_TYPE_PERCENT","HIGHCHARTS_TYPE_NORMAL","INCREASED_Z_INDEX","epiCurveTypes","getAnimation","fallback","getColor","getPatternIndex","getIndexColorPatternMap","colorSet","patternIndex","getIdColorMap","colorsByAxis","numberOfIds","startColor","endColor","indexColorPatternMap","idColorMap","showValues","showData","percentStackedValues","stacking","connectNulls","matchedObject","noSpaceBetweenColumns","pointPadding","groupPadding","yearlySeries","getCumulativeData","animation","duration","DASHBOARD_TITLE_STYLE","whiteSpace","textOverflow","getYearOverYearTitle","DASHBOARD_SUBTITLE","textShadow","filterTitle","DASHBOARD_ITEM_STYLE","DASHBOARD_LEGEND","symbolPadding","itemDistance","getItemStyle","getLegend","symbolWidth","symbolHeight","itemMarginBottom","hideLegend","DEFAULT_PANE_SIZE","center","startAngle","endAngle","innerRadius","outerRadius","getTwoCategoryStackedData","getDefaultStackedData","isZeroAsNull","total","serieObj","sortOrderMap","getIndexOrder","dataToBeSorted","dataObjectsToBeSorted","direction","sortOrder","arraySort","arrayPluck","getTwoCategorySortedConfig","stacked","sortedConfig","stackedData","getStackedData","indexOrder","groupCategoryLabels","getDefaultSortedConfig","arrayCleanUndefined","getEmptySeriesIndexes","emptyIndexes","seriesValues","getFirstLastValueIndexes","firstValueIndex","lastValueIndex","cleanData","emptySeriesIndexes","hideEmptyRowItems","cleanedData","getTwoCategoryTrimmedConfig","getDefaultTrimmedConfig","getEmptySeriesGroupIndexes","emptyGroupIndexes","seriesGroupValues","getFirstLastGroupWithValuesIndexes","firstGroupWithValuesIndex","lastGroupWithValuesIndex","trimmedSeries","trimmedXAxis","DEFAULT_TRENDLINE","dashStyle","marker","symbol","radius","isRegressionIneligible","getTwoCategoryTrendLines","getDefaultTrendLines","newSeries","getRegressionObj","regressionType","getDarkerColor","getTwoCategoryTrendlineConfig","groupRegressionObject","trendlineId","trendlineConfig","linkedTo","groupRegressionTemplate","trendlineSerieId","hasOwnProperty","call","colorSetPatterns","darker","getRegressionData","regression","regressionTypeOptions","regressionData","polynomial","points","loess","linear","gaussianElimination","o","maxrow","tmp","j","abs","k","decimalPlaces","sum","results","N","len","gradient","intercept","coorY","coordinate","equation","extrapolate","lhs","rhs","pow","c","resultLength","answer","w","bandwidth","xval","pair","distinctX","array_unique","yval","tricube","right","edge","denom","sumWeights","sumX","sumXSquared","sumY","sumXY","xk","yk","dist","xkw","meanX","meanY","meanXY","meanXSquared","beta","alpha","theme1","defaultMultiAxisTheme1","getTransformedLayout","toUpperCase","rangeAxisTitle","domainAxisTitle","targetLineTitle","baseLineTitle","getTransformedExtraOptions","extraConfig","_layout","_extraOptions","chart","getChart","getTitle","getSubtitle","getXAxis","getYAxis","getSeries","pane","getPane","lang","noData","getNoData","credits","exporting","getTrimmedConfig","getSortedConfig","addTrendLines","firstItem","getSingleValueTitle","dx","formattedValue","getValue","HM","HSG","HNDTD","HE","Chart","svgNS","generateValueSVG","textSize","defaultFillColor","svgValue","createElementNS","setAttribute","appendChild","createTextNode","generateDashboardItem","titleStyle","getTextAnchorFromTextAlign","getXFromTextAlign","generateDVItem","parentEl","parentElBBox","getBoundingClientRect","svg","titleFontStyle","subtitleFontStyle","justifyContent","querySelector","lastChild","removeChild","content","getSingleValueGenerator","innerHTML","highcharts","extraLayout","onWarning","_generator","generators","getConfig","DEFAULT_EXTRA_OPTIONS","createVisualization","defaultError","defaultWarning","_data","Store","Config"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}
|
|
1
|
+
{"version":3,"file":"lib.js","sources":["../../src/locales/index.js","../../src/components/ItemSelector/widgets/ItemIcon.js","../../src/components/ItemSelector/widgets/styles/UnselectedItem.style.js","../../src/components/ItemSelector/widgets/UnselectedItem.js","../../src/components/ItemSelector/widgets/styles/ArrowButton.style.js","../../src/components/ItemSelector/widgets/ArrowButton.js","../../src/components/ItemSelector/modules/toggler.js","../../src/components/ItemSelector/UnselectedItems.js","../../src/components/ItemSelector/widgets/DeselectIconButton.js","../../src/components/ItemSelector/widgets/styles/SelectedItem.style.js","../../src/components/ItemSelector/widgets/SelectedItem.js","../../src/components/ItemSelector/modules/reorderList.js","../../src/components/ItemSelector/styles/SelectedItems.style.js","../../src/components/ItemSelector/SelectedItems.js","../../src/components/ItemSelector/styles/ItemSelector.style.js","../../src/components/ItemSelector/ItemSelector.js","../../src/modules/dataSets.js","../../src/modules/dataTypes.js","../../src/components/DataDimension/DataTypesSelector.js","../../src/components/DataDimension/Detail.js","../../src/components/DataDimension/styles/Groups.style.js","../../src/components/DataDimension/Groups.js","../../src/components/Filter/Filter.js","../../src/components/styles/FilterField.style.js","../../src/components/FilterField.js","../../src/api/index.js","../../src/api/dimensions.js","../../src/assets/DataIcon.js","../../src/assets/PeriodIcon.js","../../src/assets/OrgUnitIcon.js","../../src/assets/AssignedCategoriesIcon.js","../../src/modules/predefinedDimensions.js","../../src/components/DataDimension/DataDimension.js","../../src/components/PeriodDimension/utils/fixedPeriods.js","../../src/components/PeriodDimension/styles/PeriodFilter.style.js","../../src/components/PeriodDimension/FixedPeriodFilter.js","../../src/components/PeriodDimension/utils/relativePeriods.js","../../src/components/PeriodDimension/RelativePeriodFilter.js","../../src/components/styles/DimensionSelector.style.js","../../src/components/styles/TransferOption.style.js","../../src/components/TransferOption.js","../../src/assets/DimensionItemIcons/PeriodIcon.js","../../src/modules/dimensionSelectorHelper.js","../../src/components/PeriodDimension/PeriodTransfer.js","../../src/components/PeriodDimension/PeriodDimension.js","../../src/components/PeriodDimension/styles/FixedPeriodSelect.style.js","../../src/components/PeriodDimension/FixedPeriodSelect.js","../../src/api/organisationUnits.js","../../src/modules/ouIdHelper/index.js","../../src/components/OrgUnitDimension/OrgUnitDimension.js","../../src/assets/DimensionItemIcons/GenericIcon.js","../../src/components/DynamicDimension/ItemSelector.js","../../src/components/DynamicDimension/DynamicDimension.js","../../src/components/DimensionsPanel/List/styles/DimensionLabel.style.js","../../src/components/DimensionsPanel/List/DimensionLabel.js","../../src/components/DimensionsPanel/List/styles/RecommendedIcon.style.js","../../src/components/DimensionsPanel/List/RecommendedIcon.js","../../src/assets/MoreHorizontalIcon.js","../../src/components/DimensionsPanel/List/OptionsButton.js","../../src/assets/DynamicDimensionIcon.js","../../src/components/DimensionsPanel/List/styles/DimensionItem.style.js","../../src/components/DimensionsPanel/List/DimensionItem.js","../../src/components/DimensionsPanel/List/styles/DimensionList.style.js","../../src/components/DimensionsPanel/List/DimensionList.js","../../src/components/DimensionsPanel/styles/DimensionsPanel.style.js","../../src/components/DimensionsPanel/DimensionsPanel.js","../../src/modules/layout/axis.js","../../src/assets/BarIcon.js","../../src/assets/StackedBarIcon.js","../../src/assets/ColumnIcon.js","../../src/assets/StackedColumnIcon.js","../../src/assets/LineIcon.js","../../src/assets/AreaIcon.js","../../src/assets/StackedAreaIcon.js","../../src/assets/PieIcon.js","../../src/assets/RadarIcon.js","../../src/assets/GaugeIcon.js","../../src/assets/YearOverYearLineIcon.js","../../src/assets/YearOverYearColumnIcon.js","../../src/assets/SingleValueIcon.js","../../src/assets/PivotTableIcon.js","../../src/modules/visTypes.js","../../src/modules/layoutUiRules/rules.js","../../src/modules/layoutUiRules/rulesHelper.js","../../src/modules/layoutUiRules/rulesUtils.js","../../src/modules/layoutTypes.js","../../src/modules/axis.js","../../src/modules/visTypeToLayoutType.js","../../src/components/DimensionMenu.js","../../src/modules/pivotTable/parseValue.js","../../src/modules/pivotTable/pivotTableConstants.js","../../src/modules/pivotTable/renderValue.js","../../src/modules/pivotTable/measureText.js","../../src/modules/pivotTable/PivotTableEngine.js","../../src/modules/pivotTable/useParentSize.js","../../src/modules/pivotTable/useScrollPosition.js","../../src/modules/pivotTable/clipAxis.js","../../src/modules/pivotTable/clipPartitionedAxis.js","../../src/modules/pivotTable/useTableClipping.js","../../src/components/PivotTable/PivotTableEngineContext.js","../../src/components/PivotTable/styles/PivotTable.style.js","../../src/components/PivotTable/PivotTableContainer.js","../../src/components/PivotTable/PivotTableClippedAxis.js","../../src/modules/pivotTable/getHeaderForDisplay.js","../../src/components/PivotTable/PivotTableHeaderCell.js","../../src/components/PivotTable/PivotTableCell.js","../../src/components/PivotTable/icons/SortIconAscending.js","../../src/components/PivotTable/icons/SortIconDescending.js","../../src/components/PivotTable/icons/SortIconIdle.js","../../src/components/PivotTable/PivotTableSortIcon.js","../../src/components/PivotTable/PivotTableColumnHeaderCell.js","../../src/components/PivotTable/PivotTableDimensionLabelCell.js","../../src/components/PivotTable/PivotTableEmptyCell.js","../../src/components/PivotTable/PivotTableColumnHeaders.js","../../src/components/PivotTable/PivotTableTitleRow.js","../../src/modules/layout/dimension.js","../../src/modules/layout/dimensionIs.js","../../src/modules/layout/dimensionIsEmpty.js","../../src/modules/layout/dimensionIsValid.js","../../src/modules/layout/dimensionGetItems.js","../../src/modules/getOuLevelAndGroupText.js","../../src/visualizations/util/getFilterText.js","../../src/components/PivotTable/PivotTableTitleRows.js","../../src/components/PivotTable/PivotTableHead.js","../../src/components/PivotTable/PivotTableEmptyRow.js","../../src/components/PivotTable/PivotTableRowHeaderCell.js","../../src/modules/pivotTable/isColorBright.js","../../src/modules/legends.js","../../src/modules/pivotTable/applyLegendSet.js","../../src/components/PivotTable/PivotTableValueCell.js","../../src/components/PivotTable/PivotTableRow.js","../../src/components/PivotTable/PivotTableBody.js","../../src/modules/pivotTable/useSortableColumns.js","../../src/components/PivotTable/PivotTable.js","../../src/modules/layout/axisGetDimension.js","../../src/modules/layout/axisHasDimension.js","../../src/modules/layout/layoutReplaceDimension.js","../../src/modules/layout/layoutGetAllAxes.js","../../src/modules/layout/layoutGetAllDimensions.js","../../src/modules/layout/layoutGetDimension.js","../../src/modules/ouLevelUtils/index.js","../../src/modules/relativeItems/index.js","../../src/modules/layout/layout.js","../../src/modules/layout/dimensionGetId.js","../../src/modules/layout/layoutFilterDimensions.js","../../src/modules/layout/axisGetAllItems.js","../../src/modules/layout/layoutGetAllItems.js","../../src/modules/layout/item.js","../../src/modules/layout/itemGetId.js","../../src/modules/layout/layoutGetAllItemIds.js","../../src/modules/layout/axisGetDimensionIds.js","../../src/modules/layout/layoutGetAxisIdDimensionIdsObject.js","../../src/modules/layout/layoutGetDimensionItems.js","../../src/modules/layout/dimensionGetItemIds.js","../../src/modules/layout/layoutGetDimensionIdItemIdsObject.js","../../src/modules/layout/axisHasDataDimension.js","../../src/modules/layout/layoutHasDataDimension.js","../../src/modules/layout/layoutHasDimension.js","../../src/modules/layout/layoutHasDynamicDimension.js","../../src/modules/layout/axisHasPeriodDimension.js","../../src/modules/layout/layoutHasPeriodDimension.js","../../src/modules/layout/axisHasOuDimension.js","../../src/modules/layout/axisIsEmpty.js","../../src/modules/layout/dimensionCreate.js","../../src/modules/layout/itemIsValid.js","../../src/visualizations/store/validators/dhis/index.js","../../src/visualizations/store/validators/index.js","../../src/visualizations/store/adapters/dhis_highcharts/yearOnYear.js","../../src/visualizations/store/adapters/dhis_highcharts/pie.js","../../src/visualizations/store/adapters/dhis_highcharts/gauge.js","../../src/visualizations/config/adapters/dhis_highcharts/getTwoCategorySplitSerieData.js","../../src/visualizations/store/adapters/dhis_highcharts/twoCategory.js","../../src/visualizations/store/adapters/dhis_highcharts/index.js","../../src/visualizations/store/adapters/dhis_dhis/singleValue.js","../../src/visualizations/store/adapters/dhis_dhis/index.js","../../src/visualizations/store/adapters/index.js","../../src/visualizations/store/index.js","../../src/visualizations/config/validators/dhis/index.js","../../src/visualizations/config/validators/index.js","../../src/visualizations/config/adapters/dhis_highcharts/type.js","../../src/visualizations/config/adapters/dhis_highcharts/chart.js","../../src/modules/fontStyle.js","../../src/visualizations/config/adapters/dhis_highcharts/getTextAlignOption.js","../../src/visualizations/config/adapters/dhis_highcharts/getAxisTitle.js","../../src/visualizations/config/adapters/dhis_highcharts/getCategories.js","../../src/visualizations/config/adapters/dhis_highcharts/xAxis/yearOnYear.js","../../src/visualizations/config/adapters/dhis_highcharts/xAxis/twoCategory.js","../../src/visualizations/config/adapters/dhis_highcharts/xAxis/radar.js","../../src/visualizations/config/adapters/dhis_highcharts/xAxis/index.js","../../src/visualizations/config/adapters/dhis_highcharts/yAxis/gauge.js","../../src/visualizations/config/adapters/dhis_highcharts/customAxes.js","../../src/visualizations/util/axisId.js","../../src/modules/layout/dimensionHasRelativeItems.js","../../src/modules/layout/axisHasRelativeItems.js","../../src/visualizations/config/adapters/dhis_highcharts/yAxis/index.js","../../src/visualizations/config/adapters/dhis_highcharts/getCumulativeData.js","../../src/visualizations/config/adapters/dhis_highcharts/series/pie.js","../../src/visualizations/config/adapters/dhis_highcharts/series/gauge.js","../../src/visualizations/util/colors/gradientColorGenerator.js","../../src/visualizations/util/colors/colorSets.js","../../src/visualizations/config/adapters/dhis_highcharts/series/index.js","../../src/visualizations/config/adapters/dhis_highcharts/title/yearOverYear.js","../../src/visualizations/config/adapters/dhis_highcharts/title/index.js","../../src/visualizations/config/adapters/dhis_highcharts/subtitle/index.js","../../src/visualizations/config/adapters/dhis_highcharts/legend.js","../../src/visualizations/config/adapters/dhis_highcharts/pane/gauge.js","../../src/visualizations/config/adapters/dhis_highcharts/pane/index.js","../../src/visualizations/config/adapters/dhis_highcharts/noData.js","../../src/visualizations/config/adapters/dhis_highcharts/getStackedData.js","../../src/visualizations/config/adapters/dhis_highcharts/getSortedConfig.js","../../src/visualizations/config/adapters/dhis_highcharts/getTrimmedConfig.js","../../src/visualizations/config/adapters/dhis_highcharts/addTrendLines.js","../../src/visualizations/util/colors/themes.js","../../src/visualizations/config/adapters/dhis_highcharts/index.js","../../src/visualizations/config/adapters/dhis_dhis/title/singleValue.js","../../src/visualizations/config/adapters/dhis_dhis/title/index.js","../../src/visualizations/config/adapters/dhis_dhis/subtitle/singleValue.js","../../src/visualizations/config/adapters/dhis_dhis/subtitle/index.js","../../src/visualizations/config/adapters/dhis_dhis/value/index.js","../../src/visualizations/config/adapters/dhis_dhis/index.js","../../src/visualizations/config/adapters/index.js","../../src/visualizations/config/generators/highcharts/index.js","../../src/visualizations/config/generators/dhis/singleValue.js","../../src/visualizations/config/generators/dhis/index.js","../../src/visualizations/config/generators/index.js","../../src/visualizations/config/index.js","../../src/visualizations/index.js"],"sourcesContent":["//------------------------------------------------------------------------------\n// <auto-generated>\n // This code was generated by d2-i18n-generate.\n //\n // Changes to this file may cause incorrect behavior and will be lost if\n // the code is regenerated.\n // </auto-generated>\n//------------------------------------------------------------------------------\nimport i18n from '@dhis2/d2-i18n';\n\nimport arTranslations from './ar/translations.json';\nimport ar_EGTranslations from './ar_EG/translations.json';\nimport ar_IQTranslations from './ar_IQ/translations.json';\nimport ckbTranslations from './ckb/translations.json';\nimport daTranslations from './da/translations.json';\nimport enTranslations from './en/translations.json';\nimport esTranslations from './es/translations.json';\nimport frTranslations from './fr/translations.json';\nimport idTranslations from './id/translations.json';\nimport kmTranslations from './km/translations.json';\nimport loTranslations from './lo/translations.json';\nimport myTranslations from './my/translations.json';\nimport nbTranslations from './nb/translations.json';\nimport prsTranslations from './prs/translations.json';\nimport psTranslations from './ps/translations.json';\nimport ptTranslations from './pt/translations.json';\nimport pt_BRTranslations from './pt_BR/translations.json';\nimport ruTranslations from './ru/translations.json';\nimport svTranslations from './sv/translations.json';\nimport tetTranslations from './tet/translations.json';\nimport tgTranslations from './tg/translations.json';\nimport ukTranslations from './uk/translations.json';\nimport urTranslations from './ur/translations.json';\nimport uz_CyrlTranslations from './uz_Cyrl/translations.json';\nimport viTranslations from './vi/translations.json';\nimport zhTranslations from './zh/translations.json';\nimport zh_CNTranslations from './zh_CN/translations.json';\n\nconst namespace = 'default';\ni18n.addResources('ar', namespace, arTranslations);\ni18n.addResources('ar_EG', namespace, ar_EGTranslations);\ni18n.addResources('ar_IQ', namespace, ar_IQTranslations);\ni18n.addResources('ckb', namespace, ckbTranslations);\ni18n.addResources('da', namespace, daTranslations);\ni18n.addResources('en', namespace, enTranslations);\ni18n.addResources('es', namespace, esTranslations);\ni18n.addResources('fr', namespace, frTranslations);\ni18n.addResources('id', namespace, idTranslations);\ni18n.addResources('km', namespace, kmTranslations);\ni18n.addResources('lo', namespace, loTranslations);\ni18n.addResources('my', namespace, myTranslations);\ni18n.addResources('nb', namespace, nbTranslations);\ni18n.addResources('prs', namespace, prsTranslations);\ni18n.addResources('ps', namespace, psTranslations);\ni18n.addResources('pt', namespace, ptTranslations);\ni18n.addResources('pt_BR', namespace, pt_BRTranslations);\ni18n.addResources('ru', namespace, ruTranslations);\ni18n.addResources('sv', namespace, svTranslations);\ni18n.addResources('tet', namespace, tetTranslations);\ni18n.addResources('tg', namespace, tgTranslations);\ni18n.addResources('uk', namespace, ukTranslations);\ni18n.addResources('ur', namespace, urTranslations);\ni18n.addResources('uz_Cyrl', namespace, uz_CyrlTranslations);\ni18n.addResources('vi', namespace, viTranslations);\ni18n.addResources('zh', namespace, zhTranslations);\ni18n.addResources('zh_CN', namespace, zh_CNTranslations);\n\nexport default i18n;\n","import React from 'react'\nimport PropTypes from 'prop-types'\n\nconst ItemIcon = ({ backgroundColor }) => {\n return (\n <div>\n <style jsx>{`\n div {\n background-color: ${backgroundColor};\n min-height: 6px;\n min-width: 6px;\n margin: 0px 5px;\n }\n `}</style>\n </div>\n )\n}\n\nItemIcon.propTypes = {\n backgroundColor: PropTypes.string,\n}\n\nexport default ItemIcon\n","import { colors, theme } from '@dhis2/ui'\nimport css from 'styled-jsx/css'\n\nexport default css`\n .highlighted-text {\n color: ${colors.white};\n }\n\n .item {\n align-items: center;\n border-radius: 4px;\n cursor: pointer;\n display: flex;\n padding: 3px;\n }\n\n .unselected-item:hover {\n background-color: #e0e0e0;\n }\n\n .highlighted-item {\n background-color: ${theme.secondary800};\n }\n\n .item-label {\n font-size: 14px;\n padding: 2px 5px 2px 2px;\n }\n`\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport cx from 'classnames'\n\nimport ItemIcon from './ItemIcon'\nimport { colors } from '@dhis2/ui'\nimport styles from './styles/UnselectedItem.style'\n\nconst onClickWrapper = ({ id, index, onClick }) => event =>\n onClick({\n isCtrlPressed: event.metaKey || event.ctrlKey,\n isShiftPressed: event.shiftKey,\n index,\n id,\n })\n\nexport const Item = ({ name, highlighted, ...rest }) => {\n return (\n <div\n className={cx('item', {\n 'highlighted-item': highlighted,\n 'unselected-item': !highlighted,\n })}\n onClick={onClickWrapper(rest)}\n data-test={`dimension-item-${rest.id}`}\n >\n <ItemIcon backgroundColor={colors.grey500} />\n <span\n className={cx('item-label', {\n 'highlighted-text': highlighted,\n })}\n >\n {name}\n </span>\n <style jsx>{styles}</style>\n </div>\n )\n}\n\nItem.defualtProps = {\n onClick: () => null,\n}\n\nItem.propTypes = {\n highlighted: PropTypes.bool.isRequired,\n id: PropTypes.string.isRequired,\n index: PropTypes.number.isRequired,\n name: PropTypes.string.isRequired,\n onClick: PropTypes.func,\n}\n\nexport default Item\n","import { colors } from '@dhis2/ui'\nimport css from 'styled-jsx/css'\n\nexport default css`\n .arrow-button {\n background-color: transparent;\n border: 1px solid #d5dde5;\n border-radius: 4px;\n height: 36px;\n min-height: 36px;\n min-width: 40px;\n padding: 0;\n width: 40px;\n }\n\n .arrow-button:focus {\n outline: none;\n }\n\n .arrow-button:active:focus {\n background-color: rgba(158, 158, 158, 0.18);\n }\n\n .arrow-button:hover {\n cursor: pointer;\n background-color: rgba(158, 158, 158, 0.07);\n }\n\n .arrow-icon {\n fill: ${colors.grey700};\n height: 20px;\n width: 24px;\n }\n`\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport ArrowForward from '@material-ui/icons/ArrowForward'\nimport ArrowBack from '@material-ui/icons/ArrowBack'\n\nimport styles from './styles/ArrowButton.style'\n\nexport const ArrowButton = ({ onClick, iconType }) => (\n <button className=\"arrow-button\" onClick={onClick}>\n <span className=\"arrow-icon\">\n {iconType === 'arrowForward' ? <ArrowForward /> : <ArrowBack />}\n </span>\n <style jsx>{styles}</style>\n </button>\n)\n\nArrowButton.propTypes = {\n iconType: PropTypes.string,\n onClick: PropTypes.func,\n}\n\nexport default ArrowButton\n","export const toggler = ({\n id,\n isCtrlPressed,\n isShiftPressed,\n index,\n lastClickedIndex,\n highlightedIds,\n items,\n}) => {\n let ids\n let newIndex = lastClickedIndex\n\n if (!isCtrlPressed && !isShiftPressed) {\n ids = [id]\n newIndex = index\n } else if (isShiftPressed) {\n const minIndex = getMinIndex(lastClickedIndex, index)\n const maxIndex = getMaxIndex(lastClickedIndex, index)\n\n ids = mergeIds({ highlightedIds, items, minIndex, maxIndex })\n } else {\n const newArr = updateArray({\n highlightedIds,\n id,\n lastClickedIndex,\n index,\n })\n ids = newArr.ids\n newIndex = newArr.newIndex\n }\n\n const orderedIds = items.filter(item => ids.includes(item))\n\n return {\n ids: orderedIds,\n lastClickedIndex: newIndex,\n }\n}\n\nconst getMinIndex = (lastClickedIndex, index) =>\n lastClickedIndex > index ? index : lastClickedIndex\n\nconst getMaxIndex = (lastClickedIndex, index) =>\n lastClickedIndex < index ? index : lastClickedIndex\n\nconst mergeIds = ({ highlightedIds, items, minIndex, maxIndex }) =>\n highlightedIds.length\n ? items\n .slice(minIndex, maxIndex + 1)\n .filter(id => !highlightedIds.includes(id))\n .concat(highlightedIds)\n : items.slice(minIndex, maxIndex + 1)\n\nconst updateArray = ({ highlightedIds, id, lastClickedIndex, index }) => {\n let ids\n let newIndex = lastClickedIndex\n\n const idIndex = highlightedIds.findIndex(\n highlightedId => highlightedId === id\n )\n\n if (idIndex >= 0) {\n ids = highlightedIds\n .slice(0, idIndex)\n .concat(highlightedIds.slice(idIndex + 1))\n } else {\n ids = [...highlightedIds, id]\n newIndex = index\n }\n\n return {\n ids,\n newIndex,\n }\n}\n","import React, { Component, Fragment } from 'react'\nimport PropTypes from 'prop-types'\nimport i18n from '@dhis2/d2-i18n'\nimport { Button } from '@dhis2/ui'\nimport throttle from 'lodash/throttle'\n\nimport Item from './widgets/UnselectedItem'\nimport { ArrowButton as AssignButton } from './widgets/ArrowButton'\nimport { toggler } from './modules/toggler'\nimport styles from './styles/UnselectedItems.style'\n\nexport class UnselectedItems extends Component {\n constructor(props) {\n super(props)\n this.scrolElRef = React.createRef()\n }\n\n state = { highlighted: [], lastClickedIndex: 0 }\n\n onSelectClick = () => {\n this.props.onSelect(this.state.highlighted)\n this.setState({ highlighted: [] })\n }\n\n onSelectAllClick = () => {\n this.props.onSelect(this.props.items.map(i => i.id))\n this.setState({ highlighted: [] })\n }\n\n onDoubleClickItem = id => {\n const highlighted = this.state.highlighted.filter(\n dataDimId => dataDimId !== id\n )\n\n this.setState({ highlighted })\n this.props.onSelect([id])\n }\n\n filterTextContains = displayName =>\n displayName.toLowerCase().includes(this.props.filterText.toLowerCase())\n\n filterItems = (item, index) =>\n this.filterTextContains(item.name)\n ? this.renderListItem(item, index)\n : null\n\n toggleHighlight = ({ isCtrlPressed, isShiftPressed, index, id }) => {\n const newState = toggler({\n id,\n isCtrlPressed,\n isShiftPressed,\n index,\n lastClickedIndex: this.state.lastClickedIndex,\n highlightedIds: this.state.highlighted,\n items: this.props.items.map(item => item.id),\n })\n\n this.setState({\n highlighted: newState.ids,\n lastClickedIndex: newState.lastClickedIndex,\n })\n }\n\n renderListItem = (dataDim, index) => (\n <li\n className=\"unselected-list-item\"\n key={dataDim.id}\n onDoubleClick={() => this.onDoubleClickItem(dataDim.id)}\n >\n <Item\n id={dataDim.id}\n index={index}\n name={dataDim.name}\n highlighted={!!this.state.highlighted.includes(dataDim.id)}\n onClick={this.toggleHighlight}\n />\n <style jsx>{styles}</style>\n </li>\n )\n\n requestMoreItems = throttle(() => {\n const node = this.scrolElRef.current\n\n if (node) {\n const bottom =\n node.scrollHeight - node.scrollTop === node.clientHeight\n if (bottom) {\n this.props.requestMoreItems()\n }\n }\n }, 1000)\n\n render = () => {\n const listItems = this.props.items.map((item, index) =>\n this.props.filterText.length\n ? this.filterItems(item, index)\n : this.renderListItem(item, index)\n )\n\n return (\n <Fragment>\n <div\n ref={this.scrolElRef}\n onScroll={this.requestMoreItems}\n className=\"unselected-list-container\"\n >\n <ul className=\"unselected-list\">{listItems}</ul>\n </div>\n <div className=\"select-all-button\">\n <Button onClick={this.onSelectAllClick}>\n {i18n.t('Select all')}\n </Button>\n </div>\n <div className=\"select-highlighted-button\">\n <AssignButton\n onClick={this.onSelectClick}\n iconType={'arrowForward'}\n />\n </div>\n <style jsx>{styles}</style>\n </Fragment>\n )\n }\n}\n\nUnselectedItems.propTypes = {\n items: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n })\n ).isRequired,\n onSelect: PropTypes.func.isRequired,\n filterText: PropTypes.string,\n requestMoreItems: PropTypes.func,\n}\n\nUnselectedItems.defaultProps = {\n requestMoreItems: () => null,\n filterText: '',\n}\n\nexport default UnselectedItems\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport DeselectIcon from '@material-ui/icons/Close'\nimport styles from './styles/DeselectIconButton.style'\n\nexport const DeselectIconButton = ({ fill, onClick }) => {\n const iconStyle = {\n height: '13px',\n width: '10px',\n fill,\n }\n\n return (\n <button\n className=\"deselect-icon-button\"\n onClick={e => {\n e.stopPropagation()\n onClick()\n }}\n >\n <span>\n <DeselectIcon style={iconStyle} />\n </span>\n <style jsx>{styles}</style>\n </button>\n )\n}\n\nDeselectIconButton.propTypes = {\n fill: PropTypes.string.isRequired,\n onClick: PropTypes.func.isRequired,\n}\n\nexport default DeselectIconButton\n","import { colors, theme } from '@dhis2/ui'\nimport css from 'styled-jsx/css'\n\nexport default css`\n .highlighted-text {\n color: ${colors.white};\n }\n\n .icon {\n background-color: ${theme.secondary600};\n }\n\n .item {\n align-items: center;\n border-radius: 4px;\n cursor: pointer;\n display: flex;\n padding: 3px;\n }\n\n .ghost {\n opacity: 0.2;\n transition: opacity 0.2s ease;\n }\n\n .selected-item {\n background-color: ${theme.secondary200};\n }\n\n .selected-item:hover {\n background-color: #86c4bf;\n }\n\n .highlighted-item {\n background-color: ${theme.secondary800};\n }\n\n .inactive-item {\n opacity: 0.3;\n }\n\n .item-label {\n font-size: 14px;\n padding: 2px;\n }\n`\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport cx from 'classnames'\n\nimport ItemIcon from './ItemIcon'\nimport DeselectIconButton from './DeselectIconButton'\nimport { colors, theme } from '@dhis2/ui'\nimport styles from './styles/SelectedItem.style'\n\nconst onClickWrapper = ({ id, index, onClick }) => event =>\n onClick({\n isCtrlPressed: event.metaKey || event.ctrlKey,\n isShiftPressed: event.shiftKey,\n index,\n id,\n })\n\nexport const Item = ({\n name,\n highlighted,\n ghost,\n active,\n onRemoveItem,\n ...rest\n}) => {\n return (\n <div\n className={cx('item', {\n 'highlighted-item': highlighted,\n ghost,\n 'selected-item': !highlighted,\n 'inactive-item': !active,\n })}\n onClick={onClickWrapper(rest)}\n data-test={`dimension-item-${rest.id}`}\n >\n <ItemIcon\n backgroundColor={\n highlighted ? colors.white : theme.secondary600\n }\n />\n <span\n className={cx('item-label', {\n 'highlighted-text': highlighted,\n })}\n >\n {name}\n </span>\n <DeselectIconButton\n fill={highlighted ? colors.white : theme.secondary600}\n onClick={() => onRemoveItem(rest.id)}\n />\n <style jsx>{styles}</style>\n </div>\n )\n}\n\nItem.defaultProps = {\n active: true,\n onRemoveItem: () => null,\n onClick: () => null,\n}\n\nItem.propTypes = {\n highlighted: PropTypes.bool.isRequired,\n id: PropTypes.string.isRequired,\n index: PropTypes.number.isRequired,\n name: PropTypes.string.isRequired,\n active: PropTypes.bool,\n ghost: PropTypes.bool,\n onClick: PropTypes.func,\n onRemoveItem: PropTypes.func,\n}\n\nexport default Item\n","import sortBy from 'lodash/sortBy'\n\nexport const reorderList = ({\n items,\n highlightedItemIds,\n destinationIndex,\n sourceIndex,\n draggableId,\n isMultiDrag,\n}) => {\n const list = Array.from(items.map(item => item.id))\n\n if (isMultiDrag) {\n const indexedItemsToMove = sortBy(\n highlightedItemIds.map(highlightedItemId => ({\n item: highlightedItemId,\n idx: items.map(item => item.id).indexOf(highlightedItemId),\n })),\n 'idx'\n )\n\n const highlightedAboveDestination = indexedItemsToMove.filter(\n item => item.idx < destinationIndex\n )\n\n const newDestinationIndex =\n destinationIndex - highlightedAboveDestination.length\n\n indexedItemsToMove.forEach(indexed => {\n const idx = list.indexOf(indexed.item)\n list.splice(idx, 1)\n })\n\n indexedItemsToMove.forEach((indexed, i) => {\n list.splice(newDestinationIndex + i, 0, indexed.item)\n })\n } else {\n list.splice(sourceIndex, 1)\n list.splice(destinationIndex, 0, draggableId)\n }\n\n return list\n}\n","import { colors } from '@dhis2/ui'\nimport css from 'styled-jsx/css'\n\nexport default css`\n .selected-list {\n flex: 1;\n list-style: none;\n margin: 0 6px;\n overflow-y: auto;\n padding-left: 0px;\n user-select: none;\n }\n\n .selected-list-item {\n display: flex;\n margin: 2px;\n }\n\n .selected-list-item:focus {\n outline: none;\n }\n\n .subtitle-container {\n border-bottom: 1px solid ${colors.grey300};\n height: 42px;\n }\n\n .subtitle-text {\n color: ${colors.grey900};\n height: 20px;\n font-family: Roboto;\n font-size: 15px;\n font-weight: 500;\n left: 8px;\n position: relative;\n top: 12px;\n }\n\n .info-container {\n display: flex;\n margin: 8px;\n padding: 8px;\n background-color: #e8edf2;\n border-radius: 4px;\n }\n\n .info-text {\n padding-left: 6px;\n color: #4a5768;\n font-size: 12px;\n line-height: 17px;\n }\n\n .info-icon {\n font-size: 16px;\n color: #4a5768;\n }\n\n .deselect-all-button {\n display: block;\n margin: 0 auto;\n padding: 5px;\n }\n\n .deselect-highlighted-button {\n left: -48px;\n position: absolute;\n top: 291px;\n }\n`\n","import React, { Component, Fragment } from 'react'\nimport PropTypes from 'prop-types'\nimport i18n from '@dhis2/d2-i18n'\nimport InfoIcon from '@material-ui/icons/InfoOutlined'\nimport { DragDropContext, Droppable, Draggable } from 'react-beautiful-dnd'\nimport { Button, colors } from '@dhis2/ui'\n\nimport Item from './widgets/SelectedItem'\nimport { ArrowButton as UnAssignButton } from './widgets/ArrowButton'\nimport { toggler } from './modules/toggler'\nimport { reorderList } from './modules/reorderList'\nimport styles from './styles/SelectedItems.style'\n\nconst Subtitle = () => (\n <div className=\"subtitle-container\">\n <span className=\"subtitle-text\">{i18n.t('Selected Data')}</span>\n <style jsx>{styles}</style>\n </div>\n)\n\nconst InfoBox = ({ message }) => (\n <div className=\"info-container\">\n <InfoIcon style={{ fontSize: 16, color: colors.grey600 }} />\n <span className=\"info-text\">{message}</span>\n <style jsx>{styles}</style>\n </div>\n)\n\nconst ItemsList = ({ innerRef, children }) => (\n <ul className=\"selected-list\" ref={innerRef}>\n {children}\n <style jsx>{styles}</style>\n </ul>\n)\n\nconst CLONE_INDEX = 9999 // a high number to not influence the actual item list\n\nexport class SelectedItems extends Component {\n state = { highlighted: [], lastClickedIndex: 0, draggingId: null }\n\n onDeselectHighlighted = () => {\n this.props.onDeselect(this.state.highlighted)\n this.setState({ highlighted: [] })\n }\n\n onDeselectOne = id => {\n const highlighted = this.state.highlighted.filter(\n highlightedId => highlightedId !== id\n )\n\n this.props.onDeselect([id])\n this.setState({ highlighted })\n }\n\n onDeselectAll = () => {\n this.props.onDeselect(this.props.items.map(item => item.id))\n this.setState({ highlighted: [] })\n }\n\n toggleHighlight = ({ isCtrlPressed, isShiftPressed, index, id }) => {\n const newState = toggler({\n id,\n isCtrlPressed,\n isShiftPressed,\n index,\n lastClickedIndex: this.state.lastClickedIndex,\n highlightedIds: this.state.highlighted,\n items: this.props.items.map(item => item.id),\n })\n\n this.setState({\n highlighted: newState.ids,\n lastClickedIndex: newState.lastClickedIndex,\n })\n }\n\n isMultiDrag = draggableId => {\n return (\n this.state.highlighted.includes(draggableId) &&\n this.state.highlighted.length > 1\n )\n }\n\n onDragStart = start => {\n const id = start.draggableId\n const selected = this.state.highlighted.find(itemId => itemId === id)\n\n // if dragging an item that is not highlighted, unhighlight all items\n if (!selected) {\n this.setState({ highlighted: [] })\n }\n\n this.setState({ draggingId: start.draggableId })\n }\n\n onDragEnd = ({ destination, source, draggableId }) => {\n this.setState({ draggingId: null })\n\n if (destination === null) {\n return\n }\n\n if (\n destination.draggableId === source.draggableId &&\n destination.index === source.index\n ) {\n return\n }\n\n const newList = reorderList({\n destinationIndex: destination.index,\n sourceIndex: source.index,\n draggableId,\n isMultiDrag: this.isMultiDrag(draggableId),\n items: this.props.items,\n highlightedItemIds: this.state.highlighted,\n })\n\n this.props.onReorder(newList)\n }\n\n renderListItem = ({ id, name, isActive }, index) => (\n <Draggable draggableId={id} index={index} key={id}>\n {(provided, snapshot) => {\n const isDraggedItem =\n snapshot.isDragging &&\n this.state.highlighted.length > 1 &&\n this.state.highlighted.includes(this.state.draggingId)\n\n const ghost =\n this.state.highlighted.includes(id) &&\n Boolean(this.state.draggingId) &&\n this.state.draggingId !== id\n\n const itemText = isDraggedItem\n ? `${this.state.highlighted.length} items`\n : name\n\n return (\n <li\n className=\"selected-list-item\"\n id={id}\n onDoubleClick={() => this.onDeselectOne(id)}\n {...provided.draggableProps}\n {...provided.dragHandleProps}\n ref={provided.innerRef}\n >\n <Item\n id={id}\n index={index}\n name={itemText}\n highlighted={!!this.state.highlighted.includes(id)}\n active={isActive}\n onRemoveItem={this.onDeselectOne}\n onClick={this.toggleHighlight}\n ghost={ghost}\n />\n <style jsx>{styles}</style>\n </li>\n )\n }}\n </Draggable>\n )\n\n renderCloneItem = ({ id, name }, index) => {\n const cloneId = `${id}-clone`\n return (\n <Draggable draggableId={cloneId} index={index} key={cloneId}>\n {provided => (\n <li\n className=\"selected-list-item\"\n id={cloneId}\n {...provided.draggableProps}\n {...provided.dragHandleProps}\n ref={provided.innerRef}\n >\n <Item\n id={cloneId}\n index={CLONE_INDEX}\n name={name}\n highlighted={!!this.state.highlighted.includes(id)}\n selected\n ghost\n />\n <style jsx>{styles}</style>\n </li>\n )}\n </Draggable>\n )\n }\n\n getItemListWithClone = () => {\n const list = []\n\n this.props.items.forEach(item => {\n list.push(item)\n\n const isDraggedItem =\n this.isMultiDrag(this.state.draggingId) &&\n this.state.draggingId === item.id\n\n if (isDraggedItem) {\n list.push({\n id: item.id,\n name: item.name,\n isActive: item.isActive,\n clone: true,\n })\n }\n })\n\n return list\n }\n\n render = () => {\n const itemList = this.getItemListWithClone().map((item, i) =>\n item.clone\n ? this.renderCloneItem(item, i)\n : this.renderListItem(item, i)\n )\n\n return (\n <Fragment>\n <Subtitle />\n {this.props.infoBoxMessage ? (\n <InfoBox message={this.props.infoBoxMessage} />\n ) : null}\n <DragDropContext\n onDragStart={this.onDragStart}\n onDragEnd={this.onDragEnd}\n >\n <Droppable droppableId=\"selected-items-droppable\">\n {provided => (\n <ItemsList\n innerRef={provided.innerRef}\n {...provided.droppableProps}\n >\n {itemList}\n {provided.placeholder}\n </ItemsList>\n )}\n </Droppable>\n </DragDropContext>\n <div className=\"deselect-all-button\">\n <Button onClick={this.onDeselectAll}>\n {i18n.t('Deselect All')}\n </Button>\n </div>\n <div className=\"deselect-highlighted-button\">\n <UnAssignButton\n onClick={this.onDeselectHighlighted}\n iconType={'arrowBack'}\n />\n </div>\n <style jsx>{styles}</style>\n </Fragment>\n )\n }\n}\n\nInfoBox.propTypes = {\n message: PropTypes.string,\n}\n\nItemsList.propTypes = {\n children: PropTypes.array,\n innerRef: PropTypes.func,\n}\n\nSelectedItems.propTypes = {\n items: PropTypes.array.isRequired,\n onDeselect: PropTypes.func.isRequired,\n onReorder: PropTypes.func.isRequired,\n infoBoxMessage: PropTypes.string,\n}\n\nexport default SelectedItems\n","import { colors } from '@dhis2/ui'\nimport css from 'styled-jsx/css'\n\nexport default css`\n .item-selector-container {\n box-sizing: border-box;\n display: flex;\n flex: 1 1 auto;\n font-family: Roboto, sans-serif;\n }\n .section {\n border: 1px solid ${colors.grey300};\n display: flex;\n flex-direction: column;\n height: 480px;\n position: relative;\n }\n .unselected {\n margin-right: 55px;\n width: 418px;\n }\n .selected {\n width: 276px;\n }\n`\n","import React, { Component } from 'react'\nimport PropTypes from 'prop-types'\nimport cx from 'classnames'\n\nimport UnselectedItems from './UnselectedItems'\nimport SelectedItems from './SelectedItems'\nimport styles from './styles/ItemSelector.style'\n\nclass ItemSelector extends Component {\n render() {\n const { unselected, selected, children: filterZone } = this.props\n\n return (\n <div className=\"item-selector-container\">\n <div className={cx('section', 'unselected')}>\n {filterZone}\n <UnselectedItems {...unselected} />\n </div>\n <div className={cx('section', 'selected')}>\n <SelectedItems {...selected} />\n </div>\n <style jsx>{styles}</style>\n </div>\n )\n }\n}\n\nItemSelector.propTypes = {\n children: PropTypes.object,\n selected: PropTypes.shape({\n items: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n isActive: PropTypes.bool,\n })\n ).isRequired,\n onDeselect: PropTypes.func.isRequired,\n onReorder: PropTypes.func.isRequired,\n dialogId: PropTypes.string,\n infoBoxMessage: PropTypes.string,\n }),\n unselected: PropTypes.shape({\n items: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n })\n ).isRequired,\n onSelect: PropTypes.func.isRequired,\n filterText: PropTypes.string,\n requestMoreItems: PropTypes.func,\n }),\n}\n\nexport default ItemSelector\n","import i18n from '@dhis2/d2-i18n'\n\nexport const REPORTING_RATE = 'REPORTING_RATE'\nexport const REPORTING_RATE_ON_TIME = 'REPORTING_RATE_ON_TIME'\nexport const ACTUAL_REPORTS = 'ACTUAL_REPORTS'\nexport const ACTUAL_REPORTS_ON_TIME = 'ACTUAL_REPORTS_ON_TIME'\nexport const EXPECTED_REPORTS = 'EXPECTED_REPORTS'\n\nexport const DATA_SETS_CONSTANTS = [\n {\n id: REPORTING_RATE,\n getName: () => i18n.t('Reporting rate'),\n },\n {\n id: REPORTING_RATE_ON_TIME,\n getName: () => i18n.t('Reporting rate on time'),\n },\n {\n id: ACTUAL_REPORTS,\n getName: () => i18n.t('Actual reports'),\n },\n {\n id: ACTUAL_REPORTS_ON_TIME,\n getName: () => i18n.t('Actual reports on time'),\n },\n {\n id: EXPECTED_REPORTS,\n getName: () => i18n.t('Expected reports'),\n },\n]\n","import i18n from '@dhis2/d2-i18n'\n\nimport { DATA_SETS_CONSTANTS } from '../modules/dataSets'\n\nexport const CHART_AGGREGATE_AGGREGATABLE_TYPES = [\n 'BOOLEAN',\n 'TRUE_ONLY',\n 'INTEGER',\n 'INTEGER_POSITIVE',\n 'INTEGER_NEGATIVE',\n 'INTEGER_ZERO_OR_POSITIVE',\n 'NUMBER',\n 'UNIT_INTERVAL',\n 'PERCENTAGE',\n]\n\nexport const ALL_ID = 'ALL'\n\nconst INDICATORS = 'indicators'\nconst DATA_ELEMENTS = 'dataElements'\nconst DATA_SETS = 'dataSets'\nconst EVENT_DATA_ITEMS = 'eventDataItems'\nconst PROGRAM_INDICATORS = 'programIndicators'\n\nexport const TOTALS = 'totals'\nexport const DETAIL = 'detail'\n\nconst getProgramText = () => i18n.t('Program')\nconst getSelectProgramText = () => i18n.t('Select a program')\n\nexport const dataTypes = {\n [INDICATORS]: {\n id: INDICATORS,\n getName: () => i18n.t('Indicators'),\n getGroupLabel: () => i18n.t('Select indicator group'),\n defaultGroup: { id: ALL_ID, getName: () => i18n.t('[ All groups ]') },\n groupDetail: false,\n },\n [DATA_ELEMENTS]: {\n id: DATA_ELEMENTS,\n getName: () => i18n.t('Data elements'),\n getGroupLabel: () => i18n.t('Select data element group'),\n defaultGroup: {\n id: ALL_ID,\n getName: () => i18n.t('[ All data elements ]'),\n },\n groupDetail: { default: TOTALS },\n },\n [DATA_SETS]: {\n id: DATA_SETS,\n getName: () => i18n.t('Data sets'),\n getGroupLabel: () => i18n.t('Select data sets'),\n defaultGroup: { id: ALL_ID, getName: () => i18n.t('[ All metrics ]') },\n groupDetail: false,\n augmentAlternatives: (alternatives, groupId) =>\n getReportingRates(alternatives, groupId),\n },\n [EVENT_DATA_ITEMS]: {\n id: EVENT_DATA_ITEMS,\n getName: () => i18n.t('Event data items'),\n getGroupLabel: getProgramText,\n getPlaceholder: getSelectProgramText,\n defaultGroup: null,\n groupDetail: false,\n },\n [PROGRAM_INDICATORS]: {\n id: PROGRAM_INDICATORS,\n getName: () => i18n.t('Program indicators'),\n getGroupLabel: getProgramText,\n getPlaceholder: getSelectProgramText,\n defaultGroup: null,\n groupDetail: false,\n },\n}\n\nexport function defaultGroupId(dataType) {\n return dataTypes[dataType].defaultGroup\n ? dataTypes[dataType].defaultGroup.id\n : ''\n}\n\nexport function defaultGroupDetail(dataType) {\n return dataTypes[dataType].groupDetail\n ? dataTypes[dataType].groupDetail.default\n : ''\n}\n\nexport const DEFAULT_DATATYPE_ID = INDICATORS\n\nconst getReportingRates = (contents, groupSetId) => {\n let dataSets = []\n\n if (groupSetId === ALL_ID) {\n DATA_SETS_CONSTANTS.forEach(\n reportingRate =>\n (dataSets = [\n ...dataSets,\n ...contents.map(dataSet =>\n concatReportingRate(dataSet, reportingRate)\n ),\n ])\n )\n } else {\n const reportingRateIndex = DATA_SETS_CONSTANTS.find(\n item => item.id === groupSetId\n )\n\n dataSets = contents.map(dataSet =>\n concatReportingRate(dataSet, reportingRateIndex)\n )\n }\n\n return dataSets\n}\n\nconst concatReportingRate = (dataSet, reportingRate) => {\n return {\n id: `${dataSet.id}.${reportingRate.id}`,\n name: `${dataSet.name} (${reportingRate.getName()})`,\n }\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport i18n from '@dhis2/d2-i18n'\nimport { SingleSelectField, SingleSelectOption } from '@dhis2/ui'\n\nimport { dataTypes } from '../../modules/dataTypes'\nimport styles from './styles/DataTypesSelector.style'\n\nexport const DataTypes = ({ currentDataType, onChange }) => (\n <div className=\"container\">\n <SingleSelectField\n label={i18n.t('Data Type')}\n selected={dataTypes[currentDataType]?.id}\n onChange={ref => onChange(ref.selected)}\n dense\n >\n {Object.values(dataTypes).map(type => (\n <SingleSelectOption\n value={type.id}\n key={type.id}\n label={type.getName()}\n />\n ))}\n </SingleSelectField>\n <style jsx>{styles}</style>\n </div>\n)\n\nDataTypes.propTypes = {\n currentDataType: PropTypes.string.isRequired,\n onChange: PropTypes.func.isRequired,\n}\n\nexport default DataTypes\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport i18n from '@dhis2/d2-i18n'\nimport { SingleSelectField, SingleSelectOption } from '@dhis2/ui'\nimport { TOTALS, DETAIL } from '../../modules/dataTypes'\n\nimport styles from './styles/Detail.style'\n\nconst getOptions = () => ({\n [TOTALS]: i18n.t('Totals'),\n [DETAIL]: i18n.t('Details'),\n})\n\nexport const Detail = ({ currentValue, onChange }) => {\n const options = getOptions()\n return (\n <div className=\"detail-container\">\n <SingleSelectField\n label={i18n.t('Detail')}\n selected={currentValue}\n onChange={ref => onChange(ref.selected)}\n dense\n >\n {Object.entries(options).map(option => (\n <SingleSelectOption\n value={option[0]}\n key={option[0]}\n label={option[1]}\n />\n ))}\n </SingleSelectField>\n <style jsx>{styles}</style>\n </div>\n )\n}\n\nDetail.propTypes = {\n currentValue: PropTypes.string.isRequired,\n onChange: PropTypes.func.isRequired,\n}\n\nexport default Detail\n","import css from 'styled-jsx/css'\nimport { colors } from '@dhis2/ui'\n\nexport default css`\n .container {\n border: 1px solid ${colors.grey300};\n display: flex;\n min-height: 53px;\n border-right: 0;\n border-left: 0;\n padding: 5px 5px 10px 10px;\n }\n .group-container {\n display: flex;\n flex-direction: column;\n width: inherit;\n min-width: 290px;\n flex-grow: 1;\n }\n`\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { SingleSelectField, SingleSelectOption } from '@dhis2/ui'\n\nimport { Detail } from './Detail'\nimport { dataTypes } from '../../modules/dataTypes'\nimport styles from './styles/Groups.style'\n\nexport const Groups = ({\n dataType,\n detailValue,\n groupId,\n groups,\n onDetailChange,\n onGroupChange,\n}) => {\n let optionItems = groups\n\n if (dataTypes[dataType].defaultGroup) {\n const { id, getName } = dataTypes[dataType].defaultGroup\n optionItems = [{ id, name: getName() }, ...optionItems]\n }\n\n const groupDetail = dataTypes[dataType].groupDetail\n\n return (\n <div className=\"container\">\n <style jsx>{styles}</style>\n <div className=\"group-container\">\n <SingleSelectField\n label={dataTypes[dataType].getGroupLabel()}\n selected={groupId}\n placeholder={\n !groupId && dataTypes[dataType].getPlaceholder\n ? dataTypes[dataType].getPlaceholder()\n : null\n }\n onChange={ref => onGroupChange(ref.selected)}\n dense\n >\n {optionItems.map(item => (\n <SingleSelectOption\n value={item.id}\n key={item.id}\n label={item.name}\n />\n ))}\n </SingleSelectField>\n </div>\n {groupDetail && (\n <Detail currentValue={detailValue} onChange={onDetailChange} />\n )}\n </div>\n )\n}\n\nGroups.propTypes = {\n dataType: PropTypes.string.isRequired,\n detailValue: PropTypes.string.isRequired,\n groupId: PropTypes.string.isRequired,\n groups: PropTypes.array.isRequired,\n onDetailChange: PropTypes.func.isRequired,\n onGroupChange: PropTypes.func.isRequired,\n}\n\nexport default Groups\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { InputField } from '@dhis2/ui'\n\nexport const Filter = ({ text, onChange, onClear, placeholder, type }) => (\n <InputField\n placeholder={placeholder}\n onChange={ref => (ref.value.length ? onChange(ref.value) : onClear())}\n value={text}\n dense\n type={type}\n />\n)\n\nFilter.propTypes = {\n placeholder: PropTypes.string.isRequired,\n type: PropTypes.string.isRequired,\n onChange: PropTypes.func.isRequired,\n onClear: PropTypes.func.isRequired,\n text: PropTypes.string,\n}\n\nFilter.defaultProps = {\n type: 'text',\n}\n\nexport default Filter\n","import css from 'styled-jsx/css'\nimport { colors } from '@dhis2/ui'\n\nexport default css`\n .container {\n border: 1px solid ${colors.grey300};\n background-color: ${colors.white};\n height: 53px;\n border-right: 0;\n border-left: 0;\n border-top: 0;\n padding: 10px 5px 10px 10px;\n }\n`\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport i18n from '@dhis2/d2-i18n'\n\nimport Filter from './Filter/Filter'\nimport styles from './styles/FilterField.style'\n\nexport const FilterField = ({ text, onFilterTextChange, onClearFilter }) => (\n <div className=\"container\">\n <Filter\n placeholder={i18n.t('Search')}\n text={text}\n onChange={onFilterTextChange}\n onClear={onClearFilter}\n />\n <style jsx>{styles}</style>\n </div>\n)\n\nFilterField.propTypes = {\n text: PropTypes.string.isRequired,\n onClearFilter: PropTypes.func.isRequired,\n onFilterTextChange: PropTypes.func.isRequired,\n}\n\nexport default FilterField\n","// Helper functions\n\nexport const onError = error => console.log('Error: ', error)\n","import sortBy from 'lodash/sortBy'\n\nimport { onError } from './index'\nimport { DATA_SETS_CONSTANTS } from '../modules/dataSets'\nimport { CHART_AGGREGATE_AGGREGATABLE_TYPES } from '../modules/dataTypes'\n\n// Request util functions\nconst selectFromResponse = (response, entity, selectorFn) =>\n typeof selectorFn === 'function' ? selectorFn(response) : response[entity]\n\n// Request functions\nconst request = (d2, entity, { paramString, selectorFn } = {}) => {\n const url = `/${entity}?${paramString}&paging=false`\n\n return d2.Api.getApi()\n .get(url)\n .then(response => selectFromResponse(response, entity, selectorFn))\n .catch(onError)\n}\n\nconst requestWithPaging = (\n d2,\n entity,\n { page, paramString, selectorFn } = {}\n) => {\n const paging = `&paging=true&page=${page}`\n const url = `/${entity}?${paramString}${paging}`\n\n return d2.Api.getApi()\n .get(url)\n .then(response => ({\n dimensionItems: selectFromResponse(response, entity, selectorFn),\n nextPage: response.pager.nextPage ? response.pager.page + 1 : null,\n }))\n .catch(onError)\n}\n\n// Fetch functions\nexport const apiFetchDimensions = (d2, nameProp) => {\n const fields = `fields=id,${nameProp}~rename(name),dimensionType,dataDimensionType`\n const order = `order=${nameProp}:asc`\n\n const params = `${fields}&${order}`\n\n return request(d2, 'dimensions', { paramString: params })\n}\n\nexport const apiFetchRecommendedIds = (d2, dxIds, ouIds) => {\n let dimensions = 'dimension='\n\n if (dxIds.length) {\n dimensions = dimensions.concat(`dx:${dxIds.join(';')}`)\n\n if (ouIds.length)\n dimensions = dimensions.concat(`&dimension=ou:${ouIds.join(';')}`)\n } else if (ouIds.length) {\n dimensions = dimensions.concat(`ou:${ouIds.join(';')}`)\n } else {\n return Promise.resolve([])\n }\n\n const url = `/dimensions/recommendations?${dimensions}&fields=id`\n return d2.Api.getApi()\n .get(url)\n .then(response => response.dimensions.map(item => item.id))\n .catch(onError)\n}\n\nexport const itemsByDimensionQuery = {\n resource: `dimensions`,\n id: ({ id }) => `${id}/items`,\n params: ({ searchTerm, page }) => {\n const filters = []\n\n if (searchTerm) {\n filters.push(`name:ilike:${searchTerm}`)\n }\n\n return {\n fields: 'id,displayName~rename(name)',\n order: 'displayName:asc',\n filter: filters,\n paging: true,\n page,\n }\n },\n}\n\nexport const apiFetchItemsByDimension = async ({\n dataEngine,\n dimensionId,\n searchTerm,\n page,\n}) => {\n const itemsByDimensionData = await dataEngine.query(\n { itemsByDimensions: itemsByDimensionQuery },\n {\n variables: {\n id: dimensionId,\n searchTerm,\n page,\n },\n onError,\n }\n )\n\n const response = itemsByDimensionData.itemsByDimensions\n\n return formatResponse(response.items, response.pager)\n}\n\nexport const apiFetchGroups = (d2, dataType, nameProp) => {\n // indicatorGroups does not support shortName\n const name = dataType === 'indicators' ? 'displayName' : nameProp\n const fields = `fields=id,${name}~rename(name)`\n const order = `order=${name}:asc`\n\n const params = `${fields}&${order}`\n\n switch (dataType) {\n case 'indicators': {\n return request(d2, 'indicatorGroups', { paramString: params })\n }\n case 'dataElements': {\n return request(d2, 'dataElementGroups', { paramString: params })\n }\n case 'dataSets': {\n const dataSetGroups = DATA_SETS_CONSTANTS.map(\n ({ id, getName }) => ({\n id,\n name: getName(),\n })\n )\n return Promise.resolve(dataSetGroups)\n }\n case 'eventDataItems':\n case 'programIndicators': {\n return request(d2, 'programs', { paramString: params })\n }\n default:\n return null\n }\n}\n\nexport const apiFetchAlternatives = args => {\n const { d2, dataType, groupDetail, ...queryParams } = args\n\n switch (dataType) {\n case 'indicators': {\n return fetchIndicators({ d2, ...queryParams })\n }\n case 'dataElements': {\n if (groupDetail === 'detail') {\n return fetchDataElementOperands({ d2, ...queryParams })\n } else {\n return fetchDataElements({ d2, ...queryParams })\n }\n }\n case 'dataSets': {\n return fetchDataSets({ d2, ...queryParams })\n }\n case 'eventDataItems': {\n return queryParams.groupId\n ? getEventDataItems({ d2, ...queryParams })\n : null\n }\n case 'programIndicators': {\n return queryParams.groupId\n ? fetchProgramIndicators({ d2, ...queryParams })\n : null\n }\n default:\n return null\n }\n}\n\nconst fetchIndicators = ({ d2, nameProp, groupId, filterText, page }) => {\n const fields = `fields=id,${nameProp}~rename(name),dimensionItemType&order=${nameProp}:asc`\n const order = `order=${nameProp}:asc`\n let filter =\n groupId !== 'ALL' ? `&filter=indicatorGroups.id:eq:${groupId}` : ''\n\n if (filterText) {\n filter = filter.concat(`&filter=${nameProp}:ilike:${filterText}`)\n }\n\n const paramString = `${fields}&${order}${filter}`\n\n return requestWithPaging(d2, 'indicators', { paramString, page })\n}\n\nconst fetchDataElements = ({ d2, groupId, page, filterText, nameProp }) => {\n const idField = groupId === 'ALL' ? 'id' : 'dimensionItem~rename(id)'\n const fields = `fields=${idField},${nameProp}~rename(name)`\n const order = `order=${nameProp}:asc`\n\n let filter = '&filter=domainType:eq:AGGREGATE'\n if (groupId !== 'ALL') {\n filter = filter.concat(`&filter=dataElementGroups.id:eq:${groupId}`)\n }\n\n if (filterText) {\n filter = filter.concat(`&filter=${nameProp}:ilike:${filterText}`)\n }\n\n const paramString = `${fields}&${order}${filter}`\n\n return requestWithPaging(d2, 'dataElements', { paramString, page })\n}\n\nconst fetchDataElementOperands = ({\n d2,\n groupId,\n page,\n filterText,\n nameProp,\n}) => {\n const idField = groupId === 'ALL' ? 'id' : 'dimensionItem~rename(id)'\n const fields = `fields=${idField},${nameProp}~rename(name)`\n const order = `order=${nameProp}:asc`\n\n let filter = ''\n if (groupId !== 'ALL') {\n filter = `&filter=dataElement.dataElementGroups.id:eq:${groupId}`\n }\n\n if (filterText) {\n const textFilter = `&filter=${nameProp}:ilike:${filterText}`\n filter = filter.length ? filter.concat(textFilter) : textFilter\n }\n\n return requestWithPaging(d2, 'dataElementOperands', {\n paramString: `${fields}&${order}${filter}`,\n page,\n })\n}\n\nconst fetchDataSets = ({ d2, page, filterText, nameProp }) => {\n const fields = `fields=dimensionItem~rename(id),${nameProp}~rename(name)`\n const order = `order=${nameProp}:asc`\n const filter = filterText ? `&filter=${nameProp}:ilike:${filterText}` : ''\n\n const paramString = `${fields}&${order}${filter}`\n\n return requestWithPaging(d2, 'dataSets', { paramString, page })\n}\n\nconst fetchProgramDataElements = ({\n d2,\n groupId,\n page,\n filterText,\n nameProp,\n}) => {\n const fields = `fields=dimensionItem~rename(id),${nameProp}~rename(name),valueType`\n const order = `order=${nameProp}:asc`\n const program = `program=${groupId}`\n const filter = filterText ? `&filter=${nameProp}:ilike:${filterText}` : ''\n\n const paramString = `${fields}&${order}&${program}${filter}`\n\n return requestWithPaging(d2, 'programDataElements', { paramString, page })\n}\n\nconst fetchTrackedEntityAttributes = ({\n d2,\n groupId,\n filterText,\n nameProp,\n}) => {\n const fields = `fields=${nameProp}~rename(name),programTrackedEntityAttributes[trackedEntityAttribute[id,${nameProp}~rename(name),valueType]]`\n const filter = filterText ? `&filter=${nameProp}:ilike:${filterText}` : ''\n\n const paramString = `${fields}${filter}`\n\n return request(d2, `programs/${groupId}`, {\n paramString,\n selectorFn: r =>\n Array.isArray(r.programTrackedEntityAttributes)\n ? r.programTrackedEntityAttributes\n .map(a => a.trackedEntityAttribute)\n .map(a => ({\n ...a,\n id: `${groupId}.${a.id}`,\n name: `${r.name} ${a.name}`,\n }))\n : [],\n })\n}\n\nconst getEventDataItems = async (d2, queryParams) => {\n const [dataElementsObj, attributes] = await Promise.all([\n fetchProgramDataElements(d2, queryParams),\n fetchTrackedEntityAttributes(d2, queryParams),\n ])\n\n const filterInvalidTypes = item =>\n Boolean(CHART_AGGREGATE_AGGREGATABLE_TYPES.includes(item.valueType))\n\n return {\n ...dataElementsObj,\n dimensionItems: sortBy(\n [...dataElementsObj.dimensionItems, ...attributes].filter(\n filterInvalidTypes\n ),\n 'name'\n ),\n }\n}\n\nconst fetchProgramIndicators = ({\n d2,\n groupId,\n page,\n filterText,\n nameProp,\n}) => {\n const fields = `fields=dimensionItem~rename(id),${nameProp}~rename(name)`\n const order = `order=${nameProp}:asc`\n const programFilter = `filter=program.id:eq:${groupId}`\n const filter = filterText ? `&filter=${nameProp}:ilike:${filterText}` : ''\n\n const paramString = `${fields}&${order}&${programFilter}${filter}`\n\n return requestWithPaging(d2, 'programIndicators', { paramString, page })\n}\n\nconst formatResponse = (dimensionItems, pager) => ({\n dimensionItems,\n nextPage: pager.nextPage ? pager.page + 1 : null,\n})\n","import React from 'react'\n\nconst DataIcon = () => {\n return (\n <svg\n width=\"16px\"\n height=\"16px\"\n viewBox=\"0 0 16 16\"\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <g\n id=\"Exp\"\n stroke=\"none\"\n strokeWidth=\"1\"\n fill=\"none\"\n fillRule=\"evenodd\"\n >\n <g id=\"Artboard\" transform=\"translate(-7.000000, -9.000000)\">\n <g\n id=\"icon_data_new\"\n transform=\"translate(7.000000, 9.000000)\"\n >\n <rect id=\"frame\" x=\"0\" y=\"0\" width=\"16\" height=\"16\" />\n <g\n id=\"database-2\"\n transform=\"translate(2.000000, 2.000000)\"\n stroke=\"#000000\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <ellipse\n id=\"Oval\"\n cx=\"5.5\"\n cy=\"2.5\"\n rx=\"5.5\"\n ry=\"2.5\"\n />\n <path\n d=\"M0,3 L0,5.59978665 C0,6.9252378 2.46253333,8 5.5,8 C8.53746667,8 11,6.92577118 11,5.59978665 L11,3\"\n id=\"Shape\"\n />\n <path\n d=\"M0,5 L0,8.6 C0,9.92533333 2.46253333,11 5.5,11 C8.53746667,11 11,9.92533333 11,8.6 L11,5\"\n id=\"Shape\"\n />\n </g>\n </g>\n </g>\n </g>\n </svg>\n )\n}\n\nexport default DataIcon\n","import React from 'react'\n\nconst PeriodIcon = () => {\n return (\n <svg\n width=\"16px\"\n height=\"16px\"\n viewBox=\"0 0 16 16\"\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <g\n id=\"Exp\"\n stroke=\"none\"\n strokeWidth=\"1\"\n fill=\"none\"\n fillRule=\"evenodd\"\n >\n <g id=\"Artboard\" transform=\"translate(-32.000000, -9.000000)\">\n <g\n id=\"icon_period_new\"\n transform=\"translate(32.000000, 9.000000)\"\n >\n <rect\n id=\"frame\"\n fill=\"#D8D8D8\"\n opacity=\"0\"\n x=\"0\"\n y=\"0\"\n width=\"16\"\n height=\"16\"\n />\n <g\n id=\"time-clock-circle\"\n transform=\"translate(2.000000, 2.000000)\"\n >\n <circle\n id=\"Oval\"\n stroke=\"#000000\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n cx=\"5.5\"\n cy=\"5.5\"\n r=\"5.5\"\n />\n <path\n d=\"M6,5.29289322 L8.18198052,7.47487373 C8.37724266,7.67013588 8.37724266,7.98671837 8.18198052,8.18198052 C7.98671837,8.37724266 7.67013588,8.37724266 7.47487373,8.18198052 L5.01023174,5.71733852 L5,5.7144165 L5,3.5 C5,3.22385763 5.22385763,3 5.5,3 C5.77614237,3 6,3.22385763 6,3.5 L6,5.29289322 Z\"\n id=\"Combined-Shape\"\n fill=\"#000000\"\n />\n </g>\n </g>\n </g>\n </g>\n </svg>\n )\n}\n\nexport default PeriodIcon\n","import React from 'react'\n\nconst OrgUnitIcon = () => {\n return (\n <svg height=\"16\" viewBox=\"0 0 16 16\" width=\"16\">\n <g fill=\"#212934\" fillRule=\"evenodd\">\n <path d=\"m2 2h1v10h-1z\" />\n <path d=\"m3 4h2v1h-2z\" />\n <path d=\"m3 11h2v1h-2z\" />\n <path d=\"m6 4h2v1h-2z\" />\n <path d=\"m6 11h2v1h-2z\" />\n <path d=\"m9 4h1v1h-1z\" />\n <path d=\"m9 11h1v1h-1z\" />\n <g fillRule=\"nonzero\">\n <path d=\"m14 2h-4v5h4zm-1 1v3h-2v-3z\" />\n <path d=\"m14 9h-4v5h4zm-1 1v3h-2v-3z\" />\n </g>\n </g>\n </svg>\n )\n}\n\nexport default OrgUnitIcon\n","import React from 'react'\n\nconst AssignedCategoriesIcon = () => {\n return (\n <svg height=\"16\" viewBox=\"0 0 16 16\" width=\"16\">\n <g fill=\"#212934\" fillRule=\"evenodd\">\n <path d=\"m2 7h11v1h-11z\" />\n <path d=\"m2 13h11v1h-11z\" />\n <path d=\"m2 2h11v1h-11z\" />\n <path d=\"m7 8h1v5h-1z\" />\n <path d=\"m12 3h1v10h-1z\" />\n <path d=\"m2 3h1v10h-1z\" />\n </g>\n </svg>\n )\n}\n\nexport default AssignedCategoriesIcon\n","import i18n from '@dhis2/d2-i18n'\nimport DataIcon from '../assets/DataIcon'\nimport PeriodIcon from '../assets/PeriodIcon'\nimport OrgUnitIcon from '../assets/OrgUnitIcon'\nimport AssignedCategoriesIcon from '../assets/AssignedCategoriesIcon'\n\nexport const DIMENSION_ID_DATA = 'dx'\nexport const DIMENSION_ID_PERIOD = 'pe'\nexport const DIMENSION_ID_ORGUNIT = 'ou'\nexport const DIMENSION_ID_ASSIGNED_CATEGORIES = 'co'\nexport const DIMENSION_PROP_NO_ITEMS = 'noItems'\n\nexport const getFixedDimensions = () => ({\n [DIMENSION_ID_DATA]: {\n id: DIMENSION_ID_DATA,\n name: i18n.t('Data'),\n iconName: 'DataIcon',\n icon: DataIcon,\n },\n [DIMENSION_ID_PERIOD]: {\n id: DIMENSION_ID_PERIOD,\n name: i18n.t('Period'),\n iconName: 'PeriodIcon',\n icon: PeriodIcon,\n },\n [DIMENSION_ID_ORGUNIT]: {\n id: DIMENSION_ID_ORGUNIT,\n name: i18n.t('Organisation Unit'),\n iconName: 'OrgUnitIcon',\n icon: OrgUnitIcon,\n },\n})\n\nexport const getDynamicDimensions = () => ({\n [DIMENSION_ID_ASSIGNED_CATEGORIES]: {\n id: DIMENSION_ID_ASSIGNED_CATEGORIES,\n name: i18n.t('Assigned Categories'),\n iconName: 'AssignedCategoriesIcon',\n icon: AssignedCategoriesIcon,\n [DIMENSION_PROP_NO_ITEMS]: true,\n },\n})\n\nexport const getPredefinedDimensions = () => ({\n ...getFixedDimensions(),\n ...getDynamicDimensions(),\n})\n\nexport const filterOutPredefinedDimensions = dimensionIds =>\n dimensionIds.filter(\n dimensionId =>\n !Object.keys(getPredefinedDimensions()).includes(dimensionId)\n )\n\nexport const getPredefinedDimensionProp = (dimensionId, propName) =>\n (getPredefinedDimensions()[dimensionId] || {})[propName]\n\nexport const getDimensionById = dimensionId =>\n getPredefinedDimensions()[dimensionId]\n","import React, { Component } from 'react'\nimport PropTypes from 'prop-types'\nimport debounce from 'lodash/debounce'\nimport isEqual from 'lodash/isEqual'\n\nimport ItemSelector from '../ItemSelector/ItemSelector' //TODO: Deprecate ItemSelector once this dependency is removed?\nimport DataTypes from './DataTypesSelector'\nimport Groups from './Groups'\nimport FilterField from '../FilterField'\n\nimport { apiFetchGroups, apiFetchAlternatives } from '../../api/dimensions'\n\nimport {\n DEFAULT_DATATYPE_ID,\n ALL_ID,\n dataTypes,\n defaultGroupId,\n defaultGroupDetail,\n} from '../../modules/dataTypes'\nimport { DIMENSION_ID_DATA } from '../../modules/predefinedDimensions'\n\nconst FIRST_PAGE = 1\n\nconst DEFAULT_ALTERNATIVES = {\n dimensionItems: [],\n nextPage: FIRST_PAGE,\n}\n\nexport class DataDimension extends Component {\n // defaults\n state = {\n dataType: DEFAULT_DATATYPE_ID,\n groups: {\n indicators: [],\n dataElements: [],\n dataElementOperands: [],\n dataSets: [],\n eventDataItems: [],\n programIndicators: [],\n },\n groupId: ALL_ID,\n groupDetail: '',\n filterText: '',\n items: [],\n itemsCopy: [],\n nextPage: null,\n filter: {},\n }\n\n componentDidMount() {\n this.updateGroups()\n }\n\n componentDidUpdate(prevProps) {\n const prevItems = prevProps.selectedDimensions\n const currentItems = this.props.selectedDimensions\n\n if (!isEqual(prevItems, currentItems)) {\n this.setState({\n items: this.state.itemsCopy.filter(\n di => !currentItems.includes(di.id)\n ),\n })\n }\n }\n\n updateGroups = async () => {\n const dataType = this.state.dataType\n\n if (!this.state.groups[dataType].length) {\n const dataTypeGroups = await apiFetchGroups(\n this.props.d2,\n dataType,\n this.props.displayNameProp\n )\n\n const groups = Object.assign({}, this.state.groups, {\n [dataType]: dataTypeGroups,\n })\n this.setState({ groups }, this.updateAlternatives)\n } else {\n this.updateAlternatives()\n }\n }\n\n onDataTypeChange = dataType => {\n if (dataType !== this.state.dataType) {\n const filter = Object.assign({}, this.state.filter, {\n [this.state.dataType]: {\n groupId: this.state.groupId,\n groupDetail: this.state.groupDetail,\n },\n })\n\n const currentFilter = this.state.filter[dataType] || {}\n const groupId = currentFilter.groupId || defaultGroupId(dataType)\n const groupDetail =\n currentFilter.groupDetail || defaultGroupDetail(dataType)\n\n this.setState(\n {\n filter,\n dataType,\n groupId,\n groupDetail,\n filterText: '',\n },\n this.updateGroups\n )\n }\n }\n\n requestMoreItems = () => {\n if (this.state.nextPage) {\n this.updateAlternatives(this.state.nextPage, true)\n }\n }\n\n updateAlternatives = async (page = FIRST_PAGE, concatItems = false) => {\n const { dataType, groupId, groupDetail, filterText } = this.state\n\n const alternatives =\n (await apiFetchAlternatives({\n d2: this.props.d2,\n dataType,\n groupId,\n groupDetail,\n page,\n filterText,\n nameProp: this.props.displayNameProp,\n })) || DEFAULT_ALTERNATIVES\n\n let { dimensionItems } = alternatives\n\n const augmentFn = dataTypes[dataType].augmentAlternatives\n if (augmentFn) {\n dimensionItems = augmentFn(dimensionItems, groupId)\n }\n\n const items = concatItems\n ? this.state.items.concat(dimensionItems)\n : dimensionItems\n\n this.setState({\n items: items.filter(\n di => !this.props.selectedDimensions.includes(di.id)\n ),\n itemsCopy: items,\n nextPage: alternatives.nextPage,\n })\n }\n\n debouncedUpdateAlternatives = debounce(this.updateAlternatives, 300)\n\n onGroupChange = async groupId => {\n if (groupId !== this.state.groupId) {\n this.setState({ groupId }, this.updateAlternatives)\n }\n }\n\n onDetailChange = groupDetail => {\n if (groupDetail !== this.state.groupDetail) {\n this.setState({ groupDetail }, this.updateAlternatives)\n }\n }\n\n onClearFilter = () => {\n this.setState({ filterText: '' }, this.debouncedUpdateAlternatives)\n }\n\n onFilterTextChange = filterText => {\n this.setState({ filterText }, this.debouncedUpdateAlternatives)\n }\n\n selectItems = selectedIds => {\n const itemsToAdd = this.state.items.filter(di =>\n selectedIds.includes(di.id)\n )\n\n this.props.onSelect({\n dimensionId: DIMENSION_ID_DATA,\n items: [\n ...this.props.selectedDimensions.filter(\n item => !selectedIds.includes(item.id)\n ),\n ...itemsToAdd,\n ],\n })\n }\n\n deselectItems = itemIdsToRemove => {\n this.props.onDeselect({\n dimensionId: DIMENSION_ID_DATA,\n itemIdsToRemove,\n })\n }\n\n reorderItems = itemIds =>\n this.props.onReorder({\n dimensionId: DIMENSION_ID_DATA,\n itemIds,\n })\n\n getUnselectedItems = () =>\n this.state.items.filter(\n item => !this.props.selectedDimensions.find(i => i.id === item.id)\n )\n\n render = () => {\n const groups = this.state.groups[this.state.dataType] || []\n\n const filterZone = () => {\n return (\n <div>\n <DataTypes\n currentDataType={this.state.dataType}\n onChange={this.onDataTypeChange}\n />\n <Groups\n dataType={this.state.dataType}\n groups={groups}\n groupId={this.state.groupId}\n onGroupChange={this.onGroupChange}\n onDetailChange={this.onDetailChange}\n detailValue={this.state.groupDetail}\n />\n <FilterField\n text={this.state.filterText}\n onFilterTextChange={this.onFilterTextChange}\n onClearFilter={this.onClearFilter}\n />\n </div>\n )\n }\n\n const unselected = {\n items: this.getUnselectedItems(),\n onSelect: this.selectItems,\n filterText: this.state.filterText,\n requestMoreItems: this.requestMoreItems,\n }\n\n const selected = {\n items: this.props.selectedDimensions,\n infoBoxMessage: this.props.infoBoxMessage,\n dialogId: DIMENSION_ID_DATA,\n onDeselect: this.deselectItems,\n onReorder: this.reorderItems,\n }\n\n return (\n <ItemSelector\n itemClassName=\"data-dimension\"\n unselected={unselected}\n selected={selected}\n >\n {filterZone()}\n </ItemSelector>\n )\n }\n}\n\nDataDimension.propTypes = {\n d2: PropTypes.object.isRequired,\n displayNameProp: PropTypes.string.isRequired,\n selectedDimensions: PropTypes.array.isRequired,\n onDeselect: PropTypes.func.isRequired,\n onReorder: PropTypes.func.isRequired,\n onSelect: PropTypes.func.isRequired,\n infoBoxMessage: PropTypes.string,\n}\n\nDataDimension.defaultProps = {\n selectedDimensions: [],\n onSelect: Function.prototype,\n onDeselect: Function.prototype,\n onReorder: Function.prototype,\n}\n\nexport default DataDimension\n","import i18n from '@dhis2/d2-i18n'\n// generate periods config object: { boolean offset, boolean filterFuturePeriods, boolean reversePeriods }\n\nexport const DAILY = 'DAILY'\nexport const WEEKLY = 'WEEKLY'\nexport const BIWEEKLY = 'BIWEEKLY'\nexport const WEEKLYWED = 'WEEKLYWED'\nexport const WEEKLYTHU = 'WEEKLYTHU'\nexport const WEEKLYSAT = 'WEEKLYSAT'\nexport const WEEKLYSUN = 'WEEKLYSUN'\nexport const MONTHLY = 'MONTHLY'\nexport const BIMONTHLY = 'BIMONTHLY'\nexport const QUARTERLY = 'QUARTERLY'\nexport const SIXMONTHLY = 'SIXMONTHLY'\nexport const SIXMONTHLYAPR = 'SIXMONTHLYAPR'\nexport const YEARLY = 'YEARLY'\nexport const FYNOV = 'FYNOV'\nexport const FYOCT = 'FYOCT'\nexport const FYJUL = 'FYJUL'\nexport const FYAPR = 'FYAPR'\n\nconst PERIOD_TYPE_REGEX = {\n [DAILY]: /^([0-9]{4})([0-9]{2})([0-9]{2})$/, // YYYYMMDD\n [WEEKLY]: /^([0-9]{4})()W([0-9]{1,2})$/, // YYYY\"W\"[1-53]\n [BIWEEKLY]: /^([0-9]{4})BiW([0-9]{1,2})$/, // YYYY\"BiW\"[1-27]\n [WEEKLYWED]: /^([0-9]{4})(Wed)W([0-9]{1,2})$/, // YYYY\"WedW\"[1-53]\n [WEEKLYTHU]: /^([0-9]{4})(Thu)W([0-9]{1,2})$/, // YYYY\"ThuW\"[1-53]\n [WEEKLYSAT]: /^([0-9]{4})(Sat)W([0-9]{1,2})$/, // YYYY\"SatW\"[1-53]\n [WEEKLYSUN]: /^([0-9]{4})(Sun)W([0-9]{1,2})$/, // YYYY\"SunW\"[1-53]\n [MONTHLY]: /^([0-9]{4})([0-9]{2})$/, // YYYYMM\n [BIMONTHLY]: /^([0-9]{4})([0-9]{2})B$/, // YYYY0[1-6]\"B\"\n [QUARTERLY]: /^([0-9]{4})Q([1234])$/, // YYYY\"Q\"[1-4]\n [SIXMONTHLY]: /^([0-9]{4})S([12])$/, // YYYY\"S\"[1/2]\n [SIXMONTHLYAPR]: /^([0-9]{4})AprilS([12])$/, // YYYY\"AprilS\"[1/2]\n // [SIXMONTHLYNOV]: /^([0-9]{4})NovS([12])$/, // YYYY\"NovS\"[1/2] Not supported?\n [YEARLY]: /^([0-9]{4})$/, // YYYY\n [FYNOV]: /^([0-9]{4})Nov$/, // YYYY\"Nov\"\n [FYOCT]: /^([0-9]{4})Oct$/, // YYYY\"Oct\"\n [FYJUL]: /^([0-9]{4})July$/, // YYYY\"July\"\n [FYAPR]: /^([0-9]{4})April$/, // YYYY\"April\"\n}\n\nconst getMonthName = key => {\n const monthNames = [\n i18n.t('January'),\n i18n.t('February'),\n i18n.t('March'),\n i18n.t('April'),\n i18n.t('May'),\n i18n.t('June'),\n i18n.t('July'),\n i18n.t('August'),\n i18n.t('September'),\n i18n.t('October'),\n i18n.t('November'),\n i18n.t('December'),\n ]\n\n return monthNames[key]\n}\n\nconst getDailyPeriodType = (formatYyyyMmDd, fnFilter) => {\n return config => {\n let periods = []\n const offset = parseInt(config.offset, 10)\n const isFilter = config.filterFuturePeriods\n const isReverse = config.reversePeriods\n const year = new Date(Date.now()).getFullYear() + offset\n const date = new Date(`01 Jan ${year}`)\n\n while (date.getFullYear() === year) {\n const period = {}\n period.startDate = formatYyyyMmDd(date)\n period.endDate = period.startDate\n period.name = period.startDate\n period.iso = period.startDate.replace(/-/g, '')\n period.id = period.iso\n periods.push(period)\n date.setDate(date.getDate() + 1)\n }\n\n periods = isFilter ? fnFilter(periods) : periods\n periods = isReverse ? periods.reverse() : periods\n\n return periods\n }\n}\n\nconst getWeeklyPeriodType = (formatYyyyMmDd, weekObj, fnFilter) => {\n // Calculate the first date of an EPI year base on ISO standard ( first week always contains 4th Jan )\n const getEpiWeekStartDay = (year, startDayOfWeek) => {\n const jan4 = new Date(year, 0, 4)\n const jan4DayOfWeek = jan4.getDay()\n const startDate = jan4\n const dayDiff = jan4DayOfWeek - startDayOfWeek\n\n if (dayDiff > 0) {\n startDate.setDate(jan4.getDate() - dayDiff)\n } else if (dayDiff < 0) {\n startDate.setDate(jan4.getDate() - dayDiff)\n startDate.setDate(startDate.getDate() - 7)\n }\n\n return startDate\n }\n\n return config => {\n let periods = []\n const offset = parseInt(config.offset, 10)\n const isFilter = config.filterFuturePeriods\n const isReverse = config.reversePeriods\n const year = new Date(Date.now()).getFullYear() + offset\n const date = getEpiWeekStartDay(year, weekObj.startDay)\n let week = 1\n\n while (date.getFullYear() <= year) {\n const period = {}\n period.startDate = formatYyyyMmDd(date)\n period.iso = `${year}${weekObj.shortName}W${week}`\n period.id = period.iso\n date.setDate(date.getDate() + 6)\n period.endDate = formatYyyyMmDd(date)\n\n const weekNumber = week\n period.name = `${i18n.t('Week {{weekNumber}}', { weekNumber })} - ${\n period.startDate\n } - ${period.endDate}`\n\n // if end date is Jan 4th or later, week belongs to next year\n if (date.getFullYear() > year && date.getDate() >= 4) {\n break\n }\n\n periods.push(period)\n date.setDate(date.getDate() + 1)\n\n week += 1\n }\n\n periods = isFilter ? fnFilter(periods) : periods\n periods = isReverse ? periods.reverse() : periods\n\n return periods\n }\n}\n\nconst getBiWeeklyPeriodType = (formatYyyyMmDd, fnFilter) => {\n return config => {\n let periods = []\n const offset = parseInt(config.offset, 10)\n const isFilter = config.filterFuturePeriods\n const isReverse = config.reversePeriods\n const year = new Date(Date.now()).getFullYear() + offset\n const date = new Date(`01 Jan ${year}`)\n const day = date.getDay()\n let biWeek = 1\n\n if (day <= 4) {\n date.setDate(date.getDate() - (day - 1))\n } else {\n date.setDate(date.getDate() + (8 - day))\n }\n\n while (date.getFullYear() <= year) {\n const period = {}\n\n period.iso = `${year}BiW${biWeek}`\n period.id = period.iso\n period.startDate = formatYyyyMmDd(date)\n date.setDate(date.getDate() + 13)\n\n period.endDate = formatYyyyMmDd(date)\n const biWeekNumber = biWeek\n period.name = `${i18n.t('Bi-Week {{biWeekNumber}}', {\n biWeekNumber,\n })} - ${period.startDate} - ${period.endDate}`\n\n // if end date is Jan 4th or later, biweek belongs to next year\n if (date.getFullYear() > year && date.getDate() >= 4) {\n break\n }\n\n periods.push(period)\n\n date.setDate(date.getDate() + 1)\n\n biWeek += 1\n }\n\n periods = isFilter ? fnFilter(periods) : periods\n periods = isReverse ? periods.reverse() : periods\n\n return periods\n }\n}\n\nconst getMonthlyPeriodType = (formatYyyyMmDd, fnFilter) => {\n const formatIso = date => {\n const y = date.getFullYear()\n let m = String(date.getMonth() + 1)\n\n m = m.length < 2 ? `0${m}` : m\n\n return y + m\n }\n\n return config => {\n let periods = []\n\n const offset = parseInt(config.offset, 10)\n const isFilter = config.filterFuturePeriods\n const isReverse = config.reversePeriods\n const year = new Date(Date.now()).getFullYear() + offset\n const date = new Date(`31 Dec ${year}`)\n\n while (date.getFullYear() === year) {\n const period = {}\n\n period.endDate = formatYyyyMmDd(date)\n date.setDate(1)\n period.startDate = formatYyyyMmDd(date)\n const monthName = getMonthName(date.getMonth())\n period.name = `${monthName} ${year}`\n period.iso = formatIso(date)\n period.id = period.iso\n\n periods.push(period)\n date.setDate(0)\n }\n\n periods = isFilter ? fnFilter(periods) : periods\n periods = isReverse ? periods : periods.reverse()\n // Months are collected backwards. If isReverse is true, then do nothing. Else reverse to correct order and return.\n\n return periods\n }\n}\n\nconst getBiMonthlyPeriodType = (formatYyyyMmDd, fnFilter) => {\n return config => {\n let periods = []\n const offset = parseInt(config.offset, 10)\n const isFilter = config.filterFuturePeriods\n const isReverse = config.reversePeriods\n const year = new Date(Date.now()).getFullYear() + offset\n const date = new Date(`31 Dec ${year}`)\n let index = 6\n\n while (date.getFullYear() === year) {\n const period = {}\n\n period.endDate = formatYyyyMmDd(date)\n date.setDate(0)\n date.setDate(1)\n period.startDate = formatYyyyMmDd(date)\n const monthStart = getMonthName(date.getMonth())\n const monthEnd = getMonthName(date.getMonth() + 1)\n const fullYear = date.getFullYear()\n period.name = `${monthStart} - ${monthEnd} ${fullYear}`\n period.iso = `${year}0${index}B`\n period.id = period.iso\n periods.push(period)\n date.setDate(0)\n\n index--\n }\n\n periods = isFilter ? fnFilter(periods) : periods\n periods = isReverse ? periods : periods.reverse()\n // Bi-months are collected backwards. If isReverse is true, then do nothing. Else reverse to correct order and return.\n\n return periods\n }\n}\n\nconst getQuarterlyPeriodType = (formatYyyyMmDd, fnFilter) => {\n return config => {\n let periods = []\n const offset = parseInt(config.offset, 10)\n const isFilter = config.filterFuturePeriods\n const isReverse = config.reversePeriods\n const year = new Date(Date.now()).getFullYear() + offset\n const date = new Date(`31 Dec ${year}`)\n let quarter = 4\n\n while (date.getFullYear() === year) {\n const period = {}\n period.endDate = formatYyyyMmDd(date)\n date.setDate(0)\n date.setDate(0)\n date.setDate(1)\n period.startDate = formatYyyyMmDd(date)\n const monthStart = getMonthName(date.getMonth())\n const monthEnd = getMonthName(date.getMonth() + 2)\n const fullYear = date.getFullYear()\n period.name = `${monthStart} - ${monthEnd} ${fullYear}`\n period.iso = `${year}Q${quarter}`\n period.id = period.iso\n periods.push(period)\n date.setDate(0)\n quarter -= 1\n }\n\n periods = isFilter ? fnFilter(periods) : periods\n periods = isReverse ? periods : periods.reverse()\n // Quarters are collected backwards. If isReverse is true, then do nothing. Else reverse to correct order and return.\n\n return periods\n }\n}\n\nconst getSixMonthlyPeriodType = fnFilter => {\n return config => {\n let periods = []\n const offset = parseInt(config.offset, 10)\n const isFilter = config.filterFuturePeriods\n const isReverse = config.reversePeriods\n const year = new Date(Date.now()).getFullYear() + offset\n\n let period = {}\n period.startDate = `${year}-01-01`\n period.endDate = `${year}-06-30`\n period.name = `${getMonthName(0)} - ${getMonthName(5)} ${year}`\n period.iso = `${year}S1`\n period.id = period.iso\n periods.push(period)\n\n period = {}\n period.startDate = `${year}-07-01`\n period.endDate = `${year}-12-31`\n period.name = `${getMonthName(6)} - ${getMonthName(11)} ${year}`\n period.iso = `${year}S2`\n period.id = period.iso\n periods.push(period)\n\n periods = isFilter ? fnFilter(periods) : periods\n periods = isReverse ? periods.reverse() : periods\n\n return periods\n }\n}\n\nconst getSixMonthlyAprilPeriodType = fnFilter => {\n return config => {\n let periods = []\n const offset = parseInt(config.offset, 10)\n const isFilter = config.filterFuturePeriods\n const isReverse = config.reversePeriods\n const year = new Date(Date.now()).getFullYear() + offset\n\n let period = {}\n period.startDate = `${year}-04-01`\n period.endDate = `${year}-09-30`\n period.name = `${getMonthName(3)} - ${getMonthName(8)} ${year}`\n period.iso = `${year}AprilS1`\n period.id = period.iso\n periods.push(period)\n\n period = {}\n period.startDate = `${year}-10-01`\n period.endDate = `${year + 1}-03-31`\n period.name = `${getMonthName(9)} ${year} - ${getMonthName(2)} ${year +\n 1}`\n period.iso = `${year}AprilS2`\n period.id = period.iso\n periods.push(period)\n\n periods = isFilter ? fnFilter(periods) : periods\n periods = isReverse ? periods.reverse() : periods\n\n return periods\n }\n}\n\nconst getYearlyPeriodType = (formatYyyyMmDd, fnFilter) => {\n return config => {\n let periods = []\n const offset = parseInt(config.offset, 10)\n const isFilter = config.filterFuturePeriods\n const isReverse = config.reversePeriods\n const year = new Date(Date.now()).getFullYear() + offset\n const date = new Date(`31 Dec ${year}`)\n\n while (year - date.getFullYear() < 10) {\n const period = {}\n period.endDate = formatYyyyMmDd(date)\n date.setMonth(0, 1)\n period.startDate = formatYyyyMmDd(date)\n const dateString = date.getFullYear().toString()\n period.name = dateString\n period.iso = date.getFullYear().toString()\n period.id = period.iso.toString()\n periods.push(period)\n date.setDate(0)\n }\n\n periods = isFilter ? fnFilter(periods) : periods\n periods = isReverse ? periods : periods.reverse()\n // Years are collected backwards. If isReverse is true, then do nothing. Else reverse to correct order and return.\n\n return periods\n }\n}\n\nconst getFinancialOctoberPeriodType = (formatYyyyMmDd, fnFilter) => {\n return config => {\n let periods = []\n const offset = parseInt(config.offset, 10)\n const isFilter = config.filterFuturePeriods\n const isReverse = config.reversePeriods\n const year = new Date(Date.now()).getFullYear() + offset\n const date = new Date(`30 Sep ${year + 1}`)\n\n for (let i = 0; i < 10; i++) {\n const period = {}\n period.endDate = formatYyyyMmDd(date)\n date.setYear(date.getFullYear() - 1)\n date.setDate(date.getDate() + 1)\n period.startDate = formatYyyyMmDd(date)\n const yearStart = date.getFullYear()\n const yearEnd = date.getFullYear() + 1\n period.name = `${getMonthName(9)} ${yearStart} - ${getMonthName(\n 8\n )} ${yearEnd}`\n period.id = `${date.getFullYear()}Oct`\n periods.push(period)\n date.setDate(date.getDate() - 1)\n }\n\n periods = isFilter ? fnFilter(periods) : periods\n periods = isReverse ? periods : periods.reverse()\n // FinancialOctober periods are collected backwards. If isReverse is true, then do nothing. Else reverse to correct order and return.\n\n return periods\n }\n}\n\nconst getFinancialNovemberPeriodType = (formatYyyyMmDd, fnFilter) => {\n return config => {\n let periods = []\n const offset = parseInt(config.offset, 10)\n const isFilter = config.filterFuturePeriods\n const isReverse = config.reversePeriods\n const year = new Date(Date.now()).getFullYear() + offset\n const date = new Date(`31 Oct ${year + 1}`)\n\n for (let i = 0; i < 10; i++) {\n const period = {}\n period.endDate = formatYyyyMmDd(date)\n date.setYear(date.getFullYear() - 1)\n date.setDate(date.getDate() + 1)\n period.startDate = formatYyyyMmDd(date)\n const yearStart = date.getFullYear()\n const yearEnd = date.getFullYear() + 1\n period.name = `${getMonthName(10)} ${yearStart} - ${getMonthName(\n 9\n )} ${yearEnd}`\n period.id = `${date.getFullYear()}Nov`\n periods.push(period)\n date.setDate(date.getDate() - 1)\n }\n\n periods = isFilter ? fnFilter(periods) : periods\n periods = isReverse ? periods : periods.reverse()\n // FinancialNovember periods are collected backwards. If isReverse is true, then do nothing. Else reverse to correct order and return.\n\n return periods\n }\n}\n\nconst getFinancialJulyPeriodType = (formatYyyyMmDd, fnFilter) => {\n return config => {\n let periods = []\n const offset = parseInt(config.offset, 10)\n const isFilter = config.filterFuturePeriods\n const isReverse = config.reversePeriods\n const year = new Date(Date.now()).getFullYear() + offset\n const date = new Date(`30 Jun ${year + 1}`)\n\n for (let i = 0; i < 10; i++) {\n const period = {}\n period.endDate = formatYyyyMmDd(date)\n date.setYear(date.getFullYear() - 1)\n date.setDate(date.getDate() + 1)\n period.startDate = formatYyyyMmDd(date)\n const yearStart = date.getFullYear()\n const yearEnd = date.getFullYear() + 1\n period.name = `${getMonthName(6)} ${yearStart} - ${getMonthName(\n 5\n )} ${yearEnd}`\n period.id = `${date.getFullYear()}July`\n periods.push(period)\n date.setDate(date.getDate() - 1)\n }\n\n periods = isFilter ? fnFilter(periods) : periods\n periods = isReverse ? periods : periods.reverse()\n // FinancialJuly periods are collected backwards. If isReverse is true, then do nothing. Else reverse to correct order and return.\n\n return periods\n }\n}\n\nconst getFinancialAprilPeriodType = (formatYyyyMmDd, fnFilter) => {\n return config => {\n let periods = []\n const offset = parseInt(config.offset, 10)\n const isFilter = config.filterFuturePeriods\n const isReverse = config.reversePeriods\n const year = new Date(Date.now()).getFullYear() + offset\n const date = new Date(`31 Mar ${year + 1}`)\n\n for (let i = 0; i < 10; i++) {\n const period = {}\n period.endDate = formatYyyyMmDd(date)\n date.setYear(date.getFullYear() - 1)\n date.setDate(date.getDate() + 1)\n period.startDate = formatYyyyMmDd(date)\n const yearStart = date.getFullYear()\n const yearEnd = date.getFullYear() + 1\n period.name = `${getMonthName(3)} ${yearStart} - ${getMonthName(\n 2\n )} ${yearEnd}`\n period.id = `${date.getFullYear()}April`\n periods.push(period)\n date.setDate(date.getDate() - 1)\n }\n\n periods = isFilter ? fnFilter(periods) : periods\n periods = isReverse ? periods : periods.reverse()\n // FinancialApril periods are collected backwards. If isReverse is true, then do nothing. Else reverse to correct order and return.\n\n return periods\n }\n}\n\nconst formatYyyyMmDd = date => {\n const y = date.getFullYear()\n let m = String(date.getMonth() + 1)\n let d = String(date.getDate())\n\n m = m.length < 2 ? `0${m}` : m\n d = d.length < 2 ? `0${d}` : d\n\n return `${y}-${m}-${d}`\n}\n\nconst filterFuturePeriods = periods => {\n const array = []\n const now = new Date(Date.now())\n\n for (let i = 0; i < periods.length; i++) {\n if (new Date(periods[i].startDate) <= now) {\n array.push(periods[i])\n }\n }\n\n return array\n}\n\nconst getOptions = () => [\n {\n id: DAILY,\n getPeriods: getDailyPeriodType(formatYyyyMmDd, filterFuturePeriods),\n name: i18n.t('Daily'),\n },\n {\n id: WEEKLY,\n getPeriods: getWeeklyPeriodType(\n formatYyyyMmDd,\n { shortName: '', startDay: 1 },\n filterFuturePeriods\n ),\n name: i18n.t('Weekly'),\n },\n {\n id: BIWEEKLY,\n getPeriods: getBiWeeklyPeriodType(formatYyyyMmDd, filterFuturePeriods),\n name: i18n.t('Bi-weekly'),\n },\n {\n id: WEEKLYWED,\n getPeriods: getWeeklyPeriodType(\n formatYyyyMmDd,\n { shortName: 'Wed', startDay: 3 },\n filterFuturePeriods\n ),\n name: i18n.t('Weekly (Start Wednesday)'),\n },\n {\n id: WEEKLYTHU,\n getPeriods: getWeeklyPeriodType(\n formatYyyyMmDd,\n { shortName: 'Thu', startDay: 4 },\n filterFuturePeriods\n ),\n name: i18n.t('Weekly (Start Thursday)'),\n },\n {\n id: WEEKLYSAT,\n getPeriods: getWeeklyPeriodType(\n formatYyyyMmDd,\n { shortName: 'Sat', startDay: 6 },\n filterFuturePeriods\n ),\n name: i18n.t('Weekly (Start Saturday)'),\n },\n {\n id: WEEKLYSUN,\n getPeriods: getWeeklyPeriodType(\n formatYyyyMmDd,\n { shortName: 'Sun', startDay: 7 },\n filterFuturePeriods\n ),\n name: i18n.t('Weekly (Start Sunday)'),\n },\n {\n id: MONTHLY,\n getPeriods: getMonthlyPeriodType(formatYyyyMmDd, filterFuturePeriods),\n name: i18n.t('Monthly'),\n },\n {\n id: BIMONTHLY,\n getPeriods: getBiMonthlyPeriodType(formatYyyyMmDd, filterFuturePeriods),\n name: i18n.t('Bi-monthly'),\n },\n {\n id: QUARTERLY,\n getPeriods: getQuarterlyPeriodType(formatYyyyMmDd, filterFuturePeriods),\n name: i18n.t('Quarterly'),\n },\n {\n id: SIXMONTHLY,\n getPeriods: getSixMonthlyPeriodType(filterFuturePeriods),\n name: i18n.t('Six-monthly'),\n },\n {\n id: SIXMONTHLYAPR,\n getPeriods: getSixMonthlyAprilPeriodType(filterFuturePeriods),\n name: i18n.t('Six-monthly April'),\n },\n {\n id: YEARLY,\n getPeriods: getYearlyPeriodType(formatYyyyMmDd, filterFuturePeriods),\n name: i18n.t('Yearly'),\n },\n {\n id: FYNOV,\n getPeriods: getFinancialNovemberPeriodType(\n formatYyyyMmDd,\n filterFuturePeriods\n ),\n name: i18n.t('Financial year (Start November)'),\n },\n {\n id: FYOCT,\n getPeriods: getFinancialOctoberPeriodType(\n formatYyyyMmDd,\n filterFuturePeriods\n ),\n name: i18n.t('Financial year (Start October)'),\n },\n {\n id: FYJUL,\n getPeriods: getFinancialJulyPeriodType(\n formatYyyyMmDd,\n filterFuturePeriods\n ),\n name: i18n.t('Financial year (Start July)'),\n },\n {\n id: FYAPR,\n getPeriods: getFinancialAprilPeriodType(\n formatYyyyMmDd,\n filterFuturePeriods\n ),\n name: i18n.t('Financial year (Start April)'),\n },\n]\n\nexport const getFixedPeriodsOptionsById = id =>\n getOptions().find(option => option.id === id)\n\nexport const getFixedPeriodsOptions = () => getOptions()\n\nexport const getYearOffsetFromNow = yearStr =>\n parseInt(yearStr) - new Date(Date.now()).getFullYear()\n\nexport const parsePeriodCode = (code, allowedTypes) => {\n const periodTypes = Object.keys(PERIOD_TYPE_REGEX)\n let i = 0\n let type = undefined\n let match = undefined\n\n while (i < periodTypes.length && !match) {\n type = periodTypes[i]\n match = code.match(PERIOD_TYPE_REGEX[type])\n i++\n }\n\n if (\n !match ||\n (Array.isArray(allowedTypes) && !allowedTypes.some(t => t === type))\n ) {\n return undefined\n }\n\n const period = getFixedPeriodsOptionsById(type)\n const offset = getYearOffsetFromNow(match[1])\n const options = period.getPeriods({ offset })\n\n return {\n id: period.id,\n name: period.name,\n year: match[1],\n options,\n }\n}\n","import css from 'styled-jsx/css'\nimport { spacers } from '@dhis2/ui'\n\nexport default css`\n .leftSection {\n flex-grow: 1;\n }\n .leftSection > :global(.filterElement),\n .rightSection > :global(.filterElement) {\n margin: 0;\n }\n .rightSection {\n width: 120px;\n margin-left: ${spacers.dp8};\n }\n`\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport i18n from '@dhis2/d2-i18n'\nimport { SingleSelectField, InputField, SingleSelectOption } from '@dhis2/ui'\n\nimport { getFixedPeriodsOptions } from './utils/fixedPeriods'\nimport styles from './styles/PeriodFilter.style'\n\nconst FixedPeriodFilter = ({\n allowedPeriodTypes,\n currentPeriodType,\n currentYear,\n onSelectPeriodType,\n onSelectYear,\n}) => {\n const onlyAllowedTypeIsSelected =\n Array.isArray(allowedPeriodTypes) &&\n allowedPeriodTypes.length === 1 &&\n allowedPeriodTypes[0] === currentPeriodType\n\n return (\n <>\n <div className=\"leftSection\">\n <SingleSelectField\n label={i18n.t('Period type')}\n onChange={({ selected }) => onSelectPeriodType(selected)}\n dense\n selected={currentPeriodType}\n disabled={onlyAllowedTypeIsSelected}\n className=\"filterElement\"\n >\n {getFixedPeriodsOptions()\n .filter(\n option =>\n !allowedPeriodTypes ||\n allowedPeriodTypes.some(\n type => type === option.id\n )\n )\n .map(option => (\n <SingleSelectOption\n key={option.id}\n value={option.id}\n label={option.name}\n />\n ))}\n </SingleSelectField>\n </div>\n <div className=\"rightSection\">\n <InputField\n label={i18n.t('Year')}\n className=\"filterElement\"\n type=\"number\"\n placeholder={i18n.t('Select year')}\n value={currentYear}\n onChange={({ value }) => onSelectYear(value)}\n dense\n ></InputField>\n </div>\n <style jsx>{styles}</style>\n </>\n )\n}\n\nFixedPeriodFilter.propTypes = {\n currentPeriodType: PropTypes.string.isRequired,\n currentYear: PropTypes.string.isRequired,\n onSelectPeriodType: PropTypes.func.isRequired,\n onSelectYear: PropTypes.func.isRequired,\n allowedPeriodTypes: PropTypes.arrayOf(PropTypes.string),\n}\n\nexport default FixedPeriodFilter\n","import i18n from '@dhis2/d2-i18n'\n\nexport const DAYS = 'Days'\nexport const WEEKS = 'Weeks'\nexport const BIWEEKS = 'BiWeeks'\nexport const MONTHS = 'Months'\nexport const BIMONTHS = 'BiMonths'\nexport const QUARTERS = 'Quarters'\nexport const SIXMONTHS = 'SixMonths'\nexport const FINACIALYEARS = 'FinancialYears'\nexport const YEARS = 'Years'\n\nconst getDaysPeriodType = () => [\n { id: 'TODAY', name: i18n.t('Today') },\n { id: 'YESTERDAY', name: i18n.t('Yesterday') },\n { id: 'LAST_3_DAYS', name: i18n.t('Last 3 days') },\n { id: 'LAST_7_DAYS', name: i18n.t('Last 7 days') },\n { id: 'LAST_14_DAYS', name: i18n.t('Last 14 days') },\n { id: 'LAST_30_DAYS', name: i18n.t('Last 30 days') },\n { id: 'LAST_60_DAYS', name: i18n.t('Last 60 days') },\n { id: 'LAST_90_DAYS', name: i18n.t('Last 90 days') },\n { id: 'LAST_180_DAYS', name: i18n.t('Last 180 days') },\n]\n\nconst getWeeksPeriodType = () => [\n { id: 'THIS_WEEK', name: i18n.t('This week') },\n { id: 'LAST_WEEK', name: i18n.t('Last week') },\n { id: 'LAST_4_WEEKS', name: i18n.t('Last 4 weeks') },\n { id: 'LAST_12_WEEKS', name: i18n.t('Last 12 weeks') },\n { id: 'LAST_52_WEEKS', name: i18n.t('Last 52 weeks') },\n { id: 'WEEKS_THIS_YEAR', name: i18n.t('Weeks this year') },\n]\n\nconst getBiWeeksPeriodType = () => [\n { id: 'THIS_BIWEEK', name: i18n.t('This bi-week') },\n { id: 'LAST_BIWEEK', name: i18n.t('Last bi-week') },\n { id: 'LAST_4_BIWEEKS', name: i18n.t('Last 4 bi-weeks') },\n]\n\nconst getMonthsPeriodType = () => [\n { id: 'THIS_MONTH', name: i18n.t('This month') },\n { id: 'LAST_MONTH', name: i18n.t('Last month') },\n { id: 'LAST_3_MONTHS', name: i18n.t('Last 3 months') },\n { id: 'LAST_6_MONTHS', name: i18n.t('Last 6 months') },\n { id: 'LAST_12_MONTHS', name: i18n.t('Last 12 months') },\n {\n id: 'MONTHS_THIS_YEAR',\n name: i18n.t('Months this year'),\n },\n]\n\nconst getBiMonthsPeriodType = () => [\n { id: 'THIS_BIMONTH', name: i18n.t('This bi-month') },\n { id: 'LAST_BIMONTH', name: i18n.t('Last bi-month') },\n {\n id: 'LAST_6_BIMONTHS',\n name: i18n.t('Last 6 bi-months'),\n },\n {\n id: 'BIMONTHS_THIS_YEAR',\n name: i18n.t('Bi-months this year'),\n },\n]\n\nconst getQuartersPeriodType = () => [\n { id: 'THIS_QUARTER', name: i18n.t('This quarter') },\n { id: 'LAST_QUARTER', name: i18n.t('Last quarter') },\n { id: 'LAST_4_QUARTERS', name: i18n.t('Last 4 quarters') },\n {\n id: 'QUARTERS_THIS_YEAR',\n name: i18n.t('Quarters this year'),\n },\n]\n\nconst getSixMonthsPeriodType = () => [\n { id: 'THIS_SIX_MONTH', name: i18n.t('This six-month') },\n { id: 'LAST_SIX_MONTH', name: i18n.t('Last six-month') },\n {\n id: 'LAST_2_SIXMONTHS',\n name: i18n.t('Last 2 six-month'),\n },\n]\n\nconst getFinancialYearsPeriodType = () => [\n {\n id: 'THIS_FINANCIAL_YEAR',\n name: i18n.t('This financial year'),\n },\n {\n id: 'LAST_FINANCIAL_YEAR',\n name: i18n.t('Last financial year'),\n },\n {\n id: 'LAST_5_FINANCIAL_YEARS',\n name: i18n.t('Last 5 financial years'),\n },\n]\n\nconst getYearsPeriodType = () => [\n { id: 'THIS_YEAR', name: i18n.t('This year') },\n { id: 'LAST_YEAR', name: i18n.t('Last year') },\n { id: 'LAST_5_YEARS', name: i18n.t('Last 5 years') },\n]\n\nconst getOptions = () => [\n { id: DAYS, getPeriods: () => getDaysPeriodType(), name: i18n.t('Days') },\n {\n id: WEEKS,\n getPeriods: () => getWeeksPeriodType(),\n name: i18n.t('Weeks'),\n },\n {\n id: BIWEEKS,\n getPeriods: () => getBiWeeksPeriodType(),\n name: i18n.t('Bi-weeks'),\n },\n {\n id: MONTHS,\n getPeriods: () => getMonthsPeriodType(),\n name: i18n.t('Months'),\n },\n {\n id: BIMONTHS,\n getPeriods: () => getBiMonthsPeriodType(),\n name: i18n.t('Bi-months'),\n },\n {\n id: QUARTERS,\n getPeriods: () => getQuartersPeriodType(),\n name: i18n.t('Quarters'),\n },\n {\n id: SIXMONTHS,\n getPeriods: () => getSixMonthsPeriodType(),\n name: i18n.t('Six-months'),\n },\n {\n id: FINACIALYEARS,\n getPeriods: () => getFinancialYearsPeriodType(),\n name: i18n.t('Financial Years'),\n },\n {\n id: YEARS,\n getPeriods: () => getYearsPeriodType(),\n name: i18n.t('Years'),\n },\n]\n\nexport const getRelativePeriodsOptionsById = id =>\n getOptions().find(option => option.id === id)\n\nexport const getRelativePeriodsOptions = () => getOptions()\n\nexport const getRelativePeriodIds = () =>\n Object.values(getOptions())\n .map(option => option.getPeriods().map(period => period.id))\n .flat()\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport i18n from '@dhis2/d2-i18n'\nimport { SingleSelectField, SingleSelectOption } from '@dhis2/ui'\n\nimport { getRelativePeriodsOptions } from './utils/relativePeriods'\nimport styles from './styles/PeriodFilter.style'\n\nconst RelativePeriodFilter = ({ currentFilter, onSelectFilter }) => (\n <div className=\"leftSection\">\n <SingleSelectField\n label={i18n.t('Period type')}\n onChange={({ selected }) => onSelectFilter(selected)}\n dense\n selected={currentFilter}\n className=\"filterElement\"\n >\n {getRelativePeriodsOptions().map(option => (\n <SingleSelectOption\n key={option.id}\n value={option.id}\n label={option.name}\n />\n ))}\n </SingleSelectField>\n <style jsx>{styles}</style>\n </div>\n)\n\nRelativePeriodFilter.propTypes = {\n currentFilter: PropTypes.string.isRequired,\n onSelectFilter: PropTypes.func.isRequired,\n}\n\nexport default RelativePeriodFilter\n","import css from 'styled-jsx/css'\nimport { spacers, colors } from '@dhis2/ui'\n\nexport default css`\n .filterContainer {\n display: flex;\n margin-bottom: ${spacers.dp12};\n margin-top: ${spacers.dp8};\n }\n .emptyList {\n text-align: center;\n font-size: 14px;\n line-height: 16px;\n margin: ${spacers.dp24} 0 0;\n color: ${colors.grey700};\n }\n .rightHeader {\n font-size: 14px;\n font-weight: 400;\n }\n .leftHeader {\n padding: ${spacers.dp8} 0;\n }\n`\n","import css from 'styled-jsx/css'\nimport { colors, spacers, theme } from '@dhis2/ui'\n\nexport default css`\n .wrapper:last-child {\n margin-bottom: ${spacers.dp4};\n }\n .chip {\n display: inline-block;\n background: ${colors.grey200};\n font-size: 14px;\n line-height: 16px;\n padding: 2px ${spacers.dp8} 2px ${spacers.dp4};\n margin-top: ${spacers.dp4};\n margin-left: ${spacers.dp8};\n border-radius: 3px;\n user-select: none;\n }\n\n .chip:hover {\n background: ${colors.grey300};\n }\n\n .selected {\n background: ${theme.secondary100};\n color: ${theme.secondary900};\n }\n\n .selected :global(.icon path) {\n fill: ${theme.secondary700};\n }\n\n .selected:hover {\n background: #c9edeb;\n }\n\n .highlighted,\n .highlighted:hover {\n background: ${theme.secondary800};\n color: ${colors.white};\n }\n\n .highlighted :global(.icon path) {\n fill: ${colors.white};\n }\n\n .disabled {\n opacity: 0.3;\n cursor: not-allowed;\n }\n\n .icon,\n .label {\n line-height: 18px;\n }\n\n .icon {\n margin-right: ${spacers.dp4};\n display: inline-flex;\n vertical-align: text-bottom;\n }\n\n .label {\n font-size: 14px;\n }\n`\n","import React from 'react'\nimport cx from 'classnames'\nimport propTypes from '@dhis2/prop-types'\n\nimport styles from './styles/TransferOption.style'\n\nexport const TransferOption = ({\n disabled,\n label,\n highlighted,\n selected,\n onClick,\n onDoubleClick,\n value,\n icon,\n}) => {\n return (\n <div data-value={value} className=\"wrapper\">\n <div\n className={cx('chip', { highlighted, disabled, selected })}\n onClick={event => {\n if (disabled) return\n onClick({ label, value }, event)\n }}\n onDoubleClick={event => {\n if (disabled) return\n onDoubleClick({ label, value }, event)\n }}\n >\n <span className=\"icon\">{icon}</span>\n <span className=\"label\">{label}</span>\n </div>\n\n <style jsx>{styles}</style>\n </div>\n )\n}\n\nTransferOption.propTypes = {\n label: propTypes.string.isRequired,\n value: propTypes.string.isRequired,\n disabled: propTypes.bool,\n highlighted: propTypes.bool,\n icon: propTypes.node,\n selected: propTypes.bool,\n onClick: propTypes.func,\n onDoubleClick: propTypes.func,\n}\n","import React from 'react'\n\nexport default (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n >\n <path\n fill=\"#6E7A8A\"\n d=\"M8,4 C10.209139,4 12,5.790861 12,8 C12,10.209139 10.209139,12 8,12 C5.790861,12 4,10.209139 4,8 C4,5.790861 5.790861,4 8,4 Z M8,5 C6.34314575,5 5,6.34314575 5,8 C5,9.65685425 6.34314575,11 8,11 C9.65685425,11 11,9.65685425 11,8 C11,6.34314575 9.65685425,5 8,5 Z M8.5,6 L8.5,7.5 L9.5,7.5 L9.5,8.5 L7.5,8.5 L7.5,6 L8.5,6 Z\"\n />\n </svg>\n)\n","export const TRANSFER_OPTIONS_WIDTH = '420px'\n\nexport const TRANSFER_SELECTED_WIDTH = '298px'\n\nexport const TRANSFER_HEIGHT = '512px'\n","import React, { Component } from 'react'\nimport PropTypes from 'prop-types'\nimport { TabBar, Tab, Transfer } from '@dhis2/ui'\nimport i18n from '@dhis2/d2-i18n'\n\nimport FixedPeriodFilter from './FixedPeriodFilter'\nimport RelativePeriodFilter from './RelativePeriodFilter'\nimport { MONTHS, getRelativePeriodsOptionsById } from './utils/relativePeriods'\nimport { MONTHLY, getFixedPeriodsOptionsById } from './utils/fixedPeriods'\nimport styles from '../styles/DimensionSelector.style'\nimport { TransferOption } from '../TransferOption'\nimport PeriodIcon from '../../assets/DimensionItemIcons/PeriodIcon' //TODO: Reimplement the icon\nimport {\n TRANSFER_HEIGHT,\n TRANSFER_OPTIONS_WIDTH,\n TRANSFER_SELECTED_WIDTH,\n} from '../../modules/dimensionSelectorHelper'\n\nconst defaultRelativePeriodType = getRelativePeriodsOptionsById(MONTHS)\nconst defaultFixedPeriodType = getFixedPeriodsOptionsById(MONTHLY)\nconst defaultFixedPeriodYear = new Date().getFullYear()\nconst fixedPeriodConfig = year => ({\n offset: year - defaultFixedPeriodYear,\n filterFuturePeriods: false,\n reversePeriods: false,\n})\n\nclass PeriodTransfer extends Component {\n state = {\n allPeriods: defaultRelativePeriodType.getPeriods(),\n selectedPeriods: [],\n isRelative: true,\n relativeFilter: {\n periodType: defaultRelativePeriodType.id,\n },\n fixedFilter: {\n periodType: defaultFixedPeriodType.id,\n year: defaultFixedPeriodYear.toString(),\n },\n }\n\n constructor(props) {\n super(props)\n\n this.state.selectedPeriods = this.props.initialSelectedPeriods\n }\n\n onIsRelativeClick = isRelative => {\n if (this.state.isRelative !== isRelative) {\n this.setState({ isRelative })\n this.setState({\n allPeriods: isRelative\n ? getRelativePeriodsOptionsById(\n this.state.relativeFilter.periodType\n ).getPeriods()\n : getFixedPeriodsOptionsById(\n this.state.fixedFilter.periodType\n ).getPeriods(\n fixedPeriodConfig(Number(this.state.fixedFilter.year))\n ),\n })\n }\n }\n\n renderLeftHeader = () => (\n <>\n <TabBar>\n <Tab\n selected={this.state.isRelative}\n onClick={() => this.onIsRelativeClick(true)}\n >\n {i18n.t('Relative periods')}\n </Tab>\n <Tab\n selected={!this.state.isRelative}\n onClick={() => this.onIsRelativeClick(false)}\n >\n {i18n.t('Fixed periods')}\n </Tab>\n </TabBar>\n <div className=\"filterContainer\">\n {this.state.isRelative ? (\n <RelativePeriodFilter\n currentFilter={this.state.relativeFilter.periodType}\n onSelectFilter={filter => {\n this.setState({\n relativeFilter: { periodType: filter },\n })\n this.setState({\n allPeriods: getRelativePeriodsOptionsById(\n filter\n ).getPeriods(),\n })\n }}\n />\n ) : (\n <FixedPeriodFilter\n currentPeriodType={this.state.fixedFilter.periodType}\n currentYear={this.state.fixedFilter.year}\n onSelectPeriodType={periodType => {\n this.onSelectFixedPeriods({\n periodType,\n year: this.state.fixedFilter.year,\n })\n }}\n onSelectYear={year => {\n this.onSelectFixedPeriods({\n periodType: this.state.fixedFilter.periodType,\n year,\n })\n }}\n />\n )}\n </div>\n <style jsx>{styles}</style>\n </>\n )\n\n renderRightHeader = () => (\n <>\n <p className=\"rightHeader\">{i18n.t('Selected Periods')}</p>\n <style jsx>{styles}</style>\n </>\n )\n\n onSelectFixedPeriods = fixedFilter => {\n this.setState({\n fixedFilter,\n allPeriods: getFixedPeriodsOptionsById(\n fixedFilter.periodType\n ).getPeriods(fixedPeriodConfig(Number(fixedFilter.year))),\n })\n }\n\n renderEmptySelection = () => (\n <>\n <p className=\"emptyList\">{i18n.t('No periods selected')}</p>\n <style jsx>{styles}</style>\n </>\n )\n\n render = () => (\n <Transfer\n onChange={({ selected }) => {\n const formattedItems = selected.map(id => ({\n id,\n name: [\n ...this.state.allPeriods,\n ...this.state.selectedPeriods,\n ].find(item => item.id === id).name,\n }))\n this.setState({ selectedPeriods: formattedItems })\n this.props.onSelect(formattedItems)\n }}\n selected={this.state.selectedPeriods.map(period => period.id)}\n leftHeader={this.renderLeftHeader()}\n enableOrderChange\n height={TRANSFER_HEIGHT}\n optionsWidth={TRANSFER_OPTIONS_WIDTH}\n selectedWidth={TRANSFER_SELECTED_WIDTH}\n selectedEmptyComponent={this.renderEmptySelection()}\n rightHeader={this.renderRightHeader()}\n rightFooter={this.props.rightFooter}\n options={[\n ...this.state.allPeriods,\n ...this.state.selectedPeriods,\n ].map(({ id, name }) => ({\n label: name,\n value: id,\n }))}\n renderOption={props => (\n <TransferOption {...props} icon={PeriodIcon} />\n )}\n ></Transfer>\n )\n}\n\nPeriodTransfer.propTypes = {\n onSelect: PropTypes.func.isRequired,\n initialSelectedPeriods: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string,\n name: PropTypes.string,\n })\n ),\n rightFooter: PropTypes.node,\n}\n\nPeriodTransfer.defaultProps = {\n initialSelectedPeriods: [],\n}\n\nexport default PeriodTransfer\n","import React from 'react'\nimport PropTypes from 'prop-types'\n\nimport PeriodTransfer from './PeriodTransfer'\nimport { DIMENSION_ID_PERIOD } from '../../modules/predefinedDimensions'\n\nexport const PeriodDimension = ({ onSelect, selectedPeriods, rightFooter }) => {\n const selectPeriods = periods => {\n onSelect({\n dimensionId: DIMENSION_ID_PERIOD,\n items: periods,\n })\n }\n\n return (\n <PeriodTransfer\n onSelect={selectPeriods}\n initialSelectedPeriods={selectedPeriods}\n rightFooter={rightFooter}\n />\n )\n}\n\nPeriodDimension.propTypes = {\n onSelect: PropTypes.func.isRequired,\n rightFooter: PropTypes.node,\n selectedPeriods: PropTypes.array,\n}\n\nPeriodDimension.defaultProps = {\n selectedPeriods: [],\n}\n\nexport default PeriodDimension\n","import css from 'styled-jsx/css'\nimport { spacers } from '@dhis2/ui'\n\nexport default css`\n .row {\n display: flex;\n margin-bottom: ${spacers.dp8};\n }\n`\n","import React, { Component } from 'react'\nimport propTypes from '@dhis2/prop-types'\nimport i18n from '@dhis2/d2-i18n'\nimport { SingleSelectField, SingleSelectOption } from '@dhis2/ui'\nimport FixedPeriodFilter from './FixedPeriodFilter.js'\nimport {\n parsePeriodCode,\n getFixedPeriodsOptionsById as getPeriodById,\n getYearOffsetFromNow,\n} from './utils/fixedPeriods.js'\nimport styles from './styles/FixedPeriodSelect.style.js'\n\nclass FixedPeriodSelect extends Component {\n state = {\n periodType: '',\n year: '',\n options: null,\n }\n\n static getDerivedStateFromProps({ value, allowedPeriodTypes }) {\n const period = parsePeriodCode(value, allowedPeriodTypes)\n\n if (!period) {\n return null\n }\n\n return {\n periodType: period.id,\n year: period.year,\n options: period.options,\n }\n }\n\n onSelectPeriodType = periodType => {\n this.setState({\n periodType,\n options: this.getUpdatedOptions(periodType, this.state.year),\n })\n this.props.onChange()\n }\n\n onSelectYear = year => {\n this.setState({\n year,\n options: this.getUpdatedOptions(this.state.periodType, year),\n })\n this.props.onChange()\n }\n\n onSelectPeriod = ({ selected: periodId }, event) => {\n const period = this.state.options.find(({ id }) => id === periodId)\n this.props.onChange(period, event)\n }\n\n getUpdatedOptions(periodType, year) {\n const offset = getYearOffsetFromNow(year)\n return getPeriodById(periodType).getPeriods({ offset })\n }\n\n render() {\n return (\n <div\n data-test={this.props.dataTest}\n className={this.props.className}\n >\n <div className=\"row\">\n <FixedPeriodFilter\n allowedPeriodTypes={this.props.allowedPeriodTypes}\n currentPeriodType={this.state.periodType}\n currentYear={this.state.year}\n onSelectPeriodType={this.onSelectPeriodType}\n onSelectYear={this.onSelectYear}\n />\n </div>\n\n {this.state.periodType && this.state.year && (\n <SingleSelectField\n label={i18n.t('Period')}\n onChange={this.onSelectPeriod}\n dense\n selected={this.props.value}\n >\n {this.state.options.map(option => (\n <SingleSelectOption\n key={option.id}\n value={option.id}\n label={option.name}\n />\n ))}\n </SingleSelectField>\n )}\n <style jsx>{styles}</style>\n </div>\n )\n }\n}\n\nFixedPeriodSelect.defaultProps = {\n dataTest: 'dhis2-analytics-fixedperiodselect',\n value: '',\n}\n\nFixedPeriodSelect.propTypes = {\n onChange: propTypes.func.isRequired,\n allowedPeriodTypes: propTypes.arrayOf(propTypes.string),\n className: propTypes.string,\n dataTest: propTypes.string,\n value: propTypes.string,\n}\n\nexport default FixedPeriodSelect\n","import { onError } from './index'\n\nexport const apiFetchOrganisationUnitRoot = d2 => {\n const endPoint = '/organisationUnits'\n const fields = ['id', 'displayName', 'name']\n const url = `${endPoint}?paging=false&userDataViewFallback=true&fields=${fields.join(\n ','\n )}`\n\n return d2.Api.getApi()\n .get(url)\n .then(({ organisationUnits }) => organisationUnits[0])\n .catch(onError)\n}\n\n/**\n * Fetch organisation units\n * @returns {Promise<T | never>}\n */\nexport const apiFetchOrganisationUnits = (d2, displayNameProperty) => {\n const fields = [\n 'id',\n 'path',\n `${displayNameProperty}~rename(displayName)`,\n 'children::isNotEmpty',\n ]\n\n return d2.models.organisationUnits.list({\n paging: false,\n level: 1,\n fields: fields.join(','),\n userDataViewFallback: true,\n })\n}\n\n/**\n * Fetch organisation unit groups\n * @returns {*}\n */\nexport const apiFetchOrganisationUnitGroups = (d2, displayNameProperty) => {\n const endPoint = '/organisationUnitGroups'\n const fields = ['id', `${displayNameProperty}~rename(displayName)`, 'name']\n const url = `${endPoint}?paging=false&fields=${fields.join(',')}`\n\n return d2.Api.getApi()\n .get(url)\n .then(({ organisationUnitGroups }) => organisationUnitGroups)\n .catch(onError)\n}\n\n/**\n * Fetch organisation unit levels\n * @returns {*}\n */\nexport const apiFetchOrganisationUnitLevels = d2 => {\n const endPoint = '/organisationUnitLevels'\n const fields = ['id', 'displayName', 'name', 'level']\n const url = `${endPoint}?paging=false&fields=${fields.join(',')}`\n\n return d2.Api.getApi()\n .get(url)\n .then(({ organisationUnitLevels }) => organisationUnitLevels)\n .catch(onError)\n}\n","const LEVEL_ID_PREFIX = 'LEVEL'\nconst GROUP_ID_PREFIX = 'OU_GROUP'\n\nconst hasGroupPrefix = id =>\n id.substr(0, GROUP_ID_PREFIX.length) === GROUP_ID_PREFIX\n\nconst hasLevelPrefix = id =>\n id.substr(0, LEVEL_ID_PREFIX.length) === LEVEL_ID_PREFIX\n\nconst stripLevelPrefix = id =>\n hasLevelPrefix(id) ? id.substr(LEVEL_ID_PREFIX.length + 1) : id\n\nconst stripGroupPrefix = id =>\n hasGroupPrefix(id) ? id.substr(GROUP_ID_PREFIX.length + 1) : id\n\nconst removePrefix = id => stripGroupPrefix(stripLevelPrefix(id))\n\nexport const ouIdHelper = Object.freeze({\n addLevelPrefix: id => `${LEVEL_ID_PREFIX}-${removePrefix(id)}`,\n addGroupPrefix: id => `${GROUP_ID_PREFIX}-${removePrefix(id)}`,\n removePrefix,\n hasGroupPrefix,\n hasLevelPrefix,\n})\n","import React, { Component, Fragment } from 'react'\nimport PropTypes from 'prop-types'\nimport sortBy from 'lodash/sortBy'\nimport { OrgUnitSelector, userOrgUnits } from '@dhis2/d2-ui-org-unit-dialog'\nimport { CircularLoader, colors } from '@dhis2/ui'\n\nimport {\n apiFetchOrganisationUnitGroups,\n apiFetchOrganisationUnitLevels,\n apiFetchOrganisationUnits,\n} from '../../api/organisationUnits'\nimport { ouIdHelper } from '../../modules/ouIdHelper'\nimport { DIMENSION_ID_ORGUNIT } from '../../modules/predefinedDimensions'\nimport styles from './styles/OrgUnitDimension.style'\n\nexport const defaultState = {\n root: undefined,\n roots: undefined,\n // use \"selected\" property for cloning org units while user org unit(s) is (are) selected\n selected: [],\n ouLevels: [],\n ouGroups: [],\n showOrgUnitsTree: true,\n}\n\nclass OrgUnitDimension extends Component {\n constructor(props) {\n super(props)\n\n this.state = defaultState\n this.userOrgUnitIds = userOrgUnits.map(ou => ou.id)\n\n this.loadOrgUnitTree(props.d2, props.displayNameProperty)\n this.loadOrgUnitGroups(props.d2, props.displayNameProperty)\n this.loadOrgUnitLevels(props.d2)\n }\n\n componentDidUpdate(prevProps) {\n const previousId = prevProps.current ? prevProps.current.id : null\n const currentId = this.props.current ? this.props.current.id : null\n\n // remount org units selector component to ensure\n // only selected org units are expanded\n if (previousId !== currentId) {\n this.hideOrgUnitsTree()\n\n setTimeout(this.showOrgUnitsTree, 0)\n }\n }\n\n showOrgUnitsTree = () => {\n this.setState({ showOrgUnitsTree: true })\n }\n\n hideOrgUnitsTree = () => {\n this.setState({ showOrgUnitsTree: false })\n }\n\n getUserOrgUnitsFromIds = ids => {\n return userOrgUnits.filter(ou => ids.includes(ou.id))\n }\n\n onLevelChange = event => {\n const levelIds = event.target.value.filter(id => !!id)\n\n this.props.onSelect({\n dimensionId: DIMENSION_ID_ORGUNIT,\n items: [\n ...this.props.ouItems.filter(\n ou => !ouIdHelper.hasLevelPrefix(ou.id)\n ),\n ...levelIds.map(id => {\n const levelOu = this.state.ouLevels.find(ou => ou.id === id)\n\n return {\n ...levelOu,\n id: ouIdHelper.addLevelPrefix(levelOu.id),\n }\n }),\n ],\n })\n }\n\n onGroupChange = event => {\n const groupIds = event.target.value.filter(id => !!id)\n\n this.props.onSelect({\n dimensionId: DIMENSION_ID_ORGUNIT,\n items: [\n ...this.props.ouItems.filter(\n ou => !ouIdHelper.hasGroupPrefix(ou.id)\n ),\n ...groupIds.map(id => {\n const groupOu = this.state.ouGroups.find(ou => ou.id === id)\n\n return {\n ...groupOu,\n id: ouIdHelper.addGroupPrefix(id),\n }\n }),\n ],\n })\n }\n\n onDeselectAllClick = () =>\n this.props.onDeselect({\n dimensionId: DIMENSION_ID_ORGUNIT,\n itemIdsToRemove: this.props.ouItems.map(ou => ou.id),\n })\n\n loadOrgUnitTree = (d2, displayNameProperty) => {\n apiFetchOrganisationUnits(d2, displayNameProperty)\n .then(rootLevel => rootLevel.toArray())\n .then(roots => {\n this.setState({\n roots,\n root: roots[0],\n })\n })\n }\n\n loadOrgUnitGroups = (d2, displayNameProperty) => {\n apiFetchOrganisationUnitGroups(\n d2,\n displayNameProperty\n ).then(organisationUnitGroups =>\n this.setState({ ouGroups: organisationUnitGroups })\n )\n }\n\n loadOrgUnitLevels = d2 => {\n apiFetchOrganisationUnitLevels(d2).then(organisationUnitLevels =>\n this.setState({\n ouLevels: sortBy(organisationUnitLevels, ['level']),\n })\n )\n }\n\n handleOrgUnitClick = (event, orgUnit) => {\n const selected = this.props.ouItems\n\n if (selected.some(ou => ou.path === orgUnit.path)) {\n this.props.onDeselect({\n dimensionId: DIMENSION_ID_ORGUNIT,\n itemIdsToRemove: [orgUnit.id],\n })\n } else {\n this.props.onSelect({\n dimensionId: DIMENSION_ID_ORGUNIT,\n items: [\n ...selected,\n {\n ...orgUnit,\n name: orgUnit.name || orgUnit.displayName,\n },\n ],\n })\n }\n }\n\n handleUserOrgUnitClick = (event, checked) => {\n if (checked) {\n if (!this.state.selected.length) {\n this.setState({\n selected: this.props.ouItems.slice(),\n })\n }\n\n this.props.onSelect({\n dimensionId: DIMENSION_ID_ORGUNIT,\n items: [\n ...this.props.ouItems.filter(ou =>\n this.userOrgUnitIds.includes(ou.id)\n ),\n userOrgUnits.find(ou => ou.id === event.target.name),\n ],\n })\n } else {\n if (\n this.props.ouItems.length === 1 &&\n this.state.selected.length > 0\n ) {\n this.props.onSelect({\n dimensionId: DIMENSION_ID_ORGUNIT,\n items: this.state.selected,\n })\n } else {\n this.props.onDeselect({\n dimensionId: DIMENSION_ID_ORGUNIT,\n itemIdsToRemove: [event.target.name],\n })\n }\n }\n }\n\n handleMultipleOrgUnitsSelect = orgUnits => {\n const selected = this.props.ouItems\n\n this.props.onSelect({\n dimensionId: DIMENSION_ID_ORGUNIT,\n items: [\n ...selected,\n ...orgUnits.reduce((obj, ou) => {\n // avoid duplicates when clicking \"Select children\" multiple times\n if (!selected.find(i => i.id === ou.id)) {\n obj.push({ ...ou, name: ou.name || ou.displayName })\n }\n\n return obj\n }, []),\n ],\n })\n }\n\n render = () => {\n const ids = this.props.ouItems.map(ou => ou.id)\n const selected = this.props.ouItems.filter(\n ou =>\n !this.userOrgUnitIds.includes(ou.id) &&\n !ouIdHelper.hasLevelPrefix(ou.id) &&\n !ouIdHelper.hasGroupPrefix(ou.id)\n )\n\n const userOrgUnits = this.getUserOrgUnitsFromIds(ids)\n const level = ids\n .filter(ouIdHelper.hasLevelPrefix)\n .map(ouIdHelper.removePrefix)\n const group = ids\n .filter(ouIdHelper.hasGroupPrefix)\n .map(ouIdHelper.removePrefix)\n\n return (\n <Fragment>\n {this.state.root && this.state.showOrgUnitsTree && (\n <OrgUnitSelector\n d2={this.props.d2}\n root={this.state.root}\n roots={this.state.roots}\n selected={selected}\n userOrgUnits={userOrgUnits}\n level={level}\n group={group}\n levelOptions={this.state.ouLevels}\n groupOptions={this.state.ouGroups}\n onLevelChange={this.onLevelChange}\n onGroupChange={this.onGroupChange}\n onDeselectAllClick={this.onDeselectAllClick}\n handleUserOrgUnitClick={this.handleUserOrgUnitClick}\n handleOrgUnitClick={this.handleOrgUnitClick}\n handleMultipleOrgUnitsSelect={\n this.handleMultipleOrgUnitsSelect\n }\n checkboxColor=\"secondary\"\n deselectAllTooltipFontColor={colors.grey900}\n deselectAllTooltipBackgroundColor={colors.grey300}\n displayNameProperty={this.props.displayNameProperty}\n isUserDataViewFallback={true}\n />\n )}\n {!this.state.root && (\n <div className=\"loader\">\n <CircularLoader />\n </div>\n )}\n <style jsx>{styles}</style>\n </Fragment>\n )\n }\n}\n\nOrgUnitDimension.propTypes = {\n current: PropTypes.object,\n d2: PropTypes.object,\n displayNameProperty: PropTypes.string,\n ouItems: PropTypes.array,\n onDeselect: PropTypes.func,\n onSelect: PropTypes.func,\n}\n\nexport default OrgUnitDimension\n","import React from 'react'\n\nexport default (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n >\n <path\n fill=\"#6E7A8A\"\n d=\"M11,5 L11,11 L5,11 L5,5 L11,5 Z M10,6 L6,6 L6,10 L10,10 L10,6 Z\"\n />\n </svg>\n)\n","import React, { useState, useEffect, useCallback } from 'react'\nimport PropTypes from 'prop-types'\nimport { Transfer, InputField } from '@dhis2/ui'\nimport i18n from '@dhis2/d2-i18n'\n\nimport styles from '../styles/DimensionSelector.style'\nimport { TransferOption } from '../TransferOption'\nimport GenericIcon from '../../assets/DimensionItemIcons/GenericIcon'\nimport {\n TRANSFER_HEIGHT,\n TRANSFER_OPTIONS_WIDTH,\n TRANSFER_SELECTED_WIDTH,\n} from '../../modules/dimensionSelectorHelper'\n\nconst useDebounce = (value, delay) => {\n const [debouncedValue, setDebouncedValue] = useState(value)\n useEffect(() => {\n const handler = setTimeout(() => {\n setDebouncedValue(value)\n }, delay)\n return () => {\n clearTimeout(handler)\n }\n }, [value, delay])\n return debouncedValue\n}\nconst LeftHeader = ({ filter, setFilter }) => (\n <>\n <div className=\"leftHeader\">\n <InputField\n value={filter}\n onChange={({ value }) => setFilter(value)}\n placeholder={i18n.t('Search')}\n />\n </div>\n <style jsx>{styles}</style>\n </>\n)\n\nLeftHeader.propTypes = {\n filter: PropTypes.string,\n setFilter: PropTypes.func,\n}\n\nconst EmptySelection = () => (\n <>\n <p className=\"emptyList\">{i18n.t('No items selected')}</p>\n <style jsx>{styles}</style>\n </>\n)\nconst RightHeader = () => (\n <>\n <p className=\"rightHeader\">{i18n.t('Selected Items')}</p>\n <style jsx>{styles}</style>\n </>\n)\nconst SourceEmptyPlaceholder = ({\n loading,\n filter,\n options,\n noItemsMessage,\n}) => {\n let message = ''\n if (!loading && !options.length && !filter) {\n message = noItemsMessage\n } else if (!loading && !options.length && filter) {\n message = i18n.t('Nothing found for {{searchTerm}}', {\n searchTerm: filter,\n })\n }\n return (\n message && (\n <>\n <p className=\"emptyList\">{message}</p>\n <style jsx>{styles}</style>\n </>\n )\n )\n}\n\nSourceEmptyPlaceholder.propTypes = {\n filter: PropTypes.string,\n loading: PropTypes.bool,\n noItemsMessage: PropTypes.string,\n options: PropTypes.array,\n}\n\nconst ItemSelector = ({\n initialSelected,\n noItemsMessage,\n onFetch,\n onSelect,\n rightFooter,\n}) => {\n const [state, setState] = useState({\n filter: '',\n selected: initialSelected,\n options: [],\n loading: true,\n nextPage: null,\n })\n const setFilter = filter => setState(state => ({ ...state, filter }))\n const setSelected = selected => setState(state => ({ ...state, selected }))\n const debouncedFilter = useDebounce(state.filter, 500)\n const fetchItems = async page => {\n setState(state => ({ ...state, loading: true }))\n const result = await onFetch(page, state.filter)\n const newOptions = result.dimensionItems?.map(\n ({ id, name, disabled }) => ({\n label: name,\n value: id,\n disabled,\n })\n )\n setState(state => ({\n ...state,\n loading: false,\n options: page > 1 ? [...state.options, ...newOptions] : newOptions,\n nextPage: result.nextPage,\n }))\n }\n useEffect(() => {\n fetchItems(1)\n }, [debouncedFilter])\n const onChange = useCallback(\n newSelected => {\n const newSelectedWithLabel = newSelected.map(value => ({\n value,\n label: [...state.options, ...state.selected].find(\n item => item.value === value\n ).label,\n }))\n setSelected(newSelectedWithLabel)\n onSelect(newSelectedWithLabel)\n },\n [state.options, state.selected]\n )\n const onEndReached = useCallback(() => {\n if (state.nextPage) {\n fetchItems(state.nextPage)\n }\n }, [state.nextPage])\n return (\n <Transfer\n onChange={({ selected }) => onChange(selected)}\n selected={state.selected.map(item => item.value)}\n options={[...state.options, ...state.selected]}\n loading={state.loading}\n loadingPicked={state.loading}\n sourceEmptyPlaceholder={\n <SourceEmptyPlaceholder\n loading={state.loading}\n filter={debouncedFilter}\n options={state.options}\n noItemsMessage={noItemsMessage}\n />\n }\n onEndReached={onEndReached}\n leftHeader={\n <LeftHeader filter={state.filter} setFilter={setFilter} />\n }\n enableOrderChange\n height={TRANSFER_HEIGHT}\n optionsWidth={TRANSFER_OPTIONS_WIDTH}\n selectedWidth={TRANSFER_SELECTED_WIDTH}\n selectedEmptyComponent={<EmptySelection />}\n rightHeader={<RightHeader />}\n rightFooter={rightFooter}\n renderOption={props => (\n <TransferOption {...props} icon={GenericIcon} />\n )}\n />\n )\n}\n\nItemSelector.propTypes = {\n onFetch: PropTypes.func.isRequired,\n onSelect: PropTypes.func.isRequired,\n initialSelected: PropTypes.arrayOf(\n PropTypes.exact({\n label: PropTypes.string.isRequired,\n value: PropTypes.string.isRequired,\n })\n ),\n noItemsMessage: PropTypes.string,\n rightFooter: PropTypes.node,\n}\n\nItemSelector.defaultProps = {\n initialSelected: [],\n}\n\nexport default ItemSelector\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport i18n from '@dhis2/d2-i18n'\nimport { useDataEngine } from '@dhis2/app-runtime'\n\nimport ItemSelector from './ItemSelector'\nimport { apiFetchItemsByDimension } from '../../api/dimensions'\n\nexport const DynamicDimension = ({\n dimensionId,\n onSelect,\n selectedItems,\n rightFooter,\n}) => {\n const dataEngine = useDataEngine()\n\n const fetchItems = (page, searchTerm) =>\n apiFetchItemsByDimension({\n dataEngine,\n dimensionId,\n searchTerm,\n page,\n })\n\n const onSelectItems = selectedItem =>\n onSelect({\n dimensionId: dimensionId,\n items: selectedItem.map(item => ({\n id: item.value,\n name: item.label,\n })),\n })\n\n return (\n <ItemSelector\n initialSelected={selectedItems.map(item => ({\n value: item.id,\n label: item.name,\n }))}\n noItemsMessage={i18n.t('Nothing found')}\n onFetch={fetchItems}\n onSelect={onSelectItems}\n rightFooter={rightFooter}\n />\n )\n}\n\nDynamicDimension.propTypes = {\n dimensionId: PropTypes.string.isRequired,\n selectedItems: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string,\n name: PropTypes.string,\n })\n ).isRequired,\n onSelect: PropTypes.func.isRequired,\n rightFooter: PropTypes.node,\n}\n\nDynamicDimension.defaultProps = {\n selectedItems: [],\n onSelect: Function.prototype,\n}\n\nexport default DynamicDimension\n","export const styles = {\n label: {\n display: 'flex',\n outline: 'none',\n },\n}\n","import React, { Component } from 'react'\nimport PropTypes from 'prop-types'\n\nimport { styles } from './styles/DimensionLabel.style'\nimport {\n getPredefinedDimensionProp,\n DIMENSION_PROP_NO_ITEMS,\n} from '../../../modules/predefinedDimensions'\n\nexport class DimensionLabel extends Component {\n static propTypes = {\n id: PropTypes.string.isRequired,\n isDeactivated: PropTypes.bool.isRequired,\n onClick: PropTypes.func.isRequired,\n children: PropTypes.array,\n }\n\n onLabelClick = () => {\n if (\n !this.props.isDeactivated &&\n !getPredefinedDimensionProp(this.props.id, DIMENSION_PROP_NO_ITEMS)\n ) {\n this.props.onClick(this.props.id)\n }\n }\n\n onKeyPress = event => {\n if (event.key === 'Enter' && event.ctrlKey === false) {\n this.onLabelClick()\n }\n }\n\n render() {\n return (\n <div\n data-test={`dimension-id-${this.props.id}`}\n className=\"label\"\n onClick={this.onLabelClick}\n onKeyPress={this.onKeyPress}\n tabIndex={0}\n style={styles.label}\n >\n {this.props.children}\n </div>\n )\n }\n}\n\nexport default DimensionLabel\n","import { colors, theme } from '@dhis2/ui'\n\nexport const styles = {\n toolTip: {\n color: colors.white,\n backgroundColor: '#4a4a4a',\n boxShadow: 'none',\n width: '160px',\n borderRadius: '3px',\n position: 'relative',\n top: '5px',\n fontSize: '12px',\n padding: '7px 9px',\n },\n recommendedIcon: {\n backgroundColor: theme.secondary300,\n height: '8px',\n width: '8px',\n borderRadius: '4px',\n marginLeft: '5px',\n display: 'inline-block',\n cursor: 'pointer',\n },\n}\n","import React, { Component } from 'react'\nimport PropTypes from 'prop-types'\nimport Paper from '@material-ui/core/Paper'\nimport Popper from '@material-ui/core/Popper'\nimport i18n from '@dhis2/d2-i18n'\n\nimport { styles } from './styles/RecommendedIcon.style'\n\nexport class RecommendedIcon extends Component {\n state = { anchorEl: null }\n\n onMouseOver = event => {\n this.setState({ anchorEl: event.currentTarget })\n }\n\n onMouseExit = () => {\n this.setState({ anchorEl: null })\n }\n\n showTooltip = () => (\n <Popper\n anchorEl={this.state.anchorEl}\n open={Boolean(this.state.anchorEl)}\n placement=\"bottom\"\n >\n <Paper style={styles.toolTip}>\n {i18n.t('Dimension recommended with selected data')}\n </Paper>\n </Popper>\n )\n\n render() {\n const TooltipOnHover = this.state.anchorEl ? this.showTooltip() : null\n\n return this.props.isRecommended ? (\n <div\n style={styles.recommendedIcon}\n onMouseOver={this.onMouseOver}\n onMouseLeave={this.onMouseExit}\n >\n {TooltipOnHover}\n </div>\n ) : null\n }\n}\n\nRecommendedIcon.propTypes = {\n isRecommended: PropTypes.bool.isRequired,\n}\n\nexport default RecommendedIcon\n","import React from 'react'\nimport PropTypes from 'prop-types'\n\nconst MoreHorizontalIcon = ({ style }) => {\n return (\n <svg\n style={{\n ...style,\n }}\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"22\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n >\n <path d=\"M0 0h24v24H0z\" fill=\"none\" />\n <path d=\"M6 10c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm12 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm-6 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z\" />\n </svg>\n )\n}\n\nMoreHorizontalIcon.propTypes = {\n style: PropTypes.array,\n}\n\nexport default MoreHorizontalIcon\n","import React from 'react'\nimport IconButton from '@material-ui/core/IconButton'\nimport PropTypes from 'prop-types'\n\nimport MoreHorizontalIcon from '../../../assets/MoreHorizontalIcon'\n\nexport const OptionsButton = ({ style, onClick }) => (\n <IconButton style={style} onClick={onClick}>\n <MoreHorizontalIcon />\n </IconButton>\n)\n\nOptionsButton.propTypes = {\n style: PropTypes.object,\n onClick: PropTypes.func,\n}\n\nexport default OptionsButton\n","import React from 'react'\n\nconst DynamicDimensionIcon = () => {\n return (\n <svg\n width=\"16px\"\n height=\"16px\"\n viewBox=\"0 0 16 16\"\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <g\n id=\"Exp\"\n stroke=\"none\"\n strokeWidth=\"1\"\n fill=\"none\"\n fillRule=\"evenodd\"\n >\n <g id=\"Artboard\" transform=\"translate(-80.000000, -9.000000)\">\n <g\n id=\"icon_dimension_new\"\n transform=\"translate(80.000000, 9.000000)\"\n >\n <rect id=\"frame\" x=\"0\" y=\"0\" width=\"16\" height=\"16\" />\n <g\n id=\"module\"\n transform=\"translate(4.000000, 4.000000)\"\n stroke=\"#000000\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path\n d=\"M0.33209728,1.1742111 L3.16308174,0.0641666694 C3.37911767,-0.0213888898 3.61963794,-0.0213888898 3.83567387,0.0641666694 L6.66665833,1.1742111 C6.87300668,1.26220739 7.00497003,1.467 6.99984343,1.69127776 L6.99984343,5.30887771 C7.00517859,5.53285411 6.87376309,5.73756106 6.66790272,5.82594437 L3.83691826,6.93629991 C3.62076407,7.02123336 3.38048032,7.02123336 3.16432613,6.93629991 L0.333341668,5.82594437 C0.126993317,5.73794808 -0.00497002591,5.53315547 0.000156574133,5.30887771 L0.000156574133,1.69127776 C-0.00517858533,1.46730136 0.126236906,1.26259441 0.33209728,1.1742111 Z\"\n id=\"Shape\"\n />\n <path\n d=\"M3.5,2.72795833 L0.322,1.48195833\"\n id=\"Shape\"\n />\n <path\n d=\"M3.5,2.72795833 L6.678,1.48195833\"\n id=\"Shape\"\n />\n <path d=\"M3.5,6.78125 L3.5,2.72795833\" id=\"Shape\" />\n </g>\n </g>\n </g>\n </g>\n </svg>\n )\n}\n\nexport default DynamicDimensionIcon\n","import { colors, theme } from '@dhis2/ui'\n\nexport const styles = {\n labelWrapper: {\n padding: '2px 5px 2px 0',\n },\n text: {\n color: colors.grey900,\n userSelect: 'none',\n cursor: 'pointer',\n wordBreak: 'break-word',\n fontSize: '14px',\n },\n textDeactivated: {\n cursor: 'auto',\n color: colors.grey500,\n },\n item: {\n display: 'flex',\n minHeight: '24px',\n marginTop: 3,\n marginBottom: 3,\n alignItems: 'center',\n borderRadius: '2px',\n },\n selected: {\n backgroundColor: theme.secondary100,\n fontWeight: 500,\n },\n fixedDimensionIcon: {\n paddingLeft: '6px',\n paddingBottom: '2px',\n },\n dynamicDimensionIcon: {\n paddingLeft: '9px',\n paddingRight: '9px',\n },\n iconWrapper: {\n display: 'flex',\n flexDirection: 'column',\n padding: '3px 8px 0 8px',\n },\n lockIcon: {\n fontSize: '14px',\n marginTop: '1px',\n },\n optionsWrapper: {\n position: 'relative',\n height: '24px',\n minWidth: '22px',\n left: '5px',\n alignSelf: 'start',\n },\n optionsButton: {\n border: 'none',\n background: 'none',\n outline: 'none',\n cursor: 'pointer',\n padding: '1px 0px 0px 0px',\n },\n}\n","import React, { Component, createRef } from 'react'\nimport PropTypes from 'prop-types'\nimport LockIcon from '@material-ui/icons/Lock'\n\nimport DimensionLabel from './DimensionLabel'\nimport RecommendedIcon from './RecommendedIcon'\nimport OptionsButton from './OptionsButton'\nimport DynamicDimensionIcon from '../../../assets/DynamicDimensionIcon'\nimport { getPredefinedDimensionProp } from '../../../modules/predefinedDimensions'\nimport { styles } from './styles/DimensionItem.style'\n\nexport class DimensionItem extends Component {\n state = { mouseOver: false }\n\n onOptionsClick = (id, ref) => event =>\n this.props.onOptionsClick(event, id, ref)\n\n onMouseOver = () => {\n this.setState({ mouseOver: true })\n }\n\n onMouseExit = () => {\n this.setState({ mouseOver: false })\n }\n\n getDimensionIcon = () => {\n const Icon = getPredefinedDimensionProp(this.props.id, 'icon')\n return Icon ? (\n <Icon style={styles.fixedDimensionIcon} />\n ) : (\n <DynamicDimensionIcon style={styles.dynamicDimensionIcon} />\n )\n }\n\n getDimensionType = () => {\n const { id, name, isDeactivated } = this.props\n\n return (\n <span\n data-dimensionid={id}\n style={{\n ...styles.text,\n ...(isDeactivated ? styles.textDeactivated : {}),\n }}\n >\n {name}\n </span>\n )\n }\n\n render() {\n const {\n id,\n isDeactivated,\n isSelected,\n isRecommended,\n isLocked,\n onClick,\n onOptionsClick,\n innerRef,\n style,\n ...rest\n } = this.props\n\n const Icon = this.getDimensionIcon()\n const Label = this.getDimensionType()\n const itemStyle =\n isSelected && !isDeactivated\n ? { ...styles.item, ...styles.selected }\n : styles.item\n\n const optionsRef = createRef()\n\n return (\n <li\n onMouseOver={this.onMouseOver}\n onMouseLeave={this.onMouseExit}\n ref={innerRef}\n style={Object.assign({}, itemStyle, style)}\n {...rest}\n >\n <DimensionLabel\n id={id}\n isDeactivated={isDeactivated}\n onClick={onClick}\n >\n <div style={styles.iconWrapper}>{Icon}</div>\n <div style={styles.labelWrapper}>\n {Label}\n <RecommendedIcon isRecommended={isRecommended} />\n </div>\n {isLocked && (\n <div style={styles.iconWrapper}>\n <LockIcon style={styles.lockIcon} />\n </div>\n )}\n </DimensionLabel>\n {onOptionsClick ? (\n <div style={styles.optionsWrapper} ref={optionsRef}>\n {this.state.mouseOver && !isDeactivated && !isLocked ? (\n <OptionsButton\n style={styles.optionsButton}\n onClick={this.onOptionsClick(id, optionsRef)}\n />\n ) : null}\n </div>\n ) : null}\n </li>\n )\n }\n}\n\nDimensionItem.propTypes = {\n id: PropTypes.string.isRequired,\n isSelected: PropTypes.bool.isRequired, // XXX\n name: PropTypes.string.isRequired,\n innerRef: PropTypes.func,\n isDeactivated: PropTypes.bool,\n isLocked: PropTypes.bool,\n isRecommended: PropTypes.bool,\n style: PropTypes.object,\n onClick: PropTypes.func,\n onOptionsClick: PropTypes.func,\n}\n\nDimensionItem.defaultProps = {\n isDeactivated: false,\n isRecommended: false,\n isSelected: false,\n isLocked: false,\n onClick: Function.prototype,\n innerRef: Function.prototype,\n style: {},\n}\n\nexport default DimensionItem\n","import { colors, spacers } from '@dhis2/ui'\n\n// Fix for vertical flex scrolling in Firefox/Safari:\n// Wrap the list in a div with position:relative (and flex:1 instead of on the list)\n// On the list, set position:absolute, width:100%, height:100%\n\nexport const styles = {\n container: {\n position: 'relative',\n flex: '1 1 0%',\n minHeight: '30vh',\n },\n wrapper: {\n position: 'absolute',\n width: '100%',\n height: '100%',\n overflow: 'auto',\n marginTop: '0px',\n padding: 0,\n },\n list: {\n margin: 0,\n padding: 0,\n },\n header: {\n textTransform: 'uppercase',\n fontSize: '11px',\n color: colors.grey700,\n margin: '5px 0',\n letterSpacing: '0.3px',\n },\n section: {\n '&:not(:last-child)': {\n marginBottom: spacers.dp24,\n },\n },\n}\n","import React, { Component } from 'react'\nimport PropTypes from 'prop-types'\nimport { withStyles } from '@material-ui/core/styles'\nimport i18n from '@dhis2/d2-i18n'\n\nimport DimensionItem from './DimensionItem'\nimport { styles } from './styles/DimensionList.style'\nimport {\n getPredefinedDimensions,\n getFixedDimensions,\n} from '../../../modules/predefinedDimensions'\n\nexport class DimensionList extends Component {\n nameContainsFilterText = dimension =>\n dimension.name\n .toLowerCase()\n .includes(this.props.filterText.toLowerCase())\n\n isDisabled = dimensionId =>\n this.props.disabledDimension(dimensionId) || false\n\n isRecommended = dimensionId =>\n this.props.recommendedDimension(dimensionId) || false\n\n isLocked = dimensionId => this.props.lockedDimension(dimensionId) || false\n\n renderItem = dimension => (\n <DimensionItem\n id={dimension.id}\n key={dimension.id}\n name={dimension.name}\n isLocked={this.isLocked(dimension.id)}\n isSelected={this.props.selectedIds.includes(dimension.id)}\n isRecommended={this.isRecommended(dimension.id)}\n isDeactivated={this.isDisabled(dimension.id)}\n onClick={this.props.onDimensionClick}\n onOptionsClick={this.props.onDimensionOptionsClick}\n onDragStart={this.props.onDimensionDragStart}\n />\n )\n\n getDimensionItemsByFilter = filter =>\n this.props.dimensions\n .filter(filter)\n .filter(this.nameContainsFilterText)\n .map(this.renderItem)\n\n render() {\n const { classes } = this.props\n const fixedDimensions = this.getDimensionItemsByFilter(dimension =>\n Object.values(getFixedDimensions()).some(\n fixedDim => fixedDim.id === dimension.id\n )\n )\n const nonPredefinedDimensions = this.getDimensionItemsByFilter(\n dimension =>\n !Object.values(getPredefinedDimensions()).some(\n predefDim => predefDim.id === dimension.id\n )\n )\n\n return (\n <div className={classes.container}>\n <div className={classes.wrapper}>\n <div className={classes.section}>\n <h3 className={classes.header}>\n {i18n.t('Main dimensions')}\n </h3>\n <ul className={classes.list}>{fixedDimensions}</ul>\n </div>\n <div className={classes.section}>\n <h3 className={classes.header}>\n {i18n.t('Your dimensions')}\n </h3>\n <ul className={classes.list}>\n {nonPredefinedDimensions}\n </ul>\n </div>\n </div>\n </div>\n )\n }\n}\n\nDimensionList.propTypes = {\n dimensions: PropTypes.array.isRequired,\n filterText: PropTypes.string.isRequired,\n classes: PropTypes.object,\n disabledDimension: PropTypes.func,\n lockedDimension: PropTypes.func,\n recommendedDimension: PropTypes.func,\n selectedIds: PropTypes.array,\n onDimensionClick: PropTypes.func,\n onDimensionDragStart: PropTypes.func,\n onDimensionOptionsClick: PropTypes.func,\n}\n\nDimensionList.defaultProps = {\n selectedIds: [],\n disabledDimension: Function.prototype,\n lockedDimension: Function.prototype,\n recommendedDimension: Function.prototype,\n}\n\nexport default withStyles(styles)(DimensionList)\n","import { colors } from '@dhis2/ui'\n\nexport const styles = {\n divContainer: {\n height: '100%',\n display: 'flex',\n flexDirection: 'column',\n backgroundColor: colors.grey050,\n padding: '8px',\n overflow: 'hidden',\n },\n textField: {\n marginBottom: '6px',\n background: colors.white,\n border: `1px solid ${colors.grey400}`,\n borderRadius: '5px',\n },\n}\n","import React, { Component } from 'react'\nimport PropTypes from 'prop-types'\nimport i18n from '@dhis2/d2-i18n'\n\nimport Filter from '../Filter/Filter'\nimport DimensionList from './List/DimensionList'\nimport { styles } from './styles/DimensionsPanel.style'\n\nexport class DimensionsPanel extends Component {\n state = { filterText: '' }\n\n onClearFilter = () => {\n this.setState({ filterText: '' })\n }\n\n onFilterTextChange = filterText => {\n this.setState({ filterText })\n }\n\n render() {\n const {\n dimensions,\n selectedIds,\n disabledDimension,\n lockedDimension,\n recommendedDimension,\n onDimensionClick,\n onDimensionOptionsClick,\n onDimensionDragStart,\n style,\n } = this.props\n\n return (\n <div style={{ ...styles.divContainer, ...style }}>\n <Filter\n style={styles.textField}\n placeholder={i18n.t('Filter dimensions')}\n text={this.state.filterText}\n onChange={this.onFilterTextChange}\n onClear={this.onClearFilter}\n type=\"search\"\n />\n <DimensionList\n dimensions={dimensions}\n selectedIds={selectedIds}\n filterText={this.state.filterText}\n disabledDimension={disabledDimension}\n lockedDimension={lockedDimension}\n recommendedDimension={recommendedDimension}\n onDimensionOptionsClick={onDimensionOptionsClick}\n onDimensionClick={onDimensionClick}\n onDimensionDragStart={onDimensionDragStart}\n />\n </div>\n )\n }\n}\n\nDimensionsPanel.propTypes = {\n dimensions: PropTypes.array.isRequired,\n disabledDimension: PropTypes.func,\n lockedDimension: PropTypes.func,\n recommendedDimension: PropTypes.func,\n selectedIds: PropTypes.array,\n style: PropTypes.object,\n onDimensionClick: PropTypes.func,\n onDimensionDragStart: PropTypes.func,\n onDimensionOptionsClick: PropTypes.func,\n}\n\nDimensionsPanel.defaultProps = {\n selectedIds: [],\n style: {},\n onDimensionClick: Function.prototype,\n}\n\nexport default DimensionsPanel\n","// Axis\n\nexport const AXIS = {\n defaultValue: [],\n isValid: axis => Array.isArray(axis),\n}\n\n// Axis ids\n\nexport const AXIS_ID_COLUMNS = 'columns'\nexport const AXIS_ID_ROWS = 'rows'\nexport const AXIS_ID_FILTERS = 'filters'\nexport const AXIS_ID_YEAR_OVER_YEAR_SERIES = 'yearOverYearSeries'\nexport const AXIS_ID_YEAR_OVER_YEAR_CATEGORY = 'yearOverYearCategory'\n\nexport const DEFAULT_AXIS_IDS = [AXIS_ID_COLUMNS, AXIS_ID_ROWS, AXIS_ID_FILTERS]\nexport const ALL_AXIS_IDS = [\n AXIS_ID_COLUMNS,\n AXIS_ID_ROWS,\n AXIS_ID_FILTERS,\n AXIS_ID_YEAR_OVER_YEAR_SERIES,\n AXIS_ID_YEAR_OVER_YEAR_CATEGORY,\n]\n","import React from 'react'\nimport SvgIcon from '@material-ui/core/SvgIcon'\n\nexport default (\n <SvgIcon viewBox=\"0 0 16 16\">\n <g stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\n <g fill=\"#7B8998\">\n <rect x=\"0\" y=\"15\" width=\"16\" height=\"1\"></rect>\n <rect x=\"0\" y=\"0\" width=\"1\" height=\"16\"></rect>\n <rect x=\"1\" y=\"10\" width=\"13\" height=\"3\"></rect>\n <rect x=\"1\" y=\"5\" width=\"10\" height=\"3\"></rect>\n <rect x=\"1\" y=\"0\" width=\"5\" height=\"3\"></rect>\n </g>\n </g>\n </SvgIcon>\n)\n","import React from 'react'\nimport SvgIcon from '@material-ui/core/SvgIcon'\n\nexport default (\n <SvgIcon viewBox=\"0 0 16 16\">\n <g stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\n <g fill=\"#7B8998\">\n <rect x=\"0\" y=\"15\" width=\"16\" height=\"1\"></rect>\n <rect x=\"0\" y=\"0\" width=\"1\" height=\"16\"></rect>\n <rect x=\"1\" y=\"10\" width=\"6\" height=\"3\"></rect>\n <rect x=\"8\" y=\"10\" width=\"6\" height=\"3\"></rect>\n <rect x=\"1\" y=\"5\" width=\"3\" height=\"3\"></rect>\n <rect x=\"5\" y=\"5\" width=\"5\" height=\"3\"></rect>\n <rect x=\"1\" y=\"0\" width=\"4\" height=\"3\"></rect>\n <rect x=\"6\" y=\"0\" width=\"3\" height=\"3\"></rect>\n </g>\n </g>\n </SvgIcon>\n)\n","import React from 'react'\nimport SvgIcon from '@material-ui/core/SvgIcon'\n\nexport default (\n <SvgIcon viewBox=\"0 0 16 16\">\n <g stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\n <g fill=\"#7B8998\">\n <rect x=\"0\" y=\"15\" width=\"16\" height=\"1\"></rect>\n <rect x=\"0\" y=\"0\" width=\"1\" height=\"16\"></rect>\n <rect x=\"13\" y=\"8\" width=\"3\" height=\"7\"></rect>\n <rect x=\"8\" y=\"2\" width=\"3\" height=\"13\"></rect>\n <rect x=\"3\" y=\"4\" width=\"3\" height=\"11\"></rect>\n </g>\n </g>\n </SvgIcon>\n)\n","import React from 'react'\nimport SvgIcon from '@material-ui/core/SvgIcon'\n\nexport default (\n <SvgIcon viewBox=\"0 0 16 16\">\n <g stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\n <g fill=\"#7B8998\">\n <rect x=\"0\" y=\"15\" width=\"16\" height=\"1\"></rect>\n <rect x=\"0\" y=\"0\" width=\"1\" height=\"16\"></rect>\n <rect x=\"13\" y=\"8\" width=\"3\" height=\"7\"></rect>\n <rect x=\"13\" y=\"4\" width=\"3\" height=\"3\"></rect>\n <rect x=\"8\" y=\"9\" width=\"3\" height=\"6\"></rect>\n <rect x=\"8\" y=\"1\" width=\"3\" height=\"7\"></rect>\n <rect x=\"3\" y=\"13\" width=\"3\" height=\"2\"></rect>\n <rect x=\"3\" y=\"7\" width=\"3\" height=\"5\"></rect>\n </g>\n </g>\n </SvgIcon>\n)\n","import React from 'react'\nimport SvgIcon from '@material-ui/core/SvgIcon'\n\nexport default (\n <SvgIcon viewBox=\"0 0 16 16\">\n <g stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\n <g>\n <mask id=\"mask-2\" fill=\"white\">\n <rect x=\"0\" y=\"0\" width=\"16\" height=\"16\"></rect>\n </mask>\n <rect\n fill=\"#7B8998\"\n mask=\"url(#mask-2)\"\n x=\"0\"\n y=\"15\"\n width=\"16\"\n height=\"1\"\n ></rect>\n <rect\n fill=\"#7B8998\"\n mask=\"url(#mask-2)\"\n x=\"0\"\n y=\"0\"\n width=\"1\"\n height=\"16\"\n ></rect>\n <polyline\n stroke=\"#7B8998\"\n strokeWidth=\"1.5\"\n mask=\"url(#mask-2)\"\n points=\"0 5 5 9 9 7 15 12\"\n ></polyline>\n </g>\n </g>\n </SvgIcon>\n)\n","import React from 'react'\nimport SvgIcon from '@material-ui/core/SvgIcon'\n\nexport default (\n <SvgIcon viewBox=\"0 0 16 16\">\n <g stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\n <mask fill=\"white\">\n <rect x=\"0\" y=\"0\" width=\"16\" height=\"16\"></rect>\n </mask>\n <rect\n fill=\"#7B8998\"\n mask=\"url(#mask-2)\"\n x=\"0\"\n y=\"15\"\n width=\"16\"\n height=\"1\"\n ></rect>\n <rect\n fill=\"#7B8998\"\n mask=\"url(#mask-2)\"\n x=\"0\"\n y=\"0\"\n width=\"1\"\n height=\"16\"\n ></rect>\n <polygon\n stroke=\"#7B8998\"\n strokeWidth=\"1.5\"\n fill=\"#7B8998\"\n mask=\"url(#mask-2)\"\n points=\"3 5 7 9 10 7 15 12 15 13 3 13\"\n ></polygon>\n </g>\n </SvgIcon>\n)\n","import React from 'react'\nimport SvgIcon from '@material-ui/core/SvgIcon'\n\nexport default (\n <SvgIcon viewBox=\"0 0 16 16\">\n <g fill=\"none\" fillRule=\"evenodd\" transform=\"matrix(0 -1 -1 0 48 48)\">\n <polygon points=\"0 0 48 0 48 48 0 48\" />\n <polygon fill=\"#4A5768\" points=\"6 6 8 6 8 42 6 42\" />\n <polygon fill=\"#4A5768\" points=\"6 40 42 40 42 42 6 42\" />\n <polygon\n fill=\"#FFE7A7\"\n points=\"33 36 27 28 30 23 25 17 27 10 17 10 21 17 18 23 22 28 17 36\"\n />\n <polygon\n fill=\"#90CAF9\"\n points=\"16 36 22 28 18 23 21 17 17 10 12 10 12 36\"\n />\n <polyline\n stroke=\"#FFC324\"\n strokeWidth=\"2\"\n points=\"33 36 27 28 30 23 25 17 27 10\"\n />\n <polyline\n stroke=\"#147CD7\"\n strokeWidth=\"2\"\n points=\"16 36 22 28 18 23 21 17 16.5 10\"\n />\n </g>\n </SvgIcon>\n)\n","import React from 'react'\nimport SvgIcon from '@material-ui/core/SvgIcon'\n\nexport default (\n <SvgIcon viewBox=\"0 0 16 16\">\n <g stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\n <g transform=\"translate(-1.000000, 0.000000)\">\n <path\n d=\"M9,0 C11.86,0 14.5,1.52 15.93,4 C17.36,6.48 17.36,9.52 15.93,12 C14.5,14.48 11.86,16 9,16 C6.14,16 3.5,14.48 2.07,12 C0.64,9.52 0.64,6.48 2.07,4 C3.5,1.52 6.14,0 9,0 L9,8 C9,8 9,8 9,8 C9,8 9,8 9,8 C9,8 9,8 9,8 C9,8 9,8 9,8 C9,8 9,8 9,8 C9,8 9,8 9,8 L9,0 Z\"\n fillOpacity=\"0.002\"\n fill=\"#455A64\"\n ></path>\n <path\n d=\"M9.25,0.253999142 L9.25,7.62589712 L16.0605377,4.80583684 C15.9597575,4.58208479 15.8426843,4.35299631 15.7134245,4.12488021 C14.3709859,1.79673487 11.9260373,0.33967375 9.25,0.253999142 Z\"\n stroke=\"#FFFFFF\"\n strokeWidth=\"0.5\"\n fill=\"#7B8998\"\n ></path>\n <path\n d=\"M16.2507321,5.26825168 L9.25,8.16706634 L9.25,15.7459734 C11.5677905,15.6712788 13.7388491,14.5610154 15.1515843,12.7179105 C16.7838303,10.5884861 17.1923733,7.7729977 16.2507321,5.26825168 Z\"\n stroke=\"#FFFFFF\"\n strokeWidth=\"0.5\"\n fill=\"#7B8998\"\n ></path>\n <path\n d=\"M8.75,15.7460009 L8.75,0.253999142 C6.07396269,0.33967375 3.62901411,1.79673487 2.28657547,4.12488021 C0.901141511,6.52759085 0.901141511,9.47240915 2.28657547,11.8751198 C3.62901411,14.2032651 6.07396269,15.6603262 8.75,15.7460009 Z\"\n stroke=\"#FFFFFF\"\n strokeWidth=\"0.5\"\n fill=\"#7B8998\"\n ></path>\n </g>\n <g transform=\"translate(-1.000000, 0.000000)\">\n <path\n d=\"M9,0 C11.86,0 14.5,1.52 15.93,4 C17.36,6.48 17.36,9.52 15.93,12 C14.5,14.48 11.86,16 9,16 C6.14,16 3.5,14.48 2.07,12 C0.64,9.52 0.64,6.48 2.07,4 C3.5,1.52 6.14,0 9,0 L9,8 C9,8 9,8 9,8 C9,8 9,8 9,8 C9,8 9,8 9,8 C9,8 9,8 9,8 C9,8 9,8 9,8 C9,8 9,8 9,8 L9,0 Z\"\n fillOpacity=\"0.002\"\n fill=\"#455A64\"\n ></path>\n <path\n d=\"M9.25,0.253999142 L9.25,7.87969351 L15.208572,12.6370174 C15.3964843,12.3885798 15.5650482,12.1347754 15.7134245,11.8751198 C17.0988585,9.47240915 17.0988585,6.52759085 15.7134245,4.12488021 C14.3709859,1.79673487 11.9260373,0.33967375 9.25,0.253999142 Z\"\n stroke=\"#FFFFFF\"\n strokeWidth=\"0.5\"\n fill=\"#7B8998\"\n ></path>\n <path\n d=\"M14.8955472,13.0269114 L9.08920592,8.3911285 L5.86513188,15.0901411 C6.48561254,15.3656722 7.15156976,15.5571176 7.84755483,15.6628368 C10.5003854,16.0659171 13.160928,15.0629335 14.8955472,13.0269114 Z\"\n stroke=\"#FFFFFF\"\n strokeWidth=\"0.5\"\n fill=\"#7B8998\"\n ></path>\n <path\n d=\"M5.41482695,14.8728263 L8.75,7.94297101 L8.75,0.253977185 C7.27404265,0.301055104 5.8471024,0.764373723 4.63088851,1.5965198 C2.34652789,3.15491836 1.06570164,5.81818129 1.26932408,8.58162875 C1.46659354,11.2588571 3.03960782,13.6359852 5.41482695,14.8728263 Z\"\n stroke=\"#FFFFFF\"\n strokeWidth=\"0.5\"\n fill=\"#7B8998\"\n ></path>\n </g>\n </g>\n </SvgIcon>\n)\n","import React from 'react'\nimport SvgIcon from '@material-ui/core/SvgIcon'\n\nexport default (\n <SvgIcon viewBox=\"0 0 16 16\">\n <g stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\n <circle stroke=\"#7B8998\" cx=\"8\" cy=\"8\" r=\"6\"></circle>\n <circle stroke=\"#7B8998\" cx=\"8\" cy=\"8\" r=\"3\"></circle>\n <circle fill=\"#7B8998\" cx=\"8\" cy=\"2\" r=\"2\"></circle>\n <circle fill=\"#7B8998\" cx=\"3\" cy=\"12\" r=\"2\"></circle>\n </g>\n </SvgIcon>\n)\n","import React from 'react'\nimport SvgIcon from '@material-ui/core/SvgIcon'\n\nexport default (\n <SvgIcon viewBox=\"0 0 16 16\">\n <g stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\n <g>\n <mask fill=\"white\">\n <polygon points=\"0 0 16 0 16 16 0 16\"></polygon>\n </mask>\n </g>\n <path\n d=\"M15,12 C15,8.13400675 11.8659932,5 8,5 C4.13400675,5 1,8.13400675 1,12\"\n stroke=\"#7B8998\"\n ></path>\n <g transform=\"translate(1.000000, 6.000000)\">\n <path\n d=\"M7,0 C9.14,0 11.13,1.14 12.2,3 C13.27,4.86 13.27,7.14 12.2,9 C11.13,10.86 9.14,12 7,12 C4.86,12 2.87,10.86 1.8,9 C0.73,7.14 0.73,4.86 1.8,3 C2.87,1.14 4.86,0 7,0 L7,3 C5.93,3 4.94,3.57 4.4,4.5 C3.86,5.43 3.86,6.57 4.4,7.5 C4.94,8.43 5.93,9 7,9 C8.07,9 9.06,8.43 9.6,7.5 C10.14,6.57 10.14,5.43 9.6,4.5 C9.06,3.57 8.07,3 7,3 L7,0 Z\"\n fillOpacity=\"0.002\"\n fill=\"#455A64\"\n ></path>\n <path\n d=\"M1,6 C1,3.86 2.14,1.87 4,0.8 C4.91,0.27 5.95,0 7,0 L7,3 C5.93,3 4.94,3.57 4.4,4.5 C4.14,4.96 4,5.47 4,6 L1,6 Z\"\n fill=\"#7B8998\"\n ></path>\n </g>\n </g>\n </SvgIcon>\n)\n","import React from 'react'\nimport SvgIcon from '@material-ui/core/SvgIcon'\n\nexport default (\n <SvgIcon viewBox=\"0 0 16 16\">\n <g stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\n <g>\n <mask id=\"mask-2\" fill=\"white\">\n <rect id=\"path-1\" x=\"0\" y=\"0\" width=\"16\" height=\"16\"></rect>\n </mask>\n <rect\n fill=\"#7B8998\"\n mask=\"url(#mask-2)\"\n x=\"0\"\n y=\"15\"\n width=\"16\"\n height=\"1\"\n ></rect>\n <rect\n fill=\"#7B8998\"\n mask=\"url(#mask-2)\"\n x=\"0\"\n y=\"0\"\n width=\"1\"\n height=\"16\"\n ></rect>\n <polyline\n stroke=\"#7B8998\"\n strokeWidth=\"1.5\"\n mask=\"url(#mask-2)\"\n points=\"0 5 5 10 10 6 15 12\"\n ></polyline>\n <polyline\n stroke=\"#7B8998\"\n strokeWidth=\"1.5\"\n mask=\"url(#mask-2)\"\n points=\"0 10 5 2 10 12 15 4\"\n ></polyline>\n </g>\n </g>\n </SvgIcon>\n)\n","import React from 'react'\nimport SvgIcon from '@material-ui/core/SvgIcon'\n\nexport default (\n <SvgIcon viewBox=\"0 0 16 16\">\n <g stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\n <g fill=\"#7B8998\">\n <rect x=\"0\" y=\"15\" width=\"16\" height=\"1\"></rect>\n <rect x=\"0\" y=\"0\" width=\"1\" height=\"16\"></rect>\n <rect x=\"14\" y=\"9\" width=\"2\" height=\"6\"></rect>\n <rect x=\"11\" y=\"2\" width=\"2\" height=\"13\"></rect>\n <rect x=\"3\" y=\"11\" width=\"2\" height=\"4\"></rect>\n <rect x=\"6\" y=\"9\" width=\"2\" height=\"6\"></rect>\n </g>\n </g>\n </SvgIcon>\n)\n","import React from 'react'\nimport SvgIcon from '@material-ui/core/SvgIcon'\n\nexport default (\n <SvgIcon viewBox=\"0 0 16 16\">\n <g stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\n <path\n d=\"M3.85595703,11 L2.37060547,11 L2.37060547,6.27148438 L0.911621094,6.69775391 L0.911621094,5.57275391 L3.71972656,4.6015625 L3.85595703,4.6015625 L3.85595703,11 Z M10.25,11 L5.78515625,11 L5.78515625,10.0332031 L7.84179688,7.87109375 C8.34863535,7.29394243 8.60205078,6.83545092 8.60205078,6.49560547 C8.60205078,6.22021347 8.54199279,6.01074291 8.421875,5.8671875 C8.30175721,5.72363209 8.12744255,5.65185547 7.89892578,5.65185547 C7.67333872,5.65185547 7.49023508,5.74780177 7.34960938,5.93969727 C7.20898367,6.13159276 7.13867188,6.37109231 7.13867188,6.65820312 L5.65332031,6.65820312 C5.65332031,6.26562304 5.75146386,5.90307783 5.94775391,5.57055664 C6.14404395,5.23803545 6.41650216,4.97802828 6.76513672,4.79052734 C7.11377127,4.60302641 7.50341582,4.50927734 7.93408203,4.50927734 C8.62549174,4.50927734 9.15795712,4.66894372 9.53149414,4.98828125 C9.90503116,5.30761878 10.0917969,5.76611029 10.0917969,6.36376953 C10.0917969,6.61572392 10.0449223,6.86108279 9.95117188,7.09985352 C9.85742141,7.33862424 9.71167091,7.58911002 9.51391602,7.85131836 C9.31616112,8.1135267 8.99756079,8.46435327 8.55810547,8.90380859 L7.73193359,9.85742188 L10.25,9.85742188 L10.25,11 Z M12.3505859,7.18115234 L13.0493164,7.18115234 C13.6030301,7.18115234 13.8798828,6.91015896 13.8798828,6.36816406 C13.8798828,6.15722551 13.8139655,5.98510809 13.6821289,5.85180664 C13.5502923,5.71850519 13.364259,5.65185547 13.1240234,5.65185547 C12.9277334,5.65185547 12.7570808,5.7089838 12.6120605,5.82324219 C12.4670403,5.93750057 12.3945312,6.07958899 12.3945312,6.24951172 L10.9135742,6.24951172 C10.9135742,5.91259597 11.0073233,5.61230601 11.1948242,5.34863281 C11.3823252,5.08495962 11.6423323,4.87915113 11.9748535,4.73120117 C12.3073747,4.58325121 12.6728496,4.50927734 13.0712891,4.50927734 C13.7832067,4.50927734 14.3427714,4.67187337 14.75,4.99707031 C15.1572286,5.32226725 15.3608398,5.76904013 15.3608398,6.33740234 C15.3608398,6.61279435 15.2766122,6.87280151 15.1081543,7.11743164 C14.9396964,7.36206177 14.6943375,7.56054611 14.3720703,7.71289062 C14.7119158,7.83593812 14.9785147,8.02270383 15.171875,8.27319336 C15.3652353,8.52368289 15.4619141,8.83349425 15.4619141,9.20263672 C15.4619141,9.77392864 15.2421897,10.2309553 14.8027344,10.5737305 C14.3632791,10.9165056 13.7861364,11.0878906 13.0712891,11.0878906 C12.6523417,11.0878906 12.2634295,11.0080574 11.904541,10.8483887 C11.5456525,10.6887199 11.2739267,10.4675307 11.0893555,10.1848145 C10.9047842,9.9020982 10.8125,9.58056821 10.8125,9.22021484 L12.3022461,9.22021484 C12.3022461,9.41650489 12.3813469,9.58642506 12.5395508,9.72998047 C12.6977547,9.87353587 12.892577,9.9453125 13.1240234,9.9453125 C13.3847669,9.9453125 13.5927727,9.87280346 13.7480469,9.7277832 C13.9033211,9.58276295 13.980957,9.39746207 13.980957,9.171875 C13.980957,8.84960776 13.9003914,8.62109442 13.7392578,8.48632812 C13.5781242,8.35156183 13.3554702,8.28417969 13.0712891,8.28417969 L12.3505859,8.28417969 L12.3505859,7.18115234 Z\"\n fill=\"#7B8998\"\n fillRule=\"nonzero\"\n ></path>\n </g>\n </SvgIcon>\n)\n","import React from 'react'\nimport SvgIcon from '@material-ui/core/SvgIcon'\n\nexport default (\n <SvgIcon viewBox=\"0 0 16 16\">\n <g stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\n <g>\n <polygon\n fill=\"#7B8998\"\n points=\"1 11 15 11 15 12 1 12\"\n ></polygon>\n <polygon fill=\"#7B8998\" points=\"6 1 7 1 7 15 6 15\"></polygon>\n <polygon fill=\"#7B8998\" points=\"1 6 15 6 15 7 1 7\"></polygon>\n <rect\n stroke=\"#7B8998\"\n x=\"0.5\"\n y=\"0.5\"\n width=\"15\"\n height=\"15\"\n ></rect>\n </g>\n </g>\n </SvgIcon>\n)\n","import i18n from '@dhis2/d2-i18n'\nimport BarIcon from '../assets/BarIcon'\nimport StackedBarIcon from '../assets/StackedBarIcon'\nimport ColumnIcon from '../assets/ColumnIcon'\nimport StackedColumnIcon from '../assets/StackedColumnIcon'\nimport LineIcon from '../assets/LineIcon'\nimport AreaIcon from '../assets/AreaIcon'\nimport StackedAreaIcon from '../assets/StackedAreaIcon'\nimport PieIcon from '../assets/PieIcon'\nimport RadarIcon from '../assets/RadarIcon'\nimport GaugeIcon from '../assets/GaugeIcon'\nimport YearOverYearLineIcon from '../assets/YearOverYearLineIcon'\nimport YearOverYearColumnIcon from '../assets/YearOverYearColumnIcon'\nimport SingleValueIcon from '../assets/SingleValueIcon'\nimport PivotTableIcon from '../assets/PivotTableIcon'\n\nexport const VIS_TYPE_COLUMN = 'COLUMN'\nexport const VIS_TYPE_STACKED_COLUMN = 'STACKED_COLUMN'\nexport const VIS_TYPE_BAR = 'BAR'\nexport const VIS_TYPE_STACKED_BAR = 'STACKED_BAR'\nexport const VIS_TYPE_LINE = 'LINE'\nexport const VIS_TYPE_AREA = 'AREA'\nexport const VIS_TYPE_STACKED_AREA = 'STACKED_AREA'\nexport const VIS_TYPE_PIE = 'PIE'\nexport const VIS_TYPE_RADAR = 'RADAR'\nexport const VIS_TYPE_GAUGE = 'GAUGE'\nexport const VIS_TYPE_BUBBLE = 'BUBBLE'\nexport const VIS_TYPE_YEAR_OVER_YEAR_LINE = 'YEAR_OVER_YEAR_LINE'\nexport const VIS_TYPE_YEAR_OVER_YEAR_COLUMN = 'YEAR_OVER_YEAR_COLUMN'\nexport const VIS_TYPE_SINGLE_VALUE = 'SINGLE_VALUE'\nexport const VIS_TYPE_PIVOT_TABLE = 'PIVOT_TABLE'\n\nexport const visTypeDisplayNames = {\n [VIS_TYPE_PIVOT_TABLE]: i18n.t('Pivot table'),\n [VIS_TYPE_COLUMN]: i18n.t('Column'),\n [VIS_TYPE_STACKED_COLUMN]: i18n.t('Stacked column'),\n [VIS_TYPE_BAR]: i18n.t('Bar'),\n [VIS_TYPE_STACKED_BAR]: i18n.t('Stacked bar'),\n [VIS_TYPE_LINE]: i18n.t('Line'),\n [VIS_TYPE_AREA]: i18n.t('Area'),\n [VIS_TYPE_STACKED_AREA]: i18n.t('Stacked area'),\n [VIS_TYPE_PIE]: i18n.t('Pie'),\n [VIS_TYPE_RADAR]: i18n.t('Radar'),\n [VIS_TYPE_GAUGE]: i18n.t('Gauge'),\n [VIS_TYPE_YEAR_OVER_YEAR_LINE]: i18n.t('Year over year (line)'),\n [VIS_TYPE_YEAR_OVER_YEAR_COLUMN]: i18n.t('Year over year (column)'),\n [VIS_TYPE_SINGLE_VALUE]: i18n.t('Single value'),\n}\n\nexport const visTypeDescriptions = {\n [VIS_TYPE_PIVOT_TABLE]: i18n.t(\n 'View data and indicators in a manipulatable table.'\n ),\n [VIS_TYPE_COLUMN]: i18n.t(\n 'Compare sizes of related element, displayed vertically. Recommend period in filter.'\n ),\n [VIS_TYPE_STACKED_COLUMN]: i18n.t(\n 'Compare parts of a whole against related elements, vertically. Recommend data or org. unit as series.'\n ),\n [VIS_TYPE_BAR]: i18n.t(\n 'Compare sizes of related elements, displayed horizontally. Recommend period in filter.'\n ),\n [VIS_TYPE_STACKED_BAR]: i18n.t(\n 'Compare parts of a whole against related elements, horizontally. Recommend data or org. unit as series.'\n ),\n [VIS_TYPE_LINE]: i18n.t(\n 'Track or compare changes over time. Recommend period as the category.'\n ),\n [VIS_TYPE_AREA]: i18n.t(\n 'Track or compare changes over time. Recommend period as the category.'\n ),\n [VIS_TYPE_STACKED_AREA]: i18n.t(\n 'Track or compare over time parts of a whole. Recommend data in series and period in category.'\n ),\n [VIS_TYPE_PIE]: i18n.t(\n 'Compare parts of a whole at a single point in time. Recommend period in the filter.'\n ),\n [VIS_TYPE_RADAR]: i18n.t(\n 'Compare several items against multiple variables.'\n ),\n [VIS_TYPE_GAUGE]: i18n.t(\n 'Compare a percentage indicator against a 100% scale. Recommend period in filter.'\n ),\n [VIS_TYPE_YEAR_OVER_YEAR_LINE]: i18n.t(\n 'Compare changes over time between multiple time periods.'\n ),\n [VIS_TYPE_YEAR_OVER_YEAR_COLUMN]: i18n.t(\n 'Compare changes over time between multiple time periods.'\n ),\n [VIS_TYPE_SINGLE_VALUE]: i18n.t(\n 'Display a single value. Recommend relative period to show latest data.'\n ),\n}\n\nexport const visTypeIcons = {\n [VIS_TYPE_PIVOT_TABLE]: PivotTableIcon,\n [VIS_TYPE_BAR]: BarIcon,\n [VIS_TYPE_STACKED_BAR]: StackedBarIcon,\n [VIS_TYPE_COLUMN]: ColumnIcon,\n [VIS_TYPE_STACKED_COLUMN]: StackedColumnIcon,\n [VIS_TYPE_LINE]: LineIcon,\n [VIS_TYPE_AREA]: AreaIcon,\n [VIS_TYPE_STACKED_AREA]: StackedAreaIcon,\n [VIS_TYPE_PIE]: PieIcon,\n [VIS_TYPE_RADAR]: RadarIcon,\n [VIS_TYPE_GAUGE]: GaugeIcon,\n [VIS_TYPE_YEAR_OVER_YEAR_LINE]: YearOverYearLineIcon,\n [VIS_TYPE_YEAR_OVER_YEAR_COLUMN]: YearOverYearColumnIcon,\n [VIS_TYPE_SINGLE_VALUE]: SingleValueIcon,\n}\n\nexport const getDisplayNameByVisType = visType => {\n const displayName = visTypeDisplayNames[visType]\n\n if (!displayName) {\n throw new Error(`${visType} is not a valid visualization type`)\n }\n\n return displayName\n}\n\nconst stackedTypes = [\n VIS_TYPE_STACKED_COLUMN,\n VIS_TYPE_STACKED_BAR,\n VIS_TYPE_STACKED_AREA,\n]\n\nconst yearOverYearTypes = [\n VIS_TYPE_YEAR_OVER_YEAR_LINE,\n VIS_TYPE_YEAR_OVER_YEAR_COLUMN,\n]\n\nconst dualAxisTypes = [\n VIS_TYPE_COLUMN,\n VIS_TYPE_BAR,\n VIS_TYPE_LINE,\n VIS_TYPE_AREA,\n]\n\nconst twoCategoryChartTypes = [\n VIS_TYPE_COLUMN,\n VIS_TYPE_STACKED_COLUMN,\n VIS_TYPE_BAR,\n VIS_TYPE_STACKED_BAR,\n VIS_TYPE_LINE,\n VIS_TYPE_AREA,\n VIS_TYPE_STACKED_AREA,\n]\n\nconst verticalTypes = [VIS_TYPE_BAR, VIS_TYPE_STACKED_BAR, VIS_TYPE_GAUGE]\n\nexport const defaultVisType = VIS_TYPE_COLUMN\nexport const isStacked = type => stackedTypes.includes(type)\nexport const isYearOverYear = type => yearOverYearTypes.includes(type)\nexport const isDualAxisType = type => dualAxisTypes.includes(type)\nexport const isSingleValue = type => type === VIS_TYPE_SINGLE_VALUE\nexport const isTwoCategoryChartType = type =>\n twoCategoryChartTypes.includes(type)\nexport const isVerticalType = type => verticalTypes.includes(type)\n","import { AXIS_ID_COLUMNS, AXIS_ID_ROWS, AXIS_ID_FILTERS } from '../layout/axis'\nimport { DIMENSION_ID_PERIOD, DIMENSION_ID_DATA } from '../predefinedDimensions'\nimport {\n VIS_TYPE_COLUMN,\n VIS_TYPE_STACKED_COLUMN,\n VIS_TYPE_BAR,\n VIS_TYPE_STACKED_BAR,\n VIS_TYPE_LINE,\n VIS_TYPE_AREA,\n VIS_TYPE_STACKED_AREA,\n VIS_TYPE_RADAR,\n VIS_TYPE_GAUGE,\n VIS_TYPE_PIE,\n VIS_TYPE_SINGLE_VALUE,\n VIS_TYPE_YEAR_OVER_YEAR_LINE,\n VIS_TYPE_YEAR_OVER_YEAR_COLUMN,\n VIS_TYPE_PIVOT_TABLE,\n} from '../visTypes'\n\nconst RULE_PROP_AVAILABLE_AXES = 'availableAxes',\n RULE_PROP_MAX_DIMS_PER_AXIS = 'maxNumberOfDimsPerAxis',\n RULE_PROP_MIN_DIMS_PER_AXIS = 'minNumberOfDimsPerAxis',\n RULE_PROP_MAX_ITEMS_PER_AXIS = 'maxNumberOfItemsPerAxis',\n RULE_PROP_DISALLOWED_DIMS = 'disallowedDims',\n RULE_PROP_LOCKED_DIMS = 'lockedDims'\n\nconst defaultRules = {\n [RULE_PROP_AVAILABLE_AXES]: [\n AXIS_ID_COLUMNS,\n AXIS_ID_ROWS,\n AXIS_ID_FILTERS,\n ],\n [RULE_PROP_MAX_DIMS_PER_AXIS]: {\n [AXIS_ID_COLUMNS]: 1,\n [AXIS_ID_ROWS]: 2,\n },\n [RULE_PROP_MIN_DIMS_PER_AXIS]: {\n [AXIS_ID_COLUMNS]: 1,\n [AXIS_ID_ROWS]: 1,\n },\n}\n\nconst pieRules = {\n [RULE_PROP_AVAILABLE_AXES]: [AXIS_ID_COLUMNS, AXIS_ID_FILTERS],\n [RULE_PROP_MAX_DIMS_PER_AXIS]: {\n [AXIS_ID_COLUMNS]: 1,\n },\n [RULE_PROP_MIN_DIMS_PER_AXIS]: {\n [AXIS_ID_COLUMNS]: 1,\n },\n}\n\nconst radarRules = {\n [RULE_PROP_AVAILABLE_AXES]: [\n AXIS_ID_COLUMNS,\n AXIS_ID_ROWS,\n AXIS_ID_FILTERS,\n ],\n [RULE_PROP_MAX_DIMS_PER_AXIS]: {\n [AXIS_ID_COLUMNS]: 1,\n [AXIS_ID_ROWS]: 1,\n },\n [RULE_PROP_MIN_DIMS_PER_AXIS]: {\n [AXIS_ID_COLUMNS]: 1,\n [AXIS_ID_ROWS]: 1,\n },\n}\n\nconst singleValueRules = {\n [RULE_PROP_AVAILABLE_AXES]: [AXIS_ID_FILTERS],\n [RULE_PROP_MAX_DIMS_PER_AXIS]: {\n [AXIS_ID_COLUMNS]: 1,\n },\n [RULE_PROP_MIN_DIMS_PER_AXIS]: {\n [AXIS_ID_COLUMNS]: 1,\n },\n [RULE_PROP_MAX_ITEMS_PER_AXIS]: {\n [AXIS_ID_COLUMNS]: 1,\n },\n [RULE_PROP_LOCKED_DIMS]: {\n [DIMENSION_ID_DATA]: AXIS_ID_COLUMNS,\n },\n}\n\nconst yearOverYearRules = {\n [RULE_PROP_AVAILABLE_AXES]: [AXIS_ID_FILTERS],\n [RULE_PROP_DISALLOWED_DIMS]: [DIMENSION_ID_PERIOD],\n}\n\nconst pivotTableRules = {\n [RULE_PROP_AVAILABLE_AXES]: [\n AXIS_ID_COLUMNS,\n AXIS_ID_ROWS,\n AXIS_ID_FILTERS,\n ],\n}\n\nconst visTypeToRules = {\n [VIS_TYPE_COLUMN]: defaultRules,\n [VIS_TYPE_STACKED_COLUMN]: defaultRules,\n [VIS_TYPE_BAR]: defaultRules,\n [VIS_TYPE_STACKED_BAR]: defaultRules,\n [VIS_TYPE_LINE]: defaultRules,\n [VIS_TYPE_AREA]: defaultRules,\n [VIS_TYPE_STACKED_AREA]: defaultRules,\n [VIS_TYPE_RADAR]: radarRules,\n [VIS_TYPE_GAUGE]: singleValueRules,\n [VIS_TYPE_PIE]: pieRules,\n [VIS_TYPE_SINGLE_VALUE]: singleValueRules,\n [VIS_TYPE_YEAR_OVER_YEAR_LINE]: yearOverYearRules,\n [VIS_TYPE_YEAR_OVER_YEAR_COLUMN]: yearOverYearRules,\n [VIS_TYPE_PIVOT_TABLE]: pivotTableRules,\n}\n\nconst getRulesByVisType = visType => {\n const rules = visTypeToRules[visType]\n\n if (!rules) {\n throw new Error(`${visType} is not a known visualization type`)\n }\n\n return rules\n}\n\n// Selectors\n\nexport const getAvailableAxesByVisType = visType =>\n getRulesByVisType(visType)[RULE_PROP_AVAILABLE_AXES] || []\n\nexport const getMaxNumberOfDimsPerAxisByVisType = visType =>\n getRulesByVisType(visType)[RULE_PROP_MAX_DIMS_PER_AXIS] || {}\n\nexport const getMinNumberOfDimsPerAxisByVisType = visType =>\n getRulesByVisType(visType)[RULE_PROP_MIN_DIMS_PER_AXIS] || {}\n\nexport const getMaxNumberOfItemsPerAxisByVisType = visType =>\n getRulesByVisType(visType)[RULE_PROP_MAX_ITEMS_PER_AXIS] || {}\n\nexport const getDisallowedDimsByVisType = visType =>\n getRulesByVisType(visType)[RULE_PROP_DISALLOWED_DIMS] || []\n\nexport const getLockedDimsByVisType = visType =>\n getRulesByVisType(visType)[RULE_PROP_LOCKED_DIMS] || {}\n\n// Test exports\n\nexport const testResourceRequiredProps = [RULE_PROP_AVAILABLE_AXES]\n\nexport const testResourceRules = [...new Set(Object.values(visTypeToRules))]\n\nexport const testResourceAllRuleProps = {\n AVAILABLE_AXES: RULE_PROP_AVAILABLE_AXES,\n MAX_DIMS_PER_AXIS: RULE_PROP_MAX_DIMS_PER_AXIS,\n MIN_DIMS_PER_AXIS: RULE_PROP_MIN_DIMS_PER_AXIS,\n MAX_ITEMS_PER_AXIS: RULE_PROP_MAX_ITEMS_PER_AXIS,\n DISALLOWED_DIMS: RULE_PROP_DISALLOWED_DIMS,\n LOCKED_DIMS: RULE_PROP_LOCKED_DIMS,\n}\n","import {\n getMaxNumberOfItemsPerAxisByVisType,\n getMaxNumberOfDimsPerAxisByVisType,\n getMinNumberOfDimsPerAxisByVisType,\n getLockedDimsByVisType,\n} from './rules'\n\n// Selectors\n\nexport { getAvailableAxesByVisType, getDisallowedDimsByVisType } from './rules'\n\nexport const getAxisMaxNumberOfItemsByVisType = (visType, axisId) =>\n getMaxNumberOfItemsPerAxisByVisType(visType)[axisId]\n\nexport const getAxisMaxNumberOfDimsByVisType = (visType, axisId) =>\n getMaxNumberOfDimsPerAxisByVisType(visType)[axisId]\n\nexport const getAxisMinNumberOfDimsByVisType = (visType, axisId) =>\n getMinNumberOfDimsPerAxisByVisType(visType)[axisId]\n\nexport const getAxisPerLockedDimByVisType = (visType, dimensionId) =>\n getLockedDimsByVisType(visType)[dimensionId]\n\nexport const getAllLockedDimIdsByVisType = visType =>\n Object.keys(getLockedDimsByVisType(visType))\n","import { getLockedDimsByVisType } from './rules'\n\nimport {\n getAxisMaxNumberOfDimsByVisType,\n getAxisMaxNumberOfItemsByVisType,\n getAllLockedDimIdsByVisType,\n} from './rulesHelper'\n\nexport const hasAxisTooManyItemsByVisType = (\n visType,\n axisId,\n numberOfItems\n) => {\n const maxNumberOfItemsPerAxis = getAxisMaxNumberOfItemsByVisType(\n visType,\n axisId\n )\n\n return maxNumberOfItemsPerAxis\n ? numberOfItems > maxNumberOfItemsPerAxis\n : false\n}\n\nexport const isDimensionLockedByVisType = (visType, dimensionId) =>\n getAllLockedDimIdsByVisType(visType).includes(dimensionId)\n\nexport const isAxisFullByVisType = (visType, axisId, axisDimensionsCount) =>\n axisDimensionsCount >= getAxisMaxNumberOfDimsByVisType(visType, axisId)\n\nexport const canDimensionBeAddedToAxisByVisType = (visType, axis, axisId) => {\n const axisIsFull = isAxisFullByVisType(visType, axisId, axis.length)\n const transferableDimension = getTransferableDimensionPerAxisByVisType(\n visType,\n axisId,\n axis\n )\n\n // 1 dimension allowed in axis\n // 1 dimension is already present and not locked\n // the dragged one can be added and will cause the old one to be moved to filters\n // what happens with max limit > 1, axis full and 1 or more locked dimensions?\n return !(axisIsFull && !transferableDimension)\n}\n\nexport const getTransferableDimensionPerAxisByVisType = (\n visType,\n axisId,\n axis\n) => {\n const lockedDimsByVisType = getLockedDimsByVisType(visType)\n const lockedDimIdsByAxis = Object.keys(lockedDimsByVisType).filter(\n dimId => lockedDimsByVisType[dimId] === axisId\n )\n\n // return the last \"transferable\" dimension, this needs to be adjusted\n // if we allow a defined max limit > 1 and the DND wants to drop the new\n // dimension in a specific position\n return axis.filter(dimId => !lockedDimIdsByAxis.includes(dimId)).pop()\n}\n","export const LAYOUT_TYPE_DEFAULT = 'LAYOUT_TYPE_DEFAULT'\nexport const LAYOUT_TYPE_PIE = 'LAYOUT_TYPE_PIE'\nexport const LAYOUT_TYPE_SINGLE_VALUE = 'LAYOUT_TYPE_SINGLE_VALUE'\nexport const LAYOUT_TYPE_YEAR_OVER_YEAR = 'LAYOUT_TYPE_YEAR_OVER_YEAR'\nexport const LAYOUT_TYPE_PIVOT_TABLE = 'LAYOUT_TYPE_PIVOT_TABLE'\n","import i18n from '@dhis2/d2-i18n'\nimport { AXIS_ID_COLUMNS, AXIS_ID_ROWS, AXIS_ID_FILTERS } from './layout/axis'\nimport {\n LAYOUT_TYPE_DEFAULT,\n LAYOUT_TYPE_PIE,\n LAYOUT_TYPE_YEAR_OVER_YEAR,\n LAYOUT_TYPE_PIVOT_TABLE,\n} from './layoutTypes'\n\nconst getAxisNamesByLayoutType = layoutType => {\n switch (layoutType) {\n case LAYOUT_TYPE_DEFAULT:\n case LAYOUT_TYPE_PIE:\n case LAYOUT_TYPE_YEAR_OVER_YEAR:\n default:\n return {\n [AXIS_ID_COLUMNS]: i18n.t('Series'),\n [AXIS_ID_ROWS]: i18n.t('Category'),\n [AXIS_ID_FILTERS]: i18n.t('Filter'),\n }\n case LAYOUT_TYPE_PIVOT_TABLE:\n return {\n [AXIS_ID_COLUMNS]: i18n.t('Columns'),\n [AXIS_ID_ROWS]: i18n.t('Rows'),\n [AXIS_ID_FILTERS]: i18n.t('Filter'),\n }\n }\n}\n\nexport const getAxisNameByLayoutType = (axisId, layoutType) => {\n const name = getAxisNamesByLayoutType(layoutType)[axisId]\n if (!name) {\n throw new Error(`${axisId} is not a valid axis id`)\n }\n\n return name\n}\n\nexport const getAxisName = axisId =>\n getAxisNameByLayoutType(axisId, LAYOUT_TYPE_DEFAULT)\n\nexport const hasCustomAxes = series =>\n Boolean(series?.length && series.some(item => item.axis > 0))\n","import {\n VIS_TYPE_COLUMN,\n VIS_TYPE_STACKED_COLUMN,\n VIS_TYPE_BAR,\n VIS_TYPE_STACKED_BAR,\n VIS_TYPE_LINE,\n VIS_TYPE_AREA,\n VIS_TYPE_STACKED_AREA,\n VIS_TYPE_PIE,\n VIS_TYPE_RADAR,\n VIS_TYPE_GAUGE,\n VIS_TYPE_YEAR_OVER_YEAR_LINE,\n VIS_TYPE_YEAR_OVER_YEAR_COLUMN,\n VIS_TYPE_SINGLE_VALUE,\n VIS_TYPE_PIVOT_TABLE,\n} from './visTypes'\nimport {\n LAYOUT_TYPE_DEFAULT,\n LAYOUT_TYPE_PIE,\n LAYOUT_TYPE_YEAR_OVER_YEAR,\n LAYOUT_TYPE_PIVOT_TABLE,\n} from './layoutTypes'\n\nconst visTypeToLayoutType = {\n [VIS_TYPE_COLUMN]: LAYOUT_TYPE_DEFAULT,\n [VIS_TYPE_STACKED_COLUMN]: LAYOUT_TYPE_DEFAULT,\n [VIS_TYPE_BAR]: LAYOUT_TYPE_DEFAULT,\n [VIS_TYPE_STACKED_BAR]: LAYOUT_TYPE_DEFAULT,\n [VIS_TYPE_LINE]: LAYOUT_TYPE_DEFAULT,\n [VIS_TYPE_AREA]: LAYOUT_TYPE_DEFAULT,\n [VIS_TYPE_STACKED_AREA]: LAYOUT_TYPE_DEFAULT,\n [VIS_TYPE_PIE]: LAYOUT_TYPE_PIE,\n [VIS_TYPE_RADAR]: LAYOUT_TYPE_DEFAULT,\n [VIS_TYPE_GAUGE]: LAYOUT_TYPE_PIE,\n [VIS_TYPE_YEAR_OVER_YEAR_LINE]: LAYOUT_TYPE_YEAR_OVER_YEAR,\n [VIS_TYPE_YEAR_OVER_YEAR_COLUMN]: LAYOUT_TYPE_YEAR_OVER_YEAR,\n [VIS_TYPE_SINGLE_VALUE]: LAYOUT_TYPE_PIE,\n [VIS_TYPE_PIVOT_TABLE]: LAYOUT_TYPE_PIVOT_TABLE,\n}\n\nexport const getLayoutTypeByVisType = visType => visTypeToLayoutType[visType]\n","import React from 'react'\nimport { MenuDivider, FlyoutMenu, MenuItem, Tooltip } from '@dhis2/ui'\nimport i18n from '@dhis2/d2-i18n'\nimport PropTypes from 'prop-types'\n\nimport { getAvailableAxes } from '../modules/layoutUiRules'\nimport { AXIS_ID_FILTERS } from '../modules/layout/axis'\nimport {\n DIMENSION_ID_DATA,\n getPredefinedDimensionProp,\n DIMENSION_PROP_NO_ITEMS,\n} from '../modules/predefinedDimensions'\nimport { getDisplayNameByVisType } from '../modules/visTypes'\nimport { getAxisNameByLayoutType } from '../modules/axis'\nimport { getLayoutTypeByVisType } from '../modules/visTypeToLayoutType'\n\nconst getAxisItemLabel = (axisName, isDimensionInLayout) =>\n isDimensionInLayout\n ? i18n.t('Move to {{axisName}}', { axisName })\n : i18n.t('Add to {{axisName}}', { axisName })\n\nconst getRemoveMenuItem = onClick => (\n <MenuItem\n key=\"remove-menu-item\"\n onClick={onClick}\n label={i18n.t('Remove')}\n />\n)\n\nconst getDividerItem = key => <MenuDivider dense key={key} />\n\nconst getUnavailableLabel = visType =>\n i18n.t('Not available for {{visualizationType}}', {\n visualizationType: getDisplayNameByVisType(visType),\n })\n\nconst DimensionMenu = ({\n dimensionId,\n currentAxisId,\n visType,\n numberOfDimensionItems,\n assignedCategoriesItemHandler,\n isAssignedCategoriesInLayout,\n axisItemHandler,\n removeItemHandler,\n classes,\n onClose,\n}) => {\n const menuItems = []\n\n const isDimensionInLayout = !!currentAxisId\n\n // add/move to axis item\n const availableAxisIds = getAvailableAxes(visType)\n\n const applicableAxisIds = availableAxisIds.filter(\n axisId => axisId !== currentAxisId\n )\n\n const assignedCategoriesAvailableDestinations = getAvailableAxes(\n visType\n ).filter(axis => axis !== AXIS_ID_FILTERS)\n\n const assignedCategoriesItemLabel = isAssignedCategoriesInLayout\n ? i18n.t('Remove Assigned Categories')\n : i18n.t('Add Assigned Categories')\n\n // Assigned categories\n if (dimensionId === DIMENSION_ID_DATA && assignedCategoriesItemHandler) {\n if (assignedCategoriesAvailableDestinations.length) {\n if (!isAssignedCategoriesInLayout) {\n menuItems.push(\n <MenuItem\n label={assignedCategoriesItemLabel}\n key={`assigned-categories-item-${dimensionId}`}\n >\n {assignedCategoriesAvailableDestinations.map(\n destination => (\n <MenuItem\n key={destination}\n onClick={() => {\n assignedCategoriesItemHandler(\n destination\n )\n onClose()\n }}\n label={getAxisItemLabel(\n getAxisNameByLayoutType(\n destination,\n getLayoutTypeByVisType(visType)\n )\n )}\n />\n )\n )}\n </MenuItem>\n )\n } else {\n menuItems.push(\n <MenuItem\n key={`assigned-categories-item-${dimensionId}`}\n onClick={() => {\n assignedCategoriesItemHandler()\n onClose()\n }}\n label={assignedCategoriesItemLabel}\n />\n )\n }\n } else {\n menuItems.push(\n <Tooltip\n key={`assigned-categories-item-${dimensionId}`}\n content={getUnavailableLabel(visType)}\n aria-label=\"disabled\"\n classes={classes}\n >\n <MenuItem\n disabled\n dense\n label={assignedCategoriesItemLabel}\n />\n </Tooltip>\n )\n }\n }\n\n // divider\n menuItems.length &&\n menuItems.push(getDividerItem('assigned-categories-divider'))\n\n menuItems.push(\n ...applicableAxisIds.map(axisId => (\n <MenuItem\n key={`${dimensionId}-to-${axisId}`}\n onClick={() => {\n axisItemHandler({\n dimensionId,\n axisId,\n numberOfDimensionItems,\n requireItems: !getPredefinedDimensionProp(\n dimensionId,\n DIMENSION_PROP_NO_ITEMS\n ),\n isDimensionInLayout,\n })\n onClose()\n }}\n label={getAxisItemLabel(\n getAxisNameByLayoutType(\n axisId,\n getLayoutTypeByVisType(visType)\n ),\n isDimensionInLayout\n )}\n />\n ))\n )\n\n // remove item\n if (isDimensionInLayout) {\n // divider\n if (applicableAxisIds.length) {\n menuItems.push(getDividerItem('remove-item-divider'))\n }\n\n menuItems.push(\n getRemoveMenuItem(() => {\n removeItemHandler(dimensionId)\n onClose()\n })\n )\n }\n\n return <FlyoutMenu dense>{menuItems}</FlyoutMenu>\n}\n\nDimensionMenu.propTypes = {\n axisItemHandler: PropTypes.func.isRequired,\n numberOfDimensionItems: PropTypes.number.isRequired,\n removeItemHandler: PropTypes.func.isRequired,\n onClose: PropTypes.func.isRequired,\n assignedCategoriesItemHandler: PropTypes.func,\n classes: PropTypes.object,\n currentAxisId: PropTypes.string,\n dimensionId: PropTypes.string,\n isAssignedCategoriesInLayout: PropTypes.bool,\n visType: PropTypes.string,\n}\n\nexport default DimensionMenu\n","export const parseValue = valueString => {\n const parsedValue = parseFloat(valueString)\n if (isNaN(parsedValue)) {\n return valueString\n }\n return parsedValue\n}\n","export const SORT_ORDER_ASCENDING = 1\nexport const SORT_ORDER_DESCENDING = -1\n\nexport const CELL_TYPE_VALUE = 'value'\nexport const CELL_TYPE_SUBTOTAL = 'subtotal'\nexport const CELL_TYPE_TOTAL = 'total'\n\nexport const AGGREGATE_TYPE_SUM = 'SUM'\nexport const AGGREGATE_TYPE_AVERAGE = 'AVERAGE'\nexport const AGGREGATE_TYPE_NA = 'N/A'\n\nexport const VALUE_TYPE_TEXT = 'TEXT'\nexport const VALUE_TYPE_NUMBER = 'NUMBER'\n\nexport const NUMBER_TYPE_VALUE = 'VALUE'\nexport const NUMBER_TYPE_ROW_PERCENTAGE = 'ROW_PERCENTAGE'\nexport const NUMBER_TYPE_COLUMN_PERCENTAGE = 'COLUMN_PERCENTAGE'\n\nexport const FONT_SIZE_OPTION_SMALL = 'SMALL'\nexport const FONT_SIZE_SMALL = 10\nexport const FONT_SIZE_OPTION_NORMAL = 'NORMAL'\nexport const FONT_SIZE_NORMAL = 11\nexport const FONT_SIZE_OPTION_LARGE = 'LARGE'\nexport const FONT_SIZE_LARGE = 13\n\nexport const DISPLAY_DENSITY_OPTION_COMPACT = 'COMPACT'\nexport const DISPLAY_DENSITY_PADDING_COMPACT = 4\nexport const DISPLAY_DENSITY_OPTION_NORMAL = 'NORMAL'\nexport const DISPLAY_DENSITY_PADDING_NORMAL = 5\nexport const DISPLAY_DENSITY_OPTION_COMFORTABLE = 'COMFORTABLE'\nexport const DISPLAY_DENSITY_PADDING_COMFORTABLE = 7\n\nexport const CLIPPED_CELL_MAX_WIDTH = 360\n\nexport const COLUMN_PARTITION_SIZE_PX = 1000\n\nexport const DIMENSION_TYPE_DATA_ELEMENT_GROUP_SET = 'DATA_ELEMENT_GROUP_SET'\nexport const DIMENSION_TYPE_DATA = 'DATA_X'\nexport const DIMENSION_TYPE_PERIOD = 'PERIOD'\nexport const DIMENSION_TYPE_ORGUNIT = 'ORGANISATION_UNIT'\n","import {\n NUMBER_TYPE_ROW_PERCENTAGE,\n NUMBER_TYPE_COLUMN_PERCENTAGE,\n VALUE_TYPE_NUMBER,\n} from './pivotTableConstants'\n\nconst trimTrailingZeros = stringValue => stringValue.replace(/\\.?0+$/, '')\n\nconst defaultDecimalSeparator = '.'\n\nconst separateDigitGroups = (stringValue, decimalSeparator) => {\n const isNegative = stringValue[0] === '-'\n const [integer, remainder] = stringValue.replace(/^-/, '').split('.')\n\n const groups = []\n for (let i = integer.length; i > 0; i -= 3) {\n groups.unshift(integer.substring(i - 3, i))\n }\n\n if (isNegative) {\n groups[0] = '-' + groups[0]\n }\n\n if (remainder) {\n const trimmedRemainder = trimTrailingZeros(remainder)\n if (trimmedRemainder.length) {\n groups[groups.length - 1] += decimalSeparator + remainder\n }\n }\n\n return groups\n}\n\nconst getSeparator = visualization => {\n switch (visualization.digitGroupSeparator) {\n case 'SPACE':\n return ' '\n case 'COMMA':\n return ','\n // TODO: Requires backend support, and decimalSeparator would need to be separately configurable\n // case 'PERIOD':\n // return '.'\n case 'NONE':\n default:\n return ''\n }\n}\n\nconst toFixedPrecisionString = (value, skipRounding) => {\n if (typeof value !== 'number') {\n // Values returned from the server should keep their string representation\n return value\n }\n\n const precision = skipRounding ? 10 : value > -1 && value < 1 ? 2 : 1\n\n return value.toFixed(precision)\n}\n\nexport const renderValue = (value, valueType, visualization) => {\n if (valueType !== VALUE_TYPE_NUMBER || value === undefined) {\n return value\n }\n\n if (\n visualization.numberType === NUMBER_TYPE_ROW_PERCENTAGE ||\n visualization.numberType === NUMBER_TYPE_COLUMN_PERCENTAGE\n ) {\n return (\n trimTrailingZeros(\n toFixedPrecisionString(value * 100, visualization.skipRounding)\n ) + '%'\n )\n }\n\n const stringValue = toFixedPrecisionString(\n value,\n visualization.skipRounding\n )\n\n const digitGroups = separateDigitGroups(\n stringValue,\n defaultDecimalSeparator\n )\n return digitGroups.join(getSeparator(visualization))\n}\n","let canvas\n\nconst getContext = fontSize => {\n if (!canvas) {\n canvas = document.createElement('canvas')\n }\n\n const ctx = canvas.getContext('2d')\n ctx.font = `${fontSize}px Roboto, Arial, sans-serif`\n\n return ctx\n}\n\nexport const measureText = (text, fontSize = 11) => {\n const ctx = getContext(fontSize)\n\n const textMetrics = ctx.measureText(text)\n return textMetrics.width\n}\n","import times from 'lodash/times'\n\nimport { parseValue } from './parseValue'\nimport { renderValue } from './renderValue'\nimport { measureText } from './measureText'\n\nimport { DIMENSION_ID_ORGUNIT } from '../predefinedDimensions'\n\nimport {\n AGGREGATE_TYPE_NA,\n AGGREGATE_TYPE_AVERAGE,\n AGGREGATE_TYPE_SUM,\n CELL_TYPE_VALUE,\n CELL_TYPE_TOTAL,\n CELL_TYPE_SUBTOTAL,\n SORT_ORDER_ASCENDING,\n SORT_ORDER_DESCENDING,\n DISPLAY_DENSITY_PADDING_COMPACT,\n DISPLAY_DENSITY_PADDING_COMFORTABLE,\n DISPLAY_DENSITY_OPTION_COMFORTABLE,\n DISPLAY_DENSITY_OPTION_COMPACT,\n DISPLAY_DENSITY_OPTION_NORMAL,\n DISPLAY_DENSITY_PADDING_NORMAL,\n FONT_SIZE_OPTION_SMALL,\n FONT_SIZE_SMALL,\n FONT_SIZE_OPTION_LARGE,\n FONT_SIZE_LARGE,\n FONT_SIZE_OPTION_NORMAL,\n FONT_SIZE_NORMAL,\n COLUMN_PARTITION_SIZE_PX,\n CLIPPED_CELL_MAX_WIDTH,\n VALUE_TYPE_NUMBER,\n NUMBER_TYPE_COLUMN_PERCENTAGE,\n NUMBER_TYPE_ROW_PERCENTAGE,\n DIMENSION_TYPE_DATA,\n DIMENSION_TYPE_DATA_ELEMENT_GROUP_SET,\n DIMENSION_TYPE_ORGUNIT,\n DIMENSION_TYPE_PERIOD,\n VALUE_TYPE_TEXT,\n NUMBER_TYPE_VALUE,\n} from './pivotTableConstants'\n\nconst dataFields = [\n 'value',\n 'numerator',\n 'denominator',\n 'factor',\n 'multiplier',\n 'divisor',\n]\nconst defaultOptions = {\n hideEmptyColumns: false,\n hideEmptyRows: false,\n showRowTotals: false,\n showColumnTotals: false,\n showRowSubtotals: false,\n showColumnSubtotals: false,\n}\n\nconst isDxDimension = dimensionItem =>\n [DIMENSION_TYPE_DATA, DIMENSION_TYPE_DATA_ELEMENT_GROUP_SET].includes(\n dimensionItem.dimensionType\n )\n\nconst countFromDisaggregates = list => {\n let count = 1\n list.forEach(x => {\n count *= x.items.length\n })\n return count\n}\n\nconst addSize = list => {\n const reversedList = list.slice().reverse()\n reversedList.forEach((level, idx) => {\n // Start at the \"leaf\" disaggregate\n const lastLevel = reversedList[idx - 1]\n level.size = lastLevel ? lastLevel.count * lastLevel.size : 1\n })\n}\n\nconst listByDimension = list =>\n list.reduce((all, item) => {\n all[item.dimension] = item\n return all\n }, {})\n\nconst sortByHierarchy = items => {\n items.sort((a, b) => {\n if (!a.hierarchy || !b.hierarchy) {\n return 0\n }\n return a.hierarchy.join('/').localeCompare(b.hierarchy.join('/'))\n })\n}\n\nconst buildDimensionLookup = (visualization, metadata, headers) => {\n const rows = visualization.rows.map(row => ({\n dimension: row.dimension,\n meta: metadata.items[row.dimension],\n count: metadata.dimensions[row.dimension].length,\n itemIds: metadata.dimensions[row.dimension],\n items: metadata.dimensions[row.dimension].map(\n item => metadata.items[item]\n ),\n isDxDimension: isDxDimension(metadata.items[row.dimension]),\n position: 'row',\n }))\n const columns = visualization.columns.map(column => ({\n dimension: column.dimension,\n meta: metadata.items[column.dimension],\n count: metadata.dimensions[column.dimension].length,\n itemIds: metadata.dimensions[column.dimension],\n items: metadata.dimensions[column.dimension].map(\n item => metadata.items[item]\n ),\n isDxDimension: isDxDimension(metadata.items[column.dimension]),\n position: 'column',\n }))\n\n addSize(rows)\n addSize(columns)\n\n const allByDimension = {\n ...listByDimension(rows),\n ...listByDimension(columns),\n }\n\n const headerDimensions = headers.map(header => allByDimension[header.name])\n\n const rowHeaders = headerDimensions\n .map((_, idx) => idx)\n .filter(\n idx =>\n headerDimensions[idx] &&\n headerDimensions[idx].position === 'row'\n )\n const columnHeaders = headerDimensions\n .map((_, idx) => idx)\n .filter(\n idx =>\n headerDimensions[idx] &&\n headerDimensions[idx].position === 'column'\n )\n\n const dataHeaders = dataFields.reduce((out, field) => {\n out[field] = headers.findIndex(header => header.name === field)\n return out\n }, {})\n\n const ouDimension = allByDimension[DIMENSION_ID_ORGUNIT]\n\n if (\n visualization.showHierarchy &&\n metadata.ouNameHierarchy &&\n ouDimension\n ) {\n ouDimension.items.forEach(ou => {\n const hierarchy = metadata.ouNameHierarchy[ou.uid]\n if (hierarchy) {\n ou.hierarchy = hierarchy.split('/').filter(x => x.length)\n }\n })\n sortByHierarchy(ouDimension.items)\n ouDimension.itemIds = ouDimension.items.map(item => item.uid)\n }\n\n return {\n rows,\n columns,\n allByDimension,\n headerDimensions,\n rowHeaders,\n columnHeaders,\n dataHeaders,\n }\n}\n\nconst lookup = (\n dataRow,\n dimensionLookup,\n { doColumnSubtotals, doRowSubtotals }\n) => {\n let row = 0\n for (const headerIndex of dimensionLookup.rowHeaders) {\n const idx = dimensionLookup.headerDimensions[\n headerIndex\n ].itemIds.indexOf(dataRow[headerIndex])\n\n if (idx === -1) {\n return undefined\n }\n\n const size = dimensionLookup.headerDimensions[headerIndex].size\n row += idx * size\n }\n\n if (doColumnSubtotals) {\n row += Math.floor(row / dimensionLookup.rows[0].size)\n }\n\n let column = 0\n for (const headerIndex of dimensionLookup.columnHeaders) {\n const idx = dimensionLookup.headerDimensions[\n headerIndex\n ].itemIds.indexOf(dataRow[headerIndex])\n\n if (idx === -1) {\n return undefined\n }\n const size = dimensionLookup.headerDimensions[headerIndex].size\n column += idx * size\n }\n\n if (doRowSubtotals) {\n column += Math.floor(column / dimensionLookup.columns[0].size)\n }\n\n return { column, row }\n}\n\nconst applyTotalAggregationType = (\n {\n totalAggregationType,\n value,\n numerator,\n denominator,\n multiplier,\n divisor,\n },\n overrideTotalAggregationType\n) => {\n switch (overrideTotalAggregationType || totalAggregationType) {\n case AGGREGATE_TYPE_NA:\n return 'N/A'\n case AGGREGATE_TYPE_AVERAGE:\n return (\n ((numerator || value) * multiplier) /\n (denominator * divisor || 1)\n )\n case AGGREGATE_TYPE_SUM:\n default:\n return value\n }\n}\n\nexport class PivotTableEngine {\n visualization\n rawData\n options\n legendSets\n\n dimensionLookup\n\n columnDepth = 0\n rowDepth = 0\n\n height = 0\n width = 0\n data = []\n columnWidths = []\n rowMap = []\n columnMap = []\n\n constructor(visualization, data, legendSets) {\n this.visualization = visualization\n this.legendSets = (legendSets || []).reduce((sets, set) => {\n sets[set.id] = set\n return sets\n }, {})\n this.rawData = data\n this.options = {\n ...defaultOptions,\n showColumnTotals: visualization.colTotals,\n showRowTotals: visualization.rowTotals,\n showColumnSubtotals: visualization.colSubTotals,\n showRowSubtotals: visualization.rowSubTotals,\n hideEmptyColumns: visualization.hideEmptyColumns,\n hideEmptyRows: visualization.hideEmptyRows,\n title: visualization.hideTitle ? undefined : visualization.title,\n subtitle: visualization.hideSubtitle\n ? undefined\n : visualization.subtitle,\n }\n\n this.dimensionLookup = buildDimensionLookup(\n this.visualization,\n this.rawData.metaData,\n this.rawData.headers\n )\n\n const doColumnSubtotals =\n this.options.showColumnSubtotals &&\n this.dimensionLookup.rows.length > 1\n const singularRow =\n this.dimensionLookup.rows.length === 1 &&\n this.dimensionLookup.rows[0].count === 1\n const firstColumnIsSortable = !doColumnSubtotals && !singularRow\n\n this.columnDepth =\n this.dimensionLookup.columns.length ||\n (this.visualization.showDimensionLabels || firstColumnIsSortable\n ? 1\n : 0)\n this.rowDepth =\n this.dimensionLookup.rows.length ||\n (this.visualization.showDimensionLabels ? 1 : 0)\n\n this.buildMatrix()\n }\n\n getRaw({ row, column }) {\n const cellType = this.getRawCellType({ row, column })\n const dxDimension = this.getRawCellDxDimension({ row, column })\n\n const headers = [\n ...this.getRawRowHeader(row),\n ...this.getRawColumnHeader(column),\n ]\n const peId = headers.find(\n header => header?.dimensionItemType === DIMENSION_TYPE_PERIOD\n )?.uid\n const ouId = headers.find(\n header => header?.dimensionItemType === DIMENSION_TYPE_ORGUNIT\n )?.uid\n\n if (!this.data[row] || !this.data[row][column]) {\n return {\n cellType,\n empty: true,\n ouId,\n peId,\n }\n }\n\n const dataRow = this.data[row][column]\n\n let rawValue =\n cellType === CELL_TYPE_VALUE\n ? dataRow[this.dimensionLookup.dataHeaders.value]\n : dataRow.value\n let renderedValue = rawValue\n const valueType = dxDimension?.valueType || VALUE_TYPE_TEXT\n\n if (valueType === VALUE_TYPE_NUMBER) {\n rawValue = parseValue(rawValue)\n switch (this.visualization.numberType) {\n case NUMBER_TYPE_ROW_PERCENTAGE:\n renderedValue = rawValue / this.percentageTotals[row].value\n break\n case NUMBER_TYPE_COLUMN_PERCENTAGE:\n renderedValue =\n rawValue / this.percentageTotals[column].value\n break\n default:\n break\n }\n }\n\n renderedValue = renderValue(\n renderedValue,\n valueType,\n this.visualization\n )\n\n return {\n cellType,\n empty: false,\n valueType,\n rawValue,\n renderedValue,\n dxDimension,\n ouId,\n peId,\n }\n }\n\n get({ row, column }) {\n const mappedRow = this.rowMap[row],\n mappedColumn = this.columnMap[column]\n if (\n (!mappedRow && mappedRow !== 0) ||\n (!mappedColumn && mappedColumn !== 0)\n ) {\n return undefined\n }\n\n return this.getRaw({ row: mappedRow, column: mappedColumn })\n }\n\n getRawCellType({ row, column }) {\n const isRowTotal = this.doRowTotals && column === this.dataWidth - 1\n const isColumnTotal = this.doColumnTotals && row === this.dataHeight - 1\n if (isRowTotal || isColumnTotal) {\n return CELL_TYPE_TOTAL\n }\n\n const isRowSubtotal =\n this.doRowSubtotals &&\n (column + 1) % (this.dimensionLookup.columns[0].size + 1) === 0\n const isColumnSubtotal =\n this.doColumnSubtotals &&\n (row + 1) % (this.dimensionLookup.rows[0].size + 1) === 0\n\n if (isRowSubtotal || isColumnSubtotal) {\n return CELL_TYPE_SUBTOTAL\n }\n\n return CELL_TYPE_VALUE\n }\n getCellType({ row, column }) {\n row = this.rowMap[row]\n column = this.columnMap[column]\n return this.getRawCellType({ row, column })\n }\n\n getDimensionLabel(rowLevel, columnLevel) {\n const lastRowLevel = this.rowDepth - 1\n const lastColumnLevel = this.columnDepth - 1\n\n if (rowLevel !== lastRowLevel && columnLevel !== lastColumnLevel) {\n return null\n }\n if (\n rowLevel === lastRowLevel &&\n this.dimensionLookup.rows[lastRowLevel] &&\n columnLevel === lastColumnLevel &&\n this.dimensionLookup.columns[lastColumnLevel]\n ) {\n return `${this.dimensionLookup.rows[lastRowLevel].meta.name} / ${this.dimensionLookup.columns[lastColumnLevel].meta.name}`\n }\n\n if (lastRowLevel === -1) {\n return this.dimensionLookup.columns[columnLevel].meta.name\n }\n if (lastColumnLevel === -1) {\n return this.dimensionLookup.rows[rowLevel].meta.name\n }\n\n if (\n rowLevel === lastRowLevel &&\n this.dimensionLookup.columns[columnLevel]\n ) {\n return this.dimensionLookup.columns[columnLevel].meta.name\n }\n if (\n columnLevel === lastColumnLevel &&\n this.dimensionLookup.rows[rowLevel]\n ) {\n return this.dimensionLookup.rows[rowLevel].meta.name\n }\n }\n\n getCellDxDimension({ row, column }) {\n return this.getRawCellDxDimension({\n row: this.rowMap[row],\n column: this.columnMap[column],\n })\n }\n getRawCellDxDimension({ row, column }) {\n if (!this.data[row]) {\n return undefined\n }\n const cellValue = this.data[row][column]\n if (!cellValue) {\n return undefined\n }\n if (!Array.isArray(cellValue)) {\n // This is a total cell\n return {\n valueType: cellValue.valueType,\n totalAggregationType: cellValue.totalAggregationType,\n legendSet: undefined,\n }\n }\n\n const rowHeaders = this.getRawRowHeader(row)\n const columnHeaders = this.getRawColumnHeader(column)\n\n const dxRowIndex = this.dimensionLookup.rows.findIndex(\n dim => dim.isDxDimension\n )\n if (rowHeaders.length && dxRowIndex !== -1) {\n return {\n valueType: rowHeaders[dxRowIndex].valueType,\n totalAggregationType:\n rowHeaders[dxRowIndex].totalAggregationType,\n legendSet: rowHeaders[dxRowIndex].legendSet,\n }\n }\n\n const dxColumnIndex = this.dimensionLookup.columns.findIndex(\n dim => dim.isDxDimension\n )\n if (columnHeaders.length && dxColumnIndex !== -1) {\n return {\n valueType: columnHeaders[dxColumnIndex].valueType,\n totalAggregationType:\n columnHeaders[dxColumnIndex].totalAggregationType,\n legendSet: columnHeaders[dxColumnIndex].legendSet,\n }\n }\n\n // Data is in Filter\n // TODO : This assumes the server ignores text types, we should confirm this is the case\n return {\n valueType: VALUE_TYPE_NUMBER,\n totalAggregationType: AGGREGATE_TYPE_SUM,\n }\n }\n\n rowIsEmpty(row) {\n return !this.data[row] || this.data[row].length === 0\n }\n columnIsEmpty(column) {\n return !this.columnWidths[column]\n }\n\n getRawColumnHeader(column) {\n if (this.doRowTotals && column === this.dataWidth - 1) {\n return times(this.columnDepth - 1, () => undefined).concat([\n { name: 'Total' },\n ])\n }\n if (this.doRowSubtotals) {\n if (\n (column + 1) % (this.dimensionLookup.columns[0].size + 1) ===\n 0\n ) {\n return times(this.columnDepth - 1, () => undefined).concat([\n { name: 'Subtotal' },\n ])\n }\n column -= Math.floor(\n column / (this.dimensionLookup.columns[0].size + 1)\n )\n }\n return this.dimensionLookup.columns.map(dimension => {\n const itemIndex =\n Math.floor(column / dimension.size) % dimension.count\n return dimension.items[itemIndex]\n })\n }\n getColumnHeader(column) {\n return this.getRawColumnHeader(this.columnMap[column])\n }\n\n getRawRowHeader(row) {\n if (this.doColumnTotals && row === this.dataHeight - 1) {\n return times(this.rowDepth - 1, () => undefined).concat([\n { name: 'Total' },\n ])\n }\n if (this.doColumnSubtotals) {\n if ((row + 1) % (this.dimensionLookup.rows[0].size + 1) === 0) {\n return times(this.rowDepth - 1, () => undefined).concat([\n { name: 'Subtotal' },\n ])\n }\n row -= Math.floor(row / (this.dimensionLookup.rows[0].size + 1))\n }\n\n return this.dimensionLookup.rows.map(dimension => {\n const itemIndex = Math.floor(row / dimension.size) % dimension.count\n return dimension.items[itemIndex]\n })\n }\n getRowHeader(row) {\n return this.getRawRowHeader(this.rowMap[row])\n }\n\n getDependantTotalCells({ row, column }) {\n const rowSubtotalSize = this.dimensionLookup.columns[0]?.size + 1\n const rowSubtotal = rowSubtotalSize &&\n this.doRowSubtotals && {\n row,\n column:\n Math.ceil((column + 1) / rowSubtotalSize) *\n rowSubtotalSize -\n 1,\n size: rowSubtotalSize - 1,\n }\n const rowSubtotalColumnTotal = this.doRowSubtotals &&\n this.doColumnTotals && {\n row: this.dataHeight - 1,\n column: rowSubtotal.column,\n size: this.rawDataHeight,\n }\n\n const columnSubtotalSize = this.dimensionLookup.rows[0]?.size + 1\n const columnSubtotal = columnSubtotalSize &&\n this.doColumnSubtotals && {\n row:\n Math.ceil((row + 1) / columnSubtotalSize) *\n columnSubtotalSize -\n 1,\n column,\n size: columnSubtotalSize - 1,\n }\n\n const columnSubtotalRowTotal = this.doColumnSubtotals &&\n this.doRowTotals && {\n row: columnSubtotal.row,\n column: this.dataWidth - 1,\n size: this.rawDataWidth,\n }\n\n const combinedSubtotal = rowSubtotalSize &&\n columnSubtotalSize &&\n this.doColumnSubtotals &&\n this.doRowSubtotals && {\n row: columnSubtotal.row,\n column: rowSubtotal.column,\n size: columnSubtotalSize * rowSubtotalSize,\n }\n\n const rowTotal = this.doRowTotals && {\n row,\n column: this.dataWidth - 1,\n size: this.rawDataWidth,\n }\n\n const columnTotal = this.doColumnTotals && {\n row: this.dataHeight - 1,\n column,\n size: this.rawDataHeight,\n }\n\n const combinedTotal = this.doColumnTotals &&\n this.doRowTotals && {\n row: this.dataHeight - 1,\n column: this.dataWidth - 1,\n size: this.rawDataHeight * this.rawDataWidth,\n }\n\n return {\n rowSubtotal,\n rowSubtotalColumnTotal,\n columnSubtotal,\n columnSubtotalRowTotal,\n rowTotal,\n columnTotal,\n combinedSubtotal,\n combinedTotal,\n }\n }\n\n addCellValueToTotals(pos, dataRow) {\n const totals = this.getDependantTotalCells(pos)\n const dxDimension = this.getRawCellDxDimension(pos)\n\n Object.values(totals).forEach(totalItem => {\n if (!totalItem) return\n\n this.data[totalItem.row] = this.data[totalItem.row] || []\n\n this.data[totalItem.row][totalItem.column] = this.data[\n totalItem.row\n ][totalItem.column] || {\n count: 0,\n totalCount: totalItem.size,\n }\n const totalCell = this.data[totalItem.row][totalItem.column]\n\n const currentAggType = dxDimension?.totalAggregationType\n const previousAggType =\n totalCell.totalAggregationType || currentAggType\n if (previousAggType && currentAggType !== previousAggType) {\n totalCell.totalAggregationType = AGGREGATE_TYPE_NA\n } else {\n totalCell.totalAggregationType = currentAggType\n }\n\n const currentValueType = dxDimension?.valueType\n const previousValueType = totalCell.valueType\n if (previousValueType && currentValueType !== previousValueType) {\n totalCell.valueType = AGGREGATE_TYPE_NA\n } else {\n totalCell.valueType = currentValueType\n }\n\n if (dxDimension?.valueType === VALUE_TYPE_NUMBER) {\n dataFields.forEach(field => {\n const headerIndex = this.dimensionLookup.dataHeaders[field]\n const value = parseValue(dataRow[headerIndex])\n if (value && !isNaN(value)) {\n totalCell[field] = (totalCell[field] || 0) + value\n }\n })\n }\n totalCell.count += 1\n })\n\n if (this.visualization.numberType === NUMBER_TYPE_ROW_PERCENTAGE) {\n if (!this.percentageTotals[pos.row]) {\n this.percentageTotals[pos.row] = {\n count: 0,\n totalCount: this.rawDataWidth,\n }\n }\n const percentageTotal = this.percentageTotals[pos.row]\n dataFields.forEach(field => {\n const headerIndex = this.dimensionLookup.dataHeaders[field]\n const value = parseValue(dataRow[headerIndex])\n if (value && !isNaN(value)) {\n percentageTotal[field] =\n (percentageTotal[field] || 0) + value\n }\n })\n\n if (totals.columnSubtotal) {\n if (!this.percentageTotals[totals.columnSubtotal.row]) {\n this.percentageTotals[totals.columnSubtotal.row] = {\n count: 0,\n totalCount: this.rawDataWidth,\n }\n }\n const percentageTotal = this.percentageTotals[\n totals.columnSubtotal.row\n ]\n dataFields.forEach(field => {\n const headerIndex = this.dimensionLookup.dataHeaders[field]\n const value = parseValue(dataRow[headerIndex])\n if (value && !isNaN(value)) {\n percentageTotal[field] =\n (percentageTotal[field] || 0) + value\n }\n })\n }\n\n if (totals.columnTotal) {\n if (!this.percentageTotals[totals.columnTotal.row]) {\n this.percentageTotals[totals.columnTotal.row] = {\n count: 0,\n totalCount: this.rawDataWidth,\n }\n }\n const percentageTotal = this.percentageTotals[\n totals.columnTotal.row\n ]\n dataFields.forEach(field => {\n const headerIndex = this.dimensionLookup.dataHeaders[field]\n const value = parseValue(dataRow[headerIndex])\n if (value && !isNaN(value)) {\n percentageTotal[field] =\n (percentageTotal[field] || 0) + value\n }\n })\n }\n }\n\n if (this.visualization.numberType === NUMBER_TYPE_COLUMN_PERCENTAGE) {\n if (!this.percentageTotals[pos.column]) {\n this.percentageTotals[pos.column] = {\n count: 0,\n totalCount: this.rawDataHeight,\n }\n }\n const percentageTotal = this.percentageTotals[pos.column]\n dataFields.forEach(field => {\n const headerIndex = this.dimensionLookup.dataHeaders[field]\n const value = parseValue(dataRow[headerIndex])\n if (value && !isNaN(value)) {\n percentageTotal[field] =\n (percentageTotal[field] || 0) + value\n }\n })\n\n if (totals.rowSubtotal) {\n if (!this.percentageTotals[totals.rowSubtotal.column]) {\n this.percentageTotals[totals.rowSubtotal.column] = {\n count: 0,\n totalCount: this.rawDataHeight,\n }\n }\n const percentageTotal = this.percentageTotals[\n totals.rowSubtotal.column\n ]\n dataFields.forEach(field => {\n const headerIndex = this.dimensionLookup.dataHeaders[field]\n const value = parseValue(dataRow[headerIndex])\n if (value && !isNaN(value)) {\n percentageTotal[field] =\n (percentageTotal[field] || 0) + value\n }\n })\n }\n\n if (totals.rowTotal) {\n if (!this.percentageTotals[totals.rowTotal.column]) {\n this.percentageTotals[totals.rowTotal.column] = {\n count: 0,\n totalCount: this.rawDataHeight,\n }\n }\n const percentageTotal = this.percentageTotals[\n totals.rowTotal.column\n ]\n dataFields.forEach(field => {\n const headerIndex = this.dimensionLookup.dataHeaders[field]\n const value = parseValue(dataRow[headerIndex])\n if (value && !isNaN(value)) {\n percentageTotal[field] =\n (percentageTotal[field] || 0) + value\n }\n })\n }\n }\n }\n finalizeTotal({ row, column }) {\n if (!this.data[row]) {\n return\n }\n const totalCell = this.data[row][column]\n if (totalCell && totalCell.count) {\n totalCell.value = applyTotalAggregationType(\n totalCell,\n this.visualization.numberType !== NUMBER_TYPE_VALUE &&\n AGGREGATE_TYPE_SUM\n )\n this.addCellForAdaptiveClipping(\n { row, column },\n renderValue(\n totalCell.value,\n totalCell.valueType,\n this.visualization\n )\n )\n }\n }\n\n finalizeTotals() {\n const columnSubtotalSize = this.dimensionLookup.rows[0]?.size + 1\n const rowSubtotalSize = this.dimensionLookup.columns[0]?.size + 1\n\n if (this.doRowSubtotals && rowSubtotalSize) {\n times(\n this.dimensionLookup.columns[0].count,\n n => (n + 1) * rowSubtotalSize - 1\n ).forEach(column => {\n times(\n this.dataHeight - (this.doColumnTotals ? 1 : 0),\n n => n\n ).forEach(row => {\n // skip combined subtotal cells\n if (\n !this.doColumnSubtotals ||\n (row + 1) % columnSubtotalSize !== 0\n ) {\n this.finalizeTotal({ row, column })\n }\n })\n })\n }\n if (this.doColumnSubtotals && columnSubtotalSize) {\n times(\n this.dimensionLookup.rows[0].count,\n n => (n + 1) * columnSubtotalSize - 1\n ).forEach(row => {\n times(\n this.dataWidth - (this.doRowTotals ? 1 : 0),\n n => n\n ).forEach(column => {\n // skip combined subtotal cells\n if (\n !this.doRowSubtotals ||\n (column + 1) % rowSubtotalSize !== 0\n ) {\n this.finalizeTotal({ row, column })\n }\n })\n })\n }\n\n // Combined subtotal cells\n if (\n this.doRowSubtotals &&\n this.doColumnSubtotals &&\n rowSubtotalSize &&\n columnSubtotalSize\n ) {\n times(\n this.dimensionLookup.rows[0].count,\n n => (n + 1) * columnSubtotalSize - 1\n ).forEach(row => {\n times(\n this.dimensionLookup.columns[0].count,\n n => (n + 1) * rowSubtotalSize - 1\n ).forEach(column => {\n this.finalizeTotal({ row, column })\n })\n })\n }\n if (this.doRowTotals) {\n const column = this.dataWidth - 1\n times(this.dataHeight - 1, n => n).forEach(row => {\n this.finalizeTotal({ row, column })\n })\n }\n\n if (this.doColumnTotals) {\n const row = this.dataHeight - 1\n times(this.dataWidth - 1, n => n).forEach(column => {\n this.finalizeTotal({ row, column })\n })\n }\n\n if (this.doRowTotals && this.doColumnTotals) {\n this.finalizeTotal({\n row: this.dataHeight - 1,\n column: this.dataWidth - 1,\n })\n }\n\n if (this.percentageTotals) {\n this.percentageTotals.forEach(item => {\n item.value = applyTotalAggregationType(item)\n })\n }\n }\n\n addCellForAdaptiveClipping({ column }, renderedValue) {\n this.columnWidths[column] = Math.max(\n this.columnWidths[column] || 0,\n measureText(renderedValue, this.fontSize)\n )\n }\n\n finalizeAdaptiveClipping() {\n this.dataPixelWidth = 0\n this.rowHeaderPixelWidth = 0\n\n let nextPartitionPx = 0\n this.columnPartitions = []\n\n const getColumnWidth = contentWidth =>\n Math.min(CLIPPED_CELL_MAX_WIDTH, Math.ceil(contentWidth)) +\n this.cellPadding * 2 +\n /*border*/ 2\n\n this.columnMap.forEach(column => {\n const header = this.getRawColumnHeader(column)[this.columnDepth - 1]\n const label =\n this.visualization.showHierarchy && header?.hierarchy\n ? header.hierarchy.join(' / ')\n : header?.name\n\n if (label) {\n const headerSize = measureText(label, this.fontSize)\n this.columnWidths[column] = Math.max(\n this.columnWidths[column] || 0,\n headerSize +\n (this.isSortable(column) ? this.scrollIconBuffer : 0)\n )\n }\n\n const colWidth = getColumnWidth(this.columnWidths[column])\n this.columnWidths[column] = {\n pre: this.dataPixelWidth,\n width: colWidth,\n }\n\n if (this.dataPixelWidth >= nextPartitionPx) {\n this.columnPartitions.push(column)\n nextPartitionPx += COLUMN_PARTITION_SIZE_PX\n }\n this.dataPixelWidth += colWidth\n })\n\n if (\n !this.dimensionLookup.rows.length &&\n this.visualization.showDimensionLabels\n ) {\n let maxWidth = 0\n this.dimensionLookup.columns.forEach((_, columnLevel) => {\n const label = this.getDimensionLabel(0, columnLevel)\n if (label) {\n const headerSize = measureText(label, this.fontSize)\n maxWidth = Math.max(maxWidth, headerSize)\n }\n })\n\n const columnWidth = getColumnWidth(maxWidth)\n this.rowHeaderPixelWidth = columnWidth\n this.rowHeaderWidths = [columnWidth]\n }\n\n this.rowHeaderWidths = this.dimensionLookup.rows.map((_, rowLevel) => {\n let maxWidth = 0\n this.rowMap.forEach(rawColumn => {\n const header = this.getRawRowHeader(rawColumn)[rowLevel]\n const label =\n this.visualization.showHierarchy && header?.hierarchy\n ? header.hierarchy.join(' / ')\n : header?.name\n if (label) {\n const headerSize = measureText(label, this.fontSize)\n maxWidth = Math.max(maxWidth, headerSize)\n }\n }, 0)\n\n if (this.visualization.showDimensionLabels) {\n this.dimensionLookup.columns.forEach((_, columnLevel) => {\n const label = this.getDimensionLabel(rowLevel, columnLevel)\n if (label) {\n const headerSize = measureText(label, this.fontSize)\n maxWidth = Math.max(maxWidth, headerSize)\n }\n })\n }\n const columnWidth = getColumnWidth(maxWidth)\n this.rowHeaderPixelWidth += columnWidth\n return columnWidth\n })\n }\n\n resetRowMap() {\n this.rowMap = this.options.hideEmptyRows\n ? times(this.dataHeight, n => n).filter(idx => !!this.data[idx])\n : times(this.dataHeight, n => n)\n }\n\n resetColumnMap() {\n this.columnMap = this.options.hideEmptyColumns\n ? times(this.dataWidth, n => n).filter(\n idx => !!this.columnWidths[idx]\n )\n : times(this.dataWidth, n => n)\n }\n\n get cellPadding() {\n switch (this.visualization.displayDensity) {\n case DISPLAY_DENSITY_OPTION_COMPACT:\n return DISPLAY_DENSITY_PADDING_COMPACT\n case DISPLAY_DENSITY_OPTION_COMFORTABLE:\n return DISPLAY_DENSITY_PADDING_COMFORTABLE\n case DISPLAY_DENSITY_OPTION_NORMAL:\n default:\n return DISPLAY_DENSITY_PADDING_NORMAL\n }\n }\n\n get fontSize() {\n switch (this.visualization.fontSize) {\n case FONT_SIZE_OPTION_SMALL:\n return FONT_SIZE_SMALL\n case FONT_SIZE_OPTION_LARGE:\n return FONT_SIZE_LARGE\n case FONT_SIZE_OPTION_NORMAL:\n default:\n return FONT_SIZE_NORMAL\n }\n }\n\n get scrollIconBuffer() {\n switch (this.visualization.fontSize) {\n case FONT_SIZE_OPTION_SMALL:\n return 11\n case FONT_SIZE_OPTION_LARGE:\n return 15\n case FONT_SIZE_OPTION_NORMAL:\n default:\n return 13\n }\n }\n\n buildMatrix() {\n this.data = []\n this.columnWidths = []\n\n this.dataHeight = this.rawDataHeight = countFromDisaggregates(\n this.dimensionLookup.rows\n )\n\n this.dataWidth = this.rawDataWidth = countFromDisaggregates(\n this.dimensionLookup.columns\n )\n\n // TODO: Check last row/col dimension for size===1, skip redundant sub-totals\n this.doRowSubtotals =\n this.options.showRowSubtotals && this.columnDepth > 1\n this.doColumnSubtotals =\n this.options.showColumnSubtotals && this.rowDepth > 1\n\n this.doRowTotals = this.options.showRowTotals && this.dataWidth > 1\n this.doColumnTotals =\n this.options.showColumnTotals && this.dataHeight > 1\n\n if (this.doRowSubtotals) {\n this.dataWidth += this.dimensionLookup.columns[0].count\n }\n if (this.doColumnSubtotals) {\n this.dataHeight += this.dimensionLookup.rows[0].count\n }\n if (this.doRowTotals) {\n this.dataWidth += 1\n }\n if (this.doColumnTotals) {\n this.dataHeight += 1\n }\n\n // TODO: Use total cell calculation, don't duplicate here\n if (\n this.visualization.numberType === NUMBER_TYPE_ROW_PERCENTAGE ||\n this.visualization.numberType === NUMBER_TYPE_COLUMN_PERCENTAGE\n ) {\n this.percentageTotals = []\n }\n\n this.rawData.rows.forEach(dataRow => {\n const pos = lookup(dataRow, this.dimensionLookup, this)\n\n if (pos) {\n this.data[pos.row] = this.data[pos.row] || []\n this.data[pos.row][pos.column] = dataRow\n\n this.addCellValueToTotals(pos, dataRow)\n }\n })\n\n this.finalizeTotals()\n\n this.rawData.rows.forEach(dataRow => {\n const pos = lookup(dataRow, this.dimensionLookup, this)\n if (pos) {\n this.addCellForAdaptiveClipping(\n pos,\n this.getRaw(pos).renderedValue\n )\n }\n })\n\n this.resetRowMap()\n this.resetColumnMap()\n\n this.height = this.rowMap.length\n this.width = this.columnMap.length\n\n this.finalizeAdaptiveClipping()\n }\n\n getColumnType(column) {\n column = this.columnMap[column]\n if (!column && column !== 0) {\n return undefined\n }\n if (\n this.doRowSubtotals &&\n (column + 1) % (this.dimensionLookup.columns[0].size + 1) === 0\n ) {\n return CELL_TYPE_SUBTOTAL\n }\n if (this.doRowTotals && column === this.dataWidth - 1) {\n return CELL_TYPE_TOTAL\n }\n return CELL_TYPE_VALUE\n }\n\n isSortable(column) {\n return (\n this.dataHeight > 1 &&\n !this.doColumnSubtotals &&\n this.getColumnType(column) !== undefined\n )\n }\n\n sort(column, order) {\n if (order !== SORT_ORDER_ASCENDING && order !== SORT_ORDER_DESCENDING) {\n console.warn(`Invalid sort order ${order}`)\n return\n }\n\n if (!this.isSortable(column)) {\n console.warn(`Invalid sort column ${column}`)\n return\n }\n\n const mappedColumn = this.columnMap[column]\n this.rowMap.sort((rowA, rowB) => {\n if (this.doColumnTotals && rowA === this.dataHeight - 1) {\n return 1\n }\n if (this.doColumnTotals && rowB === this.dataHeight - 1) {\n return -1\n }\n const valueA = this.getRaw({ row: rowA, column: mappedColumn })\n const valueB = this.getRaw({ row: rowB, column: mappedColumn })\n\n if ((!valueA || valueA.empty) && (!valueB || valueB.empty)) {\n return 0\n }\n if (!valueA || valueA.empty) {\n return -1 * order\n }\n if (!valueB || valueB.empty) {\n return 1 * order\n }\n\n if (\n valueA.valueType === VALUE_TYPE_NUMBER &&\n valueB.valueType === VALUE_TYPE_NUMBER\n ) {\n return (valueA.rawValue - valueB.rawValue) * order\n }\n return (\n valueA.renderedValue.localeCompare(valueB.renderedValue) * order\n )\n })\n }\n\n clearSort() {\n this.resetRowMap()\n }\n}\n","import { useState, useEffect } from 'react'\nimport ResizeObserver from 'resize-observer-polyfill'\n\nconst initialState = { width: 0, height: 0 }\n\nexport const useParentSize = (\n elementRef,\n renderCounter,\n initialSize = initialState\n) => {\n const [size, setSize] = useState({\n width: initialSize.width || 0,\n height: initialSize.height || 0,\n })\n\n useEffect(() => {\n const el = elementRef.current && elementRef.current.parentElement\n if (!el) return\n\n const onResize = () => {\n setSize({\n width: el.clientWidth,\n height: el.clientHeight,\n })\n }\n\n onResize(el)\n\n if (renderCounter) {\n setSize(initialState)\n }\n\n const observer = new ResizeObserver(onResize)\n observer.observe(el)\n\n return () => observer.disconnect()\n }, [elementRef, renderCounter])\n\n return size\n}\n","import { useState, useCallback, useEffect } from 'react'\n\nimport debounce from 'lodash/debounce'\n\nexport const useScrollPosition = (containerRef, debounceWait = 10) => {\n const [scrollPosition, setScrollPosition] = useState({ x: 0, y: 0 })\n\n const onScroll = useCallback(\n debounce(() => {\n const scroll = {\n x: containerRef.current.scrollLeft,\n y: containerRef.current.scrollTop,\n }\n setScrollPosition(scroll)\n }, debounceWait)\n )\n\n useEffect(() => {\n const currentRef = containerRef.current\n if (!currentRef) {\n return\n }\n\n currentRef.addEventListener('scroll', onScroll)\n return () => {\n currentRef.removeEventListener('scroll', onScroll)\n }\n }, [containerRef, onScroll])\n\n return scrollPosition\n}\n","import times from 'lodash/times'\n\nexport const clipAxis = ({ position, size, step, totalCount, headerCount }) => {\n const floor = headerCount * step\n const offset = position < floor ? floor - position : 0\n\n const count = Math.min(totalCount, Math.ceil((size - offset) / step) + 1)\n position = Math.max(0, position - floor) // TODO: Support sticky headers\n const start = Math.min(totalCount - count, Math.floor(position / step))\n const pre = Math.max(start * step, 0)\n const post = (totalCount - (start + count)) * step\n const indices = times(count, n => start + n)\n\n return {\n indices,\n pre,\n post,\n }\n}\n","export const clipPartitionedAxis = ({\n partitionSize,\n partitions,\n axisMap,\n widthMap,\n viewportWidth,\n viewportPosition,\n totalWidth,\n}) => {\n const partition = Math.floor(viewportPosition / partitionSize)\n\n if (partitions[partition] === undefined) {\n return {\n indices: [0],\n pre: 0,\n post: 0,\n }\n }\n\n let start = partitions[partition] - partitions[0]\n while (\n start < axisMap.length &&\n widthMap[axisMap[start]].pre < viewportPosition\n ) {\n ++start\n }\n start = start === 0 ? start : start - 1\n const pre = widthMap[axisMap[start]].pre\n const indices = []\n let end = start\n while (\n end < axisMap.length &&\n widthMap[axisMap[end]].pre < viewportPosition + viewportWidth\n ) {\n indices.push(end)\n ++end\n }\n end = end === 0 ? end : end - 1\n const post =\n totalWidth - (widthMap[axisMap[end]].pre + widthMap[axisMap[end]].width)\n\n return {\n indices,\n pre,\n post,\n }\n}\n","import { useMemo } from 'react'\nimport { useScrollPosition } from './useScrollPosition'\nimport { clipAxis } from './clipAxis'\nimport { COLUMN_PARTITION_SIZE_PX } from './pivotTableConstants'\nimport { clipPartitionedAxis } from './clipPartitionedAxis'\n\nexport const useTableClipping = ({\n containerRef,\n width,\n height,\n engine,\n visualization,\n}) => {\n const scrollPosition = useScrollPosition(containerRef)\n\n const rows = useMemo(\n () =>\n clipAxis({\n position: scrollPosition.y,\n size: height,\n step: engine.fontSize + engine.cellPadding * 2 + 2,\n totalCount: engine.height,\n headerCount:\n visualization.columns.length +\n (engine.options.title ? 1 : 0) +\n (engine.options.subtitle ? 1 : 0),\n }),\n [\n scrollPosition.y,\n height,\n engine.fontSize,\n engine.cellPadding,\n engine.height,\n engine.options.title,\n engine.options.subtitle,\n visualization.columns.length,\n ]\n )\n const columns = useMemo(() => {\n const viewportPosition = Math.max(\n 0,\n scrollPosition.x - engine.rowHeaderPixelWidth\n )\n const viewportWidth =\n width - Math.max(engine.rowHeaderPixelWidth - scrollPosition.x, 0)\n return clipPartitionedAxis({\n partitionSize: COLUMN_PARTITION_SIZE_PX,\n partitions: engine.columnPartitions,\n axisMap: engine.columnMap,\n widthMap: engine.columnWidths,\n viewportWidth,\n viewportPosition,\n totalWidth: engine.dataPixelWidth,\n })\n }, [\n scrollPosition.x,\n engine.rowHeaderPixelWidth,\n engine.columnPartitions,\n engine.columnMap,\n engine.columnWidths,\n engine.dataPixelWidth,\n width,\n ])\n\n return {\n rows,\n columns,\n scrollPosition,\n }\n}\n","import React, { createContext, useContext } from 'react'\nimport PropTypes from 'prop-types'\n\nexport const PivotTableEngineContext = createContext(null)\n\nexport const Provider = ({ engine, children }) => {\n return (\n <PivotTableEngineContext.Provider value={engine}>\n {children}\n </PivotTableEngineContext.Provider>\n )\n}\nProvider.propTypes = {\n engine: PropTypes.object.isRequired,\n children: PropTypes.node,\n}\n\nexport const usePivotTableEngine = () => {\n return useContext(PivotTableEngineContext)\n}\n","import css from 'styled-jsx/css'\nimport { colors } from '@dhis2/ui'\nimport {\n DISPLAY_DENSITY_PADDING_COMPACT,\n DISPLAY_DENSITY_PADDING_NORMAL,\n DISPLAY_DENSITY_PADDING_COMFORTABLE,\n FONT_SIZE_SMALL,\n FONT_SIZE_NORMAL,\n FONT_SIZE_LARGE,\n} from '../../../modules/pivotTable/pivotTableConstants'\n\nexport const table = css`\n div.pivot-table-container {\n font-family: 'Roboto', Arial, sans-serif;\n overflow: auto;\n color: ${colors.grey900};\n }\n table {\n border-spacing: 0;\n border-collapse: collapse;\n white-space: nowrap;\n overflow: hidden;\n box-sizing: border-box;\n text-align: center;\n }\n`\n\nexport const cell = css`\n td,\n th {\n box-sizing: border-box;\n font-weight: normal;\n overflow: hidden;\n text-overflow: ellipsis;\n border: 1px solid #b2b2b2;\n cursor: default;\n }\n\n .fontsize-SMALL {\n font-size: ${FONT_SIZE_SMALL}px;\n line-height: ${FONT_SIZE_SMALL}px;\n }\n .fontsize-NORMAL {\n font-size: ${FONT_SIZE_NORMAL}px;\n line-height: ${FONT_SIZE_NORMAL}px;\n }\n .fontsize-LARGE {\n font-size: ${FONT_SIZE_LARGE}px;\n line-height: ${FONT_SIZE_LARGE}px;\n }\n\n .displaydensity-COMPACT {\n padding: ${DISPLAY_DENSITY_PADDING_COMPACT}px;\n }\n .displaydensity-NORMAL {\n padding: ${DISPLAY_DENSITY_PADDING_NORMAL}px;\n }\n .displaydensity-COMFORTABLE {\n padding: ${DISPLAY_DENSITY_PADDING_COMFORTABLE}px;\n }\n\n .column-header {\n background-color: #dae6f8;\n }\n div.column-header-inner {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n }\n .title {\n font-weight: bold;\n background-color: #cddaed;\n }\n .row-header {\n background-color: #dae6f8;\n }\n .row-header-hierarchy {\n text-align: left;\n }\n .empty-header {\n background-color: #cddaed;\n }\n .total-header {\n background-color: #bac6d8;\n }\n .value {\n background-color: #ffffff;\n }\n .TEXT {\n text-align: left;\n }\n .NUMBER {\n text-align: right;\n }\n .clickable {\n cursor: pointer;\n }\n\n .value:hover {\n background-color: #f3f3f3;\n }\n\n .subtotal {\n background-color: #f4f4f4;\n }\n .total {\n background-color: #d8d8d8;\n }\n\n .column-header-label {\n overflow: hidden;\n text-overflow: ellipsis;\n }\n`\n\nexport const sortIcon = css`\n .fontsize-SMALL {\n height: ${FONT_SIZE_SMALL}px;\n margin-bottom: 1px;\n margin-left: 5px;\n }\n\n .fontsize-NORMAL {\n height: ${FONT_SIZE_NORMAL}px;\n max-height: 11px;\n margin-bottom: 2px;\n margin-left: 6px;\n }\n\n .fontsize-LARGE {\n height: ${FONT_SIZE_LARGE}px;\n margin-bottom: 2px;\n margin-left: 7px;\n }\n`\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { table as tableStyle } from './styles/PivotTable.style'\n\nexport const PivotTableContainer = React.forwardRef(\n ({ width, height, children }, ref) => (\n <div\n className=\"pivot-table-container\"\n style={{ width, height }}\n ref={ref}\n >\n <style jsx>{tableStyle}</style>\n {width === 0 || height === 0 ? null : <table>{children}</table>}\n </div>\n )\n)\n\nPivotTableContainer.displayName = 'PivotTableContainer'\n\nPivotTableContainer.propTypes = {\n children: PropTypes.node.isRequired,\n height: PropTypes.number.isRequired,\n width: PropTypes.number.isRequired,\n}\n","import React from 'react'\n\nexport const PivotTableClippedAxis = ({\n axisClippingResult,\n EmptyComponent,\n ItemComponent,\n}) => [\n axisClippingResult.pre ? (\n <EmptyComponent key=\"pre\" size={axisClippingResult.pre} />\n ) : null,\n axisClippingResult.indices.map(index => (\n <ItemComponent key={index} index={index} />\n )),\n axisClippingResult.post ? (\n <EmptyComponent key=\"post\" size={axisClippingResult.post} />\n ) : null,\n]\n","const headerStacksAreEqual = (a, b, limit) => {\n for (let i = 0; i <= limit; ++i) {\n if (a[i] !== b[i]) {\n return false\n }\n }\n return true\n}\n\nexport const getHeaderForDisplay = ({\n start,\n count,\n index,\n dimensionLevel,\n getHeader,\n showHierarchy,\n}) => {\n const header = getHeader(index)\n const showHeader =\n index === start ||\n !headerStacksAreEqual(header, getHeader(index - 1), dimensionLevel)\n if (!showHeader) {\n return null\n }\n\n let span = 1\n for (let i = index + 1; i < start + count; ++i) {\n if (!headerStacksAreEqual(getHeader(i), header, dimensionLevel)) {\n break\n }\n ++span\n }\n\n const currentHeader = header[dimensionLevel]\n\n const includesHierarchy = showHierarchy && currentHeader?.hierarchy\n\n const label = includesHierarchy\n ? currentHeader.hierarchy.join(' / ')\n : currentHeader?.name\n\n return {\n span,\n label,\n includesHierarchy,\n }\n}\n","import PropTypes from 'prop-types'\nimport { getHeaderForDisplay } from '../../modules/pivotTable/getHeaderForDisplay'\n\nexport const PivotTableHeaderCell = ({\n axisClippingResult,\n index,\n level,\n getHeader,\n render,\n showHierarchy,\n}) => {\n const header = getHeaderForDisplay({\n start: axisClippingResult.indices[0],\n count: axisClippingResult.indices.length,\n index,\n dimensionLevel: level,\n getHeader,\n showHierarchy,\n })\n\n return !header ? null : render(header)\n}\n\nPivotTableHeaderCell.propTypes = {\n axisClippingResult: PropTypes.object.isRequired,\n getHeader: PropTypes.func.isRequired,\n index: PropTypes.number.isRequired,\n level: PropTypes.number.isRequired,\n render: PropTypes.func.isRequired,\n showHierarchy: PropTypes.bool.isRequired,\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport classnames from 'classnames'\nimport { cell as cellStyle } from './styles/PivotTable.style'\nimport { usePivotTableEngine } from './PivotTableEngineContext'\n\nexport const PivotTableCell = React.forwardRef(\n ({ classes, isColumnHeader, children, style = {}, ...props }, ref) => {\n const engine = usePivotTableEngine()\n style.height = style.minHeight = style.maxHeight =\n style.height || engine.fontSize + engine.cellPadding * 2 + 2\n\n const className = classnames(\n classes,\n `fontsize-${engine.visualization.fontSize}`,\n `displaydensity-${engine.visualization.displayDensity}`\n )\n\n return isColumnHeader ? (\n <th className={className} style={style} {...props}>\n <style jsx>{cellStyle}</style>\n {children}\n </th>\n ) : (\n <td ref={ref} className={className} style={style} {...props}>\n <style jsx>{cellStyle}</style>\n {children}\n </td>\n )\n }\n)\n\nPivotTableCell.displayName = 'PivotTableCell'\n\nPivotTableCell.defaultProps = {\n isColumnHeader: false,\n}\nPivotTableCell.propTypes = {\n children: PropTypes.node,\n classes: PropTypes.oneOfType([\n PropTypes.array,\n PropTypes.object,\n PropTypes.string,\n ]),\n isColumnHeader: PropTypes.bool,\n style: PropTypes.object,\n}\n","import React from 'react'\n\nexport const SortIconAscending = () => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 6 10\" height=\"100%\">\n <g fill=\"none\" fillRule=\"evenodd\" transform=\"translate(-3 -1)\">\n <rect width=\"12\" height=\"12\" />\n <polygon fill=\"#A0ADBA\" points=\"6 11 3 7 9 7\" />\n <polygon fill=\"#212934\" points=\"3 5 9 5 6 1\" />\n </g>\n </svg>\n)\n","import React from 'react'\n\nexport const SortIconDescending = () => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 6 10\" height=\"100%\">\n <g fill=\"none\" fillRule=\"evenodd\" transform=\"translate(-3 -1)\">\n <rect width=\"12\" height=\"12\" />\n <polygon fill=\"#212934\" points=\"6 11 3 7 9 7\" />\n <polygon fill=\"#A0ADBA\" points=\"3 5 9 5 6 1\" />\n </g>\n </svg>\n)\n","import React from 'react'\n\nexport const SortIconIdle = () => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 6 10\" height=\"100%\">\n <g fill=\"none\" fillRule=\"evenodd\" transform=\"translate(-3 -1)\">\n <rect width=\"12\" height=\"12\" />\n <polygon fill=\"#A0ADBA\" points=\"6 11 3 7 9 7\" />\n <polygon fill=\"#A0ADBA\" points=\"3 5 9 5 6 1\" />\n </g>\n </svg>\n)\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { usePivotTableEngine } from './PivotTableEngineContext'\nimport { SORT_ORDER_ASCENDING } from '../../modules/pivotTable/pivotTableConstants'\nimport { sortIcon as sortIconStyle } from './styles/PivotTable.style'\nimport { SortIconAscending } from './icons/SortIconAscending'\nimport { SortIconDescending } from './icons/SortIconDescending'\nimport { SortIconIdle } from './icons/SortIconIdle'\n\nexport const PivotTableSortIcon = ({ index, sortBy }) => {\n const engine = usePivotTableEngine()\n\n const SortIcon =\n sortBy?.column === index\n ? sortBy.order === SORT_ORDER_ASCENDING\n ? SortIconAscending\n : SortIconDescending\n : SortIconIdle\n\n return (\n <span className={`fontsize-${engine.visualization.fontSize}`}>\n <style jsx>{sortIconStyle}</style>\n <SortIcon />\n </span>\n )\n}\n\nPivotTableSortIcon.propTypes = {\n index: PropTypes.number.isRequired,\n sortBy: PropTypes.object,\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { PivotTableHeaderCell } from './PivotTableHeaderCell'\nimport { cell as cellStyle } from './styles/PivotTable.style'\n\nimport { PivotTableCell } from './PivotTableCell'\nimport { usePivotTableEngine } from './PivotTableEngineContext'\nimport { PivotTableSortIcon } from './PivotTableSortIcon'\n\nexport const PivotTableColumnHeaderCell = ({\n clippingResult,\n index,\n level,\n onSortByColumn,\n sortBy,\n}) => {\n const engine = usePivotTableEngine()\n\n const width = engine.columnWidths[index]?.width\n\n return (\n <PivotTableHeaderCell\n axisClippingResult={clippingResult.columns}\n index={index}\n level={level}\n getHeader={idx => engine.getColumnHeader(idx)}\n showHierarchy={engine.visualization.showHierarchy}\n render={header => {\n const isSortable =\n level === engine.columnDepth - 1 &&\n header.span === 1 &&\n engine.isSortable(index)\n\n return (\n <PivotTableCell\n isColumnHeader\n classes={\n header.label &&\n header.label !== 'Total' &&\n header.label !== 'Subtotal' // TODO: Actually look up the column type!\n ? 'column-header'\n : 'empty-header'\n }\n colSpan={header.span}\n title={header.label}\n style={{\n cursor: isSortable ? 'pointer' : 'default',\n width,\n maxWidth: width,\n minWidth: width,\n }}\n onClick={\n isSortable ? () => onSortByColumn(index) : undefined\n }\n >\n <style jsx>{cellStyle}</style>\n <div className=\"column-header-inner\">\n <span className=\"column-header-label\">\n {header.label}\n </span>\n {isSortable ? (\n <PivotTableSortIcon\n index={index}\n sortBy={sortBy}\n />\n ) : null}\n </div>\n </PivotTableCell>\n )\n }}\n />\n )\n}\n\nPivotTableColumnHeaderCell.propTypes = {\n clippingResult: PropTypes.shape({ columns: PropTypes.object.isRequired })\n .isRequired,\n index: PropTypes.number.isRequired,\n level: PropTypes.number.isRequired,\n onSortByColumn: PropTypes.func.isRequired,\n sortBy: PropTypes.shape({\n column: PropTypes.number.isRequired,\n order: PropTypes.number.isRequired,\n }),\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { usePivotTableEngine } from './PivotTableEngineContext'\nimport { PivotTableCell } from './PivotTableCell'\n\nexport const PivotTableDimensionLabelCell = ({ rowLevel, columnLevel }) => {\n const engine = usePivotTableEngine()\n\n const colCount = engine.rowDepth\n const rowCount = engine.columnDepth\n\n let colSpan = 1,\n rowSpan = 1,\n label\n\n if (!engine.visualization.showDimensionLabels) {\n if (rowLevel > 0 || columnLevel > 0) {\n colSpan = rowSpan = 0\n } else {\n colSpan = colCount\n rowSpan = rowCount\n }\n } else {\n label = engine.getDimensionLabel(rowLevel, columnLevel)\n if (!label) {\n if (rowLevel > 0 || columnLevel > 0) {\n colSpan = rowSpan = 0\n } else {\n colSpan = colCount - 1\n rowSpan = rowCount - 1\n }\n }\n }\n\n if (!colSpan || !rowSpan) {\n return null\n }\n\n const width = engine.rowHeaderWidths[rowLevel]\n return (\n <PivotTableCell\n classes={['empty-header', 'column-header']}\n colSpan={colSpan}\n rowSpan={rowSpan}\n title={label}\n style={{ width, maxWidth: width, minWidth: width }}\n >\n {label}\n </PivotTableCell>\n )\n}\n\nPivotTableDimensionLabelCell.propTypes = {\n columnLevel: PropTypes.number.isRequired,\n rowLevel: PropTypes.number.isRequired,\n}\n","import React from 'react'\nimport { cell as cellStyle } from './styles/PivotTable.style'\nimport { PivotTableCell } from './PivotTableCell'\n\nexport const PivotTableEmptyCell = React.forwardRef(({ ...props }, ref) => {\n return (\n <PivotTableCell ref={ref} {...props}>\n <style jsx>{cellStyle}</style>\n </PivotTableCell>\n )\n})\n\nPivotTableEmptyCell.displayName = 'PivotTableEmptyCell'\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { PivotTableClippedAxis } from './PivotTableClippedAxis'\nimport { PivotTableColumnHeaderCell } from './PivotTableColumnHeaderCell'\nimport { PivotTableDimensionLabelCell } from './PivotTableDimensionLabelCell'\nimport { PivotTableEmptyCell } from './PivotTableEmptyCell'\nimport { usePivotTableEngine } from './PivotTableEngineContext'\nimport times from 'lodash/times'\n\nexport const PivotTableColumnHeaders = ({\n clippingResult,\n onSortByColumn,\n sortBy,\n}) => {\n const engine = usePivotTableEngine()\n\n const columns = times(engine.columnDepth, x => x)\n const rows = times(engine.rowDepth, x => x)\n\n return columns.map(columnLevel => (\n <tr key={columnLevel}>\n {rows.map(rowLevel => (\n <PivotTableDimensionLabelCell\n key={rowLevel}\n rowLevel={rowLevel}\n columnLevel={columnLevel}\n />\n ))}\n <PivotTableClippedAxis\n axisClippingResult={clippingResult.columns}\n EmptyComponent={({ size }) => (\n <PivotTableEmptyCell\n classes=\"column-header\"\n style={{ minWidth: size }}\n />\n )}\n ItemComponent={({ index }) => (\n <PivotTableColumnHeaderCell\n clippingResult={clippingResult}\n index={index}\n level={columnLevel}\n onSortByColumn={onSortByColumn}\n sortBy={sortBy}\n />\n )}\n />\n </tr>\n ))\n}\n\nPivotTableColumnHeaders.propTypes = {\n clippingResult: PropTypes.shape({\n columns: PropTypes.object.isRequired,\n }).isRequired,\n onSortByColumn: PropTypes.func.isRequired,\n sortBy: PropTypes.shape({\n column: PropTypes.number.isRequired,\n order: PropTypes.number.isRequired,\n }),\n}\n","import React, { useState, useEffect } from 'react'\nimport PropTypes from 'prop-types'\nimport { cell as cellStyle } from './styles/PivotTable.style'\nimport { usePivotTableEngine } from './PivotTableEngineContext'\nimport { PivotTableCell } from './PivotTableCell'\n\nexport const PivotTableTitleRow = ({\n title,\n scrollPosition,\n containerWidth,\n totalWidth,\n}) => {\n const engine = usePivotTableEngine()\n const columnCount = engine.width + engine.rowDepth\n\n const [position, setPosition] = useState(scrollPosition.x)\n useEffect(() => {\n setPosition(\n Math.max(0, Math.min(scrollPosition.x, totalWidth - containerWidth))\n )\n }, [containerWidth, scrollPosition.x, totalWidth])\n return (\n <tr>\n <style jsx>{cellStyle}</style>\n <PivotTableCell\n classes={['column-header', 'title']}\n colSpan={columnCount}\n >\n <div\n style={{\n marginLeft: position,\n maxWidth: containerWidth,\n textAlign: 'center',\n }}\n >\n {title}\n </div>\n </PivotTableCell>\n </tr>\n )\n}\n\nPivotTableTitleRow.propTypes = {\n containerWidth: PropTypes.number.isRequired,\n scrollPosition: PropTypes.shape({ x: PropTypes.number.isRequired })\n .isRequired,\n title: PropTypes.string.isRequired,\n totalWidth: PropTypes.number.isRequired,\n}\n","import isObject from 'lodash/isObject'\nimport isString from 'lodash/isString'\n\n// Dimension\n\nexport const DIMENSION = {\n isValid: dimension => isObject(dimension),\n}\n\n// Props\n\nexport const DIMENSION_PROP_ID = {\n name: 'dimension',\n defaultValue: '',\n required: true,\n isValid: prop => isString(prop),\n}\n\nexport const DIMENSION_PROP_ITEMS = {\n name: 'items',\n defaultValue: [],\n required: false,\n isValid: prop => Array.isArray(prop),\n}\n\nexport const DIMENSION_PROPS = [DIMENSION_PROP_ID, DIMENSION_PROP_ITEMS]\n","import { DIMENSION_PROP_ID } from './dimension'\n\nexport const dimensionIs = (dimension, dimensionId) =>\n dimension[DIMENSION_PROP_ID.name] === dimensionId\n","import { DIMENSION, DIMENSION_PROP_ITEMS } from './dimension'\n\nexport const dimensionIsEmpty = dimension =>\n !(\n DIMENSION.isValid(dimension) &&\n DIMENSION_PROP_ITEMS.isValid(dimension[DIMENSION_PROP_ITEMS.name]) &&\n dimension[DIMENSION_PROP_ITEMS.name].length\n )\n","import { DIMENSION, DIMENSION_PROPS } from './dimension'\nimport { dimensionIsEmpty } from './dimensionIsEmpty'\n\nexport const dimensionIsValid = (dimension, { requireItems } = {}) => {\n if (!DIMENSION.isValid(dimension)) {\n return false\n }\n\n const requiredProps = DIMENSION_PROPS.filter(prop => prop.required)\n\n if (!requiredProps.every(prop => prop.isValid(dimension[prop.name]))) {\n return false\n }\n\n if (requireItems === true && dimensionIsEmpty(dimension)) {\n return false\n }\n\n return true\n}\n","import { DIMENSION_PROP_ITEMS } from './dimension'\nimport { dimensionIsValid } from './dimensionIsValid'\n\nexport const dimensionGetItems = dimension =>\n dimensionIsValid(dimension, { requireItems: true })\n ? dimension[DIMENSION_PROP_ITEMS.name]\n : DIMENSION_PROP_ITEMS.defaultValue\n","import i18n from '@dhis2/d2-i18n'\nimport { ouIdHelper } from './ouIdHelper'\nimport { dimensionIs } from './layout/dimensionIs'\nimport { dimensionGetItems } from './layout/dimensionGetItems'\nimport { DIMENSION_ID_ORGUNIT } from './predefinedDimensions'\n\nexport const getOuLevelAndGroupText = (filter, metaData) => {\n if (!dimensionIs(DIMENSION_ID_ORGUNIT)) {\n return ''\n }\n\n const items = dimensionGetItems(filter)\n const hasOuLevel = items.some(item => ouIdHelper.hasLevelPrefix(item.id))\n const hasOuGroup = items.some(item => ouIdHelper.hasGroupPrefix(item.id))\n\n const filterFragments = []\n\n if (hasOuGroup) {\n filterFragments.push(getLevelAndGroupText(items, metaData, false))\n }\n\n if (hasOuLevel) {\n filterFragments.push(getLevelAndGroupText(items, metaData, true))\n }\n\n return filterFragments.join(' - ')\n}\n\nconst getLevelAndGroupText = (items, metaData, isLevel) => {\n const getNameFromMetadata = id =>\n metaData.items[id] ? metaData.items[id].name : id\n\n const dynamicOuItems = items.filter(item =>\n isLevel\n ? ouIdHelper.hasLevelPrefix(item.id)\n : ouIdHelper.hasGroupPrefix(item.id)\n )\n const lastItem = dynamicOuItems.length > 1 ? dynamicOuItems.pop() : null\n const dynamicOuNames = dynamicOuItems\n .map(item => getNameFromMetadata(ouIdHelper.removePrefix(item.id)))\n .join(', ')\n\n let allDynamicOuNames\n\n if (lastItem) {\n const lastOuName = getNameFromMetadata(\n ouIdHelper.removePrefix(lastItem.id)\n )\n allDynamicOuNames = i18n.t('{{dynamicOuNames}} and {{lastOuName}}', {\n dynamicOuNames,\n lastOuName,\n })\n } else {\n allDynamicOuNames = dynamicOuNames\n }\n\n const staticOuNames = items\n .filter(\n item =>\n !ouIdHelper.hasGroupPrefix(item.id) &&\n !ouIdHelper.hasLevelPrefix(item.id)\n )\n .map(item => getNameFromMetadata(item.id))\n .join(', ')\n\n let ouLevelAndGroupText = ''\n if (!staticOuNames) {\n if (isLevel) {\n ouLevelAndGroupText = i18n.t('{{allDynamicOuNames}} levels', {\n allDynamicOuNames,\n })\n } else {\n ouLevelAndGroupText = i18n.t('{{allDynamicOuNames}} groups', {\n allDynamicOuNames,\n })\n }\n } else {\n if (isLevel) {\n ouLevelAndGroupText = i18n.t(\n '{{allDynamicOuNames}} levels in {{staticOuNames}}',\n {\n allDynamicOuNames,\n staticOuNames,\n }\n )\n } else {\n ouLevelAndGroupText = i18n.t(\n '{{allDynamicOuNames}} groups in {{staticOuNames}}',\n {\n allDynamicOuNames,\n staticOuNames,\n }\n )\n }\n }\n\n return ouLevelAndGroupText\n}\n","import { ouIdHelper } from '../../modules/ouIdHelper'\nimport { dimensionIs } from '../../modules/layout/dimensionIs'\nimport {\n DIMENSION_ID_ORGUNIT,\n DIMENSION_ID_PERIOD,\n} from '../../modules/predefinedDimensions'\nimport { dimensionGetItems } from '../../modules/layout/dimensionGetItems'\nimport { getOuLevelAndGroupText } from '../../modules/getOuLevelAndGroupText'\n\nexport default function(filters, metaData) {\n if (!Array.isArray(filters) || !filters.length) {\n return ''\n }\n\n const titleFragments = []\n let i\n let l\n\n filters.forEach(filter => {\n const items = dimensionGetItems(filter)\n\n if (\n dimensionIs(filter, DIMENSION_ID_ORGUNIT) &&\n items.some(\n ({ id }) =>\n ouIdHelper.hasGroupPrefix(id) ||\n ouIdHelper.hasLevelPrefix(id)\n )\n ) {\n titleFragments.push(getOuLevelAndGroupText(filter, metaData))\n } else {\n let filterItems = []\n\n if (dimensionIs(filter, DIMENSION_ID_PERIOD)) {\n filterItems = items.map(({ id }) => id)\n } else {\n filterItems = metaData.dimensions[filter.dimension]\n }\n\n if (Array.isArray(filterItems)) {\n l = filterItems.length\n let id\n const sectionParts = []\n\n for (i = 0; i < l; i++) {\n id = filterItems[i]\n\n // if the value is present in items take the name to show from there\n if (metaData.items[id]) {\n sectionParts.push(metaData.items[id].name)\n }\n // otherwise use the values directly\n // this is a temporary fix to avoid app crashing when using filters with data items in EV\n else {\n sectionParts.push(\n metaData.items[filter.dimension].name +\n ': ' +\n filterItems.join(', ')\n )\n\n break\n }\n }\n\n titleFragments.push(sectionParts.join(', '))\n }\n }\n })\n\n return titleFragments.join(' - ')\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { usePivotTableEngine } from './PivotTableEngineContext'\nimport { PivotTableTitleRow } from './PivotTableTitleRow'\nimport getFilterText from '../../visualizations/util/getFilterText'\n\nexport const PivotTableTitleRows = ({ clippingResult, width }) => {\n const engine = usePivotTableEngine()\n return (\n <>\n {engine.options.title ? (\n <PivotTableTitleRow\n title={engine.options.title}\n scrollPosition={clippingResult.scrollPosition}\n containerWidth={width}\n totalWidth={\n engine.dataPixelWidth + engine.rowHeaderPixelWidth\n }\n />\n ) : null}\n {engine.options.subtitle ? (\n <PivotTableTitleRow\n title={engine.options.subtitle}\n scrollPosition={clippingResult.scrollPosition}\n containerWidth={width}\n totalWidth={\n engine.dataPixelWidth + engine.rowHeaderPixelWidth\n }\n />\n ) : null}\n {engine.visualization.filters?.length ? (\n <PivotTableTitleRow\n title={getFilterText(\n engine.visualization.filters,\n engine.rawData.metaData\n )}\n scrollPosition={clippingResult.scrollPosition}\n containerWidth={width}\n totalWidth={\n engine.dataPixelWidth + engine.rowHeaderPixelWidth\n }\n />\n ) : null}\n </>\n )\n}\n\nPivotTableTitleRows.propTypes = {\n clippingResult: PropTypes.object.isRequired,\n width: PropTypes.number.isRequired,\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { PivotTableColumnHeaders } from './PivotTableColumnHeaders'\nimport { PivotTableTitleRows } from './PivotTableTitleRows'\n\nexport const PivotTableHead = ({\n clippingResult,\n width,\n sortBy,\n onSortByColumn,\n}) => (\n <thead>\n <PivotTableTitleRows clippingResult={clippingResult} width={width} />\n <PivotTableColumnHeaders\n clippingResult={clippingResult}\n sortBy={sortBy}\n onSortByColumn={onSortByColumn}\n />\n </thead>\n)\n\nPivotTableHead.propTypes = {\n clippingResult: PropTypes.object.isRequired,\n width: PropTypes.number.isRequired,\n onSortByColumn: PropTypes.func.isRequired,\n sortBy: PropTypes.object,\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { usePivotTableEngine } from './PivotTableEngineContext'\nimport { PivotTableCell } from './PivotTableCell'\n\nexport const PivotTableEmptyRow = ({ height, columns }) => {\n const engine = usePivotTableEngine()\n\n return (\n <tr>\n <PivotTableCell\n colSpan={engine.rowDepth}\n style={{ height }}\n classes=\"row-header\"\n />\n {columns.map(i => (\n <PivotTableCell key={i} />\n ))}\n </tr>\n )\n}\n\nPivotTableEmptyRow.propTypes = {\n columns: PropTypes.array.isRequired,\n height: PropTypes.number.isRequired,\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { PivotTableHeaderCell } from './PivotTableHeaderCell'\nimport { PivotTableCell } from './PivotTableCell'\nimport { usePivotTableEngine } from './PivotTableEngineContext'\n\nexport const PivotTableRowHeaderCell = ({\n clippingResult,\n rowIndex,\n rowLevel,\n}) => {\n const engine = usePivotTableEngine()\n const width = engine.rowHeaderWidths[rowLevel]\n\n return (\n <PivotTableHeaderCell\n axisClippingResult={clippingResult.rows}\n index={rowIndex}\n level={rowLevel}\n getHeader={idx => engine.getRowHeader(idx)}\n showHierarchy={engine.visualization.showHierarchy}\n render={header => (\n <PivotTableCell\n classes={[\n header.label &&\n header.label !== 'Total' &&\n header.label !== 'Subtotal'\n ? 'row-header'\n : 'empty-header',\n header.includesHierarchy && 'row-header-hierarchy',\n ]}\n rowSpan={header.span}\n title={header.label}\n style={{ width, maxWidth: width, minWidth: width }}\n >\n {header.label}\n </PivotTableCell>\n )}\n />\n )\n}\n\nPivotTableRowHeaderCell.propTypes = {\n clippingResult: PropTypes.shape({ rows: PropTypes.object.isRequired })\n .isRequired,\n rowIndex: PropTypes.number.isRequired,\n rowLevel: PropTypes.number.isRequired,\n}\n","const calculateColorBrightness = function(rgb) {\n return Math.round(\n (parseInt(rgb[0]) * 299 +\n parseInt(rgb[1]) * 587 +\n parseInt(rgb[2]) * 114) /\n 1000\n )\n}\n\nconst isHex = color => {\n return typeof color === 'string' && color.charAt(0) === '#'\n}\n\nconst hexToRgb = hex => {\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex)\n\n return result\n ? [\n parseInt(result[1], 16),\n parseInt(result[2], 16),\n parseInt(result[3], 16),\n ]\n : null\n}\n\nexport const isColorBright = color => {\n if (isHex(color)) {\n color = hexToRgb(color)\n }\n\n return calculateColorBrightness(color) > 125\n}\n","export const LEGEND_DISPLAY_STRATEGY_BY_DATA_ITEM = 'BY_DATA_ITEM'\nexport const LEGEND_DISPLAY_STRATEGY_FIXED = 'FIXED'\n\nexport const LEGEND_DISPLAY_STYLE_FILL = 'FILL'\nexport const LEGEND_DISPLAY_STYLE_TEXT = 'TEXT'\n\nexport const getColorByValueFromLegendSet = (legendSet, value) => {\n const legend = legendSet.legends.find(\n legend => value >= legend.startValue && value < legend.endValue // TODO: Confirm inclusive/exclusive bounds\n )\n return legend && legend.color\n}\n","import { isColorBright } from './isColorBright'\nimport { colors } from '@dhis2/ui'\nimport {\n getColorByValueFromLegendSet,\n LEGEND_DISPLAY_STRATEGY_BY_DATA_ITEM,\n LEGEND_DISPLAY_STRATEGY_FIXED,\n LEGEND_DISPLAY_STYLE_TEXT,\n LEGEND_DISPLAY_STYLE_FILL,\n} from '../legends'\n\nconst getLegendSet = (engine, dxDimension) => {\n let legendSetId\n switch (engine.visualization.legendDisplayStrategy) {\n case LEGEND_DISPLAY_STRATEGY_BY_DATA_ITEM:\n if (dxDimension && dxDimension.legendSet) {\n legendSetId = dxDimension.legendSet\n }\n break\n case LEGEND_DISPLAY_STRATEGY_FIXED:\n default:\n legendSetId = engine.visualization.legendSet\n ? engine.visualization.legendSet.id\n : undefined\n break\n }\n\n return engine.legendSets[legendSetId]\n}\n\nconst buildStyleObject = (legendColor, engine) => {\n const style = {}\n switch (engine.visualization.legendDisplayStyle) {\n case LEGEND_DISPLAY_STYLE_TEXT:\n style.color = legendColor\n break\n case LEGEND_DISPLAY_STYLE_FILL:\n default:\n style.backgroundColor = legendColor\n if (isColorBright(legendColor)) {\n style.color = colors.grey900\n } else {\n style.color = colors.white\n }\n break\n }\n return style\n}\n\nexport const applyLegendSet = (value, dxDimension, engine) => {\n if (isNaN(value) || !engine.legendSets) {\n return {}\n }\n\n const legendSet = getLegendSet(engine, dxDimension)\n if (!legendSet) {\n return {}\n }\n\n const legendColor = getColorByValueFromLegendSet(legendSet, value)\n if (!legendColor) {\n return {}\n }\n\n return buildStyleObject(legendColor, engine)\n}\n","import React, { useRef } from 'react'\nimport PropTypes from 'prop-types'\n\nimport { applyLegendSet } from '../../modules/pivotTable/applyLegendSet'\nimport { PivotTableCell } from './PivotTableCell'\nimport { usePivotTableEngine } from './PivotTableEngineContext'\nimport {\n VALUE_TYPE_NUMBER,\n CELL_TYPE_VALUE,\n} from '../../modules/pivotTable/pivotTableConstants'\nimport { PivotTableEmptyCell } from './PivotTableEmptyCell'\n\nexport const PivotTableValueCell = ({\n row,\n column,\n onToggleContextualMenu,\n}) => {\n const engine = usePivotTableEngine()\n const cellRef = useRef(undefined)\n\n const cellContent = engine.get({\n row,\n column,\n })\n\n const isClickable =\n onToggleContextualMenu &&\n cellContent.cellType === CELL_TYPE_VALUE &&\n cellContent.ouId\n const classes = [\n cellContent.cellType,\n cellContent.valueType,\n isClickable && 'clickable',\n ]\n const onClick = () => {\n onToggleContextualMenu(cellRef, cellContent)\n }\n\n if (!cellContent || cellContent.empty) {\n return (\n <PivotTableEmptyCell\n onClick={isClickable ? onClick : undefined}\n ref={cellRef}\n classes={[cellContent.cellType, isClickable && 'clickable']}\n />\n )\n }\n\n // TODO: Add support for 'INTEGER' type (requires server changes)\n const legendStyle =\n cellContent.cellType === CELL_TYPE_VALUE &&\n cellContent.valueType === VALUE_TYPE_NUMBER\n ? applyLegendSet(\n cellContent.rawValue,\n cellContent.dxDimension,\n engine\n )\n : undefined\n\n const width = engine.columnWidths[engine.columnMap[column]].width\n const style = {\n ...legendStyle,\n width,\n minWidth: width,\n maxWidth: width,\n }\n\n return (\n <PivotTableCell\n key={column}\n classes={classes}\n title={cellContent.renderedValue}\n style={style}\n onClick={isClickable ? onClick : undefined}\n ref={cellRef}\n >\n {cellContent.renderedValue ?? null}\n </PivotTableCell>\n )\n}\n\nPivotTableValueCell.propTypes = {\n column: PropTypes.number.isRequired,\n row: PropTypes.number.isRequired,\n onToggleContextualMenu: PropTypes.func,\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { PivotTableClippedAxis } from './PivotTableClippedAxis'\nimport { PivotTableRowHeaderCell } from './PivotTableRowHeaderCell'\nimport { PivotTableValueCell } from './PivotTableValueCell'\nimport { PivotTableEmptyCell } from './PivotTableEmptyCell'\nimport { usePivotTableEngine } from './PivotTableEngineContext'\nimport times from 'lodash/times'\n\nexport const PivotTableRow = ({\n clippingResult,\n rowIndex,\n onToggleContextualMenu,\n}) => {\n const engine = usePivotTableEngine()\n return (\n <tr>\n {times(engine.rowDepth, x => x).map(rowLevel => (\n <PivotTableRowHeaderCell\n key={rowLevel}\n clippingResult={clippingResult}\n rowIndex={rowIndex}\n rowLevel={rowLevel}\n />\n ))}\n <PivotTableClippedAxis\n axisClippingResult={clippingResult.columns}\n EmptyComponent={() => <PivotTableEmptyCell classes=\"value\" />}\n ItemComponent={({ index: columnIndex }) => (\n <PivotTableValueCell\n row={rowIndex}\n column={columnIndex}\n onToggleContextualMenu={onToggleContextualMenu}\n />\n )}\n />\n </tr>\n )\n}\n\nPivotTableRow.propTypes = {\n clippingResult: PropTypes.shape({\n columns: PropTypes.object.isRequired,\n rows: PropTypes.object.isRequired,\n }).isRequired,\n rowIndex: PropTypes.number.isRequired,\n onToggleContextualMenu: PropTypes.func,\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { PivotTableClippedAxis } from './PivotTableClippedAxis'\nimport { PivotTableEmptyRow } from './PivotTableEmptyRow'\nimport { PivotTableRow } from './PivotTableRow'\n\nexport const PivotTableBody = ({ clippingResult, onToggleContextualMenu }) => (\n <tbody>\n <PivotTableClippedAxis\n axisClippingResult={clippingResult.rows}\n EmptyComponent={({ size }) => (\n <PivotTableEmptyRow\n height={size}\n columns={clippingResult.columns.indices}\n />\n )}\n ItemComponent={({ index }) => (\n <PivotTableRow\n key={index}\n clippingResult={clippingResult}\n rowIndex={index}\n onToggleContextualMenu={onToggleContextualMenu}\n />\n )}\n />\n </tbody>\n)\n\nPivotTableBody.propTypes = {\n clippingResult: PropTypes.object.isRequired,\n onToggleContextualMenu: PropTypes.func,\n}\n","import { useState } from 'react'\nimport {\n SORT_ORDER_ASCENDING,\n SORT_ORDER_DESCENDING,\n} from './pivotTableConstants'\n\nexport const useSortableColumns = engine => {\n const [sortBy, setSortBy] = useState(null)\n\n const onSortByColumn = column => {\n let order = SORT_ORDER_ASCENDING\n if (sortBy && sortBy.column === column) {\n if (sortBy.order === SORT_ORDER_ASCENDING) {\n order = SORT_ORDER_DESCENDING\n } else if (sortBy.order === SORT_ORDER_DESCENDING) {\n engine.clearSort()\n setSortBy(null)\n return\n }\n }\n engine.sort(column, order)\n setSortBy({ column, order }) // Force a re-render\n }\n\n return {\n sortBy,\n onSortByColumn,\n }\n}\n","import React, { useRef, useMemo } from 'react'\nimport PropTypes from 'prop-types'\n\nimport { PivotTableEngine } from '../../modules/pivotTable/PivotTableEngine'\nimport { useParentSize } from '../../modules/pivotTable/useParentSize'\nimport { useTableClipping } from '../../modules/pivotTable/useTableClipping'\nimport { Provider } from './PivotTableEngineContext'\nimport { PivotTableContainer } from './PivotTableContainer'\nimport { PivotTableHead } from './PivotTableHead'\nimport { PivotTableBody } from './PivotTableBody'\nimport { useSortableColumns } from '../../modules/pivotTable/useSortableColumns'\n\nconst PivotTable = ({\n visualization,\n data,\n legendSets,\n renderCounter,\n onToggleContextualMenu,\n}) => {\n const containerRef = useRef(undefined)\n const { width, height } = useParentSize(containerRef, renderCounter)\n\n const engine = useMemo(\n () => new PivotTableEngine(visualization, data, legendSets),\n [visualization, data, legendSets]\n )\n\n const { sortBy, onSortByColumn } = useSortableColumns(engine)\n\n const clippingResult = useTableClipping({\n containerRef,\n width,\n height,\n engine,\n visualization,\n })\n\n return (\n <Provider engine={engine}>\n <PivotTableContainer\n ref={containerRef}\n width={width}\n height={height}\n >\n <PivotTableHead\n clippingResult={clippingResult}\n width={width}\n sortBy={sortBy}\n onSortByColumn={onSortByColumn}\n />\n <PivotTableBody\n clippingResult={clippingResult}\n onToggleContextualMenu={onToggleContextualMenu}\n />\n </PivotTableContainer>\n </Provider>\n )\n}\n\nPivotTable.propTypes = {\n data: PropTypes.object.isRequired,\n visualization: PropTypes.object.isRequired,\n legendSets: PropTypes.arrayOf(PropTypes.object),\n renderCounter: PropTypes.number,\n onToggleContextualMenu: PropTypes.func,\n}\n\nexport default PivotTable\n","import { dimensionIs } from './dimensionIs'\nimport { AXIS } from './axis'\n\nexport const axisGetDimension = (axis, dimensionId) =>\n AXIS.isValid(axis) &&\n axis.find(dimension => dimensionIs(dimension, dimensionId))\n","import { axisGetDimension } from './axisGetDimension'\n\nexport const axisHasDimension = (axis, dimensionId) =>\n Boolean(axisGetDimension(axis, dimensionId))\n","import { DEFAULT_AXIS_IDS } from './axis'\nimport { axisHasDimension } from './axisHasDimension'\nimport { dimensionIs } from './dimensionIs'\n\nexport const layoutReplaceDimension = (layout, dimensionId, items) => {\n const axisId = DEFAULT_AXIS_IDS.find(a =>\n axisHasDimension(layout[a], dimensionId)\n )\n\n if (!axisId) {\n return Object.assign({}, layout)\n }\n\n const newAxisDimensions = layout[axisId].map(dimension => {\n if (dimensionIs(dimension, dimensionId)) {\n return Object.assign({}, dimension, { items })\n }\n return dimension\n })\n\n return Object.assign({}, layout, { [axisId]: newAxisDimensions })\n}\n","import { AXIS_ID_COLUMNS, AXIS_ID_ROWS, AXIS_ID_FILTERS } from './axis'\n\nexport const layoutGetAllAxes = layout => [\n layout[AXIS_ID_COLUMNS],\n layout[AXIS_ID_ROWS],\n layout[AXIS_ID_FILTERS],\n]\n","import { layoutGetAllAxes } from './layoutGetAllAxes'\n\nexport const layoutGetAllDimensions = layout =>\n layoutGetAllAxes(layout).reduce((allDimensions, axis) => {\n allDimensions.push(...axis)\n return allDimensions\n }, [])\n","import { layoutGetAllDimensions } from './layoutGetAllDimensions'\nimport { dimensionIs } from './dimensionIs'\n\nexport const layoutGetDimension = (layout, dimensionId) =>\n layoutGetAllDimensions(layout).find(dimension =>\n dimensionIs(dimension, dimensionId)\n )\n","import { dimensionGetItems } from '../layout/dimensionGetItems'\nimport { layoutReplaceDimension } from '../layout/layoutReplaceDimension'\nimport { layoutGetDimension } from '../layout/layoutGetDimension'\n\nimport { ouIdHelper } from '../ouIdHelper'\nimport { DIMENSION_ID_ORGUNIT } from '../predefinedDimensions'\n\nconst isOuLevelIntId = id =>\n ouIdHelper.hasLevelPrefix(id)\n ? Number.isInteger(parseInt(ouIdHelper.removePrefix(id), 10))\n : false\n\nconst replaceNumericOuLevelWithUid = ouLevels => item => {\n if (!isOuLevelIntId(item.id)) {\n return item\n }\n\n const ouIntId = parseInt(ouIdHelper.removePrefix(item.id), 10)\n const ouUid = ouLevels.find(l => parseInt(l.level, 10) === ouIntId).id\n\n return Object.assign({}, item, { id: ouIdHelper.addLevelPrefix(ouUid) })\n}\n\nexport const convertOuLevelsToUids = (ouLevels, layout) => {\n const ouDimension = layoutGetDimension(layout, DIMENSION_ID_ORGUNIT)\n\n const hasNumericOuLevels =\n ouDimension &&\n dimensionGetItems(ouDimension).some(item => isOuLevelIntId(item.id))\n\n if (hasNumericOuLevels) {\n const replaceNumericOuLevel = replaceNumericOuLevelWithUid(ouLevels)\n\n const updatedOuItems = dimensionGetItems(ouDimension).map(\n replaceNumericOuLevel\n )\n\n return layoutReplaceDimension(\n layout,\n DIMENSION_ID_ORGUNIT,\n updatedOuItems\n )\n }\n\n return layout\n}\n","import { getRelativePeriodIds } from '../../components/PeriodDimension/utils/relativePeriods'\nimport { ouIdHelper } from '../ouIdHelper'\nimport {\n DIMENSION_ID_ASSIGNED_CATEGORIES,\n DIMENSION_ID_ORGUNIT,\n DIMENSION_ID_PERIOD,\n} from '../predefinedDimensions'\n\nexport const hasRelativeItems = (dimension, itemIds = []) =>\n dimension === DIMENSION_ID_ASSIGNED_CATEGORIES ||\n (dimension === DIMENSION_ID_ORGUNIT &&\n Array.isArray(itemIds) &&\n itemIds.some(\n id =>\n ouIdHelper.hasLevelPrefix(id) ||\n ouIdHelper.hasGroupPrefix(id) ||\n [\n 'USER_ORGUNIT',\n 'USER_ORGUNIT_CHILDREN',\n 'USER_ORGUNIT_GRAND_CHILDREN',\n ].includes(id)\n )) ||\n (dimension === DIMENSION_ID_PERIOD &&\n Array.isArray(itemIds) &&\n itemIds.some(id => getRelativePeriodIds().includes(id)))\n","import isObject from 'lodash/isObject'\n\nexport const LAYOUT = {\n isValid: layout => isObject(layout),\n}\n","import { DIMENSION_PROP_ID } from './dimension'\n\nexport const dimensionGetId = dimension => dimension[DIMENSION_PROP_ID.name]\n","import { AXIS, DEFAULT_AXIS_IDS } from './axis'\nimport { dimensionGetId } from './dimensionGetId'\n\nexport const layoutFilterDimensions = (layout, dimensionIds) => {\n const idArray = Array.isArray(dimensionIds) ? dimensionIds : [dimensionIds]\n const filteredLayout = Object.assign({}, layout)\n\n DEFAULT_AXIS_IDS.forEach(axisId => {\n if (AXIS.isValid(filteredLayout[axisId])) {\n filteredLayout[axisId] = filteredLayout[axisId].filter(\n dimension => !idArray.includes(dimensionGetId(dimension))\n )\n }\n })\n\n return filteredLayout\n}\n","import { dimensionGetItems } from './dimensionGetItems'\n\nexport const axisGetAllItems = axis =>\n axis.reduce((allItems, dimension) => {\n allItems.push(...dimensionGetItems(dimension))\n return allItems\n }, [])\n","import { layoutGetAllAxes } from './layoutGetAllAxes'\nimport { axisGetAllItems } from './axisGetAllItems'\n\nexport const layoutGetAllItems = layout =>\n layoutGetAllAxes(layout).reduce((allItems, axis) => {\n allItems.push(...axisGetAllItems(axis))\n return allItems\n }, [])\n","import isObject from 'lodash/isObject'\nimport isString from 'lodash/isString'\n\n// Item\n\nexport const ITEM = {\n isValid: item => isObject(item),\n}\n\n// Props\n\nexport const ITEM_PROP_ID = {\n name: 'id',\n defaultValue: '',\n required: true,\n isValid: prop => isString(prop),\n}\n\nexport const ITEM_PROPS = [ITEM_PROP_ID]\n","import { ITEM_PROP_ID } from './item'\n\nexport const itemGetId = item =>\n ITEM_PROP_ID.isValid(item[ITEM_PROP_ID.name])\n ? item[ITEM_PROP_ID.name]\n : ITEM_PROP_ID.defaultValue\n","import { layoutGetAllItems } from './layoutGetAllItems'\nimport { itemGetId } from './itemGetId'\n\nexport const layoutGetAllItemIds = layout =>\n layoutGetAllItems(layout).map(item => itemGetId(item))\n","import { AXIS } from './axis'\nimport { dimensionGetId } from './dimensionGetId'\n\nexport const axisGetDimensionIds = axis =>\n AXIS.isValid(axis)\n ? axis.map(dimension => dimensionGetId(dimension))\n : AXIS.defaultValue\n","import { AXIS, DEFAULT_AXIS_IDS } from './axis'\nimport { axisGetDimensionIds } from './axisGetDimensionIds'\n\nexport const layoutGetAxisIdDimensionIdsObject = layout =>\n DEFAULT_AXIS_IDS.reduce((obj, axisId) => {\n if (AXIS.isValid(layout[axisId])) {\n obj[axisId] = axisGetDimensionIds(layout[axisId])\n }\n\n return obj\n }, {})\n","import { layoutGetDimension } from './layoutGetDimension'\nimport { dimensionGetItems } from './dimensionGetItems'\n\nexport const layoutGetDimensionItems = (layout, dimensionId) =>\n dimensionGetItems(layoutGetDimension(layout, dimensionId))\n","import { dimensionGetItems } from './dimensionGetItems'\nimport { itemGetId } from './itemGetId'\n\nexport const dimensionGetItemIds = dimension =>\n dimensionGetItems(dimension).map(item => itemGetId(item))\n","import { layoutGetAllDimensions } from './layoutGetAllDimensions'\nimport { dimensionGetItemIds } from './dimensionGetItemIds'\nimport { dimensionGetId } from './dimensionGetId'\n\nexport const layoutGetDimensionIdItemIdsObject = layout =>\n layoutGetAllDimensions(layout).reduce((obj, dimension) => {\n obj[dimensionGetId(dimension)] = dimensionGetItemIds(dimension)\n return obj\n }, {})\n","import { DIMENSION_ID_DATA } from '../predefinedDimensions'\nimport { axisHasDimension } from './axisHasDimension'\n\nexport const axisHasDataDimension = axis =>\n axisHasDimension(axis, DIMENSION_ID_DATA)\n","import { layoutGetAllAxes } from './layoutGetAllAxes'\nimport { axisHasDataDimension } from './axisHasDataDimension'\n\nexport const layoutHasDataDimension = layout =>\n Boolean(layoutGetAllAxes(layout).find(axis => axisHasDataDimension(axis)))\n","import { layoutGetDimension } from './layoutGetDimension'\n\nexport const layoutHasDimension = (layout, dimensionId) =>\n Boolean(layoutGetDimension(layout, dimensionId))\n","import { layoutGetAllDimensions } from './layoutGetAllDimensions'\nimport { dimensionGetId } from './dimensionGetId'\nimport { getPredefinedDimensions } from '../predefinedDimensions'\n\nexport const layoutHasDynamicDimension = layout => {\n const fixedIds = Object.keys(getPredefinedDimensions())\n\n return Boolean(\n layoutGetAllDimensions(layout).find(\n dimension => !fixedIds.includes(dimensionGetId(dimension))\n )\n )\n}\n","import { DIMENSION_ID_PERIOD } from '../predefinedDimensions'\nimport { axisHasDimension } from './axisHasDimension'\n\nexport const axisHasPeriodDimension = axis =>\n axisHasDimension(axis, DIMENSION_ID_PERIOD)\n","import { layoutGetAllAxes } from './layoutGetAllAxes'\nimport { axisHasPeriodDimension } from './axisHasPeriodDimension'\n\nexport const layoutHasPeriodDimension = layout =>\n Boolean(layoutGetAllAxes(layout).find(axis => axisHasPeriodDimension(axis)))\n","import { DIMENSION_ID_ORGUNIT } from '../predefinedDimensions'\nimport { axisHasDimension } from './axisHasDimension'\n\nexport const axisHasOuDimension = axis =>\n axisHasDimension(axis, DIMENSION_ID_ORGUNIT)\n","export const axisIsEmpty = axis => !axis.length\n","import { DIMENSION_PROP_ID, DIMENSION_PROP_ITEMS } from './dimension'\n\nexport const dimensionCreate = (dimensionId, itemIds = []) => ({\n [DIMENSION_PROP_ID.name]: dimensionId,\n [DIMENSION_PROP_ITEMS.name]: itemIds.map(id => ({ id })),\n})\n","import { ITEM, ITEM_PROPS } from './item'\n\nexport const itemIsValid = item => {\n if (!ITEM.isValid(item)) {\n return false\n }\n\n const requiredProps = ITEM_PROPS.filter(prop => prop.required)\n\n return requiredProps.every(prop => prop.isValid(item[prop.name]))\n}\n","import isArray from 'd2-utilizr/lib/isArray'\nimport isObject from 'd2-utilizr/lib/isObject'\nimport isString from 'd2-utilizr/lib/isString'\n\nconst MODULE = 'Data validator: '\n\nfunction getMessage(text) {\n return MODULE + text\n}\n\nfunction validateHeader(header, error) {\n if (!isObject(header)) {\n error(getMessage('Header is not an object'))\n }\n\n if (header.meta) {\n if (!isString(header.name)) {\n error(getMessage('Header name is not a string'))\n }\n }\n}\n\nfunction validateRowValue(rowValue, error) {\n if (!isString(rowValue)) {\n error(getMessage('Row value is not a string'))\n }\n}\n\nfunction validateRow(row, headersLength, error) {\n if (!isArray(row)) {\n error(getMessage('Data row is not an array'))\n }\n\n if (row.length !== headersLength) {\n error(getMessage('Data row length is invalid'))\n }\n\n row.forEach(rowValue => validateRowValue(rowValue, error))\n}\n\nexport default function({ data, error, warning }) {\n if (!isObject(data)) {\n error(getMessage('Data is not an object'))\n }\n\n // headers\n\n if (!isArray(data.headers)) {\n error(getMessage('Response headers is not an array'))\n }\n\n if (!data.headers.length > 1) {\n error(getMessage('At least two response headers required'))\n }\n\n data.headers.forEach(header => validateHeader(header, error))\n\n // meta data\n\n if (!isObject(data.metaData)) {\n error(getMessage('Metadata is not an object'))\n }\n\n if (!isObject(data.metaData.items)) {\n error(getMessage('Metadata items is not an object'))\n }\n\n if (!isObject(data.metaData.dimensions)) {\n error(getMessage('Metadata dimensions is not an object'))\n }\n\n // data\n\n if (!isArray(data.rows)) {\n warning(getMessage('Data rows is not an array'))\n }\n\n if (!data.rows.length) {\n warning(getMessage('No data rows provided'))\n }\n\n data.rows.forEach(row => validateRow(row, data.headers.length, error))\n\n return data\n}\n","import dhis from './dhis'\n\nconst noValidation = data => data\n\nexport default {\n dhis,\n noValidation,\n}\n","export default function(acc, series, categories, idValueMap) {\n const serieData = []\n\n categories[0].forEach(categoryItemId => {\n const value = idValueMap.get(categoryItemId)\n\n // DHIS2-1261: 0 is a valid value\n // undefined value means the key was not found within the rows\n // in that case null is returned as value in the serie for highcharts\n serieData.push(value === undefined ? null : parseFloat(value))\n })\n\n acc.push({\n name: '', //TODO: not used?\n data: serieData,\n })\n\n return acc\n}\n","export default function(acc, series, categories, idValueMap, metaData) {\n series[0].forEach(serieItemId => {\n const value = idValueMap.get(serieItemId)\n\n if (value) {\n acc.push({\n id: serieItemId,\n name: metaData.items[serieItemId].name,\n y: parseFloat(value),\n })\n }\n })\n\n return acc\n}\n","export default function(acc, series, categories, idValueMap) {\n const serieItemId = series[0][0]\n\n acc.push({\n data: [parseFloat(idValueMap.get(serieItemId))],\n })\n}\n","export default function getTwoCategorySplitSerieData(serieData) {\n // Add a null value after the last point of the first group\n // this results in 2 separated charts for line and area\n const splitSerieData = []\n let index = 0\n\n serieData.forEach((groupData, groupIndex) => {\n groupData.map(point => splitSerieData.push([index++, point]))\n\n if (groupIndex + 1 < serieData.length) {\n splitSerieData.push([index - 0.5, null])\n }\n })\n\n return splitSerieData\n}\n","import getTwoCategorySplitSerieData from '../../../config/adapters/dhis_highcharts/getTwoCategorySplitSerieData'\n\n// 1 series, 2 categories\nexport default function(acc, series, categories, idValueMap, metaData) {\n series[0].forEach(seriesItemId => {\n const groupedData = []\n\n categories[0].forEach(category1ItemId => {\n const groupData = []\n\n categories[1].forEach(category2ItemId => {\n const value = idValueMap.get(\n `${seriesItemId}-${category1ItemId}-${category2ItemId}`\n )\n\n groupData.push(value === undefined ? null : parseFloat(value))\n })\n\n groupedData.push(groupData)\n })\n\n const serieData = getTwoCategorySplitSerieData(groupedData)\n\n // avoid a list of null values\n if (serieData.every(e => e === null)) {\n serieData.length = 0\n groupedData.length = 0\n }\n\n acc.push({\n id: seriesItemId,\n name: metaData.items[seriesItemId].name,\n data: serieData,\n custom: {\n data: groupedData,\n },\n xAxis: 0,\n })\n })\n\n acc.push({\n // with line the other column/bars are centered in the 2nd axis section\n type: 'line',\n // with null the fake series does not appear in the tooltip\n data: Array.from({ length: categories[0].length }, () => null),\n showInLegend: false,\n // assign the serie to the 2nd axis so the labels show\n xAxis: 1,\n // always hide the series' values\n dataLabels: {\n enabled: false,\n },\n custom: {\n isTwoCategoryFakeSerie: true,\n },\n })\n\n return acc\n}\n","import arrayContains from 'd2-utilizr/lib/arrayContains'\nimport arrayUnique from 'd2-utilizr/lib/arrayUnique'\n\nimport getYearOnYear from './yearOnYear'\nimport getPie from './pie'\nimport getGauge from './gauge'\nimport getTwoCategory from './twoCategory'\n\nimport {\n VIS_TYPE_YEAR_OVER_YEAR_COLUMN,\n VIS_TYPE_YEAR_OVER_YEAR_LINE,\n VIS_TYPE_PIE,\n VIS_TYPE_GAUGE,\n isTwoCategoryChartType,\n} from '../../../../modules/visTypes'\n\nconst VALUE_ID = 'value'\n\nfunction arrayNullsOnly(array) {\n return arrayContains(array, null) && arrayUnique(array).length === 1\n}\n\nfunction getHeaderIdIndexMap(headers) {\n const map = new Map()\n\n headers.forEach((header, index) => {\n map.set(header.name, index)\n })\n\n return map\n}\n\nfunction getPrefixedId(row, header) {\n return (header.isPrefix ? header.name + '_' : '') + row[header.index]\n}\n\nfunction getIdValueMap(rows, seriesHeader, categoryHeaders, valueIndex) {\n const map = new Map()\n\n let key\n let value\n\n rows.forEach(row => {\n key = [\n ...(seriesHeader ? [getPrefixedId(row, seriesHeader)] : []),\n ...(categoryHeaders\n ? categoryHeaders.map(categoryHeader =>\n getPrefixedId(row, categoryHeader)\n )\n : []),\n ].join('-')\n\n value = row[valueIndex]\n\n map.set(key, value)\n })\n\n return map\n}\n\n// 1 series, 1 category\nfunction getDefault(acc, series, categories, idValueMap, metaData) {\n series[0].forEach(serieItemId => {\n const serieData = []\n\n categories[0].forEach(categoryItemId => {\n const value = idValueMap.get(`${serieItemId}-${categoryItemId}`)\n\n // DHIS2-1261: 0 is a valid value\n // undefined value means the key was not found within the rows\n // in that case null is returned as value in the serie\n // this is to keep the correct indexes for the values within the serie array\n serieData.push(value === undefined ? null : parseFloat(value))\n })\n\n // if the whole serie has no data, do not return a list of null values\n // otherwise Highcharts thinks that data is available and does not show the \"No data to display\" message\n if (arrayNullsOnly(serieData)) {\n serieData.length = 0\n }\n\n acc.push({\n id: serieItemId,\n name: metaData.items[serieItemId].name,\n data: serieData,\n })\n })\n\n return acc\n}\n\nfunction getSeriesFunction(type, categoryIds) {\n if (isTwoCategoryChartType(type) && categoryIds.length === 2) {\n return getTwoCategory\n }\n\n switch (type) {\n case VIS_TYPE_PIE:\n return getPie\n case VIS_TYPE_GAUGE:\n return getGauge\n case VIS_TYPE_YEAR_OVER_YEAR_COLUMN:\n case VIS_TYPE_YEAR_OVER_YEAR_LINE:\n return getYearOnYear\n default:\n return getDefault\n }\n}\n\nexport default function({ type, data, seriesId, categoryIds }) {\n categoryIds = categoryIds || []\n\n const seriesFunction = getSeriesFunction(type, categoryIds)\n\n return data.reduce((acc, res) => {\n const headers = res.headers\n const metaData = res.metaData\n const rows = res.rows\n const headerIdIndexMap = getHeaderIdIndexMap(headers)\n\n const seriesHeader = headers[headerIdIndexMap.get(seriesId)]\n const categoryHeaders = categoryIds.map(\n categoryId => headers[headerIdIndexMap.get(categoryId)]\n )\n\n const idValueMap = getIdValueMap(\n rows,\n seriesHeader,\n categoryHeaders,\n headerIdIndexMap.get(VALUE_ID)\n )\n\n const series = [metaData.dimensions[seriesId]]\n const categories = categoryIds.map(id => metaData.dimensions[id])\n\n seriesFunction(acc, series, categories, idValueMap, metaData)\n\n return acc\n }, [])\n}\n","export default function(acc, seriesIds, categoryIds, idValueMap) {\n const seriesId = seriesIds[0]\n\n acc.push(idValueMap.get(seriesId))\n}\n","import getSingleValue from './singleValue'\nimport { VIS_TYPE_SINGLE_VALUE } from '../../../../modules/visTypes'\n\nconst VALUE_ID = 'value'\n\nfunction getHeaderIdIndexMap(headers) {\n const map = new Map()\n\n headers.forEach((header, index) => {\n map.set(header.name, index)\n })\n\n return map\n}\n\nfunction getPrefixedId(row, header) {\n return (header.isPrefix ? header.name + '_' : '') + row[header.index]\n}\n\nfunction getIdValueMap(rows, seriesHeader, categoryHeader, valueIndex) {\n const map = new Map()\n\n let key\n let value\n\n rows.forEach(row => {\n key = [\n ...(seriesHeader ? [getPrefixedId(row, seriesHeader)] : []),\n ...(categoryHeader ? [getPrefixedId(row, categoryHeader)] : []),\n ].join('-')\n\n value = row[valueIndex]\n\n map.set(key, value)\n })\n\n return map\n}\n\nfunction getDefault(acc, seriesIds, categoryIds, idValueMap, metaData) {\n seriesIds.forEach(seriesId => {\n const serieData = []\n\n categoryIds.forEach(categoryId => {\n const value = idValueMap.get(`${seriesId}-${categoryId}`)\n\n // DHIS2-1261: 0 is a valid value\n // undefined value means the key was not found within the rows\n // in that case null is returned as value in the serie\n serieData.push(value === undefined ? null : parseFloat(value))\n })\n\n acc.push({\n id: seriesId,\n name: metaData.items[seriesId].name,\n data: serieData,\n })\n })\n\n return acc\n}\n\nfunction getValueFunction(type) {\n switch (type) {\n case VIS_TYPE_SINGLE_VALUE:\n return getSingleValue\n default:\n return getDefault\n }\n}\n\nexport default function({ type, data, seriesId, categoryId }) {\n const valueFunction = getValueFunction(type)\n\n return data.reduce((acc, res) => {\n const headers = res.headers\n const metaData = res.metaData\n const rows = res.rows\n const headerIdIndexMap = getHeaderIdIndexMap(headers)\n\n const seriesIndex = headerIdIndexMap.get(seriesId)\n const categoryIndex = headerIdIndexMap.get(categoryId)\n const valueIndex = headerIdIndexMap.get(VALUE_ID)\n\n const seriesHeader = headers[seriesIndex]\n const categoryHeader = headers[categoryIndex]\n\n const idValueMap = getIdValueMap(\n rows,\n seriesHeader,\n categoryHeader,\n valueIndex\n )\n\n const seriesIds = metaData.dimensions[seriesId]\n const categoryIds = metaData.dimensions[categoryId]\n\n valueFunction(acc, seriesIds, categoryIds, idValueMap, metaData)\n\n return acc\n }, [])\n}\n","import dhis_highcharts from './dhis_highcharts'\nimport dhis_dhis from './dhis_dhis'\n\nexport default {\n dhis_highcharts,\n dhis_dhis,\n}\n","import validators from './validators'\nimport adapters from './adapters'\n\nexport default function({\n data,\n inputFormat = 'dhis',\n outputFormat = 'highcharts',\n seriesId: initialSeriesId,\n categoryId: initialCategoryId,\n error,\n warning,\n}) {\n const _validator = validators[inputFormat] || validators.noValidation\n const _adapter = adapters[inputFormat + '_' + outputFormat]\n\n if (_validator === validators.noValidation) {\n warning(\n `Validation not supported for data input format \"${inputFormat}\"`\n )\n }\n\n if (!_adapter) {\n error(\n `Data tranformation from \"${inputFormat}\" to \"${outputFormat}\" is not supported`\n )\n }\n\n this.data = data\n\n this.generateData = ({\n type,\n seriesId = initialSeriesId,\n categoryIds = [initialCategoryId],\n }) => {\n return _adapter({\n type,\n data: data.map(d => _validator({ data: d, error, warning })),\n seriesId,\n categoryIds,\n })\n }\n}\n","export default function({ layout }) {\n return layout\n}\n","import dhis from './dhis'\n\nconst noValidation = data => data\n\nexport default {\n dhis,\n noValidation,\n}\n","import {\n VIS_TYPE_BAR,\n VIS_TYPE_STACKED_BAR,\n VIS_TYPE_LINE,\n VIS_TYPE_YEAR_OVER_YEAR_LINE,\n VIS_TYPE_AREA,\n VIS_TYPE_STACKED_AREA,\n VIS_TYPE_PIE,\n VIS_TYPE_RADAR,\n VIS_TYPE_GAUGE,\n VIS_TYPE_COLUMN,\n VIS_TYPE_STACKED_COLUMN,\n VIS_TYPE_YEAR_OVER_YEAR_COLUMN,\n} from '../../../../modules/visTypes'\n\nexport default function(type) {\n switch (type) {\n case VIS_TYPE_BAR:\n case VIS_TYPE_STACKED_BAR:\n return { type: 'bar' }\n case VIS_TYPE_LINE:\n case VIS_TYPE_YEAR_OVER_YEAR_LINE:\n return { type: 'line' }\n case VIS_TYPE_AREA:\n case VIS_TYPE_STACKED_AREA:\n return { type: 'area' }\n case VIS_TYPE_PIE:\n return { type: 'pie' }\n case VIS_TYPE_RADAR:\n return { type: 'line', polar: true }\n case VIS_TYPE_GAUGE:\n return { type: 'solidgauge' }\n case VIS_TYPE_COLUMN:\n case VIS_TYPE_STACKED_COLUMN:\n case VIS_TYPE_YEAR_OVER_YEAR_COLUMN:\n default:\n return { type: 'column' }\n }\n}\n","import getType from './type'\n\nconst DEFAULT_CHART = {\n spacingTop: 20,\n style: {\n fontFamily: 'Roboto,Helvetica Neue,Helvetica,Arial,sans-serif',\n },\n}\n\nconst DASHBOARD_CHART = {\n spacingTop: 0,\n spacingRight: 5,\n spacingBottom: 2,\n spacingLeft: 5,\n}\n\nconst getEvents = () => ({\n events: {\n load: function() { // Align legend icon with legend text\n this.legend.allItems.forEach((item) => {\n if (item.legendSymbol) {\n item.legendSymbol.attr({\n translateY: -((item.legendItem.getBBox().height) * 0.75 / 4 ) + ( item.legendSymbol.r / 2 )\n });\n }\n \n });\n }\n }\n})\n\nexport default function(layout, el, dashboard) {\n return Object.assign(\n {},\n getType(layout.type),\n { renderTo: el || layout.el },\n DEFAULT_CHART,\n dashboard ? DASHBOARD_CHART : undefined,\n getEvents(),\n )\n}\n","/*eslint no-unused-vars: [\"error\", { \"ignoreRestSiblings\": true }]*/\nimport i18n from '@dhis2/d2-i18n'\nimport { colors } from '@dhis2/ui'\n\nimport { isVerticalType } from './visTypes'\n\n// Font styles\nexport const FONT_STYLE_VISUALIZATION_TITLE = 'visualizationTitle'\nexport const FONT_STYLE_VISUALIZATION_SUBTITLE = 'visualizationSubtitle'\nexport const FONT_STYLE_HORIZONTAL_AXIS_TITLE = 'horizontalAxisTitle'\nexport const FONT_STYLE_VERTICAL_AXIS_TITLE = 'verticalAxisTitle'\nexport const FONT_STYLE_LEGEND = 'legend'\nexport const FONT_STYLE_SERIES_AXIS_LABELS = 'seriesAxisLabel'\nexport const FONT_STYLE_CATEGORY_AXIS_LABELS = 'categoryAxisLabel'\nexport const FONT_STYLE_TARGET_LINE_LABEL = 'targetLineLabel'\nexport const FONT_STYLE_BASE_LINE_LABEL = 'baseLineLabel'\n// Options\nexport const FONT_STYLE_OPTION_FONT = 'font'\nexport const FONT_STYLE_OPTION_FONT_SIZE = 'fontSize'\nexport const FONT_STYLE_OPTION_BOLD = 'bold'\nexport const FONT_STYLE_OPTION_ITALIC = 'italic'\nexport const FONT_STYLE_OPTION_UNDERLINE = 'underline'\nexport const FONT_STYLE_OPTION_TEXT_COLOR = 'textColor'\nexport const FONT_STYLE_OPTION_TEXT_ALIGN = 'textAlign'\n// Text align\nexport const TEXT_ALIGN_LEFT = 'LEFT'\nexport const TEXT_ALIGN_CENTER = 'CENTER'\nexport const TEXT_ALIGN_RIGHT = 'RIGHT'\n\n// Tiers\nconst TIER1 = 'tier1'\nconst TIER2 = 'tier2'\n\nexport const getFontSizeOptions = fontStyleKey => {\n const fontSizes = [\n {\n key: 'xSmall',\n label: i18n.t('Extra Small'),\n [TIER1]: 11,\n [TIER2]: 9,\n },\n {\n key: 'small',\n label: i18n.t('Small'),\n [TIER1]: 13,\n [TIER2]: 11,\n },\n {\n key: 'regular',\n label: i18n.t('Regular'),\n [TIER1]: 18,\n [TIER2]: 13,\n },\n {\n key: 'large',\n label: i18n.t('Large'),\n [TIER1]: 27,\n [TIER2]: 18,\n },\n {\n key: 'xLarge',\n label: i18n.t('Extra Large'),\n [TIER1]: 42,\n [TIER2]: 24,\n },\n ]\n\n const tier = [\n FONT_STYLE_VISUALIZATION_TITLE,\n FONT_STYLE_VISUALIZATION_SUBTITLE,\n ].includes(fontStyleKey)\n ? TIER1\n : TIER2\n\n const result = {}\n fontSizes.forEach(size => {\n result[size.key] = {\n label: size.label,\n value: size[tier],\n }\n })\n return result\n}\n\nexport const getTextAlignOptions = (fontStyleKey, visType) => {\n switch (fontStyleKey) {\n case FONT_STYLE_HORIZONTAL_AXIS_TITLE:\n case FONT_STYLE_VERTICAL_AXIS_TITLE:\n return axisTitleAlignOptions()\n case FONT_STYLE_TARGET_LINE_LABEL:\n case FONT_STYLE_BASE_LINE_LABEL:\n return isVerticalType(visType)\n ? verticalAlignOptions()\n : defaultAlignOptions()\n case FONT_STYLE_VISUALIZATION_TITLE:\n case FONT_STYLE_VISUALIZATION_SUBTITLE:\n case FONT_STYLE_LEGEND:\n default:\n return defaultAlignOptions()\n }\n}\n\nconst defaultAlignOptions = () => [\n {\n label: i18n.t('Left'),\n value: TEXT_ALIGN_LEFT,\n },\n {\n label: i18n.t('Center'),\n value: TEXT_ALIGN_CENTER,\n },\n {\n label: i18n.t('Right'),\n value: TEXT_ALIGN_RIGHT,\n },\n]\n\nconst axisTitleAlignOptions = () => [\n {\n label: i18n.t('Start'),\n value: TEXT_ALIGN_LEFT,\n },\n {\n label: i18n.t('Middle'),\n value: TEXT_ALIGN_CENTER,\n },\n {\n label: i18n.t('End'),\n value: TEXT_ALIGN_RIGHT,\n },\n]\n\nconst verticalAlignOptions = () => [\n {\n label: i18n.t('Top'),\n value: TEXT_ALIGN_LEFT,\n },\n {\n label: i18n.t('Middle'),\n value: TEXT_ALIGN_CENTER,\n },\n {\n label: i18n.t('Bottom'),\n value: TEXT_ALIGN_RIGHT,\n },\n]\n\nconst defaultFont = 'Roboto'\n\nexport const defaultFontStyle = {\n [FONT_STYLE_VISUALIZATION_TITLE]: {\n [FONT_STYLE_OPTION_FONT]: defaultFont,\n [FONT_STYLE_OPTION_FONT_SIZE]: getFontSizeOptions(\n FONT_STYLE_VISUALIZATION_TITLE\n ).regular.value,\n [FONT_STYLE_OPTION_BOLD]: false,\n [FONT_STYLE_OPTION_ITALIC]: false,\n [FONT_STYLE_OPTION_UNDERLINE]: false,\n [FONT_STYLE_OPTION_TEXT_COLOR]: colors.grey900,\n [FONT_STYLE_OPTION_TEXT_ALIGN]: TEXT_ALIGN_CENTER,\n },\n [FONT_STYLE_VISUALIZATION_SUBTITLE]: {\n [FONT_STYLE_OPTION_FONT]: defaultFont,\n [FONT_STYLE_OPTION_FONT_SIZE]: getFontSizeOptions(\n FONT_STYLE_VISUALIZATION_SUBTITLE\n ).small.value,\n [FONT_STYLE_OPTION_BOLD]: false,\n [FONT_STYLE_OPTION_ITALIC]: false,\n [FONT_STYLE_OPTION_UNDERLINE]: false,\n [FONT_STYLE_OPTION_TEXT_COLOR]: colors.grey700,\n [FONT_STYLE_OPTION_TEXT_ALIGN]: TEXT_ALIGN_CENTER,\n },\n [FONT_STYLE_HORIZONTAL_AXIS_TITLE]: {\n [FONT_STYLE_OPTION_FONT]: defaultFont,\n [FONT_STYLE_OPTION_FONT_SIZE]: getFontSizeOptions(\n FONT_STYLE_HORIZONTAL_AXIS_TITLE\n ).regular.value,\n [FONT_STYLE_OPTION_BOLD]: false,\n [FONT_STYLE_OPTION_ITALIC]: false,\n [FONT_STYLE_OPTION_UNDERLINE]: false,\n [FONT_STYLE_OPTION_TEXT_COLOR]: colors.grey900,\n [FONT_STYLE_OPTION_TEXT_ALIGN]: TEXT_ALIGN_CENTER,\n },\n [FONT_STYLE_VERTICAL_AXIS_TITLE]: {\n [FONT_STYLE_OPTION_FONT]: defaultFont,\n [FONT_STYLE_OPTION_FONT_SIZE]: getFontSizeOptions(\n FONT_STYLE_VERTICAL_AXIS_TITLE\n ).regular.value,\n [FONT_STYLE_OPTION_BOLD]: false,\n [FONT_STYLE_OPTION_ITALIC]: false,\n [FONT_STYLE_OPTION_UNDERLINE]: false,\n [FONT_STYLE_OPTION_TEXT_COLOR]: colors.grey900,\n [FONT_STYLE_OPTION_TEXT_ALIGN]: TEXT_ALIGN_CENTER,\n },\n [FONT_STYLE_LEGEND]: {\n [FONT_STYLE_OPTION_FONT]: defaultFont,\n [FONT_STYLE_OPTION_FONT_SIZE]: getFontSizeOptions(FONT_STYLE_LEGEND)\n .regular.value,\n [FONT_STYLE_OPTION_BOLD]: false,\n [FONT_STYLE_OPTION_ITALIC]: false,\n [FONT_STYLE_OPTION_UNDERLINE]: false,\n [FONT_STYLE_OPTION_TEXT_COLOR]: colors.grey900,\n [FONT_STYLE_OPTION_TEXT_ALIGN]: TEXT_ALIGN_CENTER,\n },\n [FONT_STYLE_SERIES_AXIS_LABELS]: {\n [FONT_STYLE_OPTION_FONT]: defaultFont,\n [FONT_STYLE_OPTION_FONT_SIZE]: getFontSizeOptions(\n FONT_STYLE_SERIES_AXIS_LABELS\n ).small.value,\n [FONT_STYLE_OPTION_BOLD]: false,\n [FONT_STYLE_OPTION_ITALIC]: false,\n [FONT_STYLE_OPTION_UNDERLINE]: false,\n [FONT_STYLE_OPTION_TEXT_COLOR]: colors.grey800,\n },\n [FONT_STYLE_CATEGORY_AXIS_LABELS]: {\n [FONT_STYLE_OPTION_FONT]: defaultFont,\n [FONT_STYLE_OPTION_FONT_SIZE]: getFontSizeOptions(\n FONT_STYLE_CATEGORY_AXIS_LABELS\n ).small.value,\n [FONT_STYLE_OPTION_BOLD]: false,\n [FONT_STYLE_OPTION_ITALIC]: false,\n [FONT_STYLE_OPTION_UNDERLINE]: false,\n [FONT_STYLE_OPTION_TEXT_COLOR]: colors.grey800,\n },\n [FONT_STYLE_TARGET_LINE_LABEL]: {\n [FONT_STYLE_OPTION_FONT]: defaultFont,\n [FONT_STYLE_OPTION_FONT_SIZE]: getFontSizeOptions(\n FONT_STYLE_TARGET_LINE_LABEL\n ).regular.value,\n [FONT_STYLE_OPTION_BOLD]: false,\n [FONT_STYLE_OPTION_ITALIC]: false,\n [FONT_STYLE_OPTION_UNDERLINE]: false,\n [FONT_STYLE_OPTION_TEXT_COLOR]: colors.grey900,\n [FONT_STYLE_OPTION_TEXT_ALIGN]: TEXT_ALIGN_LEFT,\n },\n [FONT_STYLE_BASE_LINE_LABEL]: {\n [FONT_STYLE_OPTION_FONT]: defaultFont,\n [FONT_STYLE_OPTION_FONT_SIZE]: getFontSizeOptions(\n FONT_STYLE_BASE_LINE_LABEL\n ).regular.value,\n [FONT_STYLE_OPTION_BOLD]: false,\n [FONT_STYLE_OPTION_ITALIC]: false,\n [FONT_STYLE_OPTION_UNDERLINE]: false,\n [FONT_STYLE_OPTION_TEXT_COLOR]: colors.grey900,\n [FONT_STYLE_OPTION_TEXT_ALIGN]: TEXT_ALIGN_LEFT,\n },\n}\n\nexport const mergeFontStyleWithDefault = fontStyle => {\n const result = { ...defaultFontStyle }\n for (const style in fontStyle) {\n result[style] = {\n ...result[style],\n ...fontStyle[style],\n }\n }\n return result\n}\n\nexport const deleteFontStyleOption = (inputFontStyle, fontStyleKey, option) => {\n const style = {\n ...inputFontStyle,\n [fontStyleKey]: {\n ...inputFontStyle[fontStyleKey],\n },\n }\n style[fontStyleKey] && delete style[fontStyleKey][option]\n !Object.keys(style[fontStyleKey]).length && delete style[fontStyleKey]\n return Object.keys(style).length ? style : null\n}\n","import { TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER, TEXT_ALIGN_RIGHT, FONT_STYLE_HORIZONTAL_AXIS_TITLE, FONT_STYLE_VERTICAL_AXIS_TITLE, FONT_STYLE_TARGET_LINE_LABEL, FONT_STYLE_BASE_LINE_LABEL, FONT_STYLE_VISUALIZATION_TITLE, FONT_STYLE_VISUALIZATION_SUBTITLE, FONT_STYLE_LEGEND } from \"../../../../modules/fontStyle\"\nimport { isVerticalType } from \"../../../../modules/visTypes\"\n\nconst defaultAlignOptions = {\n [TEXT_ALIGN_LEFT]: 'left',\n [TEXT_ALIGN_CENTER]: 'center',\n [TEXT_ALIGN_RIGHT]: 'right',\n}\n\nconst axisTitleAlignOptions = {\n [TEXT_ALIGN_LEFT]: 'low',\n [TEXT_ALIGN_CENTER]: 'middle',\n [TEXT_ALIGN_RIGHT]: 'high',\n}\n\nconst verticalAlignOptions = {\n [TEXT_ALIGN_LEFT]: 'top',\n [TEXT_ALIGN_CENTER]: 'middle',\n [TEXT_ALIGN_RIGHT]: 'bottom'\n}\n\nconst getTextAlignOptions = (fontStyleKey, visType) => {\n switch (fontStyleKey) {\n case FONT_STYLE_HORIZONTAL_AXIS_TITLE:\n case FONT_STYLE_VERTICAL_AXIS_TITLE:\n return axisTitleAlignOptions\n case FONT_STYLE_TARGET_LINE_LABEL:\n case FONT_STYLE_BASE_LINE_LABEL:\n return isVerticalType(visType)\n ? verticalAlignOptions\n : defaultAlignOptions\n case FONT_STYLE_VISUALIZATION_TITLE:\n case FONT_STYLE_VISUALIZATION_SUBTITLE:\n case FONT_STYLE_LEGEND:\n default:\n return defaultAlignOptions\n }\n}\n\nexport const getTextAlignOption = (option, fontStyleKey, visType) => \n getTextAlignOptions(fontStyleKey, visType)[option]\n","import isString from 'd2-utilizr/lib/isString'\nimport { \n FONT_STYLE_OPTION_FONT_SIZE, \n FONT_STYLE_OPTION_TEXT_COLOR,\n FONT_STYLE_OPTION_BOLD ,\n FONT_STYLE_OPTION_ITALIC,\n FONT_STYLE_OPTION_TEXT_ALIGN,\n} from '../../../../modules/fontStyle'\nimport { getTextAlignOption } from './getTextAlignOption'\n\nconst getTitleStyle = (fontStyle, titleType, visType) => fontStyle ? {\n align: (getTextAlignOption(fontStyle[FONT_STYLE_OPTION_TEXT_ALIGN], titleType , visType)),\n margin: 15,\n style: {\n color: fontStyle[FONT_STYLE_OPTION_TEXT_COLOR],\n fontSize: `${fontStyle[FONT_STYLE_OPTION_FONT_SIZE]}px`,\n fontWeight: fontStyle[FONT_STYLE_OPTION_BOLD] ? FONT_STYLE_OPTION_BOLD : 'normal',\n fontStyle: fontStyle[FONT_STYLE_OPTION_ITALIC] ? FONT_STYLE_OPTION_ITALIC : 'normal'\n },\n} : {}\n\nexport default function(title, fontStyle, titleType, visType) {\n return isString(title)\n ? Object.assign({}, getTitleStyle(fontStyle, titleType, visType), {\n text: title,\n })\n : {\n text: null,\n }\n}\n","import isArray from 'd2-utilizr/lib/isArray'\n\nexport default function(metaData, dimensionId) {\n const dimensionItemsIds = isArray(metaData.dimensions[dimensionId])\n ? metaData.dimensions[dimensionId]\n : []\n\n return dimensionItemsIds.map(id => metaData.items[id].name)\n}\n","import objectClean from 'd2-utilizr/lib/objectClean'\nimport {\n FONT_STYLE_HORIZONTAL_AXIS_TITLE,\n FONT_STYLE_CATEGORY_AXIS_LABELS,\n FONT_STYLE_OPTION_TEXT_COLOR,\n FONT_STYLE_OPTION_FONT_SIZE,\n FONT_STYLE_OPTION_BOLD,\n FONT_STYLE_OPTION_ITALIC\n} from '../../../../../modules/fontStyle'\nimport getAxisTitle from '../getAxisTitle'\n\nexport default function (store, layout, extraOptions) {\n let categories\n\n if (extraOptions.xAxisLabels) {\n categories = extraOptions.xAxisLabels\n } else {\n // look for the response with the longer list of periods.\n // in some cases (ie. weeks per year) responses might have a different number of periods in metadata\n const res = store.data.reduce((out, r) => {\n if (out) {\n if (\n r.metaData.dimensions.pe.length >\n out.metaData.dimensions.pe.length\n ) {\n out = r\n }\n } else {\n out = r\n }\n\n return out\n }, {})\n\n const metaData = res.metaData\n\n categories = metaData.dimensions.pe.reduce((categories, periodId) => {\n // TODO use shortName or pass extra option to the request for getting short names in name prop\n categories.push(metaData.items[periodId].name)\n return categories\n }, [])\n }\n\n const labelFontStyle = layout.fontStyle[FONT_STYLE_CATEGORY_AXIS_LABELS]\n\n return objectClean({\n categories,\n title: getAxisTitle(layout.domainAxisLabel, layout.fontStyle[FONT_STYLE_HORIZONTAL_AXIS_TITLE], FONT_STYLE_HORIZONTAL_AXIS_TITLE, layout.type),\n labels: labelFontStyle ? {\n style: {\n color: labelFontStyle[FONT_STYLE_OPTION_TEXT_COLOR],\n fontSize: `${labelFontStyle[FONT_STYLE_OPTION_FONT_SIZE]}px`,\n fontWeight: labelFontStyle[FONT_STYLE_OPTION_BOLD] ? FONT_STYLE_OPTION_BOLD : 'normal',\n fontStyle: labelFontStyle[FONT_STYLE_OPTION_ITALIC] ? FONT_STYLE_OPTION_ITALIC : 'normal'\n },\n } : {},\n })\n}\n","import getAxisTitle from '../getAxisTitle'\nimport getCategories from '../getCategories'\nimport { getLabelsStyle } from './'\nimport {\n FONT_STYLE_HORIZONTAL_AXIS_TITLE,\n FONT_STYLE_CATEGORY_AXIS_LABELS,\n} from '../../../../../modules/fontStyle'\n\n\nexport default function(store, layout) {\n const axis1Categories = getCategories(\n store.data[0].metaData,\n layout.rows[1].dimension\n )\n\n const axis2Categories = getCategories(\n store.data[0].metaData,\n layout.rows[0].dimension\n )\n\n // bottom x axis\n const xAxis = [\n {\n title: getAxisTitle(layout.domainAxisLabel, layout.fontStyle[FONT_STYLE_HORIZONTAL_AXIS_TITLE], FONT_STYLE_HORIZONTAL_AXIS_TITLE, layout.type),\n categories: Array.from(\n { length: axis2Categories.length || 1 },\n () => axis1Categories\n ),\n labels: getLabelsStyle(layout.fontStyle[FONT_STYLE_CATEGORY_AXIS_LABELS]),\n },\n ]\n\n // top x axis\n xAxis.push({\n categories: axis2Categories,\n labels: xAxis[0].labels,\n gridLineWidth: 1,\n opposite: 'true',\n })\n\n return xAxis\n}\n","import isString from 'd2-utilizr/lib/isString'\nimport { FONT_STYLE_HORIZONTAL_AXIS_TITLE, FONT_STYLE_OPTION_TEXT_ALIGN, TEXT_ALIGN_CENTER } from '../../../../../modules/fontStyle'\nimport { getDefault } from './'\n\nexport default (store, layout) => {\n const config = getDefault(store, layout)\n\n if (isString(layout.domainAxisLabel) && config.title && layout.fontStyle[FONT_STYLE_HORIZONTAL_AXIS_TITLE][FONT_STYLE_OPTION_TEXT_ALIGN] === TEXT_ALIGN_CENTER) {\n config.title.textAlign = 'right'\n }\n \n return config\n}\n","import objectClean from 'd2-utilizr/lib/objectClean'\nimport getAxisTitle from '../getAxisTitle'\nimport getCategories from '../getCategories'\nimport getYearOnYear from './yearOnYear'\nimport getTwoCategory from './twoCategory'\nimport getRadar from './radar'\nimport {\n VIS_TYPE_GAUGE,\n VIS_TYPE_YEAR_OVER_YEAR_LINE,\n VIS_TYPE_YEAR_OVER_YEAR_COLUMN,\n VIS_TYPE_PIE,\n VIS_TYPE_RADAR,\n isTwoCategoryChartType, \n} from '../../../../../modules/visTypes'\nimport { \n FONT_STYLE_HORIZONTAL_AXIS_TITLE, \n FONT_STYLE_CATEGORY_AXIS_LABELS,\n FONT_STYLE_OPTION_TEXT_COLOR,\n FONT_STYLE_OPTION_FONT_SIZE,\n FONT_STYLE_OPTION_BOLD,\n FONT_STYLE_OPTION_ITALIC \n} from '../../../../../modules/fontStyle'\n\nfunction noAxis() {\n return null\n}\n\nexport const getLabelsStyle = fontStyle => fontStyle ? {\n style: {\n color: fontStyle[FONT_STYLE_OPTION_TEXT_COLOR],\n fontSize: `${fontStyle[FONT_STYLE_OPTION_FONT_SIZE]}px`,\n fontWeight: fontStyle[FONT_STYLE_OPTION_BOLD] ? FONT_STYLE_OPTION_BOLD : 'normal',\n fontStyle: fontStyle[FONT_STYLE_OPTION_ITALIC] ? FONT_STYLE_OPTION_ITALIC : 'normal'\n },\n} : {}\n\nexport const getDefault = (store, layout) =>\n objectClean({\n categories: getCategories(store.data[0].metaData, layout.rows[0].dimension),\n title: getAxisTitle(layout.domainAxisLabel, layout.fontStyle[FONT_STYLE_HORIZONTAL_AXIS_TITLE], FONT_STYLE_HORIZONTAL_AXIS_TITLE, layout.type),\n labels: getLabelsStyle(layout.fontStyle[FONT_STYLE_CATEGORY_AXIS_LABELS]),\n })\n\nexport default function(store, layout, extraOptions) {\n let xAxis\n\n if (isTwoCategoryChartType(layout.type) && layout.rows.length > 1) {\n xAxis = getTwoCategory(store, layout, extraOptions)\n } else {\n switch (layout.type) {\n case VIS_TYPE_PIE:\n case VIS_TYPE_GAUGE:\n xAxis = noAxis()\n break\n case VIS_TYPE_YEAR_OVER_YEAR_LINE:\n case VIS_TYPE_YEAR_OVER_YEAR_COLUMN:\n xAxis = [getYearOnYear(store, layout, extraOptions)]\n break\n case VIS_TYPE_RADAR:\n xAxis = [getRadar(store, layout)]\n break\n default:\n xAxis = [getDefault(store, layout)]\n }\n }\n\n return xAxis\n}\n","import arrayClean from 'd2-utilizr/lib/arrayClean'\nimport isNumber from 'd2-utilizr/lib/isNumber'\nimport objectClean from 'd2-utilizr/lib/objectClean'\nimport i18n from '@dhis2/d2-i18n'\nimport { getColorByValueFromLegendSet, LEGEND_DISPLAY_STYLE_FILL } from '../../../../../modules/legends'\nimport { FONT_STYLE_OPTION_TEXT_COLOR,\n FONT_STYLE_OPTION_FONT_SIZE,\n FONT_STYLE_OPTION_BOLD,\n FONT_STYLE_OPTION_ITALIC, \n TEXT_ALIGN_LEFT, \n TEXT_ALIGN_RIGHT, \n TEXT_ALIGN_CENTER, \n FONT_STYLE_BASE_LINE_LABEL, \n FONT_STYLE_TARGET_LINE_LABEL, \n FONT_STYLE_OPTION_TEXT_ALIGN, \n FONT_STYLE_SERIES_AXIS_LABELS \n} from '../../../../../modules/fontStyle'\nimport { VIS_TYPE_GAUGE } from '../../../../../modules/visTypes'\nimport { getTextAlignOption } from '../getTextAlignOption'\n\nconst DEFAULT_MAX_VALUE = 100\n\nconst DEFAULT_TARGET_LINE_LABEL = i18n.t('Target')\nconst DEFAULT_BASE_LINE_LABEL = i18n.t('Base')\n\nconst getLabelOffsetFromTextAlign = textAlign => {\n switch (textAlign) {\n case TEXT_ALIGN_LEFT:\n return -10\n case TEXT_ALIGN_RIGHT:\n return 10\n case TEXT_ALIGN_CENTER:\n default:\n return 0\n }\n}\n\nfunction getPlotLine(value, label, fontStyle, fontStyleType) {\n const verticalAlign = getTextAlignOption(fontStyle[FONT_STYLE_OPTION_TEXT_ALIGN], fontStyleType, VIS_TYPE_GAUGE)\n const y = getLabelOffsetFromTextAlign(fontStyle[FONT_STYLE_OPTION_TEXT_ALIGN])\n return {\n value,\n zIndex: 5,\n width: 1,\n color: fontStyle[FONT_STYLE_OPTION_TEXT_COLOR] || '#000',\n ...(label && {\n label: {\n text: `${label}: ${value}`,\n verticalAlign,\n y,\n style: {\n color: fontStyle[FONT_STYLE_OPTION_TEXT_COLOR],\n fontSize: `${fontStyle[FONT_STYLE_OPTION_FONT_SIZE]}px`,\n fontWeight: fontStyle[FONT_STYLE_OPTION_BOLD]\n ? FONT_STYLE_OPTION_BOLD\n : 'normal',\n fontStyle: fontStyle[FONT_STYLE_OPTION_ITALIC]\n ? FONT_STYLE_OPTION_ITALIC\n : 'normal',\n }\n }\n })\n }\n}\n\nconst getLabels = fontStyle => (\n {\n y: parseInt(fontStyle[FONT_STYLE_OPTION_FONT_SIZE], 10) + 7,\n style: {\n color: fontStyle[FONT_STYLE_OPTION_TEXT_COLOR],\n fontSize: `${fontStyle[FONT_STYLE_OPTION_FONT_SIZE]}px`,\n fontWeight: fontStyle[FONT_STYLE_OPTION_BOLD]\n ? FONT_STYLE_OPTION_BOLD\n : 'normal',\n fontStyle: fontStyle[FONT_STYLE_OPTION_ITALIC]\n ? FONT_STYLE_OPTION_ITALIC\n : 'normal',\n },\n }\n)\n\nexport default function(layout, series, legendSet) {\n const plotLines = arrayClean([\n isNumber(layout.baseLineValue) ? getPlotLine(layout.baseLineValue, layout.baseLineLabel || DEFAULT_BASE_LINE_LABEL, layout.fontStyle[FONT_STYLE_BASE_LINE_LABEL], FONT_STYLE_BASE_LINE_LABEL) : null,\n isNumber(layout.targetLineValue) ? getPlotLine(layout.targetLineValue, layout.targetLineLabel || DEFAULT_TARGET_LINE_LABEL, layout.fontStyle[FONT_STYLE_TARGET_LINE_LABEL], FONT_STYLE_TARGET_LINE_LABEL) : null\n ])\n const fillColor = (layout.legendDisplayStyle === LEGEND_DISPLAY_STYLE_FILL && legendSet) ? getColorByValueFromLegendSet(legendSet, series[0].data) : undefined\n return objectClean({\n min: isNumber(layout.rangeAxisMinValue) ? layout.rangeAxisMinValue : 0,\n max: isNumber(layout.rangeAxisMaxValue) ? layout.rangeAxisMaxValue : DEFAULT_MAX_VALUE,\n lineWidth: 0,\n minorTickInterval: null,\n tickLength: 0,\n tickAmount: 0,\n tickPositioner: function() {\n return [this.min, this.max];\n }, \n minColor: fillColor,\n maxColor: fillColor,\n labels: getLabels(layout.fontStyle[FONT_STYLE_SERIES_AXIS_LABELS]),\n title: {\n text: series[0].name,\n },\n ...(plotLines.length && {\n plotLines\n })\n })\n}\n","export const CUSTOM_AXES_DIMENSION_ITEM = 'dimensionItem'\nexport const CUSTOM_AXES_AXIS = 'axis'\n\n// returns:\n// {\n// a: 1,\n// b: 1,\n// }\nexport function getIdAxisMap(customAxes) {\n return customAxes.reduce((map, item) => {\n map[item[CUSTOM_AXES_DIMENSION_ITEM]] = item[CUSTOM_AXES_AXIS]\n return map\n }, {})\n}\n\nexport function getFullIdAxisMap(customAxes = [], series = []) {\n const idAxisMap = getIdAxisMap(customAxes.filter(axisItem => series.find(seriesItem => seriesItem.id === axisItem.dimensionItem)))\n\n // adds first axis ids to seriesAxisMap\n series.forEach(s => {\n if (!(s.id in idAxisMap)) {\n idAxisMap[s.id] = 0\n }\n })\n\n return idAxisMap\n}\n\n// returns:\n// {\n// 0: ['a', 'b'],\n// 1: ['c'],\n// }\nexport function getAxisIdsMap(customAxes, series) {\n const fullIdAxisMap = getFullIdAxisMap(customAxes, series)\n\n return Object.entries(fullIdAxisMap).reduce((map, [id, axis]) => {\n if (!(axis in map)) {\n map[axis] = []\n }\n\n map[axis].push(id)\n return map\n }, {})\n}\n","const AXIS_ID_PREFIX = 'AXIS_'\n\nexport const getAxisStringFromId = (id) => `${AXIS_ID_PREFIX}${id}`","import { hasRelativeItems } from '../relativeItems'\nimport { dimensionGetId } from './dimensionGetId'\nimport { dimensionGetItemIds } from './dimensionGetItemIds'\n\nexport const dimensionHasRelativeItems = dimension =>\n hasRelativeItems(dimensionGetId(dimension), dimensionGetItemIds(dimension))\n","import { dimensionHasRelativeItems } from './dimensionHasRelativeItems'\n\nexport const axisHasRelativeItems = axis =>\n axis.some(dimension => dimensionHasRelativeItems(dimension))\n","import i18n from '@dhis2/d2-i18n'\n\nimport arrayClean from 'd2-utilizr/lib/arrayClean'\nimport objectClean from 'd2-utilizr/lib/objectClean'\nimport isNumeric from 'd2-utilizr/lib/isNumeric'\nimport isString from 'd2-utilizr/lib/isString'\nimport getAxisTitle from '../getAxisTitle'\nimport getGauge from './gauge'\nimport {\n isStacked,\n VIS_TYPE_GAUGE,\n isDualAxisType,\n isVerticalType,\n} from '../../../../../modules/visTypes'\nimport { hasCustomAxes } from '../../../../../modules/axis'\nimport { getAxisIdsMap } from '../customAxes'\nimport { getAxisStringFromId } from '../../../../util/axisId'\nimport {\n FONT_STYLE_VERTICAL_AXIS_TITLE,\n FONT_STYLE_SERIES_AXIS_LABELS,\n FONT_STYLE_TARGET_LINE_LABEL,\n FONT_STYLE_BASE_LINE_LABEL,\n FONT_STYLE_OPTION_TEXT_COLOR,\n FONT_STYLE_OPTION_FONT_SIZE,\n FONT_STYLE_OPTION_BOLD,\n FONT_STYLE_OPTION_ITALIC,\n FONT_STYLE_OPTION_TEXT_ALIGN,\n TEXT_ALIGN_LEFT,\n TEXT_ALIGN_CENTER,\n TEXT_ALIGN_RIGHT,\n} from '../../../../../modules/fontStyle'\nimport { getTextAlignOption } from '../getTextAlignOption'\nimport { axisHasRelativeItems } from '../../../../../modules/layout/axisHasRelativeItems'\n\nconst DEFAULT_MIN_VALUE = 0\n\nconst DEFAULT_GRIDLINE_COLOR = '#E1E1E1'\n\nfunction getPlotLineStyle(fontStyle) {\n return {\n color: fontStyle[FONT_STYLE_OPTION_TEXT_COLOR] || '#000',\n width: 2,\n zIndex: 4,\n }\n}\n\nfunction getPlotLineLabelStyle(fontStyle) {\n return {\n y: -7,\n style: {\n color: fontStyle[FONT_STYLE_OPTION_TEXT_COLOR],\n fontSize: `${fontStyle[FONT_STYLE_OPTION_FONT_SIZE]}px`,\n fontWeight: fontStyle[FONT_STYLE_OPTION_BOLD]\n ? FONT_STYLE_OPTION_BOLD\n : 'normal',\n fontStyle: fontStyle[FONT_STYLE_OPTION_ITALIC]\n ? FONT_STYLE_OPTION_ITALIC\n : 'normal',\n },\n }\n}\n\nconst getMinValue = (rangeAxisMinValue, dataValues) => \n isNumeric(rangeAxisMinValue) ? \n rangeAxisMinValue : \n dataValues?.some(value => value < DEFAULT_MIN_VALUE) ? \n undefined : \n DEFAULT_MIN_VALUE\n\nconst getMaxValue = (rangeAxisMaxValue, dataValues) =>\n isNumeric(rangeAxisMaxValue) ? \n rangeAxisMaxValue :\n dataValues?.every(value => value < DEFAULT_MIN_VALUE) ?\n DEFAULT_MIN_VALUE :\n undefined\n\nfunction getSteps(layout) {\n return isNumeric(layout.rangeAxisSteps) ? layout.rangeAxisSteps : undefined\n}\n\nconst getLabelOffsetFromTextAlign = textAlign => {\n switch (textAlign) {\n case TEXT_ALIGN_LEFT:\n return 10\n case TEXT_ALIGN_RIGHT:\n return -10\n case TEXT_ALIGN_CENTER:\n default:\n return 0\n }\n}\n\nconst getLineLabelStyle = (fontStyle, fontStyleType, visType) => {\n const isVertical = isVerticalType(visType)\n const alignKey = isVertical ? 'verticalAlign' : 'align'\n const alignValue = getTextAlignOption(fontStyle, fontStyleType, visType)\n const offsetKey = isVertical ? 'y' : 'x'\n const offsetValue = getLabelOffsetFromTextAlign(fontStyle)\n\n const result = {[alignKey]: alignValue, [offsetKey]: offsetValue }\n if (isVertical) {\n result.align = getTextAlignOption(fontStyle, fontStyleType)\n }\n return result\n}\n\nfunction getTargetLine(layout) {\n const fontStyle = layout.fontStyle[FONT_STYLE_TARGET_LINE_LABEL]\n\n const plotLineStyle = getPlotLineStyle(fontStyle)\n const plotLineLabelStyle = getPlotLineLabelStyle(fontStyle)\n\n return isNumeric(layout.targetLineValue)\n ? Object.assign(\n {},\n plotLineStyle,\n objectClean({\n value: layout.targetLineValue,\n label: isString(layout.targetLineLabel)\n ? Object.assign({}, plotLineLabelStyle, {\n text: layout.targetLineLabel,\n ...getLineLabelStyle(fontStyle[FONT_STYLE_OPTION_TEXT_ALIGN], FONT_STYLE_BASE_LINE_LABEL, layout.type),\n })\n : undefined,\n })\n )\n : undefined\n}\n\nfunction getBaseLine(layout) {\n const fontStyle = layout.fontStyle[FONT_STYLE_BASE_LINE_LABEL]\n\n const plotLineStyle = getPlotLineStyle(fontStyle)\n const plotLineLabelStyle = getPlotLineLabelStyle(fontStyle)\n\n return isNumeric(layout.baseLineValue)\n ? Object.assign(\n {},\n plotLineStyle,\n objectClean({\n value: layout.baseLineValue,\n label: isString(layout.baseLineLabel)\n ? Object.assign({}, plotLineLabelStyle, {\n text: layout.baseLineLabel,\n ...getLineLabelStyle(fontStyle[FONT_STYLE_OPTION_TEXT_ALIGN], FONT_STYLE_BASE_LINE_LABEL, layout.type),\n })\n : undefined,\n })\n )\n : undefined\n}\n\nfunction getFormatter(layout) {\n return isNumeric(layout.rangeAxisDecimals)\n ? {\n formatter: function() {\n return this.value.toFixed(layout.rangeAxisDecimals)\n },\n }\n : {}\n}\n\nfunction getLabels(layout) {\n const fontStyle = layout.fontStyle[FONT_STYLE_SERIES_AXIS_LABELS]\n return {\n style: {\n color: fontStyle[FONT_STYLE_OPTION_TEXT_COLOR],\n fontSize: `${fontStyle[FONT_STYLE_OPTION_FONT_SIZE]}px`,\n fontWeight: fontStyle[FONT_STYLE_OPTION_BOLD]\n ? FONT_STYLE_OPTION_BOLD\n : 'normal',\n fontStyle: fontStyle[FONT_STYLE_OPTION_ITALIC]\n ? FONT_STYLE_OPTION_ITALIC\n : 'normal',\n },\n ...getFormatter(layout),\n }\n}\n\nfunction getMultipleAxes(theme, axes) {\n const axisObjects = []\n axes.forEach(axisId => {\n const id = Number(axisId)\n axisObjects.push({\n title: {\n text: i18n.t('Axis {{axisId}}', {\n axisId: id + 1,\n }),\n style: {\n color: theme[id].mainColor,\n 'font-weight': 700,\n },\n },\n id: getAxisStringFromId(id),\n opposite: !!(id % 2),\n })\n })\n return axisObjects\n}\n\nfunction getDefault(layout, series, extraOptions) {\n const axes = []\n const filteredSeries = layout.series?.filter(layoutSeriesItem =>\n series.some(\n seriesItem => seriesItem.id === layoutSeriesItem.dimensionItem\n )\n )\n const dataValues = series?.map(item => item.data).flat()\n if (isDualAxisType(layout.type) && hasCustomAxes(filteredSeries) && !axisHasRelativeItems(layout.columns)) {\n const axisIdsMap = getAxisIdsMap(layout.series, series)\n axes.push(\n ...getMultipleAxes(\n extraOptions.multiAxisTheme,\n [...new Set(Object.keys(axisIdsMap))].sort((a, b) => a - b)\n )\n )\n } else {\n axes.push(\n objectClean({\n min: getMinValue(layout.rangeAxisMinValue, dataValues),\n max: getMaxValue(layout.rangeAxisMaxValue, dataValues),\n tickAmount: getSteps(layout),\n title: getAxisTitle(layout.rangeAxisLabel, layout.fontStyle[FONT_STYLE_VERTICAL_AXIS_TITLE], FONT_STYLE_VERTICAL_AXIS_TITLE, layout.type\n ),\n plotLines: arrayClean([\n getTargetLine(layout),\n getBaseLine(layout),\n ]),\n gridLineColor: DEFAULT_GRIDLINE_COLOR,\n labels: getLabels(layout),\n id: getAxisStringFromId(0),\n\n // DHIS2-649: put first serie at the bottom of the stack\n // in this way the legend sequence matches the serie sequence\n reversedStacks: isStacked(layout.type) ? false : true,\n })\n )\n }\n\n return axes\n}\n\nexport default function(layout, series, extraOptions) {\n let yAxis\n switch (layout.type) {\n case VIS_TYPE_GAUGE:\n yAxis = getGauge(layout, series, extraOptions.legendSets[0])\n break\n default:\n yAxis = getDefault(layout, series, extraOptions)\n }\n\n return yAxis\n}\n","import numberDecimals from 'd2-utilizr/lib/numberDecimals'\nimport { isTwoCategoryChartType } from '../../../../modules/visTypes'\nimport getTwoCategorySplitSerieData from './getTwoCategorySplitSerieData'\n\nfunction getDefaultCumulativeData(series) {\n let decimals = 0\n let cumulativeValues = []\n\n series.forEach(seriesObj => {\n cumulativeValues = seriesObj.data.reduce(\n (accumulator, value, index) => {\n decimals = Math.max(decimals, numberDecimals(value))\n\n if (index > 0) {\n value += accumulator[index - 1]\n }\n\n accumulator.push(value)\n\n return accumulator\n },\n []\n )\n\n // round values to the largest number of decimals found in the serie\n // this is to avoid the floating-point problems in JavaScript\n // the condition in the return statement is because sometimes value can be null\n seriesObj.data = cumulativeValues.map(value => {\n return value ? parseFloat(value.toFixed(decimals)) : value\n })\n\n decimals = 0\n })\n\n return series\n}\n\nfunction getTwoCategoryCumulativeData(series) {\n let decimals = 0\n\n series\n .filter(seriesObj => !seriesObj.custom.isTwoCategoryFakeSerie)\n .forEach(seriesObj => {\n const cumulativeValues = []\n\n seriesObj.custom.data.forEach(groupObj => {\n const cumulativeGroupValues = []\n\n groupObj.forEach((value, index) => {\n decimals = Math.max(decimals, numberDecimals(value))\n\n if (index > 0) {\n value += cumulativeGroupValues[index - 1]\n }\n\n cumulativeGroupValues.push(value)\n })\n\n cumulativeValues.push(cumulativeGroupValues)\n })\n\n // round values to the largest number of decimals found in the serie\n // this is to avoid the floating-point problems in JavaScript\n // the condition in the return statement is because sometimes value can be null\n seriesObj.custom.data = cumulativeValues.map(groupObj =>\n groupObj.map(value =>\n value ? parseFloat(value.toFixed(decimals)) : value\n )\n )\n\n seriesObj.data = getTwoCategorySplitSerieData(seriesObj.custom.data)\n\n decimals = 0\n })\n\n return series\n}\n\nexport default function(series, layout) {\n if (isTwoCategoryChartType(layout.type) && layout.rows.length > 1) {\n return getTwoCategoryCumulativeData(series)\n } else {\n return getDefaultCumulativeData(series)\n }\n}\n","export default function(series, colors) {\n return [\n {\n colorByPoint: true,\n allowPointSelect: true,\n cursor: 'pointer',\n data: series,\n colors: colors,\n dataLabels: {\n enabled: true,\n formatter: function() {\n return (\n '<span style=\"font-weight:normal\">' +\n this.point.name +\n '</span><br/>' +\n this.y +\n '<span style=\"font-weight:normal\"> (' +\n this.percentage.toFixed(1) +\n ' %)</span>'\n )\n },\n },\n tooltip: {\n headerFormat: '',\n pointFormat:\n '<span style=\"color:{point.color}\">\\u25CF</span> {point.name}: <b>{point.y}</b><br/>',\n },\n },\n ]\n}\n","import { colors } from '@dhis2/ui'\n\nimport {\n getColorByValueFromLegendSet,\n LEGEND_DISPLAY_STYLE_TEXT,\n} from '../../../../../modules/legends'\n\nconst DEFAULT_FONT_SIZE = '28px'\n\nexport default function(series, layout, legendSet) {\n return [\n {\n name: series[0].name,\n data: series[0].data,\n enableMouseTracking: false,\n dataLabels: {\n y: 0,\n borderWidth: 0,\n verticalAlign: 'bottom',\n style: {\n fontSize: DEFAULT_FONT_SIZE,\n color:\n layout.legendDisplayStyle ===\n LEGEND_DISPLAY_STYLE_TEXT && legendSet\n ? getColorByValueFromLegendSet(\n legendSet,\n series[0].data\n )\n : colors.grey900,\n },\n },\n },\n ]\n}\n","export const generateColors = (start, end, steps) => {\n if (!end || !steps || steps < 2) {\n return [start];\n }\n const stepFactor = 1 / (steps - 1),\n result = [];\n \n for (let step = 0; step < steps; step++) {\n const color1 = convertHexToRGB(start),\n color2 = convertHexToRGB(end),\n factor = stepFactor * step;\n \n const rgbArray = color1.slice();\n rgbArray.forEach(\n (part, index, array) =>\n (array[index] = Math.round(\n part + factor * (color2[index] - color1[index])\n ))\n );\n result.push(convertRGBToHex(rgbArray));\n }\n \n return result;\n };\n \n const convertRGBToHex = (rgb) =>\n \"#\" +\n ((1 << 24) + (rgb[0] << 16) + (rgb[1] << 8) + rgb[2]).toString(16).slice(1);\n \n const convertHexToRGB = (hex) =>\n hex\n .replace(/^#/, \"\")\n .match(/.{1,2}/g)\n .map((val) => parseInt(val, 16));\n ","import H from 'highcharts'\nimport HPF from 'highcharts/modules/pattern-fill'\n\nHPF(H)\n\nexport const COLOR_SET_DEFAULT = 'DEFAULT'\nexport const COLOR_SET_BRIGHT = 'BRIGHT'\nexport const COLOR_SET_DARK = 'DARK'\nexport const COLOR_SET_GRAY = 'GRAY'\nexport const COLOR_SET_COLOR_BLIND = 'COLOR_BLIND'\nexport const COLOR_SET_PATTERNS = 'PATTERNS'\n\nexport const colorSets = {\n [COLOR_SET_DEFAULT]: {\n colors: [\n '#a8bf24',\n '#518cc3',\n '#d74554',\n '#ff9e21',\n '#968f8f',\n '#ba3ba1',\n '#ffda54',\n '#45beae',\n '#b98037',\n '#676767',\n '#6b2dd4',\n '#47792c',\n '#fcbdbd',\n '#830000',\n '#a5ffc0',\n '#000078',\n '#817c00',\n '#bdf023',\n '#fffac4',\n ],\n },\n [COLOR_SET_BRIGHT]: {\n colors: [\n '#fd7f6f',\n '#8bd3c7',\n '#beb9db',\n '#7eb0d5',\n '#ffb55a',\n '#fdcce5',\n '#ffffaf',\n '#d9d9d9',\n '#bd7ebe',\n '#cbecc4',\n '#9fe778',\n '#ffef65',\n ],\n },\n [COLOR_SET_DARK]: {\n colors: [\n '#115688',\n '#207718',\n '#b51208',\n '#803d00',\n '#5e338a',\n '#078a7f',\n '#56a2cd',\n '#73b62f',\n '#db0606',\n '#e68a00',\n '#9e6fb3',\n '#aaad00',\n ],\n },\n [COLOR_SET_GRAY]: {\n colors: ['#cfcfcf', '#8f8782', '#414451', '#a5acaf', '#60636a'],\n },\n [COLOR_SET_COLOR_BLIND]: {\n colors: [\n '#cfcfcf',\n '#ffbc79',\n '#a2c8ec',\n '#898989',\n '#c85200',\n '#5f9ed1',\n '#595959',\n '#ababab',\n '#ff800e',\n '#006ba4',\n ],\n },\n [COLOR_SET_PATTERNS]: {\n patterns: H.patterns,\n },\n}\n","import { colors } from '@dhis2/ui'\n\nimport getCumulativeData from '../getCumulativeData'\nimport getPie from './pie'\nimport getGauge from './gauge'\nimport getType from '../type'\nimport { getFullIdAxisMap, getAxisIdsMap } from '../customAxes'\nimport { generateColors } from '../../../../util/colors/gradientColorGenerator'\nimport {\n colorSets,\n COLOR_SET_PATTERNS,\n} from '../../../../util/colors/colorSets'\nimport {\n VIS_TYPE_PIE,\n VIS_TYPE_GAUGE,\n isDualAxisType,\n isYearOverYear,\n VIS_TYPE_LINE,\n} from '../../../../../modules/visTypes'\nimport { hasCustomAxes } from '../../../../../modules/axis'\nimport { getAxisStringFromId } from '../../../../util/axisId'\nimport { axisHasRelativeItems } from '../../../../../modules/layout/axisHasRelativeItems'\n\nconst DEFAULT_ANIMATION_DURATION = 200\n\nconst HIGHCHARTS_TYPE_COLUMN = 'column'\nconst HIGHCHARTS_TYPE_BAR = 'bar'\nconst HIGHCHARTS_TYPE_PERCENT = 'percent'\nconst HIGHCHARTS_TYPE_NORMAL = 'normal'\n\nconst INCREASED_Z_INDEX = 1\n\nconst epiCurveTypes = [HIGHCHARTS_TYPE_COLUMN, HIGHCHARTS_TYPE_BAR]\n\nfunction getAnimation(option, fallback) {\n return typeof option === 'number' ? option : fallback\n}\n\nfunction getColor(colors, index) {\n return colors[index] || getColor(colors, index - colors.length)\n}\n\nfunction getPatternIndex(index) {\n return index < 10 ? index : getPatternIndex(index - 10)\n}\n\nfunction getIndexColorPatternMap(series, layout, extraOptions) {\n const colors = colorSets[layout.colorSet]?.colors || extraOptions.colors\n\n return series.reduce((map, s, index) => {\n map[index] =\n layout.colorSet === COLOR_SET_PATTERNS\n ? { patternIndex: getPatternIndex(index) }\n : getColor(colors, index)\n return map\n }, {})\n}\n\nfunction getIdColorMap(series, layout, extraOptions) {\n const filteredSeries = layout.series?.filter(layoutSeriesItem =>\n series.some(\n seriesItem => seriesItem.id === layoutSeriesItem.dimensionItem\n )\n )\n\n if (isDualAxisType(layout.type) && hasCustomAxes(filteredSeries) && !axisHasRelativeItems(layout.columns)) {\n const axisIdsMap = getAxisIdsMap(layout.series, series)\n const theme = extraOptions.multiAxisTheme\n\n const colorsByAxis = Object.keys(axisIdsMap).reduce((map, axis) => {\n const numberOfIds = axisIdsMap[axis].length\n map[axis] =\n numberOfIds > 1\n ? generateColors(\n theme[axis].startColor,\n theme[axis].endColor,\n numberOfIds\n )\n : [theme[axis].mainColor]\n return map\n }, {})\n\n return Object.keys(colorsByAxis).reduce((map, axis) => {\n const colors = colorsByAxis[axis]\n const ids = axisIdsMap[axis]\n\n ids.forEach((id, index) => {\n map[id] = colors[index]\n })\n\n return map\n }, {})\n } else {\n const indexColorPatternMap = getIndexColorPatternMap(\n series,\n layout,\n extraOptions\n )\n\n return series.reduce((map, s, index) => {\n map[s.id] = indexColorPatternMap[index]\n return map\n }, {})\n }\n}\n\nfunction getDefault(series, layout, isStacked, extraOptions) {\n const fullIdAxisMap = getFullIdAxisMap(layout.series, series)\n const idColorMap = getIdColorMap(series, layout, extraOptions)\n const indexColorPatternMap = getIndexColorPatternMap(\n series,\n layout,\n extraOptions\n )\n\n series.forEach((seriesObj, index) => {\n // show values\n if (!seriesObj.dataLabels && (layout.showValues || layout.showData)) {\n seriesObj.dataLabels = {\n enabled: true,\n color: colors.grey900\n }\n }\n\n // stacked\n if (isStacked && !seriesObj?.custom?.isTwoCategoryFakeSerie) {\n // DHIS2-1060: stacked charts can optionally be shown as 100% stacked charts\n if (layout.percentStackedValues === true) {\n seriesObj.stacking = HIGHCHARTS_TYPE_PERCENT\n seriesObj.connectNulls = false\n } else {\n seriesObj.stacking = HIGHCHARTS_TYPE_NORMAL\n }\n }\n\n const matchedObject = layout.series?.find(\n item => item.dimensionItem === seriesObj.id\n )\n\n if (matchedObject && !axisHasRelativeItems(layout.columns)) {\n // Checks if the item has custom options\n if (matchedObject.type) {\n seriesObj.type = getType(matchedObject.type).type\n\n if (matchedObject.type === VIS_TYPE_LINE) {\n seriesObj.zIndex = INCREASED_Z_INDEX // Custom options, item type Line\n }\n } else if (layout.type === VIS_TYPE_LINE) {\n seriesObj.zIndex = INCREASED_Z_INDEX // Custom options, no item type, visType Line\n }\n } else if (layout.type === VIS_TYPE_LINE) {\n seriesObj.zIndex = INCREASED_Z_INDEX // No custom options, visType Line\n }\n\n // DHIS2-2101\n // show bar/column chart as EPI curve (basically remove spacing between bars/columns)\n if (\n layout.noSpaceBetweenColumns &&\n epiCurveTypes.includes(getType(layout.type).type)\n ) {\n seriesObj.pointPadding = 0\n seriesObj.groupPadding = 0\n }\n\n // color\n seriesObj.color = isYearOverYear(layout.type)\n ? indexColorPatternMap[index]\n : idColorMap[seriesObj.id]\n\n // axis number\n seriesObj.yAxis = isDualAxisType(layout.type) && !axisHasRelativeItems(layout.columns)\n ? getAxisStringFromId(fullIdAxisMap[seriesObj.id])\n : getAxisStringFromId(0)\n\n // custom names for \"year over year\" series\n if (extraOptions.yearlySeries) {\n seriesObj.name = extraOptions.yearlySeries[index]\n }\n })\n\n // DHIS2-701: use cumulative values\n if (layout.cumulativeValues === true) {\n series = getCumulativeData(series, layout)\n }\n\n return series\n}\n\nexport default function(series, store, layout, isStacked, extraOptions) {\n switch (layout.type) {\n case VIS_TYPE_PIE:\n series = getPie(\n series,\n Object.values(getIdColorMap(series, layout, extraOptions))\n )\n break\n case VIS_TYPE_GAUGE:\n series = getGauge(series, layout, extraOptions.legendSets[0])\n break\n default:\n series = getDefault(series, layout, isStacked, extraOptions)\n }\n\n series.forEach(seriesObj => {\n // animation\n seriesObj.animation = {\n duration: getAnimation(\n extraOptions.animation,\n DEFAULT_ANIMATION_DURATION\n ),\n }\n })\n\n return series\n}\n","import getFilterText from '../../../../util/getFilterText'\n\nexport default function(layout, metaData, dashboard) {\n const titleFragments = []\n\n if (layout.columns && layout.columns.length && !dashboard) {\n titleFragments.push(getFilterText(layout.columns, metaData))\n }\n\n if (layout.filters && layout.filters.length && !dashboard) {\n titleFragments.push(getFilterText(layout.filters, metaData))\n }\n\n return titleFragments.length ? titleFragments.join(' - ') : null\n}\n","import isString from 'd2-utilizr/lib/isString'\nimport getFilterText from '../../../../util/getFilterText'\nimport {\n VIS_TYPE_YEAR_OVER_YEAR_LINE,\n VIS_TYPE_YEAR_OVER_YEAR_COLUMN,\n VIS_TYPE_GAUGE,\n} from '../../../../../modules/visTypes'\nimport getYearOverYearTitle from './yearOverYear'\nimport { \n FONT_STYLE_OPTION_ITALIC, \n FONT_STYLE_OPTION_BOLD, \n FONT_STYLE_OPTION_TEXT_COLOR,\n FONT_STYLE_OPTION_FONT_SIZE,\n FONT_STYLE_OPTION_TEXT_ALIGN,\n FONT_STYLE_VISUALIZATION_TITLE\n } from '../../../../../modules/fontStyle'\nimport { getTextAlignOption } from '../getTextAlignOption'\n\nconst DASHBOARD_TITLE_STYLE = {\n margin: 15,\n y: 12,\n style: {\n fontSize: '13px',\n fontWeight: 'bold',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n },\n}\n\nfunction getDefault(layout, metaData, dashboard) {\n // filters\n if (layout.filters && !dashboard) {\n return getFilterText(layout.filters, metaData)\n }\n\n return null\n}\n\nexport default function(layout, metaData, dashboard) {\n const fontStyle = layout.fontStyle && layout.fontStyle[FONT_STYLE_VISUALIZATION_TITLE]\n \n const title = {\n text: undefined,\n }\n\n if (layout.hideTitle) {\n return title\n }\n\n if (isString(layout.title) && layout.title.length) {\n title.text = layout.title\n } else {\n switch (layout.type) {\n case VIS_TYPE_GAUGE:\n case VIS_TYPE_YEAR_OVER_YEAR_LINE:\n case VIS_TYPE_YEAR_OVER_YEAR_COLUMN:\n title.text = getYearOverYearTitle(layout, metaData, dashboard)\n break\n default:\n title.text = getDefault(layout, metaData, dashboard)\n break\n }\n }\n\n return Object.assign(\n {},\n dashboard ? DASHBOARD_TITLE_STYLE : {\n margin: 30,\n align: (getTextAlignOption(fontStyle[FONT_STYLE_OPTION_TEXT_ALIGN], FONT_STYLE_VISUALIZATION_TITLE, layout.type)),\n style: {\n color: fontStyle[FONT_STYLE_OPTION_TEXT_COLOR],\n fontSize: `${fontStyle[FONT_STYLE_OPTION_FONT_SIZE]}px`,\n fontWeight: fontStyle[FONT_STYLE_OPTION_BOLD] ? FONT_STYLE_OPTION_BOLD : 'normal',\n fontStyle: fontStyle[FONT_STYLE_OPTION_ITALIC] ? FONT_STYLE_OPTION_ITALIC : 'normal',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n },\n },\n title\n )\n}\n","import isString from 'd2-utilizr/lib/isString'\nimport getFilterText from '../../../../util/getFilterText'\nimport {\n VIS_TYPE_YEAR_OVER_YEAR_LINE,\n VIS_TYPE_YEAR_OVER_YEAR_COLUMN,\n} from '../../../../../modules/visTypes'\nimport getYearOverYearTitle from '../title/yearOverYear'\nimport { \n FONT_STYLE_OPTION_ITALIC, \n FONT_STYLE_OPTION_BOLD, \n FONT_STYLE_OPTION_TEXT_COLOR,\n FONT_STYLE_OPTION_FONT_SIZE,\n FONT_STYLE_OPTION_TEXT_ALIGN,\n FONT_STYLE_VISUALIZATION_SUBTITLE\n } from '../../../../../modules/fontStyle'\nimport { getTextAlignOption } from '../getTextAlignOption'\n\nconst DASHBOARD_SUBTITLE = {\n style: {\n // DHIS2-578: dynamically truncate subtitle when it's taking more than 1 line\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n fontSize: '12px',\n color: '#555',\n textShadow: '0 0 #999',\n },\n}\n\nfunction getDefault(layout, dashboard, filterTitle) {\n return {\n text: dashboard || isString(layout.title) ? filterTitle : undefined,\n }\n}\n\nexport default function(series, layout, metaData, dashboard) {\n const fontStyle = layout.fontStyle && layout.fontStyle[FONT_STYLE_VISUALIZATION_SUBTITLE]\n let subtitle = {\n text: undefined,\n }\n\n if (layout.hideSubtitle) {\n return null\n }\n\n // DHIS2-578: allow for optional custom subtitle\n if (isString(layout.subtitle)) {\n subtitle.text = layout.subtitle\n } else {\n const filterTitle = getFilterText(layout.filters, metaData)\n\n switch (layout.type) {\n case VIS_TYPE_YEAR_OVER_YEAR_LINE:\n case VIS_TYPE_YEAR_OVER_YEAR_COLUMN:\n subtitle.text = getYearOverYearTitle(\n layout,\n metaData,\n Boolean(!dashboard)\n )\n break\n default:\n subtitle = getDefault(layout, dashboard, filterTitle)\n }\n }\n\n return subtitle\n ? Object.assign(\n {},\n dashboard ? DASHBOARD_SUBTITLE : {\n align: (getTextAlignOption(fontStyle[FONT_STYLE_OPTION_TEXT_ALIGN], FONT_STYLE_VISUALIZATION_SUBTITLE, layout.type)),\n style: {\n // DHIS2-578: dynamically truncate subtitle when it's taking more than 1 line\n color: fontStyle[FONT_STYLE_OPTION_TEXT_COLOR],\n fontSize: `${fontStyle[FONT_STYLE_OPTION_FONT_SIZE]}px`,\n fontWeight: fontStyle[FONT_STYLE_OPTION_BOLD] ? FONT_STYLE_OPTION_BOLD : 'normal',\n fontStyle: fontStyle[FONT_STYLE_OPTION_ITALIC] ? FONT_STYLE_OPTION_ITALIC : 'normal',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n },\n },\n subtitle\n )\n : subtitle\n}\n","\nimport { \n FONT_STYLE_OPTION_FONT_SIZE, \n FONT_STYLE_OPTION_TEXT_COLOR,\n FONT_STYLE_OPTION_BOLD ,\n FONT_STYLE_OPTION_ITALIC,\n FONT_STYLE_OPTION_TEXT_ALIGN,\n FONT_STYLE_LEGEND,\n} from '../../../../modules/fontStyle'\nimport { getTextAlignOption } from './getTextAlignOption'\n\nconst DASHBOARD_ITEM_STYLE = {\n fontSize: '11px',\n fontWeight: 500,\n}\n\nconst DASHBOARD_LEGEND = {\n symbolPadding: 3,\n itemDistance: 10,\n}\n\nfunction getItemStyle(fontStyle, dashboard) {\n return {\n itemStyle: Object.assign(\n {},\n {\n fontSize: '13px',\n fontWeight: 'normal',\n },\n dashboard ? DASHBOARD_ITEM_STYLE : {\n color: fontStyle[FONT_STYLE_OPTION_TEXT_COLOR],\n fontSize: `${fontStyle[FONT_STYLE_OPTION_FONT_SIZE]}px`,\n fontWeight: fontStyle[FONT_STYLE_OPTION_BOLD] ? FONT_STYLE_OPTION_BOLD : 'normal',\n fontStyle: fontStyle[FONT_STYLE_OPTION_ITALIC] ? FONT_STYLE_OPTION_ITALIC : 'normal'\n }\n ),\n }\n}\n\nfunction getLegend(fontStyle, dashboard, visType) {\n return Object.assign(\n {},\n {\n symbolWidth: 11,\n symbolHeight: 11,\n itemMarginBottom: 2,\n },\n dashboard ? DASHBOARD_LEGEND : {\n align: (getTextAlignOption(fontStyle[FONT_STYLE_OPTION_TEXT_ALIGN], FONT_STYLE_LEGEND, visType)),\n }\n )\n}\n\nexport default function(layout, dashboard) {\n const fontStyle = layout.fontStyle[FONT_STYLE_LEGEND]\n return layout.hideLegend\n ? {\n enabled: false,\n }\n : Object.assign({}, getLegend(fontStyle, dashboard, layout.type), getItemStyle(fontStyle, dashboard))\n}\n","const DEFAULT_PANE_SIZE = '100%'\n\nexport default function() {\n return {\n center: ['50%', '85%'],\n size: DEFAULT_PANE_SIZE,\n startAngle: -90,\n endAngle: 90,\n background: {\n backgroundColor: '#F1F1F1',\n innerRadius: '60%',\n outerRadius: '100%',\n shape: 'arc',\n },\n }\n}\n","import getGauge from './gauge'\nimport { VIS_TYPE_GAUGE } from '../../../../../modules/visTypes'\n\nexport default function(type) {\n switch (type) {\n case VIS_TYPE_GAUGE:\n return getGauge()\n default:\n return undefined\n }\n}\n","export default function() {\n return {\n style: {\n fontSize: '13px',\n fontWeight: 'normal',\n },\n }\n}\n","import { isTwoCategoryChartType } from '../../../../modules/visTypes'\n\nexport default function(series, layout) {\n if (isTwoCategoryChartType(layout.type) && layout.rows.length > 1) {\n return getTwoCategoryStackedData(series)\n } else {\n return getDefaultStackedData(series)\n }\n}\n\nfunction getDefaultStackedData(series, isZeroAsNull) {\n return series[0].data\n .map((value, index) => {\n return series.reduce((total, obj) => {\n return total + obj.data[index]\n }, 0)\n })\n .map(value => (isZeroAsNull && value === 0 ? null : value))\n}\n\nfunction getTwoCategoryStackedData(series) {\n return series[0].custom.data.map((groupObj, groupIndex) => {\n return groupObj.map((value, index) => {\n return series\n .filter(serieObj => !serieObj.custom.isTwoCategoryFakeSerie)\n .reduce((total, serieObj) => {\n return total + serieObj.custom.data[groupIndex][index]\n }, 0)\n })\n })\n}\n","import arrayPluck from 'd2-utilizr/lib/arrayPluck'\nimport arraySort from 'd2-utilizr/lib/arraySort'\nimport getStackedData from './getStackedData'\nimport { isTwoCategoryChartType } from '../../../../modules/visTypes'\nimport getTwoCategorySplitSerieData from './getTwoCategorySplitSerieData'\n\nconst sortOrderMap = new Map([\n [-1, 'ASC'],\n [1, 'DESC'],\n])\n\nfunction getIndexOrder(dataToBeSorted, layout) {\n const dataObjectsToBeSorted = dataToBeSorted.map((value, index) => ({\n index,\n value,\n }))\n\n const direction = sortOrderMap.get(layout.sortOrder)\n\n arraySort(dataObjectsToBeSorted, direction, 'value')\n\n return arrayPluck(dataObjectsToBeSorted, 'index')\n}\n\nfunction getTwoCategorySortedConfig(config, layout, stacked) {\n const series = config.series\n const sortedConfig = Object.assign({}, config)\n\n const stackedData = getStackedData(series, layout)\n const indexOrder = []\n\n // loop through serie groups\n sortedConfig.series = series.map((seriesObj, seriesIndex) => {\n if (seriesObj.custom.isTwoCategoryFakeSerie) {\n return seriesObj\n } else {\n seriesObj.custom.data = seriesObj.custom.data.map(\n (groupObj, groupIndex) => {\n // sorting index computed on 1st serie data\n if (seriesIndex === 0) {\n indexOrder[groupIndex] = getIndexOrder(\n stacked ? stackedData[groupIndex] : groupObj,\n layout\n )\n\n // reorder 2nd category labels only once\n // based on the 1st serie group ordering\n const groupCategoryLabels =\n config.xAxis[0].categories[groupIndex]\n\n sortedConfig.xAxis[0].categories[\n groupIndex\n ] = groupCategoryLabels.map(\n (value, index) =>\n groupCategoryLabels[\n indexOrder[groupIndex][index]\n ]\n )\n }\n\n return groupObj.map(\n (value, index) =>\n groupObj[indexOrder[groupIndex][index]]\n )\n }\n )\n\n seriesObj.data = getTwoCategorySplitSerieData(seriesObj.custom.data)\n\n return seriesObj\n }\n })\n\n return sortedConfig\n}\n\nfunction getDefaultSortedConfig(config, layout, stacked) {\n const categories = config.xAxis?.length && config.xAxis[0].categories\n const series = config.series\n const indexOrder = getIndexOrder(\n stacked ? getStackedData(series, layout) : series[0].data,\n layout\n )\n const sortedConfig = Object.assign({}, config)\n\n if (categories) {\n sortedConfig.xAxis[0].categories = indexOrder.map(\n index => categories[index]\n )\n }\n\n sortedConfig.series = series.map(seriesObj => ({\n ...seriesObj,\n data: seriesObj.data.map(\n (value, index) => seriesObj.data[indexOrder[index]]\n ),\n }))\n\n return sortedConfig\n}\n\nexport default function(config, layout, stacked) {\n if (isTwoCategoryChartType(layout.type) && layout.rows.length > 1) {\n return getTwoCategorySortedConfig(config, layout, stacked)\n } else {\n return getDefaultSortedConfig(config, layout, stacked)\n }\n}\n","import arrayContains from 'd2-utilizr/lib/arrayContains'\nimport arrayUnique from 'd2-utilizr/lib/arrayUnique'\nimport { isTwoCategoryChartType } from '../../../../modules/visTypes'\nimport getTwoCategorySplitSerieData from './getTwoCategorySplitSerieData'\n\nfunction arrayCleanUndefined(array) {\n return array.filter(item => item !== undefined)\n}\n\nfunction arrayNullsOnly(array) {\n return arrayContains(array, null) && arrayUnique(array).length === 1\n}\n\nfunction getEmptySeriesIndexes(series) {\n const emptyIndexes = []\n let seriesValues\n\n series[0].data.forEach((value, index) => {\n seriesValues = []\n\n series.forEach(seriesObj => {\n seriesValues.push(seriesObj.data[index])\n })\n\n if (arrayNullsOnly(seriesValues)) {\n emptyIndexes.push(index)\n }\n })\n\n return emptyIndexes\n}\n\nfunction getFirstLastValueIndexes(series) {\n let firstValueIndex = undefined\n let lastValueIndex = 0\n let data\n let i\n\n series.forEach(seriesObj => {\n // make a copy of the array so we can reverse it\n // without affecting the original\n data = seriesObj.data.slice()\n\n i = data.findIndex(value => value !== undefined && value !== null)\n\n if (i > -1) {\n firstValueIndex =\n firstValueIndex !== undefined ? Math.min(firstValueIndex, i) : i\n }\n\n i = data\n .reverse()\n .findIndex(value => value !== undefined && value !== null)\n\n if (i > -1) {\n lastValueIndex = Math.max(lastValueIndex, data.length - 1 - i)\n }\n })\n\n return { firstValueIndex, lastValueIndex }\n}\n\nfunction cleanData(\n data,\n emptySeriesIndexes,\n firstValueIndex,\n lastValueIndex,\n hideEmptyRowItems\n) {\n let cleanedData\n\n switch (hideEmptyRowItems) {\n case 'ALL':\n cleanedData = arrayCleanUndefined(\n data.map((value, index) =>\n arrayContains(emptySeriesIndexes, index) ? undefined : value\n )\n )\n break\n case 'BEFORE_FIRST':\n cleanedData = data.slice(firstValueIndex)\n break\n case 'AFTER_LAST':\n cleanedData = data.slice(0, lastValueIndex + 1)\n break\n case 'BEFORE_FIRST_AFTER_LAST':\n cleanedData = data.slice(firstValueIndex, lastValueIndex + 1)\n break\n default:\n cleanedData = data\n }\n\n return cleanedData\n}\n\nexport default function(config, layout) {\n if (isTwoCategoryChartType(layout.type) && layout.rows.length > 1) {\n return getTwoCategoryTrimmedConfig(config, layout)\n } else {\n return getDefaultTrimmedConfig(config, layout)\n }\n}\n\nfunction getEmptySeriesGroupIndexes(series) {\n const emptyGroupIndexes = []\n\n series[0].custom.data.forEach((groupObj, groupIndex) => {\n const seriesGroupValues = []\n\n groupObj.forEach((_, index) =>\n series.forEach(seriesObj =>\n seriesGroupValues.push(seriesObj.custom.data[groupIndex][index])\n )\n )\n\n if (arrayNullsOnly(seriesGroupValues)) {\n emptyGroupIndexes.push(groupIndex)\n }\n })\n\n return emptyGroupIndexes\n}\n\nfunction getFirstLastGroupWithValuesIndexes(series) {\n let firstGroupWithValuesIndex = undefined\n let lastGroupWithValuesIndex = 0\n\n series.forEach(seriesObj => {\n // make a copy of the groups array so we can reverse it\n // without affecting the original\n const groups = seriesObj.custom.data.slice()\n\n groups.forEach((groupObj, groupIndex) => {\n if (groupObj.some(value => value !== undefined && value !== null)) {\n firstGroupWithValuesIndex =\n firstGroupWithValuesIndex !== undefined\n ? Math.min(firstGroupWithValuesIndex, groupIndex)\n : groupIndex\n }\n })\n\n groups.reverse().forEach((groupObj, groupIndex) => {\n if (groupObj.some(value => value !== undefined && value !== null)) {\n lastGroupWithValuesIndex = Math.max(\n lastGroupWithValuesIndex,\n groups.length - 1 - groupIndex\n )\n }\n })\n })\n\n return { firstGroupWithValuesIndex, lastGroupWithValuesIndex }\n}\n\nfunction getTwoCategoryTrimmedConfig(config, layout) {\n const filteredSeries = config.series.filter(\n serieObj => !serieObj.custom.isTwoCategoryFakeSerie\n )\n const emptyGroupIndexes = getEmptySeriesGroupIndexes(filteredSeries)\n\n if (emptyGroupIndexes.length && config.xAxis && config.series) {\n const {\n firstGroupWithValuesIndex,\n lastGroupWithValuesIndex,\n } = getFirstLastGroupWithValuesIndexes(filteredSeries)\n\n const trimmedSeries = config.series.map(seriesObj => {\n if (seriesObj.custom.isTwoCategoryFakeSerie) {\n seriesObj.data = cleanData(\n seriesObj.data,\n emptyGroupIndexes,\n firstGroupWithValuesIndex,\n lastGroupWithValuesIndex,\n layout.hideEmptyRowItems\n )\n } else {\n seriesObj.custom.data = cleanData(\n seriesObj.custom.data,\n emptyGroupIndexes,\n firstGroupWithValuesIndex,\n lastGroupWithValuesIndex,\n layout.hideEmptyRowItems\n )\n\n seriesObj.data = getTwoCategorySplitSerieData(\n seriesObj.custom.data\n )\n }\n\n return seriesObj\n })\n\n const trimmedXAxis = config.xAxis.map(xAxis => {\n xAxis.categories = cleanData(\n xAxis.categories,\n emptyGroupIndexes,\n firstGroupWithValuesIndex,\n lastGroupWithValuesIndex,\n layout.hideEmptyRowItems\n )\n\n return xAxis\n })\n\n return Object.assign({}, config, {\n series: trimmedSeries,\n xAxis: trimmedXAxis,\n })\n } else {\n return config\n }\n}\n\nfunction getDefaultTrimmedConfig(config, layout) {\n const emptySeriesIndexes = getEmptySeriesIndexes(config.series)\n\n if (emptySeriesIndexes.length && config.xAxis && config.series) {\n const { firstValueIndex, lastValueIndex } = getFirstLastValueIndexes(\n config.series\n )\n const trimmedSeries = config.series.map(seriesObj => ({\n ...seriesObj,\n data: cleanData(\n seriesObj.data,\n emptySeriesIndexes,\n firstValueIndex,\n lastValueIndex,\n layout.hideEmptyRowItems\n ),\n }))\n\n const trimmedXAxis = [\n {\n ...config.xAxis,\n categories: cleanData(\n config.xAxis[0].categories,\n emptySeriesIndexes,\n firstValueIndex,\n lastValueIndex,\n layout.hideEmptyRowItems\n ),\n },\n ]\n\n return Object.assign({}, config, {\n series: trimmedSeries,\n xAxis: trimmedXAxis,\n })\n } else {\n return config\n }\n}\n","import arrayContains from 'd2-utilizr/lib/arrayContains'\nimport { rgb } from 'd3-color'\n\nimport { colorSets, COLOR_SET_PATTERNS } from '../../../util/colors/colorSets'\nimport getStackedData from './getStackedData'\nimport {\n VIS_TYPE_GAUGE,\n VIS_TYPE_PIE,\n isTwoCategoryChartType,\n} from '../../../../modules/visTypes'\n\nconst DEFAULT_TRENDLINE = {\n type: 'spline',\n name: 'Trend',\n dashStyle: 'solid',\n color: '#333',\n lineWidth: 1,\n marker: {\n enabled: false,\n symbol: 'circle',\n radius: 2,\n },\n zIndex: 1,\n}\n\nexport const isRegressionIneligible = type =>\n arrayContains([VIS_TYPE_GAUGE, VIS_TYPE_PIE], type)\n\nexport default function(layout, series, isStacked) {\n if (isTwoCategoryChartType(layout.type) && layout.rows.length > 1) {\n return getTwoCategoryTrendLines(layout, series, isStacked)\n } else {\n return getDefaultTrendLines(layout, series, isStacked)\n }\n}\n\nfunction getDefaultTrendLines(layout, series, isStacked) {\n const newSeries = []\n\n if (isStacked) {\n newSeries.push(\n ...series,\n Object.assign(\n {},\n getRegressionObj(\n getStackedData(series, layout),\n layout.regressionType\n )\n )\n )\n } else {\n series.forEach(seriesObj => {\n newSeries.push(\n seriesObj,\n Object.assign(\n {},\n getRegressionObj(seriesObj.data, layout.regressionType),\n {\n name: seriesObj.name + ' (trend)',\n color: getDarkerColor(seriesObj.color),\n }\n )\n )\n })\n }\n\n return newSeries\n}\n\nfunction getTwoCategoryTrendlineConfig(\n groupObj,\n groupIndex,\n groupRegressionObject,\n regressionType,\n trendlineId\n) {\n const trendlineConfig = getRegressionObj(groupObj, regressionType)\n\n groupRegressionObject.splice(\n groupIndex * groupObj.length,\n groupObj.length,\n ...trendlineConfig.data.map(point => point[1])\n )\n\n trendlineConfig.data = groupRegressionObject\n\n // link trendlines\n // so only 1 label in the legend is shown and all linked trendlines\n // can be toggled simultaneously\n if (groupIndex === 0) {\n trendlineConfig.id = trendlineId\n } else {\n trendlineConfig.linkedTo = trendlineId\n }\n\n return trendlineConfig\n}\n\nfunction getTwoCategoryTrendLines(layout, series, isStacked) {\n const newSeries = []\n\n if (isStacked) {\n newSeries.push(...series)\n\n const stackedData = getStackedData(series, layout)\n\n const groupRegressionTemplate = Array.from(\n { length: stackedData.flat().length },\n () => null\n )\n\n stackedData.forEach((groupObj, groupIndex) => {\n const trendlineConfig = getTwoCategoryTrendlineConfig(\n groupObj,\n groupIndex,\n groupRegressionTemplate.slice(),\n layout.regressionType,\n 'trendline-stacked'\n )\n\n newSeries.push(trendlineConfig)\n })\n } else {\n series.forEach(seriesObj => {\n const trendlineSerieId = `trendline-${seriesObj.id}`\n\n newSeries.push(seriesObj)\n\n if (!seriesObj.custom.isTwoCategoryFakeSerie) {\n const groupRegressionTemplate = Array.from(\n { length: seriesObj.custom.data.flat().length },\n () => null\n )\n\n seriesObj.custom.data.forEach((groupObj, groupIndex) => {\n const trendlineConfig = getTwoCategoryTrendlineConfig(\n groupObj,\n groupIndex,\n groupRegressionTemplate.slice(),\n layout.regressionType,\n trendlineSerieId\n )\n\n newSeries.push(\n Object.assign({}, trendlineConfig, {\n name: seriesObj.name + ' (trend)',\n color: getDarkerColor(seriesObj.color),\n })\n )\n })\n }\n })\n }\n\n return newSeries\n}\n\nfunction getDarkerColor(color) {\n // For patterns, color is an object containing patternIndex.\n // patternIndex can be 0, thus the need to check for the presence of the key in the object.\n // The actual color code needs to be extracted for the the Highcharts pattern definition.\n if (Object.prototype.hasOwnProperty.call(color, 'patternIndex')) {\n const colorSetPatterns = colorSets[COLOR_SET_PATTERNS].patterns\n color =\n colorSetPatterns[color.patternIndex].color ||\n DEFAULT_TRENDLINE.color\n }\n\n return rgb(color)\n .darker(0.5)\n .toString()\n}\n\nfunction getRegressionData(data) {\n return data.map((value, index) => {\n return [index, value]\n })\n}\n\nfunction getRegressionObj(data, regressionType) {\n // LINEAR:\n // - decimalPlaces (default = 2)\n // LOESS:\n // - loessSmooth (default = 25)\n // POLYNOMIAL:\n // - order (default = 2)\n // - extrapolate (default = 0)\n // - decimalPlaces (default = 2)\n\n let regression\n const regressionTypeOptions = {}\n const regressionData = getRegressionData(data)\n\n switch (regressionType) {\n case 'POLYNOMIAL':\n // polynomial(data, order, extrapolate)\n // min 2 data points for this regression to work\n if (regressionData.length > 1) {\n regression = polynomial(regressionData)\n } else {\n regression = { points: [] }\n }\n\n break\n case 'LOESS':\n // loess(data, smoothing)\n regression = loess(regressionData, 0.25)\n break\n case 'LINEAR':\n default:\n // linear(data, decimalPlaces)\n regression = linear(regressionData)\n regressionTypeOptions.type = 'line'\n break\n }\n\n return Object.assign({}, DEFAULT_TRENDLINE, regressionTypeOptions, {\n data: regression.points,\n })\n}\n\n// Code extracted from https://github.com/Tom-Alexander/regression-js/\nfunction gaussianElimination(a, o) {\n let maxrow = 0,\n tmp = 0\n const n = a.length - 1,\n x = new Array(o)\n\n for (let i = 0; i < n; i++) {\n maxrow = i\n\n for (let j = i + 1; j < n; j++) {\n if (Math.abs(a[i][j]) > Math.abs(a[i][maxrow])) {\n maxrow = j\n }\n }\n\n for (let k = i; k < n + 1; k++) {\n tmp = a[k][i]\n a[k][i] = a[k][maxrow]\n a[k][maxrow] = tmp\n }\n\n for (let j = i + 1; j < n; j++) {\n for (let k = n; k >= i; k--) {\n a[k][j] -= (a[k][i] * a[i][j]) / a[i][i]\n }\n }\n }\n\n for (let j = n - 1; j >= 0; j--) {\n tmp = 0\n\n for (let k = j + 1; k < n; k++) {\n tmp += a[k][j] * x[k]\n }\n\n x[j] = (a[n][j] - tmp) / a[j][j]\n }\n\n return x\n}\n\n// Code extracted from https://github.com/Tom-Alexander/regression-js/\n// Human readable formulas:\n//\n// N * Σ(XY) - Σ(X)\n// intercept = ---------------------\n// N * Σ(X^2) - Σ(X)^2\n//\n// correlation = N * Σ(XY) - Σ(X) * Σ (Y) / √ ( N * Σ(X^2) - Σ(X) ) * ( N * Σ(Y^2) - Σ(Y)^2 ) ) )\nfunction linear(data, decimalPlaces = 2) {\n const sum = [0, 0, 0, 0, 0],\n results = []\n let N = data.length\n\n for (let n = 0, len = data.length; n < len; n++) {\n if (data[n]['x'] != null) {\n data[n][0] = data[n].x\n data[n][1] = data[n].y\n }\n if (data[n][1] != null) {\n sum[0] += data[n][0] // Σ(X)\n sum[1] += data[n][1] // Σ(Y)\n sum[2] += data[n][0] * data[n][0] // Σ(X^2)\n sum[3] += data[n][0] * data[n][1] // Σ(XY)\n sum[4] += data[n][1] * data[n][1] // Σ(Y^2)\n } else {\n N -= 1\n }\n }\n\n const gradient =\n (N * sum[3] - sum[0] * sum[1]) / (N * sum[2] - sum[0] * sum[0])\n const intercept = sum[1] / N - (gradient * sum[0]) / N\n // let correlation = (N * sum[3] - sum[0] * sum[1]) / Math.sqrt((N * sum[2] - sum[0] * sum[0]) * (N * sum[4] - sum[1] * sum[1]));\n\n for (let i = 0, len = data.length; i < len; i++) {\n let coorY = data[i][0] * gradient + intercept\n\n if (decimalPlaces) {\n coorY = parseFloat(coorY.toFixed(decimalPlaces))\n }\n\n const coordinate = [data[i][0], coorY]\n results.push(coordinate)\n }\n\n results.sort((a, b) => {\n if (a[0] > b[0]) {\n return 1\n }\n if (a[0] < b[0]) {\n return -1\n }\n\n return 0\n })\n\n const string =\n 'y = ' +\n Math.round(gradient * 100) / 100 +\n 'x + ' +\n Math.round(intercept * 100) / 100\n\n return {\n equation: [gradient, intercept],\n points: results,\n string: string,\n }\n}\n\n// Code extracted from https://github.com/Tom-Alexander/regression-js/\nfunction polynomial(data, order = 2, extrapolate = 0, decimalPlaces = 2) {\n const lhs = [],\n rhs = [],\n results = [],\n k = order + 1\n let a = 0,\n b = 0\n\n for (let i = 0; i < k; i++) {\n for (let l = 0, len = data.length; l < len; l++) {\n if (data[l].x != null) {\n data[l][0] = data[l].x\n data[l][1] = data[l].y\n }\n if (data[l][1] != null) {\n a += Math.pow(data[l][0], i) * data[l][1]\n }\n }\n\n lhs.push(a)\n\n a = 0\n\n const c = []\n\n for (let j = 0; j < k; j++) {\n for (let l = 0, len = data.length; l < len; l++) {\n if (data[l][1]) {\n b += Math.pow(data[l][0], i + j)\n }\n }\n\n c.push(b)\n\n b = 0\n }\n\n rhs.push(c)\n }\n\n rhs.push(lhs)\n\n const equation = gaussianElimination(rhs, k)\n\n const resultLength = data.length + extrapolate\n const step = data[data.length - 1][0] - data[data.length - 2][0]\n\n for (let i = 0, len = resultLength; i < len; i++) {\n let answer = 0,\n x = 0\n\n if (typeof data[i] !== 'undefined') {\n x = data[i][0]\n } else {\n x = data[data.length - 1][0] + (i - data.length) * step\n }\n\n for (let w = 0; w < equation.length; w++) {\n answer += equation[w] * Math.pow(x, w)\n\n if (decimalPlaces) {\n answer = parseFloat(answer.toFixed(decimalPlaces))\n }\n }\n\n results.push([x, answer])\n }\n\n results.sort((a, b) => {\n if (a[0] > b[0]) {\n return 1\n }\n if (a[0] < b[0]) {\n return -1\n }\n\n return 0\n })\n\n let string = 'y = '\n\n for (let i = equation.length - 1; i >= 0; i--) {\n if (i > 1) {\n string += Math.round(equation[i] * 100) / 100 + 'x^' + i + ' + '\n } else if (i === 1) {\n string += Math.round(equation[i] * 100) / 100 + 'x + '\n } else {\n string += Math.round(equation[i] * 100) / 100\n }\n }\n\n return {\n equation: equation,\n points: results,\n string: string,\n }\n}\n\n// @author: Ignacio Vazquez\n// Based on\n// - http://commons.apache.org/proper/commons-math/download_math.cgi LoesInterpolator.java\n// - https://gist.github.com/avibryant/1151823\nfunction loess(data, bandwidth = 0.25) {\n const xval = data.map(pair => {\n return pair[0]\n })\n\n const distinctX = array_unique(xval)\n\n if (2 / distinctX.length > bandwidth) {\n bandwidth = Math.min(2 / distinctX.length, 1)\n }\n\n const yval = data.map(pair => {\n return pair[1]\n })\n\n function array_unique(values) {\n const o = {},\n l = values.length,\n r = []\n\n for (let i = 0; i < l; i += 1) {\n o[values[i]] = values[i]\n }\n\n for (const i in o) {\n r.push(o[i])\n }\n\n return r\n }\n\n function tricube(x) {\n const tmp = 1 - x * x * x\n\n return tmp * tmp * tmp\n }\n\n const res = []\n\n let left = 0\n let right = Math.floor(bandwidth * xval.length) - 1\n\n for (const i in xval) {\n const x = xval[i]\n\n if (i > 0) {\n if (\n right < xval.length - 1 &&\n xval[right + 1] - xval[i] < xval[i] - xval[left]\n ) {\n left++\n right++\n }\n }\n\n let edge\n\n if (xval[i] - xval[left] > xval[right] - xval[i]) {\n edge = left\n } else {\n edge = right\n }\n\n const denom = Math.abs(1.0 / (xval[edge] - x))\n let sumWeights = 0\n let sumX = 0,\n sumXSquared = 0,\n sumY = 0,\n sumXY = 0\n\n let k = left\n\n while (k <= right) {\n const xk = xval[k]\n const yk = yval[k]\n let dist\n\n if (k < i) {\n dist = x - xk\n } else {\n dist = xk - x\n }\n\n const w = tricube(dist * denom)\n const xkw = xk * w\n\n sumWeights += w\n sumX += xkw\n sumXSquared += xk * xkw\n sumY += yk * w\n sumXY += yk * xkw\n k++\n }\n\n const meanX = sumX / sumWeights\n\n const meanY = sumY / sumWeights\n const meanXY = sumXY / sumWeights\n const meanXSquared = sumXSquared / sumWeights\n let beta\n\n if (meanXSquared === meanX * meanX) {\n beta = 0\n } else {\n beta = (meanXY - meanX * meanY) / (meanXSquared - meanX * meanX)\n }\n\n const alpha = meanY - beta * meanX\n res[i] = beta * x + alpha\n }\n\n return {\n equation: '',\n points: xval.map((x, i) => {\n return [x, res[i]]\n }),\n string: '',\n }\n}\n","export const theme1 = '#a9be3b|#558cc0|#d34957|#ff9f3a|#968f8f|#b7409f|#ffda64|#4fbdae|#b78040|#676767|#6a33cf|#4a7833|#454545'.split(\n '|'\n)\n\nexport const defaultMultiAxisTheme1 = {\n 0: { startColor: '#08306b', endColor: '#c6dbef', mainColor: '#4292c6' },\n 1: { startColor: '#67000d', endColor: '#fcbba1', mainColor: '#cb181d' },\n 2: { startColor: '#00441b', endColor: '#c7e9c0', mainColor: '#41ab5d' },\n 3: { startColor: '#3f007d', endColor: '#dadaeb', mainColor: '#6c66b8' },\n}\n","import objectClean from 'd2-utilizr/lib/objectClean'\nimport isString from 'd2-utilizr/lib/isString'\nimport getChart from './chart'\nimport getXAxis from './xAxis'\nimport getYAxis from './yAxis'\nimport getSeries from './series'\nimport getTitle from './title'\nimport getSubtitle from './subtitle'\nimport getLegend from './legend'\nimport getPane from './pane'\nimport getNoData from './noData'\nimport { isStacked, isDualAxisType } from '../../../../modules/visTypes'\nimport getSortedConfig from './getSortedConfig'\nimport getTrimmedConfig from './getTrimmedConfig'\nimport addTrendLines, { isRegressionIneligible } from './addTrendLines'\nimport { defaultMultiAxisTheme1 } from '../../../util/colors/themes'\nimport { hasCustomAxes } from '../../../../modules/axis'\nimport { axisHasRelativeItems } from '../../../../modules/layout/axisHasRelativeItems'\n\nconst getTransformedLayout = layout => ({\n ...layout,\n type: String(layout.type).toUpperCase(),\n rangeAxisLabel: layout.rangeAxisLabel || layout.rangeAxisTitle,\n domainAxisLabel: layout.domainAxisLabel || layout.domainAxisTitle,\n targetLineLabel: layout.targetLineLabel || layout.targetLineTitle,\n baseLineLabel: layout.baseLineLabel || layout.baseLineTitle,\n})\n\nconst getTransformedExtraOptions = extraOptions => ({\n ...extraOptions,\n multiAxisTheme: extraOptions.multiAxisTheme || defaultMultiAxisTheme1,\n})\n\nexport default function({ store, layout, el, extraConfig, extraOptions }) {\n const _layout = getTransformedLayout(layout)\n const _extraOptions = getTransformedExtraOptions(extraOptions)\n\n const stacked = isStacked(_layout.type)\n\n const series = store.generateData({\n type: _layout.type,\n seriesId:\n _layout.columns && _layout.columns.length\n ? _layout.columns[0].dimension\n : null,\n categoryIds:\n _layout.rows && _layout.rows.length\n ? _layout.rows.map(row => row.dimension)\n : null,\n })\n\n let config = {\n // type etc\n chart: getChart(_layout, el, _extraOptions.dashboard),\n\n // title\n title: getTitle(\n _layout,\n store.data[0].metaData,\n _extraOptions.dashboard\n ),\n\n // subtitle\n subtitle: getSubtitle(\n series,\n _layout,\n store.data[0].metaData,\n _extraOptions.dashboard\n ),\n\n // x-axis\n xAxis: getXAxis(store, _layout, _extraOptions),\n\n // y-axis\n yAxis: getYAxis(_layout, series, _extraOptions),\n\n // series\n series: getSeries(\n series.slice(),\n store,\n _layout,\n stacked,\n _extraOptions\n ),\n\n // legend\n legend: getLegend(_layout, _extraOptions.dashboard),\n\n // pane\n pane: getPane(_layout.type),\n\n // no data\n lang: {\n noData: _extraOptions.noData.text,\n },\n noData: getNoData(),\n\n // credits\n credits: {\n enabled: false,\n },\n\n // exporting\n exporting: {\n // disable exporting context menu\n enabled: false,\n },\n }\n\n // hide empty categories\n if (_layout.hideEmptyRowItems !== 'NONE') {\n config = getTrimmedConfig(config, _layout)\n }\n\n // sorting\n if (_layout.sortOrder) {\n config = getSortedConfig(config, _layout, stacked)\n }\n\n // DHIS2-9010 prevent trend lines from render when using multiple axes\n const filteredSeries = layout.series?.filter(layoutSeriesItem =>\n series.some(\n seriesItem => seriesItem.id === layoutSeriesItem.dimensionItem\n )\n )\n\n // DHIS2-1243 add trend lines after sorting\n // trend line on pie and gauge does not make sense\n if (\n isString(_layout.regressionType) &&\n _layout.regressionType !== 'NONE' &&\n !isRegressionIneligible(_layout.type) &&\n ((!(isDualAxisType(layout.type) && hasCustomAxes(filteredSeries)) || axisHasRelativeItems(layout.columns)))\n ) {\n config.series = addTrendLines(_layout, config.series, stacked)\n }\n\n // flatten category groups\n if (config.xAxis?.length) {\n config.xAxis = config.xAxis.map(xAxis => ({\n ...xAxis,\n categories: xAxis.categories.flat(),\n }))\n }\n\n // force apply extra config\n Object.assign(config, extraConfig)\n\n return objectClean(config)\n}\n","import getFilterText from '../../../../util/getFilterText'\n\nexport default function(layout, metaData) {\n if (layout.columns) {\n const firstItem = layout.columns[0].items[0]\n\n const column = Object.assign({}, layout.columns[0], {\n items: [firstItem],\n })\n\n return getFilterText([column], metaData)\n }\n\n return ''\n}\n","import getFilterText from '../../../../util/getFilterText'\nimport { VIS_TYPE_SINGLE_VALUE } from '../../../../../modules/visTypes'\nimport getSingleValueTitle from './singleValue'\n\nfunction getDefault(layout, metaData, dashboard) {\n return layout.filters && !dashboard\n ? getFilterText(layout.filters, metaData)\n : ''\n}\n\nexport default function(layout, metaData, dashboard) {\n if (layout.hideTitle) {\n return ''\n }\n\n if (typeof layout.title === 'string' && layout.title.length) {\n return layout.title\n } else {\n let title\n switch (layout.type) {\n case VIS_TYPE_SINGLE_VALUE:\n title = getSingleValueTitle(layout, metaData)\n\n break\n default:\n title = getDefault(layout, metaData, dashboard)\n }\n return title\n }\n}\n","import getFilterText from '../../../../util/getFilterText'\n\nexport default function(layout, metaData) {\n return layout.filters ? getFilterText(layout.filters, metaData) : ''\n}\n","import getFilterText from '../../../../util/getFilterText'\nimport getSingleValueTitle from './singleValue'\nimport { VIS_TYPE_SINGLE_VALUE } from '../../../../../modules/visTypes'\n\nfunction getDefault(layout, dashboard, metaData) {\n if (dashboard || typeof layout.title === 'string') {\n return getFilterText(layout.filters, metaData)\n }\n\n return ''\n}\n\nexport default function(layout, metaData, dashboard) {\n if (layout.hideSubtitle) {\n return ''\n }\n\n if (typeof layout.subtitle === 'string' && layout.subtitle.length) {\n return layout.subtitle\n } else {\n let subtitle\n switch (layout.type) {\n case VIS_TYPE_SINGLE_VALUE:\n subtitle = getSingleValueTitle(layout, metaData)\n\n break\n default:\n subtitle = getDefault(layout, dashboard, metaData)\n }\n\n return subtitle\n }\n}\n","import { renderValue } from '../../../../../modules/pivotTable/renderValue'\nimport { VALUE_TYPE_TEXT } from '../../../../../modules/pivotTable/pivotTableConstants'\n\nexport default function(value, layout, metaData, extraOptions) {\n const valueType = metaData.items[metaData.dimensions.dx[0]].valueType\n return (\n renderValue(value, valueType || VALUE_TYPE_TEXT, {\n digitGroupSeparator: layout.digitGroupSeparator,\n skipRounding: layout.skipRounding,\n }) || extraOptions.noData.text\n )\n}\n","import getTitle from './title'\nimport getSubtitle from './subtitle'\nimport getValue from './value'\n\nexport default function({ store, layout, extraOptions }) {\n const data = store.generateData({\n type: layout.type,\n seriesId:\n layout.columns && layout.columns.length\n ? layout.columns[0].dimension\n : null,\n categoryId:\n layout.rows && layout.rows.length ? layout.rows[0].dimension : null,\n })\n\n const config = {\n value: data[0] === undefined ? extraOptions.noData.text : data[0],\n formattedValue: getValue(\n data[0],\n layout,\n store.data[0].metaData,\n extraOptions\n ),\n title: getTitle(layout, store.data[0].metaData, extraOptions.dashboard),\n subtitle: getSubtitle(\n layout,\n store.data[0].metaData,\n extraOptions.dashboard\n ),\n }\n\n return config\n}\n","import dhis_highcharts from './dhis_highcharts'\nimport dhis_dhis from './dhis_dhis'\n\nexport default {\n dhis_highcharts,\n dhis_dhis,\n}\n","import H from 'highcharts'\nimport HM from 'highcharts/highcharts-more'\nimport HSG from 'highcharts/modules/solid-gauge'\nimport HNDTD from 'highcharts/modules/no-data-to-display'\nimport HE from 'highcharts/modules/exporting'\nimport HPF from 'highcharts/modules/pattern-fill'\n\n// apply\nHM(H)\nHSG(H)\nHNDTD(H)\nHE(H)\nHPF(H)\n\nexport default function(config, el) {\n if (config) {\n config.chart.renderTo = el || config.chart.renderTo\n\n return new H.Chart(config)\n }\n}\n","import { colors } from '@dhis2/ui'\n\nimport { getColorByValueFromLegendSet } from '../../../../modules/legends'\nimport {\n FONT_STYLE_VISUALIZATION_TITLE,\n FONT_STYLE_VISUALIZATION_SUBTITLE,\n FONT_STYLE_OPTION_FONT_SIZE,\n FONT_STYLE_OPTION_TEXT_COLOR,\n FONT_STYLE_OPTION_TEXT_ALIGN,\n FONT_STYLE_OPTION_ITALIC,\n FONT_STYLE_OPTION_BOLD,\n TEXT_ALIGN_LEFT,\n TEXT_ALIGN_RIGHT,\n TEXT_ALIGN_CENTER,\n} from '../../../../modules/fontStyle'\n\nconst svgNS = 'http://www.w3.org/2000/svg'\n\nconst generateValueSVG = (value, formattedValue, legendSet, y) => {\n const textSize = 300\n const defaultFillColor = colors.grey900\n\n const svgValue = document.createElementNS(svgNS, 'svg')\n svgValue.setAttribute('xmlns', svgNS)\n svgValue.setAttribute(\n 'viewBox',\n `0 -${textSize + 50} ${textSize *\n 0.75 *\n formattedValue.length} ${textSize + 200}`\n )\n\n if (y) {\n svgValue.setAttribute('y', y)\n }\n\n const fillColor = legendSet\n ? getColorByValueFromLegendSet(legendSet, value)\n : defaultFillColor\n\n const text = document.createElementNS(svgNS, 'text')\n text.setAttribute('text-anchor', 'middle')\n text.setAttribute('font-size', textSize)\n text.setAttribute('font-weight', '300')\n text.setAttribute('letter-spacing', '-5')\n text.setAttribute('x', '50%')\n text.setAttribute('fill', fillColor)\n text.appendChild(document.createTextNode(formattedValue))\n\n svgValue.appendChild(text)\n\n return svgValue\n}\n\nconst generateDashboardItem = (config, legendSet) => {\n const container = document.createElement('div')\n container.setAttribute(\n 'style',\n 'display: flex; flex-direction: column; align-items: center; justify-content: center; width: 100%; height: 100%'\n )\n\n const titleStyle = 'font-size: 12px; color: #666;'\n\n const title = document.createElement('span')\n title.setAttribute('style', titleStyle)\n if (config.title) {\n title.appendChild(document.createTextNode(config.title))\n\n container.appendChild(title)\n }\n\n const subtitle = document.createElement('span')\n subtitle.setAttribute('style', titleStyle + ' margin-top: 4px')\n if (config.subtitle) {\n subtitle.appendChild(document.createTextNode(config.subtitle))\n\n container.appendChild(subtitle)\n }\n\n container.appendChild(\n generateValueSVG(config.value, config.formattedValue, legendSet)\n )\n\n return container\n}\n\nconst getTextAnchorFromTextAlign = textAlign => {\n switch (textAlign) {\n default:\n case TEXT_ALIGN_LEFT:\n return 'start'\n case TEXT_ALIGN_CENTER:\n return 'middle'\n case TEXT_ALIGN_RIGHT:\n return 'end'\n }\n}\n\nconst getXFromTextAlign = textAlign => {\n switch (textAlign) {\n default:\n case TEXT_ALIGN_LEFT:\n return '1%'\n case TEXT_ALIGN_CENTER:\n return '50%'\n case TEXT_ALIGN_RIGHT:\n return '99%'\n }\n}\n\nconst generateDVItem = (config, legendSet, parentEl, fontStyle) => {\n const parentElBBox = parentEl.getBoundingClientRect()\n\n const width = parentElBBox.width\n const height = parentElBBox.height\n\n const svgNS = 'http://www.w3.org/2000/svg'\n\n const svg = document.createElementNS(svgNS, 'svg')\n svg.setAttribute('xmlns', svgNS)\n svg.setAttribute('viewBox', `0 0 ${width} ${height}`)\n svg.setAttribute('width', '100%')\n svg.setAttribute('height', '100%')\n\n const title = document.createElementNS(svgNS, 'text')\n const titleFontStyle = fontStyle[FONT_STYLE_VISUALIZATION_TITLE]\n title.setAttribute(\n 'x',\n getXFromTextAlign(titleFontStyle[FONT_STYLE_OPTION_TEXT_ALIGN])\n )\n title.setAttribute('y', 28)\n title.setAttribute(\n 'text-anchor',\n getTextAnchorFromTextAlign(titleFontStyle[FONT_STYLE_OPTION_TEXT_ALIGN])\n )\n title.setAttribute(\n 'font-size',\n `${titleFontStyle[FONT_STYLE_OPTION_FONT_SIZE]}px`\n )\n title.setAttribute(\n 'font-weight',\n titleFontStyle[FONT_STYLE_OPTION_BOLD]\n ? FONT_STYLE_OPTION_BOLD\n : 'normal'\n )\n title.setAttribute(\n 'font-style',\n titleFontStyle[FONT_STYLE_OPTION_ITALIC]\n ? FONT_STYLE_OPTION_ITALIC\n : 'normal'\n )\n title.setAttribute('fill', titleFontStyle[FONT_STYLE_OPTION_TEXT_COLOR])\n\n if (config.title) {\n title.appendChild(document.createTextNode(config.title))\n\n svg.appendChild(title)\n }\n\n const subtitleFontStyle = fontStyle[FONT_STYLE_VISUALIZATION_SUBTITLE]\n const subtitle = document.createElementNS(svgNS, 'text')\n subtitle.setAttribute(\n 'x',\n getXFromTextAlign(subtitleFontStyle[FONT_STYLE_OPTION_TEXT_ALIGN])\n )\n subtitle.setAttribute('y', 28)\n subtitle.setAttribute('dy', 22)\n subtitle.setAttribute(\n 'text-anchor',\n getTextAnchorFromTextAlign(\n subtitleFontStyle[FONT_STYLE_OPTION_TEXT_ALIGN]\n )\n )\n subtitle.setAttribute(\n 'font-size',\n `${subtitleFontStyle[FONT_STYLE_OPTION_FONT_SIZE]}px`\n )\n subtitle.setAttribute(\n 'font-weight',\n subtitleFontStyle[FONT_STYLE_OPTION_BOLD]\n ? FONT_STYLE_OPTION_BOLD\n : 'normal'\n )\n subtitle.setAttribute(\n 'font-style',\n subtitleFontStyle[FONT_STYLE_OPTION_ITALIC]\n ? FONT_STYLE_OPTION_ITALIC\n : 'normal'\n )\n subtitle.setAttribute(\n 'fill',\n subtitleFontStyle[FONT_STYLE_OPTION_TEXT_COLOR]\n )\n if (config.subtitle) {\n subtitle.appendChild(document.createTextNode(config.subtitle))\n\n svg.appendChild(subtitle)\n }\n\n svg.appendChild(\n generateValueSVG(config.value, config.formattedValue, legendSet, 20)\n )\n\n return svg\n}\n\nexport default function(\n config,\n parentEl,\n { dashboard, legendSets, fontStyle }\n) {\n const legendSet = legendSets[0]\n parentEl.style.overflow = 'hidden'\n parentEl.style.display = 'flex'\n parentEl.style.justifyContent = 'center'\n\n return dashboard\n ? generateDashboardItem(config, legendSet)\n : generateDVItem(config, legendSet, parentEl, fontStyle)\n}\n","import getSingleValueGenerator from './singleValue'\nimport { VIS_TYPE_SINGLE_VALUE } from '../../../../modules/visTypes'\n\nexport default function(config, parentEl, extraOptions) {\n if (config) {\n const node =\n typeof parentEl === 'object'\n ? parentEl\n : typeof parentEl === 'string'\n ? document.querySelector(parentEl)\n : null\n\n if (node) {\n if (node.lastChild) {\n node.removeChild(node.lastChild)\n }\n\n let content\n\n switch (config.type) {\n case VIS_TYPE_SINGLE_VALUE:\n default:\n content = getSingleValueGenerator(\n config,\n node,\n extraOptions,\n )\n break\n }\n\n node.appendChild(content)\n\n return node.innerHTML\n }\n }\n}\n","import highcharts from './highcharts'\nimport dhis from './dhis'\n\nexport default {\n highcharts,\n dhis,\n}\n","import i18n from '@dhis2/d2-i18n'\nimport validators from './validators'\nimport adapters from './adapters'\nimport generators from './generators'\nimport { theme1 } from '../util/colors'\n\nexport default function({\n store,\n layout,\n el,\n inputFormat = 'dhis',\n outputFormat = 'highcharts',\n extraLayout,\n extraOptions,\n onError,\n onWarning,\n}) {\n const _validator = validators[inputFormat] || validators.noValidation\n const _adapter = adapters[inputFormat + '_' + outputFormat]\n const _generator = generators[outputFormat]\n\n if (_validator === validators.noValidation) {\n onWarning(\n `No validation implementation for config input format \"${inputFormat}\"`\n )\n }\n\n if (!_adapter) {\n onError(\n `No config tranformation implementation for format \"${inputFormat}\" to format \"${outputFormat}\"`\n )\n }\n\n if (!_generator) {\n onError(`No visualization implementation for format ${outputFormat}`)\n }\n\n this.getConfig = () => {\n const DEFAULT_EXTRA_OPTIONS = {\n colors: theme1,\n noData: {\n text: i18n.t('No data'),\n },\n }\n\n return _adapter({\n layout: _validator({ layout, onError, onWarning }),\n extraOptions: Object.assign(\n {},\n DEFAULT_EXTRA_OPTIONS,\n extraOptions\n ),\n store,\n el,\n extraLayout,\n })\n }\n\n this.createVisualization = () => \n _generator(this.getConfig(), el, {\n ...extraOptions,\n fontStyle: layout.fontStyle\n })\n}\n","import isArray from 'd2-utilizr/lib/isArray'\nimport 'core-js/fn/array/find-index'\n\nimport Store from './store'\nimport Config from './config'\nimport { mergeFontStyleWithDefault } from '../modules/fontStyle'\n\nconst defaultError = error => {\n throw new Error(error)\n}\n\nconst defaultWarning = warning => {\n console.log(warning)\n}\n\nfunction createVisualization(\n data,\n layout,\n el,\n extraOptions,\n error = defaultError,\n warning = defaultWarning,\n outputFormat\n) {\n const _data = isArray(data) ? data : [data]\n const store = new Store({ data: _data, error, warning, outputFormat })\n const config = new Config({\n store,\n layout: {\n ...layout,\n fontStyle: mergeFontStyleWithDefault(\n layout.fontStyle\n ),\n },\n el,\n outputFormat,\n extraOptions,\n error,\n warning,\n })\n\n return {\n store,\n config,\n visualization: config.createVisualization(),\n }\n}\n\nexport { Store, Config, createVisualization }\n\nexport default createVisualization\n"],"names":["namespace","i18n","addResources","arTranslations","ar_EGTranslations","ar_IQTranslations","ckbTranslations","daTranslations","enTranslations","esTranslations","frTranslations","idTranslations","kmTranslations","loTranslations","myTranslations","nbTranslations","prsTranslations","psTranslations","ptTranslations","pt_BRTranslations","ruTranslations","svTranslations","tetTranslations","tgTranslations","ukTranslations","urTranslations","uz_CyrlTranslations","viTranslations","zhTranslations","zh_CNTranslations","ItemIcon","backgroundColor","propTypes","PropTypes","string","colors","white","theme","secondary800","onClickWrapper","id","index","onClick","event","isCtrlPressed","metaKey","ctrlKey","isShiftPressed","shiftKey","Item","name","highlighted","rest","cx","grey500","defualtProps","bool","isRequired","number","func","grey700","ArrowButton","iconType","toggler","lastClickedIndex","highlightedIds","items","ids","newIndex","minIndex","getMinIndex","maxIndex","getMaxIndex","mergeIds","newArr","updateArray","orderedIds","filter","item","includes","length","slice","concat","idIndex","findIndex","highlightedId","UnselectedItems","Component","constructor","props","onSelect","state","setState","map","i","dataDimId","displayName","toLowerCase","filterText","filterTextContains","renderListItem","newState","dataDim","onDoubleClickItem","toggleHighlight","throttle","node","scrolElRef","current","bottom","scrollHeight","scrollTop","clientHeight","requestMoreItems","listItems","filterItems","onSelectAllClick","t","AssignButton","onSelectClick","React","createRef","arrayOf","shape","defaultProps","DeselectIconButton","fill","iconStyle","height","width","e","stopPropagation","secondary600","secondary200","ghost","active","onRemoveItem","reorderList","highlightedItemIds","destinationIndex","sourceIndex","draggableId","isMultiDrag","list","Array","from","indexedItemsToMove","sortBy","highlightedItemId","idx","indexOf","highlightedAboveDestination","newDestinationIndex","forEach","indexed","splice","grey300","grey900","Subtitle","InfoBox","message","fontSize","color","grey600","ItemsList","innerRef","children","CLONE_INDEX","SelectedItems","draggingId","onDeselect","start","selected","find","itemId","destination","source","newList","onReorder","isActive","provided","snapshot","isDraggedItem","isDragging","Boolean","itemText","onDeselectOne","draggableProps","dragHandleProps","cloneId","push","clone","itemList","getItemListWithClone","renderCloneItem","infoBoxMessage","onDragStart","onDragEnd","droppableProps","placeholder","onDeselectAll","UnAssignButton","onDeselectHighlighted","array","ItemSelector","render","unselected","filterZone","object","dialogId","REPORTING_RATE","REPORTING_RATE_ON_TIME","ACTUAL_REPORTS","ACTUAL_REPORTS_ON_TIME","EXPECTED_REPORTS","DATA_SETS_CONSTANTS","getName","CHART_AGGREGATE_AGGREGATABLE_TYPES","ALL_ID","INDICATORS","DATA_ELEMENTS","DATA_SETS","EVENT_DATA_ITEMS","PROGRAM_INDICATORS","TOTALS","DETAIL","getProgramText","getSelectProgramText","dataTypes","getGroupLabel","defaultGroup","groupDetail","default","augmentAlternatives","alternatives","groupId","getReportingRates","getPlaceholder","defaultGroupId","dataType","defaultGroupDetail","DEFAULT_DATATYPE_ID","contents","groupSetId","dataSets","reportingRate","dataSet","concatReportingRate","reportingRateIndex","DataTypes","currentDataType","onChange","ref","Object","values","type","getOptions","Detail","currentValue","options","entries","option","Groups","detailValue","groups","onDetailChange","onGroupChange","optionItems","Filter","text","onClear","value","FilterField","onFilterTextChange","onClearFilter","onError","error","console","log","selectFromResponse","response","entity","selectorFn","request","d2","paramString","url","Api","getApi","get","then","catch","requestWithPaging","page","paging","dimensionItems","nextPage","pager","apiFetchDimensions","nameProp","fields","order","params","apiFetchRecommendedIds","dxIds","ouIds","dimensions","join","Promise","resolve","itemsByDimensionQuery","resource","searchTerm","filters","apiFetchItemsByDimension","dataEngine","dimensionId","itemsByDimensionData","query","itemsByDimensions","variables","formatResponse","apiFetchGroups","dataSetGroups","apiFetchAlternatives","args","queryParams","fetchIndicators","fetchDataElementOperands","fetchDataElements","fetchDataSets","getEventDataItems","fetchProgramIndicators","idField","textFilter","fetchProgramDataElements","program","fetchTrackedEntityAttributes","r","isArray","programTrackedEntityAttributes","a","trackedEntityAttribute","dataElementsObj","attributes","all","filterInvalidTypes","valueType","programFilter","DataIcon","PeriodIcon","OrgUnitIcon","AssignedCategoriesIcon","DIMENSION_ID_DATA","DIMENSION_ID_PERIOD","DIMENSION_ID_ORGUNIT","DIMENSION_ID_ASSIGNED_CATEGORIES","DIMENSION_PROP_NO_ITEMS","getFixedDimensions","iconName","icon","getDynamicDimensions","getPredefinedDimensions","filterOutPredefinedDimensions","dimensionIds","keys","getPredefinedDimensionProp","propName","getDimensionById","FIRST_PAGE","DEFAULT_ALTERNATIVES","DataDimension","indicators","dataElements","dataElementOperands","eventDataItems","programIndicators","itemsCopy","dataTypeGroups","displayNameProp","assign","updateAlternatives","currentFilter","updateGroups","concatItems","augmentFn","di","selectedDimensions","debounce","debouncedUpdateAlternatives","selectedIds","itemsToAdd","itemIdsToRemove","itemIds","onDataTypeChange","getUnselectedItems","selectItems","deselectItems","reorderItems","componentDidMount","componentDidUpdate","prevProps","prevItems","currentItems","isEqual","Function","prototype","DAILY","WEEKLY","BIWEEKLY","WEEKLYWED","WEEKLYTHU","WEEKLYSAT","WEEKLYSUN","MONTHLY","BIMONTHLY","QUARTERLY","SIXMONTHLY","SIXMONTHLYAPR","YEARLY","FYNOV","FYOCT","FYJUL","FYAPR","PERIOD_TYPE_REGEX","getMonthName","key","monthNames","getDailyPeriodType","formatYyyyMmDd","fnFilter","config","periods","offset","parseInt","isFilter","filterFuturePeriods","isReverse","reversePeriods","year","Date","now","getFullYear","date","period","startDate","endDate","iso","replace","setDate","getDate","reverse","getWeeklyPeriodType","weekObj","getEpiWeekStartDay","startDayOfWeek","jan4","jan4DayOfWeek","getDay","dayDiff","startDay","week","shortName","weekNumber","getBiWeeklyPeriodType","day","biWeek","biWeekNumber","getMonthlyPeriodType","formatIso","y","m","String","getMonth","monthName","getBiMonthlyPeriodType","monthStart","monthEnd","fullYear","getQuarterlyPeriodType","quarter","getSixMonthlyPeriodType","getSixMonthlyAprilPeriodType","getYearlyPeriodType","setMonth","dateString","toString","getFinancialOctoberPeriodType","setYear","yearStart","yearEnd","getFinancialNovemberPeriodType","getFinancialJulyPeriodType","getFinancialAprilPeriodType","d","getPeriods","getFixedPeriodsOptionsById","getFixedPeriodsOptions","getYearOffsetFromNow","yearStr","parsePeriodCode","code","allowedTypes","periodTypes","undefined","match","some","spacers","dp8","FixedPeriodFilter","allowedPeriodTypes","currentPeriodType","currentYear","onSelectPeriodType","onSelectYear","onlyAllowedTypeIsSelected","DAYS","WEEKS","BIWEEKS","MONTHS","BIMONTHS","QUARTERS","SIXMONTHS","FINACIALYEARS","YEARS","getDaysPeriodType","getWeeksPeriodType","getBiWeeksPeriodType","getMonthsPeriodType","getBiMonthsPeriodType","getQuartersPeriodType","getSixMonthsPeriodType","getFinancialYearsPeriodType","getYearsPeriodType","getRelativePeriodsOptionsById","getRelativePeriodsOptions","getRelativePeriodIds","flat","RelativePeriodFilter","onSelectFilter","dp12","dp24","dp4","grey200","secondary100","secondary900","secondary700","TransferOption","disabled","label","onDoubleClick","TRANSFER_OPTIONS_WIDTH","TRANSFER_SELECTED_WIDTH","TRANSFER_HEIGHT","defaultRelativePeriodType","defaultFixedPeriodType","defaultFixedPeriodYear","fixedPeriodConfig","PeriodTransfer","allPeriods","selectedPeriods","isRelative","relativeFilter","periodType","fixedFilter","Number","onIsRelativeClick","onSelectFixedPeriods","formattedItems","renderLeftHeader","renderEmptySelection","renderRightHeader","rightFooter","initialSelectedPeriods","PeriodDimension","selectPeriods","FixedPeriodSelect","getUpdatedOptions","periodId","getDerivedStateFromProps","getPeriodById","dataTest","className","onSelectPeriod","apiFetchOrganisationUnits","displayNameProperty","models","organisationUnits","level","userDataViewFallback","apiFetchOrganisationUnitGroups","endPoint","organisationUnitGroups","apiFetchOrganisationUnitLevels","organisationUnitLevels","LEVEL_ID_PREFIX","GROUP_ID_PREFIX","hasGroupPrefix","substr","hasLevelPrefix","stripLevelPrefix","stripGroupPrefix","removePrefix","ouIdHelper","freeze","addLevelPrefix","addGroupPrefix","defaultState","root","roots","ouLevels","ouGroups","showOrgUnitsTree","OrgUnitDimension","userOrgUnits","ou","levelIds","target","ouItems","levelOu","groupIds","groupOu","rootLevel","toArray","orgUnit","path","checked","userOrgUnitIds","orgUnits","reduce","obj","getUserOrgUnitsFromIds","group","onLevelChange","onDeselectAllClick","handleUserOrgUnitClick","handleOrgUnitClick","handleMultipleOrgUnitsSelect","loadOrgUnitTree","loadOrgUnitGroups","loadOrgUnitLevels","previousId","currentId","hideOrgUnitsTree","setTimeout","useDebounce","delay","debouncedValue","setDebouncedValue","useState","useEffect","handler","clearTimeout","LeftHeader","setFilter","EmptySelection","RightHeader","SourceEmptyPlaceholder","loading","noItemsMessage","initialSelected","onFetch","setSelected","debouncedFilter","fetchItems","result","newOptions","useCallback","newSelected","newSelectedWithLabel","onEndReached","GenericIcon","exact","DynamicDimension","selectedItems","useDataEngine","onSelectItems","selectedItem","styles","display","outline","DimensionLabel","isDeactivated","onLabelClick","onKeyPress","toolTip","boxShadow","borderRadius","position","top","padding","recommendedIcon","secondary300","marginLeft","cursor","RecommendedIcon","anchorEl","currentTarget","TooltipOnHover","showTooltip","isRecommended","onMouseOver","onMouseExit","MoreHorizontalIcon","style","OptionsButton","DynamicDimensionIcon","labelWrapper","userSelect","wordBreak","textDeactivated","minHeight","marginTop","marginBottom","alignItems","fontWeight","fixedDimensionIcon","paddingLeft","paddingBottom","dynamicDimensionIcon","paddingRight","iconWrapper","flexDirection","lockIcon","optionsWrapper","minWidth","left","alignSelf","optionsButton","border","background","DimensionItem","mouseOver","onOptionsClick","Icon","isSelected","isLocked","getDimensionIcon","Label","getDimensionType","itemStyle","optionsRef","container","flex","wrapper","overflow","margin","header","textTransform","letterSpacing","section","DimensionList","dimension","disabledDimension","recommendedDimension","lockedDimension","isDisabled","onDimensionClick","onDimensionOptionsClick","onDimensionDragStart","nameContainsFilterText","renderItem","classes","fixedDimensions","getDimensionItemsByFilter","fixedDim","nonPredefinedDimensions","predefDim","withStyles","divContainer","grey050","textField","grey400","DimensionsPanel","AXIS","defaultValue","isValid","axis","AXIS_ID_COLUMNS","AXIS_ID_ROWS","AXIS_ID_FILTERS","DEFAULT_AXIS_IDS","VIS_TYPE_COLUMN","VIS_TYPE_STACKED_COLUMN","VIS_TYPE_BAR","VIS_TYPE_STACKED_BAR","VIS_TYPE_LINE","VIS_TYPE_AREA","VIS_TYPE_STACKED_AREA","VIS_TYPE_PIE","VIS_TYPE_RADAR","VIS_TYPE_GAUGE","VIS_TYPE_BUBBLE","VIS_TYPE_YEAR_OVER_YEAR_LINE","VIS_TYPE_YEAR_OVER_YEAR_COLUMN","VIS_TYPE_SINGLE_VALUE","VIS_TYPE_PIVOT_TABLE","visTypeDisplayNames","visTypeDescriptions","visTypeIcons","PivotTableIcon","BarIcon","StackedBarIcon","ColumnIcon","StackedColumnIcon","LineIcon","AreaIcon","StackedAreaIcon","PieIcon","RadarIcon","GaugeIcon","YearOverYearLineIcon","YearOverYearColumnIcon","SingleValueIcon","getDisplayNameByVisType","visType","Error","stackedTypes","yearOverYearTypes","dualAxisTypes","twoCategoryChartTypes","verticalTypes","defaultVisType","isStacked","isYearOverYear","isDualAxisType","isSingleValue","isTwoCategoryChartType","isVerticalType","RULE_PROP_AVAILABLE_AXES","RULE_PROP_MAX_DIMS_PER_AXIS","RULE_PROP_MIN_DIMS_PER_AXIS","RULE_PROP_MAX_ITEMS_PER_AXIS","RULE_PROP_DISALLOWED_DIMS","RULE_PROP_LOCKED_DIMS","defaultRules","pieRules","radarRules","singleValueRules","yearOverYearRules","pivotTableRules","visTypeToRules","getRulesByVisType","rules","getAvailableAxesByVisType","getMaxNumberOfDimsPerAxisByVisType","getMinNumberOfDimsPerAxisByVisType","getMaxNumberOfItemsPerAxisByVisType","getDisallowedDimsByVisType","getLockedDimsByVisType","testResourceRules","Set","getAxisMaxNumberOfItemsByVisType","axisId","getAxisMaxNumberOfDimsByVisType","getAxisMinNumberOfDimsByVisType","getAxisPerLockedDimByVisType","getAllLockedDimIdsByVisType","hasAxisTooManyItemsByVisType","numberOfItems","maxNumberOfItemsPerAxis","isDimensionLockedByVisType","isAxisFullByVisType","axisDimensionsCount","canDimensionBeAddedToAxisByVisType","axisIsFull","transferableDimension","getTransferableDimensionPerAxisByVisType","lockedDimsByVisType","lockedDimIdsByAxis","dimId","pop","LAYOUT_TYPE_DEFAULT","LAYOUT_TYPE_PIE","LAYOUT_TYPE_SINGLE_VALUE","LAYOUT_TYPE_YEAR_OVER_YEAR","LAYOUT_TYPE_PIVOT_TABLE","getAxisNamesByLayoutType","layoutType","getAxisNameByLayoutType","getAxisName","hasCustomAxes","series","visTypeToLayoutType","getLayoutTypeByVisType","getAxisItemLabel","axisName","isDimensionInLayout","getRemoveMenuItem","getDividerItem","getUnavailableLabel","visualizationType","DimensionMenu","currentAxisId","numberOfDimensionItems","assignedCategoriesItemHandler","isAssignedCategoriesInLayout","axisItemHandler","removeItemHandler","onClose","menuItems","availableAxisIds","getAvailableAxes","applicableAxisIds","assignedCategoriesAvailableDestinations","assignedCategoriesItemLabel","requireItems","parseValue","valueString","parsedValue","parseFloat","isNaN","SORT_ORDER_ASCENDING","SORT_ORDER_DESCENDING","CELL_TYPE_VALUE","CELL_TYPE_SUBTOTAL","CELL_TYPE_TOTAL","AGGREGATE_TYPE_SUM","AGGREGATE_TYPE_AVERAGE","AGGREGATE_TYPE_NA","VALUE_TYPE_TEXT","VALUE_TYPE_NUMBER","NUMBER_TYPE_VALUE","NUMBER_TYPE_ROW_PERCENTAGE","NUMBER_TYPE_COLUMN_PERCENTAGE","FONT_SIZE_OPTION_SMALL","FONT_SIZE_SMALL","FONT_SIZE_OPTION_NORMAL","FONT_SIZE_NORMAL","FONT_SIZE_OPTION_LARGE","FONT_SIZE_LARGE","DISPLAY_DENSITY_OPTION_COMPACT","DISPLAY_DENSITY_PADDING_COMPACT","DISPLAY_DENSITY_OPTION_NORMAL","DISPLAY_DENSITY_PADDING_NORMAL","DISPLAY_DENSITY_OPTION_COMFORTABLE","DISPLAY_DENSITY_PADDING_COMFORTABLE","CLIPPED_CELL_MAX_WIDTH","COLUMN_PARTITION_SIZE_PX","DIMENSION_TYPE_DATA_ELEMENT_GROUP_SET","DIMENSION_TYPE_DATA","DIMENSION_TYPE_PERIOD","DIMENSION_TYPE_ORGUNIT","trimTrailingZeros","stringValue","defaultDecimalSeparator","separateDigitGroups","decimalSeparator","isNegative","integer","remainder","split","unshift","substring","trimmedRemainder","getSeparator","visualization","digitGroupSeparator","toFixedPrecisionString","skipRounding","precision","toFixed","renderValue","numberType","digitGroups","canvas","getContext","document","createElement","ctx","font","measureText","textMetrics","dataFields","defaultOptions","hideEmptyColumns","hideEmptyRows","showRowTotals","showColumnTotals","showRowSubtotals","showColumnSubtotals","isDxDimension","dimensionItem","dimensionType","countFromDisaggregates","count","x","addSize","reversedList","lastLevel","size","listByDimension","sortByHierarchy","sort","b","hierarchy","localeCompare","buildDimensionLookup","metadata","headers","rows","row","meta","columns","column","allByDimension","headerDimensions","rowHeaders","_","columnHeaders","dataHeaders","out","field","ouDimension","showHierarchy","ouNameHierarchy","uid","lookup","dataRow","dimensionLookup","doColumnSubtotals","doRowSubtotals","headerIndex","Math","floor","applyTotalAggregationType","totalAggregationType","numerator","denominator","multiplier","divisor","overrideTotalAggregationType","PivotTableEngine","data","legendSets","sets","set","rawData","colTotals","rowTotals","colSubTotals","rowSubTotals","title","hideTitle","subtitle","hideSubtitle","metaData","singularRow","firstColumnIsSortable","columnDepth","showDimensionLabels","rowDepth","buildMatrix","getRaw","cellType","getRawCellType","dxDimension","getRawCellDxDimension","getRawRowHeader","getRawColumnHeader","peId","dimensionItemType","ouId","empty","rawValue","renderedValue","percentageTotals","mappedRow","rowMap","mappedColumn","columnMap","isRowTotal","doRowTotals","dataWidth","isColumnTotal","doColumnTotals","dataHeight","isRowSubtotal","isColumnSubtotal","getCellType","getDimensionLabel","rowLevel","columnLevel","lastRowLevel","lastColumnLevel","getCellDxDimension","cellValue","legendSet","dxRowIndex","dim","dxColumnIndex","rowIsEmpty","columnIsEmpty","columnWidths","times","itemIndex","getColumnHeader","getRowHeader","getDependantTotalCells","rowSubtotalSize","rowSubtotal","ceil","rowSubtotalColumnTotal","rawDataHeight","columnSubtotalSize","columnSubtotal","columnSubtotalRowTotal","rawDataWidth","combinedSubtotal","rowTotal","columnTotal","combinedTotal","addCellValueToTotals","pos","totals","totalItem","totalCount","totalCell","currentAggType","previousAggType","currentValueType","previousValueType","percentageTotal","finalizeTotal","addCellForAdaptiveClipping","finalizeTotals","n","max","finalizeAdaptiveClipping","dataPixelWidth","rowHeaderPixelWidth","nextPartitionPx","columnPartitions","getColumnWidth","contentWidth","min","cellPadding","headerSize","isSortable","scrollIconBuffer","colWidth","pre","maxWidth","columnWidth","rowHeaderWidths","rawColumn","resetRowMap","resetColumnMap","displayDensity","getColumnType","warn","rowA","rowB","valueA","valueB","clearSort","initialState","useParentSize","elementRef","renderCounter","initialSize","setSize","el","parentElement","onResize","clientWidth","observer","ResizeObserver","observe","disconnect","useScrollPosition","containerRef","debounceWait","scrollPosition","setScrollPosition","onScroll","scroll","scrollLeft","currentRef","addEventListener","removeEventListener","clipAxis","step","headerCount","post","indices","clipPartitionedAxis","partitionSize","partitions","axisMap","widthMap","viewportWidth","viewportPosition","totalWidth","partition","end","useTableClipping","engine","useMemo","PivotTableEngineContext","createContext","Provider","usePivotTableEngine","useContext","table","cell","sortIcon","PivotTableContainer","forwardRef","PivotTableClippedAxis","axisClippingResult","EmptyComponent","ItemComponent","headerStacksAreEqual","limit","getHeaderForDisplay","dimensionLevel","getHeader","showHeader","span","currentHeader","includesHierarchy","PivotTableHeaderCell","PivotTableCell","isColumnHeader","maxHeight","classnames","oneOfType","SortIconAscending","SortIconDescending","SortIconIdle","PivotTableSortIcon","SortIcon","PivotTableColumnHeaderCell","clippingResult","onSortByColumn","PivotTableDimensionLabelCell","colCount","rowCount","colSpan","rowSpan","PivotTableEmptyCell","PivotTableColumnHeaders","PivotTableTitleRow","containerWidth","columnCount","setPosition","textAlign","DIMENSION","isObject","DIMENSION_PROP_ID","required","prop","isString","DIMENSION_PROP_ITEMS","DIMENSION_PROPS","dimensionIs","dimensionIsEmpty","dimensionIsValid","requiredProps","every","dimensionGetItems","getOuLevelAndGroupText","hasOuLevel","hasOuGroup","filterFragments","getLevelAndGroupText","isLevel","getNameFromMetadata","dynamicOuItems","lastItem","dynamicOuNames","allDynamicOuNames","lastOuName","staticOuNames","ouLevelAndGroupText","titleFragments","l","sectionParts","PivotTableTitleRows","getFilterText","PivotTableHead","PivotTableEmptyRow","PivotTableRowHeaderCell","rowIndex","calculateColorBrightness","rgb","round","isHex","charAt","hexToRgb","hex","exec","isColorBright","LEGEND_DISPLAY_STRATEGY_BY_DATA_ITEM","LEGEND_DISPLAY_STRATEGY_FIXED","LEGEND_DISPLAY_STYLE_FILL","LEGEND_DISPLAY_STYLE_TEXT","getColorByValueFromLegendSet","legend","legends","startValue","endValue","getLegendSet","legendSetId","legendDisplayStrategy","buildStyleObject","legendColor","legendDisplayStyle","applyLegendSet","PivotTableValueCell","onToggleContextualMenu","cellRef","useRef","cellContent","isClickable","legendStyle","PivotTableRow","columnIndex","PivotTableBody","useSortableColumns","setSortBy","PivotTable","axisGetDimension","axisHasDimension","layoutReplaceDimension","layout","newAxisDimensions","layoutGetAllAxes","layoutGetAllDimensions","allDimensions","layoutGetDimension","isOuLevelIntId","isInteger","replaceNumericOuLevelWithUid","ouIntId","ouUid","convertOuLevelsToUids","hasNumericOuLevels","replaceNumericOuLevel","updatedOuItems","hasRelativeItems","LAYOUT","dimensionGetId","layoutFilterDimensions","idArray","filteredLayout","axisGetAllItems","allItems","layoutGetAllItems","ITEM","ITEM_PROP_ID","ITEM_PROPS","itemGetId","layoutGetAllItemIds","axisGetDimensionIds","layoutGetAxisIdDimensionIdsObject","layoutGetDimensionItems","dimensionGetItemIds","layoutGetDimensionIdItemIdsObject","axisHasDataDimension","layoutHasDataDimension","layoutHasDimension","layoutHasDynamicDimension","fixedIds","axisHasPeriodDimension","layoutHasPeriodDimension","axisHasOuDimension","axisIsEmpty","dimensionCreate","itemIsValid","MODULE","getMessage","validateHeader","validateRowValue","rowValue","validateRow","headersLength","warning","noValidation","dhis","acc","categories","idValueMap","serieData","categoryItemId","serieItemId","getTwoCategorySplitSerieData","splitSerieData","groupData","groupIndex","point","seriesItemId","groupedData","category1ItemId","category2ItemId","custom","xAxis","showInLegend","dataLabels","enabled","isTwoCategoryFakeSerie","VALUE_ID","arrayNullsOnly","arrayContains","arrayUnique","getHeaderIdIndexMap","Map","getPrefixedId","isPrefix","getIdValueMap","seriesHeader","categoryHeaders","valueIndex","categoryHeader","getDefault","getSeriesFunction","categoryIds","getTwoCategory","getPie","getGauge","getYearOnYear","seriesId","seriesFunction","res","headerIdIndexMap","categoryId","seriesIds","getValueFunction","getSingleValue","valueFunction","seriesIndex","categoryIndex","dhis_highcharts","dhis_dhis","inputFormat","outputFormat","initialSeriesId","initialCategoryId","_validator","validators","_adapter","adapters","generateData","polar","DEFAULT_CHART","spacingTop","fontFamily","DASHBOARD_CHART","spacingRight","spacingBottom","spacingLeft","getEvents","events","load","legendSymbol","attr","translateY","legendItem","getBBox","dashboard","getType","renderTo","FONT_STYLE_VISUALIZATION_TITLE","FONT_STYLE_VISUALIZATION_SUBTITLE","FONT_STYLE_HORIZONTAL_AXIS_TITLE","FONT_STYLE_VERTICAL_AXIS_TITLE","FONT_STYLE_LEGEND","FONT_STYLE_SERIES_AXIS_LABELS","FONT_STYLE_CATEGORY_AXIS_LABELS","FONT_STYLE_TARGET_LINE_LABEL","FONT_STYLE_BASE_LINE_LABEL","FONT_STYLE_OPTION_FONT","FONT_STYLE_OPTION_FONT_SIZE","FONT_STYLE_OPTION_BOLD","FONT_STYLE_OPTION_ITALIC","FONT_STYLE_OPTION_UNDERLINE","FONT_STYLE_OPTION_TEXT_COLOR","FONT_STYLE_OPTION_TEXT_ALIGN","TEXT_ALIGN_LEFT","TEXT_ALIGN_CENTER","TEXT_ALIGN_RIGHT","TIER1","TIER2","getFontSizeOptions","fontStyleKey","fontSizes","tier","getTextAlignOptions","axisTitleAlignOptions","verticalAlignOptions","defaultAlignOptions","defaultFont","defaultFontStyle","regular","small","grey800","mergeFontStyleWithDefault","fontStyle","deleteFontStyleOption","inputFontStyle","getTextAlignOption","getTitleStyle","titleType","align","dimensionItemsIds","store","extraOptions","xAxisLabels","pe","labelFontStyle","objectClean","getAxisTitle","domainAxisLabel","labels","axis1Categories","getCategories","axis2Categories","getLabelsStyle","gridLineWidth","opposite","noAxis","getRadar","DEFAULT_MAX_VALUE","DEFAULT_TARGET_LINE_LABEL","DEFAULT_BASE_LINE_LABEL","getLabelOffsetFromTextAlign","getPlotLine","fontStyleType","verticalAlign","zIndex","getLabels","plotLines","arrayClean","isNumber","baseLineValue","baseLineLabel","targetLineValue","targetLineLabel","fillColor","rangeAxisMinValue","rangeAxisMaxValue","lineWidth","minorTickInterval","tickLength","tickAmount","tickPositioner","minColor","maxColor","CUSTOM_AXES_DIMENSION_ITEM","CUSTOM_AXES_AXIS","getIdAxisMap","customAxes","getFullIdAxisMap","idAxisMap","axisItem","seriesItem","s","getAxisIdsMap","fullIdAxisMap","AXIS_ID_PREFIX","getAxisStringFromId","dimensionHasRelativeItems","axisHasRelativeItems","DEFAULT_MIN_VALUE","DEFAULT_GRIDLINE_COLOR","getPlotLineStyle","getPlotLineLabelStyle","getMinValue","dataValues","isNumeric","getMaxValue","getSteps","rangeAxisSteps","getLineLabelStyle","isVertical","alignKey","alignValue","offsetKey","offsetValue","getTargetLine","plotLineStyle","plotLineLabelStyle","getBaseLine","getFormatter","rangeAxisDecimals","formatter","getMultipleAxes","axes","axisObjects","mainColor","filteredSeries","layoutSeriesItem","axisIdsMap","multiAxisTheme","rangeAxisLabel","gridLineColor","reversedStacks","yAxis","getDefaultCumulativeData","decimals","cumulativeValues","seriesObj","accumulator","numberDecimals","getTwoCategoryCumulativeData","groupObj","cumulativeGroupValues","colorByPoint","allowPointSelect","percentage","tooltip","headerFormat","pointFormat","DEFAULT_FONT_SIZE","enableMouseTracking","borderWidth","generateColors","steps","stepFactor","color1","convertHexToRGB","color2","factor","rgbArray","part","convertRGBToHex","val","HPF","H","COLOR_SET_DEFAULT","COLOR_SET_BRIGHT","COLOR_SET_DARK","COLOR_SET_GRAY","COLOR_SET_COLOR_BLIND","COLOR_SET_PATTERNS","colorSets","patterns","DEFAULT_ANIMATION_DURATION","HIGHCHARTS_TYPE_COLUMN","HIGHCHARTS_TYPE_BAR","HIGHCHARTS_TYPE_PERCENT","HIGHCHARTS_TYPE_NORMAL","INCREASED_Z_INDEX","epiCurveTypes","getAnimation","fallback","getColor","getPatternIndex","getIndexColorPatternMap","colorSet","patternIndex","getIdColorMap","colorsByAxis","numberOfIds","startColor","endColor","indexColorPatternMap","idColorMap","showValues","showData","percentStackedValues","stacking","connectNulls","matchedObject","noSpaceBetweenColumns","pointPadding","groupPadding","yearlySeries","getCumulativeData","animation","duration","DASHBOARD_TITLE_STYLE","whiteSpace","textOverflow","getYearOverYearTitle","DASHBOARD_SUBTITLE","textShadow","filterTitle","DASHBOARD_ITEM_STYLE","DASHBOARD_LEGEND","symbolPadding","itemDistance","getItemStyle","getLegend","symbolWidth","symbolHeight","itemMarginBottom","hideLegend","DEFAULT_PANE_SIZE","center","startAngle","endAngle","innerRadius","outerRadius","getTwoCategoryStackedData","getDefaultStackedData","isZeroAsNull","total","serieObj","sortOrderMap","getIndexOrder","dataToBeSorted","dataObjectsToBeSorted","direction","sortOrder","arraySort","arrayPluck","getTwoCategorySortedConfig","stacked","sortedConfig","stackedData","getStackedData","indexOrder","groupCategoryLabels","getDefaultSortedConfig","arrayCleanUndefined","getEmptySeriesIndexes","emptyIndexes","seriesValues","getFirstLastValueIndexes","firstValueIndex","lastValueIndex","cleanData","emptySeriesIndexes","hideEmptyRowItems","cleanedData","getTwoCategoryTrimmedConfig","getDefaultTrimmedConfig","getEmptySeriesGroupIndexes","emptyGroupIndexes","seriesGroupValues","getFirstLastGroupWithValuesIndexes","firstGroupWithValuesIndex","lastGroupWithValuesIndex","trimmedSeries","trimmedXAxis","DEFAULT_TRENDLINE","dashStyle","marker","symbol","radius","isRegressionIneligible","getTwoCategoryTrendLines","getDefaultTrendLines","newSeries","getRegressionObj","regressionType","getDarkerColor","getTwoCategoryTrendlineConfig","groupRegressionObject","trendlineId","trendlineConfig","linkedTo","groupRegressionTemplate","trendlineSerieId","hasOwnProperty","call","colorSetPatterns","darker","getRegressionData","regression","regressionTypeOptions","regressionData","polynomial","points","loess","linear","gaussianElimination","o","maxrow","tmp","j","abs","k","decimalPlaces","sum","results","N","len","gradient","intercept","coorY","coordinate","equation","extrapolate","lhs","rhs","pow","c","resultLength","answer","w","bandwidth","xval","pair","distinctX","array_unique","yval","tricube","right","edge","denom","sumWeights","sumX","sumXSquared","sumY","sumXY","xk","yk","dist","xkw","meanX","meanY","meanXY","meanXSquared","beta","alpha","theme1","defaultMultiAxisTheme1","getTransformedLayout","toUpperCase","rangeAxisTitle","domainAxisTitle","targetLineTitle","baseLineTitle","getTransformedExtraOptions","extraConfig","_layout","_extraOptions","chart","getChart","getTitle","getSubtitle","getXAxis","getYAxis","getSeries","pane","getPane","lang","noData","getNoData","credits","exporting","getTrimmedConfig","getSortedConfig","addTrendLines","firstItem","getSingleValueTitle","dx","formattedValue","getValue","HM","HSG","HNDTD","HE","Chart","svgNS","generateValueSVG","textSize","defaultFillColor","svgValue","createElementNS","setAttribute","appendChild","createTextNode","generateDashboardItem","titleStyle","getTextAnchorFromTextAlign","getXFromTextAlign","generateDVItem","parentEl","parentElBBox","getBoundingClientRect","svg","titleFontStyle","subtitleFontStyle","justifyContent","querySelector","lastChild","removeChild","content","getSingleValueGenerator","innerHTML","highcharts","extraLayout","onWarning","_generator","generators","getConfig","DEFAULT_EXTRA_OPTIONS","createVisualization","defaultError","defaultWarning","_data","Store","Config"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}
|
package/build/stats.html
CHANGED
|
@@ -3346,7 +3346,7 @@ main {
|
|
|
3346
3346
|
</script>
|
|
3347
3347
|
<script>
|
|
3348
3348
|
const chartParameters = {};
|
|
3349
|
-
const data = {"version":1,"tree":{"name":"lib.js","children":[{"name":"locales","children":[{"name":"ar","children":[{"name":"translations.json","uid":"1c96-0"}]},{"name":"ar_EG","children":[{"name":"translations.json","uid":"1c96-1"}]},{"name":"ar_IQ","children":[{"name":"translations.json","uid":"1c96-2"}]},{"name":"ckb","children":[{"name":"translations.json","uid":"1c96-3"}]},{"name":"da","children":[{"name":"translations.json","uid":"1c96-4"}]},{"name":"en","children":[{"name":"translations.json","uid":"1c96-5"}]},{"name":"es","children":[{"name":"translations.json","uid":"1c96-6"}]},{"name":"fr","children":[{"name":"translations.json","uid":"1c96-7"}]},{"name":"id","children":[{"name":"translations.json","uid":"1c96-8"}]},{"name":"km","children":[{"name":"translations.json","uid":"1c96-9"}]},{"name":"lo","children":[{"name":"translations.json","uid":"1c96-10"}]},{"name":"my","children":[{"name":"translations.json","uid":"1c96-11"}]},{"name":"nb","children":[{"name":"translations.json","uid":"1c96-12"}]},{"name":"prs","children":[{"name":"translations.json","uid":"1c96-13"}]},{"name":"ps","children":[{"name":"translations.json","uid":"1c96-14"}]},{"name":"pt","children":[{"name":"translations.json","uid":"1c96-15"}]},{"name":"pt_BR","children":[{"name":"translations.json","uid":"1c96-16"}]},{"name":"ru","children":[{"name":"translations.json","uid":"1c96-17"}]},{"name":"sv","children":[{"name":"translations.json","uid":"1c96-18"}]},{"name":"tet","children":[{"name":"translations.json","uid":"1c96-19"}]},{"name":"tg","children":[{"name":"translations.json","uid":"1c96-20"}]},{"name":"uk","children":[{"name":"translations.json","uid":"1c96-21"}]},{"name":"ur","children":[{"name":"translations.json","uid":"1c96-22"}]},{"name":"uz_Cyrl","children":[{"name":"translations.json","uid":"1c96-23"}]},{"name":"vi","children":[{"name":"translations.json","uid":"1c96-24"}]},{"name":"zh","children":[{"name":"translations.json","uid":"1c96-25"}]},{"name":"zh_CN","children":[{"name":"translations.json","uid":"1c96-26"}]},{"name":"index.js","uid":"1c96-27"}]},{"name":"components","children":[{"name":"ItemSelector","children":[{"name":"widgets","children":[{"name":"ItemIcon.js","uid":"1c96-29"},{"name":"styles","children":[{"name":"UnselectedItem.style.js","uid":"1c96-30"},{"name":"ArrowButton.style.js","uid":"1c96-32"},{"name":"DeselectIconButton.style.js","uid":"1c96-37"},{"name":"SelectedItem.style.js","uid":"1c96-39"}]},{"name":"UnselectedItem.js","uid":"1c96-31"},{"name":"ArrowButton.js","uid":"1c96-33"},{"name":"DeselectIconButton.js","uid":"1c96-38"},{"name":"SelectedItem.js","uid":"1c96-40"}]},{"name":"modules","children":[{"name":"toggler.js","uid":"1c96-34"},{"name":"reorderList.js","uid":"1c96-41"}]},{"name":"styles","children":[{"name":"UnselectedItems.style.js","uid":"1c96-35"},{"name":"SelectedItems.style.js","uid":"1c96-42"},{"name":"ItemSelector.style.js","uid":"1c96-44"}]},{"name":"UnselectedItems.js","uid":"1c96-36"},{"name":"SelectedItems.js","uid":"1c96-43"},{"name":"ItemSelector.js","uid":"1c96-45"}]},{"name":"DataDimension","children":[{"name":"styles","children":[{"name":"DataTypesSelector.style.js","uid":"1c96-48"},{"name":"Detail.style.js","uid":"1c96-50"},{"name":"Groups.style.js","uid":"1c96-52"}]},{"name":"DataTypesSelector.js","uid":"1c96-49"},{"name":"Detail.js","uid":"1c96-51"},{"name":"Groups.js","uid":"1c96-53"},{"name":"DataDimension.js","uid":"1c96-64"}]},{"name":"Filter","children":[{"name":"Filter.js","uid":"1c96-54"}]},{"name":"styles","children":[{"name":"FilterField.style.js","uid":"1c96-55"},{"name":"DimensionSelector.style.js","uid":"1c96-70"},{"name":"TransferOption.style.js","uid":"1c96-71"}]},{"name":"FilterField.js","uid":"1c96-56"},{"name":"PeriodDimension","children":[{"name":"utils","children":[{"name":"fixedPeriods.js","uid":"1c96-65"},{"name":"relativePeriods.js","uid":"1c96-68"}]},{"name":"styles","children":[{"name":"PeriodFilter.style.js","uid":"1c96-66"},{"name":"FixedPeriodSelect.style.js","uid":"1c96-77"}]},{"name":"FixedPeriodFilter.js","uid":"1c96-67"},{"name":"RelativePeriodFilter.js","uid":"1c96-69"},{"name":"PeriodTransfer.js","uid":"1c96-75"},{"name":"PeriodDimension.js","uid":"1c96-76"},{"name":"FixedPeriodSelect.js","uid":"1c96-78"}]},{"name":"TransferOption.js","uid":"1c96-72"},{"name":"OrgUnitDimension","children":[{"name":"styles","children":[{"name":"OrgUnitDimension.style.js","uid":"1c96-81"}]},{"name":"OrgUnitDimension.js","uid":"1c96-82"}]},{"name":"DynamicDimension","children":[{"name":"ItemSelector.js","uid":"1c96-84"},{"name":"DynamicDimension.js","uid":"1c96-85"}]},{"name":"DimensionsPanel","children":[{"name":"List","children":[{"name":"styles","children":[{"name":"DimensionLabel.style.js","uid":"1c96-86"},{"name":"RecommendedIcon.style.js","uid":"1c96-88"},{"name":"DimensionItem.style.js","uid":"1c96-93"},{"name":"DimensionList.style.js","uid":"1c96-95"}]},{"name":"DimensionLabel.js","uid":"1c96-87"},{"name":"RecommendedIcon.js","uid":"1c96-89"},{"name":"OptionsButton.js","uid":"1c96-91"},{"name":"DimensionItem.js","uid":"1c96-94"},{"name":"DimensionList.js","uid":"1c96-96"}]},{"name":"styles","children":[{"name":"DimensionsPanel.style.js","uid":"1c96-97"}]},{"name":"DimensionsPanel.js","uid":"1c96-98"}]},{"name":"DimensionMenu.js","uid":"1c96-122"},{"name":"PivotTable","children":[{"name":"PivotTableEngineContext.js","uid":"1c96-133"},{"name":"styles","children":[{"name":"PivotTable.style.js","uid":"1c96-134"}]},{"name":"PivotTableContainer.js","uid":"1c96-135"},{"name":"PivotTableClippedAxis.js","uid":"1c96-136"},{"name":"PivotTableHeaderCell.js","uid":"1c96-138"},{"name":"PivotTableCell.js","uid":"1c96-139"},{"name":"icons","children":[{"name":"SortIconAscending.js","uid":"1c96-140"},{"name":"SortIconDescending.js","uid":"1c96-141"},{"name":"SortIconIdle.js","uid":"1c96-142"}]},{"name":"PivotTableSortIcon.js","uid":"1c96-143"},{"name":"PivotTableColumnHeaderCell.js","uid":"1c96-144"},{"name":"PivotTableDimensionLabelCell.js","uid":"1c96-145"},{"name":"PivotTableEmptyCell.js","uid":"1c96-146"},{"name":"PivotTableColumnHeaders.js","uid":"1c96-147"},{"name":"PivotTableTitleRow.js","uid":"1c96-148"},{"name":"PivotTableTitleRows.js","uid":"1c96-156"},{"name":"PivotTableHead.js","uid":"1c96-157"},{"name":"PivotTableEmptyRow.js","uid":"1c96-158"},{"name":"PivotTableRowHeaderCell.js","uid":"1c96-159"},{"name":"PivotTableValueCell.js","uid":"1c96-163"},{"name":"PivotTableRow.js","uid":"1c96-164"},{"name":"PivotTableBody.js","uid":"1c96-165"},{"name":"PivotTable.js","uid":"1c96-167"}]}]},{"name":"modules","children":[{"name":"dataSets.js","uid":"1c96-46"},{"name":"dataTypes.js","uid":"1c96-47"},{"name":"predefinedDimensions.js","uid":"1c96-63"},{"name":"dimensionSelectorHelper.js","uid":"1c96-74"},{"name":"ouIdHelper","children":[{"name":"index.js","uid":"1c96-80"}]},{"name":"layout","children":[{"name":"axis.js","uid":"1c96-99"},{"name":"dimension.js","uid":"1c96-149"},{"name":"dimensionIs.js","uid":"1c96-150"},{"name":"dimensionIsEmpty.js","uid":"1c96-151"},{"name":"dimensionIsValid.js","uid":"1c96-152"},{"name":"dimensionGetItems.js","uid":"1c96-153"},{"name":"layout.js","uid":"1c96-169"},{"name":"dimensionGetId.js","uid":"1c96-170"},{"name":"layoutFilterDimensions.js","uid":"1c96-171"},{"name":"layoutGetAllAxes.js","uid":"1c96-172"},{"name":"layoutGetAllDimensions.js","uid":"1c96-173"},{"name":"axisGetAllItems.js","uid":"1c96-174"},{"name":"layoutGetAllItems.js","uid":"1c96-175"},{"name":"item.js","uid":"1c96-176"},{"name":"itemGetId.js","uid":"1c96-177"},{"name":"layoutGetAllItemIds.js","uid":"1c96-178"},{"name":"axisGetDimensionIds.js","uid":"1c96-179"},{"name":"layoutGetAxisIdDimensionIdsObject.js","uid":"1c96-180"},{"name":"layoutGetDimension.js","uid":"1c96-181"},{"name":"layoutGetDimensionItems.js","uid":"1c96-182"},{"name":"axisGetDimension.js","uid":"1c96-183"},{"name":"axisHasDimension.js","uid":"1c96-184"},{"name":"layoutReplaceDimension.js","uid":"1c96-185"},{"name":"dimensionGetItemIds.js","uid":"1c96-186"},{"name":"layoutGetDimensionIdItemIdsObject.js","uid":"1c96-187"},{"name":"axisHasDataDimension.js","uid":"1c96-188"},{"name":"layoutHasDataDimension.js","uid":"1c96-189"},{"name":"layoutHasDimension.js","uid":"1c96-190"},{"name":"layoutHasDynamicDimension.js","uid":"1c96-191"},{"name":"axisHasPeriodDimension.js","uid":"1c96-192"},{"name":"layoutHasPeriodDimension.js","uid":"1c96-193"},{"name":"axisHasOuDimension.js","uid":"1c96-194"},{"name":"axisIsEmpty.js","uid":"1c96-195"},{"name":"dimensionCreate.js","uid":"1c96-196"},{"name":"itemIsValid.js","uid":"1c96-197"},{"name":"dimensionHasRelativeItems.js","uid":"1c96-225"},{"name":"axisHasRelativeItems.js","uid":"1c96-226"}]},{"name":"visTypes.js","uid":"1c96-114"},{"name":"layoutUiRules","children":[{"name":"rules.js","uid":"1c96-115"},{"name":"rulesHelper.js","uid":"1c96-116"},{"name":"rulesUtils.js","uid":"1c96-117"},{"name":"index.js","uid":"1c96-118"}]},{"name":"layoutTypes.js","uid":"1c96-119"},{"name":"axis.js","uid":"1c96-120"},{"name":"visTypeToLayoutType.js","uid":"1c96-121"},{"name":"pivotTable","children":[{"name":"parseValue.js","uid":"1c96-123"},{"name":"pivotTableConstants.js","uid":"1c96-124"},{"name":"renderValue.js","uid":"1c96-125"},{"name":"measureText.js","uid":"1c96-126"},{"name":"PivotTableEngine.js","uid":"1c96-127"},{"name":"useParentSize.js","uid":"1c96-128"},{"name":"useScrollPosition.js","uid":"1c96-129"},{"name":"clipAxis.js","uid":"1c96-130"},{"name":"clipPartitionedAxis.js","uid":"1c96-131"},{"name":"useTableClipping.js","uid":"1c96-132"},{"name":"getHeaderForDisplay.js","uid":"1c96-137"},{"name":"isColorBright.js","uid":"1c96-160"},{"name":"applyLegendSet.js","uid":"1c96-162"},{"name":"useSortableColumns.js","uid":"1c96-166"}]},{"name":"getOuLevelAndGroupText.js","uid":"1c96-154"},{"name":"legends.js","uid":"1c96-161"},{"name":"relativeItems","children":[{"name":"index.js","uid":"1c96-168"}]},{"name":"fontStyle.js","uid":"1c96-214"}]},{"name":"api","children":[{"name":"index.js","uid":"1c96-57"},{"name":"dimensions.js","uid":"1c96-58"},{"name":"organisationUnits.js","uid":"1c96-79"}]},{"name":"assets","children":[{"name":"DataIcon.js","uid":"1c96-59"},{"name":"PeriodIcon.js","uid":"1c96-60"},{"name":"OrgUnitIcon.js","uid":"1c96-61"},{"name":"AssignedCategoriesIcon.js","uid":"1c96-62"},{"name":"DimensionItemIcons","children":[{"name":"PeriodIcon.js","uid":"1c96-73"},{"name":"GenericIcon.js","uid":"1c96-83"}]},{"name":"MoreHorizontalIcon.js","uid":"1c96-90"},{"name":"DynamicDimensionIcon.js","uid":"1c96-92"},{"name":"BarIcon.js","uid":"1c96-100"},{"name":"StackedBarIcon.js","uid":"1c96-101"},{"name":"ColumnIcon.js","uid":"1c96-102"},{"name":"StackedColumnIcon.js","uid":"1c96-103"},{"name":"LineIcon.js","uid":"1c96-104"},{"name":"AreaIcon.js","uid":"1c96-105"},{"name":"StackedAreaIcon.js","uid":"1c96-106"},{"name":"PieIcon.js","uid":"1c96-107"},{"name":"RadarIcon.js","uid":"1c96-108"},{"name":"GaugeIcon.js","uid":"1c96-109"},{"name":"YearOverYearLineIcon.js","uid":"1c96-110"},{"name":"YearOverYearColumnIcon.js","uid":"1c96-111"},{"name":"SingleValueIcon.js","uid":"1c96-112"},{"name":"PivotTableIcon.js","uid":"1c96-113"}]},{"name":"visualizations","children":[{"name":"util","children":[{"name":"getFilterText.js","uid":"1c96-155"},{"name":"axisId.js","uid":"1c96-224"},{"name":"colors","children":[{"name":"gradientColorGenerator.js","uid":"1c96-231"},{"name":"colorSets.js","uid":"1c96-232"},{"name":"themes.js","uid":"1c96-245"},{"name":"index.js","uid":"1c96-258"}]}]},{"name":"store","children":[{"name":"validators","children":[{"name":"dhis","children":[{"name":"index.js","uid":"1c96-198"}]},{"name":"index.js","uid":"1c96-199"}]},{"name":"adapters","children":[{"name":"dhis_highcharts","children":[{"name":"yearOnYear.js","uid":"1c96-200"},{"name":"pie.js","uid":"1c96-201"},{"name":"gauge.js","uid":"1c96-202"},{"name":"twoCategory.js","uid":"1c96-204"},{"name":"index.js","uid":"1c96-205"}]},{"name":"dhis_dhis","children":[{"name":"singleValue.js","uid":"1c96-206"},{"name":"index.js","uid":"1c96-207"}]},{"name":"index.js","uid":"1c96-208"}]},{"name":"index.js","uid":"1c96-209"}]},{"name":"config","children":[{"name":"adapters","children":[{"name":"dhis_highcharts","children":[{"name":"getTwoCategorySplitSerieData.js","uid":"1c96-203"},{"name":"type.js","uid":"1c96-212"},{"name":"chart.js","uid":"1c96-213"},{"name":"getTextAlignOption.js","uid":"1c96-215"},{"name":"getAxisTitle.js","uid":"1c96-216"},{"name":"getCategories.js","uid":"1c96-217"},{"name":"xAxis","children":[{"name":"yearOnYear.js","uid":"1c96-218"},{"name":"twoCategory.js","uid":"1c96-219"},{"name":"radar.js","uid":"1c96-220"},{"name":"index.js","uid":"1c96-221"}]},{"name":"yAxis","children":[{"name":"gauge.js","uid":"1c96-222"},{"name":"index.js","uid":"1c96-227"}]},{"name":"customAxes.js","uid":"1c96-223"},{"name":"getCumulativeData.js","uid":"1c96-228"},{"name":"series","children":[{"name":"pie.js","uid":"1c96-229"},{"name":"gauge.js","uid":"1c96-230"},{"name":"index.js","uid":"1c96-233"}]},{"name":"title","children":[{"name":"yearOverYear.js","uid":"1c96-234"},{"name":"index.js","uid":"1c96-235"}]},{"name":"subtitle","children":[{"name":"index.js","uid":"1c96-236"}]},{"name":"legend.js","uid":"1c96-237"},{"name":"pane","children":[{"name":"gauge.js","uid":"1c96-238"},{"name":"index.js","uid":"1c96-239"}]},{"name":"noData.js","uid":"1c96-240"},{"name":"getStackedData.js","uid":"1c96-241"},{"name":"getSortedConfig.js","uid":"1c96-242"},{"name":"getTrimmedConfig.js","uid":"1c96-243"},{"name":"addTrendLines.js","uid":"1c96-244"},{"name":"index.js","uid":"1c96-246"}]},{"name":"dhis_dhis","children":[{"name":"title","children":[{"name":"singleValue.js","uid":"1c96-247"},{"name":"index.js","uid":"1c96-248"}]},{"name":"subtitle","children":[{"name":"singleValue.js","uid":"1c96-249"},{"name":"index.js","uid":"1c96-250"}]},{"name":"value","children":[{"name":"index.js","uid":"1c96-251"}]},{"name":"index.js","uid":"1c96-252"}]},{"name":"index.js","uid":"1c96-253"}]},{"name":"validators","children":[{"name":"dhis","children":[{"name":"index.js","uid":"1c96-210"}]},{"name":"index.js","uid":"1c96-211"}]},{"name":"generators","children":[{"name":"highcharts","children":[{"name":"index.js","uid":"1c96-254"}]},{"name":"dhis","children":[{"name":"singleValue.js","uid":"1c96-255"},{"name":"index.js","uid":"1c96-256"}]},{"name":"index.js","uid":"1c96-257"}]},{"name":"index.js","uid":"1c96-259"}]},{"name":"index.js","uid":"1c96-260"}]},{"name":"index.js","uid":"1c96-261"},{"name":"\u0000rollupPluginBabelHelpers.js","uid":"1c96-28"}]},"nodes":{"1c96-0":{"renderedLength":8119,"id":"locales/ar/translations.json"},"1c96-1":{"renderedLength":6203,"id":"locales/ar_EG/translations.json"},"1c96-2":{"renderedLength":7121,"id":"locales/ar_IQ/translations.json"},"1c96-3":{"renderedLength":6279,"id":"locales/ckb/translations.json"},"1c96-4":{"renderedLength":6397,"id":"locales/da/translations.json"},"1c96-5":{"renderedLength":6137,"id":"locales/en/translations.json"},"1c96-6":{"renderedLength":7516,"id":"locales/es/translations.json"},"1c96-7":{"renderedLength":8504,"id":"locales/fr/translations.json"},"1c96-8":{"renderedLength":7727,"id":"locales/id/translations.json"},"1c96-9":{"renderedLength":6424,"id":"locales/km/translations.json"},"1c96-10":{"renderedLength":7208,"id":"locales/lo/translations.json"},"1c96-11":{"renderedLength":6767,"id":"locales/my/translations.json"},"1c96-12":{"renderedLength":9382,"id":"locales/nb/translations.json"},"1c96-13":{"renderedLength":7059,"id":"locales/prs/translations.json"},"1c96-14":{"renderedLength":7256,"id":"locales/ps/translations.json"},"1c96-15":{"renderedLength":8367,"id":"locales/pt/translations.json"},"1c96-16":{"renderedLength":6929,"id":"locales/pt_BR/translations.json"},"1c96-17":{"renderedLength":7844,"id":"locales/ru/translations.json"},"1c96-18":{"renderedLength":6942,"id":"locales/sv/translations.json"},"1c96-19":{"renderedLength":6982,"id":"locales/tet/translations.json"},"1c96-20":{"renderedLength":6949,"id":"locales/tg/translations.json"},"1c96-21":{"renderedLength":7452,"id":"locales/uk/translations.json"},"1c96-22":{"renderedLength":7288,"id":"locales/ur/translations.json"},"1c96-23":{"renderedLength":7385,"id":"locales/uz_Cyrl/translations.json"},"1c96-24":{"renderedLength":7612,"id":"locales/vi/translations.json"},"1c96-25":{"renderedLength":7351,"id":"locales/zh/translations.json"},"1c96-26":{"renderedLength":6411,"id":"locales/zh_CN/translations.json"},"1c96-27":{"renderedLength":1553,"id":"locales/index.js"},"1c96-28":{"renderedLength":2508,"id":"\u0000rollupPluginBabelHelpers.js"},"1c96-29":{"renderedLength":489,"id":"components/ItemSelector/widgets/ItemIcon.js"},"1c96-30":{"renderedLength":584,"id":"components/ItemSelector/widgets/styles/UnselectedItem.style.js"},"1c96-31":{"renderedLength":1289,"id":"components/ItemSelector/widgets/UnselectedItem.js"},"1c96-32":{"renderedLength":577,"id":"components/ItemSelector/widgets/styles/ArrowButton.style.js"},"1c96-33":{"renderedLength":678,"id":"components/ItemSelector/widgets/ArrowButton.js"},"1c96-34":{"renderedLength":1691,"id":"components/ItemSelector/modules/toggler.js"},"1c96-35":{"renderedLength":638,"id":"components/ItemSelector/styles/UnselectedItems.style.js"},"1c96-36":{"renderedLength":4289,"id":"components/ItemSelector/UnselectedItems.js"},"1c96-37":{"renderedLength":184,"id":"components/ItemSelector/widgets/styles/DeselectIconButton.style.js"},"1c96-38":{"renderedLength":788,"id":"components/ItemSelector/widgets/DeselectIconButton.js"},"1c96-39":{"renderedLength":909,"id":"components/ItemSelector/widgets/styles/SelectedItem.style.js"},"1c96-40":{"renderedLength":1765,"id":"components/ItemSelector/widgets/SelectedItem.js"},"1c96-41":{"renderedLength":952,"id":"components/ItemSelector/modules/reorderList.js"},"1c96-42":{"renderedLength":1241,"id":"components/ItemSelector/styles/SelectedItems.style.js"},"1c96-43":{"renderedLength":9187,"id":"components/ItemSelector/SelectedItems.js"},"1c96-44":{"renderedLength":655,"id":"components/ItemSelector/styles/ItemSelector.style.js"},"1c96-45":{"renderedLength":1624,"id":"components/ItemSelector/ItemSelector.js"},"1c96-46":{"renderedLength":651,"id":"modules/dataSets.js"},"1c96-47":{"renderedLength":2931,"id":"modules/dataTypes.js"},"1c96-48":{"renderedLength":276,"id":"components/DataDimension/styles/DataTypesSelector.style.js"},"1c96-49":{"renderedLength":956,"id":"components/DataDimension/DataTypesSelector.js"},"1c96-50":{"renderedLength":258,"id":"components/DataDimension/styles/Detail.style.js"},"1c96-51":{"renderedLength":926,"id":"components/DataDimension/Detail.js"},"1c96-52":{"renderedLength":577,"id":"components/DataDimension/styles/Groups.style.js"},"1c96-53":{"renderedLength":1671,"id":"components/DataDimension/Groups.js"},"1c96-54":{"renderedLength":548,"id":"components/Filter/Filter.js"},"1c96-55":{"renderedLength":270,"id":"components/styles/FilterField.style.js"},"1c96-56":{"renderedLength":628,"id":"components/FilterField.js"},"1c96-57":{"renderedLength":75,"id":"api/index.js"},"1c96-58":{"renderedLength":9300,"id":"api/dimensions.js"},"1c96-59":{"renderedLength":1452,"id":"assets/DataIcon.js"},"1c96-60":{"renderedLength":1541,"id":"assets/PeriodIcon.js"},"1c96-61":{"renderedLength":1089,"id":"assets/OrgUnitIcon.js"},"1c96-62":{"renderedLength":757,"id":"assets/AssignedCategoriesIcon.js"},"1c96-63":{"renderedLength":1400,"id":"modules/predefinedDimensions.js"},"1c96-64":{"renderedLength":6996,"id":"components/DataDimension/DataDimension.js"},"1c96-65":{"renderedLength":21677,"id":"components/PeriodDimension/utils/fixedPeriods.js"},"1c96-66":{"renderedLength":357,"id":"components/PeriodDimension/styles/PeriodFilter.style.js"},"1c96-67":{"renderedLength":1883,"id":"components/PeriodDimension/FixedPeriodFilter.js"},"1c96-68":{"renderedLength":4184,"id":"components/PeriodDimension/utils/relativePeriods.js"},"1c96-69":{"renderedLength":844,"id":"components/PeriodDimension/RelativePeriodFilter.js"},"1c96-70":{"renderedLength":486,"id":"components/styles/DimensionSelector.style.js"},"1c96-71":{"renderedLength":1440,"id":"components/styles/TransferOption.style.js"},"1c96-72":{"renderedLength":1429,"id":"components/TransferOption.js"},"1c96-73":{"renderedLength":569,"id":"assets/DimensionItemIcons/PeriodIcon.js"},"1c96-74":{"renderedLength":113,"id":"modules/dimensionSelectorHelper.js"},"1c96-75":{"renderedLength":5620,"id":"components/PeriodDimension/PeriodTransfer.js"},"1c96-76":{"renderedLength":583,"id":"components/PeriodDimension/PeriodDimension.js"},"1c96-77":{"renderedLength":203,"id":"components/PeriodDimension/styles/FixedPeriodSelect.style.js"},"1c96-78":{"renderedLength":2839,"id":"components/PeriodDimension/FixedPeriodSelect.js"},"1c96-79":{"renderedLength":1277,"id":"api/organisationUnits.js"},"1c96-80":{"renderedLength":761,"id":"modules/ouIdHelper/index.js"},"1c96-81":{"renderedLength":377,"id":"components/OrgUnitDimension/styles/OrgUnitDimension.style.js"},"1c96-82":{"renderedLength":7608,"id":"components/OrgUnitDimension/OrgUnitDimension.js"},"1c96-83":{"renderedLength":311,"id":"assets/DimensionItemIcons/GenericIcon.js"},"1c96-84":{"renderedLength":2193,"id":"components/DynamicDimension/ItemSelector.js"},"1c96-85":{"renderedLength":1831,"id":"components/DynamicDimension/DynamicDimension.js"},"1c96-86":{"renderedLength":75,"id":"components/DimensionsPanel/List/styles/DimensionLabel.style.js"},"1c96-87":{"renderedLength":981,"id":"components/DimensionsPanel/List/DimensionLabel.js"},"1c96-88":{"renderedLength":459,"id":"components/DimensionsPanel/List/styles/RecommendedIcon.style.js"},"1c96-89":{"renderedLength":1168,"id":"components/DimensionsPanel/List/RecommendedIcon.js"},"1c96-90":{"renderedLength":629,"id":"assets/MoreHorizontalIcon.js"},"1c96-91":{"renderedLength":297,"id":"components/DimensionsPanel/List/OptionsButton.js"},"1c96-92":{"renderedLength":1994,"id":"assets/DynamicDimensionIcon.js"},"1c96-93":{"renderedLength":1116,"id":"components/DimensionsPanel/List/styles/DimensionItem.style.js"},"1c96-94":{"renderedLength":3726,"id":"components/DimensionsPanel/List/DimensionItem.js"},"1c96-95":{"renderedLength":681,"id":"components/DimensionsPanel/List/styles/DimensionList.style.js"},"1c96-96":{"renderedLength":3178,"id":"components/DimensionsPanel/List/DimensionList.js"},"1c96-97":{"renderedLength":350,"id":"components/DimensionsPanel/styles/DimensionsPanel.style.js"},"1c96-98":{"renderedLength":2010,"id":"components/DimensionsPanel/DimensionsPanel.js"},"1c96-99":{"renderedLength":271,"id":"modules/layout/axis.js"},"1c96-100":{"renderedLength":819,"id":"assets/BarIcon.js"},"1c96-101":{"renderedLength":1137,"id":"assets/StackedBarIcon.js"},"1c96-102":{"renderedLength":822,"id":"assets/ColumnIcon.js"},"1c96-103":{"renderedLength":1141,"id":"assets/StackedColumnIcon.js"},"1c96-104":{"renderedLength":925,"id":"assets/LineIcon.js"},"1c96-105":{"renderedLength":885,"id":"assets/AreaIcon.js"},"1c96-106":{"renderedLength":1113,"id":"assets/StackedAreaIcon.js"},"1c96-107":{"renderedLength":3228,"id":"assets/PieIcon.js"},"1c96-108":{"renderedLength":661,"id":"assets/RadarIcon.js"},"1c96-109":{"renderedLength":1323,"id":"assets/GaugeIcon.js"},"1c96-110":{"renderedLength":1114,"id":"assets/YearOverYearLineIcon.js"},"1c96-111":{"renderedLength":939,"id":"assets/YearOverYearColumnIcon.js"},"1c96-112":{"renderedLength":3300,"id":"assets/SingleValueIcon.js"},"1c96-113":{"renderedLength":742,"id":"assets/PivotTableIcon.js"},"1c96-114":{"renderedLength":4588,"id":"modules/visTypes.js"},"1c96-115":{"renderedLength":3245,"id":"modules/layoutUiRules/rules.js"},"1c96-116":{"renderedLength":545,"id":"modules/layoutUiRules/rulesHelper.js"},"1c96-117":{"renderedLength":1573,"id":"modules/layoutUiRules/rulesUtils.js"},"1c96-118":{"renderedLength":0,"id":"modules/layoutUiRules/index.js"},"1c96-119":{"renderedLength":278,"id":"modules/layoutTypes.js"},"1c96-120":{"renderedLength":985,"id":"modules/axis.js"},"1c96-121":{"renderedLength":743,"id":"modules/visTypeToLayoutType.js"},"1c96-122":{"renderedLength":4396,"id":"components/DimensionMenu.js"},"1c96-123":{"renderedLength":165,"id":"modules/pivotTable/parseValue.js"},"1c96-124":{"renderedLength":1266,"id":"modules/pivotTable/pivotTableConstants.js"},"1c96-125":{"renderedLength":1958,"id":"modules/pivotTable/renderValue.js"},"1c96-126":{"renderedLength":396,"id":"modules/pivotTable/measureText.js"},"1c96-127":{"renderedLength":33196,"id":"modules/pivotTable/PivotTableEngine.js"},"1c96-128":{"renderedLength":745,"id":"modules/pivotTable/useParentSize.js"},"1c96-129":{"renderedLength":681,"id":"modules/pivotTable/useScrollPosition.js"},"1c96-130":{"renderedLength":599,"id":"modules/pivotTable/clipAxis.js"},"1c96-131":{"renderedLength":925,"id":"modules/pivotTable/clipPartitionedAxis.js"},"1c96-132":{"renderedLength":1334,"id":"modules/pivotTable/useTableClipping.js"},"1c96-133":{"renderedLength":414,"id":"components/PivotTable/PivotTableEngineContext.js"},"1c96-134":{"renderedLength":2756,"id":"components/PivotTable/styles/PivotTable.style.js"},"1c96-135":{"renderedLength":715,"id":"components/PivotTable/PivotTableContainer.js"},"1c96-136":{"renderedLength":514,"id":"components/PivotTable/PivotTableClippedAxis.js"},"1c96-137":{"renderedLength":1037,"id":"modules/pivotTable/getHeaderForDisplay.js"},"1c96-138":{"renderedLength":652,"id":"components/PivotTable/PivotTableHeaderCell.js"},"1c96-139":{"renderedLength":1540,"id":"components/PivotTable/PivotTableCell.js"},"1c96-140":{"renderedLength":580,"id":"components/PivotTable/icons/SortIconAscending.js"},"1c96-141":{"renderedLength":581,"id":"components/PivotTable/icons/SortIconDescending.js"},"1c96-142":{"renderedLength":575,"id":"components/PivotTable/icons/SortIconIdle.js"},"1c96-143":{"renderedLength":761,"id":"components/PivotTable/PivotTableSortIcon.js"},"1c96-144":{"renderedLength":2209,"id":"components/PivotTable/PivotTableColumnHeaderCell.js"},"1c96-145":{"renderedLength":1203,"id":"components/PivotTable/PivotTableDimensionLabelCell.js"},"1c96-146":{"renderedLength":358,"id":"components/PivotTable/PivotTableEmptyCell.js"},"1c96-147":{"renderedLength":1393,"id":"components/PivotTable/PivotTableColumnHeaders.js"},"1c96-148":{"renderedLength":1216,"id":"components/PivotTable/PivotTableTitleRow.js"},"1c96-149":{"renderedLength":396,"id":"modules/layout/dimension.js"},"1c96-150":{"renderedLength":98,"id":"modules/layout/dimensionIs.js"},"1c96-151":{"renderedLength":187,"id":"modules/layout/dimensionIsEmpty.js"},"1c96-152":{"renderedLength":400,"id":"modules/layout/dimensionIsValid.js"},"1c96-153":{"renderedLength":168,"id":"modules/layout/dimensionGetItems.js"},"1c96-154":{"renderedLength":2223,"id":"modules/getOuLevelAndGroupText.js"},"1c96-155":{"renderedLength":1487,"id":"visualizations/util/getFilterText.js"},"1c96-156":{"renderedLength":1350,"id":"components/PivotTable/PivotTableTitleRows.js"},"1c96-157":{"renderedLength":608,"id":"components/PivotTable/PivotTableHead.js"},"1c96-158":{"renderedLength":527,"id":"components/PivotTable/PivotTableEmptyRow.js"},"1c96-159":{"renderedLength":1079,"id":"components/PivotTable/PivotTableRowHeaderCell.js"},"1c96-160":{"renderedLength":617,"id":"modules/pivotTable/isColorBright.js"},"1c96-161":{"renderedLength":441,"id":"modules/legends.js"},"1c96-162":{"renderedLength":1369,"id":"modules/pivotTable/applyLegendSet.js"},"1c96-163":{"renderedLength":1789,"id":"components/PivotTable/PivotTableValueCell.js"},"1c96-164":{"renderedLength":1138,"id":"components/PivotTable/PivotTableRow.js"},"1c96-165":{"renderedLength":762,"id":"components/PivotTable/PivotTableBody.js"},"1c96-166":{"renderedLength":605,"id":"modules/pivotTable/useSortableColumns.js"},"1c96-167":{"renderedLength":1353,"id":"components/PivotTable/PivotTable.js"},"1c96-168":{"renderedLength":462,"id":"modules/relativeItems/index.js"},"1c96-169":{"renderedLength":57,"id":"modules/layout/layout.js"},"1c96-170":{"renderedLength":70,"id":"modules/layout/dimensionGetId.js"},"1c96-171":{"renderedLength":437,"id":"modules/layout/layoutFilterDimensions.js"},"1c96-172":{"renderedLength":108,"id":"modules/layout/layoutGetAllAxes.js"},"1c96-173":{"renderedLength":162,"id":"modules/layout/layoutGetAllDimensions.js"},"1c96-174":{"renderedLength":147,"id":"modules/layout/axisGetAllItems.js"},"1c96-175":{"renderedLength":159,"id":"modules/layout/layoutGetAllItems.js"},"1c96-176":{"renderedLength":208,"id":"modules/layout/item.js"},"1c96-177":{"renderedLength":126,"id":"modules/layout/itemGetId.js"},"1c96-178":{"renderedLength":93,"id":"modules/layout/layoutGetAllItemIds.js"},"1c96-179":{"renderedLength":126,"id":"modules/layout/axisGetDimensionIds.js"},"1c96-180":{"renderedLength":214,"id":"modules/layout/layoutGetAxisIdDimensionIdsObject.js"},"1c96-181":{"renderedLength":138,"id":"modules/layout/layoutGetDimension.js"},"1c96-182":{"renderedLength":116,"id":"modules/layout/layoutGetDimensionItems.js"},"1c96-183":{"renderedLength":130,"id":"modules/layout/axisGetDimension.js"},"1c96-184":{"renderedLength":93,"id":"modules/layout/axisHasDimension.js"},"1c96-185":{"renderedLength":502,"id":"modules/layout/layoutReplaceDimension.js"},"1c96-186":{"renderedLength":99,"id":"modules/layout/dimensionGetItemIds.js"},"1c96-187":{"renderedLength":200,"id":"modules/layout/layoutGetDimensionIdItemIdsObject.js"},"1c96-188":{"renderedLength":79,"id":"modules/layout/axisHasDataDimension.js"},"1c96-189":{"renderedLength":116,"id":"modules/layout/layoutHasDataDimension.js"},"1c96-190":{"renderedLength":101,"id":"modules/layout/layoutHasDimension.js"},"1c96-191":{"renderedLength":222,"id":"modules/layout/layoutHasDynamicDimension.js"},"1c96-192":{"renderedLength":83,"id":"modules/layout/axisHasPeriodDimension.js"},"1c96-193":{"renderedLength":120,"id":"modules/layout/layoutHasPeriodDimension.js"},"1c96-194":{"renderedLength":80,"id":"modules/layout/axisHasOuDimension.js"},"1c96-195":{"renderedLength":41,"id":"modules/layout/axisIsEmpty.js"},"1c96-196":{"renderedLength":167,"id":"modules/layout/dimensionCreate.js"},"1c96-197":{"renderedLength":219,"id":"modules/layout/itemIsValid.js"},"1c96-198":{"renderedLength":1769,"id":"visualizations/store/validators/dhis/index.js"},"1c96-199":{"renderedLength":80,"id":"visualizations/store/validators/index.js"},"1c96-200":{"renderedLength":521,"id":"visualizations/store/adapters/dhis_highcharts/yearOnYear.js"},"1c96-201":{"renderedLength":324,"id":"visualizations/store/adapters/dhis_highcharts/pie.js"},"1c96-202":{"renderedLength":166,"id":"visualizations/store/adapters/dhis_highcharts/gauge.js"},"1c96-203":{"renderedLength":465,"id":"visualizations/config/adapters/dhis_highcharts/getTwoCategorySplitSerieData.js"},"1c96-204":{"renderedLength":1412,"id":"visualizations/store/adapters/dhis_highcharts/twoCategory.js"},"1c96-205":{"renderedLength":3094,"id":"visualizations/store/adapters/dhis_highcharts/index.js"},"1c96-206":{"renderedLength":140,"id":"visualizations/store/adapters/dhis_dhis/singleValue.js"},"1c96-207":{"renderedLength":2350,"id":"visualizations/store/adapters/dhis_dhis/index.js"},"1c96-208":{"renderedLength":50,"id":"visualizations/store/adapters/index.js"},"1c96-209":{"renderedLength":907,"id":"visualizations/store/index.js"},"1c96-210":{"renderedLength":51,"id":"visualizations/config/validators/dhis/index.js"},"1c96-211":{"renderedLength":108,"id":"visualizations/config/validators/index.js"},"1c96-212":{"renderedLength":757,"id":"visualizations/config/adapters/dhis_highcharts/type.js"},"1c96-213":{"renderedLength":801,"id":"visualizations/config/adapters/dhis_highcharts/chart.js"},"1c96-214":{"renderedLength":7280,"id":"modules/fontStyle.js"},"1c96-215":{"renderedLength":1040,"id":"visualizations/config/adapters/dhis_highcharts/getTextAlignOption.js"},"1c96-216":{"renderedLength":702,"id":"visualizations/config/adapters/dhis_highcharts/getAxisTitle.js"},"1c96-217":{"renderedLength":224,"id":"visualizations/config/adapters/dhis_highcharts/getCategories.js"},"1c96-218":{"renderedLength":918,"id":"visualizations/config/adapters/dhis_highcharts/xAxis/yearOnYear.js"},"1c96-219":{"renderedLength":755,"id":"visualizations/config/adapters/dhis_highcharts/xAxis/twoCategory.js"},"1c96-220":{"renderedLength":313,"id":"visualizations/config/adapters/dhis_highcharts/xAxis/radar.js"},"1c96-221":{"renderedLength":1421,"id":"visualizations/config/adapters/dhis_highcharts/xAxis/index.js"},"1c96-222":{"renderedLength":2877,"id":"visualizations/config/adapters/dhis_highcharts/yAxis/gauge.js"},"1c96-223":{"renderedLength":1004,"id":"visualizations/config/adapters/dhis_highcharts/customAxes.js"},"1c96-224":{"renderedLength":103,"id":"visualizations/util/axisId.js"},"1c96-225":{"renderedLength":123,"id":"modules/layout/dimensionHasRelativeItems.js"},"1c96-226":{"renderedLength":98,"id":"modules/layout/axisHasRelativeItems.js"},"1c96-227":{"renderedLength":5728,"id":"visualizations/config/adapters/dhis_highcharts/yAxis/index.js"},"1c96-228":{"renderedLength":2091,"id":"visualizations/config/adapters/dhis_highcharts/getCumulativeData.js"},"1c96-229":{"renderedLength":593,"id":"visualizations/config/adapters/dhis_highcharts/series/pie.js"},"1c96-230":{"renderedLength":498,"id":"visualizations/config/adapters/dhis_highcharts/series/gauge.js"},"1c96-231":{"renderedLength":781,"id":"visualizations/util/colors/gradientColorGenerator.js"},"1c96-232":{"renderedLength":1153,"id":"visualizations/util/colors/colorSets.js"},"1c96-233":{"renderedLength":5779,"id":"visualizations/config/adapters/dhis_highcharts/series/index.js"},"1c96-234":{"renderedLength":429,"id":"visualizations/config/adapters/dhis_highcharts/title/yearOverYear.js"},"1c96-235":{"renderedLength":1665,"id":"visualizations/config/adapters/dhis_highcharts/title/index.js"},"1c96-236":{"renderedLength":1898,"id":"visualizations/config/adapters/dhis_highcharts/subtitle/index.js"},"1c96-237":{"renderedLength":1203,"id":"visualizations/config/adapters/dhis_highcharts/legend.js"},"1c96-238":{"renderedLength":302,"id":"visualizations/config/adapters/dhis_highcharts/pane/gauge.js"},"1c96-239":{"renderedLength":139,"id":"visualizations/config/adapters/dhis_highcharts/pane/index.js"},"1c96-240":{"renderedLength":111,"id":"visualizations/config/adapters/dhis_highcharts/noData.js"},"1c96-241":{"renderedLength":835,"id":"visualizations/config/adapters/dhis_highcharts/getStackedData.js"},"1c96-242":{"renderedLength":2634,"id":"visualizations/config/adapters/dhis_highcharts/getSortedConfig.js"},"1c96-243":{"renderedLength":5813,"id":"visualizations/config/adapters/dhis_highcharts/getTrimmedConfig.js"},"1c96-244":{"renderedLength":11756,"id":"visualizations/config/adapters/dhis_highcharts/addTrendLines.js"},"1c96-245":{"renderedLength":523,"id":"visualizations/util/colors/themes.js"},"1c96-246":{"renderedLength":3346,"id":"visualizations/config/adapters/dhis_highcharts/index.js"},"1c96-247":{"renderedLength":280,"id":"visualizations/config/adapters/dhis_dhis/title/singleValue.js"},"1c96-248":{"renderedLength":593,"id":"visualizations/config/adapters/dhis_dhis/title/index.js"},"1c96-249":{"renderedLength":125,"id":"visualizations/config/adapters/dhis_dhis/subtitle/singleValue.js"},"1c96-250":{"renderedLength":661,"id":"visualizations/config/adapters/dhis_dhis/subtitle/index.js"},"1c96-251":{"renderedLength":319,"id":"visualizations/config/adapters/dhis_dhis/value/index.js"},"1c96-252":{"renderedLength":665,"id":"visualizations/config/adapters/dhis_dhis/index.js"},"1c96-253":{"renderedLength":84,"id":"visualizations/config/adapters/index.js"},"1c96-254":{"renderedLength":185,"id":"visualizations/config/generators/highcharts/index.js"},"1c96-255":{"renderedLength":5178,"id":"visualizations/config/generators/dhis/singleValue.js"},"1c96-256":{"renderedLength":568,"id":"visualizations/config/generators/dhis/index.js"},"1c96-257":{"renderedLength":50,"id":"visualizations/config/generators/index.js"},"1c96-258":{"renderedLength":0,"id":"visualizations/util/colors/index.js"},"1c96-259":{"renderedLength":1322,"id":"visualizations/config/index.js"},"1c96-260":{"renderedLength":723,"id":"visualizations/index.js"},"1c96-261":{"renderedLength":0,"isEntry":true,"id":"index.js"},"1c96-262":{"renderedLength":0,"isExternal":true,"id":"@dhis2/d2-i18n"},"1c96-263":{"renderedLength":0,"isExternal":true,"id":"react"},"1c96-264":{"renderedLength":0,"isExternal":true,"id":"prop-types"},"1c96-265":{"renderedLength":0,"isExternal":true,"id":"lodash/debounce"},"1c96-266":{"renderedLength":0,"isExternal":true,"id":"lodash/isEqual"},"1c96-267":{"renderedLength":0,"isExternal":true,"id":"styled-jsx/style"},"1c96-268":{"renderedLength":0,"isExternal":true,"id":"@dhis2/prop-types"},"1c96-269":{"renderedLength":0,"isExternal":true,"id":"@dhis2/ui"},"1c96-270":{"renderedLength":0,"isExternal":true,"id":"lodash/sortBy"},"1c96-271":{"renderedLength":0,"isExternal":true,"id":"@dhis2/d2-ui-org-unit-dialog"},"1c96-272":{"renderedLength":0,"isExternal":true,"id":"@material-ui/icons/Lock"},"1c96-273":{"renderedLength":0,"isExternal":true,"id":"classnames"},"1c96-274":{"renderedLength":0,"isExternal":true,"id":"lodash/isObject"},"1c96-275":{"renderedLength":0,"isExternal":true,"id":"lodash/isString"},"1c96-276":{"renderedLength":0,"isExternal":true,"id":"d2-utilizr/lib/isArray"},"1c96-277":{"renderedLength":0,"isExternal":true,"id":"core-js/fn/array/find-index"},"1c96-278":{"renderedLength":0,"isExternal":true,"id":"highcharts"},"1c96-279":{"renderedLength":0,"isExternal":true,"id":"highcharts/modules/pattern-fill"},"1c96-280":{"renderedLength":0,"isExternal":true,"id":"@material-ui/core/styles"},"1c96-281":{"renderedLength":0,"isExternal":true,"id":"@material-ui/core/Paper"},"1c96-282":{"renderedLength":0,"isExternal":true,"id":"@material-ui/core/Popper"},"1c96-283":{"renderedLength":0,"isExternal":true,"id":"@material-ui/core/IconButton"},"1c96-284":{"renderedLength":0,"isExternal":true,"id":"lodash/throttle"},"1c96-285":{"renderedLength":0,"isExternal":true,"id":"@material-ui/icons/InfoOutlined"},"1c96-286":{"renderedLength":0,"isExternal":true,"id":"react-beautiful-dnd"},"1c96-287":{"renderedLength":0,"isExternal":true,"id":"lodash/times"},"1c96-288":{"renderedLength":0,"isExternal":true,"id":"resize-observer-polyfill"},"1c96-289":{"renderedLength":0,"isExternal":true,"id":"@material-ui/core/SvgIcon"},"1c96-290":{"renderedLength":0,"isExternal":true,"id":"@material-ui/icons/ArrowForward"},"1c96-291":{"renderedLength":0,"isExternal":true,"id":"@material-ui/icons/ArrowBack"},"1c96-292":{"renderedLength":0,"isExternal":true,"id":"@material-ui/icons/Close"},"1c96-293":{"renderedLength":0,"isExternal":true,"id":"d2-utilizr/lib/isObject"},"1c96-294":{"renderedLength":0,"isExternal":true,"id":"d2-utilizr/lib/isString"},"1c96-295":{"renderedLength":0,"isExternal":true,"id":"d2-utilizr/lib/arrayContains"},"1c96-296":{"renderedLength":0,"isExternal":true,"id":"d2-utilizr/lib/arrayUnique"},"1c96-297":{"renderedLength":0,"isExternal":true,"id":"d2-utilizr/lib/objectClean"},"1c96-298":{"renderedLength":0,"isExternal":true,"id":"highcharts/highcharts-more"},"1c96-299":{"renderedLength":0,"isExternal":true,"id":"highcharts/modules/solid-gauge"},"1c96-300":{"renderedLength":0,"isExternal":true,"id":"highcharts/modules/no-data-to-display"},"1c96-301":{"renderedLength":0,"isExternal":true,"id":"highcharts/modules/exporting"},"1c96-302":{"renderedLength":0,"isExternal":true,"id":"d2-utilizr/lib/arrayClean"},"1c96-303":{"renderedLength":0,"isExternal":true,"id":"d2-utilizr/lib/isNumeric"},"1c96-304":{"renderedLength":0,"isExternal":true,"id":"d2-utilizr/lib/arrayPluck"},"1c96-305":{"renderedLength":0,"isExternal":true,"id":"d2-utilizr/lib/arraySort"},"1c96-306":{"renderedLength":0,"isExternal":true,"id":"d3-color"},"1c96-307":{"renderedLength":0,"isExternal":true,"id":"d2-utilizr/lib/isNumber"},"1c96-308":{"renderedLength":0,"isExternal":true,"id":"d2-utilizr/lib/numberDecimals"}},"links":[{"source":"1c96-261","target":"1c96-27"},{"source":"1c96-261","target":"1c96-64"},{"source":"1c96-261","target":"1c96-76"},{"source":"1c96-261","target":"1c96-78"},{"source":"1c96-261","target":"1c96-82"},{"source":"1c96-261","target":"1c96-85"},{"source":"1c96-261","target":"1c96-98"},{"source":"1c96-261","target":"1c96-94"},{"source":"1c96-261","target":"1c96-54"},{"source":"1c96-261","target":"1c96-45"},{"source":"1c96-261","target":"1c96-122"},{"source":"1c96-261","target":"1c96-167"},{"source":"1c96-261","target":"1c96-58"},{"source":"1c96-261","target":"1c96-120"},{"source":"1c96-261","target":"1c96-63"},{"source":"1c96-261","target":"1c96-80"},{"source":"1c96-261","target":"1c96-168"},{"source":"1c96-261","target":"1c96-169"},{"source":"1c96-261","target":"1c96-171"},{"source":"1c96-261","target":"1c96-172"},{"source":"1c96-261","target":"1c96-173"},{"source":"1c96-261","target":"1c96-178"},{"source":"1c96-261","target":"1c96-175"},{"source":"1c96-261","target":"1c96-180"},{"source":"1c96-261","target":"1c96-181"},{"source":"1c96-261","target":"1c96-182"},{"source":"1c96-261","target":"1c96-185"},{"source":"1c96-261","target":"1c96-187"},{"source":"1c96-261","target":"1c96-189"},{"source":"1c96-261","target":"1c96-190"},{"source":"1c96-261","target":"1c96-191"},{"source":"1c96-261","target":"1c96-193"},{"source":"1c96-261","target":"1c96-99"},{"source":"1c96-261","target":"1c96-174"},{"source":"1c96-261","target":"1c96-183"},{"source":"1c96-261","target":"1c96-179"},{"source":"1c96-261","target":"1c96-188"},{"source":"1c96-261","target":"1c96-184"},{"source":"1c96-261","target":"1c96-192"},{"source":"1c96-261","target":"1c96-194"},{"source":"1c96-261","target":"1c96-195"},{"source":"1c96-261","target":"1c96-149"},{"source":"1c96-261","target":"1c96-196"},{"source":"1c96-261","target":"1c96-170"},{"source":"1c96-261","target":"1c96-186"},{"source":"1c96-261","target":"1c96-153"},{"source":"1c96-261","target":"1c96-150"},{"source":"1c96-261","target":"1c96-151"},{"source":"1c96-261","target":"1c96-152"},{"source":"1c96-261","target":"1c96-176"},{"source":"1c96-261","target":"1c96-177"},{"source":"1c96-261","target":"1c96-197"},{"source":"1c96-261","target":"1c96-121"},{"source":"1c96-261","target":"1c96-114"},{"source":"1c96-261","target":"1c96-119"},{"source":"1c96-261","target":"1c96-118"},{"source":"1c96-261","target":"1c96-260"},{"source":"1c96-261","target":"1c96-214"},{"source":"1c96-261","target":"1c96-232"},{"source":"1c96-27","target":"1c96-262"},{"source":"1c96-27","target":"1c96-0"},{"source":"1c96-27","target":"1c96-1"},{"source":"1c96-27","target":"1c96-2"},{"source":"1c96-27","target":"1c96-3"},{"source":"1c96-27","target":"1c96-4"},{"source":"1c96-27","target":"1c96-5"},{"source":"1c96-27","target":"1c96-6"},{"source":"1c96-27","target":"1c96-7"},{"source":"1c96-27","target":"1c96-8"},{"source":"1c96-27","target":"1c96-9"},{"source":"1c96-27","target":"1c96-10"},{"source":"1c96-27","target":"1c96-11"},{"source":"1c96-27","target":"1c96-12"},{"source":"1c96-27","target":"1c96-13"},{"source":"1c96-27","target":"1c96-14"},{"source":"1c96-27","target":"1c96-15"},{"source":"1c96-27","target":"1c96-16"},{"source":"1c96-27","target":"1c96-17"},{"source":"1c96-27","target":"1c96-18"},{"source":"1c96-27","target":"1c96-19"},{"source":"1c96-27","target":"1c96-20"},{"source":"1c96-27","target":"1c96-21"},{"source":"1c96-27","target":"1c96-22"},{"source":"1c96-27","target":"1c96-23"},{"source":"1c96-27","target":"1c96-24"},{"source":"1c96-27","target":"1c96-25"},{"source":"1c96-27","target":"1c96-26"},{"source":"1c96-64","target":"1c96-28"},{"source":"1c96-64","target":"1c96-263"},{"source":"1c96-64","target":"1c96-264"},{"source":"1c96-64","target":"1c96-265"},{"source":"1c96-64","target":"1c96-266"},{"source":"1c96-64","target":"1c96-45"},{"source":"1c96-64","target":"1c96-49"},{"source":"1c96-64","target":"1c96-53"},{"source":"1c96-64","target":"1c96-56"},{"source":"1c96-64","target":"1c96-58"},{"source":"1c96-64","target":"1c96-47"},{"source":"1c96-64","target":"1c96-63"},{"source":"1c96-76","target":"1c96-263"},{"source":"1c96-76","target":"1c96-264"},{"source":"1c96-76","target":"1c96-75"},{"source":"1c96-76","target":"1c96-63"},{"source":"1c96-78","target":"1c96-28"},{"source":"1c96-78","target":"1c96-267"},{"source":"1c96-78","target":"1c96-263"},{"source":"1c96-78","target":"1c96-268"},{"source":"1c96-78","target":"1c96-262"},{"source":"1c96-78","target":"1c96-269"},{"source":"1c96-78","target":"1c96-67"},{"source":"1c96-78","target":"1c96-65"},{"source":"1c96-78","target":"1c96-77"},{"source":"1c96-82","target":"1c96-28"},{"source":"1c96-82","target":"1c96-267"},{"source":"1c96-82","target":"1c96-263"},{"source":"1c96-82","target":"1c96-264"},{"source":"1c96-82","target":"1c96-270"},{"source":"1c96-82","target":"1c96-271"},{"source":"1c96-82","target":"1c96-269"},{"source":"1c96-82","target":"1c96-79"},{"source":"1c96-82","target":"1c96-80"},{"source":"1c96-82","target":"1c96-63"},{"source":"1c96-82","target":"1c96-81"},{"source":"1c96-85","target":"1c96-263"},{"source":"1c96-85","target":"1c96-264"},{"source":"1c96-85","target":"1c96-84"},{"source":"1c96-85","target":"1c96-58"},{"source":"1c96-98","target":"1c96-28"},{"source":"1c96-98","target":"1c96-263"},{"source":"1c96-98","target":"1c96-264"},{"source":"1c96-98","target":"1c96-262"},{"source":"1c96-98","target":"1c96-54"},{"source":"1c96-98","target":"1c96-96"},{"source":"1c96-98","target":"1c96-97"},{"source":"1c96-94","target":"1c96-28"},{"source":"1c96-94","target":"1c96-263"},{"source":"1c96-94","target":"1c96-264"},{"source":"1c96-94","target":"1c96-272"},{"source":"1c96-94","target":"1c96-87"},{"source":"1c96-94","target":"1c96-89"},{"source":"1c96-94","target":"1c96-91"},{"source":"1c96-94","target":"1c96-92"},{"source":"1c96-94","target":"1c96-63"},{"source":"1c96-94","target":"1c96-93"},{"source":"1c96-54","target":"1c96-263"},{"source":"1c96-54","target":"1c96-264"},{"source":"1c96-54","target":"1c96-269"},{"source":"1c96-45","target":"1c96-267"},{"source":"1c96-45","target":"1c96-263"},{"source":"1c96-45","target":"1c96-264"},{"source":"1c96-45","target":"1c96-273"},{"source":"1c96-45","target":"1c96-36"},{"source":"1c96-45","target":"1c96-43"},{"source":"1c96-45","target":"1c96-44"},{"source":"1c96-122","target":"1c96-263"},{"source":"1c96-122","target":"1c96-269"},{"source":"1c96-122","target":"1c96-262"},{"source":"1c96-122","target":"1c96-264"},{"source":"1c96-122","target":"1c96-118"},{"source":"1c96-122","target":"1c96-99"},{"source":"1c96-122","target":"1c96-63"},{"source":"1c96-122","target":"1c96-114"},{"source":"1c96-122","target":"1c96-120"},{"source":"1c96-122","target":"1c96-121"},{"source":"1c96-167","target":"1c96-263"},{"source":"1c96-167","target":"1c96-264"},{"source":"1c96-167","target":"1c96-127"},{"source":"1c96-167","target":"1c96-128"},{"source":"1c96-167","target":"1c96-132"},{"source":"1c96-167","target":"1c96-133"},{"source":"1c96-167","target":"1c96-135"},{"source":"1c96-167","target":"1c96-157"},{"source":"1c96-167","target":"1c96-165"},{"source":"1c96-167","target":"1c96-166"},{"source":"1c96-58","target":"1c96-28"},{"source":"1c96-58","target":"1c96-270"},{"source":"1c96-58","target":"1c96-57"},{"source":"1c96-58","target":"1c96-46"},{"source":"1c96-58","target":"1c96-47"},{"source":"1c96-120","target":"1c96-262"},{"source":"1c96-120","target":"1c96-99"},{"source":"1c96-120","target":"1c96-119"},{"source":"1c96-63","target":"1c96-28"},{"source":"1c96-63","target":"1c96-262"},{"source":"1c96-63","target":"1c96-59"},{"source":"1c96-63","target":"1c96-60"},{"source":"1c96-63","target":"1c96-61"},{"source":"1c96-63","target":"1c96-62"},{"source":"1c96-168","target":"1c96-68"},{"source":"1c96-168","target":"1c96-80"},{"source":"1c96-168","target":"1c96-63"},{"source":"1c96-169","target":"1c96-274"},{"source":"1c96-171","target":"1c96-99"},{"source":"1c96-171","target":"1c96-170"},{"source":"1c96-172","target":"1c96-99"},{"source":"1c96-173","target":"1c96-172"},{"source":"1c96-178","target":"1c96-175"},{"source":"1c96-178","target":"1c96-177"},{"source":"1c96-175","target":"1c96-172"},{"source":"1c96-175","target":"1c96-174"},{"source":"1c96-180","target":"1c96-99"},{"source":"1c96-180","target":"1c96-179"},{"source":"1c96-181","target":"1c96-173"},{"source":"1c96-181","target":"1c96-150"},{"source":"1c96-182","target":"1c96-181"},{"source":"1c96-182","target":"1c96-153"},{"source":"1c96-185","target":"1c96-99"},{"source":"1c96-185","target":"1c96-184"},{"source":"1c96-185","target":"1c96-150"},{"source":"1c96-187","target":"1c96-173"},{"source":"1c96-187","target":"1c96-186"},{"source":"1c96-187","target":"1c96-170"},{"source":"1c96-189","target":"1c96-172"},{"source":"1c96-189","target":"1c96-188"},{"source":"1c96-190","target":"1c96-181"},{"source":"1c96-191","target":"1c96-173"},{"source":"1c96-191","target":"1c96-170"},{"source":"1c96-191","target":"1c96-63"},{"source":"1c96-193","target":"1c96-172"},{"source":"1c96-193","target":"1c96-192"},{"source":"1c96-174","target":"1c96-153"},{"source":"1c96-183","target":"1c96-150"},{"source":"1c96-183","target":"1c96-99"},{"source":"1c96-179","target":"1c96-99"},{"source":"1c96-179","target":"1c96-170"},{"source":"1c96-188","target":"1c96-63"},{"source":"1c96-188","target":"1c96-184"},{"source":"1c96-184","target":"1c96-183"},{"source":"1c96-192","target":"1c96-63"},{"source":"1c96-192","target":"1c96-184"},{"source":"1c96-194","target":"1c96-63"},{"source":"1c96-194","target":"1c96-184"},{"source":"1c96-149","target":"1c96-274"},{"source":"1c96-149","target":"1c96-275"},{"source":"1c96-196","target":"1c96-149"},{"source":"1c96-170","target":"1c96-149"},{"source":"1c96-186","target":"1c96-153"},{"source":"1c96-186","target":"1c96-177"},{"source":"1c96-153","target":"1c96-149"},{"source":"1c96-153","target":"1c96-152"},{"source":"1c96-150","target":"1c96-149"},{"source":"1c96-151","target":"1c96-149"},{"source":"1c96-152","target":"1c96-149"},{"source":"1c96-152","target":"1c96-151"},{"source":"1c96-176","target":"1c96-274"},{"source":"1c96-176","target":"1c96-275"},{"source":"1c96-177","target":"1c96-176"},{"source":"1c96-197","target":"1c96-176"},{"source":"1c96-121","target":"1c96-114"},{"source":"1c96-121","target":"1c96-119"},{"source":"1c96-114","target":"1c96-262"},{"source":"1c96-114","target":"1c96-100"},{"source":"1c96-114","target":"1c96-101"},{"source":"1c96-114","target":"1c96-102"},{"source":"1c96-114","target":"1c96-103"},{"source":"1c96-114","target":"1c96-104"},{"source":"1c96-114","target":"1c96-105"},{"source":"1c96-114","target":"1c96-106"},{"source":"1c96-114","target":"1c96-107"},{"source":"1c96-114","target":"1c96-108"},{"source":"1c96-114","target":"1c96-109"},{"source":"1c96-114","target":"1c96-110"},{"source":"1c96-114","target":"1c96-111"},{"source":"1c96-114","target":"1c96-112"},{"source":"1c96-114","target":"1c96-113"},{"source":"1c96-118","target":"1c96-116"},{"source":"1c96-118","target":"1c96-117"},{"source":"1c96-260","target":"1c96-28"},{"source":"1c96-260","target":"1c96-276"},{"source":"1c96-260","target":"1c96-277"},{"source":"1c96-260","target":"1c96-209"},{"source":"1c96-260","target":"1c96-259"},{"source":"1c96-260","target":"1c96-214"},{"source":"1c96-214","target":"1c96-28"},{"source":"1c96-214","target":"1c96-262"},{"source":"1c96-214","target":"1c96-269"},{"source":"1c96-214","target":"1c96-114"},{"source":"1c96-232","target":"1c96-278"},{"source":"1c96-232","target":"1c96-279"},{"source":"1c96-49","target":"1c96-267"},{"source":"1c96-49","target":"1c96-263"},{"source":"1c96-49","target":"1c96-264"},{"source":"1c96-49","target":"1c96-262"},{"source":"1c96-49","target":"1c96-269"},{"source":"1c96-49","target":"1c96-47"},{"source":"1c96-49","target":"1c96-48"},{"source":"1c96-53","target":"1c96-267"},{"source":"1c96-53","target":"1c96-263"},{"source":"1c96-53","target":"1c96-264"},{"source":"1c96-53","target":"1c96-269"},{"source":"1c96-53","target":"1c96-51"},{"source":"1c96-53","target":"1c96-47"},{"source":"1c96-53","target":"1c96-52"},{"source":"1c96-56","target":"1c96-267"},{"source":"1c96-56","target":"1c96-263"},{"source":"1c96-56","target":"1c96-264"},{"source":"1c96-56","target":"1c96-262"},{"source":"1c96-56","target":"1c96-54"},{"source":"1c96-56","target":"1c96-55"},{"source":"1c96-47","target":"1c96-262"},{"source":"1c96-47","target":"1c96-46"},{"source":"1c96-75","target":"1c96-28"},{"source":"1c96-75","target":"1c96-267"},{"source":"1c96-75","target":"1c96-263"},{"source":"1c96-75","target":"1c96-264"},{"source":"1c96-75","target":"1c96-269"},{"source":"1c96-75","target":"1c96-262"},{"source":"1c96-75","target":"1c96-67"},{"source":"1c96-75","target":"1c96-69"},{"source":"1c96-75","target":"1c96-68"},{"source":"1c96-75","target":"1c96-65"},{"source":"1c96-75","target":"1c96-70"},{"source":"1c96-75","target":"1c96-72"},{"source":"1c96-75","target":"1c96-73"},{"source":"1c96-75","target":"1c96-74"},{"source":"1c96-67","target":"1c96-267"},{"source":"1c96-67","target":"1c96-263"},{"source":"1c96-67","target":"1c96-264"},{"source":"1c96-67","target":"1c96-262"},{"source":"1c96-67","target":"1c96-269"},{"source":"1c96-67","target":"1c96-65"},{"source":"1c96-67","target":"1c96-66"},{"source":"1c96-65","target":"1c96-262"},{"source":"1c96-77","target":"1c96-269"},{"source":"1c96-79","target":"1c96-57"},{"source":"1c96-84","target":"1c96-28"},{"source":"1c96-84","target":"1c96-267"},{"source":"1c96-84","target":"1c96-263"},{"source":"1c96-84","target":"1c96-264"},{"source":"1c96-84","target":"1c96-269"},{"source":"1c96-84","target":"1c96-262"},{"source":"1c96-84","target":"1c96-70"},{"source":"1c96-84","target":"1c96-72"},{"source":"1c96-84","target":"1c96-83"},{"source":"1c96-84","target":"1c96-74"},{"source":"1c96-96","target":"1c96-28"},{"source":"1c96-96","target":"1c96-263"},{"source":"1c96-96","target":"1c96-264"},{"source":"1c96-96","target":"1c96-280"},{"source":"1c96-96","target":"1c96-262"},{"source":"1c96-96","target":"1c96-94"},{"source":"1c96-96","target":"1c96-95"},{"source":"1c96-96","target":"1c96-63"},{"source":"1c96-97","target":"1c96-269"},{"source":"1c96-87","target":"1c96-28"},{"source":"1c96-87","target":"1c96-263"},{"source":"1c96-87","target":"1c96-264"},{"source":"1c96-87","target":"1c96-86"},{"source":"1c96-87","target":"1c96-63"},{"source":"1c96-89","target":"1c96-28"},{"source":"1c96-89","target":"1c96-263"},{"source":"1c96-89","target":"1c96-264"},{"source":"1c96-89","target":"1c96-281"},{"source":"1c96-89","target":"1c96-282"},{"source":"1c96-89","target":"1c96-262"},{"source":"1c96-89","target":"1c96-88"},{"source":"1c96-91","target":"1c96-263"},{"source":"1c96-91","target":"1c96-283"},{"source":"1c96-91","target":"1c96-264"},{"source":"1c96-91","target":"1c96-90"},{"source":"1c96-92","target":"1c96-263"},{"source":"1c96-93","target":"1c96-269"},{"source":"1c96-36","target":"1c96-28"},{"source":"1c96-36","target":"1c96-267"},{"source":"1c96-36","target":"1c96-263"},{"source":"1c96-36","target":"1c96-264"},{"source":"1c96-36","target":"1c96-262"},{"source":"1c96-36","target":"1c96-269"},{"source":"1c96-36","target":"1c96-284"},{"source":"1c96-36","target":"1c96-31"},{"source":"1c96-36","target":"1c96-33"},{"source":"1c96-36","target":"1c96-34"},{"source":"1c96-36","target":"1c96-35"},{"source":"1c96-43","target":"1c96-28"},{"source":"1c96-43","target":"1c96-267"},{"source":"1c96-43","target":"1c96-263"},{"source":"1c96-43","target":"1c96-264"},{"source":"1c96-43","target":"1c96-262"},{"source":"1c96-43","target":"1c96-285"},{"source":"1c96-43","target":"1c96-286"},{"source":"1c96-43","target":"1c96-269"},{"source":"1c96-43","target":"1c96-40"},{"source":"1c96-43","target":"1c96-33"},{"source":"1c96-43","target":"1c96-34"},{"source":"1c96-43","target":"1c96-41"},{"source":"1c96-43","target":"1c96-42"},{"source":"1c96-44","target":"1c96-269"},{"source":"1c96-127","target":"1c96-28"},{"source":"1c96-127","target":"1c96-287"},{"source":"1c96-127","target":"1c96-123"},{"source":"1c96-127","target":"1c96-125"},{"source":"1c96-127","target":"1c96-126"},{"source":"1c96-127","target":"1c96-63"},{"source":"1c96-127","target":"1c96-124"},{"source":"1c96-128","target":"1c96-263"},{"source":"1c96-128","target":"1c96-288"},{"source":"1c96-132","target":"1c96-263"},{"source":"1c96-132","target":"1c96-129"},{"source":"1c96-132","target":"1c96-130"},{"source":"1c96-132","target":"1c96-124"},{"source":"1c96-132","target":"1c96-131"},{"source":"1c96-133","target":"1c96-263"},{"source":"1c96-133","target":"1c96-264"},{"source":"1c96-135","target":"1c96-267"},{"source":"1c96-135","target":"1c96-263"},{"source":"1c96-135","target":"1c96-264"},{"source":"1c96-135","target":"1c96-134"},{"source":"1c96-157","target":"1c96-263"},{"source":"1c96-157","target":"1c96-264"},{"source":"1c96-157","target":"1c96-147"},{"source":"1c96-157","target":"1c96-156"},{"source":"1c96-165","target":"1c96-263"},{"source":"1c96-165","target":"1c96-264"},{"source":"1c96-165","target":"1c96-136"},{"source":"1c96-165","target":"1c96-158"},{"source":"1c96-165","target":"1c96-164"},{"source":"1c96-166","target":"1c96-263"},{"source":"1c96-166","target":"1c96-124"},{"source":"1c96-46","target":"1c96-262"},{"source":"1c96-59","target":"1c96-263"},{"source":"1c96-60","target":"1c96-263"},{"source":"1c96-61","target":"1c96-263"},{"source":"1c96-62","target":"1c96-263"},{"source":"1c96-68","target":"1c96-262"},{"source":"1c96-100","target":"1c96-263"},{"source":"1c96-100","target":"1c96-289"},{"source":"1c96-101","target":"1c96-263"},{"source":"1c96-101","target":"1c96-289"},{"source":"1c96-102","target":"1c96-263"},{"source":"1c96-102","target":"1c96-289"},{"source":"1c96-103","target":"1c96-263"},{"source":"1c96-103","target":"1c96-289"},{"source":"1c96-104","target":"1c96-263"},{"source":"1c96-104","target":"1c96-289"},{"source":"1c96-105","target":"1c96-263"},{"source":"1c96-105","target":"1c96-289"},{"source":"1c96-106","target":"1c96-263"},{"source":"1c96-106","target":"1c96-289"},{"source":"1c96-107","target":"1c96-263"},{"source":"1c96-107","target":"1c96-289"},{"source":"1c96-108","target":"1c96-263"},{"source":"1c96-108","target":"1c96-289"},{"source":"1c96-109","target":"1c96-263"},{"source":"1c96-109","target":"1c96-289"},{"source":"1c96-110","target":"1c96-263"},{"source":"1c96-110","target":"1c96-289"},{"source":"1c96-111","target":"1c96-263"},{"source":"1c96-111","target":"1c96-289"},{"source":"1c96-112","target":"1c96-263"},{"source":"1c96-112","target":"1c96-289"},{"source":"1c96-113","target":"1c96-263"},{"source":"1c96-113","target":"1c96-289"},{"source":"1c96-116","target":"1c96-115"},{"source":"1c96-117","target":"1c96-115"},{"source":"1c96-117","target":"1c96-116"},{"source":"1c96-209","target":"1c96-199"},{"source":"1c96-209","target":"1c96-208"},{"source":"1c96-259","target":"1c96-28"},{"source":"1c96-259","target":"1c96-262"},{"source":"1c96-259","target":"1c96-211"},{"source":"1c96-259","target":"1c96-253"},{"source":"1c96-259","target":"1c96-257"},{"source":"1c96-259","target":"1c96-258"},{"source":"1c96-51","target":"1c96-267"},{"source":"1c96-51","target":"1c96-263"},{"source":"1c96-51","target":"1c96-264"},{"source":"1c96-51","target":"1c96-262"},{"source":"1c96-51","target":"1c96-269"},{"source":"1c96-51","target":"1c96-47"},{"source":"1c96-51","target":"1c96-50"},{"source":"1c96-52","target":"1c96-269"},{"source":"1c96-55","target":"1c96-269"},{"source":"1c96-69","target":"1c96-267"},{"source":"1c96-69","target":"1c96-263"},{"source":"1c96-69","target":"1c96-264"},{"source":"1c96-69","target":"1c96-262"},{"source":"1c96-69","target":"1c96-269"},{"source":"1c96-69","target":"1c96-68"},{"source":"1c96-69","target":"1c96-66"},{"source":"1c96-70","target":"1c96-269"},{"source":"1c96-72","target":"1c96-267"},{"source":"1c96-72","target":"1c96-263"},{"source":"1c96-72","target":"1c96-273"},{"source":"1c96-72","target":"1c96-268"},{"source":"1c96-72","target":"1c96-71"},{"source":"1c96-73","target":"1c96-263"},{"source":"1c96-66","target":"1c96-269"},{"source":"1c96-83","target":"1c96-263"},{"source":"1c96-95","target":"1c96-269"},{"source":"1c96-88","target":"1c96-269"},{"source":"1c96-90","target":"1c96-28"},{"source":"1c96-90","target":"1c96-263"},{"source":"1c96-90","target":"1c96-264"},{"source":"1c96-31","target":"1c96-28"},{"source":"1c96-31","target":"1c96-267"},{"source":"1c96-31","target":"1c96-263"},{"source":"1c96-31","target":"1c96-264"},{"source":"1c96-31","target":"1c96-273"},{"source":"1c96-31","target":"1c96-29"},{"source":"1c96-31","target":"1c96-269"},{"source":"1c96-31","target":"1c96-30"},{"source":"1c96-33","target":"1c96-267"},{"source":"1c96-33","target":"1c96-263"},{"source":"1c96-33","target":"1c96-264"},{"source":"1c96-33","target":"1c96-290"},{"source":"1c96-33","target":"1c96-291"},{"source":"1c96-33","target":"1c96-32"},{"source":"1c96-40","target":"1c96-28"},{"source":"1c96-40","target":"1c96-267"},{"source":"1c96-40","target":"1c96-263"},{"source":"1c96-40","target":"1c96-264"},{"source":"1c96-40","target":"1c96-273"},{"source":"1c96-40","target":"1c96-29"},{"source":"1c96-40","target":"1c96-38"},{"source":"1c96-40","target":"1c96-269"},{"source":"1c96-40","target":"1c96-39"},{"source":"1c96-41","target":"1c96-270"},{"source":"1c96-42","target":"1c96-269"},{"source":"1c96-125","target":"1c96-124"},{"source":"1c96-129","target":"1c96-263"},{"source":"1c96-129","target":"1c96-265"},{"source":"1c96-130","target":"1c96-287"},{"source":"1c96-134","target":"1c96-269"},{"source":"1c96-134","target":"1c96-124"},{"source":"1c96-147","target":"1c96-263"},{"source":"1c96-147","target":"1c96-264"},{"source":"1c96-147","target":"1c96-136"},{"source":"1c96-147","target":"1c96-144"},{"source":"1c96-147","target":"1c96-145"},{"source":"1c96-147","target":"1c96-146"},{"source":"1c96-147","target":"1c96-133"},{"source":"1c96-147","target":"1c96-287"},{"source":"1c96-156","target":"1c96-263"},{"source":"1c96-156","target":"1c96-264"},{"source":"1c96-156","target":"1c96-133"},{"source":"1c96-156","target":"1c96-148"},{"source":"1c96-156","target":"1c96-155"},{"source":"1c96-136","target":"1c96-263"},{"source":"1c96-158","target":"1c96-263"},{"source":"1c96-158","target":"1c96-264"},{"source":"1c96-158","target":"1c96-133"},{"source":"1c96-158","target":"1c96-139"},{"source":"1c96-164","target":"1c96-263"},{"source":"1c96-164","target":"1c96-264"},{"source":"1c96-164","target":"1c96-136"},{"source":"1c96-164","target":"1c96-159"},{"source":"1c96-164","target":"1c96-163"},{"source":"1c96-164","target":"1c96-146"},{"source":"1c96-164","target":"1c96-133"},{"source":"1c96-164","target":"1c96-287"},{"source":"1c96-115","target":"1c96-99"},{"source":"1c96-115","target":"1c96-63"},{"source":"1c96-115","target":"1c96-114"},{"source":"1c96-199","target":"1c96-198"},{"source":"1c96-208","target":"1c96-205"},{"source":"1c96-208","target":"1c96-207"},{"source":"1c96-211","target":"1c96-210"},{"source":"1c96-253","target":"1c96-246"},{"source":"1c96-253","target":"1c96-252"},{"source":"1c96-257","target":"1c96-254"},{"source":"1c96-257","target":"1c96-256"},{"source":"1c96-258","target":"1c96-245"},{"source":"1c96-258","target":"1c96-232"},{"source":"1c96-258","target":"1c96-231"},{"source":"1c96-71","target":"1c96-269"},{"source":"1c96-29","target":"1c96-267"},{"source":"1c96-29","target":"1c96-263"},{"source":"1c96-29","target":"1c96-264"},{"source":"1c96-30","target":"1c96-269"},{"source":"1c96-32","target":"1c96-269"},{"source":"1c96-38","target":"1c96-267"},{"source":"1c96-38","target":"1c96-263"},{"source":"1c96-38","target":"1c96-264"},{"source":"1c96-38","target":"1c96-292"},{"source":"1c96-38","target":"1c96-37"},{"source":"1c96-39","target":"1c96-269"},{"source":"1c96-144","target":"1c96-267"},{"source":"1c96-144","target":"1c96-263"},{"source":"1c96-144","target":"1c96-264"},{"source":"1c96-144","target":"1c96-138"},{"source":"1c96-144","target":"1c96-134"},{"source":"1c96-144","target":"1c96-139"},{"source":"1c96-144","target":"1c96-133"},{"source":"1c96-144","target":"1c96-143"},{"source":"1c96-145","target":"1c96-263"},{"source":"1c96-145","target":"1c96-264"},{"source":"1c96-145","target":"1c96-133"},{"source":"1c96-145","target":"1c96-139"},{"source":"1c96-146","target":"1c96-28"},{"source":"1c96-146","target":"1c96-267"},{"source":"1c96-146","target":"1c96-263"},{"source":"1c96-146","target":"1c96-134"},{"source":"1c96-146","target":"1c96-139"},{"source":"1c96-148","target":"1c96-267"},{"source":"1c96-148","target":"1c96-263"},{"source":"1c96-148","target":"1c96-264"},{"source":"1c96-148","target":"1c96-134"},{"source":"1c96-148","target":"1c96-133"},{"source":"1c96-148","target":"1c96-139"},{"source":"1c96-155","target":"1c96-80"},{"source":"1c96-155","target":"1c96-150"},{"source":"1c96-155","target":"1c96-63"},{"source":"1c96-155","target":"1c96-153"},{"source":"1c96-155","target":"1c96-154"},{"source":"1c96-139","target":"1c96-28"},{"source":"1c96-139","target":"1c96-267"},{"source":"1c96-139","target":"1c96-263"},{"source":"1c96-139","target":"1c96-264"},{"source":"1c96-139","target":"1c96-273"},{"source":"1c96-139","target":"1c96-134"},{"source":"1c96-139","target":"1c96-133"},{"source":"1c96-159","target":"1c96-263"},{"source":"1c96-159","target":"1c96-264"},{"source":"1c96-159","target":"1c96-138"},{"source":"1c96-159","target":"1c96-139"},{"source":"1c96-159","target":"1c96-133"},{"source":"1c96-163","target":"1c96-28"},{"source":"1c96-163","target":"1c96-263"},{"source":"1c96-163","target":"1c96-264"},{"source":"1c96-163","target":"1c96-162"},{"source":"1c96-163","target":"1c96-139"},{"source":"1c96-163","target":"1c96-133"},{"source":"1c96-163","target":"1c96-124"},{"source":"1c96-163","target":"1c96-146"},{"source":"1c96-198","target":"1c96-276"},{"source":"1c96-198","target":"1c96-293"},{"source":"1c96-198","target":"1c96-294"},{"source":"1c96-205","target":"1c96-295"},{"source":"1c96-205","target":"1c96-296"},{"source":"1c96-205","target":"1c96-200"},{"source":"1c96-205","target":"1c96-201"},{"source":"1c96-205","target":"1c96-202"},{"source":"1c96-205","target":"1c96-204"},{"source":"1c96-205","target":"1c96-114"},{"source":"1c96-207","target":"1c96-206"},{"source":"1c96-207","target":"1c96-114"},{"source":"1c96-246","target":"1c96-28"},{"source":"1c96-246","target":"1c96-297"},{"source":"1c96-246","target":"1c96-294"},{"source":"1c96-246","target":"1c96-213"},{"source":"1c96-246","target":"1c96-221"},{"source":"1c96-246","target":"1c96-227"},{"source":"1c96-246","target":"1c96-233"},{"source":"1c96-246","target":"1c96-235"},{"source":"1c96-246","target":"1c96-236"},{"source":"1c96-246","target":"1c96-237"},{"source":"1c96-246","target":"1c96-239"},{"source":"1c96-246","target":"1c96-240"},{"source":"1c96-246","target":"1c96-114"},{"source":"1c96-246","target":"1c96-242"},{"source":"1c96-246","target":"1c96-243"},{"source":"1c96-246","target":"1c96-244"},{"source":"1c96-246","target":"1c96-245"},{"source":"1c96-246","target":"1c96-120"},{"source":"1c96-246","target":"1c96-226"},{"source":"1c96-252","target":"1c96-248"},{"source":"1c96-252","target":"1c96-250"},{"source":"1c96-252","target":"1c96-251"},{"source":"1c96-254","target":"1c96-278"},{"source":"1c96-254","target":"1c96-298"},{"source":"1c96-254","target":"1c96-299"},{"source":"1c96-254","target":"1c96-300"},{"source":"1c96-254","target":"1c96-301"},{"source":"1c96-254","target":"1c96-279"},{"source":"1c96-256","target":"1c96-255"},{"source":"1c96-256","target":"1c96-114"},{"source":"1c96-138","target":"1c96-264"},{"source":"1c96-138","target":"1c96-137"},{"source":"1c96-143","target":"1c96-267"},{"source":"1c96-143","target":"1c96-263"},{"source":"1c96-143","target":"1c96-264"},{"source":"1c96-143","target":"1c96-133"},{"source":"1c96-143","target":"1c96-124"},{"source":"1c96-143","target":"1c96-134"},{"source":"1c96-143","target":"1c96-140"},{"source":"1c96-143","target":"1c96-141"},{"source":"1c96-143","target":"1c96-142"},{"source":"1c96-154","target":"1c96-262"},{"source":"1c96-154","target":"1c96-80"},{"source":"1c96-154","target":"1c96-150"},{"source":"1c96-154","target":"1c96-153"},{"source":"1c96-154","target":"1c96-63"},{"source":"1c96-162","target":"1c96-160"},{"source":"1c96-162","target":"1c96-269"},{"source":"1c96-162","target":"1c96-161"},{"source":"1c96-204","target":"1c96-203"},{"source":"1c96-213","target":"1c96-212"},{"source":"1c96-221","target":"1c96-297"},{"source":"1c96-221","target":"1c96-216"},{"source":"1c96-221","target":"1c96-217"},{"source":"1c96-221","target":"1c96-218"},{"source":"1c96-221","target":"1c96-219"},{"source":"1c96-221","target":"1c96-220"},{"source":"1c96-221","target":"1c96-114"},{"source":"1c96-221","target":"1c96-214"},{"source":"1c96-227","target":"1c96-28"},{"source":"1c96-227","target":"1c96-262"},{"source":"1c96-227","target":"1c96-302"},{"source":"1c96-227","target":"1c96-297"},{"source":"1c96-227","target":"1c96-303"},{"source":"1c96-227","target":"1c96-294"},{"source":"1c96-227","target":"1c96-216"},{"source":"1c96-227","target":"1c96-222"},{"source":"1c96-227","target":"1c96-114"},{"source":"1c96-227","target":"1c96-120"},{"source":"1c96-227","target":"1c96-223"},{"source":"1c96-227","target":"1c96-224"},{"source":"1c96-227","target":"1c96-214"},{"source":"1c96-227","target":"1c96-215"},{"source":"1c96-227","target":"1c96-226"},{"source":"1c96-233","target":"1c96-269"},{"source":"1c96-233","target":"1c96-228"},{"source":"1c96-233","target":"1c96-229"},{"source":"1c96-233","target":"1c96-230"},{"source":"1c96-233","target":"1c96-212"},{"source":"1c96-233","target":"1c96-223"},{"source":"1c96-233","target":"1c96-231"},{"source":"1c96-233","target":"1c96-232"},{"source":"1c96-233","target":"1c96-114"},{"source":"1c96-233","target":"1c96-120"},{"source":"1c96-233","target":"1c96-224"},{"source":"1c96-233","target":"1c96-226"},{"source":"1c96-235","target":"1c96-294"},{"source":"1c96-235","target":"1c96-155"},{"source":"1c96-235","target":"1c96-114"},{"source":"1c96-235","target":"1c96-234"},{"source":"1c96-235","target":"1c96-214"},{"source":"1c96-235","target":"1c96-215"},{"source":"1c96-236","target":"1c96-294"},{"source":"1c96-236","target":"1c96-155"},{"source":"1c96-236","target":"1c96-114"},{"source":"1c96-236","target":"1c96-234"},{"source":"1c96-236","target":"1c96-214"},{"source":"1c96-236","target":"1c96-215"},{"source":"1c96-237","target":"1c96-214"},{"source":"1c96-237","target":"1c96-215"},{"source":"1c96-239","target":"1c96-238"},{"source":"1c96-239","target":"1c96-114"},{"source":"1c96-242","target":"1c96-28"},{"source":"1c96-242","target":"1c96-304"},{"source":"1c96-242","target":"1c96-305"},{"source":"1c96-242","target":"1c96-241"},{"source":"1c96-242","target":"1c96-114"},{"source":"1c96-242","target":"1c96-203"},{"source":"1c96-243","target":"1c96-28"},{"source":"1c96-243","target":"1c96-295"},{"source":"1c96-243","target":"1c96-296"},{"source":"1c96-243","target":"1c96-114"},{"source":"1c96-243","target":"1c96-203"},{"source":"1c96-244","target":"1c96-295"},{"source":"1c96-244","target":"1c96-306"},{"source":"1c96-244","target":"1c96-232"},{"source":"1c96-244","target":"1c96-241"},{"source":"1c96-244","target":"1c96-114"},{"source":"1c96-226","target":"1c96-225"},{"source":"1c96-248","target":"1c96-155"},{"source":"1c96-248","target":"1c96-114"},{"source":"1c96-248","target":"1c96-247"},{"source":"1c96-250","target":"1c96-155"},{"source":"1c96-250","target":"1c96-249"},{"source":"1c96-250","target":"1c96-114"},{"source":"1c96-251","target":"1c96-125"},{"source":"1c96-251","target":"1c96-124"},{"source":"1c96-255","target":"1c96-269"},{"source":"1c96-255","target":"1c96-161"},{"source":"1c96-255","target":"1c96-214"},{"source":"1c96-140","target":"1c96-263"},{"source":"1c96-141","target":"1c96-263"},{"source":"1c96-142","target":"1c96-263"},{"source":"1c96-212","target":"1c96-114"},{"source":"1c96-216","target":"1c96-294"},{"source":"1c96-216","target":"1c96-214"},{"source":"1c96-216","target":"1c96-215"},{"source":"1c96-217","target":"1c96-276"},{"source":"1c96-219","target":"1c96-216"},{"source":"1c96-219","target":"1c96-217"},{"source":"1c96-219","target":"1c96-221"},{"source":"1c96-219","target":"1c96-214"},{"source":"1c96-220","target":"1c96-294"},{"source":"1c96-220","target":"1c96-214"},{"source":"1c96-220","target":"1c96-221"},{"source":"1c96-222","target":"1c96-28"},{"source":"1c96-222","target":"1c96-302"},{"source":"1c96-222","target":"1c96-307"},{"source":"1c96-222","target":"1c96-297"},{"source":"1c96-222","target":"1c96-262"},{"source":"1c96-222","target":"1c96-161"},{"source":"1c96-222","target":"1c96-214"},{"source":"1c96-222","target":"1c96-114"},{"source":"1c96-222","target":"1c96-215"},{"source":"1c96-215","target":"1c96-214"},{"source":"1c96-215","target":"1c96-114"},{"source":"1c96-228","target":"1c96-308"},{"source":"1c96-228","target":"1c96-114"},{"source":"1c96-228","target":"1c96-203"},{"source":"1c96-230","target":"1c96-269"},{"source":"1c96-230","target":"1c96-161"},{"source":"1c96-234","target":"1c96-155"},{"source":"1c96-241","target":"1c96-114"},{"source":"1c96-225","target":"1c96-168"},{"source":"1c96-225","target":"1c96-170"},{"source":"1c96-225","target":"1c96-186"},{"source":"1c96-247","target":"1c96-155"},{"source":"1c96-249","target":"1c96-155"}]};
|
|
3349
|
+
const data = {"version":1,"tree":{"name":"lib.js","children":[{"name":"locales","children":[{"name":"ar","children":[{"name":"translations.json","uid":"9879-0"}]},{"name":"ar_EG","children":[{"name":"translations.json","uid":"9879-1"}]},{"name":"ar_IQ","children":[{"name":"translations.json","uid":"9879-2"}]},{"name":"ckb","children":[{"name":"translations.json","uid":"9879-3"}]},{"name":"da","children":[{"name":"translations.json","uid":"9879-4"}]},{"name":"en","children":[{"name":"translations.json","uid":"9879-5"}]},{"name":"es","children":[{"name":"translations.json","uid":"9879-6"}]},{"name":"fr","children":[{"name":"translations.json","uid":"9879-7"}]},{"name":"id","children":[{"name":"translations.json","uid":"9879-8"}]},{"name":"km","children":[{"name":"translations.json","uid":"9879-9"}]},{"name":"lo","children":[{"name":"translations.json","uid":"9879-10"}]},{"name":"my","children":[{"name":"translations.json","uid":"9879-11"}]},{"name":"nb","children":[{"name":"translations.json","uid":"9879-12"}]},{"name":"prs","children":[{"name":"translations.json","uid":"9879-13"}]},{"name":"ps","children":[{"name":"translations.json","uid":"9879-14"}]},{"name":"pt","children":[{"name":"translations.json","uid":"9879-15"}]},{"name":"pt_BR","children":[{"name":"translations.json","uid":"9879-16"}]},{"name":"ru","children":[{"name":"translations.json","uid":"9879-17"}]},{"name":"sv","children":[{"name":"translations.json","uid":"9879-18"}]},{"name":"tet","children":[{"name":"translations.json","uid":"9879-19"}]},{"name":"tg","children":[{"name":"translations.json","uid":"9879-20"}]},{"name":"uk","children":[{"name":"translations.json","uid":"9879-21"}]},{"name":"ur","children":[{"name":"translations.json","uid":"9879-22"}]},{"name":"uz_Cyrl","children":[{"name":"translations.json","uid":"9879-23"}]},{"name":"vi","children":[{"name":"translations.json","uid":"9879-24"}]},{"name":"zh","children":[{"name":"translations.json","uid":"9879-25"}]},{"name":"zh_CN","children":[{"name":"translations.json","uid":"9879-26"}]},{"name":"index.js","uid":"9879-27"}]},{"name":"components","children":[{"name":"ItemSelector","children":[{"name":"widgets","children":[{"name":"ItemIcon.js","uid":"9879-29"},{"name":"styles","children":[{"name":"UnselectedItem.style.js","uid":"9879-30"},{"name":"ArrowButton.style.js","uid":"9879-32"},{"name":"DeselectIconButton.style.js","uid":"9879-37"},{"name":"SelectedItem.style.js","uid":"9879-39"}]},{"name":"UnselectedItem.js","uid":"9879-31"},{"name":"ArrowButton.js","uid":"9879-33"},{"name":"DeselectIconButton.js","uid":"9879-38"},{"name":"SelectedItem.js","uid":"9879-40"}]},{"name":"modules","children":[{"name":"toggler.js","uid":"9879-34"},{"name":"reorderList.js","uid":"9879-41"}]},{"name":"styles","children":[{"name":"UnselectedItems.style.js","uid":"9879-35"},{"name":"SelectedItems.style.js","uid":"9879-42"},{"name":"ItemSelector.style.js","uid":"9879-44"}]},{"name":"UnselectedItems.js","uid":"9879-36"},{"name":"SelectedItems.js","uid":"9879-43"},{"name":"ItemSelector.js","uid":"9879-45"}]},{"name":"DataDimension","children":[{"name":"styles","children":[{"name":"DataTypesSelector.style.js","uid":"9879-48"},{"name":"Detail.style.js","uid":"9879-50"},{"name":"Groups.style.js","uid":"9879-52"}]},{"name":"DataTypesSelector.js","uid":"9879-49"},{"name":"Detail.js","uid":"9879-51"},{"name":"Groups.js","uid":"9879-53"},{"name":"DataDimension.js","uid":"9879-64"}]},{"name":"Filter","children":[{"name":"Filter.js","uid":"9879-54"}]},{"name":"styles","children":[{"name":"FilterField.style.js","uid":"9879-55"},{"name":"DimensionSelector.style.js","uid":"9879-70"},{"name":"TransferOption.style.js","uid":"9879-71"}]},{"name":"FilterField.js","uid":"9879-56"},{"name":"PeriodDimension","children":[{"name":"utils","children":[{"name":"fixedPeriods.js","uid":"9879-65"},{"name":"relativePeriods.js","uid":"9879-68"}]},{"name":"styles","children":[{"name":"PeriodFilter.style.js","uid":"9879-66"},{"name":"FixedPeriodSelect.style.js","uid":"9879-77"}]},{"name":"FixedPeriodFilter.js","uid":"9879-67"},{"name":"RelativePeriodFilter.js","uid":"9879-69"},{"name":"PeriodTransfer.js","uid":"9879-75"},{"name":"PeriodDimension.js","uid":"9879-76"},{"name":"FixedPeriodSelect.js","uid":"9879-78"}]},{"name":"TransferOption.js","uid":"9879-72"},{"name":"OrgUnitDimension","children":[{"name":"styles","children":[{"name":"OrgUnitDimension.style.js","uid":"9879-81"}]},{"name":"OrgUnitDimension.js","uid":"9879-82"}]},{"name":"DynamicDimension","children":[{"name":"ItemSelector.js","uid":"9879-84"},{"name":"DynamicDimension.js","uid":"9879-85"}]},{"name":"DimensionsPanel","children":[{"name":"List","children":[{"name":"styles","children":[{"name":"DimensionLabel.style.js","uid":"9879-86"},{"name":"RecommendedIcon.style.js","uid":"9879-88"},{"name":"DimensionItem.style.js","uid":"9879-93"},{"name":"DimensionList.style.js","uid":"9879-95"}]},{"name":"DimensionLabel.js","uid":"9879-87"},{"name":"RecommendedIcon.js","uid":"9879-89"},{"name":"OptionsButton.js","uid":"9879-91"},{"name":"DimensionItem.js","uid":"9879-94"},{"name":"DimensionList.js","uid":"9879-96"}]},{"name":"styles","children":[{"name":"DimensionsPanel.style.js","uid":"9879-97"}]},{"name":"DimensionsPanel.js","uid":"9879-98"}]},{"name":"DimensionMenu.js","uid":"9879-122"},{"name":"PivotTable","children":[{"name":"PivotTableEngineContext.js","uid":"9879-133"},{"name":"styles","children":[{"name":"PivotTable.style.js","uid":"9879-134"}]},{"name":"PivotTableContainer.js","uid":"9879-135"},{"name":"PivotTableClippedAxis.js","uid":"9879-136"},{"name":"PivotTableHeaderCell.js","uid":"9879-138"},{"name":"PivotTableCell.js","uid":"9879-139"},{"name":"icons","children":[{"name":"SortIconAscending.js","uid":"9879-140"},{"name":"SortIconDescending.js","uid":"9879-141"},{"name":"SortIconIdle.js","uid":"9879-142"}]},{"name":"PivotTableSortIcon.js","uid":"9879-143"},{"name":"PivotTableColumnHeaderCell.js","uid":"9879-144"},{"name":"PivotTableDimensionLabelCell.js","uid":"9879-145"},{"name":"PivotTableEmptyCell.js","uid":"9879-146"},{"name":"PivotTableColumnHeaders.js","uid":"9879-147"},{"name":"PivotTableTitleRow.js","uid":"9879-148"},{"name":"PivotTableTitleRows.js","uid":"9879-156"},{"name":"PivotTableHead.js","uid":"9879-157"},{"name":"PivotTableEmptyRow.js","uid":"9879-158"},{"name":"PivotTableRowHeaderCell.js","uid":"9879-159"},{"name":"PivotTableValueCell.js","uid":"9879-163"},{"name":"PivotTableRow.js","uid":"9879-164"},{"name":"PivotTableBody.js","uid":"9879-165"},{"name":"PivotTable.js","uid":"9879-167"}]}]},{"name":"modules","children":[{"name":"dataSets.js","uid":"9879-46"},{"name":"dataTypes.js","uid":"9879-47"},{"name":"predefinedDimensions.js","uid":"9879-63"},{"name":"dimensionSelectorHelper.js","uid":"9879-74"},{"name":"ouIdHelper","children":[{"name":"index.js","uid":"9879-80"}]},{"name":"layout","children":[{"name":"axis.js","uid":"9879-99"},{"name":"dimension.js","uid":"9879-149"},{"name":"dimensionIs.js","uid":"9879-150"},{"name":"dimensionIsEmpty.js","uid":"9879-151"},{"name":"dimensionIsValid.js","uid":"9879-152"},{"name":"dimensionGetItems.js","uid":"9879-153"},{"name":"axisGetDimension.js","uid":"9879-168"},{"name":"axisHasDimension.js","uid":"9879-169"},{"name":"layoutReplaceDimension.js","uid":"9879-170"},{"name":"layoutGetAllAxes.js","uid":"9879-171"},{"name":"layoutGetAllDimensions.js","uid":"9879-172"},{"name":"layoutGetDimension.js","uid":"9879-173"},{"name":"layout.js","uid":"9879-176"},{"name":"dimensionGetId.js","uid":"9879-177"},{"name":"layoutFilterDimensions.js","uid":"9879-178"},{"name":"axisGetAllItems.js","uid":"9879-179"},{"name":"layoutGetAllItems.js","uid":"9879-180"},{"name":"item.js","uid":"9879-181"},{"name":"itemGetId.js","uid":"9879-182"},{"name":"layoutGetAllItemIds.js","uid":"9879-183"},{"name":"axisGetDimensionIds.js","uid":"9879-184"},{"name":"layoutGetAxisIdDimensionIdsObject.js","uid":"9879-185"},{"name":"layoutGetDimensionItems.js","uid":"9879-186"},{"name":"dimensionGetItemIds.js","uid":"9879-187"},{"name":"layoutGetDimensionIdItemIdsObject.js","uid":"9879-188"},{"name":"axisHasDataDimension.js","uid":"9879-189"},{"name":"layoutHasDataDimension.js","uid":"9879-190"},{"name":"layoutHasDimension.js","uid":"9879-191"},{"name":"layoutHasDynamicDimension.js","uid":"9879-192"},{"name":"axisHasPeriodDimension.js","uid":"9879-193"},{"name":"layoutHasPeriodDimension.js","uid":"9879-194"},{"name":"axisHasOuDimension.js","uid":"9879-195"},{"name":"axisIsEmpty.js","uid":"9879-196"},{"name":"dimensionCreate.js","uid":"9879-197"},{"name":"itemIsValid.js","uid":"9879-198"},{"name":"dimensionHasRelativeItems.js","uid":"9879-226"},{"name":"axisHasRelativeItems.js","uid":"9879-227"}]},{"name":"visTypes.js","uid":"9879-114"},{"name":"layoutUiRules","children":[{"name":"rules.js","uid":"9879-115"},{"name":"rulesHelper.js","uid":"9879-116"},{"name":"rulesUtils.js","uid":"9879-117"},{"name":"index.js","uid":"9879-118"}]},{"name":"layoutTypes.js","uid":"9879-119"},{"name":"axis.js","uid":"9879-120"},{"name":"visTypeToLayoutType.js","uid":"9879-121"},{"name":"pivotTable","children":[{"name":"parseValue.js","uid":"9879-123"},{"name":"pivotTableConstants.js","uid":"9879-124"},{"name":"renderValue.js","uid":"9879-125"},{"name":"measureText.js","uid":"9879-126"},{"name":"PivotTableEngine.js","uid":"9879-127"},{"name":"useParentSize.js","uid":"9879-128"},{"name":"useScrollPosition.js","uid":"9879-129"},{"name":"clipAxis.js","uid":"9879-130"},{"name":"clipPartitionedAxis.js","uid":"9879-131"},{"name":"useTableClipping.js","uid":"9879-132"},{"name":"getHeaderForDisplay.js","uid":"9879-137"},{"name":"isColorBright.js","uid":"9879-160"},{"name":"applyLegendSet.js","uid":"9879-162"},{"name":"useSortableColumns.js","uid":"9879-166"}]},{"name":"getOuLevelAndGroupText.js","uid":"9879-154"},{"name":"legends.js","uid":"9879-161"},{"name":"ouLevelUtils","children":[{"name":"index.js","uid":"9879-174"}]},{"name":"relativeItems","children":[{"name":"index.js","uid":"9879-175"}]},{"name":"fontStyle.js","uid":"9879-215"}]},{"name":"api","children":[{"name":"index.js","uid":"9879-57"},{"name":"dimensions.js","uid":"9879-58"},{"name":"organisationUnits.js","uid":"9879-79"}]},{"name":"assets","children":[{"name":"DataIcon.js","uid":"9879-59"},{"name":"PeriodIcon.js","uid":"9879-60"},{"name":"OrgUnitIcon.js","uid":"9879-61"},{"name":"AssignedCategoriesIcon.js","uid":"9879-62"},{"name":"DimensionItemIcons","children":[{"name":"PeriodIcon.js","uid":"9879-73"},{"name":"GenericIcon.js","uid":"9879-83"}]},{"name":"MoreHorizontalIcon.js","uid":"9879-90"},{"name":"DynamicDimensionIcon.js","uid":"9879-92"},{"name":"BarIcon.js","uid":"9879-100"},{"name":"StackedBarIcon.js","uid":"9879-101"},{"name":"ColumnIcon.js","uid":"9879-102"},{"name":"StackedColumnIcon.js","uid":"9879-103"},{"name":"LineIcon.js","uid":"9879-104"},{"name":"AreaIcon.js","uid":"9879-105"},{"name":"StackedAreaIcon.js","uid":"9879-106"},{"name":"PieIcon.js","uid":"9879-107"},{"name":"RadarIcon.js","uid":"9879-108"},{"name":"GaugeIcon.js","uid":"9879-109"},{"name":"YearOverYearLineIcon.js","uid":"9879-110"},{"name":"YearOverYearColumnIcon.js","uid":"9879-111"},{"name":"SingleValueIcon.js","uid":"9879-112"},{"name":"PivotTableIcon.js","uid":"9879-113"}]},{"name":"visualizations","children":[{"name":"util","children":[{"name":"getFilterText.js","uid":"9879-155"},{"name":"axisId.js","uid":"9879-225"},{"name":"colors","children":[{"name":"gradientColorGenerator.js","uid":"9879-232"},{"name":"colorSets.js","uid":"9879-233"},{"name":"themes.js","uid":"9879-246"},{"name":"index.js","uid":"9879-259"}]}]},{"name":"store","children":[{"name":"validators","children":[{"name":"dhis","children":[{"name":"index.js","uid":"9879-199"}]},{"name":"index.js","uid":"9879-200"}]},{"name":"adapters","children":[{"name":"dhis_highcharts","children":[{"name":"yearOnYear.js","uid":"9879-201"},{"name":"pie.js","uid":"9879-202"},{"name":"gauge.js","uid":"9879-203"},{"name":"twoCategory.js","uid":"9879-205"},{"name":"index.js","uid":"9879-206"}]},{"name":"dhis_dhis","children":[{"name":"singleValue.js","uid":"9879-207"},{"name":"index.js","uid":"9879-208"}]},{"name":"index.js","uid":"9879-209"}]},{"name":"index.js","uid":"9879-210"}]},{"name":"config","children":[{"name":"adapters","children":[{"name":"dhis_highcharts","children":[{"name":"getTwoCategorySplitSerieData.js","uid":"9879-204"},{"name":"type.js","uid":"9879-213"},{"name":"chart.js","uid":"9879-214"},{"name":"getTextAlignOption.js","uid":"9879-216"},{"name":"getAxisTitle.js","uid":"9879-217"},{"name":"getCategories.js","uid":"9879-218"},{"name":"xAxis","children":[{"name":"yearOnYear.js","uid":"9879-219"},{"name":"twoCategory.js","uid":"9879-220"},{"name":"radar.js","uid":"9879-221"},{"name":"index.js","uid":"9879-222"}]},{"name":"yAxis","children":[{"name":"gauge.js","uid":"9879-223"},{"name":"index.js","uid":"9879-228"}]},{"name":"customAxes.js","uid":"9879-224"},{"name":"getCumulativeData.js","uid":"9879-229"},{"name":"series","children":[{"name":"pie.js","uid":"9879-230"},{"name":"gauge.js","uid":"9879-231"},{"name":"index.js","uid":"9879-234"}]},{"name":"title","children":[{"name":"yearOverYear.js","uid":"9879-235"},{"name":"index.js","uid":"9879-236"}]},{"name":"subtitle","children":[{"name":"index.js","uid":"9879-237"}]},{"name":"legend.js","uid":"9879-238"},{"name":"pane","children":[{"name":"gauge.js","uid":"9879-239"},{"name":"index.js","uid":"9879-240"}]},{"name":"noData.js","uid":"9879-241"},{"name":"getStackedData.js","uid":"9879-242"},{"name":"getSortedConfig.js","uid":"9879-243"},{"name":"getTrimmedConfig.js","uid":"9879-244"},{"name":"addTrendLines.js","uid":"9879-245"},{"name":"index.js","uid":"9879-247"}]},{"name":"dhis_dhis","children":[{"name":"title","children":[{"name":"singleValue.js","uid":"9879-248"},{"name":"index.js","uid":"9879-249"}]},{"name":"subtitle","children":[{"name":"singleValue.js","uid":"9879-250"},{"name":"index.js","uid":"9879-251"}]},{"name":"value","children":[{"name":"index.js","uid":"9879-252"}]},{"name":"index.js","uid":"9879-253"}]},{"name":"index.js","uid":"9879-254"}]},{"name":"validators","children":[{"name":"dhis","children":[{"name":"index.js","uid":"9879-211"}]},{"name":"index.js","uid":"9879-212"}]},{"name":"generators","children":[{"name":"highcharts","children":[{"name":"index.js","uid":"9879-255"}]},{"name":"dhis","children":[{"name":"singleValue.js","uid":"9879-256"},{"name":"index.js","uid":"9879-257"}]},{"name":"index.js","uid":"9879-258"}]},{"name":"index.js","uid":"9879-260"}]},{"name":"index.js","uid":"9879-261"}]},{"name":"index.js","uid":"9879-262"},{"name":"\u0000rollupPluginBabelHelpers.js","uid":"9879-28"}]},"nodes":{"9879-0":{"renderedLength":8119,"id":"locales/ar/translations.json"},"9879-1":{"renderedLength":6203,"id":"locales/ar_EG/translations.json"},"9879-2":{"renderedLength":7121,"id":"locales/ar_IQ/translations.json"},"9879-3":{"renderedLength":6279,"id":"locales/ckb/translations.json"},"9879-4":{"renderedLength":6397,"id":"locales/da/translations.json"},"9879-5":{"renderedLength":6200,"id":"locales/en/translations.json"},"9879-6":{"renderedLength":7516,"id":"locales/es/translations.json"},"9879-7":{"renderedLength":8504,"id":"locales/fr/translations.json"},"9879-8":{"renderedLength":7727,"id":"locales/id/translations.json"},"9879-9":{"renderedLength":6424,"id":"locales/km/translations.json"},"9879-10":{"renderedLength":7208,"id":"locales/lo/translations.json"},"9879-11":{"renderedLength":6767,"id":"locales/my/translations.json"},"9879-12":{"renderedLength":9382,"id":"locales/nb/translations.json"},"9879-13":{"renderedLength":7059,"id":"locales/prs/translations.json"},"9879-14":{"renderedLength":7256,"id":"locales/ps/translations.json"},"9879-15":{"renderedLength":8367,"id":"locales/pt/translations.json"},"9879-16":{"renderedLength":6929,"id":"locales/pt_BR/translations.json"},"9879-17":{"renderedLength":7844,"id":"locales/ru/translations.json"},"9879-18":{"renderedLength":6942,"id":"locales/sv/translations.json"},"9879-19":{"renderedLength":6982,"id":"locales/tet/translations.json"},"9879-20":{"renderedLength":6949,"id":"locales/tg/translations.json"},"9879-21":{"renderedLength":7452,"id":"locales/uk/translations.json"},"9879-22":{"renderedLength":7288,"id":"locales/ur/translations.json"},"9879-23":{"renderedLength":7385,"id":"locales/uz_Cyrl/translations.json"},"9879-24":{"renderedLength":7612,"id":"locales/vi/translations.json"},"9879-25":{"renderedLength":7351,"id":"locales/zh/translations.json"},"9879-26":{"renderedLength":6411,"id":"locales/zh_CN/translations.json"},"9879-27":{"renderedLength":1553,"id":"locales/index.js"},"9879-28":{"renderedLength":2508,"id":"\u0000rollupPluginBabelHelpers.js"},"9879-29":{"renderedLength":489,"id":"components/ItemSelector/widgets/ItemIcon.js"},"9879-30":{"renderedLength":584,"id":"components/ItemSelector/widgets/styles/UnselectedItem.style.js"},"9879-31":{"renderedLength":1289,"id":"components/ItemSelector/widgets/UnselectedItem.js"},"9879-32":{"renderedLength":577,"id":"components/ItemSelector/widgets/styles/ArrowButton.style.js"},"9879-33":{"renderedLength":678,"id":"components/ItemSelector/widgets/ArrowButton.js"},"9879-34":{"renderedLength":1691,"id":"components/ItemSelector/modules/toggler.js"},"9879-35":{"renderedLength":638,"id":"components/ItemSelector/styles/UnselectedItems.style.js"},"9879-36":{"renderedLength":4289,"id":"components/ItemSelector/UnselectedItems.js"},"9879-37":{"renderedLength":184,"id":"components/ItemSelector/widgets/styles/DeselectIconButton.style.js"},"9879-38":{"renderedLength":788,"id":"components/ItemSelector/widgets/DeselectIconButton.js"},"9879-39":{"renderedLength":909,"id":"components/ItemSelector/widgets/styles/SelectedItem.style.js"},"9879-40":{"renderedLength":1765,"id":"components/ItemSelector/widgets/SelectedItem.js"},"9879-41":{"renderedLength":952,"id":"components/ItemSelector/modules/reorderList.js"},"9879-42":{"renderedLength":1241,"id":"components/ItemSelector/styles/SelectedItems.style.js"},"9879-43":{"renderedLength":9187,"id":"components/ItemSelector/SelectedItems.js"},"9879-44":{"renderedLength":655,"id":"components/ItemSelector/styles/ItemSelector.style.js"},"9879-45":{"renderedLength":1624,"id":"components/ItemSelector/ItemSelector.js"},"9879-46":{"renderedLength":651,"id":"modules/dataSets.js"},"9879-47":{"renderedLength":2931,"id":"modules/dataTypes.js"},"9879-48":{"renderedLength":276,"id":"components/DataDimension/styles/DataTypesSelector.style.js"},"9879-49":{"renderedLength":956,"id":"components/DataDimension/DataTypesSelector.js"},"9879-50":{"renderedLength":258,"id":"components/DataDimension/styles/Detail.style.js"},"9879-51":{"renderedLength":926,"id":"components/DataDimension/Detail.js"},"9879-52":{"renderedLength":577,"id":"components/DataDimension/styles/Groups.style.js"},"9879-53":{"renderedLength":1671,"id":"components/DataDimension/Groups.js"},"9879-54":{"renderedLength":548,"id":"components/Filter/Filter.js"},"9879-55":{"renderedLength":270,"id":"components/styles/FilterField.style.js"},"9879-56":{"renderedLength":628,"id":"components/FilterField.js"},"9879-57":{"renderedLength":75,"id":"api/index.js"},"9879-58":{"renderedLength":9958,"id":"api/dimensions.js"},"9879-59":{"renderedLength":1452,"id":"assets/DataIcon.js"},"9879-60":{"renderedLength":1541,"id":"assets/PeriodIcon.js"},"9879-61":{"renderedLength":1089,"id":"assets/OrgUnitIcon.js"},"9879-62":{"renderedLength":757,"id":"assets/AssignedCategoriesIcon.js"},"9879-63":{"renderedLength":1400,"id":"modules/predefinedDimensions.js"},"9879-64":{"renderedLength":6996,"id":"components/DataDimension/DataDimension.js"},"9879-65":{"renderedLength":21677,"id":"components/PeriodDimension/utils/fixedPeriods.js"},"9879-66":{"renderedLength":357,"id":"components/PeriodDimension/styles/PeriodFilter.style.js"},"9879-67":{"renderedLength":1883,"id":"components/PeriodDimension/FixedPeriodFilter.js"},"9879-68":{"renderedLength":4184,"id":"components/PeriodDimension/utils/relativePeriods.js"},"9879-69":{"renderedLength":844,"id":"components/PeriodDimension/RelativePeriodFilter.js"},"9879-70":{"renderedLength":551,"id":"components/styles/DimensionSelector.style.js"},"9879-71":{"renderedLength":1440,"id":"components/styles/TransferOption.style.js"},"9879-72":{"renderedLength":1429,"id":"components/TransferOption.js"},"9879-73":{"renderedLength":569,"id":"assets/DimensionItemIcons/PeriodIcon.js"},"9879-74":{"renderedLength":113,"id":"modules/dimensionSelectorHelper.js"},"9879-75":{"renderedLength":5615,"id":"components/PeriodDimension/PeriodTransfer.js"},"9879-76":{"renderedLength":583,"id":"components/PeriodDimension/PeriodDimension.js"},"9879-77":{"renderedLength":203,"id":"components/PeriodDimension/styles/FixedPeriodSelect.style.js"},"9879-78":{"renderedLength":2839,"id":"components/PeriodDimension/FixedPeriodSelect.js"},"9879-79":{"renderedLength":1277,"id":"api/organisationUnits.js"},"9879-80":{"renderedLength":761,"id":"modules/ouIdHelper/index.js"},"9879-81":{"renderedLength":377,"id":"components/OrgUnitDimension/styles/OrgUnitDimension.style.js"},"9879-82":{"renderedLength":7608,"id":"components/OrgUnitDimension/OrgUnitDimension.js"},"9879-83":{"renderedLength":311,"id":"assets/DimensionItemIcons/GenericIcon.js"},"9879-84":{"renderedLength":5884,"id":"components/DynamicDimension/ItemSelector.js"},"9879-85":{"renderedLength":1128,"id":"components/DynamicDimension/DynamicDimension.js"},"9879-86":{"renderedLength":75,"id":"components/DimensionsPanel/List/styles/DimensionLabel.style.js"},"9879-87":{"renderedLength":981,"id":"components/DimensionsPanel/List/DimensionLabel.js"},"9879-88":{"renderedLength":459,"id":"components/DimensionsPanel/List/styles/RecommendedIcon.style.js"},"9879-89":{"renderedLength":1168,"id":"components/DimensionsPanel/List/RecommendedIcon.js"},"9879-90":{"renderedLength":629,"id":"assets/MoreHorizontalIcon.js"},"9879-91":{"renderedLength":297,"id":"components/DimensionsPanel/List/OptionsButton.js"},"9879-92":{"renderedLength":1994,"id":"assets/DynamicDimensionIcon.js"},"9879-93":{"renderedLength":1116,"id":"components/DimensionsPanel/List/styles/DimensionItem.style.js"},"9879-94":{"renderedLength":3726,"id":"components/DimensionsPanel/List/DimensionItem.js"},"9879-95":{"renderedLength":681,"id":"components/DimensionsPanel/List/styles/DimensionList.style.js"},"9879-96":{"renderedLength":3178,"id":"components/DimensionsPanel/List/DimensionList.js"},"9879-97":{"renderedLength":350,"id":"components/DimensionsPanel/styles/DimensionsPanel.style.js"},"9879-98":{"renderedLength":2010,"id":"components/DimensionsPanel/DimensionsPanel.js"},"9879-99":{"renderedLength":271,"id":"modules/layout/axis.js"},"9879-100":{"renderedLength":819,"id":"assets/BarIcon.js"},"9879-101":{"renderedLength":1137,"id":"assets/StackedBarIcon.js"},"9879-102":{"renderedLength":822,"id":"assets/ColumnIcon.js"},"9879-103":{"renderedLength":1141,"id":"assets/StackedColumnIcon.js"},"9879-104":{"renderedLength":925,"id":"assets/LineIcon.js"},"9879-105":{"renderedLength":885,"id":"assets/AreaIcon.js"},"9879-106":{"renderedLength":1113,"id":"assets/StackedAreaIcon.js"},"9879-107":{"renderedLength":3228,"id":"assets/PieIcon.js"},"9879-108":{"renderedLength":661,"id":"assets/RadarIcon.js"},"9879-109":{"renderedLength":1323,"id":"assets/GaugeIcon.js"},"9879-110":{"renderedLength":1114,"id":"assets/YearOverYearLineIcon.js"},"9879-111":{"renderedLength":939,"id":"assets/YearOverYearColumnIcon.js"},"9879-112":{"renderedLength":3300,"id":"assets/SingleValueIcon.js"},"9879-113":{"renderedLength":742,"id":"assets/PivotTableIcon.js"},"9879-114":{"renderedLength":4588,"id":"modules/visTypes.js"},"9879-115":{"renderedLength":3245,"id":"modules/layoutUiRules/rules.js"},"9879-116":{"renderedLength":545,"id":"modules/layoutUiRules/rulesHelper.js"},"9879-117":{"renderedLength":1573,"id":"modules/layoutUiRules/rulesUtils.js"},"9879-118":{"renderedLength":0,"id":"modules/layoutUiRules/index.js"},"9879-119":{"renderedLength":278,"id":"modules/layoutTypes.js"},"9879-120":{"renderedLength":985,"id":"modules/axis.js"},"9879-121":{"renderedLength":743,"id":"modules/visTypeToLayoutType.js"},"9879-122":{"renderedLength":4396,"id":"components/DimensionMenu.js"},"9879-123":{"renderedLength":165,"id":"modules/pivotTable/parseValue.js"},"9879-124":{"renderedLength":1266,"id":"modules/pivotTable/pivotTableConstants.js"},"9879-125":{"renderedLength":1958,"id":"modules/pivotTable/renderValue.js"},"9879-126":{"renderedLength":396,"id":"modules/pivotTable/measureText.js"},"9879-127":{"renderedLength":33196,"id":"modules/pivotTable/PivotTableEngine.js"},"9879-128":{"renderedLength":745,"id":"modules/pivotTable/useParentSize.js"},"9879-129":{"renderedLength":681,"id":"modules/pivotTable/useScrollPosition.js"},"9879-130":{"renderedLength":599,"id":"modules/pivotTable/clipAxis.js"},"9879-131":{"renderedLength":925,"id":"modules/pivotTable/clipPartitionedAxis.js"},"9879-132":{"renderedLength":1334,"id":"modules/pivotTable/useTableClipping.js"},"9879-133":{"renderedLength":414,"id":"components/PivotTable/PivotTableEngineContext.js"},"9879-134":{"renderedLength":2756,"id":"components/PivotTable/styles/PivotTable.style.js"},"9879-135":{"renderedLength":715,"id":"components/PivotTable/PivotTableContainer.js"},"9879-136":{"renderedLength":514,"id":"components/PivotTable/PivotTableClippedAxis.js"},"9879-137":{"renderedLength":1037,"id":"modules/pivotTable/getHeaderForDisplay.js"},"9879-138":{"renderedLength":652,"id":"components/PivotTable/PivotTableHeaderCell.js"},"9879-139":{"renderedLength":1540,"id":"components/PivotTable/PivotTableCell.js"},"9879-140":{"renderedLength":580,"id":"components/PivotTable/icons/SortIconAscending.js"},"9879-141":{"renderedLength":581,"id":"components/PivotTable/icons/SortIconDescending.js"},"9879-142":{"renderedLength":575,"id":"components/PivotTable/icons/SortIconIdle.js"},"9879-143":{"renderedLength":761,"id":"components/PivotTable/PivotTableSortIcon.js"},"9879-144":{"renderedLength":2209,"id":"components/PivotTable/PivotTableColumnHeaderCell.js"},"9879-145":{"renderedLength":1203,"id":"components/PivotTable/PivotTableDimensionLabelCell.js"},"9879-146":{"renderedLength":358,"id":"components/PivotTable/PivotTableEmptyCell.js"},"9879-147":{"renderedLength":1393,"id":"components/PivotTable/PivotTableColumnHeaders.js"},"9879-148":{"renderedLength":1216,"id":"components/PivotTable/PivotTableTitleRow.js"},"9879-149":{"renderedLength":396,"id":"modules/layout/dimension.js"},"9879-150":{"renderedLength":98,"id":"modules/layout/dimensionIs.js"},"9879-151":{"renderedLength":187,"id":"modules/layout/dimensionIsEmpty.js"},"9879-152":{"renderedLength":400,"id":"modules/layout/dimensionIsValid.js"},"9879-153":{"renderedLength":168,"id":"modules/layout/dimensionGetItems.js"},"9879-154":{"renderedLength":2223,"id":"modules/getOuLevelAndGroupText.js"},"9879-155":{"renderedLength":1487,"id":"visualizations/util/getFilterText.js"},"9879-156":{"renderedLength":1350,"id":"components/PivotTable/PivotTableTitleRows.js"},"9879-157":{"renderedLength":608,"id":"components/PivotTable/PivotTableHead.js"},"9879-158":{"renderedLength":527,"id":"components/PivotTable/PivotTableEmptyRow.js"},"9879-159":{"renderedLength":1079,"id":"components/PivotTable/PivotTableRowHeaderCell.js"},"9879-160":{"renderedLength":617,"id":"modules/pivotTable/isColorBright.js"},"9879-161":{"renderedLength":441,"id":"modules/legends.js"},"9879-162":{"renderedLength":1369,"id":"modules/pivotTable/applyLegendSet.js"},"9879-163":{"renderedLength":1789,"id":"components/PivotTable/PivotTableValueCell.js"},"9879-164":{"renderedLength":1138,"id":"components/PivotTable/PivotTableRow.js"},"9879-165":{"renderedLength":762,"id":"components/PivotTable/PivotTableBody.js"},"9879-166":{"renderedLength":605,"id":"modules/pivotTable/useSortableColumns.js"},"9879-167":{"renderedLength":1353,"id":"components/PivotTable/PivotTable.js"},"9879-168":{"renderedLength":130,"id":"modules/layout/axisGetDimension.js"},"9879-169":{"renderedLength":93,"id":"modules/layout/axisHasDimension.js"},"9879-170":{"renderedLength":502,"id":"modules/layout/layoutReplaceDimension.js"},"9879-171":{"renderedLength":108,"id":"modules/layout/layoutGetAllAxes.js"},"9879-172":{"renderedLength":162,"id":"modules/layout/layoutGetAllDimensions.js"},"9879-173":{"renderedLength":138,"id":"modules/layout/layoutGetDimension.js"},"9879-174":{"renderedLength":1006,"id":"modules/ouLevelUtils/index.js"},"9879-175":{"renderedLength":462,"id":"modules/relativeItems/index.js"},"9879-176":{"renderedLength":57,"id":"modules/layout/layout.js"},"9879-177":{"renderedLength":70,"id":"modules/layout/dimensionGetId.js"},"9879-178":{"renderedLength":437,"id":"modules/layout/layoutFilterDimensions.js"},"9879-179":{"renderedLength":147,"id":"modules/layout/axisGetAllItems.js"},"9879-180":{"renderedLength":159,"id":"modules/layout/layoutGetAllItems.js"},"9879-181":{"renderedLength":208,"id":"modules/layout/item.js"},"9879-182":{"renderedLength":126,"id":"modules/layout/itemGetId.js"},"9879-183":{"renderedLength":93,"id":"modules/layout/layoutGetAllItemIds.js"},"9879-184":{"renderedLength":126,"id":"modules/layout/axisGetDimensionIds.js"},"9879-185":{"renderedLength":214,"id":"modules/layout/layoutGetAxisIdDimensionIdsObject.js"},"9879-186":{"renderedLength":116,"id":"modules/layout/layoutGetDimensionItems.js"},"9879-187":{"renderedLength":99,"id":"modules/layout/dimensionGetItemIds.js"},"9879-188":{"renderedLength":200,"id":"modules/layout/layoutGetDimensionIdItemIdsObject.js"},"9879-189":{"renderedLength":79,"id":"modules/layout/axisHasDataDimension.js"},"9879-190":{"renderedLength":116,"id":"modules/layout/layoutHasDataDimension.js"},"9879-191":{"renderedLength":101,"id":"modules/layout/layoutHasDimension.js"},"9879-192":{"renderedLength":222,"id":"modules/layout/layoutHasDynamicDimension.js"},"9879-193":{"renderedLength":83,"id":"modules/layout/axisHasPeriodDimension.js"},"9879-194":{"renderedLength":120,"id":"modules/layout/layoutHasPeriodDimension.js"},"9879-195":{"renderedLength":80,"id":"modules/layout/axisHasOuDimension.js"},"9879-196":{"renderedLength":41,"id":"modules/layout/axisIsEmpty.js"},"9879-197":{"renderedLength":167,"id":"modules/layout/dimensionCreate.js"},"9879-198":{"renderedLength":219,"id":"modules/layout/itemIsValid.js"},"9879-199":{"renderedLength":1769,"id":"visualizations/store/validators/dhis/index.js"},"9879-200":{"renderedLength":80,"id":"visualizations/store/validators/index.js"},"9879-201":{"renderedLength":521,"id":"visualizations/store/adapters/dhis_highcharts/yearOnYear.js"},"9879-202":{"renderedLength":324,"id":"visualizations/store/adapters/dhis_highcharts/pie.js"},"9879-203":{"renderedLength":166,"id":"visualizations/store/adapters/dhis_highcharts/gauge.js"},"9879-204":{"renderedLength":465,"id":"visualizations/config/adapters/dhis_highcharts/getTwoCategorySplitSerieData.js"},"9879-205":{"renderedLength":1412,"id":"visualizations/store/adapters/dhis_highcharts/twoCategory.js"},"9879-206":{"renderedLength":3094,"id":"visualizations/store/adapters/dhis_highcharts/index.js"},"9879-207":{"renderedLength":140,"id":"visualizations/store/adapters/dhis_dhis/singleValue.js"},"9879-208":{"renderedLength":2350,"id":"visualizations/store/adapters/dhis_dhis/index.js"},"9879-209":{"renderedLength":50,"id":"visualizations/store/adapters/index.js"},"9879-210":{"renderedLength":907,"id":"visualizations/store/index.js"},"9879-211":{"renderedLength":51,"id":"visualizations/config/validators/dhis/index.js"},"9879-212":{"renderedLength":108,"id":"visualizations/config/validators/index.js"},"9879-213":{"renderedLength":757,"id":"visualizations/config/adapters/dhis_highcharts/type.js"},"9879-214":{"renderedLength":801,"id":"visualizations/config/adapters/dhis_highcharts/chart.js"},"9879-215":{"renderedLength":7280,"id":"modules/fontStyle.js"},"9879-216":{"renderedLength":1040,"id":"visualizations/config/adapters/dhis_highcharts/getTextAlignOption.js"},"9879-217":{"renderedLength":702,"id":"visualizations/config/adapters/dhis_highcharts/getAxisTitle.js"},"9879-218":{"renderedLength":224,"id":"visualizations/config/adapters/dhis_highcharts/getCategories.js"},"9879-219":{"renderedLength":1556,"id":"visualizations/config/adapters/dhis_highcharts/xAxis/yearOnYear.js"},"9879-220":{"renderedLength":755,"id":"visualizations/config/adapters/dhis_highcharts/xAxis/twoCategory.js"},"9879-221":{"renderedLength":313,"id":"visualizations/config/adapters/dhis_highcharts/xAxis/radar.js"},"9879-222":{"renderedLength":1421,"id":"visualizations/config/adapters/dhis_highcharts/xAxis/index.js"},"9879-223":{"renderedLength":2877,"id":"visualizations/config/adapters/dhis_highcharts/yAxis/gauge.js"},"9879-224":{"renderedLength":1004,"id":"visualizations/config/adapters/dhis_highcharts/customAxes.js"},"9879-225":{"renderedLength":103,"id":"visualizations/util/axisId.js"},"9879-226":{"renderedLength":123,"id":"modules/layout/dimensionHasRelativeItems.js"},"9879-227":{"renderedLength":98,"id":"modules/layout/axisHasRelativeItems.js"},"9879-228":{"renderedLength":6150,"id":"visualizations/config/adapters/dhis_highcharts/yAxis/index.js"},"9879-229":{"renderedLength":2091,"id":"visualizations/config/adapters/dhis_highcharts/getCumulativeData.js"},"9879-230":{"renderedLength":593,"id":"visualizations/config/adapters/dhis_highcharts/series/pie.js"},"9879-231":{"renderedLength":498,"id":"visualizations/config/adapters/dhis_highcharts/series/gauge.js"},"9879-232":{"renderedLength":781,"id":"visualizations/util/colors/gradientColorGenerator.js"},"9879-233":{"renderedLength":1153,"id":"visualizations/util/colors/colorSets.js"},"9879-234":{"renderedLength":5779,"id":"visualizations/config/adapters/dhis_highcharts/series/index.js"},"9879-235":{"renderedLength":429,"id":"visualizations/config/adapters/dhis_highcharts/title/yearOverYear.js"},"9879-236":{"renderedLength":1665,"id":"visualizations/config/adapters/dhis_highcharts/title/index.js"},"9879-237":{"renderedLength":1898,"id":"visualizations/config/adapters/dhis_highcharts/subtitle/index.js"},"9879-238":{"renderedLength":1203,"id":"visualizations/config/adapters/dhis_highcharts/legend.js"},"9879-239":{"renderedLength":302,"id":"visualizations/config/adapters/dhis_highcharts/pane/gauge.js"},"9879-240":{"renderedLength":139,"id":"visualizations/config/adapters/dhis_highcharts/pane/index.js"},"9879-241":{"renderedLength":111,"id":"visualizations/config/adapters/dhis_highcharts/noData.js"},"9879-242":{"renderedLength":835,"id":"visualizations/config/adapters/dhis_highcharts/getStackedData.js"},"9879-243":{"renderedLength":2634,"id":"visualizations/config/adapters/dhis_highcharts/getSortedConfig.js"},"9879-244":{"renderedLength":5813,"id":"visualizations/config/adapters/dhis_highcharts/getTrimmedConfig.js"},"9879-245":{"renderedLength":11769,"id":"visualizations/config/adapters/dhis_highcharts/addTrendLines.js"},"9879-246":{"renderedLength":523,"id":"visualizations/util/colors/themes.js"},"9879-247":{"renderedLength":3346,"id":"visualizations/config/adapters/dhis_highcharts/index.js"},"9879-248":{"renderedLength":280,"id":"visualizations/config/adapters/dhis_dhis/title/singleValue.js"},"9879-249":{"renderedLength":593,"id":"visualizations/config/adapters/dhis_dhis/title/index.js"},"9879-250":{"renderedLength":125,"id":"visualizations/config/adapters/dhis_dhis/subtitle/singleValue.js"},"9879-251":{"renderedLength":661,"id":"visualizations/config/adapters/dhis_dhis/subtitle/index.js"},"9879-252":{"renderedLength":319,"id":"visualizations/config/adapters/dhis_dhis/value/index.js"},"9879-253":{"renderedLength":665,"id":"visualizations/config/adapters/dhis_dhis/index.js"},"9879-254":{"renderedLength":84,"id":"visualizations/config/adapters/index.js"},"9879-255":{"renderedLength":185,"id":"visualizations/config/generators/highcharts/index.js"},"9879-256":{"renderedLength":5178,"id":"visualizations/config/generators/dhis/singleValue.js"},"9879-257":{"renderedLength":568,"id":"visualizations/config/generators/dhis/index.js"},"9879-258":{"renderedLength":50,"id":"visualizations/config/generators/index.js"},"9879-259":{"renderedLength":0,"id":"visualizations/util/colors/index.js"},"9879-260":{"renderedLength":1322,"id":"visualizations/config/index.js"},"9879-261":{"renderedLength":723,"id":"visualizations/index.js"},"9879-262":{"renderedLength":0,"isEntry":true,"id":"index.js"},"9879-263":{"renderedLength":0,"isExternal":true,"id":"@dhis2/d2-i18n"},"9879-264":{"renderedLength":0,"isExternal":true,"id":"react"},"9879-265":{"renderedLength":0,"isExternal":true,"id":"prop-types"},"9879-266":{"renderedLength":0,"isExternal":true,"id":"lodash/debounce"},"9879-267":{"renderedLength":0,"isExternal":true,"id":"lodash/isEqual"},"9879-268":{"renderedLength":0,"isExternal":true,"id":"styled-jsx/style"},"9879-269":{"renderedLength":0,"isExternal":true,"id":"@dhis2/prop-types"},"9879-270":{"renderedLength":0,"isExternal":true,"id":"@dhis2/ui"},"9879-271":{"renderedLength":0,"isExternal":true,"id":"lodash/sortBy"},"9879-272":{"renderedLength":0,"isExternal":true,"id":"@dhis2/d2-ui-org-unit-dialog"},"9879-273":{"renderedLength":0,"isExternal":true,"id":"@dhis2/app-runtime"},"9879-274":{"renderedLength":0,"isExternal":true,"id":"@material-ui/icons/Lock"},"9879-275":{"renderedLength":0,"isExternal":true,"id":"classnames"},"9879-276":{"renderedLength":0,"isExternal":true,"id":"lodash/isObject"},"9879-277":{"renderedLength":0,"isExternal":true,"id":"lodash/isString"},"9879-278":{"renderedLength":0,"isExternal":true,"id":"d2-utilizr/lib/isArray"},"9879-279":{"renderedLength":0,"isExternal":true,"id":"core-js/fn/array/find-index"},"9879-280":{"renderedLength":0,"isExternal":true,"id":"highcharts"},"9879-281":{"renderedLength":0,"isExternal":true,"id":"highcharts/modules/pattern-fill"},"9879-282":{"renderedLength":0,"isExternal":true,"id":"@material-ui/core/styles"},"9879-283":{"renderedLength":0,"isExternal":true,"id":"@material-ui/core/Paper"},"9879-284":{"renderedLength":0,"isExternal":true,"id":"@material-ui/core/Popper"},"9879-285":{"renderedLength":0,"isExternal":true,"id":"@material-ui/core/IconButton"},"9879-286":{"renderedLength":0,"isExternal":true,"id":"lodash/throttle"},"9879-287":{"renderedLength":0,"isExternal":true,"id":"@material-ui/icons/InfoOutlined"},"9879-288":{"renderedLength":0,"isExternal":true,"id":"react-beautiful-dnd"},"9879-289":{"renderedLength":0,"isExternal":true,"id":"lodash/times"},"9879-290":{"renderedLength":0,"isExternal":true,"id":"resize-observer-polyfill"},"9879-291":{"renderedLength":0,"isExternal":true,"id":"@material-ui/core/SvgIcon"},"9879-292":{"renderedLength":0,"isExternal":true,"id":"@material-ui/icons/ArrowForward"},"9879-293":{"renderedLength":0,"isExternal":true,"id":"@material-ui/icons/ArrowBack"},"9879-294":{"renderedLength":0,"isExternal":true,"id":"@material-ui/icons/Close"},"9879-295":{"renderedLength":0,"isExternal":true,"id":"d2-utilizr/lib/isObject"},"9879-296":{"renderedLength":0,"isExternal":true,"id":"d2-utilizr/lib/isString"},"9879-297":{"renderedLength":0,"isExternal":true,"id":"d2-utilizr/lib/arrayContains"},"9879-298":{"renderedLength":0,"isExternal":true,"id":"d2-utilizr/lib/arrayUnique"},"9879-299":{"renderedLength":0,"isExternal":true,"id":"d2-utilizr/lib/objectClean"},"9879-300":{"renderedLength":0,"isExternal":true,"id":"highcharts/highcharts-more"},"9879-301":{"renderedLength":0,"isExternal":true,"id":"highcharts/modules/solid-gauge"},"9879-302":{"renderedLength":0,"isExternal":true,"id":"highcharts/modules/no-data-to-display"},"9879-303":{"renderedLength":0,"isExternal":true,"id":"highcharts/modules/exporting"},"9879-304":{"renderedLength":0,"isExternal":true,"id":"d2-utilizr/lib/arrayClean"},"9879-305":{"renderedLength":0,"isExternal":true,"id":"d2-utilizr/lib/isNumeric"},"9879-306":{"renderedLength":0,"isExternal":true,"id":"d2-utilizr/lib/arrayPluck"},"9879-307":{"renderedLength":0,"isExternal":true,"id":"d2-utilizr/lib/arraySort"},"9879-308":{"renderedLength":0,"isExternal":true,"id":"d3-color"},"9879-309":{"renderedLength":0,"isExternal":true,"id":"d2-utilizr/lib/isNumber"},"9879-310":{"renderedLength":0,"isExternal":true,"id":"d2-utilizr/lib/numberDecimals"}},"links":[{"source":"9879-262","target":"9879-27"},{"source":"9879-262","target":"9879-64"},{"source":"9879-262","target":"9879-76"},{"source":"9879-262","target":"9879-78"},{"source":"9879-262","target":"9879-82"},{"source":"9879-262","target":"9879-85"},{"source":"9879-262","target":"9879-98"},{"source":"9879-262","target":"9879-94"},{"source":"9879-262","target":"9879-54"},{"source":"9879-262","target":"9879-45"},{"source":"9879-262","target":"9879-122"},{"source":"9879-262","target":"9879-167"},{"source":"9879-262","target":"9879-58"},{"source":"9879-262","target":"9879-120"},{"source":"9879-262","target":"9879-63"},{"source":"9879-262","target":"9879-80"},{"source":"9879-262","target":"9879-174"},{"source":"9879-262","target":"9879-175"},{"source":"9879-262","target":"9879-176"},{"source":"9879-262","target":"9879-178"},{"source":"9879-262","target":"9879-171"},{"source":"9879-262","target":"9879-172"},{"source":"9879-262","target":"9879-183"},{"source":"9879-262","target":"9879-180"},{"source":"9879-262","target":"9879-185"},{"source":"9879-262","target":"9879-173"},{"source":"9879-262","target":"9879-186"},{"source":"9879-262","target":"9879-170"},{"source":"9879-262","target":"9879-188"},{"source":"9879-262","target":"9879-190"},{"source":"9879-262","target":"9879-191"},{"source":"9879-262","target":"9879-192"},{"source":"9879-262","target":"9879-194"},{"source":"9879-262","target":"9879-99"},{"source":"9879-262","target":"9879-179"},{"source":"9879-262","target":"9879-168"},{"source":"9879-262","target":"9879-184"},{"source":"9879-262","target":"9879-189"},{"source":"9879-262","target":"9879-169"},{"source":"9879-262","target":"9879-193"},{"source":"9879-262","target":"9879-195"},{"source":"9879-262","target":"9879-196"},{"source":"9879-262","target":"9879-149"},{"source":"9879-262","target":"9879-197"},{"source":"9879-262","target":"9879-177"},{"source":"9879-262","target":"9879-187"},{"source":"9879-262","target":"9879-153"},{"source":"9879-262","target":"9879-150"},{"source":"9879-262","target":"9879-151"},{"source":"9879-262","target":"9879-152"},{"source":"9879-262","target":"9879-181"},{"source":"9879-262","target":"9879-182"},{"source":"9879-262","target":"9879-198"},{"source":"9879-262","target":"9879-121"},{"source":"9879-262","target":"9879-114"},{"source":"9879-262","target":"9879-119"},{"source":"9879-262","target":"9879-118"},{"source":"9879-262","target":"9879-261"},{"source":"9879-262","target":"9879-215"},{"source":"9879-262","target":"9879-233"},{"source":"9879-27","target":"9879-263"},{"source":"9879-27","target":"9879-0"},{"source":"9879-27","target":"9879-1"},{"source":"9879-27","target":"9879-2"},{"source":"9879-27","target":"9879-3"},{"source":"9879-27","target":"9879-4"},{"source":"9879-27","target":"9879-5"},{"source":"9879-27","target":"9879-6"},{"source":"9879-27","target":"9879-7"},{"source":"9879-27","target":"9879-8"},{"source":"9879-27","target":"9879-9"},{"source":"9879-27","target":"9879-10"},{"source":"9879-27","target":"9879-11"},{"source":"9879-27","target":"9879-12"},{"source":"9879-27","target":"9879-13"},{"source":"9879-27","target":"9879-14"},{"source":"9879-27","target":"9879-15"},{"source":"9879-27","target":"9879-16"},{"source":"9879-27","target":"9879-17"},{"source":"9879-27","target":"9879-18"},{"source":"9879-27","target":"9879-19"},{"source":"9879-27","target":"9879-20"},{"source":"9879-27","target":"9879-21"},{"source":"9879-27","target":"9879-22"},{"source":"9879-27","target":"9879-23"},{"source":"9879-27","target":"9879-24"},{"source":"9879-27","target":"9879-25"},{"source":"9879-27","target":"9879-26"},{"source":"9879-64","target":"9879-28"},{"source":"9879-64","target":"9879-264"},{"source":"9879-64","target":"9879-265"},{"source":"9879-64","target":"9879-266"},{"source":"9879-64","target":"9879-267"},{"source":"9879-64","target":"9879-45"},{"source":"9879-64","target":"9879-49"},{"source":"9879-64","target":"9879-53"},{"source":"9879-64","target":"9879-56"},{"source":"9879-64","target":"9879-58"},{"source":"9879-64","target":"9879-47"},{"source":"9879-64","target":"9879-63"},{"source":"9879-76","target":"9879-264"},{"source":"9879-76","target":"9879-265"},{"source":"9879-76","target":"9879-75"},{"source":"9879-76","target":"9879-63"},{"source":"9879-78","target":"9879-28"},{"source":"9879-78","target":"9879-268"},{"source":"9879-78","target":"9879-264"},{"source":"9879-78","target":"9879-269"},{"source":"9879-78","target":"9879-263"},{"source":"9879-78","target":"9879-270"},{"source":"9879-78","target":"9879-67"},{"source":"9879-78","target":"9879-65"},{"source":"9879-78","target":"9879-77"},{"source":"9879-82","target":"9879-28"},{"source":"9879-82","target":"9879-268"},{"source":"9879-82","target":"9879-264"},{"source":"9879-82","target":"9879-265"},{"source":"9879-82","target":"9879-271"},{"source":"9879-82","target":"9879-272"},{"source":"9879-82","target":"9879-270"},{"source":"9879-82","target":"9879-79"},{"source":"9879-82","target":"9879-80"},{"source":"9879-82","target":"9879-63"},{"source":"9879-82","target":"9879-81"},{"source":"9879-85","target":"9879-264"},{"source":"9879-85","target":"9879-265"},{"source":"9879-85","target":"9879-263"},{"source":"9879-85","target":"9879-273"},{"source":"9879-85","target":"9879-84"},{"source":"9879-85","target":"9879-58"},{"source":"9879-98","target":"9879-28"},{"source":"9879-98","target":"9879-264"},{"source":"9879-98","target":"9879-265"},{"source":"9879-98","target":"9879-263"},{"source":"9879-98","target":"9879-54"},{"source":"9879-98","target":"9879-96"},{"source":"9879-98","target":"9879-97"},{"source":"9879-94","target":"9879-28"},{"source":"9879-94","target":"9879-264"},{"source":"9879-94","target":"9879-265"},{"source":"9879-94","target":"9879-274"},{"source":"9879-94","target":"9879-87"},{"source":"9879-94","target":"9879-89"},{"source":"9879-94","target":"9879-91"},{"source":"9879-94","target":"9879-92"},{"source":"9879-94","target":"9879-63"},{"source":"9879-94","target":"9879-93"},{"source":"9879-54","target":"9879-264"},{"source":"9879-54","target":"9879-265"},{"source":"9879-54","target":"9879-270"},{"source":"9879-45","target":"9879-268"},{"source":"9879-45","target":"9879-264"},{"source":"9879-45","target":"9879-265"},{"source":"9879-45","target":"9879-275"},{"source":"9879-45","target":"9879-36"},{"source":"9879-45","target":"9879-43"},{"source":"9879-45","target":"9879-44"},{"source":"9879-122","target":"9879-264"},{"source":"9879-122","target":"9879-270"},{"source":"9879-122","target":"9879-263"},{"source":"9879-122","target":"9879-265"},{"source":"9879-122","target":"9879-118"},{"source":"9879-122","target":"9879-99"},{"source":"9879-122","target":"9879-63"},{"source":"9879-122","target":"9879-114"},{"source":"9879-122","target":"9879-120"},{"source":"9879-122","target":"9879-121"},{"source":"9879-167","target":"9879-264"},{"source":"9879-167","target":"9879-265"},{"source":"9879-167","target":"9879-127"},{"source":"9879-167","target":"9879-128"},{"source":"9879-167","target":"9879-132"},{"source":"9879-167","target":"9879-133"},{"source":"9879-167","target":"9879-135"},{"source":"9879-167","target":"9879-157"},{"source":"9879-167","target":"9879-165"},{"source":"9879-167","target":"9879-166"},{"source":"9879-58","target":"9879-28"},{"source":"9879-58","target":"9879-271"},{"source":"9879-58","target":"9879-57"},{"source":"9879-58","target":"9879-46"},{"source":"9879-58","target":"9879-47"},{"source":"9879-120","target":"9879-263"},{"source":"9879-120","target":"9879-99"},{"source":"9879-120","target":"9879-119"},{"source":"9879-63","target":"9879-28"},{"source":"9879-63","target":"9879-263"},{"source":"9879-63","target":"9879-59"},{"source":"9879-63","target":"9879-60"},{"source":"9879-63","target":"9879-61"},{"source":"9879-63","target":"9879-62"},{"source":"9879-174","target":"9879-153"},{"source":"9879-174","target":"9879-170"},{"source":"9879-174","target":"9879-173"},{"source":"9879-174","target":"9879-80"},{"source":"9879-174","target":"9879-63"},{"source":"9879-175","target":"9879-68"},{"source":"9879-175","target":"9879-80"},{"source":"9879-175","target":"9879-63"},{"source":"9879-176","target":"9879-276"},{"source":"9879-178","target":"9879-99"},{"source":"9879-178","target":"9879-177"},{"source":"9879-171","target":"9879-99"},{"source":"9879-172","target":"9879-171"},{"source":"9879-183","target":"9879-180"},{"source":"9879-183","target":"9879-182"},{"source":"9879-180","target":"9879-171"},{"source":"9879-180","target":"9879-179"},{"source":"9879-185","target":"9879-99"},{"source":"9879-185","target":"9879-184"},{"source":"9879-173","target":"9879-172"},{"source":"9879-173","target":"9879-150"},{"source":"9879-186","target":"9879-173"},{"source":"9879-186","target":"9879-153"},{"source":"9879-170","target":"9879-99"},{"source":"9879-170","target":"9879-169"},{"source":"9879-170","target":"9879-150"},{"source":"9879-188","target":"9879-172"},{"source":"9879-188","target":"9879-187"},{"source":"9879-188","target":"9879-177"},{"source":"9879-190","target":"9879-171"},{"source":"9879-190","target":"9879-189"},{"source":"9879-191","target":"9879-173"},{"source":"9879-192","target":"9879-172"},{"source":"9879-192","target":"9879-177"},{"source":"9879-192","target":"9879-63"},{"source":"9879-194","target":"9879-171"},{"source":"9879-194","target":"9879-193"},{"source":"9879-179","target":"9879-153"},{"source":"9879-168","target":"9879-150"},{"source":"9879-168","target":"9879-99"},{"source":"9879-184","target":"9879-99"},{"source":"9879-184","target":"9879-177"},{"source":"9879-189","target":"9879-63"},{"source":"9879-189","target":"9879-169"},{"source":"9879-169","target":"9879-168"},{"source":"9879-193","target":"9879-63"},{"source":"9879-193","target":"9879-169"},{"source":"9879-195","target":"9879-63"},{"source":"9879-195","target":"9879-169"},{"source":"9879-149","target":"9879-276"},{"source":"9879-149","target":"9879-277"},{"source":"9879-197","target":"9879-149"},{"source":"9879-177","target":"9879-149"},{"source":"9879-187","target":"9879-153"},{"source":"9879-187","target":"9879-182"},{"source":"9879-153","target":"9879-149"},{"source":"9879-153","target":"9879-152"},{"source":"9879-150","target":"9879-149"},{"source":"9879-151","target":"9879-149"},{"source":"9879-152","target":"9879-149"},{"source":"9879-152","target":"9879-151"},{"source":"9879-181","target":"9879-276"},{"source":"9879-181","target":"9879-277"},{"source":"9879-182","target":"9879-181"},{"source":"9879-198","target":"9879-181"},{"source":"9879-121","target":"9879-114"},{"source":"9879-121","target":"9879-119"},{"source":"9879-114","target":"9879-263"},{"source":"9879-114","target":"9879-100"},{"source":"9879-114","target":"9879-101"},{"source":"9879-114","target":"9879-102"},{"source":"9879-114","target":"9879-103"},{"source":"9879-114","target":"9879-104"},{"source":"9879-114","target":"9879-105"},{"source":"9879-114","target":"9879-106"},{"source":"9879-114","target":"9879-107"},{"source":"9879-114","target":"9879-108"},{"source":"9879-114","target":"9879-109"},{"source":"9879-114","target":"9879-110"},{"source":"9879-114","target":"9879-111"},{"source":"9879-114","target":"9879-112"},{"source":"9879-114","target":"9879-113"},{"source":"9879-118","target":"9879-116"},{"source":"9879-118","target":"9879-117"},{"source":"9879-261","target":"9879-28"},{"source":"9879-261","target":"9879-278"},{"source":"9879-261","target":"9879-279"},{"source":"9879-261","target":"9879-210"},{"source":"9879-261","target":"9879-260"},{"source":"9879-261","target":"9879-215"},{"source":"9879-215","target":"9879-28"},{"source":"9879-215","target":"9879-263"},{"source":"9879-215","target":"9879-270"},{"source":"9879-215","target":"9879-114"},{"source":"9879-233","target":"9879-280"},{"source":"9879-233","target":"9879-281"},{"source":"9879-49","target":"9879-268"},{"source":"9879-49","target":"9879-264"},{"source":"9879-49","target":"9879-265"},{"source":"9879-49","target":"9879-263"},{"source":"9879-49","target":"9879-270"},{"source":"9879-49","target":"9879-47"},{"source":"9879-49","target":"9879-48"},{"source":"9879-53","target":"9879-268"},{"source":"9879-53","target":"9879-264"},{"source":"9879-53","target":"9879-265"},{"source":"9879-53","target":"9879-270"},{"source":"9879-53","target":"9879-51"},{"source":"9879-53","target":"9879-47"},{"source":"9879-53","target":"9879-52"},{"source":"9879-56","target":"9879-268"},{"source":"9879-56","target":"9879-264"},{"source":"9879-56","target":"9879-265"},{"source":"9879-56","target":"9879-263"},{"source":"9879-56","target":"9879-54"},{"source":"9879-56","target":"9879-55"},{"source":"9879-47","target":"9879-263"},{"source":"9879-47","target":"9879-46"},{"source":"9879-75","target":"9879-28"},{"source":"9879-75","target":"9879-268"},{"source":"9879-75","target":"9879-264"},{"source":"9879-75","target":"9879-265"},{"source":"9879-75","target":"9879-270"},{"source":"9879-75","target":"9879-263"},{"source":"9879-75","target":"9879-67"},{"source":"9879-75","target":"9879-69"},{"source":"9879-75","target":"9879-68"},{"source":"9879-75","target":"9879-65"},{"source":"9879-75","target":"9879-70"},{"source":"9879-75","target":"9879-72"},{"source":"9879-75","target":"9879-73"},{"source":"9879-75","target":"9879-74"},{"source":"9879-67","target":"9879-268"},{"source":"9879-67","target":"9879-264"},{"source":"9879-67","target":"9879-265"},{"source":"9879-67","target":"9879-263"},{"source":"9879-67","target":"9879-270"},{"source":"9879-67","target":"9879-65"},{"source":"9879-67","target":"9879-66"},{"source":"9879-65","target":"9879-263"},{"source":"9879-77","target":"9879-270"},{"source":"9879-79","target":"9879-57"},{"source":"9879-84","target":"9879-28"},{"source":"9879-84","target":"9879-268"},{"source":"9879-84","target":"9879-264"},{"source":"9879-84","target":"9879-265"},{"source":"9879-84","target":"9879-270"},{"source":"9879-84","target":"9879-263"},{"source":"9879-84","target":"9879-70"},{"source":"9879-84","target":"9879-72"},{"source":"9879-84","target":"9879-83"},{"source":"9879-84","target":"9879-74"},{"source":"9879-96","target":"9879-28"},{"source":"9879-96","target":"9879-264"},{"source":"9879-96","target":"9879-265"},{"source":"9879-96","target":"9879-282"},{"source":"9879-96","target":"9879-263"},{"source":"9879-96","target":"9879-94"},{"source":"9879-96","target":"9879-95"},{"source":"9879-96","target":"9879-63"},{"source":"9879-97","target":"9879-270"},{"source":"9879-87","target":"9879-28"},{"source":"9879-87","target":"9879-264"},{"source":"9879-87","target":"9879-265"},{"source":"9879-87","target":"9879-86"},{"source":"9879-87","target":"9879-63"},{"source":"9879-89","target":"9879-28"},{"source":"9879-89","target":"9879-264"},{"source":"9879-89","target":"9879-265"},{"source":"9879-89","target":"9879-283"},{"source":"9879-89","target":"9879-284"},{"source":"9879-89","target":"9879-263"},{"source":"9879-89","target":"9879-88"},{"source":"9879-91","target":"9879-264"},{"source":"9879-91","target":"9879-285"},{"source":"9879-91","target":"9879-265"},{"source":"9879-91","target":"9879-90"},{"source":"9879-92","target":"9879-264"},{"source":"9879-93","target":"9879-270"},{"source":"9879-36","target":"9879-28"},{"source":"9879-36","target":"9879-268"},{"source":"9879-36","target":"9879-264"},{"source":"9879-36","target":"9879-265"},{"source":"9879-36","target":"9879-263"},{"source":"9879-36","target":"9879-270"},{"source":"9879-36","target":"9879-286"},{"source":"9879-36","target":"9879-31"},{"source":"9879-36","target":"9879-33"},{"source":"9879-36","target":"9879-34"},{"source":"9879-36","target":"9879-35"},{"source":"9879-43","target":"9879-28"},{"source":"9879-43","target":"9879-268"},{"source":"9879-43","target":"9879-264"},{"source":"9879-43","target":"9879-265"},{"source":"9879-43","target":"9879-263"},{"source":"9879-43","target":"9879-287"},{"source":"9879-43","target":"9879-288"},{"source":"9879-43","target":"9879-270"},{"source":"9879-43","target":"9879-40"},{"source":"9879-43","target":"9879-33"},{"source":"9879-43","target":"9879-34"},{"source":"9879-43","target":"9879-41"},{"source":"9879-43","target":"9879-42"},{"source":"9879-44","target":"9879-270"},{"source":"9879-127","target":"9879-28"},{"source":"9879-127","target":"9879-289"},{"source":"9879-127","target":"9879-123"},{"source":"9879-127","target":"9879-125"},{"source":"9879-127","target":"9879-126"},{"source":"9879-127","target":"9879-63"},{"source":"9879-127","target":"9879-124"},{"source":"9879-128","target":"9879-264"},{"source":"9879-128","target":"9879-290"},{"source":"9879-132","target":"9879-264"},{"source":"9879-132","target":"9879-129"},{"source":"9879-132","target":"9879-130"},{"source":"9879-132","target":"9879-124"},{"source":"9879-132","target":"9879-131"},{"source":"9879-133","target":"9879-264"},{"source":"9879-133","target":"9879-265"},{"source":"9879-135","target":"9879-268"},{"source":"9879-135","target":"9879-264"},{"source":"9879-135","target":"9879-265"},{"source":"9879-135","target":"9879-134"},{"source":"9879-157","target":"9879-264"},{"source":"9879-157","target":"9879-265"},{"source":"9879-157","target":"9879-147"},{"source":"9879-157","target":"9879-156"},{"source":"9879-165","target":"9879-264"},{"source":"9879-165","target":"9879-265"},{"source":"9879-165","target":"9879-136"},{"source":"9879-165","target":"9879-158"},{"source":"9879-165","target":"9879-164"},{"source":"9879-166","target":"9879-264"},{"source":"9879-166","target":"9879-124"},{"source":"9879-46","target":"9879-263"},{"source":"9879-59","target":"9879-264"},{"source":"9879-60","target":"9879-264"},{"source":"9879-61","target":"9879-264"},{"source":"9879-62","target":"9879-264"},{"source":"9879-68","target":"9879-263"},{"source":"9879-100","target":"9879-264"},{"source":"9879-100","target":"9879-291"},{"source":"9879-101","target":"9879-264"},{"source":"9879-101","target":"9879-291"},{"source":"9879-102","target":"9879-264"},{"source":"9879-102","target":"9879-291"},{"source":"9879-103","target":"9879-264"},{"source":"9879-103","target":"9879-291"},{"source":"9879-104","target":"9879-264"},{"source":"9879-104","target":"9879-291"},{"source":"9879-105","target":"9879-264"},{"source":"9879-105","target":"9879-291"},{"source":"9879-106","target":"9879-264"},{"source":"9879-106","target":"9879-291"},{"source":"9879-107","target":"9879-264"},{"source":"9879-107","target":"9879-291"},{"source":"9879-108","target":"9879-264"},{"source":"9879-108","target":"9879-291"},{"source":"9879-109","target":"9879-264"},{"source":"9879-109","target":"9879-291"},{"source":"9879-110","target":"9879-264"},{"source":"9879-110","target":"9879-291"},{"source":"9879-111","target":"9879-264"},{"source":"9879-111","target":"9879-291"},{"source":"9879-112","target":"9879-264"},{"source":"9879-112","target":"9879-291"},{"source":"9879-113","target":"9879-264"},{"source":"9879-113","target":"9879-291"},{"source":"9879-116","target":"9879-115"},{"source":"9879-117","target":"9879-115"},{"source":"9879-117","target":"9879-116"},{"source":"9879-210","target":"9879-200"},{"source":"9879-210","target":"9879-209"},{"source":"9879-260","target":"9879-28"},{"source":"9879-260","target":"9879-263"},{"source":"9879-260","target":"9879-212"},{"source":"9879-260","target":"9879-254"},{"source":"9879-260","target":"9879-258"},{"source":"9879-260","target":"9879-259"},{"source":"9879-51","target":"9879-268"},{"source":"9879-51","target":"9879-264"},{"source":"9879-51","target":"9879-265"},{"source":"9879-51","target":"9879-263"},{"source":"9879-51","target":"9879-270"},{"source":"9879-51","target":"9879-47"},{"source":"9879-51","target":"9879-50"},{"source":"9879-52","target":"9879-270"},{"source":"9879-55","target":"9879-270"},{"source":"9879-69","target":"9879-268"},{"source":"9879-69","target":"9879-264"},{"source":"9879-69","target":"9879-265"},{"source":"9879-69","target":"9879-263"},{"source":"9879-69","target":"9879-270"},{"source":"9879-69","target":"9879-68"},{"source":"9879-69","target":"9879-66"},{"source":"9879-70","target":"9879-270"},{"source":"9879-72","target":"9879-268"},{"source":"9879-72","target":"9879-264"},{"source":"9879-72","target":"9879-275"},{"source":"9879-72","target":"9879-269"},{"source":"9879-72","target":"9879-71"},{"source":"9879-73","target":"9879-264"},{"source":"9879-66","target":"9879-270"},{"source":"9879-83","target":"9879-264"},{"source":"9879-95","target":"9879-270"},{"source":"9879-88","target":"9879-270"},{"source":"9879-90","target":"9879-28"},{"source":"9879-90","target":"9879-264"},{"source":"9879-90","target":"9879-265"},{"source":"9879-31","target":"9879-28"},{"source":"9879-31","target":"9879-268"},{"source":"9879-31","target":"9879-264"},{"source":"9879-31","target":"9879-265"},{"source":"9879-31","target":"9879-275"},{"source":"9879-31","target":"9879-29"},{"source":"9879-31","target":"9879-270"},{"source":"9879-31","target":"9879-30"},{"source":"9879-33","target":"9879-268"},{"source":"9879-33","target":"9879-264"},{"source":"9879-33","target":"9879-265"},{"source":"9879-33","target":"9879-292"},{"source":"9879-33","target":"9879-293"},{"source":"9879-33","target":"9879-32"},{"source":"9879-40","target":"9879-28"},{"source":"9879-40","target":"9879-268"},{"source":"9879-40","target":"9879-264"},{"source":"9879-40","target":"9879-265"},{"source":"9879-40","target":"9879-275"},{"source":"9879-40","target":"9879-29"},{"source":"9879-40","target":"9879-38"},{"source":"9879-40","target":"9879-270"},{"source":"9879-40","target":"9879-39"},{"source":"9879-41","target":"9879-271"},{"source":"9879-42","target":"9879-270"},{"source":"9879-125","target":"9879-124"},{"source":"9879-129","target":"9879-264"},{"source":"9879-129","target":"9879-266"},{"source":"9879-130","target":"9879-289"},{"source":"9879-134","target":"9879-270"},{"source":"9879-134","target":"9879-124"},{"source":"9879-147","target":"9879-264"},{"source":"9879-147","target":"9879-265"},{"source":"9879-147","target":"9879-136"},{"source":"9879-147","target":"9879-144"},{"source":"9879-147","target":"9879-145"},{"source":"9879-147","target":"9879-146"},{"source":"9879-147","target":"9879-133"},{"source":"9879-147","target":"9879-289"},{"source":"9879-156","target":"9879-264"},{"source":"9879-156","target":"9879-265"},{"source":"9879-156","target":"9879-133"},{"source":"9879-156","target":"9879-148"},{"source":"9879-156","target":"9879-155"},{"source":"9879-136","target":"9879-264"},{"source":"9879-158","target":"9879-264"},{"source":"9879-158","target":"9879-265"},{"source":"9879-158","target":"9879-133"},{"source":"9879-158","target":"9879-139"},{"source":"9879-164","target":"9879-264"},{"source":"9879-164","target":"9879-265"},{"source":"9879-164","target":"9879-136"},{"source":"9879-164","target":"9879-159"},{"source":"9879-164","target":"9879-163"},{"source":"9879-164","target":"9879-146"},{"source":"9879-164","target":"9879-133"},{"source":"9879-164","target":"9879-289"},{"source":"9879-115","target":"9879-99"},{"source":"9879-115","target":"9879-63"},{"source":"9879-115","target":"9879-114"},{"source":"9879-200","target":"9879-199"},{"source":"9879-209","target":"9879-206"},{"source":"9879-209","target":"9879-208"},{"source":"9879-212","target":"9879-211"},{"source":"9879-254","target":"9879-247"},{"source":"9879-254","target":"9879-253"},{"source":"9879-258","target":"9879-255"},{"source":"9879-258","target":"9879-257"},{"source":"9879-259","target":"9879-246"},{"source":"9879-259","target":"9879-233"},{"source":"9879-259","target":"9879-232"},{"source":"9879-71","target":"9879-270"},{"source":"9879-29","target":"9879-268"},{"source":"9879-29","target":"9879-264"},{"source":"9879-29","target":"9879-265"},{"source":"9879-30","target":"9879-270"},{"source":"9879-32","target":"9879-270"},{"source":"9879-38","target":"9879-268"},{"source":"9879-38","target":"9879-264"},{"source":"9879-38","target":"9879-265"},{"source":"9879-38","target":"9879-294"},{"source":"9879-38","target":"9879-37"},{"source":"9879-39","target":"9879-270"},{"source":"9879-144","target":"9879-268"},{"source":"9879-144","target":"9879-264"},{"source":"9879-144","target":"9879-265"},{"source":"9879-144","target":"9879-138"},{"source":"9879-144","target":"9879-134"},{"source":"9879-144","target":"9879-139"},{"source":"9879-144","target":"9879-133"},{"source":"9879-144","target":"9879-143"},{"source":"9879-145","target":"9879-264"},{"source":"9879-145","target":"9879-265"},{"source":"9879-145","target":"9879-133"},{"source":"9879-145","target":"9879-139"},{"source":"9879-146","target":"9879-28"},{"source":"9879-146","target":"9879-268"},{"source":"9879-146","target":"9879-264"},{"source":"9879-146","target":"9879-134"},{"source":"9879-146","target":"9879-139"},{"source":"9879-148","target":"9879-268"},{"source":"9879-148","target":"9879-264"},{"source":"9879-148","target":"9879-265"},{"source":"9879-148","target":"9879-134"},{"source":"9879-148","target":"9879-133"},{"source":"9879-148","target":"9879-139"},{"source":"9879-155","target":"9879-80"},{"source":"9879-155","target":"9879-150"},{"source":"9879-155","target":"9879-63"},{"source":"9879-155","target":"9879-153"},{"source":"9879-155","target":"9879-154"},{"source":"9879-139","target":"9879-28"},{"source":"9879-139","target":"9879-268"},{"source":"9879-139","target":"9879-264"},{"source":"9879-139","target":"9879-265"},{"source":"9879-139","target":"9879-275"},{"source":"9879-139","target":"9879-134"},{"source":"9879-139","target":"9879-133"},{"source":"9879-159","target":"9879-264"},{"source":"9879-159","target":"9879-265"},{"source":"9879-159","target":"9879-138"},{"source":"9879-159","target":"9879-139"},{"source":"9879-159","target":"9879-133"},{"source":"9879-163","target":"9879-28"},{"source":"9879-163","target":"9879-264"},{"source":"9879-163","target":"9879-265"},{"source":"9879-163","target":"9879-162"},{"source":"9879-163","target":"9879-139"},{"source":"9879-163","target":"9879-133"},{"source":"9879-163","target":"9879-124"},{"source":"9879-163","target":"9879-146"},{"source":"9879-199","target":"9879-278"},{"source":"9879-199","target":"9879-295"},{"source":"9879-199","target":"9879-296"},{"source":"9879-206","target":"9879-297"},{"source":"9879-206","target":"9879-298"},{"source":"9879-206","target":"9879-201"},{"source":"9879-206","target":"9879-202"},{"source":"9879-206","target":"9879-203"},{"source":"9879-206","target":"9879-205"},{"source":"9879-206","target":"9879-114"},{"source":"9879-208","target":"9879-207"},{"source":"9879-208","target":"9879-114"},{"source":"9879-247","target":"9879-28"},{"source":"9879-247","target":"9879-299"},{"source":"9879-247","target":"9879-296"},{"source":"9879-247","target":"9879-214"},{"source":"9879-247","target":"9879-222"},{"source":"9879-247","target":"9879-228"},{"source":"9879-247","target":"9879-234"},{"source":"9879-247","target":"9879-236"},{"source":"9879-247","target":"9879-237"},{"source":"9879-247","target":"9879-238"},{"source":"9879-247","target":"9879-240"},{"source":"9879-247","target":"9879-241"},{"source":"9879-247","target":"9879-114"},{"source":"9879-247","target":"9879-243"},{"source":"9879-247","target":"9879-244"},{"source":"9879-247","target":"9879-245"},{"source":"9879-247","target":"9879-246"},{"source":"9879-247","target":"9879-120"},{"source":"9879-247","target":"9879-227"},{"source":"9879-253","target":"9879-249"},{"source":"9879-253","target":"9879-251"},{"source":"9879-253","target":"9879-252"},{"source":"9879-255","target":"9879-280"},{"source":"9879-255","target":"9879-300"},{"source":"9879-255","target":"9879-301"},{"source":"9879-255","target":"9879-302"},{"source":"9879-255","target":"9879-303"},{"source":"9879-255","target":"9879-281"},{"source":"9879-257","target":"9879-256"},{"source":"9879-257","target":"9879-114"},{"source":"9879-138","target":"9879-265"},{"source":"9879-138","target":"9879-137"},{"source":"9879-143","target":"9879-268"},{"source":"9879-143","target":"9879-264"},{"source":"9879-143","target":"9879-265"},{"source":"9879-143","target":"9879-133"},{"source":"9879-143","target":"9879-124"},{"source":"9879-143","target":"9879-134"},{"source":"9879-143","target":"9879-140"},{"source":"9879-143","target":"9879-141"},{"source":"9879-143","target":"9879-142"},{"source":"9879-154","target":"9879-263"},{"source":"9879-154","target":"9879-80"},{"source":"9879-154","target":"9879-150"},{"source":"9879-154","target":"9879-153"},{"source":"9879-154","target":"9879-63"},{"source":"9879-162","target":"9879-160"},{"source":"9879-162","target":"9879-270"},{"source":"9879-162","target":"9879-161"},{"source":"9879-205","target":"9879-204"},{"source":"9879-214","target":"9879-213"},{"source":"9879-222","target":"9879-299"},{"source":"9879-222","target":"9879-217"},{"source":"9879-222","target":"9879-218"},{"source":"9879-222","target":"9879-219"},{"source":"9879-222","target":"9879-220"},{"source":"9879-222","target":"9879-221"},{"source":"9879-222","target":"9879-114"},{"source":"9879-222","target":"9879-215"},{"source":"9879-228","target":"9879-28"},{"source":"9879-228","target":"9879-263"},{"source":"9879-228","target":"9879-304"},{"source":"9879-228","target":"9879-299"},{"source":"9879-228","target":"9879-305"},{"source":"9879-228","target":"9879-296"},{"source":"9879-228","target":"9879-217"},{"source":"9879-228","target":"9879-223"},{"source":"9879-228","target":"9879-114"},{"source":"9879-228","target":"9879-120"},{"source":"9879-228","target":"9879-224"},{"source":"9879-228","target":"9879-225"},{"source":"9879-228","target":"9879-215"},{"source":"9879-228","target":"9879-216"},{"source":"9879-228","target":"9879-227"},{"source":"9879-234","target":"9879-270"},{"source":"9879-234","target":"9879-229"},{"source":"9879-234","target":"9879-230"},{"source":"9879-234","target":"9879-231"},{"source":"9879-234","target":"9879-213"},{"source":"9879-234","target":"9879-224"},{"source":"9879-234","target":"9879-232"},{"source":"9879-234","target":"9879-233"},{"source":"9879-234","target":"9879-114"},{"source":"9879-234","target":"9879-120"},{"source":"9879-234","target":"9879-225"},{"source":"9879-234","target":"9879-227"},{"source":"9879-236","target":"9879-296"},{"source":"9879-236","target":"9879-155"},{"source":"9879-236","target":"9879-114"},{"source":"9879-236","target":"9879-235"},{"source":"9879-236","target":"9879-215"},{"source":"9879-236","target":"9879-216"},{"source":"9879-237","target":"9879-296"},{"source":"9879-237","target":"9879-155"},{"source":"9879-237","target":"9879-114"},{"source":"9879-237","target":"9879-235"},{"source":"9879-237","target":"9879-215"},{"source":"9879-237","target":"9879-216"},{"source":"9879-238","target":"9879-215"},{"source":"9879-238","target":"9879-216"},{"source":"9879-240","target":"9879-239"},{"source":"9879-240","target":"9879-114"},{"source":"9879-243","target":"9879-28"},{"source":"9879-243","target":"9879-306"},{"source":"9879-243","target":"9879-307"},{"source":"9879-243","target":"9879-242"},{"source":"9879-243","target":"9879-114"},{"source":"9879-243","target":"9879-204"},{"source":"9879-244","target":"9879-28"},{"source":"9879-244","target":"9879-297"},{"source":"9879-244","target":"9879-298"},{"source":"9879-244","target":"9879-114"},{"source":"9879-244","target":"9879-204"},{"source":"9879-245","target":"9879-297"},{"source":"9879-245","target":"9879-308"},{"source":"9879-245","target":"9879-233"},{"source":"9879-245","target":"9879-242"},{"source":"9879-245","target":"9879-114"},{"source":"9879-227","target":"9879-226"},{"source":"9879-249","target":"9879-155"},{"source":"9879-249","target":"9879-114"},{"source":"9879-249","target":"9879-248"},{"source":"9879-251","target":"9879-155"},{"source":"9879-251","target":"9879-250"},{"source":"9879-251","target":"9879-114"},{"source":"9879-252","target":"9879-125"},{"source":"9879-252","target":"9879-124"},{"source":"9879-256","target":"9879-270"},{"source":"9879-256","target":"9879-161"},{"source":"9879-256","target":"9879-215"},{"source":"9879-140","target":"9879-264"},{"source":"9879-141","target":"9879-264"},{"source":"9879-142","target":"9879-264"},{"source":"9879-213","target":"9879-114"},{"source":"9879-217","target":"9879-296"},{"source":"9879-217","target":"9879-215"},{"source":"9879-217","target":"9879-216"},{"source":"9879-218","target":"9879-278"},{"source":"9879-219","target":"9879-299"},{"source":"9879-219","target":"9879-215"},{"source":"9879-219","target":"9879-217"},{"source":"9879-220","target":"9879-217"},{"source":"9879-220","target":"9879-218"},{"source":"9879-220","target":"9879-222"},{"source":"9879-220","target":"9879-215"},{"source":"9879-221","target":"9879-296"},{"source":"9879-221","target":"9879-215"},{"source":"9879-221","target":"9879-222"},{"source":"9879-223","target":"9879-28"},{"source":"9879-223","target":"9879-304"},{"source":"9879-223","target":"9879-309"},{"source":"9879-223","target":"9879-299"},{"source":"9879-223","target":"9879-263"},{"source":"9879-223","target":"9879-161"},{"source":"9879-223","target":"9879-215"},{"source":"9879-223","target":"9879-114"},{"source":"9879-223","target":"9879-216"},{"source":"9879-216","target":"9879-215"},{"source":"9879-216","target":"9879-114"},{"source":"9879-229","target":"9879-310"},{"source":"9879-229","target":"9879-114"},{"source":"9879-229","target":"9879-204"},{"source":"9879-231","target":"9879-270"},{"source":"9879-231","target":"9879-161"},{"source":"9879-235","target":"9879-155"},{"source":"9879-242","target":"9879-114"},{"source":"9879-226","target":"9879-175"},{"source":"9879-226","target":"9879-177"},{"source":"9879-226","target":"9879-187"},{"source":"9879-248","target":"9879-155"},{"source":"9879-250","target":"9879-155"}]};
|
|
3350
3350
|
|
|
3351
3351
|
document.addEventListener('DOMContentLoaded', () => {
|
|
3352
3352
|
const width = chartParameters.width || window.innerWidth;
|