@hisptz/react-ui
Version:
A collection of reusable complex DHIS2 react ui components.
67 lines (55 loc) • 3.03 kB
JavaScript
import { cloneDeep, isEmpty, set } from "lodash";
import { uid } from "../../../core/utils";
export function generateLegendDefaults() {
let legendDefinitions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
let weight = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 100;
let highIsGood = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
if (!isEmpty(legendDefinitions)) {
const actualWeight = weight !== null && weight !== void 0 ? weight : 100; //sets 100 as the default weight
const range = actualWeight / (legendDefinitions === null || legendDefinitions === void 0 ? void 0 : legendDefinitions.length);
const values = [];
let legendDefinitionIterator = legendDefinitions.length - 1;
for (let i = 0; i < actualWeight; i += range) {
const {
id
} = legendDefinitions[legendDefinitionIterator];
values.push({
id: uid(),
startValue: "".concat(Math.floor(i)),
endValue: "".concat(Math.floor(i + range)),
legendDefinitionId: id
});
legendDefinitionIterator--;
}
return highIsGood ? values.reverse() : values;
}
return [];
}
export function resetLegends(groups, legendDefinitions) {
const newGroups = cloneDeep(groups);
if (newGroups) {
newGroups === null || newGroups === void 0 ? void 0 : newGroups.forEach(group => {
var _group$dataHolders;
group === null || group === void 0 ? void 0 : (_group$dataHolders = group.dataHolders) === null || _group$dataHolders === void 0 ? void 0 : _group$dataHolders.forEach(dataHolder => {
var _dataHolder$dataSourc;
dataHolder === null || dataHolder === void 0 ? void 0 : (_dataHolder$dataSourc = dataHolder.dataSources) === null || _dataHolder$dataSourc === void 0 ? void 0 : _dataHolder$dataSourc.forEach(dataSource => {
set(dataSource, "legends", generateLegendDefaults(getNonDefaultLegendDefinitions(legendDefinitions)));
if (!isEmpty(dataSource.specificTargets)) {
dataSource.specificTargets.forEach(specificTarget => {
set(specificTarget, "legends", generateLegendDefaults(getNonDefaultLegendDefinitions(legendDefinitions)));
});
}
});
});
});
}
return newGroups;
}
export function getNonDefaultLegendDefinitions(legendDefinitions) {
var _legendDefinitions$fi;
return (_legendDefinitions$fi = legendDefinitions === null || legendDefinitions === void 0 ? void 0 : legendDefinitions.filter(legendDefinition => !legendDefinition.isDefault)) !== null && _legendDefinitions$fi !== void 0 ? _legendDefinitions$fi : [];
}
export function getDefaultLegendDefinitions(legendDefinitions) {
var _legendDefinitions$fi2;
return (_legendDefinitions$fi2 = legendDefinitions === null || legendDefinitions === void 0 ? void 0 : legendDefinitions.filter(legendDefinition => legendDefinition.isDefault)) !== null && _legendDefinitions$fi2 !== void 0 ? _legendDefinitions$fi2 : [];
}