{ "id": "117333", "key": "TIMOB-15091", "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": [], "resolution": null, "resolutiondate": null, "created": "2013-07-18T02:31:24.000+0000", "priority": { "name": "Medium", "id": "3" }, "labels": [ "Q3", "android", "demo_app", "engArch", "ios", "listview", "roadmap2019" ], "versions": [], "issuelinks": [ { "id": "56622", "type": { "id": "10001", "name": "Cloners", "inward": "is cloned into", "outward": "is cloned from" }, "inwardIssue": { "id": "171810", "key": "TIMOB-26138", "fields": { "summary": "Android: Cannot use a module when using a listview childtemplates", "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": "Medium", "id": "3" }, "issuetype": { "id": "4", "description": "An improvement or enhancement to an existing feature or task.", "name": "Improvement", "subtask": false } } } }, { "id": "55093", "type": { "id": "10003", "name": "Relates", "inward": "relates to", "outward": "relates to" }, "inwardIssue": { "id": "168104", "key": "TIMOB-24776", "fields": { "summary": "iOS: ListView item template support CommonJS modules", "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": "56951", "type": { "id": "10003", "name": "Relates", "inward": "relates to", "outward": "relates to" }, "inwardIssue": { "id": "172515", "key": "TIMOB-26498", "fields": { "summary": "Windows: ListView item template support CommonJS modules and Alloy widgets", "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": "Medium", "id": "3" }, "issuetype": { "id": "2", "description": "A new feature of the product, which has yet to be developed.", "name": "New Feature", "subtask": false } } } } ], "assignee": { "name": "vijaysingh", "key": "vijaysingh", "displayName": "Vijay Singh", "active": true, "timeZone": "America/Los_Angeles" }, "updated": "2020-02-06T22:33:16.000+0000", "status": { "description": "The issue is open and ready for the assignee to start work on it.", "name": "Open", "id": "1", "statusCategory": { "id": 2, "key": "new", "colorName": "blue-gray", "name": "To Do" } }, "components": [ { "id": "10224", "name": "TiAPI", "description": "This component is used for cross-platform API work. Specifications are most likely to use this component." } ], "description": "The issue is that I cannot use the styled label module that Appcelerator built in a ListView. The type for the ChildTemplates is expecting a string and cannot recognize the module. Please Advise.", "attachment": [ { "id": "64735", "filename": "Simulator Screen Shot - iPhone 6s - 2018-01-24 at 10.47.19.png", "author": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "created": "2018-01-24T09:49:12.000+0000", "size": 46146, "mimeType": "image/png" } ], "flagged": false, "summary": "iOS: Cannot use a module when using a listview childtemplates", "creator": { "name": "bradenpowers", "key": "bradenpowers", "displayName": "Braden Powers", "active": true, "timeZone": "America/New_York" }, "subtasks": [], "reporter": { "name": "bradenpowers", "key": "bradenpowers", "displayName": "Braden Powers", "active": true, "timeZone": "America/New_York" }, "environment": "alloy 1.1.3\r\nsdk 3.1.1", "closedSprints": [ { "id": 1058, "state": "closed", "name": "2018 Sprint 16 SDK", "startDate": "2018-07-29T22:26:06.486Z", "endDate": "2018-08-12T22:26:00.000Z", "completeDate": "2018-08-13T17:38:16.757Z", "originBoardId": 114 }, { "id": 1028, "state": "closed", "name": "2018 Sprint 09 SDK", "startDate": "2018-04-22T22:53:08.928Z", "endDate": "2018-05-06T22:53:00.000Z", "completeDate": "2018-05-07T00:02:15.883Z", "originBoardId": 114 }, { "id": 1093, "state": "closed", "name": "2018 Sprint 23", "startDate": "2018-11-04T23:35:52.006Z", "endDate": "2018-11-18T23:35:00.000Z", "completeDate": "2018-11-19T05:30:34.338Z", "originBoardId": 114 }, { "id": 1095, "state": "closed", "name": "2018 Sprint 24", "startDate": "2018-11-19T05:35:58.310Z", "endDate": "2018-12-03T05:35:00.000Z", "completeDate": "2018-12-03T16:28:57.549Z", "originBoardId": 114 }, { "id": 1065, "state": "closed", "name": "2016 Sprint 17 SDK", "startDate": "2018-08-13T17:39:36.846Z", "endDate": "2018-08-27T17:39:00.000Z", "completeDate": "2018-08-29T16:10:57.013Z", "originBoardId": 114 }, { "id": 1034, "state": "closed", "name": "2018 Sprint 10 SDK", "startDate": "2018-05-07T00:03:21.636Z", "endDate": "2018-05-21T00:03:00.000Z", "completeDate": "2018-05-20T20:54:58.928Z", "originBoardId": 114 }, { "id": 1035, "state": "closed", "name": "2018 Sprint 11 SDK", "startDate": "2018-05-20T20:57:43.542Z", "endDate": "2018-06-03T20:57:00.000Z", "completeDate": "2018-06-04T15:13:14.425Z", "originBoardId": 114 }, { "id": 1070, "state": "closed", "name": "2018 Sprint 18 SDK", "startDate": "2018-08-26T16:14:35.297Z", "endDate": "2018-09-09T16:14:00.000Z", "completeDate": "2018-09-11T20:59:21.495Z", "originBoardId": 114 }, { "id": 1039, "state": "closed", "name": "2018 Sprint 12 SDK", "startDate": "2018-06-03T15:22:23.401Z", "endDate": "2018-06-17T15:22:00.000Z", "completeDate": "2018-06-18T20:45:36.363Z", "originBoardId": 114 }, { "id": 1103, "state": "closed", "name": "2018 Sprint 25", "startDate": "2018-12-02T16:29:21.531Z", "endDate": "2018-12-16T16:29:00.000Z", "completeDate": "2018-12-15T02:33:24.870Z", "originBoardId": 114 }, { "id": 1008, "state": "closed", "name": "2018 Sprint 06 SDK", "startDate": "2018-03-11T22:18:04.396Z", "endDate": "2018-03-25T22:18:00.000Z", "completeDate": "2018-03-25T21:52:36.683Z", "originBoardId": 216 }, { "id": 1104, "state": "closed", "name": "2018 Sprint 26", "startDate": "2018-12-17T15:56:00.172Z", "endDate": "2018-12-21T15:56:00.000Z", "completeDate": "2018-12-26T17:42:17.145Z", "originBoardId": 114 }, { "id": 1073, "state": "closed", "name": "2018 Sprint 19 SDK", "startDate": "2018-09-09T21:02:56.422Z", "endDate": "2018-09-23T21:02:00.000Z", "completeDate": "2018-09-23T22:28:10.932Z", "originBoardId": 114 }, { "id": 1106, "state": "closed", "name": "2019 Sprint 1", "startDate": "2018-12-31T19:39:58.070Z", "endDate": "2019-01-11T19:39:00.000Z", "completeDate": "2019-01-14T17:17:47.552Z", "originBoardId": 114 }, { "id": 1045, "state": "closed", "name": "2018 Sprint 13 SDK", "startDate": "2018-06-17T20:47:13.621Z", "endDate": "2018-07-01T20:47:00.000Z", "completeDate": "2018-07-02T18:40:05.029Z", "originBoardId": 114 }, { "id": 1078, "state": "closed", "name": "2018 Sprint 20 SDK", "startDate": "2018-09-23T16:57:58.349Z", "endDate": "2018-10-07T16:57:00.000Z", "completeDate": "2018-10-07T23:31:40.476Z", "originBoardId": 114 }, { "id": 1018, "state": "closed", "name": "2018 Sprint 07 SDK", "startDate": "2018-03-25T21:59:36.637Z", "endDate": "2018-04-08T21:59:00.000Z", "completeDate": "2018-04-08T17:55:14.467Z", "originBoardId": 114 }, { "id": 1050, "state": "closed", "name": "2018 Sprint 14 SDK", "startDate": "2018-07-01T18:40:57.193Z", "endDate": "2018-07-15T18:40:00.000Z", "completeDate": "2018-07-16T03:27:08.720Z", "originBoardId": 114 }, { "id": 1084, "state": "closed", "name": "2018 Sprint 21", "startDate": "2018-10-07T23:32:40.560Z", "endDate": "2018-10-21T23:32:00.000Z", "completeDate": "2018-10-21T23:19:05.460Z", "originBoardId": 114 }, { "id": 1021, "state": "closed", "name": "2018 Sprint 08 SDK", "startDate": "2018-04-08T17:57:36.122Z", "endDate": "2018-04-22T17:57:00.000Z", "completeDate": "2018-04-22T22:51:19.120Z", "originBoardId": 114 }, { "id": 1053, "state": "closed", "name": "2018 Sprint 15 SDK", "startDate": "2018-07-15T21:52:05.453Z", "endDate": "2018-07-29T21:52:00.000Z", "completeDate": "2018-07-29T22:25:11.723Z", "originBoardId": 114 }, { "id": 1088, "state": "closed", "name": "2018 Sprint 22", "startDate": "2018-10-21T23:20:52.653Z", "endDate": "2018-11-04T23:20:00.000Z", "completeDate": "2018-11-04T23:29:59.423Z", "originBoardId": 114 } ], "comment": { "comments": [ { "id": "263207", "author": { "name": "clathrop", "key": "clathrop", "displayName": "Carter Lathrop", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Hello Braden,\n\nFrom your bug report you are missing a few pieces of information that are necessary to quickly realize a solution for you. Please provide a simple test case that demonstrates the issue you are describing as well as steps to reproduce such issue. Please refer to: https://wiki.appcelerator.org/display/guides/How+to+Submit+a+Bug+Report\n\nFor more information on what is necessary in a bug report.\n\nThank you,\nCarter ", "updateAuthor": { "name": "clathrop", "key": "clathrop", "displayName": "Carter Lathrop", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2013-07-25T21:17:56.000+0000", "updated": "2013-07-25T21:17:56.000+0000" }, { "id": "270376", "author": { "name": "btoc007", "key": "btoc007", "displayName": "Brian OConnor", "active": true, "timeZone": "America/New_York" }, "body": "I have a similar issue. Don't see the necessity for a test case or steps to reproduce.\n\nThis is not a bug but an oversight. I don't know how you could require more than to know you cannot use anything but Ti.UI components with ListView.", "updateAuthor": { "name": "btoc007", "key": "btoc007", "displayName": "Brian OConnor", "active": true, "timeZone": "America/New_York" }, "created": "2013-09-09T18:19:59.000+0000", "updated": "2013-09-09T18:19:59.000+0000" }, { "id": "270388", "author": { "name": "tlukasavage", "key": "tlukasavage", "displayName": "Tony Lukasavage", "active": true, "timeZone": "America/Los_Angeles" }, "body": "[~bradenpowers], [~btoc007], we are lacking docs that make what is and isn't supported obvious to developers, which is resulting in this confusion. If you had access to the appropriate documentation this would be better listed as a feature request as it is simply not implemented yet. \n\n[~ingo], [~bhatfield], can we work on adding a clear list in the ListView API docs and guides that indicate specifically which UI components are supported? This is not the first time (even today) that I'm seeing confusion among developers due to the lack of an explicit list of supported UI components for ListView items. ", "updateAuthor": { "name": "tlukasavage", "key": "tlukasavage", "displayName": "Tony Lukasavage", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2013-09-09T18:48:02.000+0000", "updated": "2013-09-09T18:48:02.000+0000" }, { "id": "286671", "author": { "name": "bradenpowers", "key": "bradenpowers", "displayName": "Braden Powers", "active": true, "timeZone": "America/New_York" }, "body": "I was looking through the documentation and it appears that it is still not possible to the use the module with a listview. Is this true? Do I have to submit a feature request?", "updateAuthor": { "name": "bradenpowers", "key": "bradenpowers", "displayName": "Braden Powers", "active": true, "timeZone": "America/New_York" }, "created": "2014-01-05T05:41:38.000+0000", "updated": "2014-01-05T05:41:38.000+0000" }, { "id": "294824", "author": { "name": "hpham", "key": "hpham", "displayName": "Hieu Pham", "active": true, "timeZone": "America/Los_Angeles" }, "body": "This is currently not supported. Please convert this ticket to a feature request.", "updateAuthor": { "name": "hpham", "key": "hpham", "displayName": "Hieu Pham", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2014-02-26T18:54:37.000+0000", "updated": "2014-02-26T18:54:37.000+0000" }, { "id": "294825", "author": { "name": "tlukasavage", "key": "tlukasavage", "displayName": "Tony Lukasavage", "active": true, "timeZone": "America/Los_Angeles" }, "body": "[~bradenpowers] while it may seem obvious, including a proposed example of how you think it should be made possible would be helpful. Just a short clear example of how you'd like to be able to use this functionality once it is implemented.", "updateAuthor": { "name": "tlukasavage", "key": "tlukasavage", "displayName": "Tony Lukasavage", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2014-02-26T19:07:58.000+0000", "updated": "2014-02-26T19:07:58.000+0000" }, { "id": "315495", "author": { "name": "banzaimobile", "key": "banzaimobile", "displayName": "Banzai Mobile", "active": true, "timeZone": "Europe/Berlin" }, "body": "I see there hasn't been recent activity on this, so here are my two cents. \r\nI know nothing about internals of the ListView implementation, however.\r\n\r\nMany Titanium users badly need to include native module-created view objects in list templates. Examples:\r\n- Styled labels\r\n- Admob banners\r\n- etc\r\n\r\nExample of how I'd like to build a child template for a banner element, to be then composed in a more complex row:\r\n\r\nvar AdMob = require('ti.admob');\r\n\r\nvar bannerTemplate = function() {\r\n banner = {\r\n // type: 'Ti.UI.View', \r\n creationMethod: AdMob.createView,\r\n bindId: 'banner',\r\n properties: {\r\n width: 300,\r\n height: 250,\r\n publisherId: \"whatever\"\r\n },\r\n events: {\r\n didReceiveAd: function(e) { },\r\n didFailToReceiveAd: function(e) { },\r\n };\r\n return banner;\r\n }\r\n\r\nBasically, instead of specifying a string with the Ti type, we would provide the factory creator method, that could then be passed the 'properties' as params at row instantiation time.\r\n\r\nAssuming of course that:\r\n- the provided creationMethod is anything (module method or even js func) that returns a view or viewproxy;\r\n- the native module is able to react to changes of its properties, if as I suspect ListView cell reuse is something like a big tree of applyProperties (ti.admob should be adapted for this).\r\n\r\nThe above may be enough for many of the use cases I've seen in Q&A and tickets.\r\n", "updateAuthor": { "name": "banzaimobile", "key": "banzaimobile", "displayName": "Banzai Mobile", "active": true, "timeZone": "Europe/Berlin" }, "created": "2014-07-23T17:38:30.000+0000", "updated": "2014-07-23T17:38:30.000+0000" }, { "id": "338163", "author": { "name": "mokesmokes", "key": "mokesmokes", "displayName": "Mark Mokryn", "active": true, "timeZone": "Asia/Jerusalem" }, "updateAuthor": { "name": "mokesmokes", "key": "mokesmokes", "displayName": "Mark Mokryn", "active": true, "timeZone": "Asia/Jerusalem" }, "created": "2015-01-07T15:05:48.000+0000", "updated": "2015-01-07T15:31:13.000+0000" }, { "id": "338168", "author": { "name": "mokesmokes", "key": "mokesmokes", "displayName": "Mark Mokryn", "active": true, "timeZone": "Asia/Jerusalem" }, "body": "Please reconsider the priority on this, there are numerous Q&A's on this:\r\nhttp://stackoverflow.com/questions/24713059/using-titanium-module-with-listview-template\r\nhttps://developer.appcelerator.com/question/154972/styledlabel-module-in-a-listview\r\nhttp://developer.appcelerator.com/question/176076/using-module-with-listview-template\r\nhttp://developer.appcelerator.com/question/176087\r\nhttp://noodlecode.net/2014/04/use-view-from-custom-module-inside-titanium-listviewitem/\r\nand more....\r\nThanks.", "updateAuthor": { "name": "mokesmokes", "key": "mokesmokes", "displayName": "Mark Mokryn", "active": true, "timeZone": "Asia/Jerusalem" }, "created": "2015-01-07T16:04:58.000+0000", "updated": "2015-01-07T16:04:58.000+0000" }, { "id": "433575", "author": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "body": "Hey guys, quick update on this: Would it be a suitable solution to introduce a \"module\" key in the item-template that would define the name of the module? Doing that, we could construct the internal proxy like all others then, for example a map inside a ListView:\r\n\r\n !Simulator Screen Shot - iPhone 6s - 2018-01-24 at 10.47.19.png|thumbnail! \r\n\r\nCode:\r\n{code:js}\r\nvar myTemplate = {\r\n childTemplates: [\r\n {\r\n type: 'View',\r\n module: 'TiMap',\r\n bindId: 'map',\r\n properties: {}\r\n }\r\n ]\r\n};\r\n{code}\r\n\r\nThe SDK-change to realize this is quite small, so this could be in future versions of the SDK. The only problem would be to know the actual name of the module root-class, which can differ from the actual name of the module because its generated by the module ID and not module name.", "updateAuthor": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "created": "2018-01-24T09:49:17.000+0000", "updated": "2018-01-24T09:50:48.000+0000" }, { "id": "433577", "author": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "body": "iOS-PR: https://github.com/appcelerator/titanium_mobile/pull/9767\r\n\r\nExample:\r\n{code:js}\r\nvar win = Ti.UI.createWindow({\r\n backgroundColor: 'white'\r\n});\r\nvar map = require('ti.map');\r\n\r\nvar myTemplate = {\r\n childTemplates: [{\r\n type: 'View',\r\n module: map,\r\n bindId: 'map',\r\n properties: {}\r\n }]\r\n};\r\n\r\nvar listView = Ti.UI.createListView({\r\n templates: {\r\n 'template': myTemplate\r\n },\r\n defaultItemTemplate: 'template'\r\n});\r\nvar sections = [];\r\n\r\nvar fruitSection = Ti.UI.createListSection({\r\n headerTitle: 'Fruits / Frutas'\r\n});\r\nvar fruitDataSet = [{\r\n map: {\r\n width: Ti.UI.FILL,\r\n height: 50\r\n }\r\n}, ];\r\nfruitSection.setItems(fruitDataSet);\r\nsections.push(fruitSection);\r\n\r\nlistView.setSections(sections);\r\nwin.add(listView);\r\nwin.open();\r\n{code}\r\n\r\n*Note*: This is only the iOS PR! To complete this request, we would need to do the same for Android. ", "updateAuthor": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "created": "2018-01-24T10:05:48.000+0000", "updated": "2018-01-24T10:27:33.000+0000" }, { "id": "434525", "author": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "body": "Moving out of 7.1.0 due to missing the Android parity PR.", "updateAuthor": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "created": "2018-02-15T13:48:52.000+0000", "updated": "2018-02-15T13:48:52.000+0000" }, { "id": "447132", "author": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "body": "Can someone tell me why this was unassigned although in review? And no fix version? 17+ watchers should be sufficient enough to at least schedule this.", "updateAuthor": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "created": "2019-03-25T21:39:30.000+0000", "updated": "2019-03-25T21:39:30.000+0000" } ], "maxResults": 19, "total": 19, "startAt": 0 } } }