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=5dfdd6361927683c5aa716c1e3477bc603c01859;hp=250f348d0b5c75096178fe78810b983f3175e00f;hb=6feb1c7f35b819955c56b14b6cfb7d1c21c0cffa;hpb=a78489200dddce699ac1c30bd78d0a2a778166a2 diff --git a/app/assets/javascripts/views/scrolls/play.js.coffee b/app/assets/javascripts/views/scrolls/play.js.coffee index 250f348d..5dfdd636 100644 --- a/app/assets/javascripts/views/scrolls/play.js.coffee +++ b/app/assets/javascripts/views/scrolls/play.js.coffee @@ -59,13 +59,13 @@ class Pettanr.Views.Scroll.PlayModule.Footer extends Pettanr.View success: (@author) => @panel_face_button = @panel.mini_face_button({ context: this, - click_panel: () -> + click: () -> @trigger('click:panel') }) @author_face_button = @author.mini_face_button({ context: this, - click_author: () -> - @trigger('click:author') + click: () -> + @trigger('click:author', @author) }) l1 = new Tag.H3({ content: Pettanr.AppHelper.t_m('Panel') @@ -151,42 +151,46 @@ class Pettanr.Views.Scroll.PlayModule.Panel extends Pettanr.View render: () -> this.$el.html('') - @panel = @panel.with_elements() # retake panel for 'with_elements' mode - @panel.fetch({cache: true}).done => - @panel.attributes = @panel.replaced_attributes() - 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() - this.$el.append(body.render().el) - this.$el.append(@footer_switch.render().el) - this.$el.append(@footer.render().el) - @trigger('ready', @panel) + @panel = @panel.play() # retake panel for 'with_elements' mode + @panel.fetch({ + success: (model, response, opt) => + @panel.attributes = @panel.decoded_attributes() + 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() + this.$el.append(body.render().el) + this.$el.append(@footer_switch.render().el) + this.$el.append(@footer.render().el) + @trigger('ready', @panel) + error: (item, response, opt) => + @open_error_dialog(response, opt) + }) this hide: () -> @@ -221,8 +225,8 @@ class Pettanr.Views.Scroll.PlayModule.Panel extends Pettanr.View click_show: () -> @trigger('http_get', @panel.show_url()) - click_author: () -> - @trigger('http_get', @panel.author().show_url()) + click_author: (author) -> + @trigger('http_get', author.show_url()) click_insert: () -> @trigger('click:insert', this) @@ -254,6 +258,24 @@ class Pettanr.Views.Scroll.PlayModule.InsertPoint extends Tag.Div attr = {style: Pettanr.to_style(style)} this.$el.attr(attr) +class Pettanr.Views.Scroll.PlayModule.EmptyNotice extends Tag.H2 + + clear: () -> + this.$el.html('') + @hide() + @render() + this + + hide: () -> + @set_style({display: 'none'}) + + show: () -> + @set_style({display: 'inline'}) + + set_style: (style) -> + attr = {style: Pettanr.to_style(style)} + this.$el.attr(attr) + class Pettanr.Views.Scroll.PlayModule.Panels extends Pettanr.View tagName: 'ul' className: 'player' @@ -267,20 +289,32 @@ class Pettanr.Views.Scroll.PlayModule.Panels extends Pettanr.View render: () -> this.$el.html('') + @empty_notice = new Pettanr.Views.Scroll.PlayModule.EmptyNotice({content: I18n.t('scrolls.play.empty')}) + this.$el.append(@empty_notice.clear().el) _.each @items, (scroll_panel) => @append_scroll_panel(scroll_panel) + @refresh_empty_notice() + this + + refresh_empty_notice: () -> + if @views.length < 1 + @empty_notice.show() + else + @empty_notice.hide() this append_scroll_panel: (scroll_panel) -> return if not scroll_panel.has_panel() panel_view = @create_panel_view(scroll_panel) 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, }) @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) @@ -291,6 +325,9 @@ class Pettanr.Views.Scroll.PlayModule.Panels extends Pettanr.View ready: (panel) -> this.credits.push(panel.licensed_pictures()) + http_get: (url) -> + @trigger('http_get', url) + click_insert: (panel_view = null) -> @dialog = new Editor.Player.PanelInsertDialog({ parent: this, binder: @binder, target_model: Pettanr.ScrollPanel, @@ -388,6 +425,7 @@ class Pettanr.Views.Scroll.PlayModule.Panels extends Pettanr.View success = (model, response) => @remove_panel_view(panel_view) panel_view.remove() + @refresh_empty_notice() @refresh_views() @trigger('click:destroy') Pettanr.Proxy.destroy(panel_view.scroll_panel, {success: success}) @@ -449,18 +487,43 @@ class Pettanr.Views.Scroll.PlayModule.Body extends Pettanr.View @pager = options.pager @items = @list.items() - render_empty: () -> + render: () -> this.$el.html('') - this.$el.append((new Tag.H2({content: I18n.t('scrolls.play.empty')})).render().el) + # paginate(@pager) + credits = new Pettanr.View.Credits(this, {icon: true}) + @panels = new Pettanr.Views.Scroll.PlayModule.Panels({ + parent: this, + binder: @binder, + items: @items, + credits: credits, + }) + @listenTo(credits, 'click:credit:icon', @click_credit_icon) + @listenTo(@panels, 'click:insert', @click_insert) + @listenTo(@panels, 'click:move', @click_move) + @listenTo(@panels, 'dialog:close', @close_dialog) + this.$el.append(@panels.render().el) + @append_rb() + @appender = new Pettanr.Views.Scroll.PlayModule.Append({ + }) + @listenTo(@appender, 'click', @click_append) + this.$el.append(@appender.render().el) + if @is_appendable() + @appender.enable() + if @pager + @listenTo(@pager, 'page', @continue) + this.$el.append(@pager.render().el) + this.$el.append(credits.render().el) + @append_rb() this - render: () -> - if @items.length < 1 - @render_empty() + is_appendable: () -> + return true if _.isEmpty(@items) + if @pager and @pager.hasNextPage() + false else this.$el.html('') # paginate(@pager) - credits = new Pettanr.View.Credits({parent: this}) + credits = new Pettanr.View.Credits(this, {icon: true}) @panels = new Pettanr.Views.Scroll.PlayModule.Panels({ parent: this, binder: @binder, @@ -468,6 +531,7 @@ class Pettanr.Views.Scroll.PlayModule.Body extends Pettanr.View credits: credits, }) @listenTo(credits, 'click:credit:icon', @click_credit_icon) + @listenTo(@panels, 'http_get', @http_get) @listenTo(@panels, 'click:insert', @click_insert) @listenTo(@panels, 'click:move', @click_move) @listenTo(@panels, 'dialog:close', @close_dialog) @@ -483,7 +547,7 @@ class Pettanr.Views.Scroll.PlayModule.Body extends Pettanr.View this.$el.append(@pager.render().el) this.$el.append(credits.render().el) @append_rb() - this + true click_credit_icon: (item) -> @trigger('http_get', item.show_url()) @@ -491,6 +555,9 @@ class Pettanr.Views.Scroll.PlayModule.Body extends Pettanr.View click_append: () -> @panels.click_insert() + http_get: (url) -> + @trigger('http_get', url) + click_insert: (dialog) -> @appender.hide() @trigger('click:insert', dialog)