diff --git a/app/assets/javascripts/app/lib/app_post/delay.js.coffee b/app/assets/javascripts/app/lib/app_post/delay.js.coffee new file mode 100644 index 000000000..8a761fdef --- /dev/null +++ b/app/assets/javascripts/app/lib/app_post/delay.js.coffee @@ -0,0 +1,72 @@ +class App.Delay + _instance = undefined + + @set: ( callback, timeout, key, level ) -> + if _instance == undefined + _instance ?= new _Singleton + _instance.set( callback, timeout, key, level ) + + @clear: ( key ) -> + if _instance == undefined + _instance ?= new _Singleton + _instance.clear( key ) + + @clearLevel: ( level ) -> + if _instance == undefined + _instance ?= new _Singleton + _instance.clearLevel( level ) + +class _Singleton extends Spine.Module + @include App.Log + + constructor: -> + @levelStack = {} + + set: ( callback, timeout, key, level ) -> + + if !level + level = '_all' + + if !@levelStack[level] + @levelStack[level] = {} + + if key + @clear( key ) + + # setTimeout + @log 'Delay', 'debug', 'set', key, timeout, level, callback + call = => + @clear( key ) + callback() + delay_id = setTimeout( call, timeout ) + + # remember all delays + @levelStack[ level ][ key ] = { + delay_id: delay_id + timeout: timeout + level: level + } + + return delay_id + + clear: ( key ) -> + + if !level + level = '_all' + + if !@levelStack[ level ] + @levelStack[ level ] = {} + + # get global delay ids + data = @levelStack[ level ][ key ] + return if !data + + @log 'Delay', 'debug', 'clear', data + clearTimeout( data['delay_id'] ) + + clearLevel: (level) -> + return if !@levelStack[ level ] + for key, data of @levelStack[ level ] + @clear( key ) + @levelStack[level] = {} + diff --git a/app/assets/javascripts/app/models/sla.js.coffee b/app/assets/javascripts/app/models/sla.js.coffee index 4aead54b4..81a51135c 100644 --- a/app/assets/javascripts/app/models/sla.js.coffee +++ b/app/assets/javascripts/app/models/sla.js.coffee @@ -4,7 +4,7 @@ class App.Sla extends Spine.Model @url: 'api/slas' @configure_attributes = [ { name: 'name', display: 'Name', tag: 'input', type: 'text', limit: 100, null: false, 'class': 'span4' }, - { name: 'first_response_time', display: 'First Resposne Time', tag: 'input', type: 'text', limit: 100, null: true, 'class': 'span4', note: 'In minutes, only business times are counted.' }, + { name: 'first_response_time', display: 'First Response Time', tag: 'input', type: 'text', limit: 100, null: true, 'class': 'span4', note: 'In minutes, only business times are counted.' }, { name: 'update_time', display: 'Update Time', tag: 'input', type: 'text', limit: 100, null: true, 'class': 'span4', note: 'In minutes, only business times are counted.' }, { name: 'close_time', display: 'Solution Time', tag: 'input', type: 'text', limit: 100, null: true, 'class': 'span4', note: 'In minutes, only business times are counted.' }, { name: 'condition', display: 'Conditions where SLA is used', tag: 'ticket_attribute_selection', null: true, class: 'span4' }, @@ -37,4 +37,4 @@ class App.Sla extends Spine.Model @configure_delete = true @configure_overview = [ 'name', - ] \ No newline at end of file + ] diff --git a/app/assets/javascripts/app/views/generic/table.jst.eco b/app/assets/javascripts/app/views/generic/table.jst.eco index 11913fa4a..d37027b98 100644 --- a/app/assets/javascripts/app/views/generic/table.jst.eco +++ b/app/assets/javascripts/app/views/generic/table.jst.eco @@ -11,7 +11,7 @@