diff --git a/src/androidTest/java/de/dennisguse/opentracks/settings/PreferencesOpenHelperTest.java b/src/androidTest/java/de/dennisguse/opentracks/settings/PreferencesOpenHelperTest.java index e19372093..8d3c9bee0 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/settings/PreferencesOpenHelperTest.java +++ b/src/androidTest/java/de/dennisguse/opentracks/settings/PreferencesOpenHelperTest.java @@ -17,7 +17,7 @@ import org.junit.runner.RunWith; import java.util.List; import de.dennisguse.opentracks.R; -import de.dennisguse.opentracks.content.data.Layout; +import de.dennisguse.opentracks.ui.customRecordingLayout.Layout; @RunWith(AndroidJUnit4.class) public class PreferencesOpenHelperTest { diff --git a/src/androidTest/java/de/dennisguse/opentracks/settings/PreferencesUtilsTest.java b/src/androidTest/java/de/dennisguse/opentracks/settings/PreferencesUtilsTest.java index 256deae3b..b2cf9498f 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/settings/PreferencesUtilsTest.java +++ b/src/androidTest/java/de/dennisguse/opentracks/settings/PreferencesUtilsTest.java @@ -20,9 +20,9 @@ import java.util.ArrayList; import java.util.List; import de.dennisguse.opentracks.R; -import de.dennisguse.opentracks.content.data.DataField; -import de.dennisguse.opentracks.content.data.Layout; import de.dennisguse.opentracks.io.file.TrackFileFormat; +import de.dennisguse.opentracks.ui.customRecordingLayout.DataField; +import de.dennisguse.opentracks.ui.customRecordingLayout.Layout; @RunWith(AndroidJUnit4.class) public class PreferencesUtilsTest { diff --git a/src/androidTest/java/de/dennisguse/opentracks/util/CsvLayoutUtilsTest.java b/src/androidTest/java/de/dennisguse/opentracks/ui/customRecordingLayout/CsvLayoutUtilsTest.java similarity index 98% rename from src/androidTest/java/de/dennisguse/opentracks/util/CsvLayoutUtilsTest.java rename to src/androidTest/java/de/dennisguse/opentracks/ui/customRecordingLayout/CsvLayoutUtilsTest.java index e09c9c134..1ee67fbdc 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/util/CsvLayoutUtilsTest.java +++ b/src/androidTest/java/de/dennisguse/opentracks/ui/customRecordingLayout/CsvLayoutUtilsTest.java @@ -1,4 +1,4 @@ -package de.dennisguse.opentracks.util; +package de.dennisguse.opentracks.ui.customRecordingLayout; import androidx.test.ext.junit.runners.AndroidJUnit4; diff --git a/src/androidTest/java/de/dennisguse/opentracks/EspressoCustomLayoutTest.java b/src/androidTest/java/de/dennisguse/opentracks/ui/customRecordingLayout/EspressoCustomLayoutTest.java similarity index 93% rename from src/androidTest/java/de/dennisguse/opentracks/EspressoCustomLayoutTest.java rename to src/androidTest/java/de/dennisguse/opentracks/ui/customRecordingLayout/EspressoCustomLayoutTest.java index 671ae51cd..b55bd46f3 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/EspressoCustomLayoutTest.java +++ b/src/androidTest/java/de/dennisguse/opentracks/ui/customRecordingLayout/EspressoCustomLayoutTest.java @@ -1,4 +1,4 @@ -package de.dennisguse.opentracks; +package de.dennisguse.opentracks.ui.customRecordingLayout; import static androidx.test.espresso.Espresso.onView; @@ -20,6 +20,7 @@ import androidx.test.espresso.ViewAction; import androidx.test.espresso.ViewAssertion; import androidx.test.espresso.ViewInteraction; import androidx.test.espresso.action.MotionEvents; +import androidx.test.espresso.matcher.ViewMatchers; import androidx.test.ext.junit.rules.ActivityScenarioRule; import androidx.test.ext.junit.runners.AndroidJUnit4; import androidx.test.filters.LargeTest; @@ -32,8 +33,8 @@ import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; -import de.dennisguse.opentracks.content.data.DataField; -import de.dennisguse.opentracks.content.data.Layout; +import de.dennisguse.opentracks.R; +import de.dennisguse.opentracks.TrackListActivity; import de.dennisguse.opentracks.settings.PreferencesUtils; @LargeTest @@ -49,7 +50,7 @@ public class EspressoCustomLayoutTest { @Test public void customLayoutTest() { // TrackListActivity: start recording - ViewInteraction trackControllerRecordButton = onView(withId(R.id.controller_record)); + ViewInteraction trackControllerRecordButton = onView(ViewMatchers.withId(R.id.controller_record)); trackControllerRecordButton.perform(click()); // Get custom layout preferences and check all data fields are showed. diff --git a/src/androidTest/java/de/dennisguse/opentracks/content/data/LayoutTest.java b/src/androidTest/java/de/dennisguse/opentracks/ui/customRecordingLayout/LayoutTest.java similarity index 99% rename from src/androidTest/java/de/dennisguse/opentracks/content/data/LayoutTest.java rename to src/androidTest/java/de/dennisguse/opentracks/ui/customRecordingLayout/LayoutTest.java index 7b5521a35..fcb0d5d63 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/content/data/LayoutTest.java +++ b/src/androidTest/java/de/dennisguse/opentracks/ui/customRecordingLayout/LayoutTest.java @@ -1,4 +1,4 @@ -package de.dennisguse.opentracks.content.data; +package de.dennisguse.opentracks.ui.customRecordingLayout; import android.content.Context; import android.content.res.Resources; diff --git a/src/androidTest/java/de/dennisguse/opentracks/util/StatisticsUtilsTest.java b/src/androidTest/java/de/dennisguse/opentracks/util/StatisticsUtilsTest.java index b7dd74e38..d9a26e53c 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/util/StatisticsUtilsTest.java +++ b/src/androidTest/java/de/dennisguse/opentracks/util/StatisticsUtilsTest.java @@ -11,8 +11,8 @@ import org.junit.Test; import org.junit.runner.RunWith; import de.dennisguse.opentracks.R; -import de.dennisguse.opentracks.content.data.DataField; -import de.dennisguse.opentracks.content.data.Layout; +import de.dennisguse.opentracks.ui.customRecordingLayout.DataField; +import de.dennisguse.opentracks.ui.customRecordingLayout.Layout; @RunWith(AndroidJUnit4.class) public class StatisticsUtilsTest extends TestCase { diff --git a/src/androidTest/java/de/dennisguse/opentracks/viewmodels/StatisticDataBuilderTest.java b/src/androidTest/java/de/dennisguse/opentracks/viewmodels/StatisticDataBuilderTest.java index d36e6126d..ae66ed979 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/viewmodels/StatisticDataBuilderTest.java +++ b/src/androidTest/java/de/dennisguse/opentracks/viewmodels/StatisticDataBuilderTest.java @@ -1,5 +1,7 @@ package de.dennisguse.opentracks.viewmodels; +import static org.mockito.Mockito.when; + import android.content.Context; import androidx.test.core.app.ApplicationProvider; @@ -16,13 +18,11 @@ import java.util.List; import de.dennisguse.opentracks.R; import de.dennisguse.opentracks.content.data.Distance; -import de.dennisguse.opentracks.content.data.Layout; import de.dennisguse.opentracks.content.data.Track; import de.dennisguse.opentracks.services.TrackRecordingService; import de.dennisguse.opentracks.stats.SensorStatistics; import de.dennisguse.opentracks.stats.TrackStatistics; - -import static org.mockito.Mockito.when; +import de.dennisguse.opentracks.ui.customRecordingLayout.Layout; @RunWith(MockitoJUnitRunner.class) public class StatisticDataBuilderTest extends TestCase { diff --git a/src/main/java/de/dennisguse/opentracks/adapters/StatisticsAdapter.java b/src/main/java/de/dennisguse/opentracks/adapters/StatisticsAdapter.java index 978447e74..87268e380 100644 --- a/src/main/java/de/dennisguse/opentracks/adapters/StatisticsAdapter.java +++ b/src/main/java/de/dennisguse/opentracks/adapters/StatisticsAdapter.java @@ -14,7 +14,7 @@ import java.util.ArrayList; import java.util.List; import de.dennisguse.opentracks.R; -import de.dennisguse.opentracks.content.data.CustomLayoutFieldType; +import de.dennisguse.opentracks.ui.customRecordingLayout.CustomLayoutFieldType; import de.dennisguse.opentracks.viewmodels.StatisticData; public class StatisticsAdapter extends RecyclerView.Adapter { diff --git a/src/main/java/de/dennisguse/opentracks/fragments/StatisticsRecordingFragment.java b/src/main/java/de/dennisguse/opentracks/fragments/StatisticsRecordingFragment.java index 66701e89c..80960143f 100644 --- a/src/main/java/de/dennisguse/opentracks/fragments/StatisticsRecordingFragment.java +++ b/src/main/java/de/dennisguse/opentracks/fragments/StatisticsRecordingFragment.java @@ -19,13 +19,13 @@ import java.util.List; import de.dennisguse.opentracks.R; import de.dennisguse.opentracks.adapters.StatisticsAdapter; -import de.dennisguse.opentracks.content.data.Layout; import de.dennisguse.opentracks.content.data.Track; import de.dennisguse.opentracks.content.data.TrackPoint; import de.dennisguse.opentracks.databinding.StatisticsRecordingBinding; import de.dennisguse.opentracks.services.TrackRecordingService; import de.dennisguse.opentracks.services.TrackRecordingServiceConnection; import de.dennisguse.opentracks.settings.PreferencesUtils; +import de.dennisguse.opentracks.ui.customRecordingLayout.Layout; import de.dennisguse.opentracks.viewmodels.StatisticData; import de.dennisguse.opentracks.viewmodels.StatisticsDataModel; diff --git a/src/main/java/de/dennisguse/opentracks/settings/PreferencesOpenHelper.java b/src/main/java/de/dennisguse/opentracks/settings/PreferencesOpenHelper.java index e95f1bd45..08afe297c 100644 --- a/src/main/java/de/dennisguse/opentracks/settings/PreferencesOpenHelper.java +++ b/src/main/java/de/dennisguse/opentracks/settings/PreferencesOpenHelper.java @@ -5,7 +5,7 @@ import java.util.Collections; import java.util.stream.Collectors; import de.dennisguse.opentracks.R; -import de.dennisguse.opentracks.util.CsvLayoutUtils; +import de.dennisguse.opentracks.ui.customRecordingLayout.CsvLayoutUtils; class PreferencesOpenHelper { diff --git a/src/main/java/de/dennisguse/opentracks/settings/PreferencesUtils.java b/src/main/java/de/dennisguse/opentracks/settings/PreferencesUtils.java index f5932d679..709d56f80 100644 --- a/src/main/java/de/dennisguse/opentracks/settings/PreferencesUtils.java +++ b/src/main/java/de/dennisguse/opentracks/settings/PreferencesUtils.java @@ -40,11 +40,11 @@ import java.util.stream.Stream; import de.dennisguse.opentracks.R; import de.dennisguse.opentracks.content.data.Distance; -import de.dennisguse.opentracks.content.data.Layout; import de.dennisguse.opentracks.content.data.Speed; import de.dennisguse.opentracks.content.data.UnitConversions; import de.dennisguse.opentracks.io.file.TrackFileFormat; -import de.dennisguse.opentracks.util.CsvLayoutUtils; +import de.dennisguse.opentracks.ui.customRecordingLayout.CsvLayoutUtils; +import de.dennisguse.opentracks.ui.customRecordingLayout.Layout; import de.dennisguse.opentracks.util.TrackIconUtils; /** diff --git a/src/main/java/de/dennisguse/opentracks/settings/SettingsCustomLayoutEditActivity.java b/src/main/java/de/dennisguse/opentracks/settings/SettingsCustomLayoutEditActivity.java index 829228049..0cb78d5f8 100644 --- a/src/main/java/de/dennisguse/opentracks/settings/SettingsCustomLayoutEditActivity.java +++ b/src/main/java/de/dennisguse/opentracks/settings/SettingsCustomLayoutEditActivity.java @@ -18,10 +18,10 @@ import java.util.stream.IntStream; import de.dennisguse.opentracks.AbstractActivity; import de.dennisguse.opentracks.R; -import de.dennisguse.opentracks.adapters.SettingsCustomLayoutEditAdapter; -import de.dennisguse.opentracks.content.data.Layout; -import de.dennisguse.opentracks.content.data.DataField; import de.dennisguse.opentracks.databinding.ActivitySettingsCustomLayoutBinding; +import de.dennisguse.opentracks.ui.customRecordingLayout.DataField; +import de.dennisguse.opentracks.ui.customRecordingLayout.Layout; +import de.dennisguse.opentracks.ui.customRecordingLayout.SettingsCustomLayoutEditAdapter; import de.dennisguse.opentracks.util.StatisticsUtils; public class SettingsCustomLayoutEditActivity extends AbstractActivity implements SettingsCustomLayoutEditAdapter.SettingsCustomLayoutItemClickListener { diff --git a/src/main/java/de/dennisguse/opentracks/settings/SettingsCustomLayoutListActivity.java b/src/main/java/de/dennisguse/opentracks/settings/SettingsCustomLayoutListActivity.java index 55975054a..4cbf8eb8d 100644 --- a/src/main/java/de/dennisguse/opentracks/settings/SettingsCustomLayoutListActivity.java +++ b/src/main/java/de/dennisguse/opentracks/settings/SettingsCustomLayoutListActivity.java @@ -22,9 +22,9 @@ import com.google.android.material.textfield.TextInputLayout; import de.dennisguse.opentracks.AbstractActivity; import de.dennisguse.opentracks.R; -import de.dennisguse.opentracks.adapters.SettingsCustomLayoutListAdapter; -import de.dennisguse.opentracks.content.data.Layout; import de.dennisguse.opentracks.databinding.ActivitySettingsCustomLayoutListBinding; +import de.dennisguse.opentracks.ui.customRecordingLayout.Layout; +import de.dennisguse.opentracks.ui.customRecordingLayout.SettingsCustomLayoutListAdapter; import de.dennisguse.opentracks.util.RecyclerViewSwipeDeleteCallback; public class SettingsCustomLayoutListActivity extends AbstractActivity implements SettingsCustomLayoutListAdapter.SettingsCustomLayoutProfileClickListener { diff --git a/src/main/java/de/dennisguse/opentracks/util/CsvLayoutUtils.java b/src/main/java/de/dennisguse/opentracks/ui/customRecordingLayout/CsvLayoutUtils.java similarity index 97% rename from src/main/java/de/dennisguse/opentracks/util/CsvLayoutUtils.java rename to src/main/java/de/dennisguse/opentracks/ui/customRecordingLayout/CsvLayoutUtils.java index fecba1ded..68aec15ce 100644 --- a/src/main/java/de/dennisguse/opentracks/util/CsvLayoutUtils.java +++ b/src/main/java/de/dennisguse/opentracks/ui/customRecordingLayout/CsvLayoutUtils.java @@ -1,4 +1,4 @@ -package de.dennisguse.opentracks.util; +package de.dennisguse.opentracks.ui.customRecordingLayout; import androidx.annotation.Nullable; diff --git a/src/main/java/de/dennisguse/opentracks/content/data/CustomLayoutFieldType.java b/src/main/java/de/dennisguse/opentracks/ui/customRecordingLayout/CustomLayoutFieldType.java similarity index 79% rename from src/main/java/de/dennisguse/opentracks/content/data/CustomLayoutFieldType.java rename to src/main/java/de/dennisguse/opentracks/ui/customRecordingLayout/CustomLayoutFieldType.java index 596e69237..6ce0d694c 100644 --- a/src/main/java/de/dennisguse/opentracks/content/data/CustomLayoutFieldType.java +++ b/src/main/java/de/dennisguse/opentracks/ui/customRecordingLayout/CustomLayoutFieldType.java @@ -1,4 +1,4 @@ -package de.dennisguse.opentracks.content.data; +package de.dennisguse.opentracks.ui.customRecordingLayout; public enum CustomLayoutFieldType { GENERIC(1), diff --git a/src/main/java/de/dennisguse/opentracks/content/data/DataField.java b/src/main/java/de/dennisguse/opentracks/ui/customRecordingLayout/DataField.java similarity index 98% rename from src/main/java/de/dennisguse/opentracks/content/data/DataField.java rename to src/main/java/de/dennisguse/opentracks/ui/customRecordingLayout/DataField.java index 2b351afdc..512721a38 100644 --- a/src/main/java/de/dennisguse/opentracks/content/data/DataField.java +++ b/src/main/java/de/dennisguse/opentracks/ui/customRecordingLayout/DataField.java @@ -1,4 +1,4 @@ -package de.dennisguse.opentracks.content.data; +package de.dennisguse.opentracks.ui.customRecordingLayout; import android.content.Context; import android.content.res.Resources; @@ -6,7 +6,6 @@ import android.os.Parcel; import android.os.Parcelable; import de.dennisguse.opentracks.R; -import de.dennisguse.opentracks.util.CsvLayoutUtils; public class DataField implements Parcelable { public static final String YES_VALUE = "1"; diff --git a/src/main/java/de/dennisguse/opentracks/content/data/Layout.java b/src/main/java/de/dennisguse/opentracks/ui/customRecordingLayout/Layout.java similarity index 97% rename from src/main/java/de/dennisguse/opentracks/content/data/Layout.java rename to src/main/java/de/dennisguse/opentracks/ui/customRecordingLayout/Layout.java index c3cb1f56a..ecd3ddeb9 100644 --- a/src/main/java/de/dennisguse/opentracks/content/data/Layout.java +++ b/src/main/java/de/dennisguse/opentracks/ui/customRecordingLayout/Layout.java @@ -1,4 +1,4 @@ -package de.dennisguse.opentracks.content.data; +package de.dennisguse.opentracks.ui.customRecordingLayout; import android.content.res.Resources; import android.os.Parcel; @@ -13,7 +13,6 @@ import java.util.stream.Collectors; import de.dennisguse.opentracks.R; import de.dennisguse.opentracks.settings.PreferencesUtils; -import de.dennisguse.opentracks.util.CsvLayoutUtils; public class Layout implements Parcelable { private static final String TAG = Layout.class.getSimpleName(); diff --git a/src/main/java/de/dennisguse/opentracks/adapters/SettingsCustomLayoutEditAdapter.java b/src/main/java/de/dennisguse/opentracks/ui/customRecordingLayout/SettingsCustomLayoutEditAdapter.java similarity index 96% rename from src/main/java/de/dennisguse/opentracks/adapters/SettingsCustomLayoutEditAdapter.java rename to src/main/java/de/dennisguse/opentracks/ui/customRecordingLayout/SettingsCustomLayoutEditAdapter.java index 68a1a8527..3bb4b2bea 100644 --- a/src/main/java/de/dennisguse/opentracks/adapters/SettingsCustomLayoutEditAdapter.java +++ b/src/main/java/de/dennisguse/opentracks/ui/customRecordingLayout/SettingsCustomLayoutEditAdapter.java @@ -1,4 +1,4 @@ -package de.dennisguse.opentracks.adapters; +package de.dennisguse.opentracks.ui.customRecordingLayout; import android.content.Context; import android.view.LayoutInflater; @@ -14,8 +14,6 @@ import androidx.recyclerview.widget.RecyclerView; import java.util.Optional; import de.dennisguse.opentracks.R; -import de.dennisguse.opentracks.content.data.DataField; -import de.dennisguse.opentracks.content.data.Layout; import de.dennisguse.opentracks.util.StatisticsUtils; public class SettingsCustomLayoutEditAdapter extends RecyclerView.Adapter { diff --git a/src/main/java/de/dennisguse/opentracks/adapters/SettingsCustomLayoutListAdapter.java b/src/main/java/de/dennisguse/opentracks/ui/customRecordingLayout/SettingsCustomLayoutListAdapter.java similarity index 97% rename from src/main/java/de/dennisguse/opentracks/adapters/SettingsCustomLayoutListAdapter.java rename to src/main/java/de/dennisguse/opentracks/ui/customRecordingLayout/SettingsCustomLayoutListAdapter.java index 0f3d9dff0..c3ea86901 100644 --- a/src/main/java/de/dennisguse/opentracks/adapters/SettingsCustomLayoutListAdapter.java +++ b/src/main/java/de/dennisguse/opentracks/ui/customRecordingLayout/SettingsCustomLayoutListAdapter.java @@ -1,4 +1,4 @@ -package de.dennisguse.opentracks.adapters; +package de.dennisguse.opentracks.ui.customRecordingLayout; import android.content.Context; import android.view.LayoutInflater; @@ -13,7 +13,6 @@ import java.util.List; import java.util.Optional; import de.dennisguse.opentracks.R; -import de.dennisguse.opentracks.content.data.Layout; import de.dennisguse.opentracks.settings.PreferencesUtils; public class SettingsCustomLayoutListAdapter extends RecyclerView.Adapter { diff --git a/src/main/java/de/dennisguse/opentracks/util/StatisticsUtils.java b/src/main/java/de/dennisguse/opentracks/util/StatisticsUtils.java index a22dcb8f2..5f841db6e 100644 --- a/src/main/java/de/dennisguse/opentracks/util/StatisticsUtils.java +++ b/src/main/java/de/dennisguse/opentracks/util/StatisticsUtils.java @@ -7,8 +7,8 @@ import androidx.annotation.NonNull; import java.util.stream.Collectors; import de.dennisguse.opentracks.R; -import de.dennisguse.opentracks.content.data.Layout; import de.dennisguse.opentracks.settings.PreferencesUtils; +import de.dennisguse.opentracks.ui.customRecordingLayout.Layout; public class StatisticsUtils { diff --git a/src/main/java/de/dennisguse/opentracks/viewmodels/StatisticData.java b/src/main/java/de/dennisguse/opentracks/viewmodels/StatisticData.java index db703d26b..8d929df1c 100644 --- a/src/main/java/de/dennisguse/opentracks/viewmodels/StatisticData.java +++ b/src/main/java/de/dennisguse/opentracks/viewmodels/StatisticData.java @@ -4,7 +4,7 @@ import android.util.Pair; import androidx.annotation.NonNull; -import de.dennisguse.opentracks.content.data.DataField; +import de.dennisguse.opentracks.ui.customRecordingLayout.DataField; public class StatisticData { private final DataField dataField; diff --git a/src/main/java/de/dennisguse/opentracks/viewmodels/StatisticDataBuilder.java b/src/main/java/de/dennisguse/opentracks/viewmodels/StatisticDataBuilder.java index d5ebedc53..49c64ef49 100644 --- a/src/main/java/de/dennisguse/opentracks/viewmodels/StatisticDataBuilder.java +++ b/src/main/java/de/dennisguse/opentracks/viewmodels/StatisticDataBuilder.java @@ -11,14 +11,14 @@ import java.util.Objects; import java.util.stream.Collectors; import de.dennisguse.opentracks.R; -import de.dennisguse.opentracks.content.data.DataField; -import de.dennisguse.opentracks.content.data.Layout; import de.dennisguse.opentracks.content.data.Speed; import de.dennisguse.opentracks.content.data.TrackPoint; import de.dennisguse.opentracks.content.sensor.SensorDataSet; import de.dennisguse.opentracks.services.TrackRecordingService; import de.dennisguse.opentracks.stats.SensorStatistics; import de.dennisguse.opentracks.stats.TrackStatistics; +import de.dennisguse.opentracks.ui.customRecordingLayout.DataField; +import de.dennisguse.opentracks.ui.customRecordingLayout.Layout; import de.dennisguse.opentracks.util.StringUtils; public class StatisticDataBuilder { diff --git a/src/main/java/de/dennisguse/opentracks/viewmodels/StatisticsDataModel.java b/src/main/java/de/dennisguse/opentracks/viewmodels/StatisticsDataModel.java index e6ebde83e..4b6bb9df5 100644 --- a/src/main/java/de/dennisguse/opentracks/viewmodels/StatisticsDataModel.java +++ b/src/main/java/de/dennisguse/opentracks/viewmodels/StatisticsDataModel.java @@ -8,8 +8,8 @@ import androidx.lifecycle.MutableLiveData; import java.util.List; -import de.dennisguse.opentracks.content.data.Layout; import de.dennisguse.opentracks.services.TrackRecordingService; +import de.dennisguse.opentracks.ui.customRecordingLayout.Layout; public class StatisticsDataModel extends AndroidViewModel {