diff --git a/app/src/main/kotlin/jackall/moncalc/adapter/AnalyzeTempleAdapter.kt b/app/src/main/kotlin/jackall/moncalc/adapter/AnalyzeTempleAdapter.kt new file mode 100644 index 0000000..8fc932c --- /dev/null +++ b/app/src/main/kotlin/jackall/moncalc/adapter/AnalyzeTempleAdapter.kt @@ -0,0 +1,31 @@ +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) : RecyclerView.Adapter() { + + override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int): ViewHolder { + val binding = DataBindingUtil.inflate(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) {} +} \ No newline at end of file diff --git a/app/src/main/kotlin/jackall/moncalc/db/QuestRecordRealmHelper.kt b/app/src/main/kotlin/jackall/moncalc/db/QuestRecordRealmHelper.kt index 7af055c..ecfc9af 100644 --- a/app/src/main/kotlin/jackall/moncalc/db/QuestRecordRealmHelper.kt +++ b/app/src/main/kotlin/jackall/moncalc/db/QuestRecordRealmHelper.kt @@ -42,4 +42,12 @@ 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 + } } \ No newline at end of file diff --git a/app/src/main/kotlin/jackall/moncalc/viewmodel/OverlayRegistViewModel.kt b/app/src/main/kotlin/jackall/moncalc/viewmodel/OverlayRegistViewModel.kt index f3a8184..07bedd7 100644 --- a/app/src/main/kotlin/jackall/moncalc/viewmodel/OverlayRegistViewModel.kt +++ b/app/src/main/kotlin/jackall/moncalc/viewmodel/OverlayRegistViewModel.kt @@ -47,7 +47,11 @@ fun onClickRegist(view: View) { val drops = RealmList() + 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()), @@ -59,6 +63,7 @@ QuestRecord( attribute = monstDataRealmHelper.findTempleAttributeByRank(templeRank.get()), templeId = monstDataRealmHelper.findIdByRank(Temple::class.java, templeRank.get()), + specialCount = count, drops = drops, createAt = Date() ) diff --git a/app/src/main/kotlin/jackall/moncalc/viewmodel/TempleAnalyzeItemViewModel.kt b/app/src/main/kotlin/jackall/moncalc/viewmodel/TempleAnalyzeItemViewModel.kt new file mode 100644 index 0000000..ff891d5 --- /dev/null +++ b/app/src/main/kotlin/jackall/moncalc/viewmodel/TempleAnalyzeItemViewModel.kt @@ -0,0 +1,13 @@ +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() { +} \ No newline at end of file diff --git a/app/src/main/kotlin/jackall/moncalc/viewmodel/TempleAnalyzeViewModel.kt b/app/src/main/kotlin/jackall/moncalc/viewmodel/TempleAnalyzeViewModel.kt index c526036..cc5842c 100644 --- a/app/src/main/kotlin/jackall/moncalc/viewmodel/TempleAnalyzeViewModel.kt +++ b/app/src/main/kotlin/jackall/moncalc/viewmodel/TempleAnalyzeViewModel.kt @@ -4,15 +4,22 @@ 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 /** @@ -25,6 +32,7 @@ val baseTempleName by lazy { App.instance.resources.getStringArray(R.array.base_temple_name) } var pieData: PieData var pieChartModel: PieChartModel + var items: ArrayList init { val entries = ArrayList() @@ -36,6 +44,29 @@ } pieChartModel = PieChartModel(entries, "") this.pieData = pieChartModel.pieData + + val hoge = ArrayList() + 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 { @@ -48,9 +79,21 @@ 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) { + view.layoutManager = LinearLayoutManager(App.instance) + view.adapter = AnalyzeTempleAdapter(App.instance, items) + } } override fun onDestroy() { diff --git a/app/src/main/kotlin/jackall/moncalc/vo/QuestRecord.kt b/app/src/main/kotlin/jackall/moncalc/vo/QuestRecord.kt index 0e6b466..3f7792d 100644 --- a/app/src/main/kotlin/jackall/moncalc/vo/QuestRecord.kt +++ b/app/src/main/kotlin/jackall/moncalc/vo/QuestRecord.kt @@ -10,6 +10,7 @@ open class QuestRecord( open var attribute: Int = -1, open var templeId: Int = -1, + open var specialCount: Int = -1, open var drops: RealmList = RealmList(), open var createAt: Date = Date() ) : RealmObject() \ No newline at end of file diff --git a/app/src/main/res/layout/analyze_temple_list.xml b/app/src/main/res/layout/analyze_temple_list.xml new file mode 100644 index 0000000..3ca01e9 --- /dev/null +++ b/app/src/main/res/layout/analyze_temple_list.xml @@ -0,0 +1,102 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_analyze_temple.xml b/app/src/main/res/layout/fragment_analyze_temple.xml index 231aa62..bd47dfa 100644 --- a/app/src/main/res/layout/fragment_analyze_temple.xml +++ b/app/src/main/res/layout/fragment_analyze_temple.xml @@ -1,5 +1,6 @@ - + @@ -8,14 +9,110 @@ type="jackall.moncalc.viewmodel.TempleAnalyzeViewModel" /> - + android:layout_height="match_parent"> - + android:layout_height="wrap_content" + android:background="#ffffff"> - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file