{ "id": "98953", "key": "TIMOB-10372", "fields": { "issuetype": { "id": "5", "description": "The sub-task of the issue", "name": "Sub-task", "subtask": true }, "parent": { "id": "94534", "key": "TIMOB-9903", "fields": { "summary": "Ti API: Platforms need to achieve parity for the event system", "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" } }, "priority": { "name": "Low", "id": "4" }, "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": "14168", "description": "2012 Sprint 22 API", "name": "2012 Sprint 22 API", "archived": true, "released": true, "releaseDate": "2012-11-05" }, { "id": "14274", "description": "2012 Sprint 22", "name": "2012 Sprint 22", "archived": true, "released": true, "releaseDate": "2012-11-05" } ], "resolution": { "id": "1", "description": "A fix for this issue is checked into the tree and tested.", "name": "Fixed" }, "resolutiondate": "2012-10-29T19:15:15.000+0000", "created": "2012-08-09T11:33:29.000+0000", "priority": { "name": "High", "id": "2" }, "labels": [ "api" ], "versions": [ { "id": "13505", "description": "Release 3.0.0", "name": "Release 3.0.0", "archived": true, "released": true, "releaseDate": "2012-12-14" } ], "issuelinks": [ { "id": "19827", "type": { "id": "10020", "name": "Depends", "inward": "is dependent of", "outward": "depends on" }, "inwardIssue": { "id": "98974", "key": "TIMOB-10377", "fields": { "summary": "TiAPI: event system: Bubble defaults", "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" } }, "priority": { "name": "Low", "id": "4" }, "issuetype": { "id": "5", "description": "The sub-task of the issue", "name": "Sub-task", "subtask": true } } } }, { "id": "19803", "type": { "id": "10002", "name": "Duplicate", "inward": "is duplicated by", "outward": "duplicates" }, "outwardIssue": { "id": "80798", "key": "TIMOB-5401", "fields": { "summary": "Control of Event Propagation", "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": "Low", "id": "4" }, "issuetype": { "id": "5", "description": "The sub-task of the issue", "name": "Sub-task", "subtask": true } } } }, { "id": "19951", "type": { "id": "10011", "name": "Includes", "inward": "is included by", "outward": "includes" }, "outwardIssue": { "id": "99300", "key": "TIMOB-10462", "fields": { "summary": "iOS: Implement new bubbling architecture as prescribed in TIMOB-10372", "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": "5", "description": "The sub-task of the issue", "name": "Sub-task", "subtask": true } } } }, { "id": "19953", "type": { "id": "10011", "name": "Includes", "inward": "is included by", "outward": "includes" }, "outwardIssue": { "id": "99301", "key": "TIMOB-10463", "fields": { "summary": "Android: Implement new bubbling architecture as prescribed in TIMOB-10372", "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": "5", "description": "The sub-task of the issue", "name": "Sub-task", "subtask": true } } } }, { "id": "19955", "type": { "id": "10011", "name": "Includes", "inward": "is included by", "outward": "includes" }, "outwardIssue": { "id": "99302", "key": "TIMOB-10464", "fields": { "summary": "Mobile Web: Implement new bubbling architecture as prescribed in TIMOB-10372", "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": "7", "description": "gh.issue.story.desc", "name": "Story", "subtask": false } } } } ], "assignee": { "name": "blainhamon", "key": "blainhamon", "displayName": "Blain Hamon", "active": true, "timeZone": "America/Los_Angeles" }, "updated": "2017-03-21T18:57:01.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": "10224", "name": "TiAPI", "description": "This component is used for cross-platform API work. Specifications are most likely to use this component." } ], "description": "Event bubbling is to happen in the following way:\r\n\r\nViews shall have a boolean, 'bubbleParent', (readwrite) that indicates whether or not the view will bubble up events.\r\n\r\nInternally, views, at a class level, should provide a way to indicate which view is next to receive the event. NULL is a valid response, when the view is not connected, has no parent otherwise, or is not a view that bubbles.\r\n\r\nAn event shall have a boolean, 'bubbles', that is set at creation time only, that indicates if the event will bubble or not. This is to allow custom events to also bubble as well.\r\n\r\nAn event shall also have a boolean, 'cancelBubble', that starts false but can be set during event handling.\r\n\r\nAs such, an event bubbles if the following is true:\r\nevent.bubbles && !event.cancelBubble && view.bubbleParent && ((next view to get event) is not NULL or similar)\r\n\r\nNOTE that event bubbling happens after the fact. That is, the native handling (such as indicating highlight) have already happened before any event fires.\r\n\r\nALSO NOTE that multiple events of different types are treated separately. That is, if the user lifting their finger triggers 'touchup', 'tap', and 'click' events, any actions done on the touchup event (such as setting cancelBubble) do not affect bubbling nor firing of either tap or click.\r\n\r\nBy having the spec this open and not specific, we can implement this independent of specific event specs.\r\n\r\nSub-tasks that are for each OS will happen after this spec is approved.", "attachment": [], "flagged": false, "summary": "TiAPI: event system: Bubble architecture", "creator": { "name": "blainhamon", "key": "blainhamon", "displayName": "Blain Hamon", "active": true, "timeZone": "America/Los_Angeles" }, "subtasks": [], "reporter": { "name": "blainhamon", "key": "blainhamon", "displayName": "Blain Hamon", "active": true, "timeZone": "America/Los_Angeles" }, "environment": null, "comment": { "comments": [ { "id": "213692", "author": { "name": "bhughes", "key": "bhughes", "displayName": "Bryan Hughes", "active": true, "timeZone": "America/Los_Angeles" }, "body": "I don't know if I like having 'bubbles' also be on the event object. Would the user be able to see this? It doesn't quite feel right to me for some reason.", "updateAuthor": { "name": "bhughes", "key": "bhughes", "displayName": "Bryan Hughes", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2012-08-09T17:07:08.000+0000", "updated": "2012-08-09T17:07:08.000+0000" }, { "id": "213832", "author": { "name": "blainhamon", "key": "blainhamon", "displayName": "Blain Hamon", "active": true, "timeZone": "America/Los_Angeles" }, "body": "The bubbles read-only property is taken from the W3C spec and is to indicate that the event may bubble, not necessarily that it will (due to the view having nothing to bubble to, etc.)", "updateAuthor": { "name": "blainhamon", "key": "blainhamon", "displayName": "Blain Hamon", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2012-08-10T13:01:15.000+0000", "updated": "2012-08-10T13:01:15.000+0000" }, { "id": "225377", "author": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "body": "TIMOB-10464 has been moved to a separate story. Going to resolve this for now.", "updateAuthor": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2012-10-29T19:15:15.000+0000", "updated": "2012-10-29T19:15:15.000+0000" }, { "id": "414327", "author": { "name": "lmorris", "key": "lmorris", "displayName": "Lee Morris", "active": false, "timeZone": "America/Los_Angeles" }, "body": "Closing ticket as fixed.", "updateAuthor": { "name": "lmorris", "key": "lmorris", "displayName": "Lee Morris", "active": false, "timeZone": "America/Los_Angeles" }, "created": "2017-03-21T18:57:01.000+0000", "updated": "2017-03-21T18:57:01.000+0000" } ], "maxResults": 6, "total": 6, "startAt": 0 } } }