codecombat/app/views/editor/component/AddThangComponentsModal.coffee

40 lines
No EOL
1.6 KiB
CoffeeScript

ModalView = require 'views/kinds/ModalView'
template = require 'templates/editor/component/add-thang-components-modal'
CocoCollection = require 'collections/CocoCollection'
LevelComponent = require 'models/LevelComponent'
module.exports = class UnnamedView extends ModalView
id: 'add-thang-components-modal'
template: template
plain: true
modalWidthPercent: 80
events:
'click .footer button': 'onDonePressed'
initialize: (options) ->
super()
@skipOriginals = options.skipOriginals or []
@components = new CocoCollection([], model: LevelComponent)
@components.url = "/db/level.component?term=&project=name,system,original,version,description"
@supermodel.loadCollection(@components, 'components')
getRenderData: ->
c = super()
c.components = (comp for comp in @components.models when not (comp.get('original') in @skipOriginals))
c.components = _.groupBy(c.components, (comp) -> comp.get('system'))
c.nameLists = {}
for system, componentList of c.components
c.components[system] = _.sortBy(componentList, (comp) -> comp.get('name'))
c.nameLists[system] = (comp.get('name') for comp in c.components[system]).join(', ')
c.systems = _.keys(c.components)
c.systems.sort()
c
getSelectedComponents: ->
selected = @$el.find('input[type="checkbox"]:checked')
vals = ($(el).val() for el in selected)
components = (c for c in @components.models when c.id in vals)
return components
# sparseComponents = ({original: c.get('original'), majorVersion: c.get('version').major} for c in components)
# return sparseComponents