package jackall.moncalc.viewmodel
import android.arch.lifecycle.ViewModel
import android.arch.lifecycle.ViewModelProvider
import android.databinding.ObservableField
import io.reactivex.schedulers.Schedulers
import jackall.moncalc.common.Notification
import jackall.moncalc.db.QuestRecordRealmHelper
import jackall.moncalc.utils.RxBus
import kotlin.concurrent.thread
/**
* Created by matsumoto_k on 2017/11/03.
*/
class HistoryViewModel() : LifecycleViewModel() {
val todayTempleCount = ObservableField<String>()
val todayDrop = ObservableField<String>()
val todaySpecialDrop = ObservableField<String>()
val todaySpecialPercent = ObservableField<String>()
val weekTempleCount = ObservableField<String>()
val weekDrop = ObservableField<String>()
val weekSpecialDrop = ObservableField<String>()
val weekSpecialPercent = ObservableField<String>()
// var lineData: LineData
// var labels: ArrayList<String>
// val refreshLayoutLoading = ObservableBoolean(true)
// val hisotoryItems = ArrayList<HistoryItem>()
init {
thread {
setHistoryData()
}
RxBus.observe<Notification>().observeOn(Schedulers.newThread()).subscribe {
when (it.name) {
Notification.DATACHANGED.name -> {
thread {
setHistoryData()
}
}
}
}
// val entries = ArrayList<Entry>()
// val labels = ArrayList<String>()
// questRealmHelper.findByPeriod(30).forEachIndexed { index, value ->
// entries.add(
// Entry(index.toFloat(), value.toFloat())
// )
// }
//
// val lineChartModel = LineChartModel(entries, "神殿周回数")
// lineData = lineChartModel.lineData
// this.labels = labels
// onRefresh()
}
fun setHistoryData() {
val questRealmHelper = QuestRecordRealmHelper()
todayTempleCount.set(questRealmHelper.getTodayCount().toString())
todayDrop.set(questRealmHelper.getTodayDropCount().toString())
todaySpecialDrop.set(questRealmHelper.getTodaySpecialCount().toString())
val todaySpecialPercent = (questRealmHelper.getTodaySpecialCount().toFloat() / questRealmHelper.getTodayCount().toFloat()) * 100
if (todaySpecialPercent.isNaN()) {
this.todaySpecialPercent.set("0%")
} else {
this.todaySpecialPercent.set("${String.format("%.1f", todaySpecialPercent)}%")
}
weekTempleCount.set(questRealmHelper.getWeekCount().toString())
weekDrop.set(questRealmHelper.getWeekDropCount().toString())
weekSpecialDrop.set(questRealmHelper.getWeekSpecialCount().toString())
val weekSpecialPercent = (questRealmHelper.getWeekSpecialCount().toFloat() / questRealmHelper.getWeekCount().toFloat()) * 100
if (weekSpecialPercent.isNaN()) {
this.weekSpecialPercent.set("0%")
} else {
this.weekSpecialPercent.set("${String.format("%.1f", weekSpecialPercent)}%")
}
questRealmHelper.close()
}
// fun onRefresh() {
// refreshLayoutLoading.set(true)
// hisotoryItems.clear()
// questRealmHelper.findAll().sortedByDescending { it.createAt }.forEach {
// hisotoryItems.add(
// HistoryItem(templeName = monstDataRealmHelper.findNameById(Temple::class.java, it.templeId),
// fruitName = monstDataRealmHelper.findNameById(Fruit::class.java, it.fruitId),
// gradeName = monstDataRealmHelper.findNameById(Grade::class.java, it.gradeId),
// createAt = it.createAt)
// )
// }
// adapter.setItemAndRefresh(hisotoryItems)
// refreshLayoutLoading.set(false)
// }
// object Adapter {
// @JvmStatic
// @BindingAdapter("android:lineChart", "android:lineLabels")
// fun hoge(mChart: LineChart, lineData: LineData, labels: ArrayList<String>) {
// mChart.data = lineData
// val hoge = mChart.xAxis
// hoge.setValueFormatter { value, axis ->
// val tmp = value
// if (value.toInt().toFloat() == tmp) {
// labels.get(value.toInt())
// } else {
// ""
// }
// }
// mChart.setDrawGridBackground(false)
// }
// }
override fun onDestroy() {
super.onDestroy()
}
class Factory() : ViewModelProvider.NewInstanceFactory() {
override fun <T : ViewModel?> create(modelClass: Class<T>): T {
return jackall.moncalc.viewmodel.HistoryViewModel() as T
}
}
}