X-Git-Url: http://git.osdn.net/view?p=pettanr%2Fpettanr.git;a=blobdiff_plain;f=app%2Fassets%2Fjavascripts%2Fviews%2Fscrolls%2Fplay.js.coffee;h=87dde9857c333f0ddb8d015c535c65cb1628bf1a;hp=5dfdd6361927683c5aa716c1e3477bc603c01859;hb=9edc3731389bcae0de05ef6045cceb6b7581cc8f;hpb=8ec74dec6d3b971a050d2a14979783ccd54f06a2 diff --git a/app/assets/javascripts/views/scrolls/play.js.coffee b/app/assets/javascripts/views/scrolls/play.js.coffee index 5dfdd636..87dde985 100644 --- a/app/assets/javascripts/views/scrolls/play.js.coffee +++ b/app/assets/javascripts/views/scrolls/play.js.coffee @@ -16,7 +16,7 @@ class Pettanr.Views.Scroll.PlayModule.FooterSwitch extends Pettanr.View render: () -> this.$el.html('') attr = { - style: Pettanr.to_style({height: Pettanr.to_s(@panel.get('height')) + 'px'}) + style: Pettanr.to_style({height: Pettanr.to_s(@height()) + 'px'}) } this.$el.attr(attr) face = if @visible @@ -28,6 +28,12 @@ class Pettanr.Views.Scroll.PlayModule.FooterSwitch extends Pettanr.View this.$el.append(caption.render().el) if @enabled this + height: () -> + if @panel + @panel.get('height') + else + 20 + click: () -> return false if !@enabled @visible = !@visible @@ -48,6 +54,7 @@ class Pettanr.Views.Scroll.PlayModule.Footer extends Pettanr.View className: 'player-item-footer' initialize: (options) -> + @parent = options.parent @scroll = options.scroll @scroll_panel = options.scroll_panel @panel = options.panel @@ -55,56 +62,63 @@ class Pettanr.Views.Scroll.PlayModule.Footer extends Pettanr.View render: () -> this.$el.html('') @hide() - @panel.get_parent('author', this, { - success: (@author) => - @panel_face_button = @panel.mini_face_button({ - context: this, - click: () -> - @trigger('click:panel') - }) - @author_face_button = @author.mini_face_button({ - context: this, - click: () -> - @trigger('click:author', @author) - }) - l1 = new Tag.H3({ - content: Pettanr.AppHelper.t_m('Panel') - }) - l2 = new Tag.H3({ - content: Pettanr.AppHelper.t_m('ScrollPanel') - }) - this.$el.append(l1.render().el) - this.$el.append(@panel_face_button.render().el) - this.$el.append(@author_face_button.render().el) - this.$el.append( - Pettanr.AppHelper.distance_of_time_in_words_to_now(@panel.get('updated_at')) - ) - this.$el.append(l2.render().el) - if @scroll.is_own() - @new_scroll_panel = new Pettanr.ScrollPanel() - @insert_button = new Pettanr.View.Button.ItemAction(@new_scroll_panel, 'new', 'scroll_panels.player.before_insert', { + if @panel + @panel.get_parent('author', this, { + success: (@author) => + @panel_face_button = @panel.mini_face_button({ context: this, click: () -> - @trigger('click:insert') + @trigger('click:panel') }) - @move_button = new Pettanr.View.Button.ItemAction(@scroll_panel, 'edit', 'scroll_panels.player.move', { + @author_face_button = @author.mini_face_button({ context: this, click: () -> - @trigger('click:move') + @trigger('click:author', @author) }) - @destroy_button = new Pettanr.View.Button.ItemAction(@scroll_panel, 'destroy', 'scroll_panels.player.destroy', { - context: this, - click: () -> - @trigger('click:destroy') + l1 = new Tag.H3({ + content: Pettanr.AppHelper.t_m('Panel') }) - this.$el.append(@insert_button.render().el) - @append_rb() - this.$el.append(@move_button.render().el) - @append_rb() - this.$el.append(@destroy_button.render().el) - }) + this.$el.append(l1.render().el) + this.$el.append(@panel_face_button.render().el) + this.$el.append(@author_face_button.render().el) + this.$el.append( + Pettanr.AppHelper.distance_of_time_in_words_to_now(@panel.get('updated_at')) + ) + @append_scroll_panel() + }) + else + @append_scroll_panel() this + append_scroll_panel: () -> + l2 = new Tag.H3({ + content: Pettanr.AppHelper.t_m('ScrollPanel') + }) + this.$el.append(l2.render().el) + if @scroll.is_own() + @new_scroll_panel = new Pettanr.ScrollPanel() + @insert_button = new Pettanr.View.Button.ItemAction(@new_scroll_panel, 'new', 'scroll_panels.player.before_insert', { + context: this, + click: () -> + @trigger('click:insert') + }) + @move_button = new Pettanr.View.Button.ItemAction(@scroll_panel, 'edit', 'scroll_panels.player.move', { + context: this, + click: () -> + @trigger('click:move') + }) + @destroy_button = new Pettanr.View.Button.ItemAction(@scroll_panel, 'destroy', 'scroll_panels.player.destroy', { + context: this, + click: () -> + @trigger('click:destroy') + }) + this.$el.append(@insert_button.render().el) + @append_rb() + if @is_movable() + this.$el.append(@move_button.render().el) + @append_rb() + this.$el.append(@destroy_button.render().el) + hide: () -> attr = { style: Pettanr.to_style({display: 'none'}) @@ -117,6 +131,9 @@ class Pettanr.Views.Scroll.PlayModule.Footer extends Pettanr.View } this.$el.attr(attr) + is_movable: () -> + @parent.parent.views.length > 1 + class Pettanr.Views.Scroll.PlayModule.PanelBody extends Pettanr.View tagName: 'div' className: 'player-item-panel' @@ -130,22 +147,36 @@ class Pettanr.Views.Scroll.PlayModule.PanelBody extends Pettanr.View panel: @panel, spot: null }) + @listenTo(body, 'http_get', @http_get) this.$el.append(body.render().el) this + http_get: (url) -> + @trigger('http_get', url) + class Pettanr.Views.Scroll.PlayModule.Panel extends Pettanr.View tagName: 'li' className: 'player-item' initialize: (options) -> + @parent = options.parent @scroll = options.scroll @scroll_panel = options.scroll_panel + @panel = options.panel clear: () -> this.$el.html('') @scroll_panel.get_parent('panel', this, { success: (@panel) => + @trigger('exist', this) @render() + fail: (response, opt) => + @panel = null + @append_insert_point() + this.$el.append('Not found') + @append_footer_switch() + @append_footer() + @trigger('lost', response, opt) }) this @@ -155,44 +186,56 @@ class Pettanr.Views.Scroll.PlayModule.Panel extends Pettanr.View @panel.fetch({ success: (model, response, opt) => @panel.attributes = @panel.decoded_attributes() + @append_insert_point() body = new Pettanr.Views.Scroll.PlayModule.PanelBody({ panel: @panel }) - @footer_switch = new Pettanr.Views.Scroll.PlayModule.FooterSwitch({ - scroll_panel: @scroll_panel, - panel: @panel - }) - @listenTo(@footer_switch, 'click', @click_footer_switch) - move_to = new Tag.A({ - attr: {href: '/' + @scroll_panel.edit_url()}, - content: I18n.t('scroll_panels.player.move_to') - }) - @insert_point = new Pettanr.Views.Scroll.PlayModule.InsertPoint({ - class_name: 'insert-point', content: move_to.render().el - }) - @footer = new Pettanr.Views.Scroll.PlayModule.Footer({ - scroll: @scroll, - scroll_panel: @scroll_panel, - panel: @panel, - }) - @listenTo(move_to, 'click', @click_move_to) - @listenTo(@footer, 'click:panel', @click_show) - @listenTo(@footer, 'click:author', @click_author) - @listenTo(@footer, 'click:insert', @click_insert) - @listenTo(@footer, 'click:move', @click_move) - @listenTo(@footer, 'click:edit', @click_edit) - @listenTo(@footer, 'click:destroy', @click_destroy) - this.$el.append(@insert_point.clear().el) - @append_rb() + @listenTo(body, 'http_get', @http_get) this.$el.append(body.render().el) - this.$el.append(@footer_switch.render().el) - this.$el.append(@footer.render().el) + @append_footer_switch() + @append_footer() @trigger('ready', @panel) error: (item, response, opt) => @open_error_dialog(response, opt) }) this + append_insert_point: () -> + move_to = new Tag.A({ + attr: {href: '/' + @scroll_panel.edit_url()}, + content: I18n.t('scroll_panels.player.move_to') + }) + @insert_point = new Pettanr.Views.Scroll.PlayModule.InsertPoint({ + class_name: 'insert-point', content: move_to.render().el + }) + @listenTo(move_to, 'click', @click_move_to) + this.$el.append(@insert_point.clear().el) + @append_rb() + + append_footer_switch: () -> + @footer_switch = new Pettanr.Views.Scroll.PlayModule.FooterSwitch({ + parent: this, + scroll_panel: @scroll_panel, + panel: @panel + }) + @listenTo(@footer_switch, 'click', @click_footer_switch) + this.$el.append(@footer_switch.render().el) + + append_footer: () -> + @footer = new Pettanr.Views.Scroll.PlayModule.Footer({ + parent: this, + scroll: @scroll, + scroll_panel: @scroll_panel, + panel: @panel, + }) + @listenTo(@footer, 'click:panel', @click_show) + @listenTo(@footer, 'click:author', @click_author) + @listenTo(@footer, 'click:insert', @click_insert) + @listenTo(@footer, 'click:move', @click_move) + @listenTo(@footer, 'click:edit', @click_edit) + @listenTo(@footer, 'click:destroy', @click_destroy) + this.$el.append(@footer.render().el) + hide: () -> @set_style({display: 'none'}) @@ -240,6 +283,9 @@ class Pettanr.Views.Scroll.PlayModule.Panel extends Pettanr.View click_move_to: () -> @trigger('click:move_to', this) + http_get: (url) -> + @trigger('http_get', url) + class Pettanr.Views.Scroll.PlayModule.InsertPoint extends Tag.Div clear: () -> @@ -306,22 +352,28 @@ class Pettanr.Views.Scroll.PlayModule.Panels extends Pettanr.View append_scroll_panel: (scroll_panel) -> return if not scroll_panel.has_panel() panel_view = @create_panel_view(scroll_panel) + @views.push(panel_view) this.$el.append(panel_view.clear().el) @refresh_empty_notice() create_panel_view: (scroll_panel) -> panel_view = new Pettanr.Views.Scroll.PlayModule.Panel({ - scroll: @binder, scroll_panel: scroll_panel, + parent: this, scroll: @binder, scroll_panel: scroll_panel, }) + @listenTo(panel_view, 'exist', @exist) + @listenTo(panel_view, 'lost', @lost) @listenTo(panel_view, 'ready', @ready) @listenTo(panel_view, 'http_get', @http_get) @listenTo(panel_view, 'click:insert', @click_insert) @listenTo(panel_view, 'click:move', @click_move) @listenTo(panel_view, 'click:destroy', @click_destroy) @listenTo(panel_view, 'click:move_to', @click_move_to) - @views.push(panel_view) panel_view + exist: (panel_view) -> + + lost: (response, opt) -> + ready: (panel) -> this.credits.push(panel.licensed_pictures()) @@ -545,8 +597,6 @@ class Pettanr.Views.Scroll.PlayModule.Body extends Pettanr.View if !@pager.hasNextPage() @appender.enable() this.$el.append(@pager.render().el) - this.$el.append(credits.render().el) - @append_rb() true click_credit_icon: (item) ->