{ "id": "173975", "key": "TIMOB-27305", "fields": { "issuetype": { "id": "4", "description": "An improvement or enhancement to an existing feature or task.", "name": "Improvement", "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": "20950", "name": "Release 9.1.0", "archived": false, "released": true, "releaseDate": "2020-08-25" } ], "resolution": { "id": "1", "description": "A fix for this issue is checked into the tree and tested.", "name": "Fixed" }, "resolutiondate": "2020-08-06T12:19:18.000+0000", "created": "2019-08-03T22:49:27.000+0000", "priority": { "name": "High", "id": "2" }, "labels": [], "versions": [], "issuelinks": [ { "id": "58409", "type": { "id": "10001", "name": "Cloners", "inward": "is cloned into", "outward": "is cloned from" }, "inwardIssue": { "id": "175115", "key": "TIMOB-27946", "fields": { "summary": "Android: Implement Ti.View.borderRadius multiple values for custom edge radii", "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": "4", "description": "An improvement or enhancement to an existing feature or task.", "name": "Improvement", "subtask": false } } } }, { "id": "58249", "type": { "id": "10002", "name": "Duplicate", "inward": "is duplicated by", "outward": "duplicates" }, "inwardIssue": { "id": "174792", "key": "TIMOB-27793", "fields": { "summary": "Add ability to control borderRadius for each corner independently", "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": "None", "id": "6" }, "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-08-26T10:29:08.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": "A developer should be able to configure custom border radii, e.g. bottom-left, bottom-right, top-left and top-right. The size of the radius can and should be reused from the existing border-radius property.\r\n\r\nExample:\r\n{code:js}\r\nvar win = Ti.UI.createWindow({\r\n backgroundColor: '#333'\r\n});\r\n\r\nvar view = Ti.UI.createView({\r\n backgroundColor: '#fff',\r\n height: 350,\r\n bottom: 0,\r\n borderRadius: '20 20dp 20px 12px',\r\n});\r\n\r\nwin.add(view);\r\nwin.open();\r\n{code}\r\n\r\n !Bildschirmfoto 2019-08-04 um 00.51.50.png|thumbnail! ", "attachment": [ { "id": "66801", "filename": "Bildschirmfoto 2019-08-04 um 00.51.50.png", "author": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "created": "2019-08-03T22:52:20.000+0000", "size": 518661, "mimeType": "image/png" }, { "id": "67479", "filename": "chart.js", "author": { "name": "vijaysingh", "key": "vijaysingh", "displayName": "Vijay Singh", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2020-07-25T00:24:06.000+0000", "size": 5747, "mimeType": "application/x-javascript" }, { "id": "67478", "filename": "Dummy.zip", "author": { "name": "bhouse", "key": "bhouse", "displayName": "Brenton House", "active": true, "timeZone": "America/Chicago" }, "created": "2020-07-24T19:03:10.000+0000", "size": 5713308, "mimeType": "application/zip" } ], "flagged": false, "summary": "iOS: Implement Ti.View.borderRadius multiple values for custom edge radii", "creator": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "subtasks": [], "reporter": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "environment": null, "comment": { "comments": [ { "id": "450259", "author": { "name": "michael", "key": "michael", "displayName": "Michael Gangolf", "active": true, "timeZone": "Europe/Berlin" }, "body": "if doing it for Android API >=21 (Lollipop) it should be relatively easy:\r\nhttps://github.com/appcelerator/titanium_mobile/blob/1a2343d1500a47ea5adabe8a52fcc077dd4b5169/android/titanium/src/java/org/appcelerator/titanium/view/TiBorderWrapperView.java#L79\r\n\r\nand use {{radius}} as an array like this: https://stackoverflow.com/a/56238564/5193915\r\n\r\nPassing the borderRadiusEdges as a parameter in https://github.com/appcelerator/titanium_mobile/blob/5852910f76d9c40418b77e81d5aefd727b60cd8a/android/titanium/src/java/org/appcelerator/titanium/view/TiUIView.java#L1467\r\nor make a custom method so it can be changed later on again.\r\n\r\nI'll give it a try", "updateAuthor": { "name": "michael", "key": "michael", "displayName": "Michael Gangolf", "active": true, "timeZone": "Europe/Berlin" }, "created": "2019-08-04T09:38:12.000+0000", "updated": "2019-08-04T09:38:12.000+0000" }, { "id": "450260", "author": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "body": "Nice! I think API 21 is totally fine", "updateAuthor": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "created": "2019-08-04T09:51:02.000+0000", "updated": "2019-08-04T09:51:02.000+0000" }, { "id": "450261", "author": { "name": "michael", "key": "michael", "displayName": "Michael Gangolf", "active": true, "timeZone": "Europe/Berlin" }, "body": "Looking good already :)\r\n!http://migaweb.de/Screenshot_20190804-131420.png!", "updateAuthor": { "name": "michael", "key": "michael", "displayName": "Michael Gangolf", "active": true, "timeZone": "Europe/Berlin" }, "created": "2019-08-04T11:16:46.000+0000", "updated": "2019-08-04T11:16:46.000+0000" }, { "id": "450262", "author": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "body": "Pulls:\r\n- iOS: https://github.com/appcelerator/titanium_mobile/pull/11113\r\n- Android: https://github.com/appcelerator/titanium_mobile/pull/11114", "updateAuthor": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "created": "2019-08-04T12:02:17.000+0000", "updated": "2019-08-04T12:02:17.000+0000" }, { "id": "450263", "author": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "body": "[~michael] Would you mind checking if this can also be applied to CardView? The borders are usually smoother and play better with shadows / elevation.\r\n\r\n*EDIT*: It seems to be possible using {{setBackgroundResource}} as described [here|https://stackoverflow.com/a/54744063/5537752], but then an XML resource is required. Meeeh...", "updateAuthor": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "created": "2019-08-04T19:14:04.000+0000", "updated": "2019-08-04T19:16:13.000+0000" }, { "id": "454591", "author": { "name": "bhouse", "key": "bhouse", "displayName": "Brenton House", "active": true, "timeZone": "America/Chicago" }, "body": "Adding comments here from duplicate ticket:\r\n\r\nAfter changes, this should be able to be possible:\r\n\r\n\r\n\r\n\r\n\r\nview.borderRadius = 15;\r\nview.borderRadius = \"15\";\r\nview.borderRadius = \"0 15\";\r\nview.borderRadius = \"0 15 0 15\";\r\n\r\n\r\n", "updateAuthor": { "name": "bhouse", "key": "bhouse", "displayName": "Brenton House", "active": true, "timeZone": "America/Chicago" }, "created": "2020-03-06T20:08:43.000+0000", "updated": "2020-03-06T20:08:43.000+0000" }, { "id": "454656", "author": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "body": "Please not. That doesn't look JS'ish and is especially horrible to manage when you're populating the corner values dynamically. Best would be to pass it via classic dictionary styles like done with padding, contentInsets, separatorInsets etc. pp. Also, the ticket went completely stale although completely contributed and finished by the community. Very sad, guys.", "updateAuthor": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "created": "2020-03-11T08:30:48.000+0000", "updated": "2020-03-11T08:30:48.000+0000" }, { "id": "455661", "author": { "name": "bhouse", "key": "bhouse", "displayName": "Brenton House", "active": true, "timeZone": "America/Chicago" }, "body": "[~amukherjee] - Is there any way we can get this assigned to someone and prioritized? This is a big missing feature and we have a PR from community.", "updateAuthor": { "name": "bhouse", "key": "bhouse", "displayName": "Brenton House", "active": true, "timeZone": "America/Chicago" }, "created": "2020-06-07T04:11:55.000+0000", "updated": "2020-06-07T04:11:55.000+0000" }, { "id": "455692", "author": { "name": "gmathews", "key": "gmathews", "displayName": "Gary Mathews", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Maybe reword into {{borderRadiusCorner}} instead of edge?", "updateAuthor": { "name": "gmathews", "key": "gmathews", "displayName": "Gary Mathews", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2020-06-08T17:11:11.000+0000", "updated": "2020-06-08T17:11:11.000+0000" }, { "id": "455694", "author": { "name": "michael", "key": "michael", "displayName": "Michael Gangolf", "active": true, "timeZone": "Europe/Berlin" }, "body": "or {{borderRadiusCorners}} because you have to set an array? ", "updateAuthor": { "name": "michael", "key": "michael", "displayName": "Michael Gangolf", "active": true, "timeZone": "Europe/Berlin" }, "created": "2020-06-08T17:21:57.000+0000", "updated": "2020-06-08T17:21:57.000+0000" }, { "id": "455708", "author": { "name": "amukherjee", "key": "amukherjee", "displayName": "Abir Mukherjee", "active": true, "timeZone": "America/Los_Angeles" }, "body": "[~bhouse], thanks for the comment. Yes, we have a couple of engineers reviewing this now.", "updateAuthor": { "name": "amukherjee", "key": "amukherjee", "displayName": "Abir Mukherjee", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2020-06-09T01:01:01.000+0000", "updated": "2020-06-09T01:01:01.000+0000" }, { "id": "455767", "author": { "name": "vijaysingh", "key": "vijaysingh", "displayName": "Vijay Singh", "active": true, "timeZone": "America/Los_Angeles" }, "body": "PR - https://github.com/appcelerator/titanium_mobile/pull/11801\r\nTest Case - \r\n\r\n{code:java}\r\nvar win = Ti.UI.createWindow({\r\n backgroundColor: 'white'\r\n});\r\n \r\nvar view = Ti.UI.createView({\r\n backgroundColor: 'red',\r\n height: 350,\r\n width: 350,\r\n bottom: 40,\r\n borderRadius: ['20', '40', 60, '80'],\r\n //borderRadius: \"20 40 60 80\",\r\n //borderRadius: [20, 40],\r\n //borderRadius: 40,\r\n});\r\n \r\nwin.add(view);\r\nwin.open();\r\n{code}\r\n", "updateAuthor": { "name": "vijaysingh", "key": "vijaysingh", "displayName": "Vijay Singh", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2020-06-11T18:07:15.000+0000", "updated": "2020-07-01T20:15:29.000+0000" }, { "id": "456006", "author": { "name": "smohammed", "key": "smohammed", "displayName": "Samir Mohammed", "active": true, "timeZone": "America/Los_Angeles" }, "body": "FR Passed, waiting on Jenkins build. ", "updateAuthor": { "name": "smohammed", "key": "smohammed", "displayName": "Samir Mohammed", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2020-07-06T15:20:15.000+0000", "updated": "2020-07-06T15:20:15.000+0000" }, { "id": "456012", "author": { "name": "cwilliams", "key": "cwilliams", "displayName": "Christopher Williams", "active": true, "timeZone": "America/New_York" }, "body": "merged to master for 9.1.0 target", "updateAuthor": { "name": "cwilliams", "key": "cwilliams", "displayName": "Christopher Williams", "active": true, "timeZone": "America/New_York" }, "created": "2020-07-07T14:51:54.000+0000", "updated": "2020-07-07T14:51:54.000+0000" }, { "id": "456223", "author": { "name": "max87", "key": "max87", "displayName": "Marian Kucharcik", "active": true, "timeZone": "Europe/Prague" }, "body": "Hi guys, I installed Ti.SDK 9.1.0.v20200723064106 today to test it and found a bug - I have views(bar chart) which each bar has borderRadius: [ '8', '0', '8', \"0\" ], so top left and bottom right corners are rounded. Problem is, that height of the each bar is dynamically generated(based on value from API) and animated and if height is small(let's say 60% of parent), both corners are rounded. But if height is bigger, bottom right corner loose its shape(see attached screenshot, all bars are generated in for loop with same code and there are differences in corner radius). Can you pls look at it and fix it?\r\nTested on iPhone 11 Pro simulator, iOS13.6\r\nThank you\r\nCan't add screenshot here, so it's in PR on github: [link to screenshot|https://github.com/appcelerator/titanium_mobile/pull/11801#issuecomment-663650011]", "updateAuthor": { "name": "max87", "key": "max87", "displayName": "Marian Kucharcik", "active": true, "timeZone": "Europe/Prague" }, "created": "2020-07-24T17:45:20.000+0000", "updated": "2020-07-24T17:45:20.000+0000" }, { "id": "456224", "author": { "name": "vijaysingh", "key": "vijaysingh", "displayName": "Vijay Singh", "active": true, "timeZone": "America/Los_Angeles" }, "body": "[~max87] Can you provide a simple test case to reproduce the issue? It'll help us debug faster. Thanks! ", "updateAuthor": { "name": "vijaysingh", "key": "vijaysingh", "displayName": "Vijay Singh", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2020-07-24T17:53:11.000+0000", "updated": "2020-07-24T17:53:11.000+0000" }, { "id": "456226", "author": { "name": "max87", "key": "max87", "displayName": "Marian Kucharcik", "active": true, "timeZone": "Europe/Prague" }, "body": "Working on it(standalone app which generates chart similar to screenshot's)...\r\n\r\n@Vijay Singh here it is: [standalone app which generates chart |https://github.com/appcelerator/titanium_mobile/pull/11801#issuecomment-663678070]\r\nThank you", "updateAuthor": { "name": "max87", "key": "max87", "displayName": "Marian Kucharcik", "active": true, "timeZone": "Europe/Prague" }, "created": "2020-07-24T18:37:48.000+0000", "updated": "2020-07-24T18:53:10.000+0000" }, { "id": "456227", "author": { "name": "bhouse", "key": "bhouse", "displayName": "Brenton House", "active": true, "timeZone": "America/Chicago" }, "body": "I also attached the file containing the test project to this ticket.", "updateAuthor": { "name": "bhouse", "key": "bhouse", "displayName": "Brenton House", "active": true, "timeZone": "America/Chicago" }, "created": "2020-07-24T19:03:55.000+0000", "updated": "2020-07-24T19:03:55.000+0000" }, { "id": "456229", "author": { "name": "vijaysingh", "key": "vijaysingh", "displayName": "Vijay Singh", "active": true, "timeZone": "America/Los_Angeles" }, "body": "[~max87] There is problem in height calculation in your code. \r\n\"barValueMaster.top + barValueMaster.height + barValueLabel.height <= 125 (barValueLabelMasterView.height): \"\r\n\r\nSet barValueMaster.top = 1 instead 5 . It will fix your issue. Find updated chart.js in attachment.\r\nLet me know if you face any other issue. Thanks! ", "updateAuthor": { "name": "vijaysingh", "key": "vijaysingh", "displayName": "Vijay Singh", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2020-07-25T00:23:51.000+0000", "updated": "2020-07-25T00:23:51.000+0000" }, { "id": "456231", "author": { "name": "max87", "key": "max87", "displayName": "Marian Kucharcik", "active": true, "timeZone": "Europe/Prague" }, "body": "Thank you @Vijay Singh, my mistake, I apologise. I changed barValueMaster.top and it's working fine. ", "updateAuthor": { "name": "max87", "key": "max87", "displayName": "Marian Kucharcik", "active": true, "timeZone": "Europe/Prague" }, "created": "2020-07-25T01:45:10.000+0000", "updated": "2020-07-25T01:45:10.000+0000" }, { "id": "456247", "author": { "name": "vijaysingh", "key": "vijaysingh", "displayName": "Vijay Singh", "active": true, "timeZone": "America/Los_Angeles" }, "body": "No Problem. Happy to help!", "updateAuthor": { "name": "vijaysingh", "key": "vijaysingh", "displayName": "Vijay Singh", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2020-07-27T18:25:13.000+0000", "updated": "2020-07-27T18:25:13.000+0000" }, { "id": "456356", "author": { "name": "ssaddique", "key": "ssaddique", "displayName": "Sohail Saddique", "active": true, "timeZone": "Europe/London" }, "body": "Fix verified in build 9.1.0.v20200804082025. Ticket closed.", "updateAuthor": { "name": "ssaddique", "key": "ssaddique", "displayName": "Sohail Saddique", "active": true, "timeZone": "Europe/London" }, "created": "2020-08-06T12:18:55.000+0000", "updated": "2020-08-06T12:18:55.000+0000" }, { "id": "456596", "author": { "name": "benutzername", "key": "benutzername", "displayName": "Sebastian Klaus", "active": true, "timeZone": "Europe/Berlin" }, "updateAuthor": { "name": "benutzername", "key": "benutzername", "displayName": "Sebastian Klaus", "active": true, "timeZone": "Europe/Berlin" }, "created": "2020-08-26T10:29:08.000+0000", "updated": "2020-08-26T10:29:08.000+0000" } ], "maxResults": 23, "total": 23, "startAt": 0 } } }