Use direct click in personal navigation area if only one entry exists.

This commit is contained in:
Martin Edenhofer 2018-03-06 06:30:12 +01:00
parent b91fceff08
commit 7e1b25468f
11 changed files with 27 additions and 18 deletions

View file

@ -11,7 +11,7 @@ App.Config.set('User', {
}, 'NavBarRight' ) }, 'NavBarRight' )
App.Config.set('Admin', { prio: 9000, parent: '', name: 'Admin', translate: true, target: '#manage', icon: 'cog', permission: ['admin.*'] }, 'NavBarRight') App.Config.set('Admin', { prio: 9000, parent: '', name: 'Admin', translate: true, target: '#manage', icon: 'cog', permission: ['admin.*'] }, 'NavBarRight')
App.Config.set('New', { prio: 20000, parent: '', name: 'New', translate: true, target: '#new', class: 'add' }, 'NavBarRight') App.Config.set('New', { prio: 20000, parent: '', name: 'New', translate: true, target: '#new', class: 'add', icon: 'plus' }, 'NavBarRight')
App.Config.set('Misc', { prio: 90000, parent: '', name: 'Tools', translate: true, target: '#tools', child: true, class: 'tools' }, 'NavBar') App.Config.set('Misc', { prio: 90000, parent: '', name: 'Tools', translate: true, target: '#tools', child: true, class: 'tools' }, 'NavBar')
# only for testing # only for testing
#App.Config.set('Misc1', { prio: 1600, parent: '#tools', name: 'Test 1', target: '#test1', permission: ['admin'] }, 'NavBar') #App.Config.set('Misc1', { prio: 1600, parent: '#tools', name: 'Test 1', target: '#test1', permission: ['admin'] }, 'NavBar')

View file

@ -130,6 +130,12 @@ class App.Navigation extends App.ControllerWidgetPermanent
@recentViewNavbarItemsRebuild() @recentViewNavbarItemsRebuild()
items = @getItems(navbar: @Config.get('NavBarRight')) items = @getItems(navbar: @Config.get('NavBarRight'))
# if only one child exists, use direct access
for item in items
if item && item.child && item.child.length is 1
item.target = item.child[0].target
delete item.child
# get open tabs to repopen on rerender # get open tabs to repopen on rerender
openTab = {} openTab = {}
@$('.open').children('a').each( (i,d) -> @$('.open').children('a').each( (i,d) ->

View file

@ -1,12 +1,12 @@
<% for item in @items: %> <% for item in @items: %>
<% if item.child: %> <% if !_.isEmpty(item.child): %>
<li class="<% if item.class: %><%- item.class %><% end %> dropup <% if @openTab[item.target] : %>open<% end %>"> <li class="<% if item.class: %><%- item.class %><% end %> dropup <% if @openTab[item.target] : %>open<% end %>">
<a class="list-button dropdown-toggle js-action" data-toggle="dropdown" href="<%= item.target %>" title="<% if item.translate: %><%- @Ti( item.name ) %><% else: %><%= item.name %><% end %>"> <a class="list-button dropdown-toggle js-action" data-toggle="dropdown" href="<%= item.target %>" title="<% if item.translate: %><%- @Ti(item.name) %><% else: %><%= item.name %><% end %>">
<span class="dropdown-nose"></span> <span class="dropdown-nose"></span>
<% if item.class is 'user': %> <% if item.class is 'user': %>
<span class="js-avatar"></span> <span class="js-avatar"></span>
<% else: %> <% else: %>
<%- @Icon('plus', 'user-menu-icon') %> <%- @Icon(item.icon, 'user-menu-icon') %>
<% end %> <% end %>
</a> </a>
<ul class="dropdown-menu dropdown-menu--light" role="menu"> <ul class="dropdown-menu dropdown-menu--light" role="menu">
@ -19,7 +19,7 @@
<% end %> <% end %>
<li> <li>
<a href="<%= item.target %>" class="horizontal center"> <a href="<%= item.target %>" class="horizontal center">
<span class="flex u-textTruncate"><% if item.translate: %><%- @T( item.name ) %><% else: %><%= item.name %><% end %></span> <span class="flex u-textTruncate"><% if item.translate: %><%- @T(item.name) %><% else: %><%= item.name %><% end %></span>
<% if item['count'] isnt undefined: %><span class="badge badge--text count"><%= item['count'] %></span><% end %> <% if item['count'] isnt undefined: %><span class="badge badge--text count"><%= item['count'] %></span><% end %>
<% if item.iconClass: %><%- @Icon(item.iconClass) %><% end %> <% if item.iconClass: %><%- @Icon(item.iconClass) %><% end %>
</a> </a>
@ -29,7 +29,7 @@
</li> </li>
<% else: %> <% else: %>
<li class="settings"> <li class="settings">
<a class="list-button fit horizontal centered" href="<%= item.target %>" title="<%- @Ti( item.name ) %>"> <a class="list-button fit horizontal centered" href="<%= item.target %>" title="<%- @Ti(item.name) %>">
<%- @Icon(item.icon, 'user-menu-icon') %> <%- @Icon(item.icon, 'user-menu-icon') %>
</a> </a>
</li> </li>

View file

@ -151,7 +151,7 @@ class AgentTicketActionLevel0Test < TestCase
) )
# customer ticket create # customer ticket create
click(css: 'a[href="#new"]') click(css: 'a[href="#new"]', only_if_exists: true)
click(css: 'a[href="#customer_ticket_new"]') click(css: 'a[href="#customer_ticket_new"]')
watch_for( watch_for(

View file

@ -11,7 +11,7 @@ class AgentTicketCreateResetCustomerSelectionTest < TestCase
) )
tasks_close_all() tasks_close_all()
click(css: 'a[href="#new"]') click(css: 'a[href="#new"]', only_if_exists: true)
click(css: 'a[href="#ticket/create"]') click(css: 'a[href="#ticket/create"]')
sleep 2 sleep 2
@ -92,7 +92,7 @@ class AgentTicketCreateResetCustomerSelectionTest < TestCase
) )
tasks_close_all() tasks_close_all()
click(css: 'a[href="#new"]') click(css: 'a[href="#new"]', only_if_exists: true)
click(css: 'a[href="#ticket/create"]') click(css: 'a[href="#ticket/create"]')
sleep 2 sleep 2

View file

@ -31,7 +31,7 @@ class AgentTicketTextModuleTest < TestCase
) )
# try to use them # try to use them
click(css: 'a[href="#new"]') click(css: 'a[href="#new"]', only_if_exists: true)
click(css: 'a[href="#ticket/create"]') click(css: 'a[href="#ticket/create"]')
sleep 2 sleep 2

View file

@ -19,7 +19,7 @@ class AgentUserManageTest < TestCase
sleep 1 sleep 1
# create customer # create customer
click(css: 'a[href="#new"]') click(css: 'a[href="#new"]', only_if_exists: true)
click(css: 'a[href="#ticket/create"]') click(css: 'a[href="#ticket/create"]')
click(css: '.active .newTicket [name="customer_id_completion"]') click(css: '.active .newTicket [name="customer_id_completion"]')
@ -75,7 +75,7 @@ class AgentUserManageTest < TestCase
# call new ticket screen again # call new ticket screen again
tasks_close_all() tasks_close_all()
click(css: 'a[href="#new"]') click(css: 'a[href="#new"]', only_if_exists: true)
click(css: 'a[href="#ticket/create"]') click(css: 'a[href="#ticket/create"]')
sleep 2 sleep 2

View file

@ -11,7 +11,7 @@ class CustomerTicketCreateTest < TestCase
) )
# customer ticket create # customer ticket create
click(css: 'a[href="#new"]') click(css: 'a[href="#new"]', only_if_exists: true)
click(css: 'a[href="#customer_ticket_new"]') click(css: 'a[href="#customer_ticket_new"]')
sleep 2 sleep 2

View file

@ -12,7 +12,7 @@ class TaskbarTaskTest < TestCase
tasks_close_all() tasks_close_all()
# persistant task # persistant task
click(css: 'a[href="#new"]') click(css: 'a[href="#new"]', only_if_exists: true)
click(css: 'a[href="#ticket/create"]', wait: 0.8) click(css: 'a[href="#ticket/create"]', wait: 0.8)
set( set(
css: '.active .newTicket input[name="title"]', css: '.active .newTicket input[name="title"]',
@ -52,7 +52,7 @@ class TaskbarTaskTest < TestCase
) )
tasks_close_all() tasks_close_all()
click(css: 'a[href="#new"]') click(css: 'a[href="#new"]', only_if_exists: true)
click(css: 'a[href="#ticket/create"]', wait: 0.8) click(css: 'a[href="#ticket/create"]', wait: 0.8)
set( set(
css: '.active .newTicket input[name="title"]', css: '.active .newTicket input[name="title"]',
@ -64,7 +64,7 @@ class TaskbarTaskTest < TestCase
) )
sleep 2 sleep 2
click(css: 'a[href="#new"]') click(css: 'a[href="#new"]', only_if_exists: true)
click(css: 'a[href="#ticket/create"]', wait: 0.8) click(css: 'a[href="#ticket/create"]', wait: 0.8)
set( set(
css: '.active .newTicket input[name="title"]', css: '.active .newTicket input[name="title"]',

View file

@ -29,7 +29,7 @@ class UserSwitchCache < TestCase
password: 'test', password: 'test',
url: browser_url, url: browser_url,
) )
click(css: 'a[href="#new"]') click(css: 'a[href="#new"]', only_if_exists: true)
click(css: 'a[href="#customer_ticket_new"]') click(css: 'a[href="#customer_ticket_new"]')
sleep 4 sleep 4
@ -58,7 +58,7 @@ class UserSwitchCache < TestCase
password: 'test', password: 'test',
url: browser_url, url: browser_url,
) )
click(css: 'a[href="#new"]') click(css: 'a[href="#new"]', only_if_exists: true)
click(css: 'a[href="#customer_ticket_new"]') click(css: 'a[href="#customer_ticket_new"]')
sleep 4 sleep 4

View file

@ -420,6 +420,7 @@ class TestCase < Test::Unit::TestCase
begin begin
element = instance.find_elements(css: params[:css])[0] element = instance.find_elements(css: params[:css])[0]
return if !element && params[:only_if_exists] == true
#if element #if element
# instance.mouse.move_to(element) # instance.mouse.move_to(element)
#end #end
@ -430,6 +431,7 @@ class TestCase < Test::Unit::TestCase
# just try again # just try again
log('click', { rescure: true }) log('click', { rescure: true })
element = instance.find_elements(css: params[:css])[0] element = instance.find_elements(css: params[:css])[0]
return if !element && params[:only_if_exists] == true
#if element #if element
# instance.mouse.move_to(element) # instance.mouse.move_to(element)
#end #end
@ -1829,6 +1831,7 @@ wait untill text in selector disabppears
browser: instance, browser: instance,
css: 'a[href="#new"]', css: 'a[href="#new"]',
mute_log: true, mute_log: true,
only_if_exists: true,
) )
click( click(
browser: instance, browser: instance,