Added user search.
This commit is contained in:
parent
92570b2d6f
commit
d7979474af
2 changed files with 128 additions and 23 deletions
|
@ -1,10 +1,45 @@
|
||||||
class Index extends App.Controller
|
class Index extends App.Controller
|
||||||
|
events:
|
||||||
|
'click [data-type="new"]': 'new'
|
||||||
|
|
||||||
constructor: ->
|
constructor: ->
|
||||||
super
|
super
|
||||||
|
|
||||||
# check authentication
|
# check authentication
|
||||||
return if !@authenticate()
|
return if !@authenticate()
|
||||||
|
|
||||||
|
@render()
|
||||||
|
|
||||||
|
render: ->
|
||||||
|
@html App.view('user')(
|
||||||
|
head: 'Users'
|
||||||
|
buttons: [
|
||||||
|
{ name: 'New User', 'data-type': 'new', class: 'primary' }
|
||||||
|
]
|
||||||
|
roles: App.Role.all()
|
||||||
|
)
|
||||||
|
|
||||||
|
@$('.tab').on(
|
||||||
|
'click'
|
||||||
|
(e) =>
|
||||||
|
e.preventDefault()
|
||||||
|
$(e.target).toggleClass('active')
|
||||||
|
term = @$('.search').val().trim()
|
||||||
|
return if !term
|
||||||
|
@delay( @search, 220, 'search' )
|
||||||
|
)
|
||||||
|
|
||||||
|
# start search
|
||||||
|
@$('.search').bind( 'keyup', (e) =>
|
||||||
|
term = @$('.search').val().trim()
|
||||||
|
return if !term
|
||||||
|
return if term is @term
|
||||||
|
@term = term
|
||||||
|
@delay( @search, 220, 'search' )
|
||||||
|
)
|
||||||
|
|
||||||
|
renderResult: (user_ids = []) ->
|
||||||
|
|
||||||
callbackHeader = (header) ->
|
callbackHeader = (header) ->
|
||||||
attribute =
|
attribute =
|
||||||
name: 'switch_to'
|
name: 'switch_to'
|
||||||
|
@ -27,34 +62,82 @@ class Index extends App.Controller
|
||||||
App.Auth._logout()
|
App.Auth._logout()
|
||||||
window.location = App.Config.get('api_path') + '/sessions/switch/' + id
|
window.location = App.Config.get('api_path') + '/sessions/switch/' + id
|
||||||
|
|
||||||
new App.ControllerGenericIndex(
|
edit = (id, e) =>
|
||||||
el: @el
|
e.preventDefault()
|
||||||
id: @id
|
item = App.User.find(id)
|
||||||
genericObject: 'User'
|
|
||||||
defaultSortBy: 'login'
|
rerender = =>
|
||||||
ignoreObjectIDs: [1]
|
@renderResult(user_ids)
|
||||||
|
|
||||||
|
new App.ControllerGenericEdit(
|
||||||
|
id: item.id
|
||||||
|
pageData:
|
||||||
|
title: 'Users'
|
||||||
|
home: 'users'
|
||||||
|
object: 'User'
|
||||||
|
objects: 'Users'
|
||||||
|
navupdate: '#users'
|
||||||
|
genericObject: 'User'
|
||||||
|
callback: rerender
|
||||||
|
)
|
||||||
|
|
||||||
|
users = []
|
||||||
|
for user_id in user_ids
|
||||||
|
user = App.User.find(user_id)
|
||||||
|
users.push user
|
||||||
|
|
||||||
|
@$('.table-overview').html('')
|
||||||
|
new App.ControllerTable(
|
||||||
|
el: @$('.table-overview')
|
||||||
|
model: App.User
|
||||||
|
objects: users
|
||||||
|
callbackHeader: callbackHeader
|
||||||
|
callbackAttributes:
|
||||||
|
switch_to: [
|
||||||
|
callbackAttributes
|
||||||
|
]
|
||||||
|
bindCol:
|
||||||
|
switch_to:
|
||||||
|
events:
|
||||||
|
'click': switchTo
|
||||||
|
bindRow:
|
||||||
|
events:
|
||||||
|
'click': edit
|
||||||
|
)
|
||||||
|
|
||||||
|
search: =>
|
||||||
|
role_ids = []
|
||||||
|
@$('.tab.active').each( (i,d) ->
|
||||||
|
role_ids.push $(d).data('id')
|
||||||
|
)
|
||||||
|
App.Ajax.request(
|
||||||
|
id: 'search'
|
||||||
|
type: 'GET'
|
||||||
|
url: @apiPath + '/users/search'
|
||||||
|
data:
|
||||||
|
term: @term
|
||||||
|
limit: 140
|
||||||
|
role_ids: role_ids
|
||||||
|
full: 1
|
||||||
|
processData: true,
|
||||||
|
success: (data, status, xhr) =>
|
||||||
|
|
||||||
|
# load assets
|
||||||
|
App.Collection.loadAssets( data.assets )
|
||||||
|
|
||||||
|
@renderResult(data.user_ids)
|
||||||
|
)
|
||||||
|
|
||||||
|
new: (e) ->
|
||||||
|
e.preventDefault()
|
||||||
|
new App.ControllerGenericNew(
|
||||||
pageData:
|
pageData:
|
||||||
title: 'Users'
|
title: 'Users'
|
||||||
home: 'users'
|
home: 'users'
|
||||||
object: 'User'
|
object: 'User'
|
||||||
objects: 'Users'
|
objects: 'Users'
|
||||||
navupdate: '#users'
|
navupdate: '#users'
|
||||||
notes: [
|
genericObject: 'User'
|
||||||
'Users are for any person in the system. Agents (Owners, Resposbiles, ...) and Customers.'
|
|
||||||
]
|
|
||||||
buttons: [
|
|
||||||
{ name: 'New User', 'data-type': 'new', class: 'primary' }
|
|
||||||
]
|
|
||||||
tableExtend:
|
|
||||||
callbackHeader: callbackHeader
|
|
||||||
callbackAttributes:
|
|
||||||
switch_to: [
|
|
||||||
callbackAttributes
|
|
||||||
]
|
|
||||||
bindCol:
|
|
||||||
switch_to:
|
|
||||||
events:
|
|
||||||
'click': switchTo
|
|
||||||
)
|
)
|
||||||
|
|
||||||
App.Config.set( 'User', { prio: 1000, name: 'Users', parent: '#manage', target: '#manage/users', controller: Index, role: ['Admin'] }, 'NavBarAdmin' )
|
App.Config.set( 'User', { prio: 1000, name: 'Users', parent: '#manage', target: '#manage/users', controller: Index, role: ['Admin'] }, 'NavBarAdmin' )
|
22
app/assets/javascripts/app/views/user.jst.eco
Normal file
22
app/assets/javascripts/app/views/user.jst.eco
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
<div class="page-header horizontal">
|
||||||
|
<div class="page-header-title">
|
||||||
|
<h1><%- @T( @head ) %> <small><%- @T( 'Management' ) %></small></h1>
|
||||||
|
</div>
|
||||||
|
<div class="page-header-meta">
|
||||||
|
<% if @buttons: %>
|
||||||
|
<% for button in @buttons: %>
|
||||||
|
<a data-type="<%= button['data-type'] %>" class="btn btn-default <%= button['class'] %>"><%- @T( button.name ) %></a>
|
||||||
|
<% end %>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<input class="search" name="search" placeholder="<%- @T('Search for users') %>">
|
||||||
|
|
||||||
|
<div class="tabs wide-tabs horizontal" style="width: 100%;">
|
||||||
|
<% for role in @roles: %>
|
||||||
|
<div class="tab" data-id="<%= role.id %>"><%- @T(role.displayName() ) %></div>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="table-overview"></div>
|
Loading…
Reference in a new issue