@iapps/ng-dhis2-ui 1.0.9 → 1.1.0
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.
- package/fesm2022/iapps-ng-dhis2-ui.mjs +175 -45
- package/fesm2022/iapps-ng-dhis2-ui.mjs.map +1 -1
- package/lib/modules/line-list/containers/line-list.component.d.ts +12 -1
- package/lib/modules/line-list/models/attribute-filter.model.d.ts +2 -1
- package/lib/modules/line-list/models/filter-config.model.d.ts +6 -0
- package/lib/modules/line-list/models/line-list.models.d.ts +73 -14
- package/lib/modules/line-list/utils/filter-builder.d.ts +3 -0
- package/lib/modules/line-list/utils/line-list-utils.d.ts +2 -1
- package/lib/modules/react-wrapper/react-wrapper.component.d.ts +2 -3
- package/lib/shared/utils/predefinedDimensions.d.ts +6 -6
- package/package.json +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { CommonModule } from '@angular/common';
|
|
2
2
|
import * as i0 from '@angular/core';
|
|
3
3
|
import { NgModule, Directive, Input, ContentChild, Component, EventEmitter, Output, Injectable, inject } from '@angular/core';
|
|
4
|
-
import { IconEdit16, spacers, colors, theme, Tooltip, Button as Button$1, IconDimensionData16, IconClock16, IconDimensionOrgUnit16, SingleSelectField, SingleSelectOption, InputField as InputField$1, TabBar, Tab, Transfer, Modal as Modal$1, ModalTitle as ModalTitle$1, ModalContent as ModalContent$1, ModalActions as ModalActions$1, ButtonStrip as ButtonStrip$1, Checkbox, OrganisationUnitTree, MultiSelect, MultiSelectOption, IconWarningFilled16, Layer as Layer$1, Popper, FlyoutMenu, MenuItem as MenuItem$1, IconMore24, DataTable, TableHead, DataTableRow, DataTableColumnHeader, TableBody, DataTableCell, TableFoot, Pagination } from '@dhis2/ui';
|
|
4
|
+
import { IconEdit16, spacers, colors, theme, Tooltip, Button as Button$1, IconDimensionData16, IconClock16, IconDimensionOrgUnit16, SingleSelectField, SingleSelectOption, InputField as InputField$1, TabBar, Tab, Transfer, Modal as Modal$1, ModalTitle as ModalTitle$1, ModalContent as ModalContent$1, ModalActions as ModalActions$1, ButtonStrip as ButtonStrip$1, Checkbox, OrganisationUnitTree, MultiSelect, MultiSelectOption, IconWarningFilled16, Layer as Layer$1, Popper, FlyoutMenu, MenuItem as MenuItem$1, IconMore24, CircularLoader as CircularLoader$1, DataTable, TableHead, DataTableRow, DataTableColumnHeader, TableBody, DataTableCell, TableFoot, Pagination } from '@dhis2/ui';
|
|
5
5
|
import cx from 'classnames';
|
|
6
6
|
import PropTypes from 'prop-types';
|
|
7
7
|
import * as React from 'react';
|
|
@@ -27,7 +27,7 @@ import { MenuItem, MenuDivider } from '@dhis2-ui/menu';
|
|
|
27
27
|
import parse from 'html-react-parser';
|
|
28
28
|
import { getNowInCalendar, generateFixedPeriods } from '@dhis2/multi-calendar-dates';
|
|
29
29
|
import { isObject, isString } from 'lodash';
|
|
30
|
-
import {
|
|
30
|
+
import { map as map$1, switchMap } from 'rxjs/operators';
|
|
31
31
|
|
|
32
32
|
const TransferOption = ({ disabled, label, highlighted, selected, onClick, onDoubleClick, value, icon, active, tooltipText, dataTest, onEditClick, }) => {
|
|
33
33
|
const renderContent = () => (React__default.createElement("div", { className: cx('chip', {
|
|
@@ -1151,9 +1151,6 @@ class ReactWrapperComponent {
|
|
|
1151
1151
|
this.reactDomRoot = ReactDOM.createRoot(this.elementRef.nativeElement);
|
|
1152
1152
|
this.render();
|
|
1153
1153
|
}
|
|
1154
|
-
ngOnChanges() {
|
|
1155
|
-
// if (this.elementRef) this.render();
|
|
1156
|
-
}
|
|
1157
1154
|
ngOnDestroy() {
|
|
1158
1155
|
this.reactDomRoot?.unmount();
|
|
1159
1156
|
}
|
|
@@ -1174,7 +1171,7 @@ class ReactWrapperComponent {
|
|
|
1174
1171
|
}
|
|
1175
1172
|
}
|
|
1176
1173
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.7", ngImport: i0, type: ReactWrapperComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
1177
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.7", type: ReactWrapperComponent, isStandalone: false, selector: "ng-dhis2-ui-wrapper", inputs: { props: "props", component: "component" }, queries: [{ propertyName: "content", first: true, predicate: ["ngDhis2UiContent"], descendants: true }],
|
|
1174
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.7", type: ReactWrapperComponent, isStandalone: false, selector: "ng-dhis2-ui-wrapper", inputs: { props: "props", component: "component" }, queries: [{ propertyName: "content", first: true, predicate: ["ngDhis2UiContent"], descendants: true }], ngImport: i0 }); }
|
|
1178
1175
|
}
|
|
1179
1176
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.7", ngImport: i0, type: ReactWrapperComponent, decorators: [{
|
|
1180
1177
|
type: Directive,
|
|
@@ -2964,11 +2961,64 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.7", ngImpor
|
|
|
2964
2961
|
// Use of this source code is governed by a BSD-style
|
|
2965
2962
|
// license that can be found in the LICENSE file.
|
|
2966
2963
|
|
|
2964
|
+
// export function buildFilters(filters: AttributeFilter[]): string {
|
|
2965
|
+
// return filters
|
|
2966
|
+
// .map(({ attribute, operator, value }) => `filter=${attribute}:${operator}:${value}`)
|
|
2967
|
+
// .join('&');
|
|
2968
|
+
// }
|
|
2967
2969
|
function buildFilters(filters) {
|
|
2968
2970
|
return filters
|
|
2969
|
-
.map(({ attribute, operator, value }) =>
|
|
2971
|
+
.map(({ attribute, dataElement, operator, value }) => {
|
|
2972
|
+
// Check if attribute is defined, otherwise use dataElement
|
|
2973
|
+
const field = attribute || dataElement;
|
|
2974
|
+
return field ? `filter=${field}:${operator}:${value}` : '';
|
|
2975
|
+
})
|
|
2976
|
+
.filter(Boolean) // Remove any empty strings
|
|
2970
2977
|
.join('&');
|
|
2971
2978
|
}
|
|
2979
|
+
const matchesCondition = (eventValue, operator, filterValue) => {
|
|
2980
|
+
if (typeof eventValue === 'number' && typeof filterValue === 'number') {
|
|
2981
|
+
switch (operator) {
|
|
2982
|
+
case '=':
|
|
2983
|
+
return eventValue === filterValue;
|
|
2984
|
+
case '!=':
|
|
2985
|
+
return eventValue !== filterValue;
|
|
2986
|
+
case '>':
|
|
2987
|
+
return eventValue > filterValue;
|
|
2988
|
+
case '<':
|
|
2989
|
+
return eventValue < filterValue;
|
|
2990
|
+
case '>=':
|
|
2991
|
+
return eventValue >= filterValue;
|
|
2992
|
+
case '<=':
|
|
2993
|
+
return eventValue <= filterValue;
|
|
2994
|
+
default:
|
|
2995
|
+
return false;
|
|
2996
|
+
}
|
|
2997
|
+
}
|
|
2998
|
+
const strEventValue = String(eventValue);
|
|
2999
|
+
const strFilterValue = String(filterValue);
|
|
3000
|
+
switch (operator) {
|
|
3001
|
+
case '=':
|
|
3002
|
+
return strEventValue === strFilterValue;
|
|
3003
|
+
case '!=':
|
|
3004
|
+
return strEventValue !== strFilterValue;
|
|
3005
|
+
case 'contains':
|
|
3006
|
+
return strEventValue.includes(strFilterValue);
|
|
3007
|
+
case 'startsWith':
|
|
3008
|
+
return strEventValue.startsWith(strFilterValue);
|
|
3009
|
+
case 'endsWith':
|
|
3010
|
+
return strEventValue.endsWith(strFilterValue);
|
|
3011
|
+
case 'regex':
|
|
3012
|
+
return new RegExp(strFilterValue).test(strEventValue);
|
|
3013
|
+
default:
|
|
3014
|
+
return false;
|
|
3015
|
+
}
|
|
3016
|
+
};
|
|
3017
|
+
const getFilteredTrackedEntityInstances = (trackedEntityInstance, filters) => {
|
|
3018
|
+
return trackedEntityInstance.filter((trackedEntityInstance) => trackedEntityInstance.enrollments.some((enrollment) => enrollment.events.some((event) => filters.every((filter) => event.programStage === filter.programStage &&
|
|
3019
|
+
event.dataValues.some((dataValue) => dataValue.dataElement === filter.dataElement &&
|
|
3020
|
+
matchesCondition(dataValue.value, filter.operator, filter.value))))));
|
|
3021
|
+
};
|
|
2972
3022
|
|
|
2973
3023
|
class LineListService {
|
|
2974
3024
|
constructor(httpClient) {
|
|
@@ -2980,18 +3030,28 @@ class LineListService {
|
|
|
2980
3030
|
getTrackedEntityInstances(programId, orgUnit, page, pageSize, filters = [], startDate, endDate) {
|
|
2981
3031
|
const filterParams = buildFilters(filters);
|
|
2982
3032
|
const dateFilter = startDate && endDate ? `&programStartDate=${startDate}&programEndDate=${endDate}` : '';
|
|
2983
|
-
return this.httpClient.get(`trackedEntityInstances.json?program=${programId}&ou=${orgUnit}&page=${page}&pageSize=${pageSize}&fields=trackedEntityInstance,attributes[*],enrollments[*]&totalPages=true&${filterParams}${dateFilter}`)
|
|
3033
|
+
return this.httpClient.get(`trackedEntityInstances.json?program=${programId}&ou=${orgUnit}&page=${page}&pageSize=${pageSize}&fields=trackedEntityInstance,attributes[*],enrollments[*]&totalPages=true&${filterParams}${dateFilter}`).pipe(map$1((response) => {
|
|
3034
|
+
response.trackedEntityInstances.forEach((tei) => {
|
|
3035
|
+
// Filter attributes to only include those with displayInList=true
|
|
3036
|
+
tei.attributes = tei.attributes.filter((attr) => attr.displayInList);
|
|
3037
|
+
});
|
|
3038
|
+
return response;
|
|
3039
|
+
}));
|
|
2984
3040
|
}
|
|
2985
|
-
getEvents(programId, orgUnit, page, pageSize) {
|
|
2986
|
-
|
|
3041
|
+
getEvents(programId, orgUnit, page, pageSize, filters = [], startDate, endDate) {
|
|
3042
|
+
const filterParams = buildFilters(filters);
|
|
3043
|
+
const dateFilter = startDate && endDate ? `&startDate=${startDate}&endDate=${endDate}` : '';
|
|
3044
|
+
return this.httpClient.get(`events.json?program=${programId}&orgUnit=${orgUnit}&page=${page}&pageSize=${pageSize}&fields=*&totalPages=true&${filterParams}${dateFilter}`);
|
|
2987
3045
|
}
|
|
2988
|
-
getEventsByProgramStage(programStageId, orgUnit, page, pageSize) {
|
|
2989
|
-
|
|
3046
|
+
getEventsByProgramStage(programStageId, orgUnit, page, pageSize, filters = [], startDate, endDate) {
|
|
3047
|
+
const filterParams = buildFilters(filters);
|
|
3048
|
+
const dateFilter = startDate && endDate ? `&startDate=${startDate}&endDate=${endDate}` : '';
|
|
3049
|
+
return this.httpClient.get(`events.json?programStage=${programStageId}&orgUnit=${orgUnit}&page=${page}&pageSize=${pageSize}&fields=*&totalPages=true&${filterParams}${dateFilter}`);
|
|
2990
3050
|
}
|
|
2991
3051
|
getLineListData(programId, orgUnit = '', programStageId, page = 1, pageSize = 10, filters = [], startDate, endDate) {
|
|
2992
3052
|
return this.getProgramMetadata(programId).pipe(switchMap((programMetadata) => {
|
|
2993
3053
|
if (programStageId) {
|
|
2994
|
-
return this.getEventsByProgramStage(programStageId, orgUnit, page, pageSize).pipe(map$1((events) => ({
|
|
3054
|
+
return this.getEventsByProgramStage(programStageId, orgUnit, page, pageSize, filters, startDate, endDate).pipe(map$1((events) => ({
|
|
2995
3055
|
metadata: programMetadata,
|
|
2996
3056
|
data: events,
|
|
2997
3057
|
})));
|
|
@@ -3003,7 +3063,7 @@ class LineListService {
|
|
|
3003
3063
|
})));
|
|
3004
3064
|
}
|
|
3005
3065
|
else {
|
|
3006
|
-
return this.getEvents(programId, orgUnit, page, pageSize).pipe(map$1((events) => ({
|
|
3066
|
+
return this.getEvents(programId, orgUnit, page, pageSize, filters, startDate, endDate).pipe(map$1((events) => ({
|
|
3007
3067
|
metadata: programMetadata,
|
|
3008
3068
|
data: events,
|
|
3009
3069
|
})));
|
|
@@ -3091,11 +3151,11 @@ const ContextMenu = (params) => {
|
|
|
3091
3151
|
const [CurrentModal, setCurrentModal] = useCurrentModal();
|
|
3092
3152
|
const styles = useDynamicStyles(dropdownStyles);
|
|
3093
3153
|
return (React__default.createElement(React__default.Fragment, null,
|
|
3094
|
-
React__default.createElement(Layer$1, { onBackdropClick: onClose, className: styles.layer },
|
|
3154
|
+
React__default.createElement(Layer$1, { onBackdropClick: (event, data) => onClose(event, data), className: styles.layer },
|
|
3095
3155
|
React__default.createElement(Popper, { reference: anchorRef, placement: "bottom-start" },
|
|
3096
3156
|
React__default.createElement(FlyoutMenu, null, dropDownOptions.map((dropDownOption, index) => (React__default.createElement(MenuItem$1, { key: index, destructive: dropDownOption.destructive, label: dropDownOption.label, icon: dropDownOption.icon, onClick: () => {
|
|
3097
|
-
|
|
3098
|
-
|
|
3157
|
+
onMenuClick(dropDownOption);
|
|
3158
|
+
onClose();
|
|
3099
3159
|
}, dense: true })))))),
|
|
3100
3160
|
CurrentModal && (React__default.createElement(CurrentModal, { onClose: () => {
|
|
3101
3161
|
onClose();
|
|
@@ -3138,8 +3198,12 @@ const getProgramStageData = (response, programStageId, pager) => {
|
|
|
3138
3198
|
});
|
|
3139
3199
|
return { columns: entityColumns, data: dataElementsData };
|
|
3140
3200
|
};
|
|
3141
|
-
const getTrackedEntityData = (response, programId, pager) => {
|
|
3142
|
-
|
|
3201
|
+
const getTrackedEntityData = (response, programId, pager, filters) => {
|
|
3202
|
+
let teis = response.data
|
|
3203
|
+
.trackedEntityInstances;
|
|
3204
|
+
if (filters) {
|
|
3205
|
+
teis = getFilteredTrackedEntityInstances(teis, filters);
|
|
3206
|
+
}
|
|
3143
3207
|
const allAttributes = new Set();
|
|
3144
3208
|
teis.forEach((tei) => {
|
|
3145
3209
|
const matchingEnrollment = tei.enrollments.find((enrollment) => enrollment.program === programId);
|
|
@@ -3207,9 +3271,15 @@ const addActionsColumn = (columns, actionOptions) => {
|
|
|
3207
3271
|
];
|
|
3208
3272
|
};
|
|
3209
3273
|
|
|
3274
|
+
// src/app/line-list-table.component.ts
|
|
3210
3275
|
class LineListTableComponent extends ReactWrapperComponent {
|
|
3211
3276
|
constructor() {
|
|
3212
3277
|
super(...arguments);
|
|
3278
|
+
this.actionSelected = new EventEmitter();
|
|
3279
|
+
this.reactStateUpdaters = null;
|
|
3280
|
+
this.setReactStateUpdaters = (updaters) => {
|
|
3281
|
+
this.reactStateUpdaters = updaters;
|
|
3282
|
+
};
|
|
3213
3283
|
this.lineListService = inject(LineListService);
|
|
3214
3284
|
this.LineList = () => {
|
|
3215
3285
|
const [columns, setColumns] = useState([]);
|
|
@@ -3221,20 +3291,40 @@ class LineListTableComponent extends ReactWrapperComponent {
|
|
|
3221
3291
|
pageCount: 1,
|
|
3222
3292
|
});
|
|
3223
3293
|
const paginationRef = useRef(null);
|
|
3294
|
+
const [programIdState, setProgramIdState] = useState(this.programId);
|
|
3295
|
+
const [orgUnitState, setOrgUnitState] = useState(this.orgUnit);
|
|
3296
|
+
const [programStageIdState, setProgramStageIdState] = useState(this.programStageId);
|
|
3297
|
+
const [attributeFiltersState, setAttributeFiltersState] = useState(this.attributeFilters);
|
|
3298
|
+
const [startDateState, setStartDateState] = useState(this.startDate);
|
|
3299
|
+
const [endDateState, setEndDateState] = useState(this.endDate);
|
|
3300
|
+
const [loading, setLoading] = useState(false);
|
|
3301
|
+
// Store updaters in refs for Angular to access
|
|
3302
|
+
const updateRefs = useRef({
|
|
3303
|
+
setProgramIdState,
|
|
3304
|
+
setOrgUnitState,
|
|
3305
|
+
setProgramStageIdState,
|
|
3306
|
+
setAttributeFiltersState,
|
|
3307
|
+
setStartDateState,
|
|
3308
|
+
setEndDateState,
|
|
3309
|
+
});
|
|
3224
3310
|
useEffect(() => {
|
|
3225
|
-
|
|
3226
|
-
|
|
3227
|
-
|
|
3228
|
-
|
|
3229
|
-
|
|
3230
|
-
paginationContainer.
|
|
3231
|
-
paginationContainer
|
|
3232
|
-
|
|
3233
|
-
|
|
3234
|
-
|
|
3235
|
-
|
|
3236
|
-
|
|
3311
|
+
this.setReactStateUpdaters?.(updateRefs.current);
|
|
3312
|
+
}, []);
|
|
3313
|
+
useEffect(() => {
|
|
3314
|
+
if (!loading) {
|
|
3315
|
+
setTimeout(() => {
|
|
3316
|
+
const paginationContainer = document.querySelector('[data-test="dhis2-uiwidgets-pagination"]');
|
|
3317
|
+
if (paginationContainer) {
|
|
3318
|
+
paginationContainer.style.display = 'flex';
|
|
3319
|
+
paginationContainer.style.flexDirection = 'row';
|
|
3320
|
+
paginationContainer.style.justifyContent = 'space-between';
|
|
3321
|
+
paginationContainer.style.alignItems = 'center';
|
|
3322
|
+
}
|
|
3323
|
+
}, 500); // Short delay to ensure styles apply after data renders
|
|
3237
3324
|
}
|
|
3325
|
+
}, [loading]);
|
|
3326
|
+
useEffect(() => {
|
|
3327
|
+
setLoading(true);
|
|
3238
3328
|
this.lineListService
|
|
3239
3329
|
.getLineListData(this.programId, this.orgUnit, this.programStageId, pager.page, pager.pageSize, this.attributeFilters, this.startDate, this.endDate)
|
|
3240
3330
|
.subscribe((response) => {
|
|
@@ -3250,7 +3340,7 @@ class LineListTableComponent extends ReactWrapperComponent {
|
|
|
3250
3340
|
else if ('trackedEntityInstances' in response.data) {
|
|
3251
3341
|
responsePager = response.data
|
|
3252
3342
|
.pager;
|
|
3253
|
-
const { columns, data } = getTrackedEntityData(response, this.programId, pager);
|
|
3343
|
+
const { columns, data } = getTrackedEntityData(response, this.programId, pager, this.filters);
|
|
3254
3344
|
entityColumns = columns;
|
|
3255
3345
|
entityData = data;
|
|
3256
3346
|
}
|
|
@@ -3261,27 +3351,41 @@ class LineListTableComponent extends ReactWrapperComponent {
|
|
|
3261
3351
|
entityData = data;
|
|
3262
3352
|
}
|
|
3263
3353
|
const finalColumns = addActionsColumn([{ label: '#', key: 'index' }, ...entityColumns], this.actionOptions);
|
|
3264
|
-
|
|
3265
|
-
|
|
3266
|
-
|
|
3354
|
+
setLoading(false);
|
|
3355
|
+
console.log('hey');
|
|
3356
|
+
setColumns(...[finalColumns]);
|
|
3357
|
+
setData(...[entityData]);
|
|
3358
|
+
setPager(...[responsePager]);
|
|
3359
|
+
console.log('columns', columns);
|
|
3360
|
+
console.log('data', data);
|
|
3267
3361
|
});
|
|
3268
|
-
}, [
|
|
3269
|
-
|
|
3270
|
-
|
|
3362
|
+
}, [
|
|
3363
|
+
programIdState,
|
|
3364
|
+
orgUnitState,
|
|
3365
|
+
programStageIdState,
|
|
3366
|
+
attributeFiltersState,
|
|
3367
|
+
startDateState,
|
|
3368
|
+
endDateState,
|
|
3369
|
+
pager.page,
|
|
3370
|
+
pager.pageSize,
|
|
3371
|
+
]);
|
|
3271
3372
|
const getDropdownOptions = (row) => {
|
|
3272
3373
|
return (this.actionOptions || []).map((option) => ({
|
|
3273
3374
|
...option,
|
|
3274
|
-
onClick: () =>
|
|
3375
|
+
onClick: () => {
|
|
3376
|
+
option.onClick?.(row);
|
|
3377
|
+
this.actionSelected.emit({ action: option.label, row });
|
|
3378
|
+
},
|
|
3275
3379
|
}));
|
|
3276
3380
|
};
|
|
3277
|
-
return (React__default.createElement("div", null,
|
|
3278
|
-
React__default.createElement(DataTable, null,
|
|
3381
|
+
return (React__default.createElement("div", null, loading ? (React__default.createElement(CircularLoader$1, null)) :
|
|
3382
|
+
(React__default.createElement(DataTable, null,
|
|
3279
3383
|
React__default.createElement(TableHead, null,
|
|
3280
3384
|
React__default.createElement(DataTableRow, null, columns.map((col) => (React__default.createElement(DataTableColumnHeader, { key: col.key }, col.label))))),
|
|
3281
3385
|
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, { dropdownOptions: getDropdownOptions(row), onClick: (option) => option.onClick?.() })) : (row[col.key])))))))),
|
|
3282
3386
|
React__default.createElement(TableFoot, null,
|
|
3283
3387
|
React__default.createElement(DataTableRow, null,
|
|
3284
|
-
React__default.createElement(DataTableCell, { colSpan: columns.length },
|
|
3388
|
+
React__default.createElement(DataTableCell, { colSpan: columns.length.toString() },
|
|
3285
3389
|
React__default.createElement("div", null,
|
|
3286
3390
|
React__default.createElement(Pagination, { page: pager.page, pageCount: pager.pageCount, pageSize: pager.pageSize, total: pager.total, onPageChange: (page) => setPager((prev) => ({ ...prev, page })), onPageSizeChange: (pageSize) => {
|
|
3287
3391
|
const newPageSize = Number(pageSize);
|
|
@@ -3290,9 +3394,31 @@ class LineListTableComponent extends ReactWrapperComponent {
|
|
|
3290
3394
|
page: 1,
|
|
3291
3395
|
pageSize: newPageSize,
|
|
3292
3396
|
}));
|
|
3293
|
-
}, pageSizes: ['5', '10', '20', '50'] }))))))));
|
|
3397
|
+
}, pageSizes: ['5', '10', '20', '50'] })))))))));
|
|
3294
3398
|
};
|
|
3295
3399
|
}
|
|
3400
|
+
ngOnChanges(changes) {
|
|
3401
|
+
if (this.reactStateUpdaters) {
|
|
3402
|
+
if (changes['programId']) {
|
|
3403
|
+
this.reactStateUpdaters.setProgramIdState(this.programId);
|
|
3404
|
+
}
|
|
3405
|
+
if (changes['orgUnit']) {
|
|
3406
|
+
this.reactStateUpdaters.setOrgUnitState(this.orgUnit);
|
|
3407
|
+
}
|
|
3408
|
+
if (changes['programStageId']) {
|
|
3409
|
+
this.reactStateUpdaters.setProgramStageIdState(this.programStageId);
|
|
3410
|
+
}
|
|
3411
|
+
if (changes['attributeFilters']) {
|
|
3412
|
+
this.reactStateUpdaters.setAttributeFiltersState(this.attributeFilters);
|
|
3413
|
+
}
|
|
3414
|
+
if (changes['startDate']) {
|
|
3415
|
+
this.reactStateUpdaters.setStartDateState(this.startDate);
|
|
3416
|
+
}
|
|
3417
|
+
if (changes['endDate']) {
|
|
3418
|
+
this.reactStateUpdaters.setEndDateState(this.endDate);
|
|
3419
|
+
}
|
|
3420
|
+
}
|
|
3421
|
+
}
|
|
3296
3422
|
async ngAfterViewInit() {
|
|
3297
3423
|
if (!this.elementRef)
|
|
3298
3424
|
throw new Error('No element ref');
|
|
@@ -3301,11 +3427,11 @@ class LineListTableComponent extends ReactWrapperComponent {
|
|
|
3301
3427
|
this.render();
|
|
3302
3428
|
}
|
|
3303
3429
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.7", ngImport: i0, type: LineListTableComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
3304
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.7", type: LineListTableComponent, isStandalone: false, selector: "app-line-list", inputs: { programId: "programId", orgUnit: "orgUnit", programStageId: "programStageId", actionOptions: "actionOptions", attributeFilters: "attributeFilters", startDate: "startDate", endDate: "endDate" }, usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, styles: [""] }); }
|
|
3430
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.7", type: LineListTableComponent, isStandalone: false, selector: "app-line-list", inputs: { programId: "programId", orgUnit: "orgUnit", programStageId: "programStageId", actionOptions: "actionOptions", attributeFilters: "attributeFilters", startDate: "startDate", endDate: "endDate", filters: "filters" }, outputs: { actionSelected: "actionSelected" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, styles: ["[data-test=dhis2-uiwidgets-pagination]{display:flex!important;flex-direction:row!important;justify-content:space-between!important;align-items:center!important}\n"] }); }
|
|
3305
3431
|
}
|
|
3306
3432
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.7", ngImport: i0, type: LineListTableComponent, decorators: [{
|
|
3307
3433
|
type: Component,
|
|
3308
|
-
args: [{ selector: 'app-line-list', template: '<ng-content></ng-content>', standalone: false }]
|
|
3434
|
+
args: [{ selector: 'app-line-list', template: '<ng-content></ng-content>', standalone: false, styles: ["[data-test=dhis2-uiwidgets-pagination]{display:flex!important;flex-direction:row!important;justify-content:space-between!important;align-items:center!important}\n"] }]
|
|
3309
3435
|
}], propDecorators: { programId: [{
|
|
3310
3436
|
type: Input
|
|
3311
3437
|
}], orgUnit: [{
|
|
@@ -3320,6 +3446,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.7", ngImpor
|
|
|
3320
3446
|
type: Input
|
|
3321
3447
|
}], endDate: [{
|
|
3322
3448
|
type: Input
|
|
3449
|
+
}], filters: [{
|
|
3450
|
+
type: Input
|
|
3451
|
+
}], actionSelected: [{
|
|
3452
|
+
type: Output
|
|
3323
3453
|
}] } });
|
|
3324
3454
|
|
|
3325
3455
|
class LineListModule {
|