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.UserDefaults
import net.pokeranalytics.android.util.extensions.* import net.pokeranalytics.android.util.extensions.*
import java.text.DateFormatSymbols import java.text.DateFormatSymbols
import java.text.NumberFormat
import java.util.* import java.util.*
import kotlin.collections.ArrayList import kotlin.collections.ArrayList
@ -558,7 +559,7 @@ sealed class QueryCondition : FilterElementRow {
} }
override fun labelForValue(value: Double, context: Context): String { override fun labelForValue(value: Double, context: Context): String {
return value.toString() return NumberFormat.getInstance().format(value)
} }
override fun updateValueBy(filterCondition: FilterCondition) { 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.CustomizableRowRepresentable
import net.pokeranalytics.android.ui.view.rowrepresentable.SimpleRow import net.pokeranalytics.android.ui.view.rowrepresentable.SimpleRow
import net.pokeranalytics.android.util.enumerations.IntIdentifiable import net.pokeranalytics.android.util.enumerations.IntIdentifiable
import timber.log.Timber
import java.util.* import java.util.*
import kotlin.collections.ArrayList 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 // The type of the custom fields, mapped with the CustomField.Type enum
var type: Int = Type.LIST.uniqueIdentifier var type: Int = Type.LIST.uniqueIdentifier
set(value) { set(value) {
if (field == Type.LIST.uniqueIdentifier && value != Type.LIST.uniqueIdentifier) {
this.removeListEntries()
}
field = value field = value
this.updateRowRepresentation() this.updateRowRepresentation()
} }
@ -244,7 +247,6 @@ open class CustomField : RealmObject(), NameManageable, StaticRowRepresentableDa
*/ */
fun addEntry(): CustomFieldEntry { fun addEntry(): CustomFieldEntry {
val entry = CustomFieldEntry() val entry = CustomFieldEntry()
// entry.customField = this
this.entries.add(entry) this.entries.add(entry)
sortEntries() sortEntries()
updateRowRepresentation() updateRowRepresentation()
@ -261,25 +263,41 @@ open class CustomField : RealmObject(), NameManageable, StaticRowRepresentableDa
updateRowRepresentation() updateRowRepresentation()
} }
/** private fun removeListEntries() {
* Clean the entries if the type is not a list & remove the deleted entries from realm
*/
fun cleanEntries(realm: Realm) {
realm.executeTransaction {
if (!isListType) { this.entriesToDelete.addAll(entries)
entriesToDelete.addAll(entries) this.entries.clear()
entries.clear()
}
// @TODO if (realm != null) {
entriesToDelete.forEach { realm.executeTransaction {
Timber.d("Delete entry: ${it.value} / ${it.id}") this.entriesToDelete.forEach {
realm.where<CustomFieldEntry>().equalTo("id", it.id).findFirst()?.deleteFromRealm() 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 * 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 entryValue = this.formattedValue(stat)
val dateValue = TextFormat(this.entryTitle(context)) val dateValue = TextFormat(this.entryTitle(context))
return MultilineLegendValues(groupName, secondTitle, entryValue, dateValue) return MultilineLegendValues(groupName, secondTitle, entryValue, dateValue)
} }
else -> { else -> {

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

Loading…
Cancel
Save