Commit 65519f28 authored by Ahmad Abi Mulya's avatar Ahmad Abi Mulya
parents 9e2c6217 066f3960
...@@ -91,6 +91,7 @@ public class MainActivity extends AppCompatActivity { ...@@ -91,6 +91,7 @@ public class MainActivity extends AppCompatActivity {
switch (item.getItemId()) { switch (item.getItemId()) {
case R.id.item_one: case R.id.item_one:
// item one clicked // item one clicked
finish();
startActivity(new Intent(MainActivity.this, ProductActivity.class)); startActivity(new Intent(MainActivity.this, ProductActivity.class));
break; break;
case R.id.item_two: case R.id.item_two:
...@@ -141,9 +142,11 @@ public class MainActivity extends AppCompatActivity { ...@@ -141,9 +142,11 @@ public class MainActivity extends AppCompatActivity {
category.addAll(set); category.addAll(set);
categoryAdapter.setCategories(category); categoryAdapter.setCategories(category);
categoryAdapter.setListener(c -> viewModel.filter(c)); categoryAdapter.setListener(c -> viewModel.filter(c));
binding.btnAllCategory.setOnClickListener(view -> viewModel.filter(""));
adapter.setListener(new ProductAdapter.ProductListener() { adapter.setListener(new ProductAdapter.ProductListener() {
@Override @Override
public void onUpdate(Product product) { public void onUpdate(Product product) {
finish();
startActivity(new Intent(MainActivity.this, ProductActivity.class) startActivity(new Intent(MainActivity.this, ProductActivity.class)
.putExtra(DATA_PRODUCT, product)); .putExtra(DATA_PRODUCT, product));
} }
......
...@@ -8,6 +8,8 @@ import androidx.recyclerview.widget.LinearLayoutManager; ...@@ -8,6 +8,8 @@ import androidx.recyclerview.widget.LinearLayoutManager;
import android.content.Intent; import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.view.View;
import android.widget.PopupMenu;
import com.example.yourcashiertest.R; import com.example.yourcashiertest.R;
import com.example.yourcashiertest.adapters.OrderAdapter; import com.example.yourcashiertest.adapters.OrderAdapter;
...@@ -29,9 +31,29 @@ public class OrderActivity extends AppCompatActivity { ...@@ -29,9 +31,29 @@ public class OrderActivity extends AppCompatActivity {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
binding = DataBindingUtil.setContentView(this, R.layout.activity_order); binding = DataBindingUtil.setContentView(this, R.layout.activity_order);
adapter = new OrderAdapter();
viewModel = new ViewModelProvider(this).get(TransaksiViewModel.class); viewModel = new ViewModelProvider(this).get(TransaksiViewModel.class);
binding.btnFilter.setOnClickListener(view -> {
PopupMenu popupMenu = new PopupMenu(getApplicationContext(), binding.btnFilter);
popupMenu.inflate(R.menu.menu_filter_transaction);
popupMenu.setOnMenuItemClickListener(menuItem -> {
switch (menuItem.getItemId()){
case R.id.all:
viewModel.filter("");
break;
case R.id.pending:
viewModel.filter("Pending");
break;
case R.id.success:
viewModel.filter("Success");
break;
}
return false;
});
popupMenu.show();
});
adapter = new OrderAdapter();
binding.rvListOrder.setLayoutManager(new LinearLayoutManager(this)); binding.rvListOrder.setLayoutManager(new LinearLayoutManager(this));
binding.rvListOrder.setAdapter(adapter); binding.rvListOrder.setAdapter(adapter);
viewModel.getList().observe(this, transaksi -> adapter.setTransaksiList(transaksi)); viewModel.getList().observe(this, transaksi -> adapter.setTransaksiList(transaksi));
......
...@@ -82,6 +82,7 @@ public class ProductActivity extends AppCompatActivity{ ...@@ -82,6 +82,7 @@ public class ProductActivity extends AppCompatActivity{
}catch (Exception e){ }catch (Exception e){
e.printStackTrace(); e.printStackTrace();
} }
startActivity(new Intent(ProductActivity.this, MainActivity.class));
}); });
binding.setViewModel(viewModel); binding.setViewModel(viewModel);
} }
...@@ -173,6 +174,14 @@ public class ProductActivity extends AppCompatActivity{ ...@@ -173,6 +174,14 @@ public class ProductActivity extends AppCompatActivity{
onBackPressed(); onBackPressed();
return super.onSupportNavigateUp(); return super.onSupportNavigateUp();
} }
@Override
public void onBackPressed() {
super.onBackPressed();
startActivity(new Intent(ProductActivity.this, MainActivity.class));
finish();
}
@Override @Override
protected void onDestroy() { protected void onDestroy() {
super.onDestroy(); super.onDestroy();
......
...@@ -21,6 +21,9 @@ public interface TransaksiDao { ...@@ -21,6 +21,9 @@ public interface TransaksiDao {
@Query("SELECT * FROM Transaksi ORDER BY orderId ASC") @Query("SELECT * FROM Transaksi ORDER BY orderId ASC")
LiveData<List<Transaksi>> getAll(); LiveData<List<Transaksi>> getAll();
@Query("SELECT * FROM Transaksi WHERE status LIKE :query ORDER BY orderId ASC")
LiveData<List<Transaksi>> getFilteredTransaksi(String query);
@Insert(onConflict = OnConflictStrategy.IGNORE) @Insert(onConflict = OnConflictStrategy.IGNORE)
void insertTransaksi(Transaksi transaksi); void insertTransaksi(Transaksi transaksi);
......
...@@ -36,4 +36,8 @@ public class TransaksiRepository { ...@@ -36,4 +36,8 @@ public class TransaksiRepository {
public void delete(Transaksi transaksi){ public void delete(Transaksi transaksi){
LocalDatabase.databaseWriteExecutor.execute(() -> dao.deleteTransaksi(transaksi)); LocalDatabase.databaseWriteExecutor.execute(() -> dao.deleteTransaksi(transaksi));
} }
public LiveData<List<Transaksi>> filterTransaksi(String s){
return dao.getFilteredTransaksi(s);
}
} }
...@@ -2,10 +2,13 @@ package com.example.yourcashiertest.viewmodels; ...@@ -2,10 +2,13 @@ package com.example.yourcashiertest.viewmodels;
import android.app.Application; import android.app.Application;
import android.text.TextUtils;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.lifecycle.AndroidViewModel; import androidx.lifecycle.AndroidViewModel;
import androidx.lifecycle.LiveData; import androidx.lifecycle.LiveData;
import androidx.lifecycle.MutableLiveData;
import androidx.lifecycle.Transformations;
import com.example.yourcashiertest.entities.Transaksi; import com.example.yourcashiertest.entities.Transaksi;
import com.example.yourcashiertest.repositories.TransaksiRepository; import com.example.yourcashiertest.repositories.TransaksiRepository;
...@@ -14,12 +17,13 @@ import java.util.List; ...@@ -14,12 +17,13 @@ import java.util.List;
public class TransaksiViewModel extends AndroidViewModel { public class TransaksiViewModel extends AndroidViewModel {
private LiveData<List<Transaksi>> list; private LiveData<List<Transaksi>> list;
private MutableLiveData<String> query = new MutableLiveData<>("%");
private TransaksiRepository repository; private TransaksiRepository repository;
public TransaksiViewModel(@NonNull Application application) { public TransaksiViewModel(@NonNull Application application) {
super(application); super(application);
repository = new TransaksiRepository(application); repository = new TransaksiRepository(application);
list = repository.getAllTransaksi(); list = Transformations.switchMap(query, s -> repository.filterTransaksi(s));
} }
public LiveData<List<Transaksi>> getList() { public LiveData<List<Transaksi>> getList() {
...@@ -38,4 +42,9 @@ public class TransaksiViewModel extends AndroidViewModel { ...@@ -38,4 +42,9 @@ public class TransaksiViewModel extends AndroidViewModel {
public void deleteTransaksi(Transaksi transaksi){ public void deleteTransaksi(Transaksi transaksi){
repository.delete(transaksi); repository.delete(transaksi);
} }
public void filter(String s) {
String query = TextUtils.isEmpty(s) ? "%" : "%" + s + "%";
this.query.postValue(query);
}
} }
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="18"
android:viewportHeight="18">
<path
android:fillColor="#FF000000"
android:pathData="M0,14L0,16L6,16L6,14L0,14ZM0,2L0,4L10,4L10,2L0,2ZM10,18L10,16L18,16L18,14L10,14L10,12L8,12L8,18L10,18ZM4,6L4,8L0,8L0,10L4,10L4,12L6,12L6,6L4,6ZM18,10L18,8L8,8L8,10L18,10ZM12,6L14,6L14,4L18,4L18,2L14,2L14,0L12,0L12,6Z"
android:strokeWidth="1"
android:strokeColor="#00000000" />
</vector>
<?xml version="1.0" encoding="utf-8"?>
<font-family xmlns:app="http://schemas.android.com/apk/res-auto"
app:fontProviderAuthority="com.google.android.gms.fonts"
app:fontProviderPackage="com.google.android.gms"
app:fontProviderQuery="Wellfleet"
app:fontProviderCerts="@array/com_google_android_gms_fonts_certs">
</font-family>
...@@ -148,6 +148,7 @@ ...@@ -148,6 +148,7 @@
android:paddingHorizontal="15dp"> android:paddingHorizontal="15dp">
<TextView <TextView
android:id="@+id/btnAllCategory"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_centerInParent="true" android:layout_centerInParent="true"
......
...@@ -17,51 +17,36 @@ ...@@ -17,51 +17,36 @@
android:id="@+id/tvListOrder" android:id="@+id/tvListOrder"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:fontFamily="@font/wellfleet"
android:gravity="top" android:gravity="top"
android:layout_marginBottom="4dp" android:text="Transaction List"
android:text="TRANSACTION LIST"
android:textAppearance="@style/payment" android:textAppearance="@style/payment"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.105" />
<com.google.android.material.button.MaterialButton
android:id="@+id/btnPending"
android:layout_width="160dp"
android:layout_height="wrap_content"
android:text="PENDING"
android:textSize="10dp"
android:backgroundTint="@color/colorPending"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvListOrder" app:layout_constraintTop_toTopOf="parent" />
app:layout_constraintBottom_toTopOf="@id/rvListOrder"
tools:layout_editor_absoluteX="16dp"
tools:layout_editor_absoluteY="654dp" />
<com.google.android.material.button.MaterialButton <ImageButton
android:id="@+id/btnSuccess" android:id="@+id/btnFilter"
android:layout_width="160dp" android:layout_width="25dp"
android:layout_height="wrap_content" android:layout_height="25dp"
android:layout_marginEnd="4dp" android:layout_marginEnd="10dp"
android:text="SUCCESS" android:background="@drawable/shr_filter"
android:textSize="10dp" app:layout_constraintBottom_toBottomOf="@+id/tvListOrder"
app:layout_constraintBottom_toTopOf="@id/rvListOrder"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvListOrder" app:layout_constraintHorizontal_bias="1.0"
app:layout_constraintVertical_bias="0.0" /> app:layout_constraintStart_toEndOf="@+id/tvListOrder"
app:layout_constraintTop_toTopOf="@+id/tvListOrder" />
<androidx.recyclerview.widget.RecyclerView <androidx.recyclerview.widget.RecyclerView
android:id="@+id/rvListOrder" android:id="@+id/rvListOrder"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="0dp" android:layout_height="0dp"
android:padding="@dimen/space_small" android:padding="@dimen/space_small"
android:layout_marginTop="10dp"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/btnPending" app:layout_constraintTop_toBottomOf="@id/tvListOrder"
tools:listitem="@layout/item_order" /> tools:listitem="@layout/item_order" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
</layout> </layout>
\ No newline at end of file
...@@ -21,6 +21,7 @@ ...@@ -21,6 +21,7 @@
<com.google.android.material.card.MaterialCardView <com.google.android.material.card.MaterialCardView
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
app:cardElevation="3dp"
android:layout_margin="5dp"> android:layout_margin="5dp">
<androidx.constraintlayout.widget.ConstraintLayout <androidx.constraintlayout.widget.ConstraintLayout
...@@ -34,8 +35,6 @@ ...@@ -34,8 +35,6 @@
android:id="@+id/tvOrderNumber" android:id="@+id/tvOrderNumber"
android:layout_width="136dp" android:layout_width="136dp"
android:layout_height="41dp" android:layout_height="41dp"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginStart="4dp" android:layout_marginStart="4dp"
android:layout_marginTop="4dp" android:layout_marginTop="4dp"
android:text="Order Number : " android:text="Order Number : "
...@@ -48,25 +47,20 @@ ...@@ -48,25 +47,20 @@
android:id="@+id/tvOrderId" android:id="@+id/tvOrderId"
android:layout_width="250dp" android:layout_width="250dp"
android:layout_height="41dp" android:layout_height="41dp"
android:text="@{transaction.orderId + ``}"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginStart="4dp" android:layout_marginStart="4dp"
android:layout_marginTop="4dp" android:text="@{transaction.orderId + ``}"
android:textAppearance="@style/some_id" android:textAppearance="@style/some_id"
app:layout_constraintBottom_toBottomOf="@+id/tvOrderNumber"
app:layout_constraintStart_toEndOf="@id/tvOrderNumber" app:layout_constraintStart_toEndOf="@id/tvOrderNumber"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="@+id/tvOrderNumber" />
tools:layout_editor_absoluteX="169dp" />
<TextView <TextView
android:id="@+id/tvTotal" android:id="@+id/tvTotal"
android:layout_width="136dp" android:layout_width="136dp"
android:layout_height="41dp" android:layout_height="41dp"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginStart="4dp" android:layout_marginStart="4dp"
android:layout_marginTop="4dp" android:layout_marginTop="4dp"
android:text="Total : " android:text="Total : "
android:textAppearance="@style/burger_medi" android:textAppearance="@style/burger_medi"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvOrderNumber" /> app:layout_constraintTop_toBottomOf="@id/tvOrderNumber" />
...@@ -75,29 +69,26 @@ ...@@ -75,29 +69,26 @@
android:id="@+id/tvAmount" android:id="@+id/tvAmount"
android:layout_width="250dp" android:layout_width="250dp"
android:layout_height="41dp" android:layout_height="41dp"
android:text="@{amount}"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginStart="4dp" android:layout_marginStart="4dp"
android:layout_marginTop="4dp" android:text="@{amount}"
android:textAppearance="@style/some_id" android:textAppearance="@style/some_id"
app:layout_constraintBottom_toBottomOf="@+id/tvTotal"
app:layout_constraintStart_toEndOf="@id/tvTotal" app:layout_constraintStart_toEndOf="@id/tvTotal"
app:layout_constraintTop_toBottomOf="@id/tvOrderId" app:layout_constraintTop_toBottomOf="@+id/tvOrderNumber" />
tools:layout_editor_absoluteX="169dp"/>
<TextView <TextView
android:id="@+id/tvStatus" android:id="@+id/tvStatus"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="41dp" android:layout_height="41dp"
android:layout_marginStart="4dp" android:layout_marginStart="4dp"
android:layout_marginTop="4dp"
android:gravity="center" android:gravity="center"
android:textColor="@{visibility ? @color/colorPending : @color/colorPrimary}"
android:text="@{transaction.status}" android:text="@{transaction.status}"
android:textColor="@{visibility ? @color/colorPending : @color/colorPrimary}"
android:textStyle="bold" android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/btnContinue" app:layout_constraintEnd_toStartOf="@+id/btnContinue"
app:layout_constraintTop_toBottomOf="@+id/tvTotal" /> app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/btnContinue" />
<com.google.android.material.button.MaterialButton <com.google.android.material.button.MaterialButton
android:id="@+id/btnContinue" android:id="@+id/btnContinue"
......
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/all"
android:title="All"/>
<item
android:id="@+id/pending"
android:title="Pending"/>
<item
android:id="@+id/success"
android:title="Success"/>
</menu>
\ No newline at end of file
...@@ -4,5 +4,6 @@ ...@@ -4,5 +4,6 @@
<item>@font/allerta</item> <item>@font/allerta</item>
<item>@font/carter_one</item> <item>@font/carter_one</item>
<item>@font/roboto_bold</item> <item>@font/roboto_bold</item>
<item>@font/wellfleet</item>
</array> </array>
</resources> </resources>
...@@ -66,7 +66,7 @@ ...@@ -66,7 +66,7 @@
<style name="payment"> <style name="payment">
<item name="android:textSize"> <item name="android:textSize">
27sp 25sp
</item> </item>
<item name="android:textColor"> <item name="android:textColor">
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment