class Editor.PanelEditor extends Backbone.View tagName: 'div' className: 'panel-editor' initialize: (options) -> @panel = options.root_item @operators = options.operators @item = @panel @dialog = new Editor.PanelEditor.Dialog({ parent: this, operators: @operators }) @body = new Pettanr.Views.Panel.Body.Edit({ panel: @root_item(), operators: @operators, spot: null }) @dock = new Editor.PanelEditor.Dock({parent: this}) @credits = new Pettanr.Views.Panel.ShowModule.Credits({pictures: {}}) @body.on('panel:resize', @panel_resize) @listenTo(@dock, 'http_post', @http_post) @listenTo(@dock, 'add:element', @add_element) @listenTo(@dock, 'add:credit', @add_credit) add_element: (element) -> @body.add_element(element) add_credit: (element) -> @credits.add_picture(element.picture()) remove_element: (element) -> @body.remove_element(element) render: () -> this.$el.html('') this.$el.append(@dialog.render().el) @dialog.$el.dialog({ autoOpen: false, width: 750, height: 560 }) this.$el.append(@body.render().el) this.$el.append(@dock.render().el) this.$el.append(@credits.render().el) rb = new Tag.RowBreak() this.$el.append(rb.render().el) @dock.init_tabs() @dock.$el.tabs() this panel_resize: () -> my = @body.$el w = parseInt(my.width()) h = parseInt(my.height()) #$(trace + 'width').val(w) #$(trace + 'height').val(h) quit: () -> @dialog.$el.dialog('destroy') http_post: (url, dock) -> @trigger('http_post', url, this) # send editor save: () -> @listenTo(@panel, 'save:success', @post_success) @listenTo(@panel, 'save:fail', @post_fail) @panel.save(@dock.save_data()) false post_success: (model, response) -> Pettanr.History.lock_url = null # release editor @trigger('success', model, response) post_fail: (model, response) -> @trigger('fail', response) root_item: () -> @panel dom_id: () -> 'editor-' + Pettanr.to_s(@root_item().get('id')) dom_class: () -> 'editor' class Editor.PanelEditor.Dialog extends Backbone.View tagName: 'div' className: 'panel-editor-dialog' initialize: (options) -> @parent = options.parent @operators = options.operators @target_model = options.target_model @history = new Pettanr.Views.History({parent: this}) @listenTo(@history, 'http_get', @http_get) @listenTo(@history, 'get', @get) start: (@target_model, params, form) -> @get(params, form) stop: () -> @dialog().$el.dialog('close') render: () -> this.$el.html('') this refresh: (view) -> this.$el.html('') this.$el.append(@history.render().el) rb = new Tag.RowBreak() this.$el.append(rb.render().el) this.$el.append(view.el) getter_proxy: () -> proxy = new Pettanr.Proxy({operators: @operators}) @listenTo(proxy, 'ready', @ready) @listenTo(proxy, 'title', @title) @listenTo(proxy, 'title', @push_history) @listenTo(proxy, 'done', @done) @listenTo(proxy, 'lock', @lock) proxy http_get: (url, form) -> @getter_proxy().http_get(url, form) get: (params, form) -> @getter_proxy().get(params, form) 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) this.$el.dialog('open') done: (params) -> lock: (params) -> console.log('_lock') push_history: (params, str = null) -> @history.push(params, str) title: (params, str = null) -> t = str || I18n.t(params['controller'] + '.' + params['action'] + '.title') this.$el.dialog({title: t}) pick: (item) -> @trigger('pick', item)