solaris-js
Version:
A reusable component for interactive visualization of the Solar System
51 lines (39 loc) • 1.39 kB
text/coffeescript
import publicize from '../helpers/publicizer'
colorToString = (num) ->
'#' + ('00000' + (num | 0).toString(16)).substr(-6)
class Label
constructor: (, color, ) ->
template = document.createElement('template')
template.innerHTML = """
<div class="label">
<div class="spot"></div>
#{@model.name}
</div>
"""
= template.content.firstChild
.appendChild()
.querySelector('.spot').style.borderColor = colorToString(color)
.style.zIndex = 60 if .type is 'planet'
.addEventListener 'mousewheel', , false
onWheel: (e) =>
.style.display = 'none'
#
onClick: (cb) ->
.addEventListener 'click', cb
#
setPosition: (pos) ->
if not pos
.style.display = 'none' unless .style.display is 'none'
else
.style.transform = "translate3d(#{pos.x}px, #{pos.y}px, 0)"
.style.display = 'block' unless .style.display is 'block'
if .type in ['moon', 'spacecraft']
if not pos or pos.z > 0.9999
.style.display = 'none'
else
.style.display = 'block'
#
select: ->
el.classList.remove 'selected' for el in document.querySelectorAll('.label')
.classList.add 'selected'
export default publicize Label, methods: ['onClick', 'setPosition', 'select']