{"action":"created","comment":{"url":"https://api.github.com/repos/fluid-project/infusion-docs/pulls/comments/36984039","id":36984039,"diff_hunk":"@@ -0,0 +1,327 @@\n+---\n+title: ContextAwareness API\n+layout: default\n+category: API\n+---\n+\n+The ContextAwareness API of Infusion provides a powerful suite of grades and utilities that allow a component to be responsive to aspects of its contexts in a flexible and open-ended way.\n+For lightweight cases of context adaptation, the [`distributeOptions`](IoCSS.md) scheme suffices, in that it enables a component to be responsive to broadcasts \"advising\" it from around the\n+component tree in a free-form and controllable away. However, when a component needs to take a clearer role in responding to potentially many kinds of requests for adaptation, where these\n+can be organised around two or more \"axes\" or \"dimensions\" of adaptation that can be clearly named and identified, it should opt into this more heavywight scheme by implementing the \n+`fluid.contextAware` grade and perhaps also advertising some of its dimensions of adaptations in its own options. These dimensions themselves can always be extended by further contributions\n+to the component's options through all the usual sources - direct options, subcomponent options, and options distributions from elsewhere in the tree.\n+\n+A `contextAware` component can be responsive to contexts, whose influence is organised as a set of mutually orthogonal \"adaptations\", where the set of adaptations itself is open to extension by \n+integrators and adopters. The primary grade enabling a component to opt into this scheme is named `fluid.contextAware`. Any component derived from this grade will advertise an\n+area of its options named `contextAwareness` which organises the rules for its adaptation in a hierarchical way - at the top level by \"adaptation\" and then at the nested level by\n+\"checks\".\n+\n+## Structure of members in a `adaptationRecord`\n+\n+The top level structure of the `contextAwareness` record consists of a free hash of `adaptationName` strings to `adaptationRecord` structures. The `adaptationName` strings will be considered as\n+namespaces for the purposes of priority resolution (see the <code>priority</code> entry in the following table). The elements of the `adaptationRecord` are\n+described in the following table:\n+\n+<table>\n+    <thead>\n+        <tr>\n+            <th colspan=\"3\">Members of a <code>adaptationRecord</code> entry within the <code>contextAwareness</code> block of a <code>fluid.contextAware</code> component</th>\n+        </tr>\n+        <tr>\n+            <th>Member</th>\n+            <th>Type</th>\n+            <th>Description</th>\n+        </tr>\n+    </thead>\n+    <tbody>\n+        <tr>\n+            <td><code>checks</code> (optional)</td>\n+            <td>Hash of <code>checkNamespace</code> to <code>checkRecord</code></td>\n+            <td>A free hash of namespace names for checks, to entries describing how a context check is to be made, and what <code>gradeNames</code> should result if the check is successful.</td>\n+        </tr>\n+        <tr>\n+            <td><code>defaultGradeNames</code> (optional)</td>\n+            <td><code>String</code> or <code>Array of String</code></td>\n+            <td>One or more <code>gradeNames</code> to be the result if none of the <code>checks</code> entries matches</td>\n+        </tr>\n+        <tr>\n+            <td><code>priority</code></td>\n+            <td><code>Priority</code> value - see [Priorities](Priorities.md) for a full explanation</td>\n+            <td>The priority (if any) that the <code>gradeNames</code> resulting from this dimension should have over those resulting from any other dimension. This should be an entry of the form\n+            <code>before:adaptationName</code> or <code>after:adaptationName</code> for one of the other dimensions attached to this component within <code>contextAwareness</code></td>\n+        </tr>\n+    </tbody>\n+</table>\n+\n+The result of the `contextAwareness` record is that a number of the elements within `checks` will be evaluated in the visible context, and result in a number of `gradeNames` which will then be\n+contributed into the `gradeNames` of the instantiating component in a particular order. This order is governed by both the `priority` entry at the adaptation level as well as at the check level.\n+\n+##Structure of members in a `checkRecord`\n+\n+The `checkRecord` structure which is used in the first row of this table is described now:","path":"src/documents/ContextAwareness.md","position":61,"original_position":61,"commit_id":"2647ee2743ef7fa8827a6da88855e58000a7014f","original_commit_id":"2647ee2743ef7fa8827a6da88855e58000a7014f","user":{"login":"acheetham","id":562946,"avatar_url":"https://avatars.githubusercontent.com/u/562946?v=3","gravatar_id":"","url":"https://api.github.com/users/acheetham","html_url":"https://github.com/acheetham","followers_url":"https://api.github.com/users/acheetham/followers","following_url":"https://api.github.com/users/acheetham/following{/other_user}","gists_url":"https://api.github.com/users/acheetham/gists{/gist_id}","starred_url":"https://api.github.com/users/acheetham/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/acheetham/subscriptions","organizations_url":"https://api.github.com/users/acheetham/orgs","repos_url":"https://api.github.com/users/acheetham/repos","events_url":"https://api.github.com/users/acheetham/events{/privacy}","received_events_url":"https://api.github.com/users/acheetham/received_events","type":"User","site_admin":false},"body":"This should refer to \"the table above\" and not \"this table\".","created_at":"2015-08-13T14:58:32Z","updated_at":"2015-08-13T14:58:32Z","html_url":"https://github.com/fluid-project/infusion-docs/pull/63#discussion_r36984039","pull_request_url":"https://api.github.com/repos/fluid-project/infusion-docs/pulls/63","_links":{"self":{"href":"https://api.github.com/repos/fluid-project/infusion-docs/pulls/comments/36984039"},"html":{"href":"https://github.com/fluid-project/infusion-docs/pull/63#discussion_r36984039"},"pull_request":{"href":"https://api.github.com/repos/fluid-project/infusion-docs/pulls/63"}}},"pull_request":{"url":"https://api.github.com/repos/fluid-project/infusion-docs/pulls/63","id":33888276,"html_url":"https://github.com/fluid-project/infusion-docs/pull/63","diff_url":"https://github.com/fluid-project/infusion-docs/pull/63.diff","patch_url":"https://github.com/fluid-project/infusion-docs/pull/63.patch","issue_url":"https://api.github.com/repos/fluid-project/infusion-docs/issues/63","number":63,"state":"open","locked":false,"title":"FLUID-5249: New documentation covering framework reorganisation under FLUID-5249","user":{"login":"amb26","id":561418,"avatar_url":"https://avatars.githubusercontent.com/u/561418?v=3","gravatar_id":"","url":"https://api.github.com/users/amb26","html_url":"https://github.com/amb26","followers_url":"https://api.github.com/users/amb26/followers","following_url":"https://api.github.com/users/amb26/following{/other_user}","gists_url":"https://api.github.com/users/amb26/gists{/gist_id}","starred_url":"https://api.github.com/users/amb26/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/amb26/subscriptions","organizations_url":"https://api.github.com/users/amb26/orgs","repos_url":"https://api.github.com/users/amb26/repos","events_url":"https://api.github.com/users/amb26/events{/privacy}","received_events_url":"https://api.github.com/users/amb26/received_events","type":"User","site_admin":false},"body":"and other JIRAs. Documentation for new features for ContextAwareness (FLUID-5264) and Priority (FLUID-5506) features","created_at":"2015-04-22T18:44:35Z","updated_at":"2015-08-13T14:58:33Z","closed_at":null,"merged_at":null,"merge_commit_sha":"a817dd883a5ad60bd1c84ccdc16902ab2e1054f3","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/fluid-project/infusion-docs/pulls/63/commits","review_comments_url":"https://api.github.com/repos/fluid-project/infusion-docs/pulls/63/comments","review_comment_url":"https://api.github.com/repos/fluid-project/infusion-docs/pulls/comments{/number}","comments_url":"https://api.github.com/repos/fluid-project/infusion-docs/issues/63/comments","statuses_url":"https://api.github.com/repos/fluid-project/infusion-docs/statuses/2647ee2743ef7fa8827a6da88855e58000a7014f","head":{"label":"amb26:FLUID-5249","ref":"FLUID-5249","sha":"2647ee2743ef7fa8827a6da88855e58000a7014f","user":{"login":"amb26","id":561418,"avatar_url":"https://avatars.githubusercontent.com/u/561418?v=3","gravatar_id":"","url":"https://api.github.com/users/amb26","html_url":"https://github.com/amb26","followers_url":"https://api.github.com/users/amb26/followers","following_url":"https://api.github.com/users/amb26/following{/other_user}","gists_url":"https://api.github.com/users/amb26/gists{/gist_id}","starred_url":"https://api.github.com/users/amb26/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/amb26/subscriptions","organizations_url":"https://api.github.com/users/amb26/orgs","repos_url":"https://api.github.com/users/amb26/repos","events_url":"https://api.github.com/users/amb26/events{/privacy}","received_events_url":"https://api.github.com/users/amb26/received_events","type":"User","site_admin":false},"repo":{"id":22699996,"name":"infusion-docs","full_name":"amb26/infusion-docs","owner":{"login":"amb26","id":561418,"avatar_url":"https://avatars.githubusercontent.com/u/561418?v=3","gravatar_id":"","url":"https://api.github.com/users/amb26","html_url":"https://github.com/amb26","followers_url":"https://api.github.com/users/amb26/followers","following_url":"https://api.github.com/users/amb26/following{/other_user}","gists_url":"https://api.github.com/users/amb26/gists{/gist_id}","starred_url":"https://api.github.com/users/amb26/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/amb26/subscriptions","organizations_url":"https://api.github.com/users/amb26/orgs","repos_url":"https://api.github.com/users/amb26/repos","events_url":"https://api.github.com/users/amb26/events{/privacy}","received_events_url":"https://api.github.com/users/amb26/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/amb26/infusion-docs","description":"Documentation space for Infusion","fork":true,"url":"https://api.github.com/repos/amb26/infusion-docs","forks_url":"https://api.github.com/repos/amb26/infusion-docs/forks","keys_url":"https://api.github.com/repos/amb26/infusion-docs/keys{/key_id}","collaborators_url":"https://api.github.com/repos/amb26/infusion-docs/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/amb26/infusion-docs/teams","hooks_url":"https://api.github.com/repos/amb26/infusion-docs/hooks","issue_events_url":"https://api.github.com/repos/amb26/infusion-docs/issues/events{/number}","events_url":"https://api.github.com/repos/amb26/infusion-docs/events","assignees_url":"https://api.github.com/repos/amb26/infusion-docs/assignees{/user}","branches_url":"https://api.github.com/repos/amb26/infusion-docs/branches{/branch}","tags_url":"https://api.github.com/repos/amb26/infusion-docs/tags","blobs_url":"https://api.github.com/repos/amb26/infusion-docs/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/amb26/infusion-docs/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/amb26/infusion-docs/git/refs{/sha}","trees_url":"https://api.github.com/repos/amb26/infusion-docs/git/trees{/sha}","statuses_url":"https://api.github.com/repos/amb26/infusion-docs/statuses/{sha}","languages_url":"https://api.github.com/repos/amb26/infusion-docs/languages","stargazers_url":"https://api.github.com/repos/amb26/infusion-docs/stargazers","contributors_url":"https://api.github.com/repos/amb26/infusion-docs/contributors","subscribers_url":"https://api.github.com/repos/amb26/infusion-docs/subscribers","subscription_url":"https://api.github.com/repos/amb26/infusion-docs/subscription","commits_url":"https://api.github.com/repos/amb26/infusion-docs/commits{/sha}","git_commits_url":"https://api.github.com/repos/amb26/infusion-docs/git/commits{/sha}","comments_url":"https://api.github.com/repos/amb26/infusion-docs/comments{/number}","issue_comment_url":"https://api.github.com/repos/amb26/infusion-docs/issues/comments{/number}","contents_url":"https://api.github.com/repos/amb26/infusion-docs/contents/{+path}","compare_url":"https://api.github.com/repos/amb26/infusion-docs/compare/{base}...{head}","merges_url":"https://api.github.com/repos/amb26/infusion-docs/merges","archive_url":"https://api.github.com/repos/amb26/infusion-docs/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/amb26/infusion-docs/downloads","issues_url":"https://api.github.com/repos/amb26/infusion-docs/issues{/number}","pulls_url":"https://api.github.com/repos/amb26/infusion-docs/pulls{/number}","milestones_url":"https://api.github.com/repos/amb26/infusion-docs/milestones{/number}","notifications_url":"https://api.github.com/repos/amb26/infusion-docs/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/amb26/infusion-docs/labels{/name}","releases_url":"https://api.github.com/repos/amb26/infusion-docs/releases{/id}","created_at":"2014-08-06T22:13:06Z","updated_at":"2014-06-29T09:31:28Z","pushed_at":"2015-06-25T22:14:10Z","git_url":"git://github.com/amb26/infusion-docs.git","ssh_url":"git@github.com:amb26/infusion-docs.git","clone_url":"https://github.com/amb26/infusion-docs.git","svn_url":"https://github.com/amb26/infusion-docs","homepage":null,"size":3595,"stargazers_count":0,"watchers_count":0,"language":null,"has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"fluid-project:master","ref":"master","sha":"369e47d2785bcf52ec2803d3345edf586b70493c","user":{"login":"fluid-project","id":560119,"avatar_url":"https://avatars.githubusercontent.com/u/560119?v=3","gravatar_id":"","url":"https://api.github.com/users/fluid-project","html_url":"https://github.com/fluid-project","followers_url":"https://api.github.com/users/fluid-project/followers","following_url":"https://api.github.com/users/fluid-project/following{/other_user}","gists_url":"https://api.github.com/users/fluid-project/gists{/gist_id}","starred_url":"https://api.github.com/users/fluid-project/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fluid-project/subscriptions","organizations_url":"https://api.github.com/users/fluid-project/orgs","repos_url":"https://api.github.com/users/fluid-project/repos","events_url":"https://api.github.com/users/fluid-project/events{/privacy}","received_events_url":"https://api.github.com/users/fluid-project/received_events","type":"Organization","site_admin":false},"repo":{"id":18303292,"name":"infusion-docs","full_name":"fluid-project/infusion-docs","owner":{"login":"fluid-project","id":560119,"avatar_url":"https://avatars.githubusercontent.com/u/560119?v=3","gravatar_id":"","url":"https://api.github.com/users/fluid-project","html_url":"https://github.com/fluid-project","followers_url":"https://api.github.com/users/fluid-project/followers","following_url":"https://api.github.com/users/fluid-project/following{/other_user}","gists_url":"https://api.github.com/users/fluid-project/gists{/gist_id}","starred_url":"https://api.github.com/users/fluid-project/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fluid-project/subscriptions","organizations_url":"https://api.github.com/users/fluid-project/orgs","repos_url":"https://api.github.com/users/fluid-project/repos","events_url":"https://api.github.com/users/fluid-project/events{/privacy}","received_events_url":"https://api.github.com/users/fluid-project/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/fluid-project/infusion-docs","description":"Documentation space for Infusion","fork":false,"url":"https://api.github.com/repos/fluid-project/infusion-docs","forks_url":"https://api.github.com/repos/fluid-project/infusion-docs/forks","keys_url":"https://api.github.com/repos/fluid-project/infusion-docs/keys{/key_id}","collaborators_url":"https://api.github.com/repos/fluid-project/infusion-docs/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/fluid-project/infusion-docs/teams","hooks_url":"https://api.github.com/repos/fluid-project/infusion-docs/hooks","issue_events_url":"https://api.github.com/repos/fluid-project/infusion-docs/issues/events{/number}","events_url":"https://api.github.com/repos/fluid-project/infusion-docs/events","assignees_url":"https://api.github.com/repos/fluid-project/infusion-docs/assignees{/user}","branches_url":"https://api.github.com/repos/fluid-project/infusion-docs/branches{/branch}","tags_url":"https://api.github.com/repos/fluid-project/infusion-docs/tags","blobs_url":"https://api.github.com/repos/fluid-project/infusion-docs/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/fluid-project/infusion-docs/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/fluid-project/infusion-docs/git/refs{/sha}","trees_url":"https://api.github.com/repos/fluid-project/infusion-docs/git/trees{/sha}","statuses_url":"https://api.github.com/repos/fluid-project/infusion-docs/statuses/{sha}","languages_url":"https://api.github.com/repos/fluid-project/infusion-docs/languages","stargazers_url":"https://api.github.com/repos/fluid-project/infusion-docs/stargazers","contributors_url":"https://api.github.com/repos/fluid-project/infusion-docs/contributors","subscribers_url":"https://api.github.com/repos/fluid-project/infusion-docs/subscribers","subscription_url":"https://api.github.com/repos/fluid-project/infusion-docs/subscription","commits_url":"https://api.github.com/repos/fluid-project/infusion-docs/commits{/sha}","git_commits_url":"https://api.github.com/repos/fluid-project/infusion-docs/git/commits{/sha}","comments_url":"https://api.github.com/repos/fluid-project/infusion-docs/comments{/number}","issue_comment_url":"https://api.github.com/repos/fluid-project/infusion-docs/issues/comments{/number}","contents_url":"https://api.github.com/repos/fluid-project/infusion-docs/contents/{+path}","compare_url":"https://api.github.com/repos/fluid-project/infusion-docs/compare/{base}...{head}","merges_url":"https://api.github.com/repos/fluid-project/infusion-docs/merges","archive_url":"https://api.github.com/repos/fluid-project/infusion-docs/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/fluid-project/infusion-docs/downloads","issues_url":"https://api.github.com/repos/fluid-project/infusion-docs/issues{/number}","pulls_url":"https://api.github.com/repos/fluid-project/infusion-docs/pulls{/number}","milestones_url":"https://api.github.com/repos/fluid-project/infusion-docs/milestones{/number}","notifications_url":"https://api.github.com/repos/fluid-project/infusion-docs/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/fluid-project/infusion-docs/labels{/name}","releases_url":"https://api.github.com/repos/fluid-project/infusion-docs/releases{/id}","created_at":"2014-03-31T18:22:31Z","updated_at":"2015-04-30T15:50:58Z","pushed_at":"2015-08-12T18:36:19Z","git_url":"git://github.com/fluid-project/infusion-docs.git","ssh_url":"git@github.com:fluid-project/infusion-docs.git","clone_url":"https://github.com/fluid-project/infusion-docs.git","svn_url":"https://github.com/fluid-project/infusion-docs","homepage":null,"size":4791,"stargazers_count":1,"watchers_count":1,"language":"JavaScript","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":15,"mirror_url":null,"open_issues_count":5,"forks":15,"open_issues":5,"watchers":1,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/fluid-project/infusion-docs/pulls/63"},"html":{"href":"https://github.com/fluid-project/infusion-docs/pull/63"},"issue":{"href":"https://api.github.com/repos/fluid-project/infusion-docs/issues/63"},"comments":{"href":"https://api.github.com/repos/fluid-project/infusion-docs/issues/63/comments"},"review_comments":{"href":"https://api.github.com/repos/fluid-project/infusion-docs/pulls/63/comments"},"review_comment":{"href":"https://api.github.com/repos/fluid-project/infusion-docs/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/fluid-project/infusion-docs/pulls/63/commits"},"statuses":{"href":"https://api.github.com/repos/fluid-project/infusion-docs/statuses/2647ee2743ef7fa8827a6da88855e58000a7014f"}}}}