Added sort order of taskbar by using sortable.
This commit is contained in:
parent
dd4652b515
commit
37321055fd
4 changed files with 45 additions and 6 deletions
|
@ -44,6 +44,24 @@ class App.TaskWidget extends App.Controller
|
||||||
taskBarActions: @_getTaskActions()
|
taskBarActions: @_getTaskActions()
|
||||||
)
|
)
|
||||||
|
|
||||||
|
dndOptions =
|
||||||
|
tolerance: 'pointer'
|
||||||
|
distance: 15
|
||||||
|
opacity: 0.6
|
||||||
|
forcePlaceholderSize: true
|
||||||
|
items: '> a'
|
||||||
|
update: =>
|
||||||
|
items = @el.find('.taskbar > a')
|
||||||
|
order = []
|
||||||
|
for item in items
|
||||||
|
key = $(item).data('key')
|
||||||
|
if !key
|
||||||
|
throw "No such key attributes found for task item"
|
||||||
|
order.push key
|
||||||
|
App.TaskManager.reorder( order )
|
||||||
|
|
||||||
|
@el.find( '.taskbar' ).sortable( dndOptions )
|
||||||
|
|
||||||
remove: (e) =>
|
remove: (e) =>
|
||||||
e.preventDefault()
|
e.preventDefault()
|
||||||
key = $(e.target).parent().data('key')
|
key = $(e.target).parent().data('key')
|
||||||
|
|
|
@ -34,6 +34,11 @@ class App.TaskManager
|
||||||
_instance ?= new _Singleton
|
_instance ?= new _Singleton
|
||||||
_instance.notify( key )
|
_instance.notify( key )
|
||||||
|
|
||||||
|
@reorder: ( order ) ->
|
||||||
|
if _instance == undefined
|
||||||
|
_instance ?= new _Singleton
|
||||||
|
_instance.reorder( order )
|
||||||
|
|
||||||
@reset: ->
|
@reset: ->
|
||||||
if _instance == undefined
|
if _instance == undefined
|
||||||
_instance ?= new _Singleton
|
_instance ?= new _Singleton
|
||||||
|
@ -59,7 +64,11 @@ class _Singleton extends App.Controller
|
||||||
@tasksInitial()
|
@tasksInitial()
|
||||||
|
|
||||||
all: ->
|
all: ->
|
||||||
App.Taskbar.all()
|
tasks = App.Taskbar.all()
|
||||||
|
tasks = _(tasks).sortBy( (task) ->
|
||||||
|
return task.prio;
|
||||||
|
)
|
||||||
|
return tasks
|
||||||
|
|
||||||
worker: ( key ) ->
|
worker: ( key ) ->
|
||||||
return @workers[ key ] if @workers[ key ]
|
return @workers[ key ] if @workers[ key ]
|
||||||
|
@ -83,6 +92,7 @@ class _Singleton extends App.Controller
|
||||||
params: params
|
params: params
|
||||||
callback: callback
|
callback: callback
|
||||||
client_id: 123
|
client_id: 123
|
||||||
|
prio: App.Taskbar.count() + 1
|
||||||
notify: false
|
notify: false
|
||||||
active: active
|
active: active
|
||||||
)
|
)
|
||||||
|
@ -213,6 +223,16 @@ class _Singleton extends App.Controller
|
||||||
task.save()
|
task.save()
|
||||||
App.Event.trigger 'ui:rerender'
|
App.Event.trigger 'ui:rerender'
|
||||||
|
|
||||||
|
reorder: ( order ) =>
|
||||||
|
prio = 0
|
||||||
|
for key in order
|
||||||
|
task = @get( key )
|
||||||
|
if !task
|
||||||
|
throw "No such task with '#{key}' of order"
|
||||||
|
prio++
|
||||||
|
task.prio = prio
|
||||||
|
task.save()
|
||||||
|
|
||||||
reset: =>
|
reset: =>
|
||||||
App.Taskbar.deleteAll()
|
App.Taskbar.deleteAll()
|
||||||
App.Event.trigger 'ui:rerender'
|
App.Event.trigger 'ui:rerender'
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
class App.Taskbar extends App.Model
|
class App.Taskbar extends App.Model
|
||||||
@configure 'Taskbar', 'key', 'client_id', 'callback', 'state', 'params', 'notify', 'active'
|
@configure 'Taskbar', 'key', 'client_id', 'callback', 'state', 'params', 'prio', 'notify', 'active'
|
||||||
# @extend Spine.Model.Local
|
# @extend Spine.Model.Local
|
||||||
@extend Spine.Model.Ajax
|
@extend Spine.Model.Ajax
|
||||||
@url: 'api/taskbar'
|
@url: 'api/taskbar'
|
||||||
|
|
|
@ -2,12 +2,13 @@ class Taskbar < ActiveRecord::Migration
|
||||||
def up
|
def up
|
||||||
create_table :taskbars do |t|
|
create_table :taskbars do |t|
|
||||||
t.column :user_id, :integer, :null => false
|
t.column :user_id, :integer, :null => false
|
||||||
t.column :last_contact, :datetime, :null => false
|
t.column :last_contact, :datetime, :null => false
|
||||||
t.column :client_id, :string, :null => false
|
t.column :client_id, :string, :null => false
|
||||||
t.column :key, :string, :limit => 100, :null => false
|
t.column :key, :string, :limit => 100, :null => false
|
||||||
t.column :callback, :string, :limit => 100, :null => false
|
t.column :callback, :string, :limit => 100, :null => false
|
||||||
t.column :state, :string, :limit => 8000, :null => true
|
t.column :state, :string, :limit => 8000, :null => true
|
||||||
t.column :params, :string, :limit => 2000, :null => true
|
t.column :params, :string, :limit => 2000, :null => true
|
||||||
|
t.column :prio, :integer, :null => false
|
||||||
t.column :notify, :boolean, :null => false, :default => false
|
t.column :notify, :boolean, :null => false, :default => false
|
||||||
t.column :active, :boolean, :null => false, :default => false
|
t.column :active, :boolean, :null => false, :default => false
|
||||||
t.timestamps
|
t.timestamps
|
||||||
|
|
Loading…
Reference in a new issue