Commit 65519f28 authored by Ahmad Abi Mulya's avatar Ahmad Abi Mulya
parents 9e2c6217 066f3960
......@@ -91,6 +91,7 @@ public class MainActivity extends AppCompatActivity {
switch (item.getItemId()) {
case R.id.item_one:
// item one clicked
finish();
startActivity(new Intent(MainActivity.this, ProductActivity.class));
break;
case R.id.item_two:
......@@ -141,9 +142,11 @@ public class MainActivity extends AppCompatActivity {
category.addAll(set);
categoryAdapter.setCategories(category);
categoryAdapter.setListener(c -> viewModel.filter(c));
binding.btnAllCategory.setOnClickListener(view -> viewModel.filter(""));
adapter.setListener(new ProductAdapter.ProductListener() {
@Override
public void onUpdate(Product product) {
finish();
startActivity(new Intent(MainActivity.this, ProductActivity.class)
.putExtra(DATA_PRODUCT, product));
}
......
......@@ -8,6 +8,8 @@ import androidx.recyclerview.widget.LinearLayoutManager;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.PopupMenu;
import com.example.yourcashiertest.R;
import com.example.yourcashiertest.adapters.OrderAdapter;
......@@ -29,9 +31,29 @@ public class OrderActivity extends AppCompatActivity {
super.onCreate(savedInstanceState);
binding = DataBindingUtil.setContentView(this, R.layout.activity_order);
adapter = new OrderAdapter();
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.setAdapter(adapter);
viewModel.getList().observe(this, transaksi -> adapter.setTransaksiList(transaksi));
......
......@@ -82,6 +82,7 @@ public class ProductActivity extends AppCompatActivity{
}catch (Exception e){
e.printStackTrace();
}
startActivity(new Intent(ProductActivity.this, MainActivity.class));
});
binding.setViewModel(viewModel);
}
......@@ -173,6 +174,14 @@ public class ProductActivity extends AppCompatActivity{
onBackPressed();
return super.onSupportNavigateUp();
}
@Override
public void onBackPressed() {
super.onBackPressed();
startActivity(new Intent(ProductActivity.this, MainActivity.class));
finish();
}
@Override
protected void onDestroy() {
super.onDestroy();
......
......@@ -21,6 +21,9 @@ public interface TransaksiDao {
@Query("SELECT * FROM Transaksi ORDER BY orderId ASC")
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)
void insertTransaksi(Transaksi transaksi);
......
......@@ -36,4 +36,8 @@ public class TransaksiRepository {
public void delete(Transaksi 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;
import android.app.Application;
import android.text.TextUtils;
import androidx.annotation.NonNull;
import androidx.lifecycle.AndroidViewModel;
import androidx.lifecycle.LiveData;
import androidx.lifecycle.MutableLiveData;
import androidx.lifecycle.Transformations;
import com.example.yourcashiertest.entities.Transaksi;
import com.example.yourcashiertest.repositories.TransaksiRepository;
......@@ -14,12 +17,13 @@ import java.util.List;
public class TransaksiViewModel extends AndroidViewModel {
private LiveData<List<Transaksi>> list;
private MutableLiveData<String> query = new MutableLiveData<>("%");
private TransaksiRepository repository;
public TransaksiViewModel(@NonNull Application application) {
super(application);
repository = new TransaksiRepository(application);
list = repository.getAllTransaksi();
list = Transformations.switchMap(query, s -> repository.filterTransaksi(s));
}
public LiveData<List<Transaksi>> getList() {
......@@ -38,4 +42,9 @@ public class TransaksiViewModel extends AndroidViewModel {
public void deleteTransaksi(Transaksi 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 @@
android:paddingHorizontal="15dp">
<TextView
android:id="@+id/btnAllCategory"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
......
......@@ -17,51 +17,36 @@
android:id="@+id/tvListOrder"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="@font/wellfleet"
android:gravity="top"
android:layout_marginBottom="4dp"
android:text="TRANSACTION LIST"
android:text="Transaction List"
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_constraintTop_toBottomOf="@id/tvListOrder"
app:layout_constraintBottom_toTopOf="@id/rvListOrder"
tools:layout_editor_absoluteX="16dp"
tools:layout_editor_absoluteY="654dp" />
app:layout_constraintTop_toTopOf="parent" />
<com.google.android.material.button.MaterialButton
android:id="@+id/btnSuccess"
android:layout_width="160dp"
android:layout_height="wrap_content"
android:layout_marginEnd="4dp"
android:text="SUCCESS"
android:textSize="10dp"
app:layout_constraintBottom_toTopOf="@id/rvListOrder"
<ImageButton
android:id="@+id/btnFilter"
android:layout_width="25dp"
android:layout_height="25dp"
android:layout_marginEnd="10dp"
android:background="@drawable/shr_filter"
app:layout_constraintBottom_toBottomOf="@+id/tvListOrder"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvListOrder"
app:layout_constraintVertical_bias="0.0" />
app:layout_constraintHorizontal_bias="1.0"
app:layout_constraintStart_toEndOf="@+id/tvListOrder"
app:layout_constraintTop_toTopOf="@+id/tvListOrder" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rvListOrder"
android:layout_width="match_parent"
android:layout_height="0dp"
android:padding="@dimen/space_small"
android:layout_marginTop="10dp"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/btnPending"
app:layout_constraintTop_toBottomOf="@id/tvListOrder"
tools:listitem="@layout/item_order" />
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>
\ No newline at end of file
......@@ -21,6 +21,7 @@
<com.google.android.material.card.MaterialCardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:cardElevation="3dp"
android:layout_margin="5dp">
<androidx.constraintlayout.widget.ConstraintLayout
......@@ -34,8 +35,6 @@
android:id="@+id/tvOrderNumber"
android:layout_width="136dp"
android:layout_height="41dp"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginStart="4dp"
android:layout_marginTop="4dp"
android:text="Order Number : "
......@@ -48,25 +47,20 @@
android:id="@+id/tvOrderId"
android:layout_width="250dp"
android:layout_height="41dp"
android:text="@{transaction.orderId + ``}"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginStart="4dp"
android:layout_marginTop="4dp"
android:text="@{transaction.orderId + ``}"
android:textAppearance="@style/some_id"
app:layout_constraintBottom_toBottomOf="@+id/tvOrderNumber"
app:layout_constraintStart_toEndOf="@id/tvOrderNumber"
app:layout_constraintTop_toTopOf="parent"
tools:layout_editor_absoluteX="169dp" />
app:layout_constraintTop_toTopOf="@+id/tvOrderNumber" />
<TextView
android:id="@+id/tvTotal"
android:layout_width="136dp"
android:layout_height="41dp"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginStart="4dp"
android:layout_marginTop="4dp"
android:text="Total : "
android:text="Total : "
android:textAppearance="@style/burger_medi"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvOrderNumber" />
......@@ -75,29 +69,26 @@
android:id="@+id/tvAmount"
android:layout_width="250dp"
android:layout_height="41dp"
android:text="@{amount}"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginStart="4dp"
android:layout_marginTop="4dp"
android:text="@{amount}"
android:textAppearance="@style/some_id"
app:layout_constraintBottom_toBottomOf="@+id/tvTotal"
app:layout_constraintStart_toEndOf="@id/tvTotal"
app:layout_constraintTop_toBottomOf="@id/tvOrderId"
tools:layout_editor_absoluteX="169dp"/>
app:layout_constraintTop_toBottomOf="@+id/tvOrderNumber" />
<TextView
android:id="@+id/tvStatus"
android:layout_width="0dp"
android:layout_height="41dp"
android:layout_marginStart="4dp"
android:layout_marginTop="4dp"
android:gravity="center"
android:textColor="@{visibility ? @color/colorPending : @color/colorPrimary}"
android:text="@{transaction.status}"
android:textColor="@{visibility ? @color/colorPending : @color/colorPrimary}"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
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
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 @@
<item>@font/allerta</item>
<item>@font/carter_one</item>
<item>@font/roboto_bold</item>
<item>@font/wellfleet</item>
</array>
</resources>
......@@ -66,7 +66,7 @@
<style name="payment">
<item name="android:textSize">
27sp
25sp
</item>
<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