@iapps/ng-dhis2-ui 1.2.6 → 1.2.7

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.
@@ -3314,15 +3314,14 @@ const FilterToolbar = ({ orgUnitLabel, selectedOrgUnit, setSelectedOrgUnit, setO
3314
3314
  setOrgUnitState(defaultOrgUnit);
3315
3315
  } }),
3316
3316
  React__default.createElement(CalendarInput, { label: "Start date:", calendar: "gregory", locale: "en-GB", timeZone: "Africa/Dar_es_Salaam", className: "custom-input", clearable: !!startDateState, date: startDateState, onDateSelect: (selectedDate) => {
3317
- if (!(selectedDate.calendarDateString === null)) {
3318
- setStartDateState(selectedDate.calendarDateString);
3319
- }
3320
- console.log(selectedDate.calendarDateString);
3317
+ // if (!(selectedDate.calendarDateString === null)) {
3318
+ setStartDateState(selectedDate.calendarDateString);
3319
+ //}
3321
3320
  } }),
3322
3321
  React__default.createElement(CalendarInput, { label: "End date:", calendar: "gregory", locale: "en-GB", timeZone: "Africa/Dar_es_Salaam", className: "custom-input", clearable: !!endDateState, date: endDateState, onDateSelect: (selectedDate) => {
3323
- if (!(selectedDate.calendarDateString === null)) {
3324
- setEndDateState(selectedDate.calendarDateString);
3325
- }
3322
+ // if (!(selectedDate.calendarDateString === null)) {
3323
+ setEndDateState(selectedDate.calendarDateString);
3324
+ //}
3326
3325
  } }),
3327
3326
  (visibleFilters ?? []).map(({ label, key, valueType, options }) => {
3328
3327
  if (valueType === 'DATE') {
@@ -3535,6 +3534,7 @@ const DataTableActions = (props) => {
3535
3534
  // license that can be found in the LICENSE file.
3536
3535
 
3537
3536
  const TableCell = ({ cell, getTextColorFromBackGround, }) => {
3537
+ console.log('cel value', cell);
3538
3538
  if (cell?.style && cell?.style !== 'default-value') {
3539
3539
  return (React__default.createElement(DataTableCell, null,
3540
3540
  React__default.createElement("div", { style: { display: 'flex', justifyContent: 'center' } },
@@ -3787,15 +3787,15 @@ const getTrackedEntityTableData = (response, programId, pager, metaData) => {
3787
3787
  .orgUnitsMap;
3788
3788
  const attributeColumns = metaData.displayInListTrackedEntityAttributes
3789
3789
  .sort((a, b) => a.sortOrder - b.sortOrder)
3790
- .map((attr) => ({
3791
- label: attr.name,
3792
- key: attr.id,
3790
+ .map((trackedEntityAttribute) => ({
3791
+ label: trackedEntityAttribute.formName ?? trackedEntityAttribute.name,
3792
+ key: trackedEntityAttribute.id,
3793
3793
  }));
3794
3794
  const dataElementColumns = metaData.displayInListDataElements
3795
3795
  .sort((a, b) => a.sortOrder - b.sortOrder)
3796
- .map((element) => ({
3797
- label: element.name,
3798
- key: element.id,
3796
+ .map((dataElement) => ({
3797
+ label: dataElement.formName || dataElement.name,
3798
+ key: dataElement.id,
3799
3799
  }));
3800
3800
  const dataElementOptions = metaData.displayInListDataElements.map((element) => ({
3801
3801
  id: element.id,
@@ -3843,7 +3843,17 @@ const getTrackedEntityTableData = (response, programId, pager, metaData) => {
3843
3843
  return attr;
3844
3844
  });
3845
3845
  attributesData.forEach((attr) => {
3846
- row[attr.attribute] = { value: attr.value };
3846
+ const attributeMeta = metaData.programTrackedEntityAttributes?.find((metadata) => metadata.trackedEntityAttribute.id === attr.attribute);
3847
+ if (attributeMeta?.trackedEntityAttribute.optionSetValue) {
3848
+ const optionSet = attributeMeta?.trackedEntityAttribute?.optionSet;
3849
+ const option = optionSet?.options?.find((option) => option.code === attr.value);
3850
+ row[attr.attribute] = option
3851
+ ? { value: option?.name }
3852
+ : { value: attr.value };
3853
+ }
3854
+ else {
3855
+ row[attr.attribute] = { value: attr.value };
3856
+ }
3847
3857
  });
3848
3858
  dataElementsData.forEach((element) => {
3849
3859
  // Find the matching data element in dataElementOptions by ID
@@ -3887,6 +3897,58 @@ const addActionsColumn = (columns, actionOptions) => {
3887
3897
  ];
3888
3898
  };
3889
3899
 
3900
+ const getEvents = (response, programStageId, pager, metaData) => {
3901
+ const events = response.data.events;
3902
+ const eventsiiii = response.data;
3903
+ const allDataElements = new Set();
3904
+ events.forEach((event) => {
3905
+ event.dataValues.forEach((dv) => allDataElements.add(dv.dataElement));
3906
+ });
3907
+ let stageFromMetaData;
3908
+ if (programStageId) {
3909
+ stageFromMetaData = metaData.programStages.find((stage) => stage.id === programStageId);
3910
+ }
3911
+ else if (metaData.programType === 'WITHOUT_REGISTRATION') {
3912
+ stageFromMetaData = metaData.programStages[0];
3913
+ }
3914
+ if (!stageFromMetaData) {
3915
+ throw new Error(`Program stage with ID ${programStageId} not found`);
3916
+ }
3917
+ const entityColumns = Array.from(allDataElements).map((dataElementId) => {
3918
+ const dataElementMeta = stageFromMetaData.programStageDataElements.find((psde) => psde.dataElement.id === dataElementId);
3919
+ return {
3920
+ label: dataElementMeta?.dataElement.name || dataElementId,
3921
+ key: dataElementId,
3922
+ };
3923
+ });
3924
+ const dataElementsData = events.map((event, idx) => {
3925
+ const row = {
3926
+ event: { value: event.event },
3927
+ index: {
3928
+ value: (pager.page - 1) * pager.pageSize + idx + 1,
3929
+ },
3930
+ };
3931
+ allDataElements.forEach((dataElementId) => {
3932
+ row[dataElementId] = { value: '' };
3933
+ });
3934
+ event.dataValues.forEach((dv) => {
3935
+ const dataElementMeta = stageFromMetaData.programStageDataElements.find((psde) => psde.dataElement.id === dv.dataElement);
3936
+ if (dataElementMeta?.dataElement.optionSet) {
3937
+ const optionSet = dataElementMeta.dataElement.optionSet;
3938
+ const matchingOption = optionSet.options.find((option) => option.code === dv.value);
3939
+ row[dv.dataElement] = matchingOption
3940
+ ? { value: matchingOption.name }
3941
+ : { value: dv.value };
3942
+ }
3943
+ else {
3944
+ row[dv.dataElement] = { value: dv.value };
3945
+ }
3946
+ });
3947
+ return row;
3948
+ });
3949
+ return { columns: entityColumns, data: dataElementsData };
3950
+ };
3951
+
3890
3952
  // src/app/line-list-table.component.ts
3891
3953
  class LineListTableComponent extends ReactWrapperModule {
3892
3954
  constructor() {
@@ -3974,10 +4036,36 @@ class LineListTableComponent extends ReactWrapperModule {
3974
4036
  if (!metaData) {
3975
4037
  return undefined;
3976
4038
  }
3977
- setLoading(true);
3978
4039
  const isTracker = metaData.programType === 'WITH_REGISTRATION';
4040
+ const isEvent = metaData.programType === 'WITHOUT_REGISTRATION';
3979
4041
  const endDate = endDateState ?? new Date().toISOString().split('T')[0];
3980
- if (isTracker) {
4042
+ if (this.programStageId || isEvent) {
4043
+ setLoading(true);
4044
+ d2.eventModule.event
4045
+ .setProgram(this.programId)
4046
+ .setProgramStage(this.programStageId)
4047
+ .setPagination(new Pager({
4048
+ pageSize: pager.pageSize,
4049
+ page: pager.page,
4050
+ }))
4051
+ .get()
4052
+ .then((response) => {
4053
+ const eventsResponse = {
4054
+ events: response.data,
4055
+ pager: pager,
4056
+ // orgUnitsMap: fetchedOrgUnits,
4057
+ };
4058
+ const { columns, data } = getEvents({ data: eventsResponse }, this.programStageId, pager, metaData);
4059
+ const finalColumns = addActionsColumn([{ label: '#', key: 'index' }, ...columns], this.actionOptions);
4060
+ const pagerResponse = response.pagination;
4061
+ setLoading(false);
4062
+ setColumns(finalColumns);
4063
+ setData(data);
4064
+ setPager(new Pager(pagerResponse || {}));
4065
+ });
4066
+ }
4067
+ else if (isTracker) {
4068
+ setLoading(true);
3981
4069
  d2.trackerModule.trackedEntity
3982
4070
  .setEndDate(endDate)
3983
4071
  .setStartDate(startDateState)
@@ -4028,9 +4116,6 @@ class LineListTableComponent extends ReactWrapperModule {
4028
4116
  });
4029
4117
  });
4030
4118
  }
4031
- else {
4032
- //TODO: TO IMPLEMEMNT EVENT QUERY FOR FILTERING EVENTS WHEN PROGRAM STAGE IS PASSED OR DEALING WITH EVENT PROGRAM USING TRACKER SDK QUERY
4033
- }
4034
4119
  }, [
4035
4120
  metaData,
4036
4121
  programIdState,
@@ -5009,7 +5094,9 @@ class FormFieldGroup {
5009
5094
  ...field,
5010
5095
  id: field.id,
5011
5096
  code: fieldMetaData['code'],
5012
- label: (fieldMetaData['formName'] ?? field['label']),
5097
+ label: (fieldMetaData['formName'] ??
5098
+ fieldMetaData['name'] ??
5099
+ field['label']),
5013
5100
  key: camelCase(fieldMetaData['code']) || field.id,
5014
5101
  required: (fieldMetaData['mandatory'] ??
5015
5102
  fieldMetaData['required']),
@@ -5140,7 +5227,6 @@ class FormMetadataSection {
5140
5227
  return programTrackedEntityAttributes.map((programTrackedEntityAttribute) => {
5141
5228
  return {
5142
5229
  ...programTrackedEntityAttribute['trackedEntityAttribute'],
5143
- formName: (programTrackedEntityAttribute['trackedEntityAttribute'] || {})['name'],
5144
5230
  sortOrder: programTrackedEntityAttribute['sortOrder'],
5145
5231
  mandatory: programTrackedEntityAttribute['mandatory'],
5146
5232
  allowFutureDate: programTrackedEntityAttribute['allowFutureDate'],
@@ -7049,7 +7135,7 @@ class TrackerFormComponent {
7049
7135
  programs: [program],
7050
7136
  programStage: this.programStage(),
7051
7137
  disableEnrollmentDate: true,
7052
- excludeInheritedAttributes: true,
7138
+ excludeInheritedAttributes: false,
7053
7139
  }).toJson();
7054
7140
  }
7055
7141
  }