Skip to content

Commit

Permalink
functionality on filtering
Browse files Browse the repository at this point in the history
  • Loading branch information
muindi.stephen committed Apr 11, 2024
1 parent a1a63fd commit 3ee1f78
Show file tree
Hide file tree
Showing 15 changed files with 233 additions and 54 deletions.
9 changes: 8 additions & 1 deletion .idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ class CropCycleTaskListAdapter(private val onClickListener: OnClickListener) :
binding.farmID.text = cycle?.farmId
binding.cycleData.text = cycle?.cropName
binding.dateForCycle.text = cycle?.startDate
binding.textView85.text = cycle?.type
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ class HireFarmEquipmentsFragment : Fragment() {
private lateinit var binding: FragmentHireFarmEquipmentsBinding
private lateinit var farmEquipmentsRecylerView: RecyclerView
private lateinit var farmEquipmentsAdapter: FarmEquipmentAdapter
private var farmEquipmentsList = ArrayList<FarmEquipment>()

override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?
Expand Down Expand Up @@ -72,11 +73,11 @@ class HireFarmEquipmentsFragment : Fragment() {

val farmEquipments = response.body()

val newList = ArrayList<FarmEquipment>()
farmEquipments?.let {
farmEquipmentsList.addAll(it)
farmEquipmentsAdapter.submitList(farmEquipmentsList)
}

newList.addAll(farmEquipments!!)

farmEquipmentsAdapter.submitList(newList)
farmEquipmentsAdapter.notifyDataSetChanged()
farmEquipmentsRecylerView.adapter = farmEquipmentsAdapter
farmEquipmentsRecylerView.visibility = View.VISIBLE
Expand All @@ -93,5 +94,18 @@ class HireFarmEquipmentsFragment : Fragment() {
binding.imageViewBackFromFarmEquipments.setOnClickListener {
findNavController().navigateUp()
}

// performing filtering of farm equipments here
binding.card1.setOnClickListener {
filterFarmEquipments("F")
}
binding.card2.setOnClickListener { filterFarmEquipments("W") }
binding.card3.setOnClickListener { filterFarmEquipments("J") }
binding.card4.setOnClickListener { filterFarmEquipments("P") }
}

private fun filterFarmEquipments(query: String) {
val filteredList = farmEquipmentsList.filter { it.name.contains(query, ignoreCase = true) }
farmEquipmentsAdapter.submitList(filteredList.toMutableList())
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.steve_md.smartmkulima.ui.fragments.others.crop_cycle

import android.annotation.SuppressLint
import android.app.AlertDialog
import android.app.DatePickerDialog
import android.os.Bundle
import android.util.Log
Expand Down Expand Up @@ -29,7 +30,6 @@ class AutoCreateCropCycleFragment : Fragment() {
private lateinit var binding: FragmentAutoCreateCropCycleBinding
private var cropCycleStartDay: Calendar? = null

private val db = FirebaseFirestore.getInstance()

private val cycleTypes by lazy { resources.getStringArray(R.array.cycle_types) }

Expand Down Expand Up @@ -57,9 +57,7 @@ class AutoCreateCropCycleFragment : Fragment() {
private fun setUpBinding() {

binding.viewAllCycleTypes.setOnClickListener {
findNavController().navigate(
R.id.action_autoCreateCropCycleFragment_to_cropCycleTasksListFragment
)
goToCropCycle()
}

val cycleTypeAdapter =
Expand All @@ -78,15 +76,14 @@ class AutoCreateCropCycleFragment : Fragment() {
val selectedCycleType = cycleTypes[position]
if (selectedCycleType == "Crop Cycle") {
populateCropSpinner()
} else if (selectedCycleType == "Service Cycle"){
} else if (selectedCycleType == "Service Cycle") {
binding.spinnerCrop.visibility = View.GONE
//displayServiceCycleTasks()
binding.stepLinearLayout.removeAllViews()
val stepTextView = TextView(requireContext())
stepTextView.text = "$cropCycleStartDay | ${binding.enterFarmBlockID.text}"

}
else {
} else {
return
}
}
Expand Down Expand Up @@ -118,6 +115,13 @@ class AutoCreateCropCycleFragment : Fragment() {

}

private fun goToCropCycle() {
findNavController().navigate(
R.id.action_autoCreateCropCycleFragment_to_cropCycleTasksListFragment
)
}

@SuppressLint("SetTextI18n")
private fun displayPredefinedServiceCycle() {
binding.stepLinearLayout.removeAllViews()
val steps = listOf(
Expand All @@ -131,10 +135,12 @@ class AutoCreateCropCycleFragment : Fragment() {
steps.forEach { step ->
val stepTextView = TextView(requireContext())
// Set text with step name and details
stepTextView.text = "${step.name}: Start Day ${cropCycleStartDay?.time}, End Day ${step.endDay} \n"
stepTextView.text =
"${step.name}: Start Day ${cropCycleStartDay?.time}, End Day ${step.endDay} \n"
binding.stepLinearLayout.addView(stepTextView)
}
}

data class Step(val name: String, val startDay: Int, val endDay: Int)

private fun generateCropCycle() {
Expand All @@ -148,7 +154,6 @@ class AutoCreateCropCycleFragment : Fragment() {
val startDay = dateFormat.parse(startDayForCropCycle)



// Sample crop cycle stages
val stages = listOf(
"Seedling Acquisition",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package com.steve_md.smartmkulima.ui.fragments.others.crop_cycle

import android.annotation.SuppressLint
import android.content.res.ColorStateList
import android.graphics.Color
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
Expand All @@ -11,6 +13,7 @@ import androidx.navigation.fragment.findNavController
import androidx.recyclerview.widget.LinearLayoutManager
import com.google.firebase.auth.FirebaseAuth
import com.google.firebase.firestore.FirebaseFirestore
import com.steve_md.smartmkulima.R
import com.steve_md.smartmkulima.adapter.CropCycleTaskListAdapter
import com.steve_md.smartmkulima.data.remote.CyclesApiClient
import com.steve_md.smartmkulima.data.remote.FarmEquipmentsApiClient
Expand All @@ -24,10 +27,12 @@ import retrofit2.Call
import retrofit2.Response
import timber.log.Timber
import java.net.HttpURLConnection
import java.util.logging.Handler

class CropCycleTasksListFragment : Fragment() {
private lateinit var binding: FragmentCropCycleListBinding
private lateinit var cycleListAdapter: CropCycleTaskListAdapter
private var cycleList = ArrayList<Cycle>()

override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
Expand All @@ -44,8 +49,6 @@ class CropCycleTasksListFragment : Fragment() {

(activity as AppCompatActivity).supportActionBar?.hide()



setUpBinding()
setUpRecyclerView()
getAllAvailableCropCycle()
Expand All @@ -69,41 +72,65 @@ class CropCycleTasksListFragment : Fragment() {
binding.cropCycleRecyclerView.adapter = cycleListAdapter
}

@SuppressLint("ResourceAsColor")
private fun setUpBinding() {
binding.imageViewBackFromCropCycleLists.setOnClickListener { findNavController().navigateUp() }

binding.textView74.setOnClickListener {
// binding.cropCycleRecyclerView.removeAllViews()
android.os.Handler().postDelayed({
binding.progressBarCycles.visibility = View.GONE
// getAllAvailableCropCycle()
}, 1500)
}

binding.textView83CropCycle.setOnClickListener {
filterCycles("Crop cycle")
}
binding.textView84.setOnClickListener {

filterCycles("Livestock cycle")
}

}

// Fetch from remote API (web-service)
private fun getAllAvailableCropCycle() {
CyclesApiClient.api.getAllFarmCycles()
.enqueue(object : retrofit2.Callback<ArrayList<Cycle>> {
@SuppressLint("NotifyDataSetChanged")
@SuppressLint("NotifyDataSetChanged", "ResourceAsColor")
override fun onResponse(
call: Call<ArrayList<Cycle>>,
response: Response<ArrayList<Cycle>>
) {
if (response.isSuccessful) {

Timber.i("====Viewing Farm cycles${response.body()}=====")
displaySnackBar("Viewing Available cycles")
// displaySnackBar("Viewing Available cycles")

val cycles = response.body()

val newList = ArrayList<Cycle>()

newList.addAll(cycles!!)

cycleListAdapter.submitList(newList)
cycles?.let {
cycleList.addAll(it)
cycleListAdapter.submitList(cycleList)
}
cycleListAdapter.notifyDataSetChanged()
binding.cropCycleRecyclerView.adapter = cycleListAdapter
binding.cropCycleRecyclerView.visibility = View.VISIBLE

}
}
override fun onFailure(call: Call<ArrayList<Cycle>>, t: Throwable) {
toast("nothing here.${t.localizedMessage}")
Timber.e("nothing here.${t.localizedMessage}")
binding.errorNotAvailable.visibility = View.VISIBLE
binding.cropCycleRecyclerView.visibility = View.INVISIBLE
}
})
}

private fun filterCycles(s: String) {
val filteredList = cycleList.filter { it.type.equals(s, ignoreCase = true) }
cycleListAdapter.submitList(filteredList.toMutableList())
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package com.steve_md.smartmkulima.ui.fragments.others.crop_cycle

import android.os.Bundle
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import com.steve_md.smartmkulima.R
import com.steve_md.smartmkulima.databinding.FragmentLivestockCycleBinding

class LivestockCycleFragment : Fragment() {
private lateinit var binding: FragmentLivestockCycleBinding

override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View {
binding = FragmentLivestockCycleBinding.inflate(inflater, container, false)
return binding.root
}

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
}
}
11 changes: 11 additions & 0 deletions app/src/main/res/layout/crop_cycle_task_row.xml
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,17 @@
app:layout_constraintStart_toEndOf="@+id/cycleData"
app:layout_constraintTop_toTopOf="@+id/cycleData" />

<TextView
android:id="@+id/textView85"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:text="cycle"
android:visibility="invisible"
android:textSize="4dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />

<!-- <TextView-->
<!-- android:id="@+id/startDay"-->
<!-- android:layout_width="wrap_content"-->
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,11 +60,11 @@
android:layout_marginStart="16dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="16dp"

android:entries="@array/cycle_types"
android:paddingHorizontal="12dp"
android:paddingVertical="8dp"
android:spinnerMode="dropdown"
android:background="@drawable/rounded_corner"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />

Expand Down
Loading

0 comments on commit 3ee1f78

Please sign in to comment.