{ "id": "61478", "key": "TIMOB-846", "fields": { "issuetype": { "id": "1", "description": "A problem which impairs or prevents the functions of the product.", "name": "Bug", "subtask": false }, "project": { "id": "10153", "key": "TIMOB", "name": "Titanium SDK/CLI", "projectCategory": { "id": "10100", "description": "Titanium and related SDKs used in application development", "name": "Client" } }, "fixVersions": [], "resolution": { "id": "7", "description": "", "name": "Invalid" }, "resolutiondate": "2017-06-07T22:28:05.000+0000", "created": "2011-04-15T02:37:45.000+0000", "priority": { "name": "Trivial", "id": "5" }, "labels": [], "versions": [ { "id": "11225", "name": "Release 1.5.0", "archived": true, "released": true, "releaseDate": "2010-12-14" } ], "issuelinks": [], "assignee": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "updated": "2017-06-07T22:28:05.000+0000", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "components": [ { "id": "10206", "name": "iOS", "description": "iOS Platform" } ], "description": "{html}
from premium ticket:
\r\nhttp://helpdesk.appcelerator.net/tickets/1467
\r\ncode:
\r\nvar data = [];
\r\nvar win = Ti.UI.createWindow();
\r\n// Add filler data. // sort1 = index for this row if sorted by row\r\nnumber // sort2 = index for this row if reverse sorted by row\r\nnumber
for(var i = 0; i < 100; i++)
\r\n{
\r\ndata.push({title:'Row '+i, sort1:i, sort2:(99 - i)});
\r\n
\r\n}
\r\n// Add headers for default view based on first digit of row\r\nnumber.
\r\nvar prev = -1;
\r\nfor(i = 0; i < data.length; i++)
\r\n{
\r\nvar v = Math.floor(parseInt(data[i].sort1, 10) / 10);\r\n\r\nif(v != prev)\r\n{\r\n prev = v;\r\n data[i].header = ''+v;\r\n}
\r\n
\r\n}
\r\n// Create table view.
\r\nvar tableView = Ti.UI.createTableView({data:data,\r\ntop:50,height:300});
\r\nwin.add(tableView);
// Create button to swap between sorted data sets.
\r\nvar b =\r\nTi.UI.createButton({title:'Sort',top:10,height:30,width:300});
\r\nb.addEventListener('click', function(e)
\r\n{
\r\nsortData(tableView);
\r\n
\r\n}); win.add(b);
\r\n// Swap between data sets for specified tableView.
\r\nfunction sortData(tv)
\r\n{
\r\nvar newdata = [];\r\nvar sections = tv.data;\r\n\r\n// Retrieve current data set.\r\n\r\nfor(var i = 0; i < sections.length; i++)\r\n{\r\n var section = sections[i];\r\n\r\n for(var j = 0; j < section.rowCount; j++)\r\n {\r\n var row = section.rows[j];\r\n\r\n // Insert old row at the correct sorted position in the new array.\r\n newdata[row.sort2] = row;\r\n\r\n // Delete any existing header for this row so we don't munge headers from both data sets.\r\n delete newdata[row.sort2].header;\r\n }\r\n}\r\n\r\n// Add headers for newdata based on first digit of sort2.\r\nvar prev = -1;\r\n\r\nfor(i = 0; i < newdata.length; i++)\r\n{\r\n var v = Math.floor(parseInt(newdata[i].sort2, 10) / 10);\r\n\r\n if(v != prev)\r\n {\r\n prev = v;\r\n newdata[i].header = ''+v;\r\n }\r\n}\r\n\r\n// Update tableView with newdata.\r\ntv.setData(newdata);
\r\n
\r\n}
\r\nwin.open();
valid, needs testcase