class Editor.Player.PanelInsertDialog extends Editor.Dialog className: 'player-insert-dialog' initialize: (options) -> super(options) @parent = options.parent @binder = options.binder @target_model = options.target_model @insert_point = options.insert_point render: () -> this.$el.html('') launcher = new Pettanr.Views[@target_model.singular()].NewElementLauncher({ parent: this, model: @target_model }) @listenTo(launcher, 'http_get', @http_get) # http_get func already defined this.$el.append(launcher.render().el) this start: () -> this.$el.dialog({title: I18n.t('scroll_panels.player.insert_dialog')}) _this = this this.$el.dialog({ autoOpen: false, width: 750, height: 700, close: (ui, event) -> _this.close() }) this.$el.dialog('open') stop: () -> this.$el.dialog('close') ready: (view) -> @listenTo(view, 'http_get', @http_get) # @listenTo(view, 'http_post', @http_post) @listenTo(view, 'pick', @pick) if view['is_pickable'] and view.is_pickable() view.add_pick(@target_model) @refresh(view) pick: (item) -> if item.item_name() == @target_model.item_name() # Inspire else if @target_model.is_traceable(item.item_name()) # Trace else if item.item_name() == @target_model.pick_item_name() # Pick resource_picture to panel_picture new_item = new @target_model() new_item.set(new_item.pick(item), {silent: true}) t = if @insert_point # insert before insert_point's panel_view @insert_point.scroll_panel.get('t') else # insert before appender null new_item.set({scroll_id: @binder.get('id'), t: t}, {silent: true}) @listenTo(new_item, 'save:success', @success) @listenTo(new_item, 'save:fail', @fail) new_item.save() success: (model, response) -> # item is new model.url = model.default_url() Pettanr.cache.store(model) @trigger('pick', model, @insert_point) @close() @quit() fail: (model, response) -> @trigger('fail', response) close: () -> @trigger('close') quit: () -> @remove() is_catch: () -> false