diff --git a/app/build.gradle.kts b/app/build.gradle.kts index ca5df445a52388c9d83cb80c05d09a5edf4ea87e..6c05b572ac319727dd3510f1b9d8c0bedf5c9278 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -103,7 +103,7 @@ dependencies { api ("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3") // POI: excel - implementation ("org.apache.poi:poi:5.0.0") + implementation ("org.apache.poi:poi:5.2.3") implementation ("org.apache.poi:poi-ooxml:5.2.3") //DataBinding diff --git a/app/src/main/java/com/example/nerbos/fragments/transaction/TransactionAdapter.kt b/app/src/main/java/com/example/nerbos/fragments/transaction/TransactionAdapter.kt index 59629187d9c6e7c7d9348b03ba4d46e0b890c170..ed2a20fef4bfa240321c5695349f046bcd3744a3 100644 --- a/app/src/main/java/com/example/nerbos/fragments/transaction/TransactionAdapter.kt +++ b/app/src/main/java/com/example/nerbos/fragments/transaction/TransactionAdapter.kt @@ -2,7 +2,6 @@ package com.example.nerbos.fragments.transaction import android.annotation.SuppressLint import android.graphics.Color -import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -12,12 +11,10 @@ import com.example.nerbos.R import com.example.nerbos.model.Transaction import com.example.nerbos.model.TransactionCategory import com.example.nerbos.service.Utils -import java.time.LocalDate -import java.time.format.DateTimeFormatter -class TransactionAdapter() : RecyclerView.Adapter<TransactionAdapter.TransactionViewHolder>(){ +class TransactionAdapter : RecyclerView.Adapter<TransactionAdapter.TransactionViewHolder>(){ // Create ViewHolder Class - private var transactionList : List<Transaction> = emptyList<Transaction>() + private var transactionList : List<Transaction> = emptyList() var onItemClick: ((Transaction) -> Unit)? = null var onLocationClick: ((String) -> Unit)? = null class TransactionViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView){ @@ -44,10 +41,16 @@ class TransactionAdapter() : RecyclerView.Adapter<TransactionAdapter.Transaction holder.date.text = Utils.formatDate(dateString) holder.location.text = currentItem.location if (currentItem.category == TransactionCategory.INCOME){ - holder.nominal.text = "+ IDR " + currentItem.nominal.toString() + holder.nominal.text = buildString { + append("+ IDR ") + append(currentItem.nominal.toString()) + } holder.nominal.setTextColor(Color.parseColor("#61de70")) //green } else { - holder.nominal.text = "- IDR " + currentItem.nominal.toString() + holder.nominal.text = buildString { + append("- IDR ") + append(currentItem.nominal.toString()) + } holder.nominal.setTextColor(Color.parseColor("#FF474D")) //red } diff --git a/app/src/main/java/com/example/nerbos/fragments/user/UserFragment.kt b/app/src/main/java/com/example/nerbos/fragments/user/UserFragment.kt index fb994fcdffdde0bfb6d671902c97ab098faf3e10..bbc5e1b7e75c37bf20a284073e8872c3c4be92c9 100644 --- a/app/src/main/java/com/example/nerbos/fragments/user/UserFragment.kt +++ b/app/src/main/java/com/example/nerbos/fragments/user/UserFragment.kt @@ -10,12 +10,6 @@ import com.example.nerbos.databinding.FragmentUserBinding import com.example.nerbos.service.AuthCallback import com.example.nerbos.service.Authentication - -/** - * A simple [Fragment] subclass. - * Use the [UserFragment.newInstance] factory method to - * create an instance of this fragment. - */ class UserFragment : Fragment(), AuthCallback { private lateinit var authentication: Authentication diff --git a/app/src/main/java/com/example/nerbos/repository/TransactionRepository.kt b/app/src/main/java/com/example/nerbos/repository/TransactionRepository.kt index e98414fcb27871c393616626711cf0f9c3eaac44..d32f68034634eaf497a055dc774b2bc0332828ed 100644 --- a/app/src/main/java/com/example/nerbos/repository/TransactionRepository.kt +++ b/app/src/main/java/com/example/nerbos/repository/TransactionRepository.kt @@ -1,8 +1,8 @@ package com.example.nerbos.repository import androidx.lifecycle.LiveData -import com.example.nerbos.model.Transaction import com.example.nerbos.data.TransactionDao +import com.example.nerbos.model.Transaction import com.example.nerbos.model.TransactionCategory class TransactionRepository(private val transactionDao: TransactionDao) { diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml index c737e34961527e1308abf444e6b296c546028464..0e2f7acae30887ed87cc5deb1cfc47bc6477702a 100644 --- a/app/src/main/res/layout/activity_login.xml +++ b/app/src/main/res/layout/activity_login.xml @@ -1,13 +1,10 @@ <?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" - xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/primary_bg"> - <!-- add image logo --> - <ImageView android:id="@+id/imageView" android:layout_width="352dp" @@ -17,7 +14,8 @@ app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.5" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toTopOf="parent" /> + app:layout_constraintTop_toTopOf="parent" + android:contentDescription="@string/logo" /> <androidx.cardview.widget.CardView android:id="@+id/loginCard" diff --git a/app/src/main/res/layout/activity_maps.xml b/app/src/main/res/layout/activity_maps.xml index 827f664a41139e37d9f993860a71e7afeac921b6..0b747601e89149335c41b9ace303b1ca02ab6dfa 100644 --- a/app/src/main/res/layout/activity_maps.xml +++ b/app/src/main/res/layout/activity_maps.xml @@ -9,7 +9,7 @@ tools:context=".MapsActivity" > - <fragment + <androidx.fragment.app.FragmentContainerView xmlns:map="http://schemas.android.com/apk/res-auto" android:id="@+id/map" android:name="com.google.android.gms.maps.SupportMapFragment" @@ -42,5 +42,6 @@ android:src="@drawable/ic_back" app:layout_constraintTop_toTopOf="parent" app:layout_constraintStart_toStartOf="parent" - /> -</androidx.constraintlayout.widget.ConstraintLayout> + android:contentDescription="@string/back_button" /> + +</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/add_transaction.xml b/app/src/main/res/layout/add_transaction.xml index 447142c441571cb8d778f56d13415ff98a62d1d3..819700876885041d8decb506e2fcb13beb6307cc 100644 --- a/app/src/main/res/layout/add_transaction.xml +++ b/app/src/main/res/layout/add_transaction.xml @@ -1,7 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" - xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginStart="20dp" @@ -37,7 +36,6 @@ app:layout_constraintHorizontal_bias="0.5" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/addTransactionTitle" /> - /> <EditText android:id="@+id/nameInput" @@ -58,8 +56,8 @@ android:textSize="18sp" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@+id/addTransactionSubTitle" /> - /> + app:layout_constraintTop_toBottomOf="@+id/addTransactionSubTitle" + android:autofillHints="Name Input" /> <RadioGroup @@ -89,8 +87,7 @@ android:textSize="18sp" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@+id/nameInput" - /> + app:layout_constraintTop_toBottomOf="@+id/nameInput" /> <RadioButton android:id="@+id/outcomeInput" @@ -125,8 +122,8 @@ android:background="@drawable/round_corner_input_transaction" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" - - app:layout_constraintTop_toBottomOf="@+id/categoryInput" /> + app:layout_constraintTop_toBottomOf="@+id/categoryInput" + android:autofillHints="Nominal Input" /> <EditText android:id="@+id/locationInput" @@ -147,7 +144,8 @@ android:textColorHint="@color/base_blur" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@+id/nominalInput" /> + app:layout_constraintTop_toBottomOf="@+id/nominalInput" + android:autofillHints="Location Input" /> <Button android:id="@+id/cancelButton" @@ -160,11 +158,9 @@ android:layout_marginBottom="20dp" android:layout_marginStart="20dp" android:background="@drawable/round_corner_button_weak" - app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/locationInput" - app:layout_constraintBottom_toBottomOf="parent" - /> + app:layout_constraintBottom_toBottomOf="parent" /> <Button android:id="@+id/addButton" @@ -179,8 +175,6 @@ android:background="@drawable/round_corner_button_strong" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toBottomOf="@+id/locationInput" - app:layout_constraintBottom_toBottomOf="parent" - /> - + app:layout_constraintBottom_toBottomOf="parent" /> </androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/modify_transaction.xml b/app/src/main/res/layout/modify_transaction.xml index ce837fe98add87038e240bacfb094c3008c94319..677185feb58b1eef42d3ba11aacb66512584ed2c 100644 --- a/app/src/main/res/layout/modify_transaction.xml +++ b/app/src/main/res/layout/modify_transaction.xml @@ -36,7 +36,6 @@ app:layout_constraintHorizontal_bias="0.5" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/addTransactionTitle" /> - /> <EditText android:id="@+id/nameInput" @@ -57,9 +56,8 @@ android:textSize="18sp" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@+id/addTransactionSubTitle" /> - /> - + app:layout_constraintTop_toBottomOf="@+id/addTransactionSubTitle" + android:autofillHints="Name Input" /> <RadioGroup android:id="@+id/categoryInput" @@ -71,8 +69,7 @@ android:orientation="horizontal" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@+id/nameInput" - > + app:layout_constraintTop_toBottomOf="@+id/nameInput" > <RadioButton android:id="@+id/incomeInput" @@ -87,8 +84,7 @@ android:background="@drawable/round_corner_input_category_income" android:textSize="18sp" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@+id/nameInput" - /> + app:layout_constraintTop_toBottomOf="@+id/nameInput" /> <RadioButton android:id="@+id/outcomeInput" @@ -104,8 +100,7 @@ android:text="@string/outcome" android:textSize="18sp" app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintTop_toBottomOf="@+id/nameInput" - /> + app:layout_constraintTop_toBottomOf="@+id/nameInput" /> </RadioGroup> <EditText @@ -127,8 +122,8 @@ android:background="@drawable/round_corner_input_transaction" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" - - app:layout_constraintTop_toBottomOf="@+id/categoryInput" /> + app:layout_constraintTop_toBottomOf="@+id/categoryInput" + android:autofillHints="Nominal Input" /> <EditText android:id="@+id/locationInput" @@ -149,7 +144,8 @@ android:textColorHint="@color/base_blur" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@+id/nominalInput" /> + app:layout_constraintTop_toBottomOf="@+id/nominalInput" + android:autofillHints="Location Input" /> <TextView android:id="@+id/transactionDateDialog" @@ -181,11 +177,9 @@ android:layout_marginBottom="20dp" android:layout_marginStart="20dp" android:background="@drawable/round_corner_input_category_outcome" - app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/transactionDateDialog" - app:layout_constraintBottom_toBottomOf="parent" - /> + app:layout_constraintBottom_toBottomOf="parent" /> <Button android:id="@+id/saveButton" @@ -200,8 +194,6 @@ android:background="@drawable/round_corner_button_strong" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toBottomOf="@+id/transactionDateDialog" - app:layout_constraintBottom_toBottomOf="parent" - /> - + app:layout_constraintBottom_toBottomOf="parent" /> </androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/transaction_item.xml b/app/src/main/res/layout/transaction_item.xml index 8f6041f57ab54782d18a5e8f675d7e4ac056ef9a..a622e44d0e75a1205e64fb00a502f21c654f9c63 100644 --- a/app/src/main/res/layout/transaction_item.xml +++ b/app/src/main/res/layout/transaction_item.xml @@ -17,7 +17,6 @@ android:maxWidth="130dp" android:maxLines="1" android:ellipsize="end" - android:text="Amazon Web Service" android:textColor="@color/white" android:textSize="18sp" android:textStyle="bold" @@ -32,7 +31,6 @@ android:maxWidth="130dp" android:maxLines="1" android:ellipsize="end" - android:text="May 24, 2024" android:textColor="@color/date_text" android:textSize="16sp" android:textStyle="normal" @@ -40,6 +38,7 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/transactionName" /> + <TextView android:id="@+id/transactionLocation" android:layout_width="wrap_content" @@ -47,7 +46,6 @@ android:maxWidth="130dp" android:maxLines="1" android:ellipsize="end" - android:text="SMAN 10 Padang Panjang" android:textColor="@color/white" android:textSize="16sp" android:textStyle="normal" @@ -55,6 +53,7 @@ app:layout_constraintTop_toTopOf="parent" app:drawableStartCompat="@drawable/ic_location" /> + <TextView android:id="@+id/transactionNominal" android:layout_width="0dp" @@ -62,7 +61,6 @@ android:ellipsize="end" android:maxWidth="130dp" android:maxLines="1" - android:text="- IDR 50.000" android:textColor="@color/red" android:textSize="16sp" android:textStyle="normal" @@ -70,4 +68,5 @@ app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toBottomOf="@id/transactionLocation" /> -</androidx.constraintlayout.widget.ConstraintLayout> + +</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index e702056a76d75222618a58d672ef2d14ae8feead..98a6cde54da0a651171a80f1cd7fcdf536b6855f 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -20,7 +20,6 @@ <color name="strong_blue_button">#0DA6C2</color> <color name="weak_blue_button">#800DA6C2</color> <color name="transparent">#00FFFFFF</color> - <color name="purple_200">#0F9D58</color> <color name="purple_500">#0F9D58</color> <color name="purple_700">#0F9D58</color> diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 891f9fa2132678e79ff4dad7c11e5aed1d8996ce..4581d8e0758b7459fcc034c819f0fc3c2a63d1df 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,13 +1,11 @@ <resources> <string name="app_name">NerbOS</string> - <!-- TODO: Remove or change this placeholder text --> <string name="hello_blank_fragment">Hello blank fragment</string> <string name="navbar_transaction">Transactions</string> <string name="navbar_scan">Scan</string> <string name="navbar_statistic">Statistics</string> <string name="navbar_user">User</string> <string name="selected_item_id">selectedItemId</string> - <string name="login_title">Login</string> <string name="login_description">Insert login details</string> <string name="login_email_placeholder">Email</string> @@ -24,20 +22,14 @@ <string name="default_email">13521000@std.stei.itb.ac.id</string> <string name="authorization">Authorization</string> <string name="bearer">Bearer</string> - <string name="preferences">NosPreferences</string> - - <string name="backend_api_login">https://pbd-backend-2024.vercel.app/api/auth/login</string> <string name="backend_api_token">https://pbd-backend-2024.vercel.app/api/auth/token</string> <string name="backend_api_scan">https://pbd-backend-2024.vercel.app/api/bill/upload</string> - <string name="ok">OK</string> <string name="welcome">Welcome!</string> <string name="app_name_full">NerbOS - NOS</string> - <string name="logout_title">Logout</string> - <string name="new_transaction">New Transaction</string> <string name="modify_transaction">Modify Transaction</string> <string name="insert_trans_details">Insert transaction details</string> @@ -71,8 +63,9 @@ <string name="country_code">ID</string> <string name="capture_button">Capture Button</string> <string name="gallery_button">Gallery Button</string> - <string name="email_subject">NerbOS - Transaction Report</string> <string name="email_message">Here is your transaction report</string> + <string name="logo">Logo</string> + <string name="back_button">Back Button</string> </resources> \ No newline at end of file