{ "id": "63540", "key": "TIMOB-2908", "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": [ { "id": "16997", "name": "Release 5.2.0", "archived": false, "released": true, "releaseDate": "2016-02-23" }, { "id": "17072", "name": "Release 5.1.2", "archived": false, "released": true, "releaseDate": "2016-01-12" } ], "resolution": { "id": "1", "description": "A fix for this issue is checked into the tree and tested.", "name": "Fixed" }, "resolutiondate": "2015-11-23T22:15:39.000+0000", "created": "2011-04-15T03:32:37.000+0000", "priority": { "name": "Trivial", "id": "5" }, "labels": [ "api", "switch" ], "versions": [], "issuelinks": [], "assignee": { "name": "cng", "key": "cng", "displayName": "Chee Kiat Ng", "active": false, "timeZone": "America/Los_Angeles" }, "updated": "2015-11-26T03:47:56.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": "When loading a switch with a value set to 'true' the switch shows an animation going from 'off' to 'on'.\r\n\r\nUsers would like a property added to the switch object of 'animate' as a boolean value, to turn off the animation on-load if the value of the switch is preset to true.\r\n\r\nReference ticket: http://developer.appcelerator.com/helpdesk/view/67301", "attachment": [], "flagged": false, "summary": "iOS: Switch - Disable animation on init and allow developer to disable for setValue", "creator": { "name": "aleard", "key": "aleard", "displayName": "Alan Leard", "active": true, "timeZone": "America/Los_Angeles" }, "subtasks": [], "reporter": { "name": "aleard", "key": "aleard", "displayName": "Alan Leard", "active": true, "timeZone": "America/Los_Angeles" }, "environment": null, "closedSprints": [ { "id": 529, "state": "closed", "name": "2015 Sprint 24 SDK", "startDate": "2015-11-21T01:30:12.670Z", "endDate": "2015-12-05T01:30:00.000Z", "completeDate": "2015-12-07T03:57:17.094Z", "originBoardId": 114 } ], "comment": { "comments": [ { "id": "312038", "author": { "name": "core13", "key": "core13", "displayName": "Malcolm Hollingsworth", "active": true, "timeZone": "Europe/London" }, "body": "Any movement on this? Seems like an oversight that it is still not resolved? Stock iOS apps do not exhibit this behaviour .", "updateAuthor": { "name": "core13", "key": "core13", "displayName": "Malcolm Hollingsworth", "active": true, "timeZone": "Europe/London" }, "created": "2014-07-02T11:42:58.000+0000", "updated": "2014-07-02T11:42:58.000+0000" }, { "id": "312039", "author": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "body": "[~ingo], I say we even just set the initial animation off by default. It will then still animate when the users taps it but not when you set it programmatically.\r\n\r\nI've recorde 2 movies to show the difference. The next dropbox folder also includes a module that disabled the animation.\r\n\r\n* https://www.dropbox.com/sh/aq88p58jc3sfe63/AABUm5MHzobnqH16fiabYRrVa\r\n\r\nOtherwise I'd would indeed request for `setValue(value, animated)`.", "updateAuthor": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "created": "2014-07-02T11:46:48.000+0000", "updated": "2014-07-02T11:46:48.000+0000" }, { "id": "337969", "author": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "body": "PR: https://github.com/appcelerator/titanium_mobile/pull/6539", "updateAuthor": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "created": "2015-01-06T10:18:04.000+0000", "updated": "2015-01-06T10:18:04.000+0000" }, { "id": "337971", "author": { "name": "core13", "key": "core13", "displayName": "Malcolm Hollingsworth", "active": true, "timeZone": "Europe/London" }, "body": "Does this stop the creation animation [~fokke] or are you providing a toggle for the animation state?\r\n\r\nIdeally the animation should not exist on creation value of true. However toggling the state later in code could allow animation without issue. An option to toggle post creation animation is nice but not required.\r\n\r\nJust seeking clarification on the result of the PR.", "updateAuthor": { "name": "core13", "key": "core13", "displayName": "Malcolm Hollingsworth", "active": true, "timeZone": "Europe/London" }, "created": "2015-01-06T10:40:16.000+0000", "updated": "2015-01-06T10:40:16.000+0000" }, { "id": "337973", "author": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "body": "it will disable the animation when you programmatically set the value. When the user toggles it will still animate.", "updateAuthor": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "created": "2015-01-06T10:41:58.000+0000", "updated": "2015-01-06T10:41:58.000+0000" }, { "id": "337974", "author": { "name": "core13", "key": "core13", "displayName": "Malcolm Hollingsworth", "active": true, "timeZone": "Europe/London" }, "body": "I am not sure this is the correct direction. With ScrollableView you have the choice to animate from the current state to the chosen state or to simply arrive at the new state without animation. This logic occurs in many of the views with animation.\r\n\r\nThe use of animation (which is ever increasing) is to show the user a change of state. During creation animation is rarely if ever required as the presented information 'simply is'. However if the developer makes a code change on behalf of the user (not setting a default value) then the idea IS to draw attention to the thing that changed.\r\n\r\nSo I still believe that creation value should NOT animate, post creation SHOULD animate, although there is good logic to have that as an OPTION.", "updateAuthor": { "name": "core13", "key": "core13", "displayName": "Malcolm Hollingsworth", "active": true, "timeZone": "Europe/London" }, "created": "2015-01-06T11:14:20.000+0000", "updated": "2015-01-06T11:14:20.000+0000" }, { "id": "369547", "author": { "name": "timpoulsen", "key": "timpoulsen", "displayName": "Tim Poulsen", "active": true, "timeZone": "America/Havana" }, "body": "At creation, the switch should be rendered on screen already set to its starting value. This is not the case currently. If you create a switch with a starting value of true/on, you first see the switch in the false/off position, then a moment later it changes to true/on. Whether it animates that way or not is beside the point. A switch with a starting value of true/on should never be shown as false/off.\r\n\r\nFor subsequent changes (after the initial rendering), yes, I'd like to have the flexibility to enable/disable animation when programmatically setting the value.", "updateAuthor": { "name": "timpoulsen", "key": "timpoulsen", "displayName": "Tim Poulsen", "active": true, "timeZone": "America/Havana" }, "created": "2015-11-10T13:55:24.000+0000", "updated": "2015-11-10T13:55:24.000+0000" }, { "id": "369551", "author": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "body": "+1", "updateAuthor": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "created": "2015-11-10T14:34:04.000+0000", "updated": "2015-11-10T14:34:04.000+0000" }, { "id": "369552", "author": { "name": "core13", "key": "core13", "displayName": "Malcolm Hollingsworth", "active": true, "timeZone": "Europe/London" }, "body": "How on earth is this still an outstanding item?\r\n\r\nCreated April 2011, Bumped multiple times; including by myself almost 18 months ago. PR ready at the start of the year but still has a priority of \"Trivial\" and no schedule info.\r\n\r\nWhy are core elements like this being so long forsaken.", "updateAuthor": { "name": "core13", "key": "core13", "displayName": "Malcolm Hollingsworth", "active": true, "timeZone": "Europe/London" }, "created": "2015-11-10T14:46:23.000+0000", "updated": "2015-11-10T14:46:23.000+0000" }, { "id": "369556", "author": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "body": "FYI. We should take the PR into 5.1.1", "updateAuthor": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2015-11-10T15:59:08.000+0000", "updated": "2015-11-10T15:59:08.000+0000" }, { "id": "370491", "author": { "name": "cng", "key": "cng", "displayName": "Chee Kiat Ng", "active": false, "timeZone": "America/Los_Angeles" }, "body": "Sample code:\r\n{code}\r\nvar win = Ti.UI.createWindow({\r\n backgroundColor : \"#fff\"\r\n});\r\n\r\nvar mySwitch = Ti.UI.createSwitch({\r\n\ttop: 40,\r\n\tvalue: true,\r\n\tanimated: false\r\n});\r\n\r\nvar myButton1 = Ti.UI.createButton({\r\n\ttop: 80,\r\n\ttitle: 'toggle switch'\r\n});\r\n\r\nvar myLabel = Ti.UI.createLabel({\r\n\ttop: 120,\r\n\ttext: typeof mySwitch.animated==='undefined'? 'animated is default true' : 'animated is ' + mySwitch.animated\r\n});\r\n\r\nvar myButton2 = Ti.UI.createButton({\r\n\ttop: 160,\r\n\ttitle: 'set animated'\r\n});\r\n\r\nmyButton1.addEventListener('click', function(e) {\r\n\tmySwitch.setValue(!mySwitch.value);\r\n});\r\n\r\nmyButton2.addEventListener('click', function(e) {\r\n\tmySwitch.setAnimated(!mySwitch.animated);\r\n\tmyLabel.setText('animated is ' + mySwitch.animated);\r\n});\r\n\r\nwin.add(mySwitch);\r\nwin.add(myButton1);\r\nwin.add(myButton2);\r\nwin.add(myLabel);\r\nwin.open();\r\n{code}\r\n\r\nh4. Steps to test\r\n1. Set 'Slow Animations' on ios simulator (cmd-T)\r\n2. build and run sample code\r\n3. click 'toggle switch'\r\n4. click 'set animated'\r\n5. click 'toggle switch'\r\n6. Repeat step 2 to 3, but changing sample code {{animated: true}}\r\n7. Repeat step 2 to 3, but changing sample code to remove animated: ENTIRELY\r\n\r\nh4. Expected results\r\n2. Switch value is 'true' with ZERO animation\r\n3. Switch value will change with ZERO animation\r\n5. Switch value will change WITH animation\r\n6. This is the test case with animated property set to false during creation. there is still ZERO animation when launched, but clicking 'toggle switch' you can see values change WITH animation.\r\n7. This is the test case whereby you don't set the animated property at all (default is TRUE). there is still ZERO animation when launched, but clicking 'toggle switch' you can see values change WITH animation.", "updateAuthor": { "name": "cng", "key": "cng", "displayName": "Chee Kiat Ng", "active": false, "timeZone": "America/Los_Angeles" }, "created": "2015-11-17T07:53:31.000+0000", "updated": "2015-11-17T07:53:31.000+0000" }, { "id": "370493", "author": { "name": "cng", "key": "cng", "displayName": "Chee Kiat Ng", "active": false, "timeZone": "America/Los_Angeles" }, "body": "Master PR: https://github.com/appcelerator/titanium_mobile/pull/7456\r\n5_1_X backport PR: https://github.com/appcelerator/titanium_mobile/pull/7457 (Do not merge until 5.1.0.GA)", "updateAuthor": { "name": "cng", "key": "cng", "displayName": "Chee Kiat Ng", "active": false, "timeZone": "America/Los_Angeles" }, "created": "2015-11-17T08:05:34.000+0000", "updated": "2015-11-17T08:05:34.000+0000" }, { "id": "370498", "author": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "body": "[~cng] and [~hansknoechel] (reviewing) I don't think the implementation is clear. Having a global {{animation}} property on the object doesn't make clear what exactly is (not) animated. You'd easily think that if the user toggles it the control it will not animate either, which is not correct (right?) - it will always animate when the user toggles it.\r\n\r\nIt would find this a lot clearer and also more in line with other API's like:\r\nhttps://appcelerator.github.io/appc-docs/latest/#!/api/showParams-property-animated\r\n\r\n{code:javascript}\r\nvar mySwitch = Ti.UI.createSwitch({\r\n\r\n\t// initial value should NEVER be animated\r\n\tvalue: true\r\n});\r\n\r\n// programmatically setting it should NOT animate by default (unlike now)\r\nmySwitch.value = false;\r\nmySwitch.setValue(false);\r\n\r\n// if you do want animation when setting it programmatically you should be able to do:\r\nmySwitch.setValue(false, {\r\n\tanimated: true\r\n});\r\n{code}", "updateAuthor": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "created": "2015-11-17T08:48:54.000+0000", "updated": "2015-11-19T07:50:36.000+0000" }, { "id": "370661", "author": { "name": "cng", "key": "cng", "displayName": "Chee Kiat Ng", "active": false, "timeZone": "America/Los_Angeles" }, "body": "After attempting to achieve the 2nd proposition, i realised it's not quite possible to code. We cannot do switch.setValue(Boolean, Dictionary). If you observe OptionDIalog.show carefully, we are actually intending to do:\r\n{code}\r\nswitch.setValue({\r\n value: true,\r\n animated: true\r\n});\r\n{code}\r\nAnd this would be a problem for UISwitch creation. because you are expecting people to do this now:\r\n{code}\r\nvar mySwitch = Ti.UI.createSwitch({\r\n\ttop: 40,\r\n\tvalue: {\r\n value: true,\r\n animated: true\r\n }\r\n});\r\n{code}\r\nThe reason why is because Titanium uses the same setValue method during creation.\r\nIt is possible to do it such that value can either be a Boolean or Dictionary so that we can stick back to the old style for creation while maintaining the new style for post-setValue, but in the future, deprecating setValue(Boolean) will then be an issue. That would imply that we need people to createSwitch in the new style. \r\n\r\nUnless, we introduce a new method called setValueWithAnimation(Dictionary). and consider setValue(Boolean) inherently uses default animation = true.\r\n\r\nOr. Use my proposition for a global animated property.\r\n", "updateAuthor": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "created": "2015-11-18T05:58:35.000+0000", "updated": "2015-11-19T07:50:15.000+0000" }, { "id": "370686", "author": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "body": "Even if Titanium uses setValue on creation, how is it a problem if the second argument is optional?", "updateAuthor": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "created": "2015-11-18T12:38:35.000+0000", "updated": "2015-11-18T12:38:35.000+0000" }, { "id": "370703", "author": { "name": "core13", "key": "core13", "displayName": "Malcolm Hollingsworth", "active": true, "timeZone": "Europe/London" }, "body": "I did not understand how the points 2-7 on expected results helps explain the situation.\r\n\r\nThis needs to be really simple;\r\n\r\n# Switch animations _should not_ occur if property 'value' is set to 'true' on creation\r\n# Switch animations _should_ occur during any user interaction.\r\n\r\nIt would be ideal if *setValue* gained an optional parameter of animated (where the default is true)\r\n\r\n# *switch.setValue(true)* = animation if previous value was false\r\n# *switch.setValue(false)* = animation if previous value was true\r\n# *switch.setValue(true, true)* = animation if previous value was false\r\n# *switch.setValue(false, true)* = animation if previous value was true\r\n# *switch.setValue(true, false)* = no animation \r\n# *switch.setValue(false, false)* = no animation \r\n\r\nOptional syntax;\r\n\r\n{code:json}\r\nswitch.setValue(true, {\r\n animated: false\r\n});\r\n{code}\r\n\r\nThis would then use a similar property syntax as method *open* on *window*.\r\n", "updateAuthor": { "name": "core13", "key": "core13", "displayName": "Malcolm Hollingsworth", "active": true, "timeZone": "Europe/London" }, "created": "2015-11-18T15:57:32.000+0000", "updated": "2015-11-18T15:57:32.000+0000" }, { "id": "370794", "author": { "name": "cng", "key": "cng", "displayName": "Chee Kiat Ng", "active": false, "timeZone": "America/Los_Angeles" }, "body": "Maybe i can explain this another way.\r\nValue is a property. setValue() and getValue() is a property setter and getter. Not really a method that we can do the fancy stuff like setValue(Boolean, (optional){Dictionary})\r\nor to better understand this, what can i expect to get for getValue() if i somehow implemented the above method?\r\nThe closest way we can achieve this is to set the property to an array. Which we cannot do because of parity with other platforms.\r\nSo only my global animated makes sense here. OR, we can make an exclusive ios method setValueWithAnimation(Bool, Dict).\r\n", "updateAuthor": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "created": "2015-11-19T07:45:57.000+0000", "updated": "2015-11-19T07:49:52.000+0000" }, { "id": "370795", "author": { "name": "cng", "key": "cng", "displayName": "Chee Kiat Ng", "active": false, "timeZone": "America/Los_Angeles" }, "body": "[~core13], sorry if my test steps aren't clear. Rest assured, the most important part is already fixed in this PR:\r\n{quote}\r\nSwitch animations should not occur if property 'value' is set to 'true' on creation\r\nSwitch animations should occur during any user interaction.\r\n{quote}\r\nYou can test out the PR if you want while we are still reviewing the latter:\r\n{quote}\r\nIt would be ideal if setValue gained an optional parameter of animated (where the default is true)\r\n{quote}", "updateAuthor": { "name": "cng", "key": "cng", "displayName": "Chee Kiat Ng", "active": false, "timeZone": "America/Los_Angeles" }, "created": "2015-11-19T07:49:11.000+0000", "updated": "2015-11-19T07:49:11.000+0000" }, { "id": "370796", "author": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "body": "[~cng] I found a proxy that does the exact same thing which we can copy from:\r\n\r\n* https://github.com/appcelerator/titanium_mobile/blob/master/iphone/Classes/TiUISlider.m#L235-L247\r\n* https://appcelerator.github.io/appc-docs/latest/#!/api/Titanium.UI.Slider-method-setValue", "updateAuthor": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "created": "2015-11-19T08:10:02.000+0000", "updated": "2015-11-19T08:10:02.000+0000" }, { "id": "371085", "author": { "name": "cng", "key": "cng", "displayName": "Chee Kiat Ng", "active": false, "timeZone": "America/Los_Angeles" }, "updateAuthor": { "name": "cng", "key": "cng", "displayName": "Chee Kiat Ng", "active": false, "timeZone": "America/Los_Angeles" }, "created": "2015-11-23T02:15:00.000+0000", "updated": "2015-11-23T02:15:00.000+0000" }, { "id": "371088", "author": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "body": "Discussed the issue with [~cng] and [~penrique] last week: It makes more sense to use the solution of Kiat, instead of configuring it using an options object. It is more flexible and internally much cleaner. Please review the approve and I will merge it after we agreed.", "updateAuthor": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "created": "2015-11-23T03:10:14.000+0000", "updated": "2015-11-23T03:10:14.000+0000" }, { "id": "371126", "author": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "body": "Well if there's no other solution I guess we better resolve it with what we can do. Maybe rename {{animated}} to something like {{setValueAnimated}} to make it clear it does *not* effect animation when user changes value?", "updateAuthor": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "created": "2015-11-23T10:01:00.000+0000", "updated": "2015-11-23T10:01:00.000+0000" }, { "id": "371132", "author": { "name": "core13", "key": "core13", "displayName": "Malcolm Hollingsworth", "active": true, "timeZone": "Europe/London" }, "body": "So no solution for or wish to attend to the following?\r\n\r\n{quote}\r\nIt would be ideal if setValue gained an optional parameter of animated (where the default is true)\r\n{quote}", "updateAuthor": { "name": "core13", "key": "core13", "displayName": "Malcolm Hollingsworth", "active": true, "timeZone": "Europe/London" }, "created": "2015-11-23T10:38:33.000+0000", "updated": "2015-11-23T10:38:33.000+0000" }, { "id": "371133", "author": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "body": "Yes, it seems so :(", "updateAuthor": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "created": "2015-11-23T10:41:18.000+0000", "updated": "2015-11-23T10:41:18.000+0000" }, { "id": "371242", "author": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "body": "It is a architectural decision. You can make a switch non-animated by default:\r\n\r\n{code:javascript}\r\nvar switch1 = Ti.UI.createSwitch({\r\n animated: false\r\n});\r\n{code}\r\nor leave it animated (default):\r\n{code:javascript}\r\nvar switch2 = Ti.UI.createSwitch();\r\n{code}\r\nor change its animation behavior for manual cases:\r\n{code:javascript}\r\nswitch2.setAnimated(false);\r\nswitch2.setValue(false);\r\n{code}\r\n\r\nThis feature will be available in 5.1.1 and 5.2.0.", "updateAuthor": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "created": "2015-11-23T22:05:49.000+0000", "updated": "2015-11-23T22:06:42.000+0000" }, { "id": "371262", "author": { "name": "htbryant", "key": "htbryant", "displayName": "Harry Bryant", "active": true, "timeZone": "Europe/London" }, "body": "Verified as fixed, ran the sample code & test cases provided by [~cng] and build with SDK: {{5.1.1.v20151123142050}}. Toggling animation on switch functions correctly, and removing the {{animated}} property from the code sets the switch to be animated by default. \r\n\r\nTested on: \r\nDevices: iPhones 6S (9.1) \r\nSimulators: (9.1) \r\nMac OSX El Capitan 10.11 (15A284)\r\nTi SDK: 5.1.1.v20151123142050\r\nAppc Studio: 4.4.0.201511182122\r\nAppc NPM: 4.2.2\r\nAppc CLI: 5.1.0-60\r\nAlloy: 1.7.26\r\nXcode 7.1(7B91b)\r\nNode v0.12.7\r\n\r\n*Closing ticket.*", "updateAuthor": { "name": "htbryant", "key": "htbryant", "displayName": "Harry Bryant", "active": true, "timeZone": "Europe/London" }, "created": "2015-11-23T23:11:24.000+0000", "updated": "2015-11-23T23:11:24.000+0000" }, { "id": "371509", "author": { "name": "cng", "key": "cng", "displayName": "Chee Kiat Ng", "active": false, "timeZone": "America/Los_Angeles" }, "body": "To Note: This ticket is marked 5.1.2 but PR was merged in 5.1.1GA", "updateAuthor": { "name": "cng", "key": "cng", "displayName": "Chee Kiat Ng", "active": false, "timeZone": "America/Los_Angeles" }, "created": "2015-11-26T03:47:56.000+0000", "updated": "2015-11-26T03:47:56.000+0000" } ], "maxResults": 36, "total": 36, "startAt": 0 } } }