Skip to content

Instantly share code, notes, and snippets.

@Fuhrmann
Created April 17, 2018 17:35
Show Gist options
  • Save Fuhrmann/3ede5273708dda055e4e4618538b2264 to your computer and use it in GitHub Desktop.
Save Fuhrmann/3ede5273708dda055e4e4618538b2264 to your computer and use it in GitHub Desktop.
package br.com.infortechms.sinvisita.ui.visitaace
import android.arch.lifecycle.ViewModelProviders
import android.os.Bundle
import android.support.v4.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import br.com.infortechms.sinvisita.R
import br.com.infortechms.sinvisita.data.entity.Adulticida
import br.com.infortechms.sinvisita.data.entity.Larvicida
import br.com.infortechms.sinvisita.viewmodel.visitaace.FormTratamentoViewModel
import br.com.infortechms.sinvisita.viewmodel.visitaace.FormVisitaAceViewModel
import com.thejuki.kformmaster.helper.FormBuildHelper
import com.thejuki.kformmaster.helper.dropDown
import com.thejuki.kformmaster.helper.form
import com.thejuki.kformmaster.helper.number
import com.thejuki.kformmaster.listener.OnFormElementValueChangedListener
import com.thejuki.kformmaster.model.BaseFormElement
import kotlinx.android.synthetic.main.fragment_form_visita_ace_tratamento.view.*
class FormTratamentoFragment : Fragment() {
private lateinit var viewModel: FormTratamentoViewModel
private lateinit var formViewModel: FormVisitaAceViewModel
private var formBuilder: FormBuildHelper? = null
// Tags dos campos do formulário
private enum class Tag {
TotalDepositosEliminados,
TotalDepositosEliminadosLarvicida,
TipoLarvicida,
ColherGrande,
ColherPequena,
QuantidadeLarvicida,
TipoAdulticida,
QuantidadeCargasAdulticida,
}
companion object {
@JvmStatic
fun newInstance() = FormTratamentoFragment()
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
viewModel = ViewModelProviders.of(this).get(FormTratamentoViewModel::class.java)
formViewModel = ViewModelProviders.of(activity!!).get(FormVisitaAceViewModel::class.java)
}
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
return inflater.inflate(R.layout.fragment_form_visita_ace_tratamento, container, false)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
val listener = object : OnFormElementValueChangedListener {
override fun onValueChanged(formElement: BaseFormElement<*>) {
}
}
val formBuilder = form(context!!, view.formTratamentoRecyclerView, listener) {
number(Tag.TotalDepositosEliminados.ordinal) {
title = getString(R.string.formace_tratamento_dep_elim)
}
number(Tag.TotalDepositosEliminadosLarvicida.ordinal) {
title = getString(R.string.formace_tratamento_dep_elim_larv)
valueObservers.add({ newValue, element ->
if (!newValue!!.isEmpty()) {
val larvicida = getFormElement(Tag.TipoLarvicida.ordinal)
val value = newValue.toInt()
larvicida!!.required = value > 0
larvicida.visible = value > 0
refreshView()
}
})
}
dropDown<Larvicida>(Tag.TipoLarvicida.ordinal) {
title = getString(R.string.formace_tratamento_tipo_larvicida)
options = viewModel.larvicidas.toList()
hint = getString(R.string.form_selecione)
dialogTitle = hint
visible = false
}
number(Tag.ColherGrande.ordinal) {
title = getString(R.string.formace_tratamento_colher_grande)
}
number(Tag.ColherPequena.ordinal) {
title = getString(R.string.formace_tratamento_colher_pequena)
}
number(Tag.QuantidadeLarvicida.ordinal) {
title = getString(R.string.formace_tratamento_qtde_larvicida)
}
dropDown<Adulticida>(Tag.TipoAdulticida.ordinal) {
title = getString(R.string.formace_tratamento_tipo_adulticida)
options = viewModel.adulticidas.toList()
hint = getString(R.string.form_selecione)
dialogTitle = hint
valueObservers.add({ newValue, element ->
val cargas = getFormElement(Tag.QuantidadeCargasAdulticida.ordinal)
cargas!!.visible = newValue !== null
cargas.required = newValue !== null
})
}
number(Tag.QuantidadeCargasAdulticida.ordinal) {
title = getString(R.string.formace_tratamento_qtde_adulticida)
visible = false
}
}
formViewModel.addForm(formBuilder)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment