complete order page

This commit is contained in:
Gilbert Kimutai 2019-04-25 06:15:39 +03:00
parent ceda450bb8
commit 1ec0747e26
7 changed files with 264 additions and 39 deletions

View File

@ -4,10 +4,13 @@ import android.content.Context
import android.content.Intent import android.content.Intent
import android.support.v7.widget.RecyclerView import android.support.v7.widget.RecyclerView
import android.text.Html import android.text.Html
import android.text.SpannableString
import android.view.View import android.view.View
import android.widget.TextView import android.widget.TextView
import me.gilo.wc.R import me.gilo.wc.R
import me.gilo.wc.ui.product.ShopActivity import me.gilo.wc.ui.product.ShopActivity
import me.gilo.wc.utils.DateUtils
import me.gilo.wc.utils.StringFormatter
import me.gilo.woodroid.models.Category import me.gilo.woodroid.models.Category
import me.gilo.woodroid.models.Order import me.gilo.woodroid.models.Order
@ -16,7 +19,28 @@ class OrderViewHolder(val context: Context, itemView: View) :
fun renderView(order: Order) { fun renderView(order: Order) {
val tvTitle = itemView.findViewById<TextView>(R.id.tvTitle) val tvTitle = itemView.findViewById<TextView>(R.id.tvTitle)
val tvDescription = itemView.findViewById<TextView>(R.id.tvDescription)
val tvPrice = itemView.findViewById<TextView>(R.id.tvPrice)
val tvStatus = itemView.findViewById<TextView>(R.id.tvStatus)
val tvDate = itemView.findViewById<TextView>(R.id.tvDate)
tvTitle.text = "#" + order.orderNumber tvTitle.text = "#" + order.orderNumber
tvStatus.text = order.status
tvDate.text = DateUtils.getDateString_shortAndSmart(order.getDateCreated())
tvPrice.text = SpannableString("Ksh${order.total}")
var description = ""
for (lineItem in order.lineItems){
description += lineItem.name + "(" + lineItem.quantity + "), "
}
tvDescription.text = description
} }

View File

@ -2,21 +2,23 @@ package me.gilo.wc.ui
import android.arch.lifecycle.ViewModel import android.arch.lifecycle.ViewModel
import android.content.Context import android.content.Context
import android.content.Intent
import android.os.Bundle import android.os.Bundle
import android.support.design.widget.Snackbar import android.os.PersistableBundle
import android.support.v7.app.AppCompatActivity import android.view.Menu
import android.view.MenuItem
import android.view.View
import android.widget.FrameLayout
import android.widget.TextView
import android.widget.Toast import android.widget.Toast
import io.github.inflationx.viewpump.ViewPumpContextWrapper import io.github.inflationx.viewpump.ViewPumpContextWrapper
import me.gilo.wc.R import me.gilo.wc.R
import kotlinx.android.synthetic.main.activity_basic_customer_details.*
import me.gilo.raison.ui.user.onboarding.SignInActivity
import me.gilo.wc.common.BaseActivity import me.gilo.wc.common.BaseActivity
import me.gilo.wc.common.Status
import me.gilo.wc.ui.product.CartActivity
import me.gilo.wc.ui.state.ProgressDialogFragment import me.gilo.wc.ui.state.ProgressDialogFragment
import me.gilo.wc.viewmodels.CustomerViewModel import me.gilo.wc.viewmodels.CartViewModel
import me.gilo.wc.viewmodels.UserViewModel import me.gilo.wc.viewmodels.ProductViewModel
import java.util.regex.Matcher
import java.util.regex.Pattern
abstract class WooDroidActivity<T : ViewModel> : BaseActivity() { abstract class WooDroidActivity<T : ViewModel> : BaseActivity() {
@ -26,6 +28,13 @@ abstract class WooDroidActivity<T : ViewModel> : BaseActivity() {
override fun attachBaseContext(newBase: Context) { override fun attachBaseContext(newBase: Context) {
super.attachBaseContext(ViewPumpContextWrapper.wrap(newBase)) super.attachBaseContext(ViewPumpContextWrapper.wrap(newBase))
}
override fun onResume() {
super.onResume()
cart()
} }
fun showLoading() { fun showLoading() {
@ -47,4 +56,71 @@ abstract class WooDroidActivity<T : ViewModel> : BaseActivity() {
Toast.makeText(baseContext, text, Toast.LENGTH_LONG).show() Toast.makeText(baseContext, text, Toast.LENGTH_LONG).show()
} }
var tvCartCounter : TextView? = null
override fun onCreateOptionsMenu(menu: Menu): Boolean {
menuInflater.inflate(R.menu.product, menu)
val item = menu.findItem(me.gilo.wc.R.id.menu_cart)
val rootView = item.actionView as FrameLayout
tvCartCounter = rootView.findViewById<TextView>(R.id.tvCart_counter)
rootView.setOnClickListener{startActivity(Intent(baseContext, CartActivity::class.java))}
return true
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
return when (item.itemId) {
R.id.menu_cart -> {
true
}
else -> super.onOptionsItemSelected(item)
}
}
open fun cart() {
var viewModel = getViewModel(CartViewModel::class.java)
viewModel.cart().observe(this, android.arch.lifecycle.Observer { response ->
when (response!!.status()) {
Status.LOADING -> {
}
Status.SUCCESS -> {
for (cartItem in response.data()){
}
if ( response.data().size == 0 && tvCartCounter != null){
tvCartCounter?.visibility = View.GONE
}else{
tvCartCounter?.visibility = View.VISIBLE
tvCartCounter?.text = response.data().size.toString()
}
}
Status.ERROR -> {
}
Status.EMPTY -> {
if ( response.data().size == 0 && tvCartCounter != null){
tvCartCounter?.visibility = View.GONE
}else{
tvCartCounter?.visibility = View.VISIBLE
tvCartCounter?.text = response.data().size.toString()
}
}
}
})
}
} }

View File

@ -1,19 +1,20 @@
package me.gilo.wc.ui.home package me.gilo.wc.ui.home
import android.content.Context
import android.os.Bundle import android.os.Bundle
import android.support.design.widget.BottomNavigationView import android.support.design.widget.BottomNavigationView
import android.support.v4.app.Fragment import android.support.v4.app.Fragment
import io.github.inflationx.viewpump.ViewPumpContextWrapper import android.view.View
import kotlinx.android.synthetic.main.activity_home.* import kotlinx.android.synthetic.main.activity_home.*
import me.gilo.wc.R import me.gilo.wc.R
import me.gilo.wc.common.BaseActivity import me.gilo.wc.common.Status
import me.gilo.wc.models.CartLineItem
import me.gilo.wc.ui.WooDroidActivity
import me.gilo.wc.viewmodels.CartViewModel
import me.gilo.wc.viewmodels.ProductViewModel
import me.gilo.woodroid.models.CartItem
class HomeActivity : BaseActivity() { class HomeActivity : WooDroidActivity<CartViewModel>() {
override lateinit var viewModel: CartViewModel
override fun attachBaseContext(newBase: Context) {
super.attachBaseContext(ViewPumpContextWrapper.wrap(newBase))
}
private val mOnNavigationItemSelectedListener = BottomNavigationView.OnNavigationItemSelectedListener { item -> private val mOnNavigationItemSelectedListener = BottomNavigationView.OnNavigationItemSelectedListener { item ->
@ -42,6 +43,8 @@ class HomeActivity : BaseActivity() {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
setContentView(R.layout.activity_home) setContentView(R.layout.activity_home)
setSupportActionBar(toolbar)
navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener) navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener)
val transaction = supportFragmentManager.beginTransaction() val transaction = supportFragmentManager.beginTransaction()

View File

@ -25,10 +25,6 @@ class MyOrdersActivity : WooDroidActivity<OrderViewModel>() {
lateinit var adapter: OrderAdapter lateinit var adapter: OrderAdapter
override fun attachBaseContext(newBase: Context) {
super.attachBaseContext(ViewPumpContextWrapper.wrap(newBase))
}
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
setContentView(R.layout.activity_my_orders) setContentView(R.layout.activity_my_orders)

View File

@ -73,7 +73,7 @@ class CartActivity : WooDroidActivity<CartViewModel>() {
} }
private fun cart() { override fun cart() {
viewModel.cart().observe(this, android.arch.lifecycle.Observer { response -> viewModel.cart().observe(this, android.arch.lifecycle.Observer { response ->
when (response!!.status()) { when (response!!.status()) {
Status.LOADING -> { Status.LOADING -> {

View File

@ -1,29 +1,142 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <LinearLayout
xmlns:tools="http://schemas.android.com/tools" xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" xmlns:tools="http://schemas.android.com/tools"
android:layout_height="wrap_content" android:layout_width="match_parent"
android:orientation="vertical" android:layout_height="wrap_content"
tools:ignore="MissingPrefix"> android:background="#ffffff"
android:orientation="vertical"
tools:ignore="MissingPrefix"
android:layout_marginTop="16dp"
>
<TextView <LinearLayout
android:id="@+id/tvTitle" android:layout_width="match_parent"
fontPath="@string/font_regular"
android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_margin="16dp" android:gravity="top"
android:gravity="left" android:orientation="horizontal"
android:text="Hey"
android:textColor="@color/colorPrimary" >
android:textSize="16sp"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:orientation="vertical">
<TextView
android:id="@+id/tvTitle"
fontPath="@string/font_medium"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="left"
android:text="Title"
android:textColor="@color/text"
android:textSize="16sp"
/>
<TextView
android:id="@+id/tvPrice"
fontPath="@string/font_medium"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="0dp"
android:layout_marginBottom="0dp"
android:gravity="left"
android:text="$20.00"
android:layout_marginTop="4dp"
android:layout_gravity="left"
android:textColor="@color/colorPrimary"
android:textSize="14sp"/>
</LinearLayout>
</LinearLayout>
<TextView
android:id="@+id/tvDescription"
fontPath="@string/font_regular"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:layout_marginLeft="16dp"
android:gravity="left"
android:maxLines="2"
android:lineSpacingMultiplier="1.2"
android:textColor="@color/text_black_5"
android:textSize="14sp"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:layout_marginTop="8dp"
>
<TextView
android:id="@+id/tvStatus"
fontPath="@string/font_regular"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_marginTop="4dp"
android:gravity="left"
android:maxLines="2"
android:layout_gravity="left"
android:text="Pending"
android:lineSpacingMultiplier="1.2"
android:textColor="@color/carnation_red"
android:textSize="14sp"/>
<TextView
android:id="@+id/tvDate"
fontPath="@string/font_regular"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:layout_marginLeft="16dp"
android:gravity="left"
android:maxLines="2"
android:layout_gravity="right"
android:text="Apr 13, 2019"
android:lineSpacingMultiplier="1.2"
android:textColor="@color/text_black_9"
android:textSize="14sp"/>
</LinearLayout>
</LinearLayout>
</LinearLayout>
<View <View
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="1dp" android:layout_height="1dp"
android:background="@color/bg" android:background="@color/bg"
android:layout_marginTop="16dp"
/> />
</LinearLayout> </LinearLayout>

View File

@ -3,6 +3,7 @@ package me.gilo.woodroid.models;
import com.google.gson.annotations.SerializedName; import com.google.gson.annotations.SerializedName;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date;
import java.util.List; import java.util.List;
@ -12,6 +13,10 @@ public class Order {
public String orderNumber; public String orderNumber;
@SerializedName("created_at") @SerializedName("created_at")
public String createdAt; public String createdAt;
@SerializedName("date_created")
public Date dateCreated;
@SerializedName("updated_at") @SerializedName("updated_at")
public String updatedAt; public String updatedAt;
@SerializedName("completed_at") @SerializedName("completed_at")
@ -305,4 +310,12 @@ public class Order {
public void setCustomer(Customer customer) { public void setCustomer(Customer customer) {
this.customer = customer; this.customer = customer;
} }
public Date getDateCreated() {
return dateCreated;
}
public void setDateCreated(Date dateCreated) {
this.dateCreated = dateCreated;
}
} }