|
|
|
|
@ -8,7 +8,6 @@ import android.view.View |
|
|
|
|
import android.view.ViewGroup |
|
|
|
|
import androidx.recyclerview.widget.LinearLayoutManager |
|
|
|
|
import com.github.mikephil.charting.data.LineDataSet |
|
|
|
|
import io.realm.RealmObject |
|
|
|
|
import io.realm.RealmResults |
|
|
|
|
import kotlinx.android.synthetic.main.fragment_bankroll.* |
|
|
|
|
import kotlinx.coroutines.Dispatchers |
|
|
|
|
@ -36,6 +35,7 @@ import net.pokeranalytics.android.ui.view.rowrepresentable.BankrollMainRow |
|
|
|
|
import net.pokeranalytics.android.ui.view.rowrepresentable.BankrollTotalRow |
|
|
|
|
import net.pokeranalytics.android.ui.view.rowrepresentable.CustomizableRowRepresentable |
|
|
|
|
import net.pokeranalytics.android.util.extensions.sorted |
|
|
|
|
import timber.log.Timber |
|
|
|
|
import java.util.* |
|
|
|
|
import kotlin.collections.ArrayList |
|
|
|
|
|
|
|
|
|
@ -60,8 +60,6 @@ class BankrollFragment : DeletableItemFragment(), StaticRowRepresentableDataSour |
|
|
|
|
|
|
|
|
|
private var rows: ArrayList<RowRepresentable> = ArrayList() |
|
|
|
|
private var bankrollRowRepresentables: HashMap<String?, List<BankrollRowRepresentable>> = HashMap() |
|
|
|
|
private var lastItemClickedPosition: Int = 0 |
|
|
|
|
private var deletedRow: RowRepresentable? = null |
|
|
|
|
|
|
|
|
|
private lateinit var bankrolls: RealmResults<Bankroll> |
|
|
|
|
|
|
|
|
|
@ -106,26 +104,6 @@ class BankrollFragment : DeletableItemFragment(), StaticRowRepresentableDataSour |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
override fun adapterRows(): List<RowRepresentable>? { |
|
|
|
|
return rows |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) { |
|
|
|
|
lastItemClickedPosition = position |
|
|
|
|
when (row) { |
|
|
|
|
is BankrollGraphRow -> { |
|
|
|
|
val lineDataSet = row.dataSet as LineDataSet |
|
|
|
|
GraphActivity.newInstance(requireContext(), listOf(lineDataSet), title = getString(R.string.bankroll)) |
|
|
|
|
} |
|
|
|
|
is BankrollRowRepresentable -> { |
|
|
|
|
BankrollReportManager.reportForBankroll(row.bankrollId) { bankrollReport -> |
|
|
|
|
BankrollDetailsActivity.newInstanceForResult(this, bankrollReport, RequestCode.BANKROLL_DETAILS.value) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Business |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Init data |
|
|
|
|
@ -133,8 +111,17 @@ class BankrollFragment : DeletableItemFragment(), StaticRowRepresentableDataSour |
|
|
|
|
private fun initData() { |
|
|
|
|
|
|
|
|
|
this.bankrolls = getRealm().sorted() |
|
|
|
|
this.bankrolls.addChangeListener { _, _ -> |
|
|
|
|
this.createRowRepresentables() |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
this.createRowRepresentables() |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private fun createRowRepresentables() { |
|
|
|
|
|
|
|
|
|
rows.clear() |
|
|
|
|
bankrollRowRepresentables.clear() |
|
|
|
|
|
|
|
|
|
// Virtual bankroll |
|
|
|
|
val graphRow = BankrollGraphRow() |
|
|
|
|
@ -148,13 +135,13 @@ class BankrollFragment : DeletableItemFragment(), StaticRowRepresentableDataSour |
|
|
|
|
rows.add(CustomizableRowRepresentable(RowViewType.HEADER_TITLE, resId = R.string.bankrolls)) |
|
|
|
|
|
|
|
|
|
bankrolls.forEach { bankroll -> |
|
|
|
|
Timber.d("Creating row for br : ${bankroll.id}, name= ${bankroll.name}, isManaged = ${bankroll.isManaged()}, isValid = ${bankroll.isValid}") |
|
|
|
|
val row = BankrollTotalRow(bankroll.id, bankroll.name) |
|
|
|
|
rows.add(row) |
|
|
|
|
bankrollRowRepresentables[bankroll.id] = listOf(row) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
dataListAdapter.notifyDataSetChanged() |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
@ -184,17 +171,22 @@ class BankrollFragment : DeletableItemFragment(), StaticRowRepresentableDataSour |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
override fun updateUIAfterDeletion(itemId: String, itemPosition: Int) { |
|
|
|
|
lastItemClickedPosition = rows.indexOfFirst { if (it is BankrollRowRepresentable) it.bankrollId == itemId else false } |
|
|
|
|
deletedRow = rows.find { if (it is BankrollRowRepresentable) it.bankrollId == itemId else false } |
|
|
|
|
rows.removeAt(lastItemClickedPosition) |
|
|
|
|
dataListAdapter.notifyItemRemoved(lastItemClickedPosition) |
|
|
|
|
override fun adapterRows(): List<RowRepresentable>? { |
|
|
|
|
return rows |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
override fun updateUIAfterUndoDeletion(newItem: RealmObject) { |
|
|
|
|
deletedRow?.let { row -> |
|
|
|
|
rows.add(lastItemClickedPosition, row) |
|
|
|
|
dataListAdapter.notifyDataSetChanged() // update both virtual + ex-deleted |
|
|
|
|
override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) { |
|
|
|
|
when (row) { |
|
|
|
|
is BankrollGraphRow -> { |
|
|
|
|
val lineDataSet = row.dataSet as LineDataSet |
|
|
|
|
GraphActivity.newInstance(requireContext(), listOf(lineDataSet), title = getString(R.string.bankroll)) |
|
|
|
|
} |
|
|
|
|
is BankrollRowRepresentable -> { |
|
|
|
|
Timber.d("BankrollFragment > onRowSelected > reportForBankroll") |
|
|
|
|
BankrollReportManager.reportForBankroll(row.bankrollId) { bankrollReport -> |
|
|
|
|
BankrollDetailsActivity.newInstanceForResult(this, bankrollReport, RequestCode.BANKROLL_DETAILS.value) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|