@hisptz/react-ui
Version:
A collection of reusable complex DHIS2 react ui components.
112 lines (96 loc) • 3.35 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.useManageLegendDefinitions = useManageLegendDefinitions;
var _d2I18n = _interopRequireDefault(require("@dhis2/d2-i18n"));
var _lodash = require("lodash");
var _react = require("react");
var _ConfirmDialog = require("../../ConfirmDialog");
var _utils = require("../utils");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function useManageLegendDefinitions(legendDefinitions, _ref) {
let {
onChange,
shouldVerify,
onResetLegends
} = _ref;
const {
confirm
} = (0, _ConfirmDialog.useConfirmDialog)();
const nonDefaultLegendDefinitions = (0, _utils.getNonDefaultLegendDefinitions)(legendDefinitions);
const defaultLegendDefinitions = (0, _utils.getDefaultLegendDefinitions)(legendDefinitions);
const onAdd = (0, _react.useCallback)(value => {
const newLegendDefinitions = [...(0, _lodash.cloneDeep)(legendDefinitions), value];
function add() {
onChange(newLegendDefinitions);
}
if (shouldVerify) {
confirm({
onCancel() {},
title: _d2I18n.default.t("Confirm legend reset"),
message: _d2I18n.default.t("Adding a legend definition will reset all legends to their default values. Are you sure you want to continue?"),
confirmButtonColor: "primary",
confirmButtonText: _d2I18n.default.t("Reset"),
onConfirm: () => {
add();
onResetLegends(newLegendDefinitions);
},
customActions: [{
label: _d2I18n.default.t("Leave as is"),
onClick: () => {
add();
}
}]
});
} else {
add();
}
}, [confirm, legendDefinitions, onResetLegends, shouldVerify]);
const onDelete = (0, _react.useCallback)(data => {
const updatedDefinitions = (0, _lodash.cloneDeep)(legendDefinitions);
const index = (0, _lodash.findIndex)(updatedDefinitions, _ref2 => {
let {
id: legendDefinitionId
} = _ref2;
return legendDefinitionId === data.id;
});
updatedDefinitions.splice(index, 1);
function deleteDefinition() {
onChange(updatedDefinitions);
}
if (shouldVerify) {
confirm({
onCancel() {},
title: "".concat(_d2I18n.default.t("Confirm legends reset")),
message: "".concat(_d2I18n.default.t("Deleting this definition will reset all configured legends. Are you sure you want to delete this legend definition?")),
confirmButtonColor: "primary",
confirmButtonText: _d2I18n.default.t("Reset"),
onConfirm: () => {
deleteDefinition();
onResetLegends(updatedDefinitions);
}
});
} else {
deleteDefinition();
}
}, [confirm, legendDefinitions, onResetLegends, shouldVerify]);
const onEdit = data => {
const updatedDefinitions = (0, _lodash.cloneDeep)(legendDefinitions);
const index = (0, _lodash.findIndex)(updatedDefinitions, _ref3 => {
let {
id: legendDefinitionId
} = _ref3;
return legendDefinitionId === data.id;
});
(0, _lodash.set)(updatedDefinitions, index, data);
onChange(updatedDefinitions);
};
return {
nonDefaultLegendDefinitions,
defaultLegendDefinitions,
onAdd,
onDelete,
onEdit
};
}