coffeescript-ui
Version:
Coffeescript User Interface System
697 lines (572 loc) • 16.7 kB
text/coffeescript
###
* coffeescript-ui - Coffeescript User Interface System (CUI)
* Copyright (c) 2013 - 2016 Programmfabrik GmbH
* MIT Licence
* https://github.com/programmfabrik/coffeescript-ui, http://www.coffeescript-ui.org
###
class Demo.ButtonDemo extends Demo
getName: () ->
"Buttons"
display: ->
= new Demo.DemoTable("cui-button-demo")
.table
__demo_table: null
__table: null
__buttons: []
__toggle_enabled_state_button: null
__setAllButtonsEnabledState: (enable) ->
for button in
if != button
button.setEnabled(enable)
__enableAllButtons: ->
if
.setText("Disable All Buttons")
__disableAllButtons: ->
if
.setText("Enable All Buttons")
__addLabel: (description, label) ->
.addExample( description, label.DOM )
__addButton: (kind, opts={}) ->
# CUI.dom.pre().text(CUI.util.dump(opts))
button = new CUI.Button(opts)
.addExample(kind, button.DOM)
.push(button)
return button
__addDivider: (text) ->
.addDivider(text)
createButtonDemo: ->
# ----------------- Buttons ---------------------------
=
"Icons Left+Right",
icon_left: new CUI.Icon(class: "fa-bolt")
icon_right: new CUI.Icon(class: "fa-filter")
text: "Caret"
onClick: (evt,button) =>
span = CUI.dom.span()
span.innerHTML = "<big>Ce</big><b>n</b>t<i>e</i>r"
"With Picture & Content",
left: CUI.dom.div("cui-button-demo-pic")
center: span
onClick: (evt,button) =>
btn = new CUI.ButtonHref
text: "Open Google"
target: "_blank"
href: "http://www.google.com"
.push(btn)
.addExample("ButtonHref", btn.DOM)
"With Small Tooltip & Confirm",
icon_left: new CUI.Icon(class: "fa-lightbulb-o")
left: true
confirm_on_click: "Are you sure?"
tooltip:
text: "Small but beautiful!"
"With Huge Tooltip",
text: "Hover to show a tooltip"
tooltip:
text:
onClick: (evt,button) =>
"Button with text ellipsis",
class: "cui-button-demo-limit-width"
text: "Button with text ellipsis"
onClick: (evt,button) =>
buttons = [
new CUI.Button(
radio: "group",
text: "1",
active: true,
disabled: true
)
#group2
new CUI.Button
radio: "group"
icon_inactive: new CUI.Icon(class: "fa-bomb")
icon_active: new CUI.Icon(class: "fa-bullhorn")
group: "group2"
text: "2"
#no group
new CUI.Button(radio: "group", text: "3")
new CUI.Button(
radio: "group"
group: "group2"
text: "4+5"
onClick: (ev, btn) ->
b = btn.getRadioButtons()[4]
if b.isHidden()
btn.setText("4-5")
b.show()
else
btn.setText("4+5")
b.hide()
)
#group single
new CUI.Button(radio: "group", group: "single", text: "5", hidden: true)
#group2
new CUI.Button(
radio: "group"
group: "group2"
text: "1?"
onActivate: (btn) ->
btn.getRadioButtons()[0].enable()
onDeactivate: (btn) ->
btn.getRadioButtons()[0].disable()
)
]
"Centered, fixed width",
text: "Centered, fixed width"
class: "cui-button-demo-centered-fixed-width"
icon_left: new CUI.Icon(class: "fa-bolt")
icon_right: new CUI.Icon(class: "fa-filter")
onClick: (evt,button) =>
"Custom color class",
text: "My Colors A"
size: "big"
class: "cui-button-demo-custom-colors-a"
switch: true
onClick: (evt,button) =>
"Custom color class",
text: "My Colors B"
size: "big"
class: "cui-button-demo-custom-colors-b"
switch: true
onClick: (evt,button) =>
"Custom color class",
text: "My Colors C"
size: "big"
class: "cui-button-demo-custom-colors-c"
switch: true
onClick: (evt,button) =>
createProgressMeterExample: ->
@
progress_meter = new CUI.ProgressMeter
class: "cui-progress-meter-demo"
onUpdate: (pm) ->
console.info "update on progress meter", pm.getState()
if pm.getState() == "spinning"
spin_btn?.activate()
if pm.getState() == "waiting"
wait_btn?.activate()
return
stepMeter = (startover=false) ->
state = progress_meter.getState()
console.debug "stepMeter", startover, state
next_timeout_ms = 20
if Math.floor(state) == 100
#finished 'loading'
state = "spinning"
else if startover
#begin 'loading' by setting state as number
state = 0
else if state != "waiting" and state != "spinning"
#means that state is now a number that we use to count the progress!
next_timeout_ms = 5
state = state + 0.1
progress_meter.setState(state)
if state == "spinning"
CUI.setTimeout
ms: 1000
call: =>
progress_meter.setState("waiting")
return
CUI.setTimeout(stepMeter, next_timeout_ms)
parent_meter_container = CUI.dom.append(CUI.dom.div("cui-progress-meter-demo-container"), progress_meter.DOM)
wait_btn = new CUI.Button
text: "Waiting"
active: true
group: "a"
radio: "progress"
onClick: =>
progress_meter.setState("waiting")
spin_btn = new CUI.Button
text: "Spinning"
group: "a"
radio: "progress"
onClick: =>
progress_meter.setState("spinning")
controls = [
new CUI.Buttonbar
buttons: [
wait_btn
,
new CUI.Button
text: "Go!"
group: "a"
radio: "progress"
onClick: =>
stepMeter(true)
,
spin_btn
]
.DOM
]
.addExample( "Progress Meter", parent_meter_container, controls )
createButtonbarDemo: ->
buttons = [
new CUI.Button(
radio: "group",
text: "1",
active: true,
disabled: true
)
#group2
new CUI.Button
radio: "group"
icon_inactive: new CUI.Icon(class: "fa-bomb")
icon_active: new CUI.Icon(class: "fa-bullhorn")
group: "group2"
text: "2"
#no group
new CUI.Button(radio: "group", text: "3")
new CUI.Button(
radio: "group"
group: "group2"
text: "4+5"
onClick: (ev, btn) ->
b = btn.getRadioButtons()[4]
if b.isHidden()
btn.setText("4-5")
b.show()
else
btn.setText("4+5")
b.hide()
)
#group single
new CUI.Button(radio: "group", group: "single", text: "5", hidden: true)
#group2
new CUI.Button(
radio: "group"
group: "group2"
text: "1?"
onActivate: (btn) ->
btn.getRadioButtons()[0].enable()
onDeactivate: (btn) ->
btn.getRadioButtons()[0].disable()
)
]
.addExample(
"Radio",
new CUI.Buttonbar(
buttons: buttons
).DOM
)
c = (ev, btn) ->
btn.hide()
buttons = [
new CUI.Button(text: "Tick", group: "ttt", onClick: c)
new CUI.Button(text: "Trick", group: "ttt", onClick: c)
new CUI.Button(text: "Track", group: "ttt", onClick: c)
new CUI.Button(text: "Horst", group: "ttt2", onClick: c)
new CUI.Button(text: "Torsten", group: "ttt2", onClick: c)
new CUI.Button(text: "Henk", group: "ttt2", onClick: c)
]
bb = new CUI.Buttonbar(
tooltip:
text: "Keep clickin"
buttons: buttons
)
rb = new CUI.Button
text: "reset"
onClick: ->
for btn in bb._buttons
btn.show()
.addExample("Buttonbar FAILS needs last-visible-child-info", [ bb.DOM, rb.DOM ])
bb = new CUI.Buttonbar(
tooltip:
text: "mixed buttons and labels"
buttons: [
new CUI.Button(text: "groupA", group: "groupA")
new CUI.Label(text: "Label")
new CUI.Button(text: "groupB", group: "groupB")
]
)
select = new CUI.Select
empty_text: "- Pick an Option -"
name: "select"
group: "groupB"
data:
view_select: 0 # set view to the first in list
view_data:
"result-standard":
variant_texts: 1
options: -> [
text: "Banana GroupB"
,
text: "Republic"
value: "Republik"
,
divider: true
,
text: "Orange"
]
select.start()
bb2 = new CUI.Buttonbar(
tooltip:
text: "mixed buttons and selects"
buttons: [
new CUI.Button(text: "groupA", group: "groupA")
select
new CUI.Button(text: "groupB", group: "groupB")
]
)
.addExample("Buttonbar", [ bb.DOM ])
.addExample("Buttonbar", [ bb2.DOM ])
bb = new CUI.Buttonbar(
tooltip:
text: "example 1"
buttons: [
new CUI.Button(text: "groupA", group: "groupA")
new CUI.Button(text: "groupB-active", group: "groupB", active: true )
new CUI.Button(text: "groupB", group: "groupB")
]
)
.addExample("example 1", [ CUI.dom.append(CUI.dom.append(CUI.dom.append(CUI.dom.div(), CUI.dom.div("cui-buttonbar-demo-margin-testers")), bb.DOM), CUI.dom.div("cui-buttonbar-demo-margin-testers"))] )
bb = new CUI.Buttonbar(
tooltip:
text: "example 2"
buttons: [
new CUI.Button(text: "groupA", group: "groupA")
new CUI.Button(text: "groupA", group: "groupA")
new CUI.Button(text: "groupB", group: "groupB")
]
)
.addExample("example 2", [ CUI.dom.append(CUI.dom.append(CUI.dom.append(CUI.dom.div(), CUI.dom.div("cui-buttonbar-demo-margin-testers")), bb.DOM), CUI.dom.div("cui-buttonbar-demo-margin-testers"))] )
bb = new CUI.Buttonbar(
tooltip:
text: "example 3"
buttons: [
new CUI.Button(text: "no group" )
new CUI.Button(text: "groupA", group: "groupA")
new CUI.Button(text: "groupB", group: "groupB")
]
)
.addExample("example 3", [ CUI.dom.append(CUI.dom.append(CUI.dom.append(CUI.dom.div(), CUI.dom.div("cui-buttonbar-demo-margin-testers")), bb.DOM), CUI.dom.div("cui-buttonbar-demo-margin-testers"))] )
bb = new CUI.Buttonbar(
tooltip:
text: "example 4"
buttons: [
new CUI.Button(text: "no group" )
new CUI.Button(text: "groupA", group: "groupA")
new CUI.Button(text: "no group")
]
)
.addExample("example 4", [ CUI.dom.append(CUI.dom.append(CUI.dom.append(CUI.dom.div(), CUI.dom.div("cui-buttonbar-demo-margin-testers")), bb.DOM), CUI.dom.div("cui-buttonbar-demo-margin-testers"))] )
bb = new CUI.Buttonbar(
tooltip:
text: "example 5"
buttons: [
new CUI.Button(text: "no group" )
new CUI.Button(text: "no group", group: "no group")
new CUI.Button(text: "no group")
]
)
.addExample("example 5", [ CUI.dom.append(CUI.dom.append(CUI.dom.append(CUI.dom.div(), CUI.dom.div("cui-buttonbar-demo-margin-testers")), bb.DOM), CUI.dom.div("cui-buttonbar-demo-margin-testers"))] )
bb = new CUI.Buttonbar(
tooltip:
text: "example 6"
buttons: [
new CUI.Button(text: "groupA", group: "groupA")
new CUI.Button(text: "groupA", group: "groupA")
new CUI.Button(text: "groupA", group: "groupA")
new CUI.Button(text: "groupA", group: "groupA")
new CUI.Button(text: "groupA", group: "groupA")
]
)
.addExample("example 6", [ CUI.dom.append(CUI.dom.append(CUI.dom.append(CUI.dom.div(), CUI.dom.div("cui-buttonbar-demo-margin-testers")), bb.DOM), CUI.dom.div("cui-buttonbar-demo-margin-testers"))] )
bb = new CUI.Buttonbar(
tooltip:
text: "example 1"
buttons: [
new CUI.Button(
text: "groupA", group: "groupA",
class: "cui-dialog"
)
new CUI.Button(
text: "groupB", group: "groupB",
class: "cui-dialog"
)
new CUI.Button(
text: "groupB", group: "groupB",
class: "cui-dialog"
)
]
)
.addExample("example 1", [ CUI.dom.append(CUI.dom.append(CUI.dom.append(CUI.dom.div(), CUI.dom.div("cui-buttonbar-demo-margin-testers")), bb.DOM), CUI.dom.div("cui-buttonbar-demo-margin-testers"))] )
@
Demo.register(new Demo.ButtonDemo())