Filter

Constructors

Link copied to clipboard
constructor()

Types

Link copied to clipboard
class Checkmark<Item>(val labelAll: String = "ALL", val labelChecked: String = "Checked", val labelUnchecked: String = "Unchecked", initial: Boolean? = null) : Filter<Item, Boolean>
Link copied to clipboard
class Enum<Item, CellValue : Enum<CellValue>>(val items: EnumEntries<CellValue>, val mapper: @Composable (CellValue) -> String = { it.name }, val filter: (value: CellValue, filter: List<CellValue>) -> Boolean = { value, filter -> filter.isEmpty() || filter.contains(value) }, val multiSelect: Boolean = false, val labelAll: String = "ALL", initial: List<CellValue> = emptyList()) : Filter<Item, CellValue>
Link copied to clipboard
Link copied to clipboard
class List<Item, CellValue>(val items: List<CellValue>, val mapper: @Composable (CellValue) -> String = { it.toString() }, val filter: (value: CellValue, filter: List<CellValue>) -> Boolean = { value, filter -> filter.isEmpty() || filter.contains(value) }, val multiSelect: Boolean = false, val labelAll: String = "ALL", initial: List<CellValue> = emptyList()) : Filter<Item, CellValue>
Link copied to clipboard
class Number<Item, CellValue : Number>(val filter: (value: CellValue, filter: Filter.Number.State<CellValue>) -> Boolean = { value, filter -> if (filter.value == null) true else { val valid: Boolean = when (filter.type) { FilterType.Equal -> value == filter.value FilterType.NotEqual -> value != filter.value FilterType.LargerOrEqual -> { when (value) { is Double -> (value as Double) >= (filter.value as Double) is Float -> (value as Float) >= (filter.value as Float) is Int -> (value as Int) >= (filter.value as Int) is Long -> (value as Long) >= (filter.value as Long) is Short -> (value as Short) >= (filter.value as Short) is Byte -> (value as Byte) >= (filter.value as Byte) else -> throw RuntimeException("Type not handled!") } } FilterType.Larger -> { when (value) { is Double -> (value as Double) > (filter.value as Double) is Float -> (value as Float) > (filter.value as Float) is Int -> (value as Int) > (filter.value as Int) is Long -> (value as Long) > (filter.value as Long) is Short -> (value as Short) > (filter.value as Short) is Byte -> (value as Byte) > (filter.value as Byte) else -> throw RuntimeException("Type not handled!") } } FilterType.SmallerOrEqual -> { when (value) { is Double -> (value as Double) <= (filter.value as Double) is Float -> (value as Float) <= (filter.value as Float) is Int -> (value as Int) <= (filter.value as Int) is Long -> (value as Long) <= (filter.value as Long) is Short -> (value as Short) <= (filter.value as Short) is Byte -> (value as Byte) <= (filter.value as Byte) else -> throw RuntimeException("Type not handled!") } } FilterType.Smaller -> { when (value) { is Double -> (value as Double) < (filter.value as Double) is Float -> (value as Float) < (filter.value as Float) is Int -> (value as Int) < (filter.value as Int) is Long -> (value as Long) < (filter.value as Long) is Short -> (value as Short) < (filter.value as Short) is Byte -> (value as Byte) < (filter.value as Byte) else -> throw RuntimeException("Type not handled!") } } FilterType.Contains -> value.toString().contains(filter.value.toString()) FilterType.ContainsNot -> !value.toString().contains(filter.value.toString()) FilterType.StartsWith -> value.toString().startsWith(filter.value.toString()) FilterType.EndsWith -> value.toString().endsWith(filter.value.toString()) } valid } }, val instance: CellValue, initial: CellValue? = null) : Filter<Item, CellValue>
Link copied to clipboard
sealed class Style
Link copied to clipboard
class Text<Item, CellValue>(val cellValueToString: (value: CellValue) -> String = { it.toString() }, val filter: (value: String, filter: Filter.Text.State) -> Boolean = { value, filter -> if (filter.value.isEmpty()) true else { when (filter.type) { FilterType.Equal -> value.equals(filter.value, filter.ignoreCase) FilterType.NotEqual -> !value.equals(filter.value, filter.ignoreCase) FilterType.StartsWith -> value.startsWith(filter.value, filter.ignoreCase) FilterType.EndsWith -> value.endsWith(filter.value, filter.ignoreCase) FilterType.Contains -> value.contains(filter.value, filter.ignoreCase) FilterType.ContainsNot -> !value.contains(filter.value, filter.ignoreCase) // numeric => not possible! FilterType.LargerOrEqual, FilterType.Larger, FilterType.SmallerOrEqual, FilterType.Smaller, -> throw RuntimeException("Type not valid!") } } }, initial: String = "") : Filter<Item, CellValue>

Properties

Link copied to clipboard
abstract val state: MutableState<*>

Functions

Link copied to clipboard
abstract fun clear()
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
abstract fun info(): String
Link copied to clipboard
abstract fun isActive(): Boolean
Link copied to clipboard
abstract fun isValid(item: Item, itemToValue: (item: Item) -> CellValue): Boolean
Link copied to clipboard