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: {}}) list = @panel.zorderd_elements() _.each list, (element) => element.fetch({cache: true}).done => @add_element(element) @body.on('panel:resize', @panel_resize) @listenTo(@dock, 'http_post', @http_post) add_element: (element) -> panel_element_view = @body.add_element(element) element_tab_form = @dock.add_element_to_element_tab(element) scenario_tab_form = @dock.add_element_to_scenario_tab(element) @dig(element, panel_element_view, element_tab_form, scenario_tab_form) if element.constructor.has_picture() @credits.add_picture(element.picture()) dig: (element, panel_element_view, element_tab_form, scenario_tab_form) -> _.each element.elements_items(), (child_element) => child_element.fetch({cache: true}).done => child_panel_element_view = panel_element_view.add_element(child_element) child_element_tab_form = element_tab_form.add_element(child_element) child_scenario_tab_form = scenario_tab_form.add_element(child_element) @dig(child_element, child_panel_element_view, child_element_tab_form, child_scenario_tab_form) remove_element: (element) -> render: () -> this.$el.html('') this.$el.append(@dialog.render().el) @dialog.$el.dialog({autoOpen: false, width: 640, height: 560 }) this.$el.append(@body.render().el) this.$el.append(@dock.render().el) @dock.element_bay.add_new_tab() 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 @history = new Pettanr.Views.History({parent: this}) @listenTo(@history, 'http_get', @http_get) render: () -> this.$el.html('') @history.render() this refresh: (view) -> this.$el.html('') this.$el.append(@history.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) @refresh(view) done: (params) -> this.$el.dialog('open') 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})