diff options
Diffstat (limited to 'androidApp/src/main/res')
-rw-r--r-- | androidApp/src/main/res/drawable/icon_down.xml | 10 | ||||
-rw-r--r-- | androidApp/src/main/res/drawable/icon_up.xml | 10 | ||||
-rw-r--r-- | androidApp/src/main/res/layout/unit_details_reports.xml | 413 | ||||
-rw-r--r-- | androidApp/src/main/res/menu/report_period_options.xml | 4 | ||||
-rw-r--r-- | androidApp/src/main/res/values-es-rMX/strings.xml | 6 | ||||
-rw-r--r-- | androidApp/src/main/res/values/dimen.xml | 6 | ||||
-rw-r--r-- | androidApp/src/main/res/values/strings.xml | 6 | ||||
-rw-r--r-- | androidApp/src/main/res/values/styles.xml | 13 |
8 files changed, 313 insertions, 155 deletions
diff --git a/androidApp/src/main/res/drawable/icon_down.xml b/androidApp/src/main/res/drawable/icon_down.xml new file mode 100644 index 0000000..884bee1 --- /dev/null +++ b/androidApp/src/main/res/drawable/icon_down.xml @@ -0,0 +1,10 @@ +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24" + android:tint="?attr/colorControlNormal"> + <path + android:fillColor="@android:color/white" + android:pathData="M7.41,8.59L12,13.17l4.59,-4.58L18,10l-6,6 -6,-6 1.41,-1.41z"/> +</vector> diff --git a/androidApp/src/main/res/drawable/icon_up.xml b/androidApp/src/main/res/drawable/icon_up.xml new file mode 100644 index 0000000..9b15755 --- /dev/null +++ b/androidApp/src/main/res/drawable/icon_up.xml @@ -0,0 +1,10 @@ +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24" + android:tint="?attr/colorControlNormal"> + <path + android:fillColor="@android:color/white" + android:pathData="M7.41,15.41L12,10.83l4.59,4.58L18,14l-6,-6 -6,6z"/> +</vector> diff --git a/androidApp/src/main/res/layout/unit_details_reports.xml b/androidApp/src/main/res/layout/unit_details_reports.xml index 903c2c3..c29e4b0 100644 --- a/androidApp/src/main/res/layout/unit_details_reports.xml +++ b/androidApp/src/main/res/layout/unit_details_reports.xml @@ -1,194 +1,297 @@ <?xml version="1.0" encoding="utf-8"?> -<androidx.constraintlayout.widget.ConstraintLayout +<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" - android:layout_height="match_parent"> - - <androidx.fragment.app.FragmentContainerView - android:id="@+id/reportsMapContainer" - android:layout_width="0dp" - android:layout_height="0dp" - android:layout_marginBottom="@dimen/margin" - app:layout_constraintBottom_toTopOf="@id/periodSection" - app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toTopOf="parent" - android:visibility="gone"/> - - <ScrollView - android:id="@+id/eventsScroll" - android:layout_width="0dp" - android:layout_height="0dp" - android:layout_marginBottom="@dimen/margin" - android:visibility="gone" - app:layout_constraintBottom_toTopOf="@id/periodSection" - app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toTopOf="parent"> - - <HorizontalScrollView - android:layout_width="match_parent" - android:layout_height="wrap_content"> + android:layout_height="match_parent" + xmlns:tools="http://schemas.android.com/tools"> - <TableLayout - android:id="@+id/eventsTable" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:isScrollContainer="true" - android:scrollbars="vertical" - android:stretchColumns="*"> + <!-- Main content --> + <androidx.constraintlayout.widget.ConstraintLayout + android:layout_width="match_parent" + android:layout_height="match_parent"> - <TableRow android:background="@color/colorPrimary"> + <androidx.fragment.app.FragmentContainerView + android:id="@+id/reportsMapContainer" + android:layout_width="0dp" + android:layout_height="0dp" + android:layout_marginBottom="@dimen/margin" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" + android:visibility="gone"/> + + <ScrollView + android:id="@+id/eventsScroll" + android:layout_width="0dp" + android:layout_height="0dp" + android:layout_marginBottom="@dimen/bottom_sheet_peak" + android:visibility="visible" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent"> + + <HorizontalScrollView + android:layout_width="match_parent" + android:layout_height="wrap_content"> - <TextView - android:paddingHorizontal="@dimen/padding" - android:text="@string/table_datetime" - android:textColor="@color/background" - android:padding="@dimen/padding" /> + <TableLayout + android:id="@+id/eventsTable" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:isScrollContainer="true" + android:scrollbars="vertical" + android:stretchColumns="*"> - <TextView - android:paddingHorizontal="@dimen/padding" - android:text="@string/table_event" - android:textColor="@color/background" - android:padding="@dimen/padding" /> + <TableRow android:background="@color/colorPrimary"> - <TextView - android:paddingHorizontal="@dimen/padding" - android:text="@string/table_geofence" - android:textColor="@color/background" - android:padding="@dimen/padding" /> + <TextView + android:paddingHorizontal="@dimen/padding" + android:text="@string/table_datetime" + android:textColor="@color/background" + android:padding="@dimen/padding" /> - <TextView - android:paddingHorizontal="@dimen/padding" - android:text="@string/table_address" - android:textColor="@color/background" - android:padding="@dimen/padding" /> + <TextView + android:paddingHorizontal="@dimen/padding" + android:text="@string/table_event" + android:textColor="@color/background" + android:padding="@dimen/padding" /> - </TableRow> + <TextView + android:paddingHorizontal="@dimen/padding" + android:text="@string/table_geofence" + android:textColor="@color/background" + android:padding="@dimen/padding" /> - </TableLayout> + <TextView + android:paddingHorizontal="@dimen/padding" + android:text="@string/table_address" + android:textColor="@color/background" + android:padding="@dimen/padding" /> - </HorizontalScrollView> + </TableRow> - </ScrollView> + </TableLayout> - <LinearLayout - android:id="@+id/periodSection" + </HorizontalScrollView> + + </ScrollView> + + <include + android:id="@+id/reportLoading" + android:layout_width="0dp" + android:layout_height="0dp" + layout="@layout/loading_indicator" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintBottom_toBottomOf="parent" + android:visibility="gone"/> + + </androidx.constraintlayout.widget.ConstraintLayout> + + <!-- Bottom sheet --> + <com.google.android.material.card.MaterialCardView + android:id="@+id/bottomSheet" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_margin="@dimen/margin" + app:contentPadding="@dimen/card_padding" android:orientation="vertical" - app:layout_constraintBottom_toBottomOf="parent" - app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintStart_toStartOf="parent"> + app:behavior_hideable="false" + app:behavior_peekHeight="@dimen/bottom_sheet_peak" + app:layout_behavior="com.google.android.material.bottomsheet.BottomSheetBehavior" + style="@style/BottomSheetCardStyle"> <LinearLayout + android:id="@+id/periodSection" android:layout_width="match_parent" android:layout_height="wrap_content" - android:orientation="horizontal"> + android:orientation="vertical"> - <TextView - android:layout_width="0dp" - android:layout_height="match_parent" - android:layout_weight="1" - android:gravity="center_vertical" - android:text="@string/period" - android:textColor="@color/colorPrimaryDark" - android:textSize="22sp" /> - - <com.google.android.material.button.MaterialButton - android:id="@+id/periodButton" - android:layout_width="wrap_content" + <androidx.constraintlayout.widget.ConstraintLayout + android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginEnd="@dimen/fields_spacing" - android:text="@string/select_period" - android:textColor="@color/colorPrimaryDark" - app:backgroundTint="@color/darkBackground" /> + android:layout_marginBottom="@dimen/margin" + android:orientation="horizontal"> - </LinearLayout> + <!-- Report type --> + <com.addisonelliott.segmentedbutton.SegmentedButtonGroup + android:id="@+id/reportType" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginEnd="@dimen/fields_spacing" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toStartOf="@id/toggleSheet" + app:borderWidth="1dp" + app:dividerPadding="10dp" + app:dividerWidth="1dp" + app:position="0" + app:radius="30dp" + app:ripple="true" + app:selectedBackground="@color/colorPrimary"> - <com.addisonelliott.segmentedbutton.SegmentedButtonGroup - android:id="@+id/reportType" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_marginTop="@dimen/margin" - app:borderWidth="1dp" - app:dividerPadding="10dp" - app:dividerWidth="1dp" - app:position="0" - app:radius="30dp" - app:ripple="true" - app:selectedBackground="@color/colorPrimary"> - - <com.addisonelliott.segmentedbutton.SegmentedButton - android:layout_width="0dp" - android:layout_height="wrap_content" - android:layout_weight="1" - android:padding="10dp" - app:drawableGravity="top" - app:selectedTextColor="@color/darkBackground" - app:text="@string/positions" - app:textColor="@color/colorPrimaryDark" /> - - <com.addisonelliott.segmentedbutton.SegmentedButton - android:layout_width="0dp" - android:layout_height="wrap_content" - android:layout_weight="1" - android:padding="10dp" - app:drawableGravity="top" - app:selectedTextColor="@color/darkBackground" - app:text="@string/events" - app:textColor="@color/colorPrimaryDark" /> - - <com.addisonelliott.segmentedbutton.SegmentedButton - android:layout_width="0dp" + <com.addisonelliott.segmentedbutton.SegmentedButton + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:padding="10dp" + app:drawableGravity="top" + app:selectedTextColor="@color/darkBackground" + app:text="@string/positions" + app:textColor="@color/colorPrimaryDark" /> + + <com.addisonelliott.segmentedbutton.SegmentedButton + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:padding="10dp" + app:drawableGravity="top" + app:selectedTextColor="@color/darkBackground" + app:text="@string/events" + app:textColor="@color/colorPrimaryDark" /> + + <com.addisonelliott.segmentedbutton.SegmentedButton + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:padding="10dp" + app:drawableGravity="top" + app:selectedTextColor="@color/darkBackground" + app:text="@string/stops" + app:textColor="@color/colorPrimaryDark" /> + + </com.addisonelliott.segmentedbutton.SegmentedButtonGroup> + + <ImageButton + android:id="@+id/toggleSheet" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:src="@drawable/icon_down" + android:contentDescription="@string/shared_slide_down" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintBottom_toBottomOf="parent" + android:background="?selectableItemBackgroundBorderless" /> + + </androidx.constraintlayout.widget.ConstraintLayout> + + <!-- Report period --> + <LinearLayout + android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_weight="1" - android:padding="10dp" - app:drawableGravity="top" - app:selectedTextColor="@color/darkBackground" - app:text="@string/stops" - app:textColor="@color/colorPrimaryDark" /> + android:orientation="horizontal"> - </com.addisonelliott.segmentedbutton.SegmentedButtonGroup> + <TextView + android:layout_width="0dp" + android:layout_height="match_parent" + android:layout_weight="1" + android:gravity="center_vertical" + android:text="@string/period" + android:textColor="@color/colorPrimaryDark" + android:textSize="22sp" /> - <LinearLayout - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:orientation="horizontal" - android:layout_marginTop="@dimen/margin"> + <com.google.android.material.button.MaterialButton + android:id="@+id/periodButton" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@string/select_period" + android:textColor="@color/colorPrimaryDark" + app:backgroundTint="@color/darkBackground" + style="@style/Widget.AppCompat.Button.Small" /> + </LinearLayout> - <com.google.android.material.button.MaterialButton - android:id="@+id/exportButton" + <!-- Custom period ranges --> + <LinearLayout + android:id="@+id/rangeLayout" android:layout_width="match_parent" android:layout_height="wrap_content" - android:text="@string/export_report" - android:layout_weight="1" - android:layout_marginEnd="@dimen/fields_spacing" - style="?android:buttonStyleSmall"/> + android:gravity="center_vertical" + android:weightSum="2" + android:orientation="horizontal"> + + <com.google.android.material.textfield.TextInputLayout + android:id="@+id/fromInputLayout" + style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginEnd="@dimen/fields_spacing" + android:hint="@string/period_from" + android:layout_weight="1"> + + <com.google.android.material.textfield.TextInputEditText + android:id="@+id/fromEditText" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:textSize="@dimen/datetime_field" + android:inputType="none" + android:clickable="false" + android:focusable="false" + tools:text="2022-04-11 00:00" + /> - <com.google.android.material.button.MaterialButton - android:id="@+id/shareButton" + </com.google.android.material.textfield.TextInputLayout> + + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@string/period_separator" /> + + <com.google.android.material.textfield.TextInputLayout + android:id="@+id/toInputLayout" + style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:hint="@string/period_to" + android:layout_marginStart="@dimen/fields_spacing" + android:layout_weight="1"> + + <com.google.android.material.textfield.TextInputEditText + android:id="@+id/toEditText" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:textSize="@dimen/datetime_field" + android:inputType="none" + android:clickable="false" + android:focusable="false" + tools:text="2022-04-11 00:39" + /> + + </com.google.android.material.textfield.TextInputLayout> + + </LinearLayout> + + <!-- Action buttons --> + <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_weight="1" - android:text="@string/share_report" - style="?android:buttonStyleSmall"/> + android:orientation="horizontal" + android:layout_marginTop="@dimen/margin"> - </LinearLayout> + <com.google.android.material.button.MaterialButton + android:id="@+id/exportButton" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="@string/export_report" + android:layout_weight="1" + android:layout_marginEnd="@dimen/fields_spacing" + style="?android:buttonStyleSmall"/> + + <com.google.android.material.button.MaterialButton + android:id="@+id/shareButton" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_weight="1" + android:text="@string/share_report" + style="?android:buttonStyleSmall"/> - </LinearLayout> + </LinearLayout> + + </LinearLayout> - <include - android:id="@+id/reportLoading" - android:layout_width="0dp" - android:layout_height="0dp" - layout="@layout/loading_indicator" - app:layout_constraintTop_toTopOf="parent" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintBottom_toTopOf="@id/periodSection" - android:visibility="gone"/> + </com.google.android.material.card.MaterialCardView> -</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file +</androidx.coordinatorlayout.widget.CoordinatorLayout>
\ No newline at end of file diff --git a/androidApp/src/main/res/menu/report_period_options.xml b/androidApp/src/main/res/menu/report_period_options.xml index 60fb58c..a8fdbad 100644 --- a/androidApp/src/main/res/menu/report_period_options.xml +++ b/androidApp/src/main/res/menu/report_period_options.xml @@ -30,4 +30,8 @@ android:id="@+id/optionLast30" android:title="@string/period_last_30" /> + <item + android:id="@+id/optionCustom" + android:title="@string/period_custom" /> + </menu>
\ No newline at end of file diff --git a/androidApp/src/main/res/values-es-rMX/strings.xml b/androidApp/src/main/res/values-es-rMX/strings.xml index eeb7149..26e0cad 100644 --- a/androidApp/src/main/res/values-es-rMX/strings.xml +++ b/androidApp/src/main/res/values-es-rMX/strings.xml @@ -6,6 +6,8 @@ <string name="shared_close">Cerrar</string> <string name="shared_send">Enviar</string> <string name="shared_loading">Cargando</string> + <string name="shared_slide_up">Deslizar hacia arriba</string> + <string name="shared_slide_down">Deslizar hacia abajo</string> <!-- LoginActivity --> <string name="login_username">Nombre de usuario</string> @@ -113,6 +115,10 @@ <string name="period_last_7">Últimos 7d</string> <string name="period_this_month">Mes</string> <string name="period_last_30">Últimos 30d</string> + <string name="period_custom">Personalizado</string> + <string name="period_separator">—</string> + <string name="period_from">Inicio</string> + <string name="period_to">Fin</string> <string name="table_event">Evento</string> <string name="table_datetime">Fecha y hora</string> diff --git a/androidApp/src/main/res/values/dimen.xml b/androidApp/src/main/res/values/dimen.xml index 92d5242..8c8c5f5 100644 --- a/androidApp/src/main/res/values/dimen.xml +++ b/androidApp/src/main/res/values/dimen.xml @@ -35,6 +35,12 @@ <dimen name="report_label_width">10dp</dimen> <dimen name="attribution_text_size">11sp</dimen> + <!-- Reports bottom sheet --> + <dimen name="bottom_sheet_peak">80dp</dimen> + + <!-- Reports datetime field --> + <dimen name="datetime_field">12sp</dimen> + <!-- User Information --> <dimen name="fields_spacing">8dp</dimen> <dimen name="fields_large_spacing">16dp</dimen> diff --git a/androidApp/src/main/res/values/strings.xml b/androidApp/src/main/res/values/strings.xml index 865368e..c349cd8 100644 --- a/androidApp/src/main/res/values/strings.xml +++ b/androidApp/src/main/res/values/strings.xml @@ -20,6 +20,8 @@ <string name="shared_close">Close</string> <string name="shared_send">Send</string> <string name="shared_loading">Loading</string> + <string name="shared_slide_up">Slide up</string> + <string name="shared_slide_down">Slide down</string> <!-- LoginActivity --> <string name="login_username">Username</string> @@ -127,6 +129,10 @@ <string name="period_last_7">Last 7d</string> <string name="period_this_month">Month</string> <string name="period_last_30">Last 30d</string> + <string name="period_custom">Custom</string> + <string name="period_separator">—</string> + <string name="period_from">Start</string> + <string name="period_to">End</string> <string name="table_event">Event</string> <string name="table_datetime">Datetime</string> diff --git a/androidApp/src/main/res/values/styles.xml b/androidApp/src/main/res/values/styles.xml index dc40450..982d4dc 100644 --- a/androidApp/src/main/res/values/styles.xml +++ b/androidApp/src/main/res/values/styles.xml @@ -12,4 +12,17 @@ <item name="android:textStyle">bold</item> </style> + <style name="BottomSheetCardStyle" parent="Widget.MaterialComponents.CardView"> + <item name="shapeAppearanceOverlay">@style/ShapeAppearanceOverlay_BottomSheetCard</item> + <item name="cardElevation">@dimen/card_elevation</item> + </style> + + <style name="ShapeAppearanceOverlay_BottomSheetCard"> + <item name="cornerFamily">rounded</item> + <item name="cornerSizeTopRight">@dimen/card_border_radius</item> + <item name="cornerSizeTopLeft">@dimen/card_border_radius</item> + <item name="cornerSizeBottomRight">0dp</item> + <item name="cornerSizeBottomLeft">0dp</item> + </style> + </resources>
\ No newline at end of file |