Fixes #2751 - Group by selection field has wrong counters if no value.
This commit is contained in:
parent
9ea4ce9d2f
commit
e5cd8467d4
2 changed files with 46 additions and 22 deletions
|
@ -517,7 +517,7 @@ class App.ControllerTable extends App.Controller
|
||||||
if object
|
if object
|
||||||
position++
|
position++
|
||||||
if @groupBy
|
if @groupBy
|
||||||
groupByName = App.viewPrint(object, @groupBy, @attributesList)
|
groupByName = @groupObjectName(object, @groupBy)
|
||||||
if groupLastName isnt groupByName
|
if groupLastName isnt groupByName
|
||||||
groupLastName = groupByName
|
groupLastName = groupByName
|
||||||
tableBody.push @renderTableGroupByRow(object, position, groupByName)
|
tableBody.push @renderTableGroupByRow(object, position, groupByName)
|
||||||
|
@ -529,14 +529,11 @@ class App.ControllerTable extends App.Controller
|
||||||
groupByCount = undefined
|
groupByCount = undefined
|
||||||
if ui_table_group_by_show_count is true
|
if ui_table_group_by_show_count is true
|
||||||
groupBy = @groupBy
|
groupBy = @groupBy
|
||||||
groupLast = object[@groupBy]
|
groupLast = @groupObjectName(object, @groupBy)
|
||||||
if !groupLast
|
|
||||||
groupBy = "#{@groupBy}_id"
|
|
||||||
groupLast = object[groupBy]
|
|
||||||
groupByCount = 0
|
groupByCount = 0
|
||||||
if @objects
|
if @objects
|
||||||
for localObject in @objects
|
for localObject in @objects
|
||||||
if localObject[groupBy] is groupLast
|
if @groupObjectName(localObject, groupBy) is groupLast
|
||||||
groupByCount += 1
|
groupByCount += 1
|
||||||
|
|
||||||
App.view('generic/table_row_group_by')(
|
App.view('generic/table_row_group_by')(
|
||||||
|
@ -799,22 +796,7 @@ class App.ControllerTable extends App.Controller
|
||||||
# get groups
|
# get groups
|
||||||
groupObjects = {}
|
groupObjects = {}
|
||||||
for object in @objects
|
for object in @objects
|
||||||
group = object[@groupBy]
|
group = @groupObjectName(object, @groupBy)
|
||||||
if !group
|
|
||||||
withId = "#{@groupBy}_id"
|
|
||||||
if object[withId] && @attributesList[withId] && @attributesList[withId].relation
|
|
||||||
if App[@attributesList[withId].relation].exists(object[withId])
|
|
||||||
item = App[@attributesList[withId].relation].findNative(object[withId])
|
|
||||||
if item && item.displayName
|
|
||||||
group = item.displayName().toLowerCase()
|
|
||||||
else if item.name
|
|
||||||
group = item.name.toLowerCase()
|
|
||||||
if _.isEmpty(group)
|
|
||||||
group = ''
|
|
||||||
if group.displayName
|
|
||||||
group = group.displayName().toLowerCase()
|
|
||||||
else if group.name
|
|
||||||
group = group.name.toLowerCase()
|
|
||||||
groupObjects[group] ||= []
|
groupObjects[group] ||= []
|
||||||
groupObjects[group].push object
|
groupObjects[group].push object
|
||||||
|
|
||||||
|
@ -836,6 +818,20 @@ class App.ControllerTable extends App.Controller
|
||||||
@objects = localObjects
|
@objects = localObjects
|
||||||
@lastSortedobjects = localObjects
|
@lastSortedobjects = localObjects
|
||||||
|
|
||||||
|
groupObjectName: (object, key = undefined) ->
|
||||||
|
group = object
|
||||||
|
if key
|
||||||
|
if key not of object
|
||||||
|
key += '_id'
|
||||||
|
group = App.viewPrint(object, key, @attributesList)
|
||||||
|
if _.isEmpty(group)
|
||||||
|
group = ''
|
||||||
|
if group.displayName
|
||||||
|
group = group.displayName().toLowerCase()
|
||||||
|
else if group.name
|
||||||
|
group = group.name.toLowerCase()
|
||||||
|
group
|
||||||
|
|
||||||
onActionButtonClicked: (e) =>
|
onActionButtonClicked: (e) =>
|
||||||
id = $(e.currentTarget).parents('tr').data('id')
|
id = $(e.currentTarget).parents('tr').data('id')
|
||||||
name = e.currentTarget.getAttribute('data-table-action')
|
name = e.currentTarget.getAttribute('data-table-action')
|
||||||
|
|
|
@ -142,4 +142,32 @@ RSpec.describe 'Ticket views', type: :system do
|
||||||
]).to be_all note
|
]).to be_all note
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
context 'Setting "ui_table_group_by_show_count"', authenticated_as: :authenticate, db_strategy: :reset do
|
||||||
|
let!(:ticket1) { create(:ticket, group: Group.find_by(name: 'Users')) }
|
||||||
|
let!(:ticket2) { create(:ticket, group: Group.find_by(name: 'Users')) }
|
||||||
|
let!(:ticket3) { create(:ticket, group: Group.find_by(name: 'Users')) }
|
||||||
|
let!(:ticket4) { create(:ticket, group: Group.find_by(name: 'Users')) }
|
||||||
|
|
||||||
|
def authenticate
|
||||||
|
create :object_manager_attribute_select, name: 'grouptest'
|
||||||
|
ObjectManager::Attribute.migration_execute
|
||||||
|
ticket1
|
||||||
|
ticket2.update(grouptest: 'key_1')
|
||||||
|
ticket3.update(grouptest: 'key_2')
|
||||||
|
ticket4.update(grouptest: 'key_1')
|
||||||
|
Overview.find_by(name: 'Open').update(group_by: 'grouptest')
|
||||||
|
Setting.set('ui_table_group_by_show_count', true)
|
||||||
|
true
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'shows correct ticket counts' do
|
||||||
|
visit 'ticket/view/all_open'
|
||||||
|
within(:active_content) do
|
||||||
|
page.find('.js-tableBody td b', text: '(1)')
|
||||||
|
page.find('.js-tableBody td b', text: 'value_1 (2)')
|
||||||
|
page.find('.js-tableBody td b', text: 'value_2 (1)')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue