Skip to content

Commit 067dcac

Browse files
authored
feat: [ANDROAPP-5896] configurable event label (#3495)
1 parent 2f3b422 commit 067dcac

File tree

79 files changed

+217
-624
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

79 files changed

+217
-624
lines changed

app/src/androidTest/java/org/dhis2/usescases/eventsWithoutRegistration/eventDetails/EventInitialTest.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ class EventInitialTest {
9191
on { displayName() } doReturn PROGRAM_STAGE_NAME
9292
on { executionDateLabel() } doReturn EXECUTION_DATE
9393
on { generatedByEnrollmentDate() } doReturn true
94+
on { uid() } doReturn "programStage"
9495
}
9596
private val catCombo: CategoryCombo = mock {
9697
on { uid() } doReturn CAT_COMBO_UID
@@ -154,7 +155,7 @@ class EventInitialTest {
154155
enrollmentStatus = enrollmentStatus,
155156
)
156157

157-
private fun provideEventResourcesProvider() = EventDetailResourcesProvider(PROGRAM_UID, resourceManager)
158+
private fun provideEventResourcesProvider() = EventDetailResourcesProvider(PROGRAM_UID, programStage.uid(), resourceManager)
158159

159160
private fun createOrUpdateEventDetails() = CreateOrUpdateEventDetails(
160161
repository = eventDetailsRepository,

app/src/main/java/org/dhis2/bindings/Bindings.java

Lines changed: 0 additions & 201 deletions
Original file line numberDiff line numberDiff line change
@@ -204,207 +204,6 @@ public static void setEventIcon(ImageView view, Event event, Enrollment enrollme
204204
}
205205
}
206206

207-
@BindingAdapter(value = {"eventStatusText", "enrollmentStatus", "eventProgramStage", "eventProgram"})
208-
public static void setEventText(TextView view, Event event, Enrollment enrollment, ProgramStage eventProgramStage, Program program) {
209-
if (event != null) {
210-
EventStatus status = event.status();
211-
EnrollmentStatus enrollmentStatus = enrollment.status();
212-
if (status == null)
213-
status = EventStatus.ACTIVE;
214-
if (enrollmentStatus == null)
215-
enrollmentStatus = EnrollmentStatus.ACTIVE;
216-
217-
218-
if (enrollmentStatus == EnrollmentStatus.ACTIVE) {
219-
switch (status) {
220-
case ACTIVE:
221-
Date eventDate = event.eventDate();
222-
if (eventProgramStage.periodType() != null && eventProgramStage.periodType().name().contains(PeriodType.Weekly.name()))
223-
eventDate = DateUtils.getInstance().getNextPeriod(eventProgramStage.periodType(), eventDate, 0, true);
224-
if (DateUtils.getInstance().isEventExpired(eventDate, null, event.status(), program.completeEventsExpiryDays(), eventProgramStage.periodType() != null ? eventProgramStage.periodType() : program.expiryPeriodType(), program.expiryDays())) {
225-
view.setText(view.getContext().getString(R.string.event_expired));
226-
} else {
227-
view.setText(view.getContext().getString(R.string.event_open));
228-
}
229-
break;
230-
case COMPLETED:
231-
if (DateUtils.getInstance().isEventExpired(null, event.completedDate(), program.completeEventsExpiryDays())) {
232-
view.setText(view.getContext().getString(R.string.event_expired));
233-
} else {
234-
view.setText(view.getContext().getString(R.string.event_completed));
235-
}
236-
break;
237-
case SCHEDULE:
238-
if (DateUtils.getInstance().isEventExpired(
239-
event.dueDate(),
240-
null,
241-
status,
242-
program.completeEventsExpiryDays(),
243-
eventProgramStage.periodType() != null ? eventProgramStage.periodType() : program.expiryPeriodType(),
244-
program.expiryDays())) {
245-
view.setText(view.getContext().getString(R.string.event_expired));
246-
} else {
247-
view.setText(view.getContext().getString(R.string.event_schedule));
248-
}
249-
break;
250-
case SKIPPED:
251-
view.setText(view.getContext().getString(R.string.event_skipped));
252-
break;
253-
case OVERDUE:
254-
view.setText(R.string.event_overdue);
255-
break;
256-
default:
257-
view.setText(view.getContext().getString(R.string.read_only));
258-
break;
259-
}
260-
} else if (enrollmentStatus == EnrollmentStatus.COMPLETED) {
261-
view.setText(view.getContext().getString(R.string.program_completed));
262-
} else { //EnrollmentStatus = CANCELLED
263-
view.setText(view.getContext().getString(R.string.program_inactive));
264-
}
265-
}
266-
}
267-
268-
@BindingAdapter(value = {"eventColor", "eventProgramStage", "eventProgram"})
269-
public static void setEventColor(View view, Event event, ProgramStage programStage, Program program) {
270-
if (event != null) {
271-
int bgColor;
272-
if (DateUtils.getInstance().isEventExpired(null, event.completedDate(), program.completeEventsExpiryDays())) {
273-
bgColor = R.drawable.item_event_dark_gray_ripple;
274-
} else if (event.status() != null) {
275-
switch (event.status()) {
276-
case ACTIVE:
277-
Date eventDate = event.eventDate();
278-
if (programStage.periodType() != null && programStage.periodType().name().contains(PeriodType.Weekly.name()))
279-
eventDate = DateUtils.getInstance().getNextPeriod(programStage.periodType(), eventDate, 0, true);
280-
if (DateUtils.getInstance().isEventExpired(eventDate, null, event.status(), program.completeEventsExpiryDays(), programStage.periodType() != null ? programStage.periodType() : program.expiryPeriodType(), program.expiryDays())) {
281-
bgColor = R.drawable.item_event_dark_gray_ripple;
282-
} else
283-
bgColor = R.drawable.item_event_yellow_ripple;
284-
break;
285-
case COMPLETED:
286-
if (DateUtils.getInstance().isEventExpired(null, event.completedDate(), program.completeEventsExpiryDays())) {
287-
bgColor = R.drawable.item_event_dark_gray_ripple;
288-
} else
289-
bgColor = R.drawable.item_event_gray_ripple;
290-
break;
291-
case SCHEDULE:
292-
if (DateUtils.getInstance().isEventExpired(
293-
event.dueDate(),
294-
null,
295-
event.status(),
296-
program.completeEventsExpiryDays(),
297-
programStage.periodType() != null ? programStage.periodType() : program.expiryPeriodType(),
298-
program.expiryDays())) {
299-
bgColor = R.drawable.item_event_dark_gray_ripple;
300-
} else
301-
bgColor = R.drawable.item_event_green_ripple;
302-
break;
303-
case VISITED:
304-
case SKIPPED:
305-
default:
306-
bgColor = R.drawable.item_event_red_ripple;
307-
break;
308-
}
309-
} else {
310-
bgColor = R.drawable.item_event_red_ripple;
311-
}
312-
view.setBackground(AppCompatResources.getDrawable(view.getContext(), bgColor));
313-
}
314-
}
315-
316-
@BindingAdapter("eventWithoutRegistrationStatusText")
317-
public static void setEventWithoutRegistrationStatusText(TextView textView, ProgramEventViewModel event) {
318-
switch (event.eventStatus()) {
319-
case ACTIVE:
320-
if (event.isExpired()) {
321-
textView.setText(textView.getContext().getString(R.string.event_editing_expired));
322-
} else {
323-
textView.setText(textView.getContext().getString(R.string.event_open));
324-
}
325-
break;
326-
case COMPLETED:
327-
if (event.isExpired()) {
328-
textView.setText(textView.getContext().getString(R.string.event_editing_expired));
329-
} else {
330-
textView.setText(textView.getContext().getString(R.string.event_completed));
331-
}
332-
break;
333-
case SKIPPED:
334-
textView.setText(textView.getContext().getString(R.string.event_editing_expired));
335-
break;
336-
default:
337-
textView.setText(textView.getContext().getString(R.string.read_only));
338-
break;
339-
}
340-
}
341-
342-
343-
344-
@BindingAdapter("stateText")
345-
public static void setStateText(TextView textView, State state) {
346-
switch (state) {
347-
case TO_POST:
348-
textView.setText(textView.getContext().getString(R.string.state_to_post));
349-
break;
350-
case TO_UPDATE:
351-
textView.setText(textView.getContext().getString(R.string.state_to_update));
352-
break;
353-
case ERROR:
354-
textView.setText(textView.getContext().getString(R.string.state_error));
355-
break;
356-
case SYNCED:
357-
textView.setText(textView.getContext().getString(R.string.state_synced));
358-
break;
359-
default:
360-
break;
361-
}
362-
}
363-
364-
@BindingAdapter("fromResBgColor")
365-
public static void setFromResBgColor(View view, int color) {
366-
String tintedColor;
367-
368-
ArrayList<Double> rgb = new ArrayList<>();
369-
rgb.add(Color.red(color) / 255.0d);
370-
rgb.add(Color.green(color) / 255.0d);
371-
rgb.add(Color.blue(color) / 255.0d);
372-
373-
Double r = null;
374-
Double g = null;
375-
Double b = null;
376-
for (Double c : rgb) {
377-
if (c <= 0.03928d)
378-
c = c / 12.92d;
379-
else
380-
c = Math.pow(((c + 0.055d) / 1.055d), 2.4d);
381-
382-
if (r == null)
383-
r = c;
384-
else if (g == null)
385-
g = c;
386-
else
387-
b = c;
388-
}
389-
390-
double L = 0.2126d * r + 0.7152d * g + 0.0722d * b;
391-
392-
393-
if (L > 0.179d)
394-
tintedColor = "#000000"; // bright colors - black font
395-
else
396-
tintedColor = "#FFFFFF"; // dark colors - white font
397-
398-
if (view instanceof TextView) {
399-
((TextView) view).setTextColor(Color.parseColor(tintedColor));
400-
}
401-
if (view instanceof ImageView) {
402-
Drawable drawable = ((ImageView) view).getDrawable();
403-
if (drawable != null)
404-
drawable.setColorFilter(Color.parseColor(tintedColor), PorterDuff.Mode.SRC_IN);
405-
((ImageView) view).setImageDrawable(drawable);
406-
}
407-
}
408207

409208
@BindingAdapter("imageBackground")
410209
public static void setImageBackground(ImageView imageView, Drawable drawable) {

0 commit comments

Comments
 (0)