Commit f40c0a11 authored by Nikolay Kazakov's avatar Nikolay Kazakov
Browse files

Исправил ошибку с крашем после выбора координат, изменил немного дизайн

parent 0df7d7f7
......@@ -74,6 +74,9 @@
android:resource="@drawable/ic_notifications_black_24dp" />
<meta-data android:name="com.google.firebase.messaging.default_notification_color"
android:resource="@color/colorAccent" />
<meta-data
android:name="preloaded_fonts"
android:resource="@array/preloaded_fonts" />
<!--Сервис получения локации пользователя в фоне-->
<service android:name=".util.UserLocationService"
......
......@@ -71,6 +71,7 @@ class Models {
@Expose @SerializedName("hint") var hint: String="",
@Expose @SerializedName("resvalue") var resvalue: String="",
@Expose @SerializedName("subcheckup") var subcheckup: List<Checkup> = listOf(),
@Expose @SerializedName("multiplicity") var multiplicity: Int=0,
@Expose var checked: Boolean=false,
//var controlList: ControlList?=null
......
......@@ -42,6 +42,7 @@ class CheckupFragment : Fragment(), CheckupContractView, View.OnClickListener {
private lateinit var uiCreator: UICreator
lateinit var controlList: Models.ControlList
var savedcontrolList: Models.ControlList?=null
lateinit var checkup: Checkup
override fun onCreateView(
......@@ -92,9 +93,17 @@ class CheckupFragment : Fragment(), CheckupContractView, View.OnClickListener {
this.checkup=checkup
photoHelper.parentFragment=this
/*if (savedcontrolList!=null) {
uiCreator= UICreator(this, checkup)
controlList=uiCreator.create(root, controls = savedcontrolList)
} else {
uiCreator= UICreator(this, checkup)
controlList=uiCreator.create(root)
}*/
uiCreator= UICreator(this, checkup)
controlList=uiCreator.create(root)
}
fun setResultMapPoint(point: LatLng, controlId: Int) {
......
......@@ -42,13 +42,42 @@ class CheckupPresenter @Inject constructor(val db: AppDatabase) {
fun saveCheckup(uiCreator: UICreator) {
Timber.d("Сохраняем данные чеклиста")
// Проверим нет ли групповых контролов
val groupControls=uiCreator.controlList.list.filter { it.type=="group_questions" }
if (groupControls.size>0) {
groupControls.forEach {
//Сохраним групповы чеклисты
val controlList2 = it.groupControlList
Timber.d("${controlList2?.list?.get(0)?.list?.get(0)?.resvalue}")
val gson= GsonBuilder()
.excludeFieldsWithoutExposeAnnotation()
.create()
val resCheckup =gson.toJson(controlList2)
it.resvalue=resCheckup.toString()
// Заменим в главном чеклисте групповой чеклист
val index=uiCreator.controlList.list.indexOf(it)
if (index>-1) {
Timber.d("ОК!!")
uiCreator.controlList.list[index] = it
}
}
}
Timber.d("groupControls=${groupControls.size}")
Timber.d("uiCreator.controlList=${uiCreator.controlList.list[0].groupControlList?.list?.get(0)?.list?.get(0)?.resvalue}")
// Исключаем ненужные поля
val gson= GsonBuilder()
.excludeFieldsWithoutExposeAnnotation()
.create()
val resCheckup= gson.toJsonTree(uiCreator.controlList, Models.ControlList::class.java)
Timber.d("resCheckup=$resCheckup")
uiCreator.checkup.textResult=resCheckup as JsonObject
disposable=Single.fromCallable{
db.checkupDao().insert(uiCreator.checkup)
}
......
......@@ -54,9 +54,9 @@ class OrderListAdapter (val orders: List<Orders>, private val itemListener: Orde
}
if (orders[position].state.equals("1")) {
holder.targetImage.setImageResource(R.drawable.ic_flash_on_black_24dp)
holder.targetImage.setImageResource(R.drawable.ic_state_red)
} else {
holder.targetImage.setImageResource(R.drawable.ic_flash_on_black_done24dp)
holder.targetImage.setImageResource(R.drawable.ic_state_green)
}
......
......@@ -20,7 +20,7 @@ class CheckupPagerAdapter(private val control: Models.TemplateControl, private v
container.addView(itemView)
// Генерируем вопросы группы
//Timber.d("control=${control}")
Timber.d("control=${control}")
val uiCreator= UICreator(parentFragment, control.subcheckup[position])
val cl=uiCreator.create(rootView = itemView,parent = control)
Timber.d("cl=${cl.list}")
......@@ -32,9 +32,6 @@ class CheckupPagerAdapter(private val control: Models.TemplateControl, private v
control.groupControlList=adapterControlList
}
return itemView
}
......@@ -43,7 +40,12 @@ class CheckupPagerAdapter(private val control: Models.TemplateControl, private v
}
override fun getCount(): Int {
return control.subcheckup.size
return if (control.subcheckup!=null) {
control.subcheckup.size
} else {
0
}
}
override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) {
......
......@@ -20,8 +20,6 @@ class TextWatcherHelper(private val control: Models.TemplateControl, private val
uiCreator.changeChecked(parentView, parent)
}
}
override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {
......
......@@ -10,6 +10,7 @@ import androidx.cardview.widget.CardView
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.core.content.ContextCompat
import androidx.viewpager.widget.ViewPager
import com.google.android.material.button.MaterialButton
import com.google.android.material.floatingactionbutton.FloatingActionButton
import com.google.android.material.textfield.TextInputEditText
import com.google.android.material.textfield.TextInputLayout
......@@ -39,13 +40,18 @@ class UICreator(val parentFragment: CheckupFragment, val checkup: Checkup) {
fun create(rootView: View, controls:Models.ControlList?=null, parent: Models.TemplateControl?=null): Models.ControlList {
// Возможно чеклист был ранее сохранен, тогда берем сохраненный и восстанавливаем его
controlList = if (controls==null) {
Timber.d("checkup.textResult=${checkup.textResult}")
//Timber.d("checkup22=${checkup}")
//Timber.d("checkup.textResult11=${checkup.textResult}")
if (checkup.textResult!=null){
Timber.d("сюда")
//Timber.d("сюда")
Gson().fromJson(checkup.textResult, Models.ControlList::class.java)
} else {
Timber.d("checkup=$checkup")
Gson().fromJson(checkup.text, Models.ControlList::class.java)
if (checkup.text!=null) {
Gson().fromJson(checkup.text, Models.ControlList::class.java)
} else {
Gson().fromJson("", Models.ControlList::class.java)
}
}
} else {
controls
......@@ -235,7 +241,7 @@ class UICreator(val parentFragment: CheckupFragment, val checkup: Checkup) {
}
// Обработчик для кнопки "Добавить фото"
val btnPhoto=templateStep.findViewById<Button>(R.id.btnPhoto)
val btnPhoto=templateStep.findViewById<MaterialButton>(R.id.btnPhoto)
val stepCheckup=it
btnPhoto.setOnClickListener{
Timber.d("Добавляем фото")
......@@ -284,7 +290,7 @@ class UICreator(val parentFragment: CheckupFragment, val checkup: Checkup) {
}
// Обработчик для кнопки "Добавить координаты"
val btnMap=templateStep.findViewById<Button>(R.id.btnMap)
val btnMap=templateStep.findViewById<MaterialButton>(R.id.btnMap)
//val stepCheckup=it
btnMap.setOnClickListener{
Timber.d("Добавляем координаты")
......@@ -380,32 +386,43 @@ class UICreator(val parentFragment: CheckupFragment, val checkup: Checkup) {
// Обработчик для кнопки "Добавлям новый чеклист"
val btnNewStep=templateStep.findViewById<Button>(R.id.addNewStep)
btnNewStep.tag=templateStep
btnNewStep.setOnClickListener{
Timber.d("Добавлям новый чеклист")
val ts=it.tag
val tc=((ts as View).tag as Models.TemplateControl)
val subcheckupnew= mutableListOf<Checkup>()
val controlsForPages=tc.groupControlList
controlsForPages?.list?.forEach{ controls ->
val gson= GsonBuilder()
.excludeFieldsWithoutExposeAnnotation()
.create()
val resValue=gson.toJson(controls,Models.ControlList::class.java)
val checkup=Checkup(textResult = Gson().fromJson(resValue, JsonObject::class.java))
subcheckupnew.add(checkup)
Timber.d("it=${it.multiplicity}")
if (it.multiplicity==1) {
val btnNewStep=templateStep.findViewById<MaterialButton>(R.id.addNewStep)
btnNewStep.visibility=View.VISIBLE
btnNewStep.tag=templateStep
btnNewStep.setOnClickListener{
Timber.d("Добавлям новый чеклист")
val ts=it.tag
val tc=((ts as View).tag as Models.TemplateControl)
// Сбрасываем признак Checked
tc.checked=!tc.checked
changeChecked(ts,tc)
val subcheckupnew= mutableListOf<Checkup>()
val controlsForPages=tc.groupControlList
controlsForPages?.list?.forEach{ controls ->
val gson= GsonBuilder()
.excludeFieldsWithoutExposeAnnotation()
.create()
val resValue=gson.toJson(controls,Models.ControlList::class.java)
val checkup=Checkup(textResult = Gson().fromJson(resValue, JsonObject::class.java))
subcheckupnew.add(checkup)
}
subcheckupnew.add(tc.subcheckup[0]) // Добавим еще один такой же
tc.subcheckup=subcheckupnew
refreshCheckupViewer(clCheckupsPager, tc)
}
subcheckupnew.add(tc.subcheckup[0]) // Добавим еще один такой же
tc.subcheckup=subcheckupnew
refreshCheckupViewer(clCheckupsPager, tc)
} else {
val btnNewStep=templateStep.findViewById<MaterialButton>(R.id.addNewStep)
btnNewStep.visibility=View.INVISIBLE
}
return@controls
}
else -> {
......@@ -422,9 +439,15 @@ class UICreator(val parentFragment: CheckupFragment, val checkup: Checkup) {
private fun refreshCheckupViewer(v: View, control:Models.TemplateControl) {
Timber.d("refreshCheckupViewer")
val pager = v.findViewById(R.id.viewPager) as ViewPager
val checkups=control.subcheckup
val checkupCount = (v.parent as LinearLayout).findViewById(R.id.countCheckup) as TextView
checkupCount.text = checkups.size.toString()
val checkups=control.subcheckup
if (checkups!=null) {
checkupCount.text = checkups.size.toString()
} else {
checkupCount.text ="0"
}
val adapter =
CheckupPagerAdapter(
......@@ -553,8 +576,6 @@ class UICreator(val parentFragment: CheckupFragment, val checkup: Checkup) {
.create()
val resCheckup =gson.toJson(controlList2)
control.resvalue=resCheckup.toString()
}
}
......
......@@ -11,14 +11,14 @@
android:translateY="-1.0">
<path
android:fillAlpha="0.01"
android:fillColor="#FFFFFF"
android:fillColor="@color/colorAccent"
android:fillType="evenOdd"
android:pathData="M 0 0 H 21 V 37 H 0 V 0 Z"
android:strokeWidth="1"
android:strokeAlpha="0.01" />
<path
android:fillAlpha="0.5"
android:fillColor="#FFFFFF"
android:fillColor="@color/colorAccent"
android:fillType="evenOdd"
android:pathData="M16.8382499,1.5115386 L2.04771505,15.9727785 C0.650761649,17.3386303
0.650761649,19.5544231 2.04771505,20.9202749 L16.9455703,35.4881947
......
......@@ -10,7 +10,7 @@
android:translateY="-119.000000">
<path
android:fillAlpha="0.5"
android:fillColor="#FFFFFF"
android:fillColor="@color/colorAccent"
android:fillType="evenOdd"
android:pathData="M371.367433,119.511539 L371.367433,119.511539 C370.668062,118.829487
369.535832,118.829487 368.83825,119.511539 L354.047715,133.972779
......
<vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp"
android:height="24dp" android:tint="#26A69A"
android:viewportWidth="24.0" android:viewportHeight="24.0">
<path android:fillColor="#FF000000" android:pathData="M7,2v11h3v9l7,-12h-4l4,-8z"/>
</vector>
<vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp"
android:height="24dp" android:tint="#717171"
android:viewportWidth="24.0" android:viewportHeight="24.0">
<path android:fillColor="#FF000000" android:pathData="M7,2v11h3v9l7,-12h-4l4,-8z"/>
</vector>
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="12dp"
android:height="12dp"
android:viewportWidth="12"
android:viewportHeight="12">
<path
android:fillColor="#71D481"
android:pathData="M 6 0 C 9.31370849898 0 12 2.68629150102 12 6 C 12 9.31370849898 9.31370849898 12 6 12 C 2.68629150102 12 0 9.31370849898 0 6 C 0 2.68629150102 2.68629150102 0 6 0 Z" />
</vector>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="12dp"
android:height="12dp"
android:viewportWidth="12"
android:viewportHeight="12">
<path
android:fillColor="#F37565"
android:pathData="M 6 0 C 9.31370849898 0 12 2.68629150102 12 6 C 12 9.31370849898 9.31370849898 12 6 12 C 2.68629150102 12 0 9.31370849898 0 6 C 0 2.68629150102 2.68629150102 0 6 0 Z" />
</vector>
\ No newline at end of file
<?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:fontProviderCerts="@array/com_google_android_gms_fonts_certs"
app:fontProviderPackage="com.google.android.gms"
app:fontProviderQuery="name=Roboto&amp;weight=700">
</font-family>
<?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:fontProviderCerts="@array/com_google_android_gms_fonts_certs"
app:fontProviderPackage="com.google.android.gms"
app:fontProviderQuery="name=Roboto&amp;weight=500">
</font-family>
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/white">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/checkuplist_recycler_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="1.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.0" />
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/fabAddCheckup"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
android:layout_margin="@dimen/fab_margin"
android:backgroundTint="@color/colorAccent"
app:layout_constraintBottom_toBottomOf="@+id/checkuplist_recycler_view"
app:layout_constraintEnd_toEndOf="parent"
app:srcCompat="@drawable/ic_add_black_24dp" />
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<androidx.cardview.widget.CardView
android:id="@+id/cv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="4dp"
android:layout_marginLeft="4dp"
android:layout_marginTop="4dp"
android:layout_marginEnd="4dp"
android:layout_marginRight="4dp"
app:cardBackgroundColor="@color/colorCardItem">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/phone"
android:layout_width="wrap_content"
android:layout_height="23dp"
android:layout_marginTop="4dp"
android:layout_marginEnd="8dp"
android:clickable="true"
android:focusable="true"
android:textAppearance="@style/Base.TextAppearance.AppCompat.Medium"
android:textColor="@color/hypertext"
android:textSize="12sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@+id/adress"
tools:text="+79503795388" />
<TextView
android:id="@+id/fio"
android:layout_width="wrap_content"
android:layout_height="23dp"
android:layout_marginStart="8dp"
android:layout_marginTop="4dp"
android:layout_marginBottom="8dp"
android:textAppearance="@style/Base.TextAppearance.AppCompat.Medium"
android:textSize="12sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/adress"
app:layout_constraintVertical_bias="0.0"
tools:text="Иванов Иван Иванович" />
<ImageView
android:id="@+id/targetImage"
android:layout_width="27dp"
android:layout_height="27dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:adjustViewBounds="true"
android:contentDescription="@string/order_image_description"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/ic_flash_on_black_24dp" />
<TextView
android:id="@+id/number"
android:layout_width="227dp"
android:layout_height="25dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:textAppearance="@style/Base.TextAppearance.AppCompat.Large"
app:layout_constraintStart_toEndOf="@+id/targetImage"
app:layout_constraintTop_toTopOf="parent"
tools:text="А-001" />
<TextView
android:id="@+id/date"
android:layout_width="116dp"
android:layout_height="25dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:textAppearance="@style/Base.TextAppearance.AppCompat.Large"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:text="31.01.2020" />
<TextView
android:id="@+id/name"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:textAppearance="@style/Base.TextAppearance.AppCompat.Medium"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/number"
tools:text="Обследование жилого здания" />
<TextView
android:id="@+id/adress"
android:layout_width="0dp"
android:layout_height="32dp"
android:layout_marginStart="8dp"
android:layout_marginLeft="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:layout_marginRight="8dp"
android:textAppearance="@style/Base.TextAppearance.AppCompat.Medium"
android:textSize="12sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/name"
tools:text="Нижний Новгород, Россия, 603146, Михайловская улица, 24" />
<!--<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/fab2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:layout_marginEnd="4dp"
android:backgroundTint="@color/colorAccent"
android:clickable="true"
android:focusable="true"
app:fabCustomSize="32dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@+id/name"
app:srcCompat="@drawable/ic_local_phone_black_8dp"
tools:ignore="VectorDrawableCompat" />-->
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.cardview.widget.CardView>
</LinearLayout>
\ No newline at end of file
......@@ -4,22 +4,21 @@
android:id="@+id/checkuplist_bottom_sheet"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#B0BEC5"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="40dp"
android:background="@color/colorAccent"
android:fontFamily="@font/roboto_bold"
android:gravity="center"
android:text="@string/bottom_sheet_peek"
android:textColor="@android:color/white" />
android:textSize="15sp" />
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#B0BEC5">
android:background="@color/colorCardItem">
<com.weiwangcn.betterspinner.library.material.MaterialBetterSpinner
android:id="@+id/spinner_kindobject"
......@@ -53,23 +52,11 @@
android:id="@+id/tietNameObject"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#B0BEC5"
android:hint="@string/object_name"
/>
android:background="@color/colorCardItem"
android:hint="@string/object_name" />
</com.google.android.material.textfield.TextInputLayout>
<!--<Button
android:id="@+id/btnSaveNewObject"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:onClick="onClick"
android:text="@string/btnSave"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />-->
<com.google.android.material.button.MaterialButton
android:id="@+id/btnSaveNewObject"
style="@style/Widget.MaterialComponents.Button.OutlinedButton"
......
......@@ -3,18 +3,19 @@
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/white">
android:background="@color/colorListBackground">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/checkuplist_recycler_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/colorListBackground"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="1.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.0"/>
app:layout_constraintVertical_bias="0.0" />
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/fabAddCheckup"
......
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