Improved task bar - use local storage now issue #57.
This commit is contained in:
parent
ac8c88e67a
commit
8da2e5c557
2 changed files with 70 additions and 17 deletions
|
@ -1,4 +1,4 @@
|
|||
class TicketZoom extends App.Controller
|
||||
class App.TicketZoom extends App.Controller
|
||||
events:
|
||||
'click .submit': 'update'
|
||||
'click [data-type=reply]': 'reply'
|
||||
|
@ -71,6 +71,10 @@ class TicketZoom extends App.Controller
|
|||
|
||||
@load(data)
|
||||
App.Store.write( @key, data )
|
||||
|
||||
error: =>
|
||||
App.TaskManager.remove( @task_key )
|
||||
@release()
|
||||
)
|
||||
@doNotLog = 1
|
||||
|
||||
|
@ -593,7 +597,13 @@ class TicketZoomRouter extends App.ControllerPermanent
|
|||
constructor: (params) ->
|
||||
super
|
||||
@log 'zoom router', params
|
||||
App.TaskManager.add( 'Ticket', @ticket_id, TicketZoom, params )
|
||||
# cleanup params
|
||||
clean_params =
|
||||
ticket_id: params.ticket_id
|
||||
article_id: params.article_id
|
||||
nav: params.nav
|
||||
|
||||
App.TaskManager.add( 'Ticket', @ticket_id, 'TicketZoom', clean_params )
|
||||
|
||||
App.Config.set( 'ticket/zoom/:ticket_id', TicketZoomRouter, 'Routes' )
|
||||
App.Config.set( 'ticket/zoom/:ticket_id/nav/:nav', TicketZoomRouter, 'Routes' )
|
||||
|
|
|
@ -9,10 +9,10 @@ class App.TaskManager
|
|||
_instance ?= new _Singleton
|
||||
_instance.all()
|
||||
|
||||
@add: ( type, type_id, callback, params ) ->
|
||||
@add: ( type, type_id, callback, params, to_not_show ) ->
|
||||
if _instance == undefined
|
||||
_instance ?= new _Singleton
|
||||
_instance.add( type, type_id, callback, params )
|
||||
_instance.add( type, type_id, callback, params, to_not_show )
|
||||
|
||||
@remove: ( key ) ->
|
||||
if _instance == undefined
|
||||
|
@ -31,12 +31,27 @@ class _Singleton extends Spine.Module
|
|||
@tasks = {}
|
||||
@task_count = 0
|
||||
|
||||
# reopen tasks
|
||||
cache = App.Store.get( 'tasks' )
|
||||
if cache
|
||||
task_count = 0
|
||||
for task in cache
|
||||
task_count += 1
|
||||
setTimeout(
|
||||
->
|
||||
task = cache.shift()
|
||||
App.TaskManager.add(task.type, task.type_id, task.callback, task.params, true)
|
||||
task_count * 500
|
||||
)
|
||||
|
||||
all: ->
|
||||
@tasks
|
||||
|
||||
add: ( type, type_id, callback, params ) ->
|
||||
add: ( type, type_id, callback, params, to_not_show = false ) ->
|
||||
for key, task of @tasks
|
||||
if task.type is type && task.type_id is type_id
|
||||
console.log('STOP TASK, already exists', task)
|
||||
return key if to_not_show
|
||||
$('#content').empty()
|
||||
$('.content_permanent').hide()
|
||||
$('#content_permanent_' + key ).show()
|
||||
|
@ -47,26 +62,39 @@ class _Singleton extends Spine.Module
|
|||
else
|
||||
task.active = true
|
||||
App.Event.trigger 'ui:rerender'
|
||||
@syncTasks()
|
||||
return key
|
||||
|
||||
@task_count++
|
||||
if !to_not_show
|
||||
for task_key, task of @tasks
|
||||
task.active = false
|
||||
|
||||
active = true
|
||||
if to_not_show
|
||||
active = false
|
||||
console.log('start...', type, type_id, callback, params, @task_count )
|
||||
if active
|
||||
$('#content').empty()
|
||||
|
||||
$('#content_permanent').append('<div id="content_permanent_' + @task_count + '" class="content_permanent"></div>')
|
||||
|
||||
if active
|
||||
$('.content_permanent').hide()
|
||||
$('#content_permanent_' + @task_count ).show()
|
||||
params['el'] = $('#content_permanent_' + @task_count )
|
||||
a = new callback( params )
|
||||
params_app = _.clone(params)
|
||||
params_app['el'] = $('#content_permanent_' + @task_count )
|
||||
params_app['task_key'] = @task_count
|
||||
a = new App[callback]( params_app )
|
||||
task =
|
||||
type: type
|
||||
type_id: type_id
|
||||
params: params
|
||||
callback: callback
|
||||
worker: a
|
||||
active: true
|
||||
active: active
|
||||
@tasks[@task_count] = task
|
||||
App.Event.trigger 'ui:rerender'
|
||||
@syncTasks()
|
||||
|
||||
@task_count
|
||||
|
||||
|
@ -75,8 +103,23 @@ class _Singleton extends Spine.Module
|
|||
@tasks[key].worker.release()
|
||||
delete @tasks[key]
|
||||
App.Event.trigger 'ui:rerender'
|
||||
@syncTasks()
|
||||
|
||||
reset: =>
|
||||
@tasks = {}
|
||||
App.Event.trigger 'ui:rerender'
|
||||
|
||||
syncTasks: =>
|
||||
store = []
|
||||
for task_key, task of @tasks
|
||||
item =
|
||||
type: task.type
|
||||
type_id: task.type_id
|
||||
params: task.params
|
||||
callback: task.callback
|
||||
active: task.active
|
||||
store.push item
|
||||
|
||||
console.log('to write', store)
|
||||
App.Store.write( 'tasks', store )
|
||||
|
||||
|
|
Loading…
Reference in a new issue