Skip to content
This repository was archived by the owner on May 5, 2021. It is now read-only.

Commit dfd035e

Browse files
authored
Merge pull request SORMAS-Foundation#3741 from hzi-braunschweig/feature-3152-SymptomsReordering
Feature 3152 symptoms reordering
2 parents f1cfc0a + e6be153 commit dfd035e

8 files changed

Lines changed: 340 additions & 131 deletions

File tree

sormas-api/src/main/java/de/symeda/sormas/api/symptoms/SymptomsDto.java

Lines changed: 202 additions & 60 deletions
Large diffs are not rendered by default.

sormas-api/src/main/java/de/symeda/sormas/api/utils/HideForCountries.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,12 @@
55
import java.lang.annotation.RetentionPolicy;
66
import java.lang.annotation.Target;
77

8+
import de.symeda.sormas.api.CountryHelper;
9+
810
@Retention(RetentionPolicy.RUNTIME)
911
@Target(ElementType.FIELD)
1012
public @interface HideForCountries {
1113

1214
String[] countries() default {
13-
"de" };
15+
CountryHelper.COUNTRY_CODE_GERMANY };
1416
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package de.symeda.sormas.api.utils;
2+
3+
import de.symeda.sormas.api.i18n.I18nProperties;
4+
5+
public enum SymptomGroup {
6+
7+
GENERAL,
8+
RESPIRATORY,
9+
CARDIOVASCULAR,
10+
GASTROINTESTINAL,
11+
URINARY,
12+
NERVOUS_SYSTEM,
13+
SKIN,
14+
OTHER;
15+
16+
public String toString() {
17+
return I18nProperties.getEnumCaption(this);
18+
}
19+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package de.symeda.sormas.api.utils;
2+
3+
import java.lang.annotation.ElementType;
4+
import java.lang.annotation.Retention;
5+
import java.lang.annotation.RetentionPolicy;
6+
import java.lang.annotation.Target;
7+
8+
@Retention(RetentionPolicy.RUNTIME)
9+
@Target({
10+
ElementType.FIELD,
11+
ElementType.METHOD })
12+
public @interface SymptomGrouping {
13+
SymptomGroup value() default SymptomGroup.OTHER;
14+
}

sormas-api/src/main/resources/enum.properties

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1251,4 +1251,13 @@ InfectionSetting.INTENSIVE_CARE_UNIT=Intensive care unit
12511251
InfectionSetting.OTHER_STATION=Other station
12521252
InfectionSetting.NURSING_HOME=Nursing home
12531253
InfectionSetting.REHAB_FACILITY=Rehab facility
1254-
InfectionSetting.OTHER_STATIONARY_FACILITY=Other in-patient facililty
1254+
InfectionSetting.OTHER_STATIONARY_FACILITY=Other in-patient facililty
1255+
1256+
SymptomGroup.GENERAL=General
1257+
SymptomGroup.RESPIRATORY=Respiratory
1258+
SymptomGroup.CARDIOVASCULAR=Cardiovascular
1259+
SymptomGroup.GASTROINTESTINAL=Gastrointestinal
1260+
SymptomGroup.URINARY=Urinary
1261+
SymptomGroup.NERVOUS_SYSTEM=Nervous system
1262+
SymptomGroup.SKIN=Skin
1263+
SymptomGroup.OTHER=Other

sormas-app/app/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,7 @@ dependencies {
123123
androidTestImplementation 'androidx.test.uiautomator:uiautomator:2.2.0'
124124
implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.0.0'
125125
implementation 'me.dm7.barcodescanner:zxing:1.9.13'
126+
implementation 'org.jsoup:jsoup:1.13.1'
126127
}
127128

128129
apply plugin: 'com.google.gms.google-services'

sormas-ui/src/main/java/de/symeda/sormas/ui/symptoms/SymptomsForm.java

Lines changed: 81 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919

2020
import static de.symeda.sormas.api.symptoms.SymptomsDto.*;
2121
import static de.symeda.sormas.ui.utils.CssStyles.H3;
22+
import static de.symeda.sormas.ui.utils.CssStyles.H4;
2223
import static de.symeda.sormas.ui.utils.CssStyles.VSPACE_3;
2324
import static de.symeda.sormas.ui.utils.CssStyles.VSPACE_NONE;
2425
import static de.symeda.sormas.ui.utils.LayoutUtil.fluidColumn;
@@ -30,9 +31,15 @@
3031
import static de.symeda.sormas.ui.utils.LayoutUtil.locCss;
3132
import static de.symeda.sormas.ui.utils.LayoutUtil.locsCss;
3233

34+
import java.util.ArrayList;
3335
import java.util.Arrays;
36+
import java.util.Comparator;
37+
import java.util.HashMap;
3438
import java.util.List;
39+
import java.util.Map;
40+
import java.util.Optional;
3541
import java.util.Set;
42+
import java.util.function.Predicate;
3643
import java.util.stream.Collectors;
3744
import java.util.stream.Stream;
3845

@@ -41,6 +48,7 @@
4148
import com.vaadin.shared.ui.MarginInfo;
4249
import com.vaadin.ui.Alignment;
4350
import com.vaadin.ui.Button;
51+
import com.vaadin.ui.Component;
4452
import com.vaadin.ui.HorizontalLayout;
4553
import com.vaadin.ui.Image;
4654
import com.vaadin.ui.Label;
@@ -70,6 +78,8 @@
7078
import de.symeda.sormas.api.symptoms.SymptomsContext;
7179
import de.symeda.sormas.api.symptoms.SymptomsDto;
7280
import de.symeda.sormas.api.symptoms.SymptomsHelper;
81+
import de.symeda.sormas.api.utils.SymptomGroup;
82+
import de.symeda.sormas.api.utils.SymptomGrouping;
7383
import de.symeda.sormas.api.utils.fieldaccess.UiFieldAccessCheckers;
7484
import de.symeda.sormas.api.utils.fieldvisibility.FieldVisibilityCheckers;
7585
import de.symeda.sormas.api.utils.fieldvisibility.checkers.CountryFieldVisibilityChecker;
@@ -90,6 +100,14 @@ public class SymptomsForm extends AbstractEditForm<SymptomsDto> {
90100

91101
private static final String CLINICAL_MEASUREMENTS_HEADING_LOC = "clinicalMeasurementsHeadingLoc";
92102
private static final String SIGNS_AND_SYMPTOMS_HEADING_LOC = "signsAndSymptomsHeadingLoc";
103+
private static final String GENERAL_SIGNS_AND_SYMPTOMS_HEADING_LOC = "generalSignsAndSymptomsHeadingLoc";
104+
private static final String RESPIRATORY_SIGNS_AND_SYMPTOMS_HEADING_LOC = "respiratorySignsAndSymptomsHeadingLoc";
105+
private static final String CARDIOVASCULAR_SIGNS_AND_SYMPTOMS_HEADING_LOC = "cardiovascularSignsAndSymptomsHeadingLoc";
106+
private static final String GASTROINTESTINAL_SIGNS_AND_SYMPTOMS_HEADING_LOC = "gastrointestinalSignsAndSymptomsHeadingLoc";
107+
private static final String URINARY_SIGNS_AND_SYMPTOMS_HEADING_LOC = "urinarySignsAndSymptomsHeadingLoc";
108+
private static final String NERVOUS_SYSTEM_SIGNS_AND_SYMPTOMS_HEADING_LOC = "nervousSystemSignsAndSymptomsHeadingLoc";
109+
private static final String SKIN_SIGNS_AND_SYMPTOMS_HEADING_LOC = "skinSignsAndSymptomsHeadingLoc";
110+
private static final String OTHER_SIGNS_AND_SYMPTOMS_HEADING_LOC = "otherSignsAndSymptomsHeadingLoc";
93111
private static final String BUTTONS_LOC = "buttonsLoc";
94112
private static final String LESIONS_LOCATIONS_LOC = "lesionsLocationsLoc";
95113
private static final String MONKEYPOX_LESIONS_IMG1 = "monkeypoxLesionsImg1";
@@ -99,6 +117,8 @@ public class SymptomsForm extends AbstractEditForm<SymptomsDto> {
99117
private static final String SYMPTOMS_HINT_LOC = "symptomsHintLoc";
100118
private static final String COMPLICATIONS_HEADING = "complicationsHeading";
101119

120+
private static Map<String, List<String>> symptomGroupMap = new HashMap();
121+
102122
//@formatter:off
103123
private static final String HTML_LAYOUT =
104124
loc(CLINICAL_MEASUREMENTS_HEADING_LOC) +
@@ -110,67 +130,15 @@ public class SymptomsForm extends AbstractEditForm<SymptomsDto> {
110130
//XXX #1620 fluidColumnLoc?
111131
fluidColumn(8, 0, loc(SYMPTOMS_HINT_LOC))) +
112132
fluidRow(fluidColumn(8,4, locCss(CssStyles.ALIGN_RIGHT,BUTTONS_LOC)))+
113-
fluidRow(
114-
fluidColumn(6, -1,
115-
locsCss(VSPACE_3,
116-
FEELING_ILL, SHIVERING, HEADACHE, MUSCLE_PAIN, ABDOMINAL_PAIN, ABNORMAL_LUNG_XRAY_FINDINGS,
117-
ACUTE_RESPIRATORY_DISTRESS_SYNDROME, HEARINGLOSS, ANOREXIA_APPETITE_LOSS,
118-
BACKACHE, BLACKENING_DEATH_OF_TISSUE, BLOOD_IN_STOOL,
119-
BUBOES_GROIN_ARMPIT_NECK, BULGING_FONTANELLE,
120-
BILATERAL_CATARACTS, UNILATERAL_CATARACTS, CHEST_PAIN, CHILLS_SWEATS,
121-
CONGENITAL_GLAUCOMA, CONGENITAL_HEART_DISEASE,
122-
CONGENITAL_HEART_DISEASE_TYPE, CONGENITAL_HEART_DISEASE_DETAILS,
123-
CONJUNCTIVITIS, CONJUNCTIVAL_INJECTION, COUGH, COUGH_WITHOUT_SPUTUM, COUGH_WITH_SPUTUM,
124-
COUGH_WITH_HEAMOPTYSIS, RESPIRATORY_DISEASE_VENTILATION,
125-
DARK_URINE, DEHYDRATION, DEVELOPMENTAL_DELAY, DIARRHEA,
126-
CHEST_PRESSURE, DIFFICULTY_BREATHING, LYMPHADENOPATHY, LYMPHADENOPATHY_AXILLARY,
127-
LYMPHADENOPATHY_CERVICAL, LYMPHADENOPATHY_INGUINAL,
128-
FATIGUE_WEAKNESS, WEAKNESS, FATIGUE,FEVER, FEVERISHFEELING, FLUID_IN_LUNG_CAVITY,
129-
FLUID_IN_LUNG_CAVITY_AUSCULTATION, FLUID_IN_LUNG_CAVITY_XRAY,
130-
HICCUPS, BEDRIDDEN,
131-
JAUNDICE, JAUNDICE_WITHIN_24_HOURS_OF_BIRTH, JOINT_PAIN, KOPLIKS_SPOTS,
132-
LOSS_SKIN_TURGOR,
133-
SKIN_RASH, MALAISE, MENINGOENCEPHALITIS, OTITIS_MEDIA, MICROCEPHALY,
134-
NAUSEA, NECK_STIFFNESS, OEDEMA_FACE_NECK, OEDEMA_LOWER_EXTREMITY,
135-
EYE_PAIN_LIGHT_SENSITIVE,
136-
PAINFUL_LYMPHADENITIS, ANXIETY_STATES, DELIRIUM, UPROARIOUSNESS,
137-
PARASTHESIA_AROUND_WOUND,
138-
EXCESS_SALIVATION, INSOMNIA, PARALYSIS, EXCITATION, DYSPHAGIA, AEROPHOBIA
139-
, CONVULSION)),
140-
fluidColumn(6, 0,
141-
locsCss(VSPACE_3,
142-
FAST_HEART_RATE, PALPABLE_LIVER, PALPABLE_SPLEEN, PHARYNGEAL_ERYTHEMA, PHARYNGEAL_EXUDATE,
143-
PIGMENTARY_RETINOPATHY, PNEUMONIA_CLINICAL_OR_RADIOLOGIC,
144-
PURPURIC_RASH, RADIOLUCENT_BONE_DISEASE, RAPID_BREATHING,
145-
REFUSAL_FEEDOR_DRINK, RUNNY_NOSE,
146-
ORAL_ULCERS, SIDE_PAIN, SORE_THROAT, SPLENOMEGALY, SUNKEN_EYES_FONTANELLE
147-
, SWOLLEN_GLANDS,
148-
THROBOCYTOPENIA, TREMOR, UNEXPLAINED_BLEEDING, EYES_BLEEDING,
149-
INJECTION_SITE_BLEEDING,
150-
BLEEDING_VAGINA, GUMS_BLEEDING, STOMACH_BLEEDING, BLOOD_URINE,
151-
BLOODY_BLACK_STOOL,
152-
SKIN_BRUISING, COUGHING_BLOOD, DIGESTED_BLOOD_VOMIT, RED_BLOOD_VOMIT,
153-
NOSE_BLEEDING,
154-
OTHER_HEMORRHAGIC_SYMPTOMS, OTHER_HEMORRHAGIC_SYMPTOMS_TEXT,
155-
LESIONS, LESIONS_THAT_ITCH, LESIONS_SAME_STATE, LESIONS_SAME_SIZE,
156-
LESIONS_DEEP_PROFOUND,
157-
LESIONS_LOCATIONS_LOC, LESIONS_FACE, LESIONS_LEGS, LESIONS_SOLES_FEET,
158-
LESIONS_PALMS_HANDS, LESIONS_THORAX,
159-
LESIONS_ARMS, LESIONS_GENITALS, LESIONS_ALL_OVER_BODY,
160-
LESIONS_RESEMBLE_IMG1, MONKEYPOX_LESIONS_IMG1,
161-
LESIONS_RESEMBLE_IMG2, MONKEYPOX_LESIONS_IMG2, LESIONS_RESEMBLE_IMG3,
162-
MONKEYPOX_LESIONS_IMG3, LESIONS_RESEMBLE_IMG4, MONKEYPOX_LESIONS_IMG4,
163-
LESIONS_ONSET_DATE, VOMITING, HYDROPHOBIA, OPISTHOTONUS, HYPERACTIVITY,
164-
PARESIS, AGITATION,
165-
ASCENDING_FLACCID_PARALYSIS, ERRATIC_BEHAVIOUR, COMA, LOSS_OF_TASTE,
166-
LOSS_OF_SMELL, WHEEZING, SKIN_ULCERS, INABILITY_TO_WALK,
167-
IN_DRAWING_OF_CHEST_WALL, OXYGEN_SATURATION_LOWER_94,
168-
BREATHLESSNESS, BLUE_LIPS, BLOOD_CIRCULATION_PROBLEMS, PALPITATIONS,
169-
DIZZINESS_STANDING_UP, HIGH_OR_LOW_BLOOD_PRESSURE, URINARY_RETENTION,
170-
OTHER_NON_HEMORRHAGIC_SYMPTOMS, OTHER_NON_HEMORRHAGIC_SYMPTOMS_TEXT) +
171-
locsCss(VSPACE_3, PATIENT_ILL_LOCATION, SYMPTOMS_COMMENTS)
172-
)
173-
) +
133+
createSymptomGroupLayout(SymptomGroup.GENERAL, GENERAL_SIGNS_AND_SYMPTOMS_HEADING_LOC) +
134+
createSymptomGroupLayout(SymptomGroup.RESPIRATORY, RESPIRATORY_SIGNS_AND_SYMPTOMS_HEADING_LOC) +
135+
createSymptomGroupLayout(SymptomGroup.CARDIOVASCULAR, CARDIOVASCULAR_SIGNS_AND_SYMPTOMS_HEADING_LOC) +
136+
createSymptomGroupLayout(SymptomGroup.GASTROINTESTINAL, GASTROINTESTINAL_SIGNS_AND_SYMPTOMS_HEADING_LOC) +
137+
createSymptomGroupLayout(SymptomGroup.URINARY, URINARY_SIGNS_AND_SYMPTOMS_HEADING_LOC) +
138+
createSymptomGroupLayout(SymptomGroup.NERVOUS_SYSTEM, NERVOUS_SYSTEM_SIGNS_AND_SYMPTOMS_HEADING_LOC) +
139+
createSymptomGroupLayout(SymptomGroup.SKIN, SKIN_SIGNS_AND_SYMPTOMS_HEADING_LOC) +
140+
createSymptomGroupLayout(SymptomGroup.OTHER, OTHER_SIGNS_AND_SYMPTOMS_HEADING_LOC) +
141+
locsCss(VSPACE_3, PATIENT_ILL_LOCATION, SYMPTOMS_COMMENTS) +
174142
fluidRowLocsCss(VSPACE_3, ONSET_SYMPTOM, ONSET_DATE) +
175143
loc(COMPLICATIONS_HEADING) +
176144
fluidRow(
@@ -184,6 +152,23 @@ public class SymptomsForm extends AbstractEditForm<SymptomsDto> {
184152
MENINGEAL_SIGNS, SEIZURES, SEPSIS, SHOCK))
185153
);
186154
//@formatter:on
155+
156+
private static String createSymptomGroupLayout(SymptomGroup symptomGroup, String loc) {
157+
158+
final Predicate<java.lang.reflect.Field> groupSymptoms =
159+
field -> field.isAnnotationPresent(SymptomGrouping.class) && field.getAnnotation(SymptomGrouping.class).value() == symptomGroup;
160+
final List<String> symptomLocations = Arrays.stream(SymptomsDto.class.getDeclaredFields())
161+
.filter(groupSymptoms)
162+
.map(field -> field.getName())
163+
.sorted(Comparator.comparing(fieldName -> I18nProperties.getPrefixCaption(I18N_PREFIX, fieldName)))
164+
.collect(Collectors.toList());
165+
166+
symptomGroupMap.put(loc, symptomLocations);
167+
168+
return loc(loc) + fluidRow(
169+
fluidColumn(6, -1, locsCss(VSPACE_3, new ArrayList<>(symptomLocations.subList(0, symptomLocations.size() / 2)))),
170+
fluidColumn(6, 0, locsCss(VSPACE_3, new ArrayList<>(symptomLocations.subList(symptomLocations.size() / 2, symptomLocations.size())))));
171+
}
187172

188173
private final CaseDataDto caze;
189174
private final Disease disease;
@@ -237,13 +222,24 @@ protected void addFields() {
237222
}
238223

239224
// Add fields
240-
Label clinicalMeasurementsHeadingLabel = new Label(I18nProperties.getString(Strings.headingClinicalMeasurements));
241-
clinicalMeasurementsHeadingLabel.addStyleName(H3);
242-
getContent().addComponent(clinicalMeasurementsHeadingLabel, CLINICAL_MEASUREMENTS_HEADING_LOC);
243-
244-
Label signsAndSymptomsHeadingLabel = new Label(I18nProperties.getString(Strings.headingSignsAndSymptoms));
245-
signsAndSymptomsHeadingLabel.addStyleName(H3);
246-
getContent().addComponent(signsAndSymptomsHeadingLabel, SIGNS_AND_SYMPTOMS_HEADING_LOC);
225+
Label clinicalMeasurementsHeadingLabel =
226+
createLabel(I18nProperties.getString(Strings.headingClinicalMeasurements), H3, CLINICAL_MEASUREMENTS_HEADING_LOC);
227+
228+
Label signsAndSymptomsHeadingLabel =
229+
createLabel(I18nProperties.getString(Strings.headingSignsAndSymptoms), H3, SIGNS_AND_SYMPTOMS_HEADING_LOC);
230+
231+
final Label generalSymptomsHeadingLabel = createLabel(SymptomGroup.GENERAL.toString(), H4, GENERAL_SIGNS_AND_SYMPTOMS_HEADING_LOC);
232+
final Label respiratorySymptomsHeadingLabel =
233+
createLabel(SymptomGroup.RESPIRATORY.toString(), H4, RESPIRATORY_SIGNS_AND_SYMPTOMS_HEADING_LOC);
234+
final Label cardiovascularSymptomsHeadingLabel =
235+
createLabel(SymptomGroup.CARDIOVASCULAR.toString(), H4, CARDIOVASCULAR_SIGNS_AND_SYMPTOMS_HEADING_LOC);
236+
final Label gastrointestinalSymptomsHeadingLabel =
237+
createLabel(SymptomGroup.GASTROINTESTINAL.toString(), H4, GASTROINTESTINAL_SIGNS_AND_SYMPTOMS_HEADING_LOC);
238+
final Label urinarySymptomsHeadingLabel = createLabel(SymptomGroup.URINARY.toString(), H4, URINARY_SIGNS_AND_SYMPTOMS_HEADING_LOC);
239+
final Label nervousSystemSymptomsHeadingLabel =
240+
createLabel(SymptomGroup.NERVOUS_SYSTEM.toString(), H4, NERVOUS_SYSTEM_SIGNS_AND_SYMPTOMS_HEADING_LOC);
241+
final Label skinSymptomsHeadingLabel = createLabel(SymptomGroup.SKIN.toString(), H4, SKIN_SIGNS_AND_SYMPTOMS_HEADING_LOC);
242+
final Label otherSymptomsHeadingLabel = createLabel(SymptomGroup.OTHER.toString(), H4, OTHER_SIGNS_AND_SYMPTOMS_HEADING_LOC);
247243

248244
DateField onsetDateField = addField(ONSET_DATE, DateField.class);
249245
ComboBox onsetSymptom = addField(ONSET_SYMPTOM, ComboBox.class);
@@ -316,7 +312,7 @@ protected void addFields() {
316312
CONJUNCTIVITIS,
317313
EYE_PAIN_LIGHT_SENSITIVE,
318314
KOPLIKS_SPOTS,
319-
THROBOCYTOPENIA,
315+
THROBOCYTOPENIA,
320316
OTITIS_MEDIA,
321317
HEARINGLOSS,
322318
DEHYDRATION,
@@ -721,6 +717,14 @@ protected void addFields() {
721717
getFieldGroup().getField(PATIENT_ILL_LOCATION).setVisible(false);
722718
}
723719

720+
symptomGroupMap.forEach((location, strings) -> {
721+
final Component groupLabel = getContent().getComponent(location);
722+
final Optional<String> groupHasVisibleSymptom = strings.stream().filter(s -> getFieldGroup().getField(s).isVisible()).findAny();
723+
if (!groupHasVisibleSymptom.isPresent()) {
724+
groupLabel.setVisible(false);
725+
}
726+
});
727+
724728
if (isEditableAllowed(OTHER_HEMORRHAGIC_SYMPTOMS_TEXT)) {
725729
FieldHelper.setRequiredWhen(
726730
getFieldGroup(),
@@ -791,6 +795,14 @@ protected void addFields() {
791795
getContent().addComponent(buttonsLayout, BUTTONS_LOC);
792796
}
793797

798+
private Label createLabel(String text, String h4, String location) {
799+
final Label label = new Label(text);
800+
label.setId(text);
801+
label.addStyleName(h4);
802+
getContent().addComponent(label, location);
803+
return label;
804+
}
805+
794806
@Override
795807
protected String createHtmlLayout() {
796808
return HTML_LAYOUT;

sormas-ui/src/main/java/de/symeda/sormas/ui/utils/LayoutUtil.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@
1717
*******************************************************************************/
1818
package de.symeda.sormas.ui.utils;
1919

20+
import java.util.Arrays;
21+
import java.util.List;
22+
2023
/**
2124
* Zum einfacheren Erstellen von CustomLayouts.<br/>
2225
* <p>
@@ -46,6 +49,9 @@ public static String loc(String location) {
4649
}
4750

4851
public static String locs(String... locations) {
52+
return locs(Arrays.asList(locations));
53+
}
54+
public static String locs(List<String> locations) {
4955
StringBuilder sb = new StringBuilder();
5056
for (String location : locations) {
5157
sb.append("<div location='").append(location).append("'></div>\n");
@@ -57,6 +63,10 @@ public static String locsCss(String css, String... locations) {
5763
return divCss(css, locs(locations));
5864
}
5965

66+
public static String locsCss(String css, List<String> locations) {
67+
return divCss(css, locs(locations));
68+
}
69+
6070
public static String inlineLocs(String... locations) {
6171
return locsCss("inline-container", locations);
6272
}

0 commit comments

Comments
 (0)