Fixes issue when entries were deleted on custom field save

dev
Laurent 7 years ago
parent bf24fd1675
commit 07d78776ca
  1. 3
      app/src/main/java/net/pokeranalytics/android/model/filter/QueryCondition.kt
  2. 50
      app/src/main/java/net/pokeranalytics/android/model/realm/CustomField.kt
  3. 2
      app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt
  4. 5
      app/src/main/java/net/pokeranalytics/android/ui/fragment/data/CustomFieldDataFragment.kt

@ -23,6 +23,7 @@ import net.pokeranalytics.android.util.NULL_TEXT
import net.pokeranalytics.android.util.UserDefaults
import net.pokeranalytics.android.util.extensions.*
import java.text.DateFormatSymbols
import java.text.NumberFormat
import java.util.*
import kotlin.collections.ArrayList
@ -558,7 +559,7 @@ sealed class QueryCondition : FilterElementRow {
}
override fun labelForValue(value: Double, context: Context): String {
return value.toString()
return NumberFormat.getInstance().format(value)
}
override fun updateValueBy(filterCondition: FilterCondition) {

@ -22,7 +22,6 @@ import net.pokeranalytics.android.ui.view.rowrepresentable.CustomFieldRow
import net.pokeranalytics.android.ui.view.rowrepresentable.CustomizableRowRepresentable
import net.pokeranalytics.android.ui.view.rowrepresentable.SimpleRow
import net.pokeranalytics.android.util.enumerations.IntIdentifiable
import timber.log.Timber
import java.util.*
import kotlin.collections.ArrayList
@ -59,7 +58,11 @@ open class CustomField : RealmObject(), NameManageable, StaticRowRepresentableDa
// The type of the custom fields, mapped with the CustomField.Type enum
var type: Int = Type.LIST.uniqueIdentifier
set(value) {
if (field == Type.LIST.uniqueIdentifier && value != Type.LIST.uniqueIdentifier) {
this.removeListEntries()
}
field = value
this.updateRowRepresentation()
}
@ -244,7 +247,6 @@ open class CustomField : RealmObject(), NameManageable, StaticRowRepresentableDa
*/
fun addEntry(): CustomFieldEntry {
val entry = CustomFieldEntry()
// entry.customField = this
this.entries.add(entry)
sortEntries()
updateRowRepresentation()
@ -261,26 +263,42 @@ open class CustomField : RealmObject(), NameManageable, StaticRowRepresentableDa
updateRowRepresentation()
}
/**
* Clean the entries if the type is not a list & remove the deleted entries from realm
*/
fun cleanEntries(realm: Realm) {
realm.executeTransaction {
private fun removeListEntries() {
if (!isListType) {
entriesToDelete.addAll(entries)
entries.clear()
}
this.entriesToDelete.addAll(entries)
this.entries.clear()
// @TODO
entriesToDelete.forEach {
Timber.d("Delete entry: ${it.value} / ${it.id}")
realm.where<CustomFieldEntry>().equalTo("id", it.id).findFirst()?.deleteFromRealm()
if (realm != null) {
realm.executeTransaction {
this.entriesToDelete.forEach {
if (it.isManaged) {
it.deleteFromRealm()
}
}
}
entriesToDelete.clear()
}
}
/**
* Clean the entries if the type is not a list & remove the deleted entries from realm
*/
// fun cleanEntries(realm: Realm) {
// realm.executeTransaction {
//
// if (!isListType) {
// entriesToDelete.addAll(entries)
// entries.clear()
// }
//
// // @TODO
// entriesToDelete.forEach {
// Timber.d("Delete entry: V=${it.value} N=${it.numericValue} / ID=${it.id}")
// realm.where<CustomFieldEntry>().equalTo("id", it.id).findFirst()?.deleteFromRealm()
// }
// entriesToDelete.clear()
// }
// }
/**
* Returns a comparison criteria based on this custom field
*/

@ -1102,8 +1102,6 @@ open class Session : RealmObject(), Savable, Editable, StaticRowRepresentableDat
val entryValue = this.formattedValue(stat)
val dateValue = TextFormat(this.entryTitle(context))
return MultilineLegendValues(groupName, secondTitle, entryValue, dateValue)
}
else -> {

@ -195,11 +195,6 @@ class CustomFieldDataFragment : EditableDataFragment(), StaticRowRepresentableDa
}
}
override fun onDataSaved() {
super.onDataSaved()
customField.cleanEntries(getRealm())
}
/**
* Init UI
*/

Loading…
Cancel
Save