История посещений ui

This commit is contained in:
v228a 2025-02-19 17:12:31 +03:00
parent c5147cb105
commit afa43a9d97
11 changed files with 101 additions and 18 deletions

View File

@ -1,6 +1,6 @@
package ru.myitschool.work.core
object Constants {
// const val SERVER_ADDRESS = "http://10.0.2.2:8080"
// const val SERVER_ADDRESS = "http://10.0.2.2:8080"
const val SERVER_ADDRESS = "https://nto.den4iksop.org"
}

View File

@ -7,11 +7,15 @@ import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.LinearLayout
import androidx.navigation.fragment.findNavController
import androidx.recyclerview.widget.LinearLayoutManager
import dagger.hilt.android.AndroidEntryPoint
import ru.myitschool.work.R
import ru.myitschool.work.databinding.FragmentEntryListBinding
import ru.myitschool.work.databinding.FragmentLoginBinding
import ru.myitschool.work.ui.entrylist.adapter.AdapterEntryHistory
import ru.myitschool.work.ui.entrylist.adapter.EntryHistoryEntity
import ru.myitschool.work.ui.login.LoginDestination
import ru.myitschool.work.ui.login.LoginViewModel
import ru.myitschool.work.ui.profile.ProfileDestination
@ -32,9 +36,13 @@ class EntryListFragment : Fragment(R.layout.fragment_entry_list) {
subscribe()
}
private fun initCallback (){
private fun initCallback() {
binding.floatingActionButton2.setOnClickListener { viewModel.closeEntryList() }
}
binding.recyclerView.adapter = AdapterEntryHistory(viewModel.getEntryList())
binding.recyclerView.layoutManager = LinearLayoutManager(requireContext())
}
private fun subscribe() {
viewModel.action.collectWhenStarted(this) { action ->

View File

@ -9,6 +9,7 @@ import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.asSharedFlow
import kotlinx.coroutines.flow.asStateFlow
import kotlinx.coroutines.launch
import ru.myitschool.work.ui.entrylist.adapter.EntryHistoryEntity
import ru.myitschool.work.ui.profile.ProfileViewModel
import ru.myitschool.work.ui.profile.ProfileViewModel.Action
import ru.myitschool.work.ui.profile.ProfileViewModel.State
@ -25,8 +26,19 @@ class EntryListViewModel @Inject constructor(
private val _action = MutablePublishFlow<Action>()
val action = _action.asSharedFlow()
// private val _state = MutableStateFlow<State>(initialState)
// val state = _state.asStateFlow()
// Новый список данных
private val entryList = listOf(
EntryHistoryEntity("type1", "2023-10-01T12:00:00", "id001"),
EntryHistoryEntity("type2", "2023-10-02T13:00:00", "id002"),
EntryHistoryEntity("type3", "2023-10-03T14:00:00", "id003"),
EntryHistoryEntity("type4", "2023-10-04T15:00:00", "id004"),
EntryHistoryEntity("type5", "2023-10-05T16:00:00", "id005")
)
// Функция для получения данных
fun getEntryList(): List<EntryHistoryEntity> {
return entryList
}
fun closeEntryList(){
viewModelScope.launch {
@ -34,13 +46,7 @@ class EntryListViewModel @Inject constructor(
}
}
sealed interface Action {
data object OpenProfile: Action
}
companion object {
// val initialState = State.Loading
}
}

View File

@ -0,0 +1,36 @@
package ru.myitschool.work.ui.entrylist.adapter
import android.graphics.Color
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.AdapterView
import android.widget.TextView
import androidx.core.graphics.drawable.toDrawable
import androidx.recyclerview.widget.RecyclerView
import ru.myitschool.work.R
class AdapterEntryHistory(private val datas: List<EntryHistoryEntity>) : RecyclerView
.Adapter<AdapterEntryHistory.MyViewHolder>() {
class MyViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
var dateText: TextView = itemView.findViewById(R.id.time)
val identificatorText: TextView = itemView.findViewById(R.id.identificator)
val typeText: TextView = itemView.findViewById(R.id.type)
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder {
val itemView = LayoutInflater.from(parent.context)
.inflate(R.layout.card_view, parent, false)
return MyViewHolder(itemView)
}
override fun onBindViewHolder(holder: MyViewHolder, position: Int) {
holder.dateText.text = datas[position].time.toString()
holder.identificatorText.text = datas[position].identificator.toString()
holder.typeText.text = datas[position].type.toString()
}
override fun getItemCount() = datas.size
}

View File

@ -0,0 +1,7 @@
package ru.myitschool.work.ui.entrylist.adapter
class EntryHistoryEntity(
val type: String,
val time: String,
val identificator: String
)

View File

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="48dp"
android:height="48dp"
android:viewportWidth="960"
android:viewportHeight="960">
<path
android:pathData="M222,705q63,-40 124.5,-60.5T480,624q72,0 134,20.5T739,705q44,-54 62.5,-109T820,480q0,-145 -97.5,-242.5T480,140q-145,0 -242.5,97.5T140,480q0,61 19,116t63,109ZM479.81,510q-57.81,0 -97.31,-39.69 -39.5,-39.68 -39.5,-97.5 0,-57.81 39.69,-97.31 39.68,-39.5 97.5,-39.5 57.81,0 97.31,39.69 39.5,39.68 39.5,97.5 0,57.81 -39.69,97.31 -39.68,39.5 -97.5,39.5ZM479.6,880q-83.15,0 -156.28,-31.5t-127.22,-86Q142,708 111,635.16 80,562.32 80,479.5t31.5,-155.66Q143,251 197.5,197t127.34,-85.5Q397.68,80 480.5,80t155.66,31.5Q709,143 763,197t85.5,127Q880,397 880,479.73q0,82.74 -31.5,155.5Q817,708 763,762.5t-127.13,86Q562.74,880 479.6,880Z"
android:fillColor="#5f6368"/>
</vector>

View File

@ -0,0 +1,5 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android" android:autoMirrored="true" android:height="24dp" android:tint="#000000" android:viewportHeight="24" android:viewportWidth="24" android:width="24dp">
<path android:fillColor="@android:color/white" android:pathData="M20,11H7.83l5.59,-5.59L12,4l-8,8 8,8 1.41,-1.41L7.83,13H20v-2z"/>
</vector>

View File

@ -10,20 +10,20 @@
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/floatingActionButton2"
style="@style/Theme.UiTemplate.FAB.Gray"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:clickable="true"
style="@style/Theme.UiTemplate.FAB.Gray"
android:src="@drawable/ic_close"
android:src="@drawable/ic_back"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/textView5"
style="@style/Theme.UiTemplate.TextH2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Entry History"
style="@style/Theme.UiTemplate.TextH2"
android:text="@string/entry_history"
app:layout_constraintBottom_toBottomOf="@+id/floatingActionButton2"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/floatingActionButton2"
@ -32,7 +32,7 @@
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="0dp"
android:layout_height="645dp"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"

View File

@ -140,6 +140,17 @@
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" />
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/admin"
style="@style/Theme.UiTemplate.FAB.AccentColor"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/profile_scan_button"
android:src="@drawable/ic_admin"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/scan"
app:layout_constraintStart_toEndOf="@+id/entry_list" />
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/entry_list"
style="@style/Theme.UiTemplate.FAB.AccentColor"

View File

@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="Theme.UiTemplate.CardView" parent="Widget.MaterialComponents.CardView">
<item name="cardBackgroundColor">@color/BackgroundGray</item>
<item name="cardElevation">0dp</item>
<item name="cardCornerRadius">120dp</item>
<item name="cornerSize">10dp</item>
<item name="cardCornerRadius">30dp</item>
</style>
</resources>

View File

@ -1,3 +1,4 @@
<resources>
<string name="app_name">NTO Pass</string>
<string name="entry_history">Entry History</string>
</resources>