From 6dccef56596ae8f8cc5051c73c6218119dfcb31a Mon Sep 17 00:00:00 2001 From: Martin Edenhofer Date: Wed, 31 Oct 2012 00:19:45 +0100 Subject: [PATCH] Added now @delay(), added error screen of ajaxError events. --- .../_application_controller.js.coffee | 41 +++++++++++++++---- .../_application_controller_form.js.coffee | 4 +- .../javascripts/app/views/error.jst.eco | 9 ++-- 3 files changed, 42 insertions(+), 12 deletions(-) diff --git a/app/assets/javascripts/app/controllers/_application_controller.js.coffee b/app/assets/javascripts/app/controllers/_application_controller.js.coffee index 4539124b9..09cbaa143 100644 --- a/app/assets/javascripts/app/controllers/_application_controller.js.coffee +++ b/app/assets/javascripts/app/controllers/_application_controller.js.coffee @@ -148,18 +148,43 @@ class App.Controller extends Spine.Controller ) @interval( update, 30000, 'frontendTimeUpdate' ) + + clearDelay: (delay_id) => + # check global var + if !@_delayID + @_delayID = {} + + clearTimeout( @_delayID[delay_id] ) if @_delayID[delay_id] + + delay: (callback, timeout, delay_id) => + + # check global var + if !@_delayID + @_delayID = {} + + # clear auto save + @clearDelay( @_delayID[delay_id] ) + + # request new data + call = => + callback() + if delay_id + @_delayID[delay_id] = setTimeout( call, timeout ) + else + setTimeout( call, timeout ) + clearInterval: (interval_id) => # check global var - if !@intervalID - @intervalID = {} + if !@_intervalID + @_intervalID = {} - clearInterval( @intervalID[interval_id] ) if @intervalID[interval_id] + clearInterval( @_intervalID[interval_id] ) if @_intervalID[interval_id] interval: (callback, interval, interval_id) => # check global var - if !@intervalID - @intervalID = {} + if !@_intervalID + @_intervalID = {} callback() @@ -167,10 +192,10 @@ class App.Controller extends Spine.Controller every = (ms, cb) -> setInterval cb, ms # clear auto save - clearInterval( @intervalID[interval_id] ) if @intervalID[interval_id] + @clearInterval( @_intervalID[interval_id] ) # request new data - @intervalID[interval_id] = every interval, () => + @_intervalID[interval_id] = every interval, () => callback() userPopups: (position = 'right') -> @@ -328,6 +353,8 @@ class App.ErrorModal extends App.ControllerModal render: -> @html App.view('error')( message: @message + detail: @detail + close: @close ) @modalShow( backdrop: false, diff --git a/app/assets/javascripts/app/controllers/_application_controller_form.js.coffee b/app/assets/javascripts/app/controllers/_application_controller_form.js.coffee index fe9bec22e..2bdf4eec9 100644 --- a/app/assets/javascripts/app/controllers/_application_controller_form.js.coffee +++ b/app/assets/javascripts/app/controllers/_application_controller_form.js.coffee @@ -276,7 +276,7 @@ class App.ControllerForm extends App.Controller else if attribute.tag is 'autocompletion' item = $( App.view('generic/autocompletion')( attribute: attribute ) ) - a = -> + a = => @local_attribute = '#' + attribute.id @local_attribute_full = '#' + attribute.id + '_autocompletion' @callback = attribute.callback @@ -312,7 +312,7 @@ class App.ControllerForm extends App.Controller @log 'selected', event, ui b(event, ui.item.id) ) - @delay(a, 600) + @delay( a, 600 ) # input else diff --git a/app/assets/javascripts/app/views/error.jst.eco b/app/assets/javascripts/app/views/error.jst.eco index 91253b598..44a9eb72c 100644 --- a/app/assets/javascripts/app/views/error.jst.eco +++ b/app/assets/javascripts/app/views/error.jst.eco @@ -1,12 +1,15 @@