@undp/carbon-library 1.0.16-CARBON-363.15 → 1.0.16-CARBON-363.41

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,8 @@
1
+ export type Period = {
2
+ id?: number;
3
+ key?: string;
4
+ startYear: number;
5
+ endYear: number;
6
+ finalized?: boolean;
7
+ deleted?: boolean;
8
+ };
package/dist/esm/index.js CHANGED
@@ -24734,23 +24734,21 @@ var NdcActionType;
24734
24734
  NdcActionType[NdcActionType["sub"] = 1] = "sub";
24735
24735
  })(NdcActionType || (NdcActionType = {}));
24736
24736
  var NdcDetailsComponent = function (props) {
24737
- var t = props.t; props.useConnection; var useUserContext = props.useUserContext;
24737
+ var t = props.t, useConnection = props.useConnection, useUserContext = props.useUserContext;
24738
24738
  var RangePicker = DatePicker.RangePicker;
24739
24739
  var _a = useState([]), ndcDetailsData = _a[0], setNdcDetailsData = _a[1];
24740
24740
  var _b = useState(false), loading = _b[0]; _b[1];
24741
- var periodItemsRef = useRef([]);
24742
24741
  var _c = useState([]), periodItems = _c[0], setPeriodItems = _c[1];
24743
- var _d = useState("add_new"), selectedTab = _d[0], setSelectedTab = _d[1];
24744
- var selectedPeriod = useRef({});
24742
+ var _d = useState({}), selectedPeriod = _d[0], setSelectedPeriod = _d[1];
24743
+ var selectedDateRangeRef = useRef({});
24745
24744
  var addedNdcDetailId = useRef(0);
24746
24745
  var selectedNdcDetail = useRef({});
24747
24746
  var _e = useState(0), tableKey = _e[0], setTableKey = _e[1];
24747
+ var _f = useConnection(), get = _f.get, post = _f.post;
24748
24748
  var userInfoState = useUserContext().userInfoState;
24749
- var isAddRangeVisible = function () {
24750
- return (((userInfoState === null || userInfoState === void 0 ? void 0 : userInfoState.companyRole) === CompanyRole.MINISTRY ||
24751
- (userInfoState === null || userInfoState === void 0 ? void 0 : userInfoState.companyRole) === CompanyRole.GOVERNMENT) &&
24752
- (userInfoState === null || userInfoState === void 0 ? void 0 : userInfoState.userRole) !== Role.ViewOnly);
24753
- };
24749
+ var isAddRangeVisible = ((userInfoState === null || userInfoState === void 0 ? void 0 : userInfoState.companyRole) === CompanyRole.MINISTRY ||
24750
+ (userInfoState === null || userInfoState === void 0 ? void 0 : userInfoState.companyRole) === CompanyRole.GOVERNMENT) &&
24751
+ (userInfoState === null || userInfoState === void 0 ? void 0 : userInfoState.userRole) !== Role.ViewOnly;
24754
24752
  var isAddNdcActionVisible = function () {
24755
24753
  return ((userInfoState === null || userInfoState === void 0 ? void 0 : userInfoState.companyRole) === CompanyRole.GOVERNMENT &&
24756
24754
  (userInfoState === null || userInfoState === void 0 ? void 0 : userInfoState.userRole) !== Role.ViewOnly);
@@ -24759,7 +24757,8 @@ var NdcDetailsComponent = function (props) {
24759
24757
  return num >= min && num <= max;
24760
24758
  };
24761
24759
  function onAddNewSubNdcDetail() {
24762
- var range = selectedTab.split('-');
24760
+ //const range = selectedPeriod.split("-");
24761
+ var range = [];
24763
24762
  var ndcDetail = ndcDetailsData.find(function (item) { return item.key === selectedNdcDetail.current.key; });
24764
24763
  var ndcDetailItemIndex = ndcDetailsData.findIndex(function (item) { return item.key === selectedNdcDetail.current.key; });
24765
24764
  if (ndcDetail) {
@@ -24769,9 +24768,9 @@ var NdcDetailsComponent = function (props) {
24769
24768
  startDate: new Date("".concat(Number(range[0]), "-01-24 23:12:00")),
24770
24769
  endDate: new Date("".concat(Number(range[0]), "-12-24 23:12:00")),
24771
24770
  ndcActionId: ndcDetail === null || ndcDetail === void 0 ? void 0 : ndcDetail.key,
24772
- nationalPlanObj: '',
24773
- kpi: '',
24774
- ministry: '',
24771
+ nationalPlanObj: "",
24772
+ kpi: "",
24773
+ ministry: "",
24775
24774
  };
24776
24775
  if (!ndcDetail.subNdcDetails) {
24777
24776
  ndcDetail.subNdcDetails = [];
@@ -24815,7 +24814,8 @@ var NdcDetailsComponent = function (props) {
24815
24814
  });
24816
24815
  };
24817
24816
  var getNdcDetailsForPeriod = function () {
24818
- var range = selectedTab.split("-");
24817
+ //const range = selectedPeriod.split("-");
24818
+ var range = [];
24819
24819
  if (range.length > 1) {
24820
24820
  var filteredData = ndcDetailsData.filter(function (item) {
24821
24821
  return inRange(Number(moment(item.startDate).year()), Number(range[0]), Number(range[1]));
@@ -24830,12 +24830,11 @@ var NdcDetailsComponent = function (props) {
24830
24830
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
24831
24831
  var ndcDetail = ndcDetailsData.find(function (item) { return item.key === key; });
24832
24832
  if (ndcDetail) {
24833
- if (((_b = ndcDetail === null || ndcDetail === void 0 ? void 0 : ndcDetail.subNdcDetails[((_a = ndcDetail === null || ndcDetail === void 0 ? void 0 : ndcDetail.subNdcDetails) === null || _a === void 0 ? void 0 : _a.length) - 1]) === null || _b === void 0 ? void 0 : _b.ministry.trim()) !== '' &&
24833
+ if (((_b = ndcDetail === null || ndcDetail === void 0 ? void 0 : ndcDetail.subNdcDetails[((_a = ndcDetail === null || ndcDetail === void 0 ? void 0 : ndcDetail.subNdcDetails) === null || _a === void 0 ? void 0 : _a.length) - 1]) === null || _b === void 0 ? void 0 : _b.ministry.trim()) !== "" &&
24834
24834
  ((_d = ndcDetail === null || ndcDetail === void 0 ? void 0 : ndcDetail.subNdcDetails[((_c = ndcDetail === null || ndcDetail === void 0 ? void 0 : ndcDetail.subNdcDetails) === null || _c === void 0 ? void 0 : _c.length) - 1]) === null || _d === void 0 ? void 0 : _d.ministry) &&
24835
- ((_f = ndcDetail === null || ndcDetail === void 0 ? void 0 : ndcDetail.subNdcDetails[((_e = ndcDetail === null || ndcDetail === void 0 ? void 0 : ndcDetail.subNdcDetails) === null || _e === void 0 ? void 0 : _e.length) - 1]) === null || _f === void 0 ? void 0 : _f.nationalPlanObj.trim()) !==
24836
- '' &&
24835
+ ((_f = ndcDetail === null || ndcDetail === void 0 ? void 0 : ndcDetail.subNdcDetails[((_e = ndcDetail === null || ndcDetail === void 0 ? void 0 : ndcDetail.subNdcDetails) === null || _e === void 0 ? void 0 : _e.length) - 1]) === null || _f === void 0 ? void 0 : _f.nationalPlanObj.trim()) !== "" &&
24837
24836
  ((_h = ndcDetail === null || ndcDetail === void 0 ? void 0 : ndcDetail.subNdcDetails[((_g = ndcDetail === null || ndcDetail === void 0 ? void 0 : ndcDetail.subNdcDetails) === null || _g === void 0 ? void 0 : _g.length) - 1]) === null || _h === void 0 ? void 0 : _h.nationalPlanObj) &&
24838
- String((_k = ndcDetail === null || ndcDetail === void 0 ? void 0 : ndcDetail.subNdcDetails[((_j = ndcDetail === null || ndcDetail === void 0 ? void 0 : ndcDetail.subNdcDetails) === null || _j === void 0 ? void 0 : _j.length) - 1]) === null || _k === void 0 ? void 0 : _k.kpi).trim() !== '' &&
24837
+ String((_k = ndcDetail === null || ndcDetail === void 0 ? void 0 : ndcDetail.subNdcDetails[((_j = ndcDetail === null || ndcDetail === void 0 ? void 0 : ndcDetail.subNdcDetails) === null || _j === void 0 ? void 0 : _j.length) - 1]) === null || _k === void 0 ? void 0 : _k.kpi).trim() !== "" &&
24839
24838
  String((_m = ndcDetail === null || ndcDetail === void 0 ? void 0 : ndcDetail.subNdcDetails[((_l = ndcDetail === null || ndcDetail === void 0 ? void 0 : ndcDetail.subNdcDetails) === null || _l === void 0 ? void 0 : _l.length) - 1]) === null || _m === void 0 ? void 0 : _m.kpi)) {
24840
24839
  onAddNewSubNdcDetail();
24841
24840
  }
@@ -24890,7 +24889,8 @@ var NdcDetailsComponent = function (props) {
24890
24889
  }); } });
24891
24890
  });
24892
24891
  function onAddNewNdcDetail() {
24893
- var range = selectedTab.split("-");
24892
+ //const range = selectedPeriod.split("-");
24893
+ var range = [];
24894
24894
  var ndcActionId = ++addedNdcDetailId.current;
24895
24895
  var newData = {
24896
24896
  key: ndcActionId,
@@ -24921,86 +24921,138 @@ var NdcDetailsComponent = function (props) {
24921
24921
  cell: EditableCell,
24922
24922
  },
24923
24923
  };
24924
- //commented because rendering issue
24925
- function ndcDetailsTableContent() {
24926
- return (React.createElement("div", null)
24927
- // <div>
24928
- // <Button
24929
- // onClick={onAddNewNdcDetail}
24930
- // type="primary"
24931
- // style={{
24932
- // marginBottom: 16,
24933
- // }}
24934
- // >
24935
- // Add a row
24936
- // </Button>
24937
- // <Table
24938
- // components={components}
24939
- // rowClassName={() => 'editable-row'}
24940
- // bordered
24941
- // dataSource={ndcDetailsData}
24942
- // columns={columns}
24943
- // />
24944
- // </div>
24945
- );
24946
- }
24947
- var onCancelPeriod = function () { };
24948
- var onAddNewPeriod = function () {
24949
- if (selectedPeriod && selectedPeriod.current) {
24950
- var newPeriodItem_1 = {
24951
- key: "".concat(selectedPeriod.current.start, "-").concat(selectedPeriod.current.end),
24952
- label: "".concat(selectedPeriod.current.start, "-").concat(selectedPeriod.current.end),
24953
- start: selectedPeriod.current.start,
24954
- end: selectedPeriod.current.end,
24955
- children: ndcDetailsTableContent(),
24956
- };
24957
- var existingIndex = periodItemsRef.current.findIndex(function (item) {
24958
- return inRange(newPeriodItem_1.start, item.start, item.end) ||
24959
- inRange(newPeriodItem_1.end, item.start, item.end);
24960
- });
24961
- if (existingIndex === -1) {
24962
- setPeriodItems(function (items) { return __spreadArray(__spreadArray([], items, true), [newPeriodItem_1], false); });
24963
- periodItemsRef.current = __spreadArray(__spreadArray([], periodItemsRef.current, true), [newPeriodItem_1], false);
24964
- }
24965
- else {
24966
- message.open({
24967
- type: "error",
24968
- content: t("ndc:rangeAlreadyExists"),
24969
- duration: 3,
24970
- style: { textAlign: "right", marginRight: 15, marginTop: 10 },
24971
- });
24924
+ var onDeletePeriod = function () { return __awaiter(void 0, void 0, void 0, function () {
24925
+ var result;
24926
+ return __generator(this, function (_a) {
24927
+ switch (_a.label) {
24928
+ case 0: return [4 /*yield*/, post("national/programme/deleteNdcDetailsPeriod", {
24929
+ id: selectedPeriod.id,
24930
+ })];
24931
+ case 1:
24932
+ result = _a.sent();
24933
+ if (result) {
24934
+ fetchNdcDetailPeriods();
24935
+ }
24936
+ return [2 /*return*/];
24972
24937
  }
24973
- }
24938
+ });
24939
+ }); };
24940
+ var onFinalizePeriod = function () {
24941
+ //
24974
24942
  };
24975
- useEffect(function () {
24976
- if (periodItems && periodItems.length > 3) {
24977
- setSelectedTab(periodItems[periodItems.length - 1].key);
24978
- }
24979
- }, [periodItems]);
24943
+ function ndcDetailsTableContent() {
24944
+ return (React.createElement("div", null,
24945
+ React.createElement(Row, null,
24946
+ React.createElement(Col, { span: 24 },
24947
+ React.createElement(Table, { key: tableKey, components: components, rowClassName: function () { return "editable-row"; }, bordered: true, dataSource: getNdcDetailsForPeriod(), columns: columns, expandable: {
24948
+ expandedRowRender: function (record) { return getSubNdcActionContent(record); },
24949
+ indentSize: 0,
24950
+ defaultExpandedRowKeys: [selectedNdcDetail.current.key],
24951
+ }, footer: function () {
24952
+ return isAddNdcActionVisible() && (React.createElement(Row, { justify: "center" },
24953
+ React.createElement(Button, { onClick: onAddNewNdcDetail, type: "default", style: {
24954
+ marginBottom: 16,
24955
+ width: "100%",
24956
+ } }, t("ndc:addNdcAction"))));
24957
+ } }))),
24958
+ React.createElement(Row, null,
24959
+ React.createElement(Col, { span: 24 },
24960
+ React.createElement(Button, { type: "primary", onClick: onDeletePeriod, htmlType: "submit", loading: loading }, t("ndc:delete")),
24961
+ React.createElement(Button, { type: "primary", onClick: onFinalizePeriod, htmlType: "submit", loading: loading }, t("ndc:finalize"))))));
24962
+ }
24963
+ var onAddNewPeriod = function () { return __awaiter(void 0, void 0, void 0, function () {
24964
+ var periodItem_1, existingIndex, response, addedPeriodItem, updatedPeriodItem_1;
24965
+ return __generator(this, function (_a) {
24966
+ switch (_a.label) {
24967
+ case 0:
24968
+ if (!(selectedDateRangeRef && selectedDateRangeRef.current)) return [3 /*break*/, 3];
24969
+ periodItem_1 = {
24970
+ startYear: selectedDateRangeRef.current.startYear,
24971
+ endYear: selectedDateRangeRef.current.endYear,
24972
+ finalized: false,
24973
+ };
24974
+ existingIndex = periodItems.findIndex(function (item) {
24975
+ return inRange(periodItem_1.startYear, item.startYear, item.endYear) ||
24976
+ inRange(periodItem_1.endYear, item.startYear, item.endYear);
24977
+ });
24978
+ if (!(existingIndex === -1)) return [3 /*break*/, 2];
24979
+ return [4 /*yield*/, post("national/programme/addNdcDetailsPeriod", __assign({}, periodItem_1))];
24980
+ case 1:
24981
+ response = _a.sent();
24982
+ if (response && response.data) {
24983
+ addedPeriodItem = response.data;
24984
+ updatedPeriodItem_1 = __assign(__assign({}, addedPeriodItem), { key: addedPeriodItem.id, label: "".concat(addedPeriodItem.startYear, "-").concat(addedPeriodItem.endYear) });
24985
+ setPeriodItems(function (items) { return __spreadArray(__spreadArray([], items, true), [updatedPeriodItem_1], false); });
24986
+ setSelectedPeriod(updatedPeriodItem_1);
24987
+ }
24988
+ return [3 /*break*/, 3];
24989
+ case 2:
24990
+ message.open({
24991
+ type: "error",
24992
+ content: t("ndc:rangeAlreadyExists"),
24993
+ duration: 3,
24994
+ style: { textAlign: "right", marginRight: 15, marginTop: 10 },
24995
+ });
24996
+ _a.label = 3;
24997
+ case 3: return [2 /*return*/];
24998
+ }
24999
+ });
25000
+ }); };
24980
25001
  var onDateRangeChanged = function (range) {
24981
25002
  var period = {
24982
- start: Number(moment(range[0]).year()),
24983
- end: Number(moment(range[1]).year()),
25003
+ startYear: Number(moment(range[0]).year()),
25004
+ endYear: Number(moment(range[1]).year()),
24984
25005
  };
24985
- selectedPeriod.current = period;
25006
+ selectedDateRangeRef.current = period;
24986
25007
  };
24987
25008
  function addNewPeriodContent() {
24988
25009
  return (React.createElement("div", null,
24989
- React.createElement(Row, null,
24990
- React.createElement(RangePicker, { onChange: onDateRangeChanged, picker: "year" })),
24991
- React.createElement(Row, { className: "mg-top-1" },
24992
- React.createElement("div", { className: "ndc-steps-actions" },
24993
- React.createElement(Button, { type: "primary", onClick: onAddNewPeriod, htmlType: "submit", loading: loading }, t("ndc:submit")),
24994
- React.createElement(Button, { className: "back-btn", onClick: onCancelPeriod, loading: loading }, t("ndc:back"))))));
25010
+ React.createElement(Row, { justify: "start", align: "middle", gutter: [16, 16] },
25011
+ React.createElement(Col, { flex: "340px" },
25012
+ React.createElement(RangePicker, { onChange: onDateRangeChanged, picker: "year" })),
25013
+ React.createElement(Col, { flex: "auto" },
25014
+ React.createElement(Button, { type: "primary", onClick: onAddNewPeriod, htmlType: "submit", loading: loading }, t("ndc:submit"))))));
24995
25015
  }
24996
25016
  function getSubNdcActionContent(record) {
24997
25017
  selectedNdcDetail.current = record;
24998
25018
  return (React.createElement(Table, { components: components, rowClassName: function () { return "editable-row"; }, bordered: true, dataSource: getSubNdcDetails(record.key), columns: columns, showHeader: false, pagination: false }));
24999
25019
  }
25000
25020
  var onTabChange = function (key) {
25001
- setSelectedTab(key);
25021
+ var selectedPeriod = periodItems.find(function (item) { return item.key === key; });
25022
+ setSelectedPeriod(selectedPeriod);
25002
25023
  };
25024
+ var fetchNdcDetailPeriods = function () { return __awaiter(void 0, void 0, void 0, function () {
25025
+ var periods, addNewTab, response;
25026
+ return __generator(this, function (_a) {
25027
+ switch (_a.label) {
25028
+ case 0:
25029
+ periods = [];
25030
+ addNewTab = {
25031
+ id: "add_new",
25032
+ key: "add_new",
25033
+ label: "Add New",
25034
+ startYear: 0,
25035
+ endYear: 0,
25036
+ };
25037
+ return [4 /*yield*/, get("national/programme/queryNdcDetailsPeriod")];
25038
+ case 1:
25039
+ response = _a.sent();
25040
+ if (response && response.data) {
25041
+ periods = response.data.map(function (period) {
25042
+ return __assign(__assign({}, period), { key: period.id, label: "".concat(period.startYear, "-").concat(period.endYear) });
25043
+ });
25044
+ }
25045
+ if (isAddRangeVisible) {
25046
+ periods.unshift(addNewTab);
25047
+ }
25048
+ setPeriodItems(periods);
25049
+ setSelectedPeriod(addNewTab);
25050
+ return [2 /*return*/];
25051
+ }
25052
+ });
25053
+ }); };
25003
25054
  useEffect(function () {
25055
+ fetchNdcDetailPeriods();
25004
25056
  var defaultNdcDetails = [
25005
25057
  {
25006
25058
  key: 1,
@@ -25206,7 +25258,7 @@ var NdcDetailsComponent = function (props) {
25206
25258
  startDate: new Date("2022-03-25"),
25207
25259
  endDate: new Date("2023-03-25"),
25208
25260
  nationalPlanObj: "Other",
25209
- kpi: '',
25261
+ kpi: "",
25210
25262
  ministry: "Ministry of Environment",
25211
25263
  subNdcDetails: [
25212
25264
  {
@@ -25232,34 +25284,7 @@ var NdcDetailsComponent = function (props) {
25232
25284
  ],
25233
25285
  },
25234
25286
  ];
25235
- var initialPeriods = [
25236
- {
25237
- key: "2019-2020",
25238
- label: "2019-2020",
25239
- start: 2019,
25240
- end: 2020,
25241
- children: ndcDetailsTableContent(),
25242
- },
25243
- {
25244
- key: "2021-2023",
25245
- label: "2021-2023",
25246
- start: 2021,
25247
- end: 2021,
25248
- children: ndcDetailsTableContent(),
25249
- },
25250
- ];
25251
- if (isAddRangeVisible()) {
25252
- initialPeriods.unshift({
25253
- key: "add_new",
25254
- label: "Add New",
25255
- start: 0,
25256
- end: 0,
25257
- children: addNewPeriodContent(),
25258
- });
25259
- }
25260
25287
  addedNdcDetailId.current = 20;
25261
- setPeriodItems(initialPeriods);
25262
- periodItemsRef.current = initialPeriods;
25263
25288
  setNdcDetailsData(defaultNdcDetails);
25264
25289
  }, []);
25265
25290
  return (React.createElement("div", { className: "ndc-management content-container" },
@@ -25269,20 +25294,10 @@ var NdcDetailsComponent = function (props) {
25269
25294
  React.createElement("div", { className: "body-title" }, t("ndc:ndcTitle")),
25270
25295
  React.createElement("div", { className: "body-sub-title" }, t("ndc:ndcSubTitle"))))),
25271
25296
  React.createElement("div", null,
25272
- React.createElement(Tabs, { centered: false, defaultActiveKey: "1", items: periodItems, activeKey: selectedTab, onChange: onTabChange })),
25273
- selectedTab !== "add_new" && (React.createElement("div", null,
25274
- React.createElement("div", null,
25275
- React.createElement(Table, { key: tableKey, components: components, rowClassName: function () { return "editable-row"; }, bordered: true, dataSource: getNdcDetailsForPeriod(), columns: columns, expandable: {
25276
- expandedRowRender: function (record) { return getSubNdcActionContent(record); },
25277
- indentSize: 0,
25278
- defaultExpandedRowKeys: [selectedNdcDetail.current.key],
25279
- }, footer: function () {
25280
- return isAddNdcActionVisible() && (React.createElement(Row, { justify: "center" },
25281
- React.createElement(Button, { onClick: onAddNewNdcDetail, type: "default", style: {
25282
- marginBottom: 16,
25283
- width: "100%",
25284
- } }, t("ndc:addNdcAction"))));
25285
- } }))))));
25297
+ React.createElement(Tabs, { centered: false, defaultActiveKey: "1", items: periodItems, activeKey: selectedPeriod, onChange: onTabChange })),
25298
+ React.createElement("div", null, selectedPeriod.id === "add_new"
25299
+ ? addNewPeriodContent()
25300
+ : ndcDetailsTableContent())));
25286
25301
  };
25287
25302
 
25288
25303
  var ImgWithFallback = function (_a) {