{
"id": "104951",
"key": "ALOY-388",
"fields": {
"issuetype": {
"id": "2",
"description": "A new feature of the product, which has yet to be developed.",
"name": "New Feature",
"subtask": false
},
"project": {
"id": "11113",
"key": "ALOY",
"name": "Alloy",
"projectCategory": {
"id": "10400",
"description": "Tools for developing applications",
"name": "Tooling"
}
},
"fixVersions": [
{
"id": "14770",
"description": "Alloy 0.3.4",
"name": "Alloy 0.3.4",
"archived": false,
"released": true,
"releaseDate": "2012-12-14"
},
{
"id": "14773",
"description": "2012 Sprint 24",
"name": "2012 Sprint 25",
"archived": true,
"released": true,
"releaseDate": "2012-12-17"
}
],
"resolution": {
"id": "1",
"description": "A fix for this issue is checked into the tree and tested.",
"name": "Fixed"
},
"resolutiondate": "2012-12-12T00:06:01.000+0000",
"created": "2012-11-14T15:23:04.000+0000",
"priority": {
"name": "Critical",
"id": "1"
},
"labels": [
"GA-candidate",
"notable"
],
"versions": [
{
"id": "14631",
"description": "Alloy 0.3.1",
"name": "Alloy 0.3.1",
"archived": false,
"released": true,
"releaseDate": "2012-11-02"
}
],
"issuelinks": [
{
"id": "22784",
"type": {
"id": "10020",
"name": "Depends",
"inward": "is dependent of",
"outward": "depends on"
},
"inwardIssue": {
"id": "103870",
"key": "ALOY-343",
"fields": {
"summary": "Facilitate Alloy code completion in Studio",
"status": {
"description": "A resolution has been taken, and it is awaiting verification by reporter. From here issues are either reopened, or are closed.",
"name": "Resolved",
"id": "5",
"statusCategory": {
"id": 3,
"key": "done",
"colorName": "green",
"name": "Done"
}
},
"priority": {
"name": "High",
"id": "2"
},
"issuetype": {
"id": "6",
"description": "gh.issue.epic.desc",
"name": "Epic",
"subtask": false
}
}
}
},
{
"id": "22817",
"type": {
"id": "10003",
"name": "Relates",
"inward": "relates to",
"outward": "relates to"
},
"inwardIssue": {
"id": "105050",
"key": "TISTUD-2783",
"fields": {
"summary": "Provide Content Assist for Alloy Elements in view XML files",
"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
}
}
}
},
{
"id": "22819",
"type": {
"id": "10003",
"name": "Relates",
"inward": "relates to",
"outward": "relates to"
},
"inwardIssue": {
"id": "105051",
"key": "TISTUD-2784",
"fields": {
"summary": "Provide Content Assist for attribute names in Alloy view XML files",
"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
}
}
}
},
{
"id": "22823",
"type": {
"id": "10003",
"name": "Relates",
"inward": "relates to",
"outward": "relates to"
},
"inwardIssue": {
"id": "105052",
"key": "TISTUD-2785",
"fields": {
"summary": "Hook up a special Content Assist processor for Alloy view XML files",
"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": null,
"updated": "2018-03-07T22:25:54.000+0000",
"status": {
"description": "A resolution has been taken, and it is awaiting verification by reporter. From here issues are either reopened, or are closed.",
"name": "Resolved",
"id": "5",
"statusCategory": {
"id": 3,
"key": "done",
"colorName": "green",
"name": "Done"
}
},
"components": [
{
"id": "12331",
"name": "Titanium Studio"
}
],
"description": "Alloy view files, which are XML, need code completion in TiStudio. There are 2 primary points at which code completion should be shown:\r\n\r\n# When a user types an opening angle bracket \\(<\\) and begins to type the name of a Titanium API, a list of possible code completions should appear\r\n# When a user has already typed the name of the element, code completion should help with typing the attributes of the XML element, based on the name of the element.\r\n\r\nTo do this, I assume TiStudio can continue to use the jsca documentation that it currently uses for code completion in traditional Titanium javascript files. This same method of code completion would then be applied instead to the creation of the Alloy XML views. \r\n\r\nThere are a couple special considerations when dealing with Alloy view XML. I will list them below, in order from least to highest priority in terms of determining which API is being created in the XML.\r\n\r\n# By default, all XML elements are assumed to be using the *Ti.UI* namespace. For example:\r\n{code:xml}\r\n\r\n{code} \r\nwould assume that the Titanium API to be created would be *Ti.UI.Label*.\r\n# Alloy has a set of \"implicit namespaces\" to make XML creation easier. For example:\r\n{code:xml}\r\n\r\n{code}\r\nwill not assume *Ti.UI*, but will instead assume *Ti.UI.iOS* as the namespace for the created component. Alloy has a listing of all \"implicit namespaces\" and will provide a means of generating the listing that TiStudio can use to improve the autocompletion for attributes.\r\n# Finally, Alloy allows for a *ns* attribute which will explicitly set the namespace of the API to be created. For example:\r\n{code:xml}\r\n\r\n{code}\r\nwould create a *Ti.Map.View* and autocompletion for attributes should apply to this API.\r\n\r\nFrom initial conversations about Alloy view autocompletion, it sounds as though the TiStudio team will need to establish criteria for determining that they are autcompleting for Alloy XML vs. generic XML, as they share the same extension. Hopefully there is additional criteria that can be used to make this distinction. \r\n\r\nh2. update\r\n\r\nA list of implicit namespaces can now be retrieved from Alloy by issuing the following command:\r\n\r\n\r\n\r\n{code}\r\n\r\nalloy info namespaces\r\n\r\n{code}\r\n\r\n\r\n\r\nThe list of implicit namespaces will returned as a JSON object. The object will look like this and will update as necessary with Alloy versions. The format will remain the same.\r\n\r\n\r\n\r\n{code:javascript}\r\n\r\n{\r\n \"Collection\": \"Alloy\",\r\n \"Model\": \"Alloy\",\r\n \"Require\": \"Alloy\",\r\n \"Widget\": \"Alloy\",\r\n \"ButtonNames\": \"Alloy.Abstract\",\r\n \"ButtonName\": \"Alloy.Abstract\",\r\n \"BarItemTypes\": \"Alloy.Abstract\",\r\n \"BarItemType\": \"Alloy.Abstract\",\r\n \"CoverFlowImageTypes\": \"Alloy.Abstract\",\r\n \"CoverFlowImageType\": \"Alloy.Abstract\",\r\n \"FlexSpace\": \"Alloy.Abstract\",\r\n \"Images\": \"Alloy.Abstract\",\r\n \"Item\": \"Alloy.Abstract\",\r\n \"Items\": \"Alloy.Abstract\",\r\n \"Labels\": \"Alloy.Abstract\",\r\n \"Option\": \"Alloy.Abstract\",\r\n \"Options\": \"Alloy.Abstract\",\r\n \"Menu\": \"Ti.Android\",\r\n \"MenuItem\": \"Ti.Android\",\r\n \"Annotation\": \"Ti.Map\",\r\n \"VideoPlayer\": \"Ti.Media\",\r\n \"MusicPlayer\": \"Ti.Media\",\r\n \"AdView\": \"Ti.UI.iOS\",\r\n \"CoverFlowView\": \"Ti.UI.iOS\",\r\n \"TabbedBar\": \"Ti.UI.iOS\",\r\n \"Toolbar\": \"Ti.UI.iOS\",\r\n \"DocumentViewer\": \"Ti.UI.iPad\",\r\n \"Popover\": \"Ti.UI.iPad\",\r\n \"SplitWindow\": \"Ti.UI.iPad\",\r\n \"NavigationGroup\": \"Ti.UI.iPhone\",\r\n \"StatusBar\": \"Ti.UI.iPhone\"\r\n}\r\n\r\n{code}",
"attachment": [],
"flagged": false,
"summary": "TiStudio code completion for Alloy view files (XML)",
"creator": {
"name": "tlukasavage",
"key": "tlukasavage",
"displayName": "Tony Lukasavage",
"active": true,
"timeZone": "America/Los_Angeles"
},
"subtasks": [],
"reporter": {
"name": "tlukasavage",
"key": "tlukasavage",
"displayName": "Tony Lukasavage",
"active": true,
"timeZone": "America/Los_Angeles"
},
"environment": null,
"comment": {
"comments": [
{
"id": "227503",
"author": {
"name": "cwilliams",
"key": "cwilliams",
"displayName": "Christopher Williams",
"active": true,
"timeZone": "America/New_York"
},
"body": "@tlukasavage I've opened the tickets necessary for Titanium Studio for alloy view content assist. From your side we'll need this ticket (or some other one) to encompass the work to get the listing of implicit namespace mappings. I'm fine with pretty much any sort of simple listing of pairs, whether that's in some static JSON file, or parseable (JSON?) output from an \"alloy mapping\" CLI command or something.",
"updateAuthor": {
"name": "cwilliams",
"key": "cwilliams",
"displayName": "Christopher Williams",
"active": true,
"timeZone": "America/New_York"
},
"created": "2012-11-15T17:49:14.000+0000",
"updated": "2012-11-15T17:49:14.000+0000"
},
{
"id": "230232",
"author": {
"name": "tlukasavage",
"key": "tlukasavage",
"displayName": "Tony Lukasavage",
"active": true,
"timeZone": "America/Los_Angeles"
},
"body": "@chris The following command will give you a list of implicit namespaces as a JSON object in the latest alloy in master:\r\n\r\n{code}\r\nalloy info namespaces\r\n{code}\r\n\r\nThat will allow you to do better attribute completion based on the element name. I think that's everything you needed from the Alloy side for XML code completion. Please let me know if there's additional things you need, or if you need testing on my end. If you have everything you need from Alloy, let me know and I will close this ticket.",
"updateAuthor": {
"name": "tlukasavage",
"key": "tlukasavage",
"displayName": "Tony Lukasavage",
"active": true,
"timeZone": "America/Los_Angeles"
},
"created": "2012-12-06T17:40:11.000+0000",
"updated": "2012-12-06T17:41:26.000+0000"
},
{
"id": "230967",
"author": {
"name": "tlukasavage",
"key": "tlukasavage",
"displayName": "Tony Lukasavage",
"active": true,
"timeZone": "America/Los_Angeles"
},
"body": "initial work for tistudio XML code completion has been completed from the Alloy side. Any further work necessary from Alloy to facilitate it will be documented in future tickets.",
"updateAuthor": {
"name": "tlukasavage",
"key": "tlukasavage",
"displayName": "Tony Lukasavage",
"active": true,
"timeZone": "America/Los_Angeles"
},
"created": "2012-12-12T00:06:01.000+0000",
"updated": "2012-12-12T00:06:01.000+0000"
}
],
"maxResults": 3,
"total": 3,
"startAt": 0
}
}
}