@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/cjs/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","React","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","Fragment","Button","onSelectAllClick","t","AssignButton","onSelectClick","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","Draggable","provided","snapshot","isDraggedItem","isDragging","Boolean","itemText","onDeselectOne","draggableProps","dragHandleProps","cloneId","push","clone","itemList","getItemListWithClone","renderCloneItem","infoBoxMessage","DragDropContext","onDragStart","onDragEnd","Droppable","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","SingleSelectField","ref","Object","values","type","SingleSelectOption","getOptions","Detail","currentValue","options","entries","option","Groups","detailValue","groups","onDetailChange","onGroupChange","optionItems","Filter","text","onClear","InputField","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","TabBar","Tab","onIsRelativeClick","onSelectFixedPeriods","Transfer","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","OrgUnitSelector","onLevelChange","onDeselectAllClick","handleUserOrgUnitClick","handleOrgUnitClick","handleMultipleOrgUnitsSelect","CircularLoader","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","MenuItem","getDividerItem","MenuDivider","getUnavailableLabel","visualizationType","DimensionMenu","currentAxisId","numberOfDimensionItems","assignedCategoriesItemHandler","isAssignedCategoriesInLayout","axisItemHandler","removeItemHandler","onClose","menuItems","availableAxisIds","getAvailableAxes","applicableAxisIds","assignedCategoriesAvailableDestinations","assignedCategoriesItemLabel","Tooltip","requireItems","FlyoutMenu","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","React","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","Fragment","Button","onSelectAllClick","t","AssignButton","onSelectClick","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","Draggable","provided","snapshot","isDraggedItem","isDragging","Boolean","itemText","onDeselectOne","draggableProps","dragHandleProps","cloneId","push","clone","itemList","getItemListWithClone","renderCloneItem","infoBoxMessage","DragDropContext","onDragStart","onDragEnd","Droppable","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","SingleSelectField","ref","Object","values","type","SingleSelectOption","getOptions","Detail","currentValue","options","entries","option","Groups","detailValue","groups","onDetailChange","onGroupChange","optionItems","Filter","text","onClear","InputField","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","TabBar","Tab","onIsRelativeClick","onSelectFixedPeriods","Transfer","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","OrgUnitSelector","onLevelChange","onDeselectAllClick","handleUserOrgUnitClick","handleOrgUnitClick","handleMultipleOrgUnitsSelect","CircularLoader","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","MenuItem","getDividerItem","MenuDivider","getUnavailableLabel","visualizationType","DimensionMenu","currentAxisId","numberOfDimensionItems","assignedCategoriesItemHandler","isAssignedCategoriesInLayout","axisItemHandler","removeItemHandler","onClose","menuItems","availableAxisIds","getAvailableAxes","applicableAxisIds","assignedCategoriesAvailableDestinations","assignedCategoriesItemLabel","Tooltip","requireItems","FlyoutMenu","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/es/lib.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/* eslint-disable */
|
|
2
2
|
import i18n from '@dhis2/d2-i18n';
|
|
3
|
-
import React, { Component, Fragment, useState, useEffect,
|
|
3
|
+
import React, { Component, Fragment, useState, useEffect, useCallback, createRef, useMemo, createContext, useContext, useRef } from 'react';
|
|
4
4
|
import PropTypes from 'prop-types';
|
|
5
5
|
import debounce from 'lodash/debounce';
|
|
6
6
|
import isEqual from 'lodash/isEqual';
|
|
@@ -16,6 +16,7 @@ import DeselectIcon from '@material-ui/icons/Close';
|
|
|
16
16
|
import sortBy from 'lodash/sortBy';
|
|
17
17
|
import propTypes from '@dhis2/prop-types';
|
|
18
18
|
import { userOrgUnits, OrgUnitSelector } from '@dhis2/d2-ui-org-unit-dialog';
|
|
19
|
+
import { useDataEngine } from '@dhis2/app-runtime';
|
|
19
20
|
import { withStyles } from '@material-ui/core/styles';
|
|
20
21
|
import LockIcon from '@material-ui/icons/Lock';
|
|
21
22
|
import Paper from '@material-ui/core/Paper';
|
|
@@ -1346,9 +1347,11 @@ var enTranslations = {
|
|
|
1346
1347
|
"Main dimensions": "",
|
|
1347
1348
|
"Your dimensions": "",
|
|
1348
1349
|
"Dimension recommended with selected data": "",
|
|
1350
|
+
"Nothing found": "",
|
|
1351
|
+
Search: Search$5,
|
|
1349
1352
|
"No items selected": "",
|
|
1350
1353
|
"Selected Items": "",
|
|
1351
|
-
|
|
1354
|
+
"Nothing found for {{searchTerm}}": "",
|
|
1352
1355
|
"Selected Data": "",
|
|
1353
1356
|
"Deselect All": "",
|
|
1354
1357
|
"Select all": "",
|
|
@@ -7837,11 +7840,48 @@ const apiFetchRecommendedIds = (d2, dxIds, ouIds) => {
|
|
|
7837
7840
|
const url = "/dimensions/recommendations?".concat(dimensions, "&fields=id");
|
|
7838
7841
|
return d2.Api.getApi().get(url).then(response => response.dimensions.map(item => item.id)).catch(onError);
|
|
7839
7842
|
};
|
|
7840
|
-
const
|
|
7841
|
-
|
|
7842
|
-
|
|
7843
|
-
|
|
7844
|
-
|
|
7843
|
+
const itemsByDimensionQuery = {
|
|
7844
|
+
resource: "dimensions",
|
|
7845
|
+
id: ({
|
|
7846
|
+
id: _id
|
|
7847
|
+
}) => "".concat(_id, "/items"),
|
|
7848
|
+
params: ({
|
|
7849
|
+
searchTerm,
|
|
7850
|
+
page
|
|
7851
|
+
}) => {
|
|
7852
|
+
const filters = [];
|
|
7853
|
+
|
|
7854
|
+
if (searchTerm) {
|
|
7855
|
+
filters.push("name:ilike:".concat(searchTerm));
|
|
7856
|
+
}
|
|
7857
|
+
|
|
7858
|
+
return {
|
|
7859
|
+
fields: 'id,displayName~rename(name)',
|
|
7860
|
+
order: 'displayName:asc',
|
|
7861
|
+
filter: filters,
|
|
7862
|
+
paging: true,
|
|
7863
|
+
page
|
|
7864
|
+
};
|
|
7865
|
+
}
|
|
7866
|
+
};
|
|
7867
|
+
const apiFetchItemsByDimension = async ({
|
|
7868
|
+
dataEngine,
|
|
7869
|
+
dimensionId,
|
|
7870
|
+
searchTerm,
|
|
7871
|
+
page
|
|
7872
|
+
}) => {
|
|
7873
|
+
const itemsByDimensionData = await dataEngine.query({
|
|
7874
|
+
itemsByDimensions: itemsByDimensionQuery
|
|
7875
|
+
}, {
|
|
7876
|
+
variables: {
|
|
7877
|
+
id: dimensionId,
|
|
7878
|
+
searchTerm,
|
|
7879
|
+
page
|
|
7880
|
+
},
|
|
7881
|
+
onError
|
|
7882
|
+
});
|
|
7883
|
+
const response = itemsByDimensionData.itemsByDimensions;
|
|
7884
|
+
return formatResponse(response.items, response.pager);
|
|
7845
7885
|
};
|
|
7846
7886
|
const apiFetchGroups = (d2, dataType, nameProp) => {
|
|
7847
7887
|
// indicatorGroups does not support shortName
|
|
@@ -8100,6 +8140,11 @@ const fetchProgramIndicators = ({
|
|
|
8100
8140
|
});
|
|
8101
8141
|
};
|
|
8102
8142
|
|
|
8143
|
+
const formatResponse = (dimensionItems, pager) => ({
|
|
8144
|
+
dimensionItems,
|
|
8145
|
+
nextPage: pager.nextPage ? pager.page + 1 : null
|
|
8146
|
+
});
|
|
8147
|
+
|
|
8103
8148
|
const DataIcon = () => {
|
|
8104
8149
|
return /*#__PURE__*/React.createElement("svg", {
|
|
8105
8150
|
width: "16px",
|
|
@@ -9415,8 +9460,8 @@ RelativePeriodFilter.propTypes = {
|
|
|
9415
9460
|
onSelectFilter: PropTypes.func.isRequired
|
|
9416
9461
|
};
|
|
9417
9462
|
|
|
9418
|
-
const _defaultExport$c = [".filterContainer.jsx-
|
|
9419
|
-
_defaultExport$c.__hash = "
|
|
9463
|
+
const _defaultExport$c = [".filterContainer.jsx-2645272461{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin-bottom:".concat(spacers.dp12, ";margin-top:").concat(spacers.dp8, ";}"), ".emptyList.jsx-2645272461{text-align:center;font-size:14px;line-height:16px;margin:".concat(spacers.dp24, " 0 0;color:").concat(colors.grey700, ";}"), ".rightHeader.jsx-2645272461{font-size:14px;font-weight:400;}", ".leftHeader.jsx-2645272461{padding:".concat(spacers.dp8, " 0;}")];
|
|
9464
|
+
_defaultExport$c.__hash = "2645272461";
|
|
9420
9465
|
|
|
9421
9466
|
const _defaultExport$d = [".wrapper.jsx-1613747048:last-child{margin-bottom:".concat(spacers.dp4, ";}"), ".chip.jsx-1613747048{display:inline-block;background:".concat(colors.grey200, ";font-size:14px;line-height:16px;padding:2px ").concat(spacers.dp8, " 2px ").concat(spacers.dp4, ";margin-top:").concat(spacers.dp4, ";margin-left:").concat(spacers.dp8, ";border-radius:3px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;}"), ".chip.jsx-1613747048:hover{background:".concat(colors.grey300, ";}"), ".selected.jsx-1613747048{background:".concat(theme.secondary100, ";color:").concat(theme.secondary900, ";}"), ".selected.jsx-1613747048 .icon path{fill:".concat(theme.secondary700, ";}"), ".selected.jsx-1613747048:hover{background:#c9edeb;}", ".highlighted.jsx-1613747048,.highlighted.jsx-1613747048:hover{background:".concat(theme.secondary800, ";color:").concat(colors.white, ";}"), ".highlighted.jsx-1613747048 .icon path{fill:".concat(colors.white, ";}"), ".disabled.jsx-1613747048{opacity:0.3;cursor:not-allowed;}", ".icon.jsx-1613747048,.label.jsx-1613747048{line-height:18px;}", ".icon.jsx-1613747048{margin-right:".concat(spacers.dp4, ";display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;vertical-align:text-bottom;}"), ".label.jsx-1613747048{font-size:14px;}"];
|
|
9422
9467
|
_defaultExport$d.__hash = "1613747048";
|
|
@@ -9580,7 +9625,7 @@ class PeriodTransfer extends Component {
|
|
|
9580
9625
|
});
|
|
9581
9626
|
|
|
9582
9627
|
_defineProperty(this, "renderEmptySelection", () => /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("p", {
|
|
9583
|
-
className: "jsx-".concat(_defaultExport$c.__hash) + " " + "
|
|
9628
|
+
className: "jsx-".concat(_defaultExport$c.__hash) + " " + "emptyList"
|
|
9584
9629
|
}, i18n.t('No periods selected')), /*#__PURE__*/React.createElement(_JSXStyle, {
|
|
9585
9630
|
id: _defaultExport$c.__hash
|
|
9586
9631
|
}, _defaultExport$c)));
|
|
@@ -10048,54 +10093,173 @@ var GenericIcon = /*#__PURE__*/React.createElement("svg", {
|
|
|
10048
10093
|
d: "M11,5 L11,11 L5,11 L5,5 L11,5 Z M10,6 L6,6 L6,10 L10,10 L10,6 Z"
|
|
10049
10094
|
}));
|
|
10050
10095
|
|
|
10096
|
+
const useDebounce = (value, delay) => {
|
|
10097
|
+
const [debouncedValue, setDebouncedValue] = useState(value);
|
|
10098
|
+
useEffect(() => {
|
|
10099
|
+
const handler = setTimeout(() => {
|
|
10100
|
+
setDebouncedValue(value);
|
|
10101
|
+
}, delay);
|
|
10102
|
+
return () => {
|
|
10103
|
+
clearTimeout(handler);
|
|
10104
|
+
};
|
|
10105
|
+
}, [value, delay]);
|
|
10106
|
+
return debouncedValue;
|
|
10107
|
+
};
|
|
10108
|
+
|
|
10109
|
+
const LeftHeader = ({
|
|
10110
|
+
filter,
|
|
10111
|
+
setFilter
|
|
10112
|
+
}) => /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
|
|
10113
|
+
className: "jsx-".concat(_defaultExport$c.__hash) + " " + "leftHeader"
|
|
10114
|
+
}, /*#__PURE__*/React.createElement(InputField, {
|
|
10115
|
+
value: filter,
|
|
10116
|
+
onChange: ({
|
|
10117
|
+
value
|
|
10118
|
+
}) => setFilter(value),
|
|
10119
|
+
placeholder: i18n.t('Search')
|
|
10120
|
+
})), /*#__PURE__*/React.createElement(_JSXStyle, {
|
|
10121
|
+
id: _defaultExport$c.__hash
|
|
10122
|
+
}, _defaultExport$c));
|
|
10123
|
+
|
|
10124
|
+
LeftHeader.propTypes = {
|
|
10125
|
+
filter: PropTypes.string,
|
|
10126
|
+
setFilter: PropTypes.func
|
|
10127
|
+
};
|
|
10128
|
+
|
|
10129
|
+
const EmptySelection = () => /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("p", {
|
|
10130
|
+
className: "jsx-".concat(_defaultExport$c.__hash) + " " + "emptyList"
|
|
10131
|
+
}, i18n.t('No items selected')), /*#__PURE__*/React.createElement(_JSXStyle, {
|
|
10132
|
+
id: _defaultExport$c.__hash
|
|
10133
|
+
}, _defaultExport$c));
|
|
10134
|
+
|
|
10135
|
+
const RightHeader = () => /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("p", {
|
|
10136
|
+
className: "jsx-".concat(_defaultExport$c.__hash) + " " + "rightHeader"
|
|
10137
|
+
}, i18n.t('Selected Items')), /*#__PURE__*/React.createElement(_JSXStyle, {
|
|
10138
|
+
id: _defaultExport$c.__hash
|
|
10139
|
+
}, _defaultExport$c));
|
|
10140
|
+
|
|
10141
|
+
const SourceEmptyPlaceholder = ({
|
|
10142
|
+
loading,
|
|
10143
|
+
filter,
|
|
10144
|
+
options,
|
|
10145
|
+
noItemsMessage
|
|
10146
|
+
}) => {
|
|
10147
|
+
let message = '';
|
|
10148
|
+
|
|
10149
|
+
if (!loading && !options.length && !filter) {
|
|
10150
|
+
message = noItemsMessage;
|
|
10151
|
+
} else if (!loading && !options.length && filter) {
|
|
10152
|
+
message = i18n.t('Nothing found for {{searchTerm}}', {
|
|
10153
|
+
searchTerm: filter
|
|
10154
|
+
});
|
|
10155
|
+
}
|
|
10156
|
+
|
|
10157
|
+
return message && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("p", {
|
|
10158
|
+
className: "jsx-".concat(_defaultExport$c.__hash) + " " + "emptyList"
|
|
10159
|
+
}, message), /*#__PURE__*/React.createElement(_JSXStyle, {
|
|
10160
|
+
id: _defaultExport$c.__hash
|
|
10161
|
+
}, _defaultExport$c));
|
|
10162
|
+
};
|
|
10163
|
+
|
|
10164
|
+
SourceEmptyPlaceholder.propTypes = {
|
|
10165
|
+
filter: PropTypes.string,
|
|
10166
|
+
loading: PropTypes.bool,
|
|
10167
|
+
noItemsMessage: PropTypes.string,
|
|
10168
|
+
options: PropTypes.array
|
|
10169
|
+
};
|
|
10170
|
+
|
|
10051
10171
|
const ItemSelector$1 = ({
|
|
10052
|
-
|
|
10172
|
+
initialSelected,
|
|
10173
|
+
noItemsMessage,
|
|
10174
|
+
onFetch,
|
|
10053
10175
|
onSelect,
|
|
10054
|
-
initialSelectedItemIds,
|
|
10055
|
-
leftHeader,
|
|
10056
10176
|
rightFooter
|
|
10057
10177
|
}) => {
|
|
10058
|
-
const [
|
|
10178
|
+
const [state, setState] = useState({
|
|
10179
|
+
filter: '',
|
|
10180
|
+
selected: initialSelected,
|
|
10181
|
+
options: [],
|
|
10182
|
+
loading: true,
|
|
10183
|
+
nextPage: null
|
|
10184
|
+
});
|
|
10059
10185
|
|
|
10060
|
-
const
|
|
10061
|
-
|
|
10062
|
-
}
|
|
10063
|
-
id: _defaultExport$c.__hash
|
|
10064
|
-
}, _defaultExport$c));
|
|
10186
|
+
const setFilter = filter => setState(state => _objectSpread2(_objectSpread2({}, state), {}, {
|
|
10187
|
+
filter
|
|
10188
|
+
}));
|
|
10065
10189
|
|
|
10066
|
-
const
|
|
10067
|
-
|
|
10068
|
-
}
|
|
10069
|
-
|
|
10070
|
-
|
|
10190
|
+
const setSelected = selected => setState(state => _objectSpread2(_objectSpread2({}, state), {}, {
|
|
10191
|
+
selected
|
|
10192
|
+
}));
|
|
10193
|
+
|
|
10194
|
+
const debouncedFilter = useDebounce(state.filter, 500);
|
|
10195
|
+
|
|
10196
|
+
const fetchItems = async page => {
|
|
10197
|
+
var _result$dimensionItem;
|
|
10071
10198
|
|
|
10199
|
+
setState(state => _objectSpread2(_objectSpread2({}, state), {}, {
|
|
10200
|
+
loading: true
|
|
10201
|
+
}));
|
|
10202
|
+
const result = await onFetch(page, state.filter);
|
|
10203
|
+
const newOptions = (_result$dimensionItem = result.dimensionItems) === null || _result$dimensionItem === void 0 ? void 0 : _result$dimensionItem.map(({
|
|
10204
|
+
id,
|
|
10205
|
+
name,
|
|
10206
|
+
disabled
|
|
10207
|
+
}) => ({
|
|
10208
|
+
label: name,
|
|
10209
|
+
value: id,
|
|
10210
|
+
disabled
|
|
10211
|
+
}));
|
|
10212
|
+
setState(state => _objectSpread2(_objectSpread2({}, state), {}, {
|
|
10213
|
+
loading: false,
|
|
10214
|
+
options: page > 1 ? [...state.options, ...newOptions] : newOptions,
|
|
10215
|
+
nextPage: result.nextPage
|
|
10216
|
+
}));
|
|
10217
|
+
};
|
|
10218
|
+
|
|
10219
|
+
useEffect(() => {
|
|
10220
|
+
fetchItems(1);
|
|
10221
|
+
}, [debouncedFilter]);
|
|
10222
|
+
|
|
10223
|
+
const _onChange = useCallback(newSelected => {
|
|
10224
|
+
const newSelectedWithLabel = newSelected.map(value => ({
|
|
10225
|
+
value,
|
|
10226
|
+
label: [...state.options, ...state.selected].find(item => item.value === value).label
|
|
10227
|
+
}));
|
|
10228
|
+
setSelected(newSelectedWithLabel);
|
|
10229
|
+
onSelect(newSelectedWithLabel);
|
|
10230
|
+
}, [state.options, state.selected]);
|
|
10231
|
+
|
|
10232
|
+
const onEndReached = useCallback(() => {
|
|
10233
|
+
if (state.nextPage) {
|
|
10234
|
+
fetchItems(state.nextPage);
|
|
10235
|
+
}
|
|
10236
|
+
}, [state.nextPage]);
|
|
10072
10237
|
return /*#__PURE__*/React.createElement(Transfer, {
|
|
10073
10238
|
onChange: ({
|
|
10074
10239
|
selected
|
|
10075
|
-
}) =>
|
|
10076
|
-
|
|
10077
|
-
|
|
10078
|
-
|
|
10079
|
-
|
|
10080
|
-
|
|
10081
|
-
|
|
10082
|
-
|
|
10240
|
+
}) => _onChange(selected),
|
|
10241
|
+
selected: state.selected.map(item => item.value),
|
|
10242
|
+
options: [...state.options, ...state.selected],
|
|
10243
|
+
loading: state.loading,
|
|
10244
|
+
loadingPicked: state.loading,
|
|
10245
|
+
sourceEmptyPlaceholder: /*#__PURE__*/React.createElement(SourceEmptyPlaceholder, {
|
|
10246
|
+
loading: state.loading,
|
|
10247
|
+
filter: debouncedFilter,
|
|
10248
|
+
options: state.options,
|
|
10249
|
+
noItemsMessage: noItemsMessage
|
|
10250
|
+
}),
|
|
10251
|
+
onEndReached: onEndReached,
|
|
10252
|
+
leftHeader: /*#__PURE__*/React.createElement(LeftHeader, {
|
|
10253
|
+
filter: state.filter,
|
|
10254
|
+
setFilter: setFilter
|
|
10255
|
+
}),
|
|
10083
10256
|
enableOrderChange: true,
|
|
10084
10257
|
height: TRANSFER_HEIGHT,
|
|
10085
10258
|
optionsWidth: TRANSFER_OPTIONS_WIDTH,
|
|
10086
10259
|
selectedWidth: TRANSFER_SELECTED_WIDTH,
|
|
10087
|
-
selectedEmptyComponent:
|
|
10088
|
-
rightHeader:
|
|
10260
|
+
selectedEmptyComponent: /*#__PURE__*/React.createElement(EmptySelection, null),
|
|
10261
|
+
rightHeader: /*#__PURE__*/React.createElement(RightHeader, null),
|
|
10089
10262
|
rightFooter: rightFooter,
|
|
10090
|
-
options: allItems.map(({
|
|
10091
|
-
id,
|
|
10092
|
-
name,
|
|
10093
|
-
disabled
|
|
10094
|
-
}) => ({
|
|
10095
|
-
label: name,
|
|
10096
|
-
value: id,
|
|
10097
|
-
disabled
|
|
10098
|
-
})),
|
|
10099
10263
|
renderOption: props => /*#__PURE__*/React.createElement(TransferOption, _extends({}, props, {
|
|
10100
10264
|
icon: GenericIcon
|
|
10101
10265
|
}))
|
|
@@ -10103,61 +10267,54 @@ const ItemSelector$1 = ({
|
|
|
10103
10267
|
};
|
|
10104
10268
|
|
|
10105
10269
|
ItemSelector$1.propTypes = {
|
|
10106
|
-
|
|
10107
|
-
id: PropTypes.string,
|
|
10108
|
-
name: PropTypes.string
|
|
10109
|
-
})).isRequired,
|
|
10270
|
+
onFetch: PropTypes.func.isRequired,
|
|
10110
10271
|
onSelect: PropTypes.func.isRequired,
|
|
10111
|
-
|
|
10112
|
-
|
|
10272
|
+
initialSelected: PropTypes.arrayOf(PropTypes.exact({
|
|
10273
|
+
label: PropTypes.string.isRequired,
|
|
10274
|
+
value: PropTypes.string.isRequired
|
|
10275
|
+
})),
|
|
10276
|
+
noItemsMessage: PropTypes.string,
|
|
10113
10277
|
rightFooter: PropTypes.node
|
|
10114
10278
|
};
|
|
10115
10279
|
ItemSelector$1.defaultProps = {
|
|
10116
|
-
|
|
10280
|
+
initialSelected: []
|
|
10117
10281
|
};
|
|
10118
10282
|
|
|
10119
10283
|
const DynamicDimension = ({
|
|
10120
|
-
context,
|
|
10121
10284
|
dimensionId,
|
|
10122
10285
|
onSelect,
|
|
10123
10286
|
selectedItems,
|
|
10124
10287
|
rightFooter
|
|
10125
10288
|
}) => {
|
|
10126
|
-
const
|
|
10127
|
-
useEffect(() => {
|
|
10128
|
-
if (!items || !items.length) {
|
|
10129
|
-
getItems();
|
|
10130
|
-
}
|
|
10131
|
-
}, []);
|
|
10289
|
+
const dataEngine = useDataEngine();
|
|
10132
10290
|
|
|
10133
|
-
const
|
|
10134
|
-
|
|
10135
|
-
|
|
10136
|
-
|
|
10137
|
-
|
|
10138
|
-
|
|
10139
|
-
const formattedItems = selectedItemIds.map(id => ({
|
|
10140
|
-
id,
|
|
10141
|
-
name: items.find(item => item.id === id).name // TODO: Re: *** above, this won't work with pagination
|
|
10142
|
-
|
|
10143
|
-
})); // TODO: fetch the name from somewhere else, as not all content in selectedItems might be present in the items list
|
|
10291
|
+
const fetchItems = (page, searchTerm) => apiFetchItemsByDimension({
|
|
10292
|
+
dataEngine,
|
|
10293
|
+
dimensionId,
|
|
10294
|
+
searchTerm,
|
|
10295
|
+
page
|
|
10296
|
+
});
|
|
10144
10297
|
|
|
10145
|
-
|
|
10146
|
-
|
|
10147
|
-
|
|
10148
|
-
|
|
10149
|
-
|
|
10298
|
+
const onSelectItems = selectedItem => onSelect({
|
|
10299
|
+
dimensionId: dimensionId,
|
|
10300
|
+
items: selectedItem.map(item => ({
|
|
10301
|
+
id: item.value,
|
|
10302
|
+
name: item.label
|
|
10303
|
+
}))
|
|
10304
|
+
});
|
|
10150
10305
|
|
|
10151
10306
|
return /*#__PURE__*/React.createElement(ItemSelector$1, {
|
|
10307
|
+
initialSelected: selectedItems.map(item => ({
|
|
10308
|
+
value: item.id,
|
|
10309
|
+
label: item.name
|
|
10310
|
+
})),
|
|
10311
|
+
noItemsMessage: i18n.t('Nothing found'),
|
|
10312
|
+
onFetch: fetchItems,
|
|
10152
10313
|
onSelect: onSelectItems,
|
|
10153
|
-
|
|
10154
|
-
initialSelectedItemIds: selectedItems.map(item => item.id),
|
|
10155
|
-
rightFooter: rightFooter // TODO: Pass in a func prop to fetch items, instead of fetching them on this level, to enable the loading spinner?
|
|
10156
|
-
|
|
10314
|
+
rightFooter: rightFooter
|
|
10157
10315
|
});
|
|
10158
10316
|
};
|
|
10159
10317
|
DynamicDimension.propTypes = {
|
|
10160
|
-
context: PropTypes.object.isRequired,
|
|
10161
10318
|
dimensionId: PropTypes.string.isRequired,
|
|
10162
10319
|
selectedItems: PropTypes.arrayOf(PropTypes.shape({
|
|
10163
10320
|
id: PropTypes.string,
|
|
@@ -14001,6 +14158,67 @@ PivotTable.propTypes = {
|
|
|
14001
14158
|
onToggleContextualMenu: PropTypes.func
|
|
14002
14159
|
};
|
|
14003
14160
|
|
|
14161
|
+
const axisGetDimension = (axis, dimensionId) => AXIS.isValid(axis) && axis.find(dimension => dimensionIs(dimension, dimensionId));
|
|
14162
|
+
|
|
14163
|
+
const axisHasDimension = (axis, dimensionId) => Boolean(axisGetDimension(axis, dimensionId));
|
|
14164
|
+
|
|
14165
|
+
const layoutReplaceDimension = (layout, dimensionId, items) => {
|
|
14166
|
+
const axisId = DEFAULT_AXIS_IDS.find(a => axisHasDimension(layout[a], dimensionId));
|
|
14167
|
+
|
|
14168
|
+
if (!axisId) {
|
|
14169
|
+
return Object.assign({}, layout);
|
|
14170
|
+
}
|
|
14171
|
+
|
|
14172
|
+
const newAxisDimensions = layout[axisId].map(dimension => {
|
|
14173
|
+
if (dimensionIs(dimension, dimensionId)) {
|
|
14174
|
+
return Object.assign({}, dimension, {
|
|
14175
|
+
items
|
|
14176
|
+
});
|
|
14177
|
+
}
|
|
14178
|
+
|
|
14179
|
+
return dimension;
|
|
14180
|
+
});
|
|
14181
|
+
return Object.assign({}, layout, {
|
|
14182
|
+
[axisId]: newAxisDimensions
|
|
14183
|
+
});
|
|
14184
|
+
};
|
|
14185
|
+
|
|
14186
|
+
const layoutGetAllAxes = layout => [layout[AXIS_ID_COLUMNS], layout[AXIS_ID_ROWS], layout[AXIS_ID_FILTERS]];
|
|
14187
|
+
|
|
14188
|
+
const layoutGetAllDimensions = layout => layoutGetAllAxes(layout).reduce((allDimensions, axis) => {
|
|
14189
|
+
allDimensions.push(...axis);
|
|
14190
|
+
return allDimensions;
|
|
14191
|
+
}, []);
|
|
14192
|
+
|
|
14193
|
+
const layoutGetDimension = (layout, dimensionId) => layoutGetAllDimensions(layout).find(dimension => dimensionIs(dimension, dimensionId));
|
|
14194
|
+
|
|
14195
|
+
const isOuLevelIntId = id => ouIdHelper.hasLevelPrefix(id) ? Number.isInteger(parseInt(ouIdHelper.removePrefix(id), 10)) : false;
|
|
14196
|
+
|
|
14197
|
+
const replaceNumericOuLevelWithUid = ouLevels => item => {
|
|
14198
|
+
if (!isOuLevelIntId(item.id)) {
|
|
14199
|
+
return item;
|
|
14200
|
+
}
|
|
14201
|
+
|
|
14202
|
+
const ouIntId = parseInt(ouIdHelper.removePrefix(item.id), 10);
|
|
14203
|
+
const ouUid = ouLevels.find(l => parseInt(l.level, 10) === ouIntId).id;
|
|
14204
|
+
return Object.assign({}, item, {
|
|
14205
|
+
id: ouIdHelper.addLevelPrefix(ouUid)
|
|
14206
|
+
});
|
|
14207
|
+
};
|
|
14208
|
+
|
|
14209
|
+
const convertOuLevelsToUids = (ouLevels, layout) => {
|
|
14210
|
+
const ouDimension = layoutGetDimension(layout, DIMENSION_ID_ORGUNIT);
|
|
14211
|
+
const hasNumericOuLevels = ouDimension && dimensionGetItems(ouDimension).some(item => isOuLevelIntId(item.id));
|
|
14212
|
+
|
|
14213
|
+
if (hasNumericOuLevels) {
|
|
14214
|
+
const replaceNumericOuLevel = replaceNumericOuLevelWithUid(ouLevels);
|
|
14215
|
+
const updatedOuItems = dimensionGetItems(ouDimension).map(replaceNumericOuLevel);
|
|
14216
|
+
return layoutReplaceDimension(layout, DIMENSION_ID_ORGUNIT, updatedOuItems);
|
|
14217
|
+
}
|
|
14218
|
+
|
|
14219
|
+
return layout;
|
|
14220
|
+
};
|
|
14221
|
+
|
|
14004
14222
|
const hasRelativeItems = (dimension, itemIds = []) => dimension === DIMENSION_ID_ASSIGNED_CATEGORIES || dimension === DIMENSION_ID_ORGUNIT && Array.isArray(itemIds) && itemIds.some(id => ouIdHelper.hasLevelPrefix(id) || ouIdHelper.hasGroupPrefix(id) || ['USER_ORGUNIT', 'USER_ORGUNIT_CHILDREN', 'USER_ORGUNIT_GRAND_CHILDREN'].includes(id)) || dimension === DIMENSION_ID_PERIOD && Array.isArray(itemIds) && itemIds.some(id => getRelativePeriodIds().includes(id));
|
|
14005
14223
|
|
|
14006
14224
|
const LAYOUT = {
|
|
@@ -14020,13 +14238,6 @@ const layoutFilterDimensions = (layout, dimensionIds) => {
|
|
|
14020
14238
|
return filteredLayout;
|
|
14021
14239
|
};
|
|
14022
14240
|
|
|
14023
|
-
const layoutGetAllAxes = layout => [layout[AXIS_ID_COLUMNS], layout[AXIS_ID_ROWS], layout[AXIS_ID_FILTERS]];
|
|
14024
|
-
|
|
14025
|
-
const layoutGetAllDimensions = layout => layoutGetAllAxes(layout).reduce((allDimensions, axis) => {
|
|
14026
|
-
allDimensions.push(...axis);
|
|
14027
|
-
return allDimensions;
|
|
14028
|
-
}, []);
|
|
14029
|
-
|
|
14030
14241
|
const axisGetAllItems = axis => axis.reduce((allItems, dimension) => {
|
|
14031
14242
|
allItems.push(...dimensionGetItems(dimension));
|
|
14032
14243
|
return allItems;
|
|
@@ -14063,35 +14274,8 @@ const layoutGetAxisIdDimensionIdsObject = layout => DEFAULT_AXIS_IDS.reduce((obj
|
|
|
14063
14274
|
return obj;
|
|
14064
14275
|
}, {});
|
|
14065
14276
|
|
|
14066
|
-
const layoutGetDimension = (layout, dimensionId) => layoutGetAllDimensions(layout).find(dimension => dimensionIs(dimension, dimensionId));
|
|
14067
|
-
|
|
14068
14277
|
const layoutGetDimensionItems = (layout, dimensionId) => dimensionGetItems(layoutGetDimension(layout, dimensionId));
|
|
14069
14278
|
|
|
14070
|
-
const axisGetDimension = (axis, dimensionId) => AXIS.isValid(axis) && axis.find(dimension => dimensionIs(dimension, dimensionId));
|
|
14071
|
-
|
|
14072
|
-
const axisHasDimension = (axis, dimensionId) => Boolean(axisGetDimension(axis, dimensionId));
|
|
14073
|
-
|
|
14074
|
-
const layoutReplaceDimension = (layout, dimensionId, items) => {
|
|
14075
|
-
const axisId = DEFAULT_AXIS_IDS.find(a => axisHasDimension(layout[a], dimensionId));
|
|
14076
|
-
|
|
14077
|
-
if (!axisId) {
|
|
14078
|
-
return Object.assign({}, layout);
|
|
14079
|
-
}
|
|
14080
|
-
|
|
14081
|
-
const newAxisDimensions = layout[axisId].map(dimension => {
|
|
14082
|
-
if (dimensionIs(dimension, dimensionId)) {
|
|
14083
|
-
return Object.assign({}, dimension, {
|
|
14084
|
-
items
|
|
14085
|
-
});
|
|
14086
|
-
}
|
|
14087
|
-
|
|
14088
|
-
return dimension;
|
|
14089
|
-
});
|
|
14090
|
-
return Object.assign({}, layout, {
|
|
14091
|
-
[axisId]: newAxisDimensions
|
|
14092
|
-
});
|
|
14093
|
-
};
|
|
14094
|
-
|
|
14095
14279
|
const dimensionGetItemIds = dimension => dimensionGetItems(dimension).map(item => itemGetId(item));
|
|
14096
14280
|
|
|
14097
14281
|
const layoutGetDimensionIdItemIdsObject = layout => layoutGetAllDimensions(layout).reduce((obj, dimension) => {
|
|
@@ -14950,9 +15134,19 @@ function getYearOnYear$1 (store, layout, extraOptions) {
|
|
|
14950
15134
|
}, []);
|
|
14951
15135
|
}
|
|
14952
15136
|
|
|
14953
|
-
|
|
14954
|
-
|
|
14955
|
-
|
|
15137
|
+
const labelFontStyle = layout.fontStyle[FONT_STYLE_CATEGORY_AXIS_LABELS];
|
|
15138
|
+
return objectClean({
|
|
15139
|
+
categories,
|
|
15140
|
+
title: getAxisTitle(layout.domainAxisLabel, layout.fontStyle[FONT_STYLE_HORIZONTAL_AXIS_TITLE], FONT_STYLE_HORIZONTAL_AXIS_TITLE, layout.type),
|
|
15141
|
+
labels: labelFontStyle ? {
|
|
15142
|
+
style: {
|
|
15143
|
+
color: labelFontStyle[FONT_STYLE_OPTION_TEXT_COLOR],
|
|
15144
|
+
fontSize: "".concat(labelFontStyle[FONT_STYLE_OPTION_FONT_SIZE], "px"),
|
|
15145
|
+
fontWeight: labelFontStyle[FONT_STYLE_OPTION_BOLD] ? FONT_STYLE_OPTION_BOLD : 'normal',
|
|
15146
|
+
fontStyle: labelFontStyle[FONT_STYLE_OPTION_ITALIC] ? FONT_STYLE_OPTION_ITALIC : 'normal'
|
|
15147
|
+
}
|
|
15148
|
+
} : {}
|
|
15149
|
+
});
|
|
14956
15150
|
}
|
|
14957
15151
|
|
|
14958
15152
|
function getTwoCategory$1 (store, layout) {
|
|
@@ -15177,13 +15371,9 @@ function getPlotLineLabelStyle(fontStyle) {
|
|
|
15177
15371
|
};
|
|
15178
15372
|
}
|
|
15179
15373
|
|
|
15180
|
-
|
|
15181
|
-
return isNumeric(layout.rangeAxisMinValue) ? layout.rangeAxisMinValue : DEFAULT_MIN_VALUE;
|
|
15182
|
-
}
|
|
15374
|
+
const getMinValue = (rangeAxisMinValue, dataValues) => isNumeric(rangeAxisMinValue) ? rangeAxisMinValue : (dataValues === null || dataValues === void 0 ? void 0 : dataValues.some(value => value < DEFAULT_MIN_VALUE)) ? undefined : DEFAULT_MIN_VALUE;
|
|
15183
15375
|
|
|
15184
|
-
|
|
15185
|
-
return isNumeric(layout.rangeAxisMaxValue) ? layout.rangeAxisMaxValue : undefined;
|
|
15186
|
-
}
|
|
15376
|
+
const getMaxValue = (rangeAxisMaxValue, dataValues) => isNumeric(rangeAxisMaxValue) ? rangeAxisMaxValue : (dataValues === null || dataValues === void 0 ? void 0 : dataValues.every(value => value < DEFAULT_MIN_VALUE)) ? DEFAULT_MIN_VALUE : undefined;
|
|
15187
15377
|
|
|
15188
15378
|
function getSteps(layout) {
|
|
15189
15379
|
return isNumeric(layout.rangeAxisSteps) ? layout.rangeAxisSteps : undefined;
|
|
@@ -15291,14 +15481,15 @@ function getDefault$3(layout, series, extraOptions) {
|
|
|
15291
15481
|
|
|
15292
15482
|
const axes = [];
|
|
15293
15483
|
const filteredSeries = (_layout$series = layout.series) === null || _layout$series === void 0 ? void 0 : _layout$series.filter(layoutSeriesItem => series.some(seriesItem => seriesItem.id === layoutSeriesItem.dimensionItem));
|
|
15484
|
+
const dataValues = series === null || series === void 0 ? void 0 : series.map(item => item.data).flat();
|
|
15294
15485
|
|
|
15295
15486
|
if (isDualAxisType(layout.type) && hasCustomAxes(filteredSeries) && !axisHasRelativeItems(layout.columns)) {
|
|
15296
15487
|
const axisIdsMap = getAxisIdsMap(layout.series, series);
|
|
15297
15488
|
axes.push(...getMultipleAxes(extraOptions.multiAxisTheme, [...new Set(Object.keys(axisIdsMap))].sort((a, b) => a - b)));
|
|
15298
15489
|
} else {
|
|
15299
15490
|
axes.push(objectClean({
|
|
15300
|
-
min: getMinValue(layout),
|
|
15301
|
-
max: getMaxValue(layout),
|
|
15491
|
+
min: getMinValue(layout.rangeAxisMinValue, dataValues),
|
|
15492
|
+
max: getMaxValue(layout.rangeAxisMaxValue, dataValues),
|
|
15302
15493
|
tickAmount: getSteps(layout),
|
|
15303
15494
|
title: getAxisTitle(layout.rangeAxisLabel, layout.fontStyle[FONT_STYLE_VERTICAL_AXIS_TITLE], FONT_STYLE_VERTICAL_AXIS_TITLE, layout.type),
|
|
15304
15495
|
plotLines: arrayClean([getTargetLine(layout), getBaseLine(layout)]),
|
|
@@ -16123,7 +16314,8 @@ const DEFAULT_TRENDLINE = {
|
|
|
16123
16314
|
enabled: false,
|
|
16124
16315
|
symbol: 'circle',
|
|
16125
16316
|
radius: 2
|
|
16126
|
-
}
|
|
16317
|
+
},
|
|
16318
|
+
zIndex: 1
|
|
16127
16319
|
};
|
|
16128
16320
|
const isRegressionIneligible = type => arrayContains([VIS_TYPE_GAUGE, VIS_TYPE_PIE], type);
|
|
16129
16321
|
function addTrendLines (layout, series, isStacked) {
|
|
@@ -17072,5 +17264,5 @@ function createVisualization(data, layout, el, extraOptions, error = defaultErro
|
|
|
17072
17264
|
};
|
|
17073
17265
|
}
|
|
17074
17266
|
|
|
17075
|
-
export { AXIS, AXIS_ID_COLUMNS, AXIS_ID_FILTERS, AXIS_ID_ROWS, COLOR_SET_BRIGHT, COLOR_SET_COLOR_BLIND, COLOR_SET_DARK, COLOR_SET_DEFAULT, COLOR_SET_GRAY, COLOR_SET_PATTERNS, DEFAULT_AXIS_IDS, DIMENSION, DIMENSION_ID_ASSIGNED_CATEGORIES, DIMENSION_ID_DATA, DIMENSION_ID_ORGUNIT, DIMENSION_ID_PERIOD, DIMENSION_PROPS, DIMENSION_PROP_ID, DIMENSION_PROP_ITEMS, DIMENSION_PROP_NO_ITEMS, DataDimension, Filter$r as DimensionFilter, DimensionItem, DimensionMenu, DimensionsPanel, DynamicDimension, FONT_STYLE_BASE_LINE_LABEL, FONT_STYLE_CATEGORY_AXIS_LABELS, FONT_STYLE_HORIZONTAL_AXIS_TITLE, FONT_STYLE_LEGEND, FONT_STYLE_OPTION_BOLD, FONT_STYLE_OPTION_FONT, FONT_STYLE_OPTION_FONT_SIZE, FONT_STYLE_OPTION_ITALIC, FONT_STYLE_OPTION_TEXT_ALIGN, FONT_STYLE_OPTION_TEXT_COLOR, FONT_STYLE_OPTION_UNDERLINE, FONT_STYLE_SERIES_AXIS_LABELS, FONT_STYLE_TARGET_LINE_LABEL, FONT_STYLE_VERTICAL_AXIS_TITLE, FONT_STYLE_VISUALIZATION_SUBTITLE, FONT_STYLE_VISUALIZATION_TITLE, FixedPeriodSelect, ITEM, ITEM_PROPS, ITEM_PROP_ID, ItemSelector, LAYOUT, LAYOUT_TYPE_DEFAULT, LAYOUT_TYPE_PIE, LAYOUT_TYPE_PIVOT_TABLE, LAYOUT_TYPE_SINGLE_VALUE, LAYOUT_TYPE_YEAR_OVER_YEAR, OrgUnitDimension, PeriodDimension, PivotTable, TEXT_ALIGN_CENTER, TEXT_ALIGN_LEFT, TEXT_ALIGN_RIGHT, VIS_TYPE_AREA, VIS_TYPE_BAR, VIS_TYPE_BUBBLE, VIS_TYPE_COLUMN, VIS_TYPE_GAUGE, VIS_TYPE_LINE, VIS_TYPE_PIE, VIS_TYPE_PIVOT_TABLE, VIS_TYPE_RADAR, VIS_TYPE_SINGLE_VALUE, VIS_TYPE_STACKED_AREA, VIS_TYPE_STACKED_BAR, VIS_TYPE_STACKED_COLUMN, VIS_TYPE_YEAR_OVER_YEAR_COLUMN, VIS_TYPE_YEAR_OVER_YEAR_LINE, apiFetchDimensions, apiFetchRecommendedIds, axisGetAllItems, axisGetDimension, axisGetDimensionIds, axisHasDataDimension, axisHasDimension, axisHasOuDimension, axisHasPeriodDimension, axisIsEmpty, canDimensionBeAddedToAxisByVisType as canDimensionBeAddedToAxis, colorSets, createVisualization, defaultFontStyle, defaultVisType, deleteFontStyleOption, dimensionCreate, dimensionGetId, dimensionGetItemIds, dimensionGetItems, dimensionIs, dimensionIsEmpty, dimensionIsValid, filterOutPredefinedDimensions, getAllLockedDimIdsByVisType as getAllLockedDimensionIds, getAvailableAxesByVisType as getAvailableAxes, getAxisMaxNumberOfDimsByVisType as getAxisMaxNumberOfDimensions, getAxisMaxNumberOfItemsByVisType as getAxisMaxNumberOfItems, getAxisMinNumberOfDimsByVisType as getAxisMinNumberOfDimensions, getAxisName, getAxisNameByLayoutType, getAxisPerLockedDimByVisType as getAxisPerLockedDimension, getDimensionById, getDisallowedDimsByVisType as getDisallowedDimensions, getDisplayNameByVisType, getDynamicDimensions, getFixedDimensions, getFontSizeOptions, getLayoutTypeByVisType, getPredefinedDimensionProp, getPredefinedDimensions, getTextAlignOptions, getTransferableDimensionPerAxisByVisType as getTransferableDimension, hasAxisTooManyItemsByVisType as hasAxisTooManyItems, hasCustomAxes, hasRelativeItems, isAxisFullByVisType as isAxisFull, isDimensionLockedByVisType as isDimensionLocked, isDualAxisType, isSingleValue, isStacked, isTwoCategoryChartType, isYearOverYear, itemGetId, itemIsValid, layoutFilterDimensions, layoutGetAllAxes, layoutGetAllDimensions, layoutGetAllItemIds, layoutGetAllItems, layoutGetAxisIdDimensionIdsObject, layoutGetDimension, layoutGetDimensionIdItemIdsObject, layoutGetDimensionItems, layoutHasDataDimension, layoutHasDimension, layoutHasDynamicDimension, layoutHasPeriodDimension, layoutReplaceDimension, ouIdHelper, visTypeDescriptions, visTypeDisplayNames, visTypeIcons };
|
|
17267
|
+
export { AXIS, AXIS_ID_COLUMNS, AXIS_ID_FILTERS, AXIS_ID_ROWS, COLOR_SET_BRIGHT, COLOR_SET_COLOR_BLIND, COLOR_SET_DARK, COLOR_SET_DEFAULT, COLOR_SET_GRAY, COLOR_SET_PATTERNS, DEFAULT_AXIS_IDS, DIMENSION, DIMENSION_ID_ASSIGNED_CATEGORIES, DIMENSION_ID_DATA, DIMENSION_ID_ORGUNIT, DIMENSION_ID_PERIOD, DIMENSION_PROPS, DIMENSION_PROP_ID, DIMENSION_PROP_ITEMS, DIMENSION_PROP_NO_ITEMS, DataDimension, Filter$r as DimensionFilter, DimensionItem, DimensionMenu, DimensionsPanel, DynamicDimension, FONT_STYLE_BASE_LINE_LABEL, FONT_STYLE_CATEGORY_AXIS_LABELS, FONT_STYLE_HORIZONTAL_AXIS_TITLE, FONT_STYLE_LEGEND, FONT_STYLE_OPTION_BOLD, FONT_STYLE_OPTION_FONT, FONT_STYLE_OPTION_FONT_SIZE, FONT_STYLE_OPTION_ITALIC, FONT_STYLE_OPTION_TEXT_ALIGN, FONT_STYLE_OPTION_TEXT_COLOR, FONT_STYLE_OPTION_UNDERLINE, FONT_STYLE_SERIES_AXIS_LABELS, FONT_STYLE_TARGET_LINE_LABEL, FONT_STYLE_VERTICAL_AXIS_TITLE, FONT_STYLE_VISUALIZATION_SUBTITLE, FONT_STYLE_VISUALIZATION_TITLE, FixedPeriodSelect, ITEM, ITEM_PROPS, ITEM_PROP_ID, ItemSelector, LAYOUT, LAYOUT_TYPE_DEFAULT, LAYOUT_TYPE_PIE, LAYOUT_TYPE_PIVOT_TABLE, LAYOUT_TYPE_SINGLE_VALUE, LAYOUT_TYPE_YEAR_OVER_YEAR, OrgUnitDimension, PeriodDimension, PivotTable, TEXT_ALIGN_CENTER, TEXT_ALIGN_LEFT, TEXT_ALIGN_RIGHT, VIS_TYPE_AREA, VIS_TYPE_BAR, VIS_TYPE_BUBBLE, VIS_TYPE_COLUMN, VIS_TYPE_GAUGE, VIS_TYPE_LINE, VIS_TYPE_PIE, VIS_TYPE_PIVOT_TABLE, VIS_TYPE_RADAR, VIS_TYPE_SINGLE_VALUE, VIS_TYPE_STACKED_AREA, VIS_TYPE_STACKED_BAR, VIS_TYPE_STACKED_COLUMN, VIS_TYPE_YEAR_OVER_YEAR_COLUMN, VIS_TYPE_YEAR_OVER_YEAR_LINE, apiFetchDimensions, apiFetchRecommendedIds, axisGetAllItems, axisGetDimension, axisGetDimensionIds, axisHasDataDimension, axisHasDimension, axisHasOuDimension, axisHasPeriodDimension, axisIsEmpty, canDimensionBeAddedToAxisByVisType as canDimensionBeAddedToAxis, colorSets, convertOuLevelsToUids, createVisualization, defaultFontStyle, defaultVisType, deleteFontStyleOption, dimensionCreate, dimensionGetId, dimensionGetItemIds, dimensionGetItems, dimensionIs, dimensionIsEmpty, dimensionIsValid, filterOutPredefinedDimensions, getAllLockedDimIdsByVisType as getAllLockedDimensionIds, getAvailableAxesByVisType as getAvailableAxes, getAxisMaxNumberOfDimsByVisType as getAxisMaxNumberOfDimensions, getAxisMaxNumberOfItemsByVisType as getAxisMaxNumberOfItems, getAxisMinNumberOfDimsByVisType as getAxisMinNumberOfDimensions, getAxisName, getAxisNameByLayoutType, getAxisPerLockedDimByVisType as getAxisPerLockedDimension, getDimensionById, getDisallowedDimsByVisType as getDisallowedDimensions, getDisplayNameByVisType, getDynamicDimensions, getFixedDimensions, getFontSizeOptions, getLayoutTypeByVisType, getPredefinedDimensionProp, getPredefinedDimensions, getTextAlignOptions, getTransferableDimensionPerAxisByVisType as getTransferableDimension, hasAxisTooManyItemsByVisType as hasAxisTooManyItems, hasCustomAxes, hasRelativeItems, isAxisFullByVisType as isAxisFull, isDimensionLockedByVisType as isDimensionLocked, isDualAxisType, isSingleValue, isStacked, isTwoCategoryChartType, isYearOverYear, itemGetId, itemIsValid, layoutFilterDimensions, layoutGetAllAxes, layoutGetAllDimensions, layoutGetAllItemIds, layoutGetAllItems, layoutGetAxisIdDimensionIdsObject, layoutGetDimension, layoutGetDimensionIdItemIdsObject, layoutGetDimensionItems, layoutHasDataDimension, layoutHasDimension, layoutHasDynamicDimension, layoutHasPeriodDimension, layoutReplaceDimension, ouIdHelper, visTypeDescriptions, visTypeDisplayNames, visTypeIcons };
|
|
17076
17268
|
//# sourceMappingURL=lib.js.map
|