UNPKG

@qooxdoo/framework

Version:

The JS Framework for Coders

197 lines (158 loc) 5.96 kB
/* ************************************************************************ qooxdoo - the new era of web development http://qooxdoo.org Copyright: 2004-2009 1&1 Internet AG, Germany, http://www.1und1.de License: MIT: https://opensource.org/licenses/MIT See the LICENSE file in the project's top-level directory for details. Authors: * Martin Wittemann (martinwittemann) ************************************************************************ */ /* eslint-disable no-caller */ qx.Class.define("qx.test.ui.table.model.Simple", { extend: qx.test.ui.LayoutTestCase, members: { testGetRowDataAsMap() { var tableDataWithMeta = [ { id: 100, col1: "test", col2: "test2" } ]; var tableModel = new qx.ui.table.model.Simple(); tableModel.setColumns(["Col1", "Col2"], ["col1", "col2"]); tableModel.setDataAsMapArray(tableDataWithMeta, true); // check the initial data var data = tableModel.getRowDataAsMap(0); this.assertEquals(100, data.id); this.assertEquals("test", data.col1); this.assertEquals("test2", data.col2); // change the data tableModel.setValue(0, 0, "affe"); data = tableModel.getRowDataAsMap(0); // check the changed data this.assertEquals(100, data.id); this.assertEquals("affe", data.col1); this.assertEquals("test2", data.col2); tableModel.dispose(); }, getStringValues() { return ["aaaa", "bbbb", "cccc", "dddd", "eeee", "ffff"]; }, createRandomRows(rowCount) { var rowData = []; var strings = this.getStringValues(); for (var row = 0; row < rowCount; row++) { rowData.push([row + 1, strings[row % strings.length]]); } return rowData; }, testCustomSortFunction() { var stringValues = this.getStringValues(); var rowCount = 20; // table var model = new qx.ui.table.model.Simple(); model.setColumns(["ID", "String"]); model.setData(this.createRandomRows(rowCount)); // custom individual ascending descending integer sort function for column 0 model.setSortMethods(0, { ascending(row1, row2, columnIndex) { var int1 = row1[columnIndex]; var int2 = row2[columnIndex]; return int1 > int2 ? 1 : int1 == int2 ? 0 : -1; }, descending(row2, row1, columnIndex) { var int1 = row1[columnIndex]; var int2 = row2[columnIndex]; return int1 > int2 ? 1 : int1 == int2 ? 0 : -1; } }); // custom single string sort function for column 1 model.setSortMethods(1, function (row1, row2, columnIndex) { var string1 = row1[columnIndex]; var string2 = row2[columnIndex]; return string1.localeCompare(string2); }); var table = new qx.ui.table.Table(model); // test sorting column 1 // sort descending model.sortByColumn(1); var data = model.getData(); this.assertTrue(data[0][1] == stringValues[stringValues.length - 1]); this.assertTrue(data[data.length - 1][1] == stringValues[0]); // sort ascending model.sortByColumn(1, true); this.assertTrue(data[0][1] == stringValues[0]); this.assertTrue( data[data.length - 1][1] == stringValues[stringValues.length - 1] ); // test sorting column 0 // sort descending model.sortByColumn(0); this.assertTrue(data[0][0] == rowCount); this.assertTrue(data[data.length - 1][0] == 1); // sort ascending model.sortByColumn(0, true); this.assertTrue(data[0][0] == 1); this.assertTrue(data[data.length - 1][0] == rowCount); table.destroy(); model.dispose(); }, testCustomSortFunctionArgumentsCalleeColumnIndexDeprecated() { var stringValues = this.getStringValues(); var rowCount = 20; // table var model = new qx.ui.table.model.Simple(); model.setColumns(["ID", "String"]); model.setData(this.createRandomRows(rowCount)); // custom individual ascending descending integer sort function for column 0 model.setSortMethods(0, { ascending(row1, row2) { var columnIndex = arguments.callee.columnIndex; var int1 = row1[columnIndex]; var int2 = row2[columnIndex]; return int1 > int2 ? 1 : int1 == int2 ? 0 : -1; }, descending(row2, row1) { var columnIndex = arguments.callee.columnIndex; var int1 = row1[columnIndex]; var int2 = row2[columnIndex]; return int1 > int2 ? 1 : int1 == int2 ? 0 : -1; } }); // custom single string sort function for column 1 model.setSortMethods(1, function (row1, row2) { var columnIndex = arguments.callee.columnIndex; var string1 = row1[columnIndex]; var string2 = row2[columnIndex]; return string1.localeCompare(string2); }); var table = new qx.ui.table.Table(model); // test sorting column 1 // sort descending model.sortByColumn(1); var data = model.getData(); this.assertTrue(data[0][1] == stringValues[stringValues.length - 1]); this.assertTrue(data[data.length - 1][1] == stringValues[0]); // sort ascending model.sortByColumn(1, true); this.assertTrue(data[0][1] == stringValues[0]); this.assertTrue( data[data.length - 1][1] == stringValues[stringValues.length - 1] ); // test sorting column 0 // sort descending model.sortByColumn(0); this.assertTrue(data[0][0] == rowCount); this.assertTrue(data[data.length - 1][0] == 1); // sort ascending model.sortByColumn(0, true); this.assertTrue(data[0][0] == 1); this.assertTrue(data[data.length - 1][0] == rowCount); table.destroy(); model.dispose(); } } });