From e05f18d1db38e531e7bca45d4ba8db71b082402f Mon Sep 17 00:00:00 2001 From: yasushiito Date: Thu, 20 Aug 2015 11:07:46 +0900 Subject: [PATCH] fix: fetch err --- app/assets/javascripts/controllers.js.coffee | 3 + .../javascripts/controllers/comics.js.coffee | 2 + .../javascripts/controllers/folders.js.coffee | 26 +++++--- .../javascripts/controllers/panels.js.coffee | 25 +++++--- .../javascripts/controllers/scrolls.js.coffee | 2 + .../javascripts/controllers/sheets.js.coffee | 2 + .../javascripts/controllers/stories.js.coffee | 2 + .../profiler/association/belongs_to.js.coffee | 2 + app/assets/javascripts/models/panel.js.coffee | 10 ++- .../peta/element_nestable_content.js.coffee | 8 ++- app/assets/javascripts/peta/item.js.coffee | 5 +- app/assets/javascripts/pettanr/cache.js.coffee | 28 +++++--- app/assets/javascripts/view.js.coffee | 16 +++++ app/assets/javascripts/view/layout.js.coffee | 3 - .../javascripts/views/authors/show.js.coffee | 20 +++--- .../javascripts/views/balloons/show.js.coffee | 30 +++++---- .../javascripts/views/ground_colors/show.js.coffee | 30 +++++---- .../views/ground_pictures/show.js.coffee | 30 +++++---- .../views/panel_pictures/show.js.coffee | 30 +++++---- .../javascripts/views/scrolls/play.js.coffee | 74 ++++++++++++---------- .../views/speech_balloons/show.js.coffee | 28 ++++---- .../javascripts/views/speeches/show.js.coffee | 32 ++++++---- 22 files changed, 251 insertions(+), 157 deletions(-) diff --git a/app/assets/javascripts/controllers.js.coffee b/app/assets/javascripts/controllers.js.coffee index 2f16137d..79794b4e 100644 --- a/app/assets/javascripts/controllers.js.coffee +++ b/app/assets/javascripts/controllers.js.coffee @@ -66,6 +66,9 @@ class Pettanr.AppController @set_model() retriever = new Pettanr.Cache.Retriever(@my_model_class, @params['id']) @listenTo(retriever, 'retrieve', @render_edit) + @listenTo(retriever, 'fail', (response, opt) => + @trigger('fail', response, opt) + ) retriever.edit(options) render_edit: (@item) -> diff --git a/app/assets/javascripts/controllers/comics.js.coffee b/app/assets/javascripts/controllers/comics.js.coffee index 658bce55..66195872 100644 --- a/app/assets/javascripts/controllers/comics.js.coffee +++ b/app/assets/javascripts/controllers/comics.js.coffee @@ -48,6 +48,8 @@ class Pettanr.ComicsController extends Pettanr.AppController }) show.render() @trigger('ready', show) + fail: (response, opt) => + @trigger('fail', response, opt) }) @trigger('done', @params) diff --git a/app/assets/javascripts/controllers/folders.js.coffee b/app/assets/javascripts/controllers/folders.js.coffee index 85b3b079..807d8561 100644 --- a/app/assets/javascripts/controllers/folders.js.coffee +++ b/app/assets/javascripts/controllers/folders.js.coffee @@ -10,6 +10,8 @@ class Pettanr.FoldersController extends Pettanr.AppController Pettanr.Folder.Root.retrieve(null, this, { success: (@item) => @children_html() + fail: (response, opt) => + @trigger('fail', response, opt) force: true }) @@ -21,6 +23,8 @@ class Pettanr.FoldersController extends Pettanr.AppController folder.retrieve(this, { success: (@item) => @render_show() + fail: (response, opt) => + @trigger('fail', response, opt) force: true }) @@ -41,15 +45,19 @@ class Pettanr.FoldersController extends Pettanr.AppController children_html: () -> @trigger('title', @params, @item.get('name')) collection = new Pettanr.Folder.Children({id: @item.get('id')}) - collection.fetch({cache: true}).done => - filer = new Locmare.Filer({ - item_name: 'folder', - items: collection.models, - pager: null, - }) - filer.render() - @trigger('ready', filer) - @trigger('done', @params) + collection.fetch({ + success: (models, response, opt) => + filer = new Locmare.Filer({ + item_name: 'folder', + items: collection.models, + pager: null, + }) + filer.render() + @trigger('ready', filer) + @trigger('done', @params) + error: (item, response, opt) => + @trigger('fail', response, opt) + }) count: () -> diff --git a/app/assets/javascripts/controllers/panels.js.coffee b/app/assets/javascripts/controllers/panels.js.coffee index e143e723..1b68d11b 100644 --- a/app/assets/javascripts/controllers/panels.js.coffee +++ b/app/assets/javascripts/controllers/panels.js.coffee @@ -37,15 +37,20 @@ class Pettanr.PanelsController extends Pettanr.AppController show_html: () -> @item = @item.play() # retake panel for 'with_elements' mode - @item.fetch({cache: false}).done => - @item.attributes = @item.decoded_attributes() - @trigger('title', @params, @item.get('caption')) - show = new Pettanr.Views.Panel.Show(@item, { - spot: null - }) - show.render() - @trigger('ready', show) - @trigger('done', @params) + @item.fetch({ + cache: false + success: (@parent_item, response, opt) => + @item.attributes = @item.decoded_attributes() + @trigger('title', @params, @item.get('caption')) + show = new Pettanr.Views.Panel.Show(@item, { + spot: null + }) + show.render() + @trigger('ready', show) + @trigger('done', @params) + error: (item, response, opt) => + @trigger('fail', response, opt) + }) count: () -> @@ -71,6 +76,8 @@ class Pettanr.PanelsController extends Pettanr.AppController success: (@item) -> @item.boosts 'post' @render_form() + fail: (response, opt) -> + @trigger('fail', response, opt) }) render_form: () -> diff --git a/app/assets/javascripts/controllers/scrolls.js.coffee b/app/assets/javascripts/controllers/scrolls.js.coffee index 739db3f9..d6fc8398 100644 --- a/app/assets/javascripts/controllers/scrolls.js.coffee +++ b/app/assets/javascripts/controllers/scrolls.js.coffee @@ -51,6 +51,8 @@ class Pettanr.ScrollsController extends Pettanr.AppController @listenTo(show, 'dialog:close', @close_dialog) show.render() @trigger('ready', show) + fail: (response, opt) => + @trigger('fail', response, opt) }) @trigger('done', @params) diff --git a/app/assets/javascripts/controllers/sheets.js.coffee b/app/assets/javascripts/controllers/sheets.js.coffee index 56c030a5..e3b1aa40 100644 --- a/app/assets/javascripts/controllers/sheets.js.coffee +++ b/app/assets/javascripts/controllers/sheets.js.coffee @@ -51,6 +51,8 @@ class Pettanr.SheetsController extends Pettanr.AppController }) show.render() @trigger('ready', show) + fail: (response, opt) => + @trigger('fail', response, opt) }) @trigger('done', @params) diff --git a/app/assets/javascripts/controllers/stories.js.coffee b/app/assets/javascripts/controllers/stories.js.coffee index f2926054..8f8cc234 100644 --- a/app/assets/javascripts/controllers/stories.js.coffee +++ b/app/assets/javascripts/controllers/stories.js.coffee @@ -53,6 +53,8 @@ class Pettanr.StoriesController extends Pettanr.AppController }) show.render() @trigger('ready', show) + fail: (response, opt) => + @trigger('fail', response, opt) }) @trigger('done', @params) diff --git a/app/assets/javascripts/locmare/profiler/association/belongs_to.js.coffee b/app/assets/javascripts/locmare/profiler/association/belongs_to.js.coffee index 50bc6b9a..ad6789f9 100644 --- a/app/assets/javascripts/locmare/profiler/association/belongs_to.js.coffee +++ b/app/assets/javascripts/locmare/profiler/association/belongs_to.js.coffee @@ -11,6 +11,8 @@ class Locmare.ProfilerModule.AssociationModule.BelongsTo extends Pettanr.View success: (@parent_item) => @set_filer() @render() + fail: (response, opt) => + @open_error_dialog(response, opt) }) this diff --git a/app/assets/javascripts/models/panel.js.coffee b/app/assets/javascripts/models/panel.js.coffee index fec66737..976cd443 100644 --- a/app/assets/javascripts/models/panel.js.coffee +++ b/app/assets/javascripts/models/panel.js.coffee @@ -78,9 +78,13 @@ class Pettanr.Panel.Play extends Pettanr.Panel class Pettanr.Panel.Edit extends Pettanr.Panel.Play load: (options) -> - @fetch().done => - @attributes = @decoded_attributes() - @load_elements(options) + @fetch({ + success: (model, response, opt) => + @attributes = @decoded_attributes() + @load_elements(options) + error: (item, response, opt) => + options.fail.call(options.context, response, opt) + }) save: (attrs) -> @url = @default_url() diff --git a/app/assets/javascripts/peta/element_nestable_content.js.coffee b/app/assets/javascripts/peta/element_nestable_content.js.coffee index 2e4c3925..43c61ea6 100644 --- a/app/assets/javascripts/peta/element_nestable_content.js.coffee +++ b/app/assets/javascripts/peta/element_nestable_content.js.coffee @@ -37,8 +37,12 @@ class Peta.ElementNestableContent extends Peta.Content options.success.call(options.context, this) return item = items.shift() - item.fetch().done => - @_load_elements(items, options) + item.fetch({ + success: (model, response, opt) => + @_load_elements(items, options) + error: (item, response, opt) => + options.fail.call(options.context, response, opt) + }) decoded_attributes: () -> attributes = {} diff --git a/app/assets/javascripts/peta/item.js.coffee b/app/assets/javascripts/peta/item.js.coffee index b5e54b8d..f5fa53bf 100644 --- a/app/assets/javascripts/peta/item.js.coffee +++ b/app/assets/javascripts/peta/item.js.coffee @@ -187,6 +187,9 @@ class Peta.Item extends Backbone.Model @listenTo(retriever, 'retrieve', (item) => options.success.call(context, item) ) + @listenTo(retriever, 'fail', (response, opt) => + options.fail.call(context, response, opt) + ) retriever.retrieve() get_child: (has_one_name, context, options = null) -> @@ -263,7 +266,7 @@ class Peta.Item extends Backbone.Model ) @listenTo(retriever, 'fail', (response, opt) => callback = options.fail - callback.call(context, response, options) + callback.call(context, response, opt) ) retriever.retrieve(options.force) diff --git a/app/assets/javascripts/pettanr/cache.js.coffee b/app/assets/javascripts/pettanr/cache.js.coffee index 8a6118c0..7d939227 100644 --- a/app/assets/javascripts/pettanr/cache.js.coffee +++ b/app/assets/javascripts/pettanr/cache.js.coffee @@ -60,8 +60,12 @@ class Pettanr.Cache #item sync: (item) -> - item.fetch().done => - item.expire_time.setTime(Date.now() + 10 * 60 * 1000) + item.fetch({ + success: (model, response, opt) => + item.expire_time.setTime(Date.now() + 10 * 60 * 1000) + error: (model, response, opt) => + @trigger('fail', response, opt) + }) class Pettanr.Cache.Retriever @@ -91,16 +95,20 @@ class Pettanr.Cache.Retriever @trigger('retrieve', empty_item) retrieve_force: (item) -> - item.fetch().done => - @trigger('retrieve', item) + item.fetch({ + success: (model, response, opt) => + @trigger('retrieve', item) + error: (model, response, opt) => + @trigger('fail', response, opt) + }) edit: (options = {}) -> empty_item = new @model({id: @id}) item = empty_item.hold() - if options.with_elements - item = item.with_elements() - item.fetch().done => - if options.with_elements - item.attributes = item.replaced_attributes({hold: true}) - @trigger('retrieve', item) + item.fetch({ + success: (model, response, opt) => + @trigger('retrieve', item) + error: (model, response, opt) => + @trigger('fail', response, opt) + }) diff --git a/app/assets/javascripts/view.js.coffee b/app/assets/javascripts/view.js.coffee index c652f3dd..f1a8a4e9 100644 --- a/app/assets/javascripts/view.js.coffee +++ b/app/assets/javascripts/view.js.coffee @@ -23,6 +23,22 @@ class Pettanr.View extends Backbone.View options.content = content new Tag.Span(options) + open_error_dialog: (response, options) -> + error_dialog = new Editor.Error.Dialog({parent: this}) + this.$el.append(error_dialog.render().el) + error_dialog.$el.dialog({ + autoOpen: false, + resizable: false, + width: 500, + height: 600, + modal: true, + buttons: { + close: () -> + $(@).dialog('close') + } + }) + error_dialog.start(response, options) + @replace_empty: (caption) -> if Pettanr.is_blank(caption) empty = new Pettanr.View.EmptyDiv() diff --git a/app/assets/javascripts/view/layout.js.coffee b/app/assets/javascripts/view/layout.js.coffee index 02a4ddee..36d9e26e 100644 --- a/app/assets/javascripts/view/layout.js.coffee +++ b/app/assets/javascripts/view/layout.js.coffee @@ -39,9 +39,6 @@ class Pettanr.View.Layout.Sns extends Pettanr.View.Layout.Base }) this - error_dialog_close: () -> - @error_dialog.stop() - init_operators: (user) -> author = new Pettanr.Author(user.get('author')) if user.get('author') artist = new Pettanr.Artist(user.get('artist')) if user.get('artist') diff --git a/app/assets/javascripts/views/authors/show.js.coffee b/app/assets/javascripts/views/authors/show.js.coffee index 27fa31c0..b3c06c88 100644 --- a/app/assets/javascripts/views/authors/show.js.coffee +++ b/app/assets/javascripts/views/authors/show.js.coffee @@ -43,14 +43,18 @@ class Pettanr.Views.Author.ShowModule.PanelsBody extends Pettanr.View pager = Locmare.ListGroupModule.LibModule.Pager.factory(@list.page_status, params) _.each items, (panel) => panel = panel.play() # retake panel for 'with_elements' mode - panel.fetch({cache: false}).done => - panel.attributes = panel.decoded_attributes() - body = new Pettanr.Views.Panel.Body({ - panel: panel, - spot: null - }) - @trigger('ready', panel) - this.$el.append(body.render().el) + panel.fetch({ + success: (model, response, opt) => + panel.attributes = panel.decoded_attributes() + body = new Pettanr.Views.Panel.Body({ + panel: panel, + spot: null + }) + @trigger('ready', panel) + this.$el.append(body.render().el) + error: (item, response, opt) => + @open_error_dialog(response, opt) + }) }) this diff --git a/app/assets/javascripts/views/balloons/show.js.coffee b/app/assets/javascripts/views/balloons/show.js.coffee index a02f82c3..d87cd8f0 100644 --- a/app/assets/javascripts/views/balloons/show.js.coffee +++ b/app/assets/javascripts/views/balloons/show.js.coffee @@ -10,19 +10,23 @@ class Pettanr.Views.Balloon.Show extends Pettanr.View.Show @speech_balloon.get_parent('panel', this, { success: (item) => @panel = item.play() - @panel.fetch().done => - @panel.attributes = @panel.decoded_attributes() - @authored_by = @panel.authored_by() - @body = new Pettanr.Views.Panel.Body({ - panel: @panel, - spot: @item - }) - @listenTo(@header, 'click:pick', @click_pick) - @listenTo(@authored_by, 'click', @click_authored_by) - this.$el.append(@header.render().el) - this.$el.append(@authored_by.render().el) - this.$el.append(@body.render().el) - @add_credits() + @panel.fetch({ + success: (model, response, opt) => + @panel.attributes = @panel.decoded_attributes() + @authored_by = @panel.authored_by() + @body = new Pettanr.Views.Panel.Body({ + panel: @panel, + spot: @item + }) + @listenTo(@header, 'click:pick', @click_pick) + @listenTo(@authored_by, 'click', @click_authored_by) + this.$el.append(@header.render().el) + this.$el.append(@authored_by.render().el) + this.$el.append(@body.render().el) + @add_credits() + error: (item, response, opt) => + @open_error_dialog(response, opt) + }) }) }) this diff --git a/app/assets/javascripts/views/ground_colors/show.js.coffee b/app/assets/javascripts/views/ground_colors/show.js.coffee index 7e8b6b3f..6baef018 100644 --- a/app/assets/javascripts/views/ground_colors/show.js.coffee +++ b/app/assets/javascripts/views/ground_colors/show.js.coffee @@ -8,19 +8,23 @@ class Pettanr.Views.GroundColor.Show extends Pettanr.View.Show @item.get_parent('panel', this, { success: (item) => @panel = item.play() - @panel.fetch().done => - @panel.attributes = @panel.decoded_attributes() - @authored_by = @panel.authored_by() - @body = new Pettanr.Views.Panel.Body({ - panel: @panel, - spot: @item - }) - @listenTo(@header, 'click:pick', @click_pick) - @listenTo(@authored_by, 'click', @click_authored_by) - this.$el.append(@header.render().el) - this.$el.append(@authored_by.render().el) - this.$el.append(@body.render().el) - @add_credits() + @panel.fetch({ + success: (model, response, opt) => + @panel.attributes = @panel.decoded_attributes() + @authored_by = @panel.authored_by() + @body = new Pettanr.Views.Panel.Body({ + panel: @panel, + spot: @item + }) + @listenTo(@header, 'click:pick', @click_pick) + @listenTo(@authored_by, 'click', @click_authored_by) + this.$el.append(@header.render().el) + this.$el.append(@authored_by.render().el) + this.$el.append(@body.render().el) + @add_credits() + error: (item, response, opt) => + @open_error_dialog(response, opt) + }) }) this diff --git a/app/assets/javascripts/views/ground_pictures/show.js.coffee b/app/assets/javascripts/views/ground_pictures/show.js.coffee index 4fad4614..206d5134 100644 --- a/app/assets/javascripts/views/ground_pictures/show.js.coffee +++ b/app/assets/javascripts/views/ground_pictures/show.js.coffee @@ -8,19 +8,23 @@ class Pettanr.Views.GroundPicture.Show extends Pettanr.View.Show @item.get_parent('panel', this, { success: (item) => @panel = item.play() - @panel.fetch().done => - @panel.attributes = @panel.decoded_attributes() - @authored_by = @panel.authored_by() - @body = new Pettanr.Views.Panel.Body({ - panel: @panel, - spot: @item - }) - @listenTo(@header, 'click:pick', @click_pick) - @listenTo(@authored_by, 'click', @click_authored_by) - this.$el.append(@header.render().el) - this.$el.append(@authored_by.render().el) - this.$el.append(@body.render().el) - @add_credits() + @panel.fetch({ + success: (model, response, opt) => + @panel.attributes = @panel.decoded_attributes() + @authored_by = @panel.authored_by() + @body = new Pettanr.Views.Panel.Body({ + panel: @panel, + spot: @item + }) + @listenTo(@header, 'click:pick', @click_pick) + @listenTo(@authored_by, 'click', @click_authored_by) + this.$el.append(@header.render().el) + this.$el.append(@authored_by.render().el) + this.$el.append(@body.render().el) + @add_credits() + error: (item, response, opt) => + @open_error_dialog(response, opt) + }) }) this diff --git a/app/assets/javascripts/views/panel_pictures/show.js.coffee b/app/assets/javascripts/views/panel_pictures/show.js.coffee index f539a5d0..e2ec28a8 100644 --- a/app/assets/javascripts/views/panel_pictures/show.js.coffee +++ b/app/assets/javascripts/views/panel_pictures/show.js.coffee @@ -8,19 +8,23 @@ class Pettanr.Views.PanelPicture.Show extends Pettanr.View.Show @item.get_parent('panel', this, { success: (item) => @panel = item.play() - @panel.fetch().done => - @panel.attributes = @panel.decoded_attributes() - @authored_by = @panel.authored_by() - @body = new Pettanr.Views.Panel.Body({ - panel: @panel, - spot: @item - }) - @listenTo(@header, 'click:pick', @click_pick) - @listenTo(@authored_by, 'click', @click_authored_by) - this.$el.append(@header.render().el) - this.$el.append(@authored_by.render().el) - this.$el.append(@body.render().el) - @add_credits() + @panel.fetch({ + success: (model, response, opt) => + @panel.attributes = @panel.decoded_attributes() + @authored_by = @panel.authored_by() + @body = new Pettanr.Views.Panel.Body({ + panel: @panel, + spot: @item + }) + @listenTo(@header, 'click:pick', @click_pick) + @listenTo(@authored_by, 'click', @click_authored_by) + this.$el.append(@header.render().el) + this.$el.append(@authored_by.render().el) + this.$el.append(@body.render().el) + @add_credits() + error: (item, response, opt) => + @open_error_dialog(response, opt) + }) }) this diff --git a/app/assets/javascripts/views/scrolls/play.js.coffee b/app/assets/javascripts/views/scrolls/play.js.coffee index 85dcfcd6..b9e62fd2 100644 --- a/app/assets/javascripts/views/scrolls/play.js.coffee +++ b/app/assets/javascripts/views/scrolls/play.js.coffee @@ -152,41 +152,45 @@ class Pettanr.Views.Scroll.PlayModule.Panel extends Pettanr.View render: () -> this.$el.html('') @panel = @panel.play() # retake panel for 'with_elements' mode - @panel.fetch({cache: true}).done => - @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) + @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: () -> diff --git a/app/assets/javascripts/views/speech_balloons/show.js.coffee b/app/assets/javascripts/views/speech_balloons/show.js.coffee index 5aa6147e..37874b87 100644 --- a/app/assets/javascripts/views/speech_balloons/show.js.coffee +++ b/app/assets/javascripts/views/speech_balloons/show.js.coffee @@ -8,18 +8,22 @@ class Pettanr.Views.SpeechBalloon.Show extends Pettanr.View.Show @item.get_parent('panel', this, { success: (item) => @panel = item.play() - @panel.fetch().done => - @panel.attributes = @panel.decoded_attributes() - @authored_by = @panel.authored_by() - @body = new Pettanr.Views.Panel.Body({ - panel: @panel, - spot: @item - }) - @listenTo(@authored_by, 'click', @click_authored_by) - this.$el.append(@header.render().el) - this.$el.append(@authored_by.render().el) - this.$el.append(@body.render().el) - @add_credits() + @panel.fetch({ + success: (model, response, opt) => + @panel.attributes = @panel.decoded_attributes() + @authored_by = @panel.authored_by() + @body = new Pettanr.Views.Panel.Body({ + panel: @panel, + spot: @item + }) + @listenTo(@authored_by, 'click', @click_authored_by) + this.$el.append(@header.render().el) + this.$el.append(@authored_by.render().el) + this.$el.append(@body.render().el) + @add_credits() + error: (item, response, opt) => + @open_error_dialog(response, opt) + }) }) this diff --git a/app/assets/javascripts/views/speeches/show.js.coffee b/app/assets/javascripts/views/speeches/show.js.coffee index 7b6d5f98..2ceb7b0b 100644 --- a/app/assets/javascripts/views/speeches/show.js.coffee +++ b/app/assets/javascripts/views/speeches/show.js.coffee @@ -10,19 +10,25 @@ class Pettanr.Views.Speech.Show extends Pettanr.View.Show @speech_balloon.get_parent('panel', this, { success: (item) => @panel = item.play() - @panel.fetch().done => - @panel.attributes = @panel.decoded_attributes() - @authored_by = @panel.authored_by() - @body = new Pettanr.Views.Panel.Body({ - panel: @panel, - spot: @item - }) - @listenTo(@header, 'click:pick', @click_pick) - @listenTo(@authored_by, 'click', @click_authored_by) - this.$el.append(@header.render().el) - this.$el.append(@authored_by.render().el) - this.$el.append(@body.render().el) - @add_credits() + @panel.fetch({ + success: (model, response, opt) => + @panel.attributes = @panel.decoded_attributes() + @authored_by = @panel.authored_by() + @body = new Pettanr.Views.Panel.Body({ + panel: @panel, + spot: @item + }) + @listenTo(@header, 'click:pick', @click_pick) + @listenTo(@authored_by, 'click', @click_authored_by) + this.$el.append(@header.render().el) + this.$el.append(@authored_by.render().el) + this.$el.append(@body.render().el) + @add_credits() + error: (item, response, opt) => + @open_error_dialog(response, opt) + }) + fail: (response, opt) => + @open_error_dialog(response, opt) }) }) this -- 2.11.0