coffeescript-ui
Version:
Coffeescript User Interface System
90 lines (74 loc) • 2.45 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 CUI.DigiDisplay extends CUI.DOMElement
constructor: (opts) ->
super(opts)
initOpts: ->
super()
digits:
mandatory: true
check: Array
display: (str) ->
for c, idx in str.split("")
if idx == @_digits.length
break
info = @__digitsMap[idx]
if not info
continue
if info.map.hasOwnProperty(c)
_idx = info.map[c]
else
_idx = 0
fc = info.first_div
if not info.height
info.height = CUI.dom.getDimensions(fc).borderBoxHeight
CUI.dom.setStyleOne(fc, "marginTop", "-"+(_idx*info.height)+"px")
fc.setAttribute("c", c)
fc.setAttribute("idx", _idx)
createMarkup: ->
for digit, digit_idx in @_digits
if digit.static
CUI.dom.append(@__displayDiv, container = CUI.dom.div("cui-digi-display-static cui-digi-display-#{digit_idx}"))
CUI.dom.addClass(CUI.dom.append(container, CUI.dom.text(digit.static)), digit.class)
if digit.attr
container.getAttribute(digit.attr)
continue
digit.__regexp = new RegExp(digit.mask)
CUI.dom.append(@__displayDiv, container = CUI.dom.div("cui-digi-display-container cui-digi-display-#{digit_idx}"))
CUI.dom.addClass(container, digit.class)
if digit.attr
container.getAttribute(digit.attr)
# for the "unknown character
fc = CUI.dom.div("cui-digi-display-digit")
fc.innerHTML = " "
CUI.dom.append(container, fc)
idx = 1
matched = false
for i in [32..128]
if digit.__regexp.exec(c = String.fromCharCode(i))
if i == 32
div = CUI.dom.div("cui-digi-display-digit")
div.innerHTML = " "
CUI.dom.append(container, div)
else
div = CUI.dom.div("cui-digi-display-digit")
div.textContent = c
CUI.dom.append(container, div)
map[c] = idx
idx++
matched = true
CUI.util.assert(matched, "DigiDisplay.createMarkup", "Digit #{digit_idx} not matched against the regexp. ASCII range 32-128 is allowed.", digit: digit)
# console.debug "created markup with map", map