From e54f3f99a8ae83b53785bbe3ff6f95385cc3b96c Mon Sep 17 00:00:00 2001 From: Martin Edenhofer Date: Mon, 16 Oct 2017 05:36:44 +0200 Subject: [PATCH] Improved table rendering. --- .../_application_controller_table.coffee | 5 +- public/assets/tests/table_extended.js | 104 +++++++++++++++++- 2 files changed, 106 insertions(+), 3 deletions(-) diff --git a/app/assets/javascripts/app/controllers/_application_controller_table.coffee b/app/assets/javascripts/app/controllers/_application_controller_table.coffee index 40725e035..5a42262b5 100644 --- a/app/assets/javascripts/app/controllers/_application_controller_table.coffee +++ b/app/assets/javascripts/app/controllers/_application_controller_table.coffee @@ -260,7 +260,10 @@ class App.ControllerTable extends App.Controller @$("tbody > tr:nth-child(#{position+1})").remove() for position in addPositions if position is 0 - @$('tbody').append(newCurrentRows[position]) + if @$('tbody tr:nth-child(1)').get(0) + @$('tbody tr:nth-child(1)').before(newCurrentRows[position]) + else + @$('tbody').append(newCurrentRows[position]) else @$("tbody > tr:nth-child(#{position})").after(newCurrentRows[position]) @currentRows = newCurrentRows diff --git a/public/assets/tests/table_extended.js b/public/assets/tests/table_extended.js index e2ee6c6b9..f1c3015ff 100644 --- a/public/assets/tests/table_extended.js +++ b/public/assets/tests/table_extended.js @@ -1013,11 +1013,11 @@ test('table new - initial list', function() { equal(el.find('table > thead > tr > th:nth-child(2)').text().trim(), 'Erstellt', 'check header') equal(el.find('table > thead > tr > th:nth-child(3)').text().trim(), 'Aktiv', 'check header') equal(el.find('tbody > tr:nth-child(1) > td').length, 3) - equal(el.find('tbody > tr:nth-child(1) > td:first').text().trim(), '2 normal') + equal(el.find('tbody > tr:nth-child(1) > td:first').text().trim(), '1 niedrig') equal(el.find('tbody > tr:nth-child(1) > td:nth-child(2)').text().trim(), '10.06.2014') equal(el.find('tbody > tr:nth-child(1) > td:nth-child(3)').text().trim(), 'true') equal(el.find('tbody > tr:nth-child(2) > td').length, 3) - equal(el.find('tbody > tr:nth-child(2) > td:first').text().trim(), '1 niedrig') + equal(el.find('tbody > tr:nth-child(2) > td:first').text().trim(), '2 normal') equal(el.find('tbody > tr:nth-child(2) > td:nth-child(2)').text().trim(), '10.06.2014') equal(el.find('tbody > tr:nth-child(2) > td:nth-child(3)').text().trim(), 'true') equal(el.find('tbody > tr:nth-child(3) > td').length, 0) @@ -1321,4 +1321,104 @@ test('table new - initial list', function() { equal(el.find('.js-pager').first().find('.js-page.is-selected').length, 1) equal(el.find('.js-pager').first().find('.js-page.is-selected').text(), '1') + $('#table').append('

table with data

') + var el = $('#table-new7') + + App.TicketPriority.refresh([ + { + id: 1, + name: '1 low', + note: 'some note 1', + active: true, + created_at: '2014-06-10T11:17:34.000Z', + }, + { + id: 2, + name: '2 normal', + note: 'some note 2', + active: false, + created_at: '2014-06-10T10:17:34.000Z', + }, + { + id: 3, + name: '3 high', + note: 'some note 3', + active: false, + created_at: '2014-06-10T10:17:38.000Z', + }, + ], {clear: true}) + + var table = new App.ControllerTable({ + el: el, + overviewAttributes: ['name', 'created_at', 'active'], + model: App.TicketPriority, + objects: App.TicketPriority.search({sortBy:'name', order: 'ASC'}), + checkbox: false, + radio: false, + }) + //equal(el.find('table').length, 0, 'row count') + //table.render() + equal(el.find('table > thead > tr').length, 1, 'row count') + equal(el.find('table > thead > tr > th:nth-child(1)').text().trim(), 'Name', 'check header') + equal(el.find('table > thead > tr > th:nth-child(2)').text().trim(), 'Erstellt', 'check header') + equal(el.find('table > thead > tr > th:nth-child(3)').text().trim(), 'Aktiv', 'check header') + equal(el.find('tbody > tr:nth-child(1) > td').length, 3, 'check row 1') + equal(el.find('tbody > tr:nth-child(1) > td:first').text().trim(), '1 niedrig', 'check row 1') + equal(el.find('tbody > tr:nth-child(1) > td:nth-child(2)').text().trim(), '10.06.2014', 'check row 1') + equal(el.find('tbody > tr:nth-child(1) > td:nth-child(3)').text().trim(), 'true', 'check row 1') + equal(el.find('tbody > tr:nth-child(2) > td').length, 3, 'check row 2') + equal(el.find('tbody > tr:nth-child(2) > td:first').text().trim(), '2 normal', 'check row 2') + equal(el.find('tbody > tr:nth-child(2) > td:nth-child(2)').text().trim(), '10.06.2014', 'check row 2') + equal(el.find('tbody > tr:nth-child(3) > td').length, 3, 'check row 3') + equal(el.find('tbody > tr:nth-child(3) > td:first').text().trim(), '3 hoch', 'check row 3') + equal(el.find('tbody > tr:nth-child(3) > td:nth-child(2)').text().trim(), '10.06.2014', 'check row 3') + equal(el.find('tbody > tr:nth-child(4) > td').length, 0, 'check row 3') + + App.TicketPriority.refresh([ + { + id: 1, + name: '1 low', + note: 'some note', + active: true, + created_at: '2014-06-12T11:17:34.000Z', + }, + { + id: 2, + name: '2 normal', + note: 'some note 2', + active: false, + created_at: '2014-06-10T10:17:34.000Z', + }, + { + id: 3, + name: '3 high', + note: 'some note 3', + active: false, + created_at: '2014-06-10T10:17:38.000Z', + }, + ], {clear: true}) + + result = table.update({sync: true, objects: App.TicketPriority.search({sortBy:'name', order: 'ASC'})}) + equal(result[0], 'fullRender.contentRemoved') + equal(result[1][0], 0) + equal(result[1][1], undefined) + equal(result[2][0], 0) + equal(result[2][1], undefined) + + equal(el.find('table > thead > tr').length, 1, 'row count') + equal(el.find('table > thead > tr > th:nth-child(1)').text().trim(), 'Name', 'check header') + equal(el.find('table > thead > tr > th:nth-child(2)').text().trim(), 'Erstellt', 'check header') + equal(el.find('table > thead > tr > th:nth-child(3)').text().trim(), 'Aktiv', 'check header') + equal(el.find('tbody > tr:nth-child(1) > td').length, 3, 'check row 1') + equal(el.find('tbody > tr:nth-child(1) > td:first').text().trim(), '1 niedrig', 'check row 1') + equal(el.find('tbody > tr:nth-child(1) > td:nth-child(2)').text().trim(), '12.06.2014', 'check row 1') + equal(el.find('tbody > tr:nth-child(1) > td:nth-child(3)').text().trim(), 'true', 'check row 1') + equal(el.find('tbody > tr:nth-child(2) > td').length, 3, 'check row 2') + equal(el.find('tbody > tr:nth-child(2) > td:first').text().trim(), '2 normal', 'check row 2') + equal(el.find('tbody > tr:nth-child(2) > td:nth-child(2)').text().trim(), '10.06.2014', 'check row 2') + equal(el.find('tbody > tr:nth-child(3) > td').length, 3, 'check row 3') + equal(el.find('tbody > tr:nth-child(3) > td:first').text().trim(), '3 hoch', 'check row 3') + equal(el.find('tbody > tr:nth-child(3) > td:nth-child(2)').text().trim(), '10.06.2014', 'check row 3') + equal(el.find('tbody > tr:nth-child(4) > td').length, 0, 'check row 3') + })