{ "id": "103565", "key": "TIMOB-11523", "fields": { "issuetype": { "id": "2", "description": "A new feature of the product, which has yet to be developed.", "name": "New Feature", "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": [ { "id": "14162", "description": "Release 3.1.0", "name": "Release 3.1.0", "archived": true, "released": true, "releaseDate": "2013-04-16" }, { "id": "14621", "description": "2012 Sprint 23 API", "name": "2012 Sprint 23 API", "archived": true, "released": true, "releaseDate": "2012-11-19" }, { "id": "14623", "description": "2012 Sprint 23 JS", "name": "2012 Sprint 23", "archived": true, "released": true, "releaseDate": "2012-11-19" } ], "resolution": { "id": "1", "description": "A fix for this issue is checked into the tree and tested.", "name": "Fixed" }, "resolutiondate": "2012-11-20T17:55:07.000+0000", "created": "2012-10-17T21:46:13.000+0000", "priority": { "name": "High", "id": "2" }, "labels": [ "api", "module_tableview", "parity", "qe-and100112", "qe-testadded" ], "versions": [ { "id": "14137", "description": "Release 2.1.3", "name": "Release 2.1.3", "archived": true, "released": true, "releaseDate": "2012-10-03" } ], "issuelinks": [ { "id": "22575", "type": { "id": "10001", "name": "Cloners", "inward": "is cloned into", "outward": "is cloned from" }, "inwardIssue": { "id": "104491", "key": "TIMOB-11683", "fields": { "summary": "iOS: TableView - implement deleteRow(TableViewRowProxy)", "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" } }, "priority": { "name": "High", "id": "2" }, "issuetype": { "id": "2", "description": "A new feature of the product, which has yet to be developed.", "name": "New Feature", "subtask": false } } } }, { "id": "22080", "type": { "id": "10003", "name": "Relates", "inward": "relates to", "outward": "relates to" }, "outwardIssue": { "id": "98489", "key": "TIMOB-11510", "fields": { "summary": "iOS: TableView very slow", "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" } }, "priority": { "name": "Critical", "id": "1" }, "issuetype": { "id": "1", "description": "A problem which impairs or prevents the functions of the product.", "name": "Bug", "subtask": false } } } } ], "assignee": { "name": "pwang", "key": "pwang", "displayName": "Ping Wang", "active": true, "timeZone": "America/Los_Angeles" }, "updated": "2014-06-19T12:42:36.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": "10202", "name": "Android", "description": "Android Platform" } ], "description": "Steps To Reproduce:\r\n1. Run test code from TIMOB-11510\r\n\r\nActual:\r\nRuntime error because you delete a row by row name \r\n\r\nExpected:\r\nTo be able to delete the row by row name\r\n", "attachment": [], "flagged": false, "summary": "Android: TableView - delete row cannot delete a row without giving it a number, but iOS can", "creator": { "name": "nhuynh", "key": "nhuynh", "displayName": "Natalie Huynh", "active": true, "timeZone": "America/Los_Angeles" }, "subtasks": [], "reporter": { "name": "nhuynh", "key": "nhuynh", "displayName": "Natalie Huynh", "active": true, "timeZone": "America/Los_Angeles" }, "environment": "Android HTC 4.0.3\r\nSDK: 2.1.3.GA ", "comment": { "comments": [ { "id": "226424", "author": { "name": "pwang", "key": "pwang", "displayName": "Ping Wang", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Steps for FR:\r\n1. Run the code below.\r\n{code}\r\nTi.UI.backgroundColor = 'white';\r\nvar win = Ti.UI.createWindow();\r\n\r\nvar sectionFruit = Ti.UI.createTableViewSection({ headerTitle: 'Fruit' });\r\nsectionFruit.add(Ti.UI.createTableViewRow({ title: 'Apples' }));\r\nsectionFruit.add(Ti.UI.createTableViewRow({ title: 'Bananas' }));\r\nsectionFruit.addEventListener(\"click\", function(){\r\n\tTi.API.info(\"*************************** Clicked section: \" + sectionFruit.headerTitle);\r\n});\r\n\r\nvar sectionVeg = Ti.UI.createTableViewSection({ headerTitle: 'Vegetables' });\r\nsectionVeg.add(Ti.UI.createTableViewRow({ title: 'Carrots' }));\r\nsectionVeg.add(Ti.UI.createTableViewRow({ title: 'Potatoes' }));\r\n\r\nvar sectionFish = Ti.UI.createTableViewSection({ headerTitle: 'Fish' });\r\nsectionFish.add(Ti.UI.createTableViewRow({ title: 'Cod' }));\r\nsectionFish.add(Ti.UI.createTableViewRow({ title: 'Haddock' }));\r\nsectionFish.addEventListener(\"click\", function(){\r\n\tTi.API.info(\"*************************** Clicked section: \" + sectionFish.headerTitle);\r\n});\r\n\r\nvar table = Ti.UI.createTableView({\r\n data: [sectionFruit, sectionVeg, sectionFish]\r\n});\r\ntable.addEventListener(\"click\", function(){\r\n\tTi.API.info(\"*************************** Clicked table: table\");\r\n});\r\n\r\nwin.add(table);\r\nwin.open();\r\n\r\nvar currentRows = [];\r\n\r\nvar b1 = Ti.UI.createButton({\r\n\tbottom: 10,\r\n\ttitle: \"remove Blue Row \" + currentRows.length\r\n});\r\nb1.addEventListener(\"click\", function(){\r\n\tvar r = currentRows.pop();\r\n\ttable.deleteRow(r);\r\n\tif (currentRows.length >= 1) {\r\n\t\tb1.title = \"remove Blue Row \" + (currentRows.length-1);\r\n\t}\r\n});\r\n\r\nvar b2 = Ti.UI.createButton({\r\n\tbottom: 100,\r\n\ttitle: \"insert Blue Row after index 0\"\r\n});\r\nb2.addEventListener(\"click\", function(){\r\n\tvar r = Ti.UI.createTableViewRow({\r\n \theight:80,\r\n \ttitle:\"Blue Row \" + currentRows.length,\r\n \tcolor:'blue'\r\n\t});\r\n\ttable.insertRowAfter(0, r);\r\n\tb1.title = \"remove Blue Row \" + currentRows.length;\r\n\tcurrentRows.push(r);\r\n\t\r\n\tr.addEventListener(\"click\", function(){\r\n\t\tTi.API.info(\"*************************** Clicked row: \" + r.title);\r\n\t});\r\n});\r\n\r\nvar b3 = Ti.UI.createButton({\r\n\tbottom: 190,\r\n\ttitle: \"append Blue Row\"\r\n});\r\nb3.addEventListener(\"click\", function(){\r\n\tvar r = Ti.UI.createTableViewRow({\r\n \theight:80,\r\n \ttitle:\"Blue Row \" + currentRows.length,\r\n \tcolor:'blue'\r\n\t});\r\n\ttable.appendRow(r);\r\n\tb1.title = \"remove Blue Row \" + currentRows.length;\r\n\tcurrentRows.push(r);\r\n\t\r\n\tr.addEventListener(\"click\", function(){\r\n\t\tTi.API.info(\"*************************** Clicked row: \" + r.title);\r\n\t});\r\n});\r\n\r\nwin.add(b1);\r\nwin.add(b2);\r\nwin.add(b3);\r\n{code}\r\n i) Click the buttons to add Blue Row to the table and then click the button \"remove Blue Row\" to check the new functionality of deleteRow(TableViewRowProxy).\r\n ii) Click the Blue Row which is added to the table (or any row in the table) and check the event bubbling from the console log. Should see something like:\r\n{code}\r\nI/TiAPI (32361): *************************** Clicked row: Blue Row 0\r\nI/TiAPI (32361): *************************** Clicked section: Fish\r\nI/TiAPI (32361): *************************** Clicked table: table\r\n{code}\r\n2. Run the test case in TIMOB-10328.\r\n3. Run KS->Base UI->Views->Table Views to make sure nothing is broken.", "updateAuthor": { "name": "pwang", "key": "pwang", "displayName": "Ping Wang", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2012-11-07T01:36:31.000+0000", "updated": "2012-11-07T19:33:04.000+0000" }, { "id": "226425", "author": { "name": "pwang", "key": "pwang", "displayName": "Ping Wang", "active": true, "timeZone": "America/Los_Angeles" }, "body": "PR: https://github.com/appcelerator/titanium_mobile/pull/3386", "updateAuthor": { "name": "pwang", "key": "pwang", "displayName": "Ping Wang", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2012-11-07T01:36:58.000+0000", "updated": "2012-11-07T01:36:58.000+0000" }, { "id": "226548", "author": { "name": "vduggal", "key": "vduggal", "displayName": "Vishal Duggal", "active": false, "timeZone": "America/Los_Angeles" }, "body": "iOS does not support deleting row by row proxy. However this will be implemented as part of TIMOB-11683", "updateAuthor": { "name": "vduggal", "key": "vduggal", "displayName": "Vishal Duggal", "active": false, "timeZone": "America/Los_Angeles" }, "created": "2012-11-07T18:47:14.000+0000", "updated": "2012-11-07T18:47:14.000+0000" }, { "id": "241683", "author": { "name": "oromero", "key": "oromero", "displayName": "Olga Romero", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Tested code:\n{code}\nTi.UI.backgroundColor = 'white';\nvar win = Ti.UI.createWindow({backgroundColor:'white',fullscreen:false});\n \nvar sectionFruit = Ti.UI.createTableViewSection({ headerTitle: 'Fruit' });\nsectionFruit.add(Ti.UI.createTableViewRow({ title: 'Apples' }));\nsectionFruit.add(Ti.UI.createTableViewRow({ title: 'Bananas' }));\nsectionFruit.addEventListener(\"click\", function(){\n Ti.API.info(\"*************************** Clicked section: \" + sectionFruit.headerTitle);\n});\n \nvar sectionVeg = Ti.UI.createTableViewSection({ headerTitle: 'Vegetables' });\nsectionVeg.add(Ti.UI.createTableViewRow({ title: 'Carrots' }));\nsectionVeg.add(Ti.UI.createTableViewRow({ title: 'Potatoes' }));\n \nvar sectionFish = Ti.UI.createTableViewSection({ headerTitle: 'Fish' });\nsectionFish.add(Ti.UI.createTableViewRow({ title: 'Cod' }));\nsectionFish.add(Ti.UI.createTableViewRow({ title: 'Haddock' }));\nsectionFish.addEventListener(\"click\", function(){\n Ti.API.info(\"*************************** Clicked section: \" + sectionFish.headerTitle);\n});\n \nvar table = Ti.UI.createTableView({\n data: [sectionFruit, sectionVeg, sectionFish]\n});\ntable.addEventListener(\"click\", function(){\n Ti.API.info(\"*************************** Clicked table: table\");\n});\n \nwin.add(table);\nwin.open();\n \nvar currentRows = [];\n \nvar b1 = Ti.UI.createButton({\n bottom: 10,\n title: \"remove Blue Row \" + currentRows.length\n});\nb1.addEventListener(\"click\", function(){\n var r = currentRows.pop();\n table.deleteRow(r);\n if (currentRows.length >= 1) {\n b1.title = \"remove Blue Row \" + (currentRows.length-1);\n }\n});\n \nvar b2 = Ti.UI.createButton({\n bottom: 100,\n title: \"insert Blue Row after index 0\"\n});\nb2.addEventListener(\"click\", function(){\n var r = Ti.UI.createTableViewRow({\n height:80,\n title:\"Blue Row \" + currentRows.length,\n color:'blue'\n });\n table.insertRowAfter(0, r);\n b1.title = \"remove Blue Row \" + currentRows.length;\n currentRows.push(r);\n \n r.addEventListener(\"click\", function(){\n Ti.API.info(\"*************************** Clicked row: \" + r.title);\n });\n});\n \nvar b3 = Ti.UI.createButton({\n bottom: 190,\n title: \"append Blue Row\"\n});\nb3.addEventListener(\"click\", function(){\n var r = Ti.UI.createTableViewRow({\n height:80,\n title:\"Blue Row \" + currentRows.length,\n color:'blue'\n });\n table.appendRow(r);\n b1.title = \"remove Blue Row \" + currentRows.length;\n currentRows.push(r);\n \n r.addEventListener(\"click\", function(){\n Ti.API.info(\"*************************** Clicked row: \" + r.title);\n });\n});\n \nwin.add(b1);\nwin.add(b2);\nwin.add(b3);\n\n{code}\n\nwith:\nTitanium Studio, build: 3.0.3.201302201202\nTitanium SDK, build: 3.1.0.v20130311151655 \nDevices:\nNexus4 4.2\nGalaxyS3 4.0.4", "updateAuthor": { "name": "oromero", "key": "oromero", "displayName": "Olga Romero", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2013-03-12T00:01:53.000+0000", "updated": "2013-03-12T00:01:53.000+0000" }, { "id": "283480", "author": { "name": "shameerj", "key": "shameerj", "displayName": "Shameer Jan", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Anvil testcase PR https://github.com/appcelerator/titanium_mobile/pull/5003\n", "updateAuthor": { "name": "shameerj", "key": "shameerj", "displayName": "Shameer Jan", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2013-12-10T06:09:43.000+0000", "updated": "2013-12-10T06:09:43.000+0000" } ], "maxResults": 5, "total": 5, "startAt": 0 } } }