{ "id": "134095", "key": "TIMOB-17450", "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": "18414", "description": "", "name": "Release 6.2.0", "archived": false, "released": true, "releaseDate": "2017-09-13" } ], "resolution": { "id": "1", "description": "A fix for this issue is checked into the tree and tested.", "name": "Fixed" }, "resolutiondate": "2017-08-30T15:15:08.000+0000", "created": "2014-08-03T16:46:19.000+0000", "priority": { "name": "Medium", "id": "3" }, "labels": [ "calendar", "parity" ], "versions": [], "issuelinks": [ { "id": "52230", "type": { "id": "10003", "name": "Relates", "inward": "relates to", "outward": "relates to" }, "outwardIssue": { "id": "147991", "key": "TIMOB-18927", "fields": { "summary": "iOS: Calendar Event: Allow to fetch event Organiser and Invitees/Attendees details", "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": "ybanev", "key": "ybanev", "displayName": "Yordan Banev", "active": true, "timeZone": "Europe/Athens" }, "updated": "2017-08-30T15:15:15.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": "All properties associated with a Calendar Event should be exposed. Currently for example you can't see the attendees of the event, which is an important aspect of the Calendar event.", "attachment": [], "flagged": false, "summary": "Android: Ti.Calendar.Event should expose the attendees of the meeting invite as a property (Parity with iOS)", "creator": { "name": "bgrantges@appcelerator.com", "key": "bgrantges", "displayName": "Bert Grantges", "active": false, "timeZone": "America/Chicago" }, "subtasks": [], "reporter": { "name": "bgrantges@appcelerator.com", "key": "bgrantges", "displayName": "Bert Grantges", "active": false, "timeZone": "America/Chicago" }, "environment": "Ti SDK 3.3+", "closedSprints": [ { "id": 585, "state": "closed", "name": "2016 Sprint 5 SDK", "startDate": "2016-02-27T01:30:43.377Z", "endDate": "2016-03-12T01:30:00.000Z", "completeDate": "2016-03-14T11:50:17.995Z", "originBoardId": 114 } ], "comment": { "comments": [ { "id": "328748", "author": { "name": "Yrkh8trnoy", "key": "yrkh8trnoy", "displayName": "Kiley Williams", "active": true, "timeZone": "America/Vancouver" }, "body": "Has there been any review of this issue? It seems that it is exposing a property that is cleanly available through both the Android Platform and the iOS platform. I'd like to help on this if possible, since it is directly impacting a project I am working on. Let me know if I can help!", "updateAuthor": { "name": "Yrkh8trnoy", "key": "yrkh8trnoy", "displayName": "Kiley Williams", "active": true, "timeZone": "America/Vancouver" }, "created": "2014-10-21T04:11:21.000+0000", "updated": "2014-10-21T04:11:21.000+0000" }, { "id": "328798", "author": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Hi [~Yrkh8trnoy], we have reviewed it, but not scheduled it for a release. I would expect that you should be able to view the existing calendar code and see if you can arrive at a proposed implementation. I would suggest first coming up with a proposal of what the property would look like.", "updateAuthor": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2014-10-21T14:18:56.000+0000", "updated": "2014-10-21T14:18:56.000+0000" }, { "id": "328825", "author": { "name": "Yrkh8trnoy", "key": "yrkh8trnoy", "displayName": "Kiley Williams", "active": true, "timeZone": "America/Vancouver" }, "body": "Thanks for the quick reply @ingo.\r\n\r\nSince the property is an array of EKParticipant objects (for iOS, haven't checked Android yet). Keeping in mind that on iOS, \"attendees\" is a read-only property, and they suggest not creating new EKParticipant object, here's what i am thinking:\r\n\r\n* Create an EKParticipantProxy (or some better name) that I can then access through my Titanium code and iterate over it there. This seems to be overkill, especially for a read-only, 5-property object, but it seems like the only actual valid way of doing it.", "updateAuthor": { "name": "Yrkh8trnoy", "key": "yrkh8trnoy", "displayName": "Kiley Williams", "active": true, "timeZone": "America/Vancouver" }, "created": "2014-10-21T15:40:00.000+0000", "updated": "2014-10-21T15:40:00.000+0000" }, { "id": "377075", "author": { "name": "Yrkh8trnoy", "key": "yrkh8trnoy", "displayName": "Kiley Williams", "active": true, "timeZone": "America/Vancouver" }, "body": "So I see this was never resolved and has popped up as an issue once again in our code.", "updateAuthor": { "name": "Yrkh8trnoy", "key": "yrkh8trnoy", "displayName": "Kiley Williams", "active": true, "timeZone": "America/Vancouver" }, "created": "2016-02-17T07:36:32.000+0000", "updated": "2016-02-17T07:36:32.000+0000" }, { "id": "378614", "author": { "name": "melissa7mb", "key": "melissa7mb", "displayName": "Melissa Chan", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Hi, I've started to use the Ti.Calendar.Event in my code and this functionality will be important for me. This issue seems to be a couple years old and I was wondering if there are any updates on it?", "updateAuthor": { "name": "melissa7mb", "key": "melissa7mb", "displayName": "Melissa Chan", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2016-03-03T18:28:00.000+0000", "updated": "2016-03-03T18:28:00.000+0000" }, { "id": "383903", "author": { "name": "ssombhatla", "key": "ssombhatla", "displayName": "Srikanth Sombhatla", "active": false, "timeZone": "Asia/Singapore" }, "body": "iOS: \r\nhttps://developer.apple.com/library/ios/documentation/EventKit/Reference/EKParticipantClassRef/index.html#//apple_ref/c/tdef/EKParticipantType\r\n\r\nAndroid: http://developer.android.com/guide/topics/providers/calendar-provider.html#attendees\r\n\r\nNot all properties can be mapped since there is certain variation or non-existing properties. The following can be considered \r\n\r\nname: The attendee name\r\nemail: The attendee email. For iOS this is URL.resourceSpecifier http://stackoverflow.com/questions/13642786/how-to-get-ekevent-ekparticipant-email\r\nrole: Role of attendee - required, optional. EKParticipant.role in iOS, ATTENDEE_TYPE in Android. \r\nstatus: Attendee status - unknown, accepted, declined, tentative. ", "updateAuthor": { "name": "ssombhatla", "key": "ssombhatla", "displayName": "Srikanth Sombhatla", "active": false, "timeZone": "Asia/Singapore" }, "created": "2016-04-26T08:46:40.000+0000", "updated": "2016-04-26T08:48:54.000+0000" }, { "id": "384682", "author": { "name": "Yrkh8trnoy", "key": "yrkh8trnoy", "displayName": "Kiley Williams", "active": true, "timeZone": "America/Vancouver" }, "body": "Thanks @Srikanth. Looking forward to working with it soon! I'm guessing the Windows implementation of this would be via hyperloop?", "updateAuthor": { "name": "Yrkh8trnoy", "key": "yrkh8trnoy", "displayName": "Kiley Williams", "active": true, "timeZone": "America/Vancouver" }, "created": "2016-05-04T08:38:12.000+0000", "updated": "2016-05-04T08:38:12.000+0000" }, { "id": "386414", "author": { "name": "Yrkh8trnoy", "key": "yrkh8trnoy", "displayName": "Kiley Williams", "active": true, "timeZone": "America/Vancouver" }, "body": "Hi folks, I see this is in progress. How's it coming along?", "updateAuthor": { "name": "Yrkh8trnoy", "key": "yrkh8trnoy", "displayName": "Kiley Williams", "active": true, "timeZone": "America/Vancouver" }, "created": "2016-05-22T22:29:44.000+0000", "updated": "2016-05-22T22:29:44.000+0000" }, { "id": "387498", "author": { "name": "sriks6504", "key": "sriks6504", "displayName": "Srikanth", "active": true, "timeZone": "Asia/Singapore" }, "body": "PR for iOS and Android: https://github.com/appcelerator/titanium_mobile/pull/7981\r\nUse the following app.js to test the code\r\n{code}\r\nvar calendars = [];\r\nvar selectedCalendarName;\r\nvar selectedid;\r\nvar pickerData = [];\r\nvar osname = Ti.Platform.osname;\r\n\r\nvar win = Ti.UI.createWindow({\r\n backgroundColor: 'white',\r\n exitOnClose: true,\r\n fullscreen: false,\r\n layout: 'vertical',\r\n title: 'Calendar Demo'\r\n});\r\n\r\nwin.addEventListener('open', function() {\r\n\tif (Ti.Calendar.hasCalendarPermissions()) {\r\n\t performCalendarReadFunctions();\r\n\t} else {\r\n\t Ti.Calendar.requestCalendarPermissions(function(e) {\r\n\t if (e.success) {\r\n\t performCalendarReadFunctions();\r\n\t } else {\r\n\t Ti.API.error(e.error);\r\n\t alert('Access to calendar is not allowed');\r\n\t }\r\n\t });\r\n\t}\r\n});\r\n\r\nfunction performCalendarReadFunctions() {\r\n var calendar;\r\n if (osname === 'android') {\r\n calendar = Ti.Calendar.selectableCalendars[0];\r\n } else {\r\n\t calendar = Ti.Calendar.defaultCalendar;\r\n }\r\n console.log('Using calendar:'+calendar.name);\r\n\r\n var currentYear = 2016;\r\n var events = calendar.getEventsInMonth(currentYear, 5);\r\n if (events && events.length) {\r\n console.log(events.length + ' event(s) in ' + currentYear);\r\n for (var i = 0; i < events.length; i++) {\r\n \tvar theEvent = events[i];\r\n \tconsole.log('event '+theEvent.id+' '+theEvent.title);\r\n \tprintAttendees(theEvent.attendees);\r\n }\r\n } else {\r\n console.log('No events');\r\n }\r\n}\r\n\r\nfunction printAttendees(attendees) {\r\n\tTi.API.info('attendees:'+attendees.length);\r\n\tfor (var i = 0; i < attendees.length; i++) {\r\n\t var e = attendees[i];\r\n\t \tTi.API.info('------------------------------------');\r\n Ti.API.info('name:'+e.name);\r\n Ti.API.info('email:'+e.email);\r\n var role = e.role;\r\n Ti.API.info('role:');\r\n if (role == Ti.Calendar.ATTENDEE_ROLE_REQUIRED) \r\n \tTi.API.info('ATTENDEE_ROLE_REQUIRED');\r\n else if (role === Ti.Calendar.ATTENDEE_ROLE_OPTIONAL)\t\t\r\n \tTi.API.info('ATTENDEE_ROLE_OPTIONAL');\r\n var status = e.status;\r\n Ti.API.info('status:');\r\n if (status === Ti.Calendar.ATTENDEE_STATUS_ACCEPTED) \r\n \tTi.API.info('ATTENDEE_STATUS_ACCEPTED');\r\n else if (status === Ti.Calendar.ATTENDEE_STATUS_DECLINED)\r\n \tTi.API.info('ATTENDEE_STATUS_DECLINED');\r\n else if (status === Ti.Calendar.ATTENDEE_STATUS_TENTATIVE)\r\n \tTi.API.info('ATTENDEE_STATUS_TENTATIVE');\r\n else \r\n \tTi.API.info('ATTENDEE_STATUS_UNKNOWN');\r\n\r\n if (e.isOrganiser) {\r\n \tTi.API.info('Organiser:YES');\r\n } else {\r\n \tTi.API.info('Organiser:NO');\r\n }\r\n Ti.API.info('------------------------------------');\r\n }\r\n}\r\n\r\nfunction showCalendars(calendars) {\r\n for (var i = 0; i < calendars.length; i++) {\r\n Ti.API.info(calendars[i].name);\r\n }\r\n}\r\n\r\nwin.open();\r\n{code}", "updateAuthor": { "name": "sriks6504", "key": "sriks6504", "displayName": "Srikanth", "active": true, "timeZone": "Asia/Singapore" }, "created": "2016-06-03T08:33:20.000+0000", "updated": "2016-06-03T08:33:20.000+0000" }, { "id": "388622", "author": { "name": "msamah", "key": "msamah", "displayName": "Ashraf Abu", "active": false, "timeZone": "Asia/Singapore" }, "body": "PR has been closed and rejected as the Android portion doesn't compile.", "updateAuthor": { "name": "msamah", "key": "msamah", "displayName": "Ashraf Abu", "active": false, "timeZone": "Asia/Singapore" }, "created": "2016-06-20T03:47:21.000+0000", "updated": "2016-06-20T03:47:21.000+0000" }, { "id": "389759", "author": { "name": "Yrkh8trnoy", "key": "yrkh8trnoy", "displayName": "Kiley Williams", "active": true, "timeZone": "America/Vancouver" }, "body": "Has there been any new movement on this folks?", "updateAuthor": { "name": "Yrkh8trnoy", "key": "yrkh8trnoy", "displayName": "Kiley Williams", "active": true, "timeZone": "America/Vancouver" }, "created": "2016-07-01T16:11:35.000+0000", "updated": "2016-07-01T16:11:35.000+0000" }, { "id": "404780", "author": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "body": "Scheduling for 6.2.0 for now. TIMOB-18927 exposed this for iOS, the Android equivalent should be handled in this ticket.", "updateAuthor": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "created": "2017-01-18T10:53:57.000+0000", "updated": "2017-01-18T10:53:57.000+0000" }, { "id": "426803", "author": { "name": "ybanev", "key": "ybanev", "displayName": "Yordan Banev", "active": true, "timeZone": "Europe/Athens" }, "body": "PR: https://github.com/appcelerator/titanium_mobile/pull/9325", "updateAuthor": { "name": "ybanev", "key": "ybanev", "displayName": "Yordan Banev", "active": true, "timeZone": "Europe/Athens" }, "created": "2017-08-16T19:37:40.000+0000", "updated": "2017-08-16T19:37:40.000+0000" }, { "id": "426979", "author": { "name": "lchoudhary", "key": "lchoudhary", "displayName": "Lokesh Choudhary", "active": true, "timeZone": "America/Los_Angeles" }, "body": "FR Passed for master. \r\nPR merged.", "updateAuthor": { "name": "lchoudhary", "key": "lchoudhary", "displayName": "Lokesh Choudhary", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2017-08-21T21:29:15.000+0000", "updated": "2017-08-21T21:29:15.000+0000" }, { "id": "427416", "author": { "name": "ybanev", "key": "ybanev", "displayName": "Yordan Banev", "active": true, "timeZone": "Europe/Athens" }, "body": "6_2_X: https://github.com/appcelerator/titanium_mobile/pull/9376", "updateAuthor": { "name": "ybanev", "key": "ybanev", "displayName": "Yordan Banev", "active": true, "timeZone": "Europe/Athens" }, "created": "2017-08-30T15:01:02.000+0000", "updated": "2017-08-30T15:01:02.000+0000" } ], "maxResults": 22, "total": 22, "startAt": 0 } } }