CocoView = require 'views/kinds/CocoView' template = require 'templates/editor/components/thang-component-config-view' Level = require 'models/Level' LevelComponent = require 'models/LevelComponent' nodes = require '../level/treema_nodes' module.exports = class ThangComponentConfigView extends CocoView className: 'thang-component-config-view' template: template changed: false events: 'click .treema-shortened': -> console.log 'clicked treema root' constructor: (options) -> super options @component = options.component @config = options.config or {} @world = options.world @level = options.level @callback = options.callback getRenderData: (context={}) -> context = super(context) context.component = @component.attributes context.configProperties = [] context afterRender: -> super() @buildTreema() buildTreema: -> thangs = if @level? then @level.get('thangs') else [] thangIDs = _.filter(_.pluck(thangs, 'id')) teams = _.filter(_.pluck(thangs, 'team')) superteams = _.filter(_.pluck(thangs, 'superteam')) superteams = _.union(teams, superteams) treemaOptions = supermodel: @supermodel schema: @component.attributes.configSchema data: _.cloneDeep @config callbacks: {change: @onConfigEdited} world: @world view: @ thangIDs: thangIDs teams: teams superteams: superteams nodeClasses: 'point2d': nodes.WorldPointNode 'viewport': nodes.WorldViewportNode 'bounds': nodes.WorldBoundsNode 'radians': nodes.RadiansNode 'team': nodes.TeamNode 'superteam': nodes.SuperteamNode 'meters': nodes.MetersNode 'kilograms': nodes.KilogramsNode 'seconds': nodes.SecondsNode 'speed': nodes.SpeedNode 'acceleration': nodes.AccelerationNode @editThangTreema = @$el.find('.treema').treema treemaOptions @editThangTreema.build() @editThangTreema.open(2) if _.isEqual(@config, {}) and not @editThangTreema.canAddChild() @$el.find('.panel-body').hide() onConfigEdited: => @changed = true @trigger 'changed', { component: @component, config: @data() } undo: -> @editThangTreema.undo() redo: -> @editThangTreema.redo() data: -> @editThangTreema.data