diff options
author | Robert Jaros <rjaros@finn.pl> | 2018-01-29 21:03:34 +0100 |
---|---|---|
committer | Robert Jaros <rjaros@finn.pl> | 2018-01-29 21:03:34 +0100 |
commit | 2c7ca3f8808935fc0c56458dca54f7bf417141f7 (patch) | |
tree | 68d02115d3cc0467f825560f2b65a9591e5d78bc /examples/showcase/src/main/kotlin/com/example/DataTab.kt | |
parent | b43764a2088912162ed5e8df2f6da7d2598fb1a3 (diff) | |
download | kvision-2c7ca3f8808935fc0c56458dca54f7bf417141f7.tar.gz kvision-2c7ca3f8808935fc0c56458dca54f7bf417141f7.tar.bz2 kvision-2c7ca3f8808935fc0c56458dca54f7bf417141f7.zip |
Showcase example
Diffstat (limited to 'examples/showcase/src/main/kotlin/com/example/DataTab.kt')
-rw-r--r-- | examples/showcase/src/main/kotlin/com/example/DataTab.kt | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/examples/showcase/src/main/kotlin/com/example/DataTab.kt b/examples/showcase/src/main/kotlin/com/example/DataTab.kt new file mode 100644 index 00000000..177167c4 --- /dev/null +++ b/examples/showcase/src/main/kotlin/com/example/DataTab.kt @@ -0,0 +1,76 @@ +package com.example + +import com.lightningkite.kotlin.observable.list.observableListOf +import pl.treksoft.kvision.data.DataComponent +import pl.treksoft.kvision.data.DataContainer +import pl.treksoft.kvision.form.check.CHECKBOXSTYLE +import pl.treksoft.kvision.form.check.CheckBox +import pl.treksoft.kvision.html.BUTTONSTYLE +import pl.treksoft.kvision.html.Button +import pl.treksoft.kvision.panel.FLEXDIR +import pl.treksoft.kvision.panel.FLEXWRAP +import pl.treksoft.kvision.panel.FlexPanel +import pl.treksoft.kvision.panel.HPanel +import pl.treksoft.kvision.panel.SimplePanel +import pl.treksoft.kvision.panel.VPanel +import pl.treksoft.kvision.utils.px + +class DataTab : SimplePanel() { + init { + this.marginTop = 10.px() + this.minHeight = 400.px() + + val panel = VPanel(spacing = 5) + + class DataModel(checked: Boolean, text: String) : DataComponent() { + var checked: Boolean by obs(checked) + var text: String by obs(text) + } + + val list = observableListOf( + DataModel(false, "January"), + DataModel(false, "February"), + DataModel(false, "March"), + DataModel(false, "April"), + DataModel(false, "May"), + DataModel(false, "June"), + DataModel(false, "July"), + DataModel(false, "August"), + DataModel(false, "September"), + DataModel(false, "October"), + DataModel(false, "November") + ) + val dataContainer = DataContainer(list, { index -> + CheckBox( + value = list[index].checked, + label = if (list[index].checked) "<b>${list[index].text}</b>" else "${list[index].text}" + ).apply { + rich = true + style = CHECKBOXSTYLE.PRIMARY + onClick { + list[index].checked = this.value + } + } + }, child = FlexPanel(FLEXDIR.ROW, spacing = 10, wrap = FLEXWRAP.WRAP)) + panel.add(dataContainer) + + val butPanel = HPanel(spacing = 10) + butPanel.add(Button("Add December", style = BUTTONSTYLE.SUCCESS).onClick { + list.add(DataModel(true, "December")) + }) + butPanel.add(Button("Check all", style = BUTTONSTYLE.INFO).onClick { + list.forEach { it.checked = true } + }) + butPanel.add(Button("Uncheck all", style = BUTTONSTYLE.INFO).onClick { + list.forEach { it.checked = false } + }) + butPanel.add(Button("Reverse list", style = BUTTONSTYLE.DANGER).onClick { + list.reverse() + }) + butPanel.add(Button("Remove checked", style = BUTTONSTYLE.DANGER).onClick { + list.filter { it.checked }.forEach { list.remove(it) } + }) + panel.add(butPanel) + this.add(panel) + } +} |