[add] analysis temple
1 parent 4f9f490 commit cfce33e7e7196ceb329d842af5ae3c4ce466754d
KeijuMatsumoto authored on 4 Nov 2017
Showing 8 changed files
View
31
app/src/main/kotlin/jackall/moncalc/adapter/AnalyzeTempleAdapter.kt 0 → 100644
package jackall.moncalc.adapter
 
import android.content.Context
import android.databinding.DataBindingUtil
import android.support.v7.widget.RecyclerView
import android.view.LayoutInflater
import android.view.ViewGroup
import jackall.moncalc.R
import jackall.moncalc.databinding.AnalyzeTempleListBinding
import jackall.moncalc.viewmodel.TempleAnalyzeItemViewModel
 
/**
* Created by matsumoto_k on 2017/11/04.
*/
class AnalyzeTempleAdapter(val context: Context, val items: ArrayList<TempleAnalyzeItemViewModel>) : RecyclerView.Adapter<AnalyzeTempleAdapter.ViewHolder>() {
 
override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int): ViewHolder {
val binding = DataBindingUtil.inflate<AnalyzeTempleListBinding>(LayoutInflater.from(context), R.layout.analyze_temple_list, parent, false)
return ViewHolder(binding)
}
 
override fun onBindViewHolder(holder: ViewHolder?, position: Int) {
holder?.binding?.viewModel = items.get(position)
}
 
override fun getItemCount(): Int {
return items.count()
}
 
inner class ViewHolder(val binding: AnalyzeTempleListBinding) : RecyclerView.ViewHolder(binding.root) {}
}
View
8
app/src/main/kotlin/jackall/moncalc/db/QuestRecordRealmHelper.kt
 
fun countById(id: Int): Int {
return realm.where(QuestRecord::class.java).equalTo("templeId", id).findAll().size
}
 
fun getAllSpecialPercent(): Float {
return (realm.where(QuestRecord::class.java).sum("specialCount").toFloat() / realm.where(QuestRecord::class.java).findAll().size.toFloat())*100
}
 
fun getSpecialPercent(templeId: Int): Float {
return (realm.where(QuestRecord::class.java).equalTo("templeId", templeId).sum("specialCount").toFloat() / realm.where(QuestRecord::class.java).findAll().size.toFloat())*100
}
}
View
5
app/src/main/kotlin/jackall/moncalc/viewmodel/OverlayRegistViewModel.kt
}
 
fun onClickRegist(view: View) {
val drops = RealmList<Drop>()
var count = 0
registAdapter.items.forEach {
if (monstDataRealmHelper.findIdByRank(Grade::class.java, it.gradeRank.get()) < 3) {
count++
}
drops.add(
Drop(
fruitId = monstDataRealmHelper.findIdByRank(Fruit::class.java, it.fruitRank.get()),
gradeId = monstDataRealmHelper.findIdByRank(Grade::class.java, it.gradeRank.get())
questRecordRealmHelper.insert(
QuestRecord(
attribute = monstDataRealmHelper.findTempleAttributeByRank(templeRank.get()),
templeId = monstDataRealmHelper.findIdByRank(Temple::class.java, templeRank.get()),
specialCount = count,
drops = drops,
createAt = Date()
)
)
View
13
app/src/main/kotlin/jackall/moncalc/viewmodel/TempleAnalyzeItemViewModel.kt 0 → 100644
package jackall.moncalc.viewmodel
 
import android.databinding.BaseObservable
 
/**
* Created by matsumoto_k on 2017/11/04.
*/
class TempleAnalyzeItemViewModel(
val templeName: String,
val templeCount: String,
val specialPercent: String
) : BaseObservable() {
}
View
43
app/src/main/kotlin/jackall/moncalc/viewmodel/TempleAnalyzeViewModel.kt
import android.arch.lifecycle.ViewModel
import android.arch.lifecycle.ViewModelProvider
import android.databinding.BindingAdapter
import android.graphics.Color
import android.support.v7.widget.LinearLayoutManager
import android.support.v7.widget.RecyclerView
import com.github.mikephil.charting.charts.PieChart
import com.github.mikephil.charting.components.Legend
import com.github.mikephil.charting.data.Entry
import com.github.mikephil.charting.data.PieData
import com.github.mikephil.charting.data.PieEntry
import com.github.mikephil.charting.formatter.IValueFormatter
import com.github.mikephil.charting.utils.ViewPortHandler
import jackall.moncalc.App
import jackall.moncalc.R
import jackall.moncalc.adapter.AnalyzeTempleAdapter
import jackall.moncalc.db.MonstDataRealmHelper
import jackall.moncalc.db.QuestRecordRealmHelper
import jackall.moncalc.model.PieChartModel
import jackall.moncalc.vo.Temple
 
 
/**
* Created by matsumoto_k on 2017/11/04.
val monstDataRealmHelper = MonstDataRealmHelper()
val baseTempleName by lazy { App.instance.resources.getStringArray(R.array.base_temple_name) }
var pieData: PieData
var pieChartModel: PieChartModel
var items: ArrayList<TempleAnalyzeItemViewModel>
 
init {
val entries = ArrayList<PieEntry>()
for (attribute in 0..4) {
}
}
pieChartModel = PieChartModel(entries, "")
this.pieData = pieChartModel.pieData
 
val hoge = ArrayList<TempleAnalyzeItemViewModel>()
hoge.add(
TempleAnalyzeItemViewModel(
"総合",
questRealmHelper.findAll().size.toString(),
"${String.format("%.1f", questRealmHelper.getAllSpecialPercent())}%"
)
)
//リストビューに入れる
monstDataRealmHelper.findAll(Temple::class.java).forEach {
val count = questRealmHelper.countById(it.id)
if (count == 0)
return@forEach
hoge.add(
TempleAnalyzeItemViewModel(
monstDataRealmHelper.findNameById(Temple::class.java, it.id),
count.toString(),
"${String.format("%.1f", questRealmHelper.getSpecialPercent(it.id))}%"
)
)
}
items = hoge
}
 
object Adapter {
@JvmStatic
mChart.legend.verticalAlignment = Legend.LegendVerticalAlignment.TOP
mChart.legend.horizontalAlignment = Legend.LegendHorizontalAlignment.RIGHT
mChart.legend.orientation = Legend.LegendOrientation.VERTICAL
mChart.isRotationEnabled = false
pieData.setValueFormatter(object : IValueFormatter {
override fun getFormattedValue(value: Float, entry: Entry?, dataSetIndex: Int, viewPortHandler: ViewPortHandler?): String {
return String.format("%.0f", value)
}
})
mChart.description.text = "神殿周回割合"
mChart.data = pieData
}
 
@JvmStatic
@BindingAdapter("android:setAnalyzeTempleList")
fun hogehoge(view: RecyclerView, items: ArrayList<TempleAnalyzeItemViewModel>) {
view.layoutManager = LinearLayoutManager(App.instance)
view.adapter = AnalyzeTempleAdapter(App.instance, items)
}
}
 
override fun onDestroy() {
View
1
■■■■
app/src/main/kotlin/jackall/moncalc/vo/QuestRecord.kt
*/
open class QuestRecord(
open var attribute: Int = -1,
open var templeId: Int = -1,
open var specialCount: Int = -1,
open var drops: RealmList<Drop> = RealmList<Drop>(),
open var createAt: Date = Date()
) : RealmObject()
View
102
app/src/main/res/layout/analyze_temple_list.xml 0 → 100644
<?xml version="1.0" encoding="utf-8"?>
 
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
 
<data>
 
<variable
name="viewModel"
type="jackall.moncalc.viewmodel.TempleAnalyzeItemViewModel" />
</data>
 
<android.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
 
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
 
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="#ffffff"
android:padding="4dp"
android:text="@{viewModel.templeName}"
android:textColor="#000000" />
 
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:orientation="horizontal">
 
<TextView
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="#ffffff"
android:gravity="center"
android:text="@{viewModel.specialPercent}"
android:textColor="#000000" />
 
<TextView
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="#ffffff"
android:gravity="center"
android:text="@{viewModel.templeCount}"
android:textColor="#000000" />
</LinearLayout>
</LinearLayout>
 
<FrameLayout
android:id="@+id/analyze_temple_list_center_border"
android:layout_width="1dp"
android:layout_height="0dp"
android:background="#000000"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
 
<FrameLayout
android:layout_width="1dp"
android:layout_height="0dp"
android:background="#000000"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintLeft_toRightOf="@id/analyze_temple_list_center_border"
app:layout_constraintTop_toTopOf="parent" />
 
<FrameLayout
android:layout_width="1dp"
android:layout_height="0dp"
android:background="#000000"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
 
<FrameLayout
android:layout_width="1dp"
android:layout_height="0dp"
android:background="#000000"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
 
<FrameLayout
android:layout_width="0dp"
android:layout_height="1dp"
android:background="#000000"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
 
 
</android.support.constraint.ConstraintLayout>
 
</layout>
View
208
app/src/main/res/layout/fragment_analyze_temple.xml
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
 
<data>
 
<variable
name="templeAnalyzeViewModel"
type="jackall.moncalc.viewmodel.TempleAnalyzeViewModel" />
</data>
 
<android.support.constraint.ConstraintLayout
<ScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content">
android:layout_height="match_parent">
 
<com.github.mikephil.charting.charts.PieChart
<android.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:pieChart="@{templeAnalyzeViewModel.pieData}" />
android:layout_height="wrap_content"
android:background="#ffffff">
 
</android.support.constraint.ConstraintLayout>
<com.github.mikephil.charting.charts.PieChart
android:id="@+id/analyze_temple_pie_chart"
android:layout_width="match_parent"
android:layout_height="400dp"
android:layout_marginEnd="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:pieChart="@{templeAnalyzeViewModel.pieData}"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/analyze_temple_list" />
 
<android.support.constraint.ConstraintLayout
android:id="@+id/constraintLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:background="#000000"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
 
<FrameLayout
android:layout_width="1dp"
android:layout_height="0dp"
android:background="#ffffff"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
 
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
 
<TextView
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center_horizontal"
android:padding="4dp"
android:text="神殿名"
android:textColor="#ffffff" />
 
<FrameLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1">
 
<FrameLayout
android:layout_width="1dp"
android:layout_height="match_parent"
android:layout_gravity="center_horizontal"
android:background="#ffffff" />
 
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
 
<TextView
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:text="特急率"
android:textColor="#ffffff" />
 
<TextView
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:text="周回数"
android:textColor="#ffffff" />
</LinearLayout>
</FrameLayout>
</LinearLayout>
 
</android.support.constraint.ConstraintLayout>
 
<android.support.v7.widget.RecyclerView
android:id="@+id/analyze_temple_list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:layout_marginStart="8dp"
android:setAnalyzeTempleList="@{templeAnalyzeViewModel.items}"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/constraintLayout" />
 
</android.support.constraint.ConstraintLayout>
</ScrollView>
</layout>