@iapps/ng-dhis2-ui 1.1.29 → 1.1.37
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.
|
@@ -2043,7 +2043,7 @@ const FixedPeriodFilter = ({ allowedPeriodTypes, excludedPeriodTypes, currentPer
|
|
|
2043
2043
|
React__default.createElement("div", { className: "leftSection" },
|
|
2044
2044
|
React__default.createElement(SingleSelectField, { label: i18n.t('Period type'), onChange: ({ selected }) => onSelectPeriodType(selected), dense: true, selected: currentPeriodType, disabled: onlyAllowedTypeIsSelected, className: "filterElement", dataTest: `${dataTest}-period-type` }, (allowedPeriodTypes
|
|
2045
2045
|
? getFixedPeriodsOptions().filter((option) => allowedPeriodTypes.some((type) => type === option.id))
|
|
2046
|
-
: filterPeriodTypesById(getFixedPeriodsOptions(), excludedPeriodTypes)).map((option) => (React__default.createElement(SingleSelectOption, { key: option.id, value: option.id, label: option.name, dataTest: `${dataTest}-period-type-option-${option.id}` }))))),
|
|
2046
|
+
: filterPeriodTypesById(getFixedPeriodsOptions(), excludedPeriodTypes)).map((option) => (React__default.createElement(SingleSelectOption, { key: crypto.randomUUID() || option.id, value: option.id, label: option.name, dataTest: `${dataTest}-period-type-option-${option.id}` }))))),
|
|
2047
2047
|
React__default.createElement("div", { className: "rightSection" },
|
|
2048
2048
|
React__default.createElement(InputField$1, { label: i18n.t('Year'), className: "filterElement", type: "number", placeholder: i18n.t('Select year'), value: currentYear, onChange: ({ value }) => onSelectYear(value), dense: true, dataTest: `${dataTest}-year` })),
|
|
2049
2049
|
React__default.createElement("style", { jsx: true }, `
|
|
@@ -2074,7 +2074,7 @@ FixedPeriodFilter.propTypes = {
|
|
|
2074
2074
|
};
|
|
2075
2075
|
|
|
2076
2076
|
const RelativePeriodFilter = ({ currentFilter, onSelectFilter, dataTest, excludedPeriodTypes, }) => (React__default.createElement("div", { className: "leftSection" },
|
|
2077
|
-
React__default.createElement(SingleSelectField, { label: i18n.t('Period type'), onChange: ({ selected }) => onSelectFilter(selected), dense: true, selected: currentFilter, className: "filterElement", dataTest: dataTest }, filterPeriodTypesById(getRelativePeriodsOptions(), excludedPeriodTypes).map((option) => (React__default.createElement(SingleSelectOption, { key: option.id, value: option.id, label: option.name, dataTest: `${dataTest}-option-${option.id}` })))),
|
|
2077
|
+
React__default.createElement(SingleSelectField, { label: i18n.t('Period type'), onChange: ({ selected }) => onSelectFilter(selected), dense: true, selected: currentFilter, className: "filterElement", dataTest: dataTest }, filterPeriodTypesById(getRelativePeriodsOptions(), excludedPeriodTypes).map((option) => (React__default.createElement(SingleSelectOption, { key: crypto.randomUUID() || option.id, value: option.id, label: option.name, dataTest: `${dataTest}-option-${option.id}` })))),
|
|
2078
2078
|
React__default.createElement("style", { jsx: true }, `
|
|
2079
2079
|
.leftSection {
|
|
2080
2080
|
flex-grow: 1;
|
|
@@ -3217,13 +3217,20 @@ const getTrackedEntityData = (response, programId, pager, filters) => {
|
|
|
3217
3217
|
let teis = response.data
|
|
3218
3218
|
.trackedEntityInstances;
|
|
3219
3219
|
let programMetaData = response.metadata.programTrackedEntityAttributes;
|
|
3220
|
+
//let progrmaMetaDataAttributesMap = programMetaData.reduce
|
|
3221
|
+
const mappedProgramMetadataAttributes = programMetaData.map((attr) => ({
|
|
3222
|
+
displayInList: attr.displayInList,
|
|
3223
|
+
searchable: attr.searchable,
|
|
3224
|
+
id: attr.trackedEntityAttribute.id,
|
|
3225
|
+
}));
|
|
3226
|
+
console.log('the mapped attributes', mappedProgramMetadataAttributes);
|
|
3220
3227
|
const programAttributesMap = programMetaData.reduce((acc, attribute) => {
|
|
3221
3228
|
if (attribute.displayInList) {
|
|
3222
3229
|
acc[attribute.id] = attribute.displayName;
|
|
3223
3230
|
}
|
|
3224
3231
|
return acc;
|
|
3225
3232
|
}, {});
|
|
3226
|
-
console.log('
|
|
3233
|
+
console.log('metadat attributes', programMetaData);
|
|
3227
3234
|
if (filters) {
|
|
3228
3235
|
teis = getFilteredTrackedEntityInstances(teis, filters);
|
|
3229
3236
|
}
|
|
@@ -3258,6 +3265,18 @@ const getTrackedEntityData = (response, programId, pager, filters) => {
|
|
|
3258
3265
|
// Check if the column label is part of any value in programAttributesMap
|
|
3259
3266
|
return Object.values(programAttributesMap).some((value) => value.includes(column.label));
|
|
3260
3267
|
});
|
|
3268
|
+
const searchableAttributes = mappedProgramMetadataAttributes
|
|
3269
|
+
.filter((attr) => attr.searchable && attr.displayInList)
|
|
3270
|
+
.map((attr) => ({
|
|
3271
|
+
// label: attr.trackedEntityAttribute.displayName,
|
|
3272
|
+
key: attr.id,
|
|
3273
|
+
}));
|
|
3274
|
+
// Extract keys from searchableAttributes for quick lookup
|
|
3275
|
+
const searchableKeys = new Set(searchableAttributes.map((attr) => attr.key));
|
|
3276
|
+
// Filter entityColumns to keep only those whose key exists in searchableAttributes
|
|
3277
|
+
const filteredEntityColumns = entityColumns.filter((column) => searchableKeys.has(column.key));
|
|
3278
|
+
console.log('show the filtered values', filteredEntityColumns);
|
|
3279
|
+
console.log('the answer is ', searchableAttributes);
|
|
3261
3280
|
const attributesData = teis.map((tei, idx) => {
|
|
3262
3281
|
let row = {
|
|
3263
3282
|
trackedEntityInstance: tei.trackedEntityInstance,
|
|
@@ -3271,7 +3290,8 @@ const getTrackedEntityData = (response, programId, pager, filters) => {
|
|
|
3271
3290
|
attributesToUse.forEach((attr) => (row[attr.attribute] = attr.value));
|
|
3272
3291
|
return row;
|
|
3273
3292
|
});
|
|
3274
|
-
|
|
3293
|
+
console.log('attributes to use', entityColumns);
|
|
3294
|
+
return { columns: entityColumns, data: attributesData, filteredEntityColumns: filteredEntityColumns };
|
|
3275
3295
|
};
|
|
3276
3296
|
const getEventData = (response, pager) => {
|
|
3277
3297
|
const events = response.data.events;
|
|
@@ -3335,6 +3355,8 @@ class LineListTableComponent extends ReactWrapperModule {
|
|
|
3335
3355
|
const [endDateState, setEndDateState] = useState(this.endDate);
|
|
3336
3356
|
const [loading, setLoading] = useState(false);
|
|
3337
3357
|
const [isButtonLoading, setIsButtonLoading] = useState(this.isButtonLoading);
|
|
3358
|
+
const [filteredColumns, setFilteredColumns] = useState();
|
|
3359
|
+
const [inputValues, setInputValues] = useState({});
|
|
3338
3360
|
// Store updaters in refs for Angular to access
|
|
3339
3361
|
const updateRefs = useRef({
|
|
3340
3362
|
setProgramIdState,
|
|
@@ -3364,11 +3386,14 @@ class LineListTableComponent extends ReactWrapperModule {
|
|
|
3364
3386
|
useEffect(() => {
|
|
3365
3387
|
setLoading(true);
|
|
3366
3388
|
this.lineListService
|
|
3367
|
-
.getLineListData(this.programId, this.orgUnit, this.programStageId, pager.page, pager.pageSize,
|
|
3389
|
+
.getLineListData(this.programId, this.orgUnit, this.programStageId, pager.page, pager.pageSize, attributeFiltersState,
|
|
3390
|
+
// this.attributeFilters,
|
|
3391
|
+
this.startDate, this.endDate, this.ouMode)
|
|
3368
3392
|
.subscribe((response) => {
|
|
3369
3393
|
let entityColumns = [];
|
|
3370
3394
|
let responsePager;
|
|
3371
3395
|
let entityData = [];
|
|
3396
|
+
let filteredDataColumns = [];
|
|
3372
3397
|
if (this.programStageId) {
|
|
3373
3398
|
responsePager = response.data.pager;
|
|
3374
3399
|
const { columns, data } = getProgramStageData(response, this.programStageId, pager);
|
|
@@ -3378,9 +3403,14 @@ class LineListTableComponent extends ReactWrapperModule {
|
|
|
3378
3403
|
else if ('trackedEntityInstances' in response.data) {
|
|
3379
3404
|
responsePager = response.data
|
|
3380
3405
|
.pager;
|
|
3381
|
-
const { columns, data } = getTrackedEntityData(response, this.programId, pager, this.filters);
|
|
3406
|
+
const { columns, data, filteredEntityColumns } = getTrackedEntityData(response, this.programId, pager, this.filters);
|
|
3382
3407
|
entityColumns = columns;
|
|
3383
3408
|
entityData = data;
|
|
3409
|
+
// setFilteredColumns(filteredEntityColumns);
|
|
3410
|
+
// Ensure filter inputs do not disappear when no data is returned
|
|
3411
|
+
// If filteredEntityColumns is empty, keep the previous columns instead of clearing them
|
|
3412
|
+
setFilteredColumns((prev) => filteredEntityColumns.length > 0 ? filteredEntityColumns : prev);
|
|
3413
|
+
filteredDataColumns = filteredEntityColumns;
|
|
3384
3414
|
}
|
|
3385
3415
|
else {
|
|
3386
3416
|
responsePager = response.data.pager;
|
|
@@ -3390,12 +3420,12 @@ class LineListTableComponent extends ReactWrapperModule {
|
|
|
3390
3420
|
}
|
|
3391
3421
|
const finalColumns = addActionsColumn([{ label: '#', key: 'index' }, ...entityColumns], this.actionOptions);
|
|
3392
3422
|
setLoading(false);
|
|
3393
|
-
console.log('hey');
|
|
3423
|
+
// console.log('hey');
|
|
3394
3424
|
setColumns(...[finalColumns]);
|
|
3395
3425
|
setData(...[entityData]);
|
|
3396
3426
|
setPager(...[responsePager]);
|
|
3397
|
-
console.log('columns', columns);
|
|
3398
|
-
console.log('data', data);
|
|
3427
|
+
// console.log('columns', columns);
|
|
3428
|
+
// console.log('data', data);
|
|
3399
3429
|
});
|
|
3400
3430
|
}, [
|
|
3401
3431
|
programIdState,
|
|
@@ -3437,16 +3467,74 @@ class LineListTableComponent extends ReactWrapperModule {
|
|
|
3437
3467
|
: null;
|
|
3438
3468
|
})
|
|
3439
3469
|
.filter((item) => item !== null); // Remove null entries (no matching enrollment)
|
|
3440
|
-
console.log('TEI and Enrollment IDs emitted:', teiEnrollmentList);
|
|
3470
|
+
// console.log('TEI and Enrollment IDs emitted:', teiEnrollmentList);
|
|
3441
3471
|
this.approvalSelected.emit(teiEnrollmentList);
|
|
3442
3472
|
}
|
|
3443
3473
|
else {
|
|
3444
|
-
console.log('No tracked entity instances found in the response');
|
|
3474
|
+
// console.log('No tracked entity instances found in the response');
|
|
3445
3475
|
this.approvalSelected.emit([]); // Emit empty array if no TEIs
|
|
3446
3476
|
}
|
|
3447
3477
|
});
|
|
3448
3478
|
};
|
|
3479
|
+
// const handleInputChange = (key: string, value: string) => {
|
|
3480
|
+
// setInputValues((prevValues) => ({
|
|
3481
|
+
// ...prevValues,
|
|
3482
|
+
// [key]: value ?? '', // Ensure no undefined values
|
|
3483
|
+
// }));
|
|
3484
|
+
// };
|
|
3485
|
+
// if (!filteredColumns || filteredColumns.length === 0) {
|
|
3486
|
+
// return <div>No fields available</div>;
|
|
3487
|
+
// }
|
|
3488
|
+
const handleInputChange = (key, value) => {
|
|
3489
|
+
setInputValues((prevValues) => ({
|
|
3490
|
+
...prevValues,
|
|
3491
|
+
[key]: value ?? '',
|
|
3492
|
+
}));
|
|
3493
|
+
setAttributeFiltersState((prevFilters = []) => {
|
|
3494
|
+
// Remove old filter for this key
|
|
3495
|
+
const filteredFilters = prevFilters.filter((f) => f.attribute !== key);
|
|
3496
|
+
// Only add new filter if value is not empty
|
|
3497
|
+
const updatedFilters = value.trim()
|
|
3498
|
+
? [...filteredFilters, { attribute: key, operator: 'like', value }]
|
|
3499
|
+
: filteredFilters;
|
|
3500
|
+
// console.log(`Updated Filters:`, updatedFilters); // Debugging
|
|
3501
|
+
return updatedFilters;
|
|
3502
|
+
});
|
|
3503
|
+
// setAttributeFiltersState((prevFilters = []) => {
|
|
3504
|
+
// // Check if attribute already exists
|
|
3505
|
+
// const existingFilterIndex = prevFilters.findIndex(
|
|
3506
|
+
// (f) => f.attribute === key
|
|
3507
|
+
// );
|
|
3508
|
+
// // Create a new filter object
|
|
3509
|
+
// const newFilter = { attribute: key, operator: 'like', value };
|
|
3510
|
+
// if (existingFilterIndex !== -1) {
|
|
3511
|
+
// // If attribute exists, update its value
|
|
3512
|
+
// const updatedFilters = [...prevFilters];
|
|
3513
|
+
// updatedFilters[existingFilterIndex] = newFilter;
|
|
3514
|
+
// console.log(`Updated Filters:`, updatedFilters); // Log updated filter list
|
|
3515
|
+
// return updatedFilters;
|
|
3516
|
+
// } else {
|
|
3517
|
+
// // If attribute doesn't exist, add a new object
|
|
3518
|
+
// return [...prevFilters, newFilter];
|
|
3519
|
+
// }
|
|
3520
|
+
// });
|
|
3521
|
+
};
|
|
3522
|
+
// console.log(
|
|
3523
|
+
// 'these are the filtered columns which have the attributes neede',
|
|
3524
|
+
// filteredColumns
|
|
3525
|
+
// );
|
|
3449
3526
|
return (React__default.createElement("div", null,
|
|
3527
|
+
React__default.createElement("div", { style: { display: 'flex', gap: '10px', flexWrap: 'wrap' } }, (filteredColumns ?? []).map(({ label, key }) => (React__default.createElement(InputField$1, { key: key, label: label, value: inputValues[key] || '', onChange: (e) => {
|
|
3528
|
+
// console.log(`Event for key "${key}":`, e);
|
|
3529
|
+
// Check if it's a standard event with target.value
|
|
3530
|
+
if ('target' in e && e.target) {
|
|
3531
|
+
handleInputChange(key, e.target.value);
|
|
3532
|
+
}
|
|
3533
|
+
// Check if it's a DHIS2 UI event with direct value
|
|
3534
|
+
else if ('value' in e) {
|
|
3535
|
+
handleInputChange(key, e.value ?? '');
|
|
3536
|
+
}
|
|
3537
|
+
} })))),
|
|
3450
3538
|
this.showApprovalButton && (React__default.createElement("div", { style: {
|
|
3451
3539
|
width: '100%',
|
|
3452
3540
|
display: 'flex',
|
|
@@ -3468,7 +3556,14 @@ class LineListTableComponent extends ReactWrapperModule {
|
|
|
3468
3556
|
} }, "Loading"))) : (React__default.createElement(DataTable, null,
|
|
3469
3557
|
React__default.createElement(TableHead, null,
|
|
3470
3558
|
React__default.createElement(DataTableRow, null, columns.map((col) => (React__default.createElement(DataTableColumnHeader, { key: col.key }, col.label))))),
|
|
3471
|
-
React__default.createElement(TableBody, null, data.map((row) => (React__default.createElement(DataTableRow, { key: row.index }, columns.map((col) => (React__default.createElement(DataTableCell, { key: col.key }, col.key === 'actions' ? (React__default.createElement(DropdownMenu$1, { dropdownOptions: getDropdownOptions(row), onClick: (option) => option.onClick?.() })) : (row[col.key]
|
|
3559
|
+
React__default.createElement(TableBody, null, data.length > 0 ? (data.map((row) => (React__default.createElement(DataTableRow, { key: row.index }, columns.map((col) => (React__default.createElement(DataTableCell, { key: col.key }, col.key === 'actions' ? (React__default.createElement(DropdownMenu$1, { dropdownOptions: getDropdownOptions(row), onClick: (option) => option.onClick?.() })) : (row[col.key] || '--' // Display '--' if value is undefined or null
|
|
3560
|
+
)))))))) : (React__default.createElement(DataTableRow, null,
|
|
3561
|
+
React__default.createElement(DataTableCell, { colSpan: columns.length, style: {
|
|
3562
|
+
textAlign: 'center',
|
|
3563
|
+
fontWeight: 'bold',
|
|
3564
|
+
color: 'grey',
|
|
3565
|
+
padding: '20px',
|
|
3566
|
+
} }, "No data found")))),
|
|
3472
3567
|
React__default.createElement(TableFoot, null,
|
|
3473
3568
|
React__default.createElement(DataTableRow, null,
|
|
3474
3569
|
React__default.createElement(DataTableCell, { colSpan: columns.length.toString() },
|
|
@@ -4817,7 +4912,7 @@ class BaseFormFieldComponent extends ReactWrapperModule {
|
|
|
4817
4912
|
});
|
|
4818
4913
|
setValue(event.selected);
|
|
4819
4914
|
setTouched(true);
|
|
4820
|
-
} }, (this.field().options || []).map((option) => (React__default.createElement(SingleSelectOption, { key: option.key, label: option.label, value: option.value })))));
|
|
4915
|
+
} }, (this.field().options || []).map((option) => (React__default.createElement(SingleSelectOption, { key: crypto.randomUUID() || option.key, label: option.label, value: option.value })))));
|
|
4821
4916
|
case 'multi-dropdown':
|
|
4822
4917
|
return (React__default.createElement(MultiSelectField, { clearText: "Clear", clearable: true, empty: "No data found", filterable: (this.field().options || []).length > 5, filterPlaceholder: "Type to filter options", error: hasError, validationText: validationError, inputWidth: this.fieldConfig()?.inputWidth, label: this.label(), name: this.field().id, required: this.field().required, loadingText: "Loading options", noMatchText: "No options found", onChange: (event) => {
|
|
4823
4918
|
const selectedValue = (event.selected || []).join(',');
|
|
@@ -5541,6 +5636,8 @@ class SelectionFiltersComponent extends ReactWrapperModule {
|
|
|
5541
5636
|
const [touched, setTouched] = useState(false);
|
|
5542
5637
|
const [showOrgUnit, setShowOrgUnit] = useState(false);
|
|
5543
5638
|
const [value, setValue] = useState(null);
|
|
5639
|
+
const [showMoreFilters, setShowMoreFilters] = useState(false);
|
|
5640
|
+
const toggleMoreFilters = () => setShowMoreFilters((prev) => !prev);
|
|
5544
5641
|
useEffect(() => {
|
|
5545
5642
|
setFilters({
|
|
5546
5643
|
programAttributesFilters: this.programAttributesFilters,
|
|
@@ -5582,7 +5679,9 @@ class SelectionFiltersComponent extends ReactWrapperModule {
|
|
|
5582
5679
|
const handleSearch = () => {
|
|
5583
5680
|
this.actionSelected.emit({
|
|
5584
5681
|
...filters,
|
|
5585
|
-
organisationUnit: selectedOrganisationUnit ||
|
|
5682
|
+
organisationUnit: selectedOrganisationUnit ||
|
|
5683
|
+
this.organisationUnit ||
|
|
5684
|
+
filters.organisationUnit,
|
|
5586
5685
|
startDate: filters.startDate,
|
|
5587
5686
|
endDate: filters.endDate,
|
|
5588
5687
|
program: this.program || filters.program,
|
|
@@ -5657,17 +5756,14 @@ class SelectionFiltersComponent extends ReactWrapperModule {
|
|
|
5657
5756
|
} },
|
|
5658
5757
|
React__default.createElement("div", { style: {
|
|
5659
5758
|
display: 'grid',
|
|
5660
|
-
gridTemplateColumns: '
|
|
5759
|
+
gridTemplateColumns: '1fr 1fr 1fr auto', // Ensure proper button sizing
|
|
5661
5760
|
gap: '16px',
|
|
5761
|
+
alignItems: 'center', // Align inputs and button on the same row
|
|
5662
5762
|
marginBottom: '16px',
|
|
5663
5763
|
} },
|
|
5664
|
-
React__default.createElement(
|
|
5665
|
-
React__default.createElement(InputField$1, { value: displayValue, label: "Organization Unit", readOnly: false, onFocus: () => {
|
|
5666
|
-
|
|
5667
|
-
}, onBlur: () => {
|
|
5668
|
-
this.ngZone.run(() => {
|
|
5669
|
-
console.log('THIS IS IT::: ');
|
|
5670
|
-
});
|
|
5764
|
+
React__default.createElement("div", { style: { width: '100%' } },
|
|
5765
|
+
React__default.createElement(InputField$1, { value: displayValue, label: "Organization Unit", readOnly: false, onFocus: () => setShowOrgUnit(true), onBlur: () => {
|
|
5766
|
+
this.ngZone.run(() => console.log('THIS IS IT::: '));
|
|
5671
5767
|
setTouched(true);
|
|
5672
5768
|
} }),
|
|
5673
5769
|
showOrgUnit && (React__default.createElement(this.FieldOrgUnitSelector, { onCancelOrgUnit: () => {
|
|
@@ -5682,30 +5778,36 @@ class SelectionFiltersComponent extends ReactWrapperModule {
|
|
|
5682
5778
|
setValue(selectedOrgUnit.id);
|
|
5683
5779
|
setShowOrgUnit(false);
|
|
5684
5780
|
setTouched(true);
|
|
5685
|
-
// this.ngZone.run(() => {
|
|
5686
|
-
// setDisplayValue(selectedOrgUnit.name);
|
|
5687
|
-
// setSelected(selectedOrgUnit.id)
|
|
5688
|
-
// setSelectedOrganisationUnit(selectedOrgUnit.id)
|
|
5689
|
-
// setValue(selectedOrgUnit.id);
|
|
5690
|
-
// setShowOrgUnit(false);
|
|
5691
|
-
// setTouched(true);
|
|
5692
|
-
// });
|
|
5693
5781
|
}
|
|
5694
5782
|
} }))),
|
|
5695
|
-
React__default.createElement(InputField$1, { className: "input-field", label: "Start Date", type: "DATE", value: filters.startDate, onChange: (event) => setFilters({ ...filters, startDate: event.value }) }),
|
|
5696
|
-
React__default.createElement(InputField$1, { className: "input-field", label: "End Date", type: "DATE", value: filters.endDate, onChange: (event) => setFilters({ ...filters, endDate: event.value }) })
|
|
5697
|
-
|
|
5698
|
-
|
|
5699
|
-
|
|
5700
|
-
|
|
5701
|
-
|
|
5702
|
-
|
|
5703
|
-
|
|
5704
|
-
|
|
5705
|
-
|
|
5706
|
-
|
|
5707
|
-
|
|
5708
|
-
|
|
5783
|
+
React__default.createElement(InputField$1, { className: "input-field", label: "Start Date", type: "DATE", value: filters.startDate, onChange: (event) => setFilters({ ...filters, startDate: event.value }), style: { width: '100%', height: '100%' } }),
|
|
5784
|
+
React__default.createElement(InputField$1, { className: "input-field", label: "End Date", type: "DATE", value: filters.endDate, onChange: (event) => setFilters({ ...filters, endDate: event.value }), style: { width: '100%', height: '100%' } }),
|
|
5785
|
+
React__default.createElement("div", { style: {
|
|
5786
|
+
display: 'flex',
|
|
5787
|
+
flexDirection: 'column',
|
|
5788
|
+
alignItems: 'center',
|
|
5789
|
+
justifyContent: 'center',
|
|
5790
|
+
height: '100%',
|
|
5791
|
+
} },
|
|
5792
|
+
React__default.createElement("label", { style: {
|
|
5793
|
+
color: 'transparent', // Hides label text but keeps spacing
|
|
5794
|
+
fontSize: '14px',
|
|
5795
|
+
marginBottom: '4px',
|
|
5796
|
+
} }, "Toggle"),
|
|
5797
|
+
React__default.createElement(Button$1, { style: { height: '40px' }, onClick: () => setShowMoreFilters(!showMoreFilters) }, showMoreFilters ? 'Hide Filters' : 'More Filters'))),
|
|
5798
|
+
showMoreFilters && (React__default.createElement(React__default.Fragment, null,
|
|
5799
|
+
React__default.createElement("div", { style: {
|
|
5800
|
+
display: 'grid',
|
|
5801
|
+
gridTemplateColumns: 'repeat(4, 1fr)',
|
|
5802
|
+
gap: '16px',
|
|
5803
|
+
} }, filters.programAttributesFilters.map((filter, index) => (React__default.createElement("div", { key: index, style: { gridColumn: getAttributeColumnSpan(index) } }, filter.hasOptions && filter.options.length > 0 ? (React__default.createElement(SingleSelectField, { className: "single-select", label: filter.name || 'Select Option', type: filter.valueType, selected: filter.value, onChange: (event) => handleAttributeChange(index, event.selected) }, filter.options.map((option, i) => (React__default.createElement(SingleSelectOption, { key: crypto.randomUUID() || i, label: option.name, value: option.code }))))) : (React__default.createElement(InputField$1, { className: "input-field", label: filter.name || 'Program name', type: filter.valueType, value: filter.value, onChange: (event) => handleAttributeChange(index, event.value) })))))),
|
|
5804
|
+
React__default.createElement("div", { style: {
|
|
5805
|
+
display: 'grid',
|
|
5806
|
+
gridTemplateColumns: 'repeat(4, 1fr)',
|
|
5807
|
+
gap: '16px',
|
|
5808
|
+
} }, filters.programStageDataElementFilters.map((filter, index) => (React__default.createElement("div", { key: index, style: { gridColumn: getDataElementColumnSpan(index) } }, filter.hasOptions && filter.options.length > 0 ? (React__default.createElement(SingleSelectField, { className: "single-select", label: filter.name || 'Aggregation type', type: filter.valueType, selected: filter.value, onChange: (event) => handleDataElementChange(index, event.selected) }, filter.options.map((option, i) => (React__default.createElement(SingleSelectOption, { key: crypto.randomUUID() || i, label: option.name, value: option.code }))))) : (React__default.createElement(InputField$1, { className: "input-field", type: filter.valueType, label: filter.name || 'Program name', value: filter.value, onChange: (event) => handleDataElementChange(index, event.value) })))))),
|
|
5809
|
+
React__default.createElement("div", { style: { textAlign: 'right', marginTop: '16px' } },
|
|
5810
|
+
React__default.createElement(Button$1, { onClick: handleSearch }, "Search"))))));
|
|
5709
5811
|
};
|
|
5710
5812
|
}
|
|
5711
5813
|
getAppConfig() {
|