X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=app%2Fassets%2Fjavascripts%2Feditor%2Fpanel_editor.js.coffee;h=97eb95091a5174ae5eba913a945219872acb8378;hb=7cc9010daab46f2f6ae0b0314904ad9704022e7f;hp=4e52374a15826e594765ca9d8070a9cec83f76a5;hpb=036f1b63ac8fb061da5658f9a98e4e1669729173;p=pettanr%2Fpettanr.git diff --git a/app/assets/javascripts/editor/panel_editor.js.coffee b/app/assets/javascripts/editor/panel_editor.js.coffee index 4e52374a..97eb9509 100644 --- a/app/assets/javascripts/editor/panel_editor.js.coffee +++ b/app/assets/javascripts/editor/panel_editor.js.coffee @@ -5,23 +5,47 @@ class Editor.PanelEditor extends Backbone.View 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.Show.Credits({panel: @root_item()}) + @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) - this.$el.tabs() + @dock.init_tabs() + @dock.$el.tabs() this panel_resize: () -> @@ -31,6 +55,25 @@ class Editor.PanelEditor extends Backbone.View #$(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 @@ -40,3 +83,71 @@ class Editor.PanelEditor extends Backbone.View 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) +