usergrid-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From sfeld...@apache.org
Subject [10/63] [abbrv] [partial] usergrid git commit: Generated website contents.
Date Fri, 09 Oct 2015 21:36:50 GMT
http://git-wip-us.apache.org/repos/asf/usergrid/blob/ada7b36b/website/content/v101-portal-demo/js/generated/usergrid.min.js
----------------------------------------------------------------------
diff --git a/website/content/v101-portal-demo/js/generated/usergrid.min.js b/website/content/v101-portal-demo/js/generated/usergrid.min.js
deleted file mode 100644
index 8d3a4da..0000000
--- a/website/content/v101-portal-demo/js/generated/usergrid.min.js
+++ /dev/null
@@ -1,25 +0,0 @@
- /**
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information 
-  regarding copyright ownership.  The ASF licenses this file 
- to you under the Apache License, Version 2.0 (the 
-  "License"); you may not use this file except in compliance 
-  with the License.  You may obtain a copy of the License at 
-   
-  http://www.apache.org/licenses/LICENSE-2.0 
-   
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-  */
-
- /*! usergrid@2.0.18  */
-!function(exports,global){function menuBindClick(scope,lElement,cevent,menuContext){var currentSelection=angular.element(cevent.srcElement).parent(),previousSelection=scope[menuContext];previousSelection!==currentSelection&&(previousSelection&&angular.element(previousSelection).removeClass("active"),scope[menuContext]=currentSelection,scope.$apply(function(){currentSelection.addClass("active")}))}global["true"]=exports;var polyfills=function(window,Object){window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(callback){window.setTimeout(callback,1e3/60)}}(),Object.defineProperty(Object.prototype,"clone",{enumerable:!1,writable:!0,value:function(){var i,newObj=this instanceof Array?[]:{};for(i in this)"clone"!==i&&(newObj[i]=this[i]&&"object"==typeof this[i]?this[i].clone():this[i]);return newObj}}),Object.defineProperty(Object
 .prototype,"stringifyJSON",{enumerable:!1,writable:!0,value:function(){return JSON.stringify(this,null,"	")}})};polyfills(window,Object);var global=global||this,AppServices=AppServices||{};global.AppServices=global.AppServices||AppServices,AppServices.Constants=angular.module("appservices.constants",[]),AppServices.Services=angular.module("appservices.services",[]),AppServices.Controllers=angular.module("appservices.controllers",[]),AppServices.Filters=angular.module("appservices.filters",[]),AppServices.Directives=angular.module("appservices.directives",[]),angular.module("appservices",["ngRoute","ngResource","ngSanitize","ui.bootstrap","appservices.filters","appservices.services","appservices.directives","appservices.constants","appservices.controllers","angular-intro"]).config(["$routeProvider","$locationProvider","$sceDelegateProvider","$httpProvider",function($routeProvider,$locationProvider,$sceDelegateProvider,$httpProvider){$routeProvider.when("/org-overview",{templateUrl:"o
 rg-overview/org-overview.html",controller:"OrgOverviewCtrl"}).when("/login",{templateUrl:"login/login.html",controller:"LoginCtrl"}).when("/login/loading",{templateUrl:"login/loading.html",controller:"LoginCtrl"}).when("/app-overview/summary",{templateUrl:"app-overview/app-overview.html",controller:"AppOverviewCtrl"}).when("/forgot-password",{templateUrl:"login/forgot-password.html",controller:"ForgotPasswordCtrl"}).when("/register",{templateUrl:"login/register.html",controller:"RegisterCtrl"}).when("/users",{templateUrl:"users/users.html",controller:"UsersCtrl"}).when("/users/profile",{templateUrl:"users/users-profile.html",controller:"UsersProfileCtrl"}).when("/users/groups",{templateUrl:"users/users-groups.html",controller:"UsersGroupsCtrl"}).when("/users/activities",{templateUrl:"users/users-activities.html",controller:"UsersActivitiesCtrl"}).when("/users/feed",{templateUrl:"users/users-feed.html",controller:"UsersFeedCtrl"}).when("/users/graph",{templateUrl:"users/users-graph.h
 tml",controller:"UsersGraphCtrl"}).when("/users/roles",{templateUrl:"users/users-roles.html",controller:"UsersRolesCtrl"}).when("/groups",{templateUrl:"groups/groups.html",controller:"GroupsCtrl"}).when("/groups/details",{templateUrl:"groups/groups-details.html",controller:"GroupsDetailsCtrl"}).when("/groups/members",{templateUrl:"groups/groups-members.html",controller:"GroupsMembersCtrl"}).when("/groups/activities",{templateUrl:"groups/groups-activities.html",controller:"GroupsActivitiesCtrl"}).when("/groups/roles",{templateUrl:"groups/groups-roles.html",controller:"GroupsRolesCtrl"}).when("/roles",{templateUrl:"roles/roles.html",controller:"RolesCtrl"}).when("/roles/settings",{templateUrl:"roles/roles-settings.html",controller:"RolesSettingsCtrl"}).when("/roles/users",{templateUrl:"roles/roles-users.html",controller:"RolesUsersCtrl"}).when("/roles/groups",{templateUrl:"roles/roles-groups.html",controller:"RolesGroupsCtrl"}).when("/data",{templateUrl:"data/data.html",controller:"Da
 taCtrl"}).when("/data/entity",{templateUrl:"data/entity.html",controller:"EntityCtrl"}).when("/data/shell",{templateUrl:"data/shell.html",controller:"ShellCtrl"}).when("/organizations",{templateUrl:"profile/organizations.html",controller:"OrgCtrl"}).when("/profile",{templateUrl:"profile/profile.html",controller:"ProfileCtrl"}).when("/activities",{templateUrl:"activities/activities.html",controller:"ActivitiesCtrl"}).when("/shell",{templateUrl:"shell/shell.html",controller:"ShellCtrl"}).when("/logout",{templateUrl:"login/logout.html",controller:"LogoutCtrl"}).when("/push/sendNotification",{templateUrl:"push/push-send-notification.html",controller:"PushSendNotificationCtrl"}).when("/push/getStarted",{templateUrl:"push/push-get-started.html",controller:"PushGetStartedCtrl"}).when("/push/history",{templateUrl:"push/push-history.html",controller:"PushHistoryCtrl"}).when("/push/history/receipts",{templateUrl:"push/push-receipts.html",controller:"PushReceiptsCtrl"}).when("/push/configurati
 on",{templateUrl:"push/push-config.html",controller:"PushConfigCtrl"}).otherwise({redirectTo:"/org-overview"}),$locationProvider.html5Mode(!1).hashPrefix("!"),$sceDelegateProvider.resourceUrlWhitelist(["self","https://api.usergrid.com/**"]),$httpProvider.defaults.useXDomain=!0}]),AppServices.Controllers.controller("ActivitiesCtrl",["ug","$scope","$rootScope","$location","$route",function(ug,$scope,$rootScope){$scope.$on("app-activities-received",function(evt,data){$scope.activities=data,$scope.$apply()}),$scope.$on("app-activities-error",function(){$rootScope.$broadcast("alert","error","Application failed to retreive activities data.")}),ug.getActivities()}]),AppServices.Controllers.controller("AppOverviewCtrl",["ug","$scope","$rootScope","$log",function(ug,$scope){$scope.appOverview={},$scope.collections=[],$scope.graph="",$scope.$on("top-collections-received",function(event,collections){$scope.collections=collections,$scope.applyScope()}),ug.getTopCollections()}]),AppServices.Cont
 rollers.controller("DataCtrl",["ug","$scope","$rootScope","$location",function(ug,$scope,$rootScope){var init=function(){$scope.verb="GET",$scope.display="",$scope.queryBodyDetail={},$scope.queryBodyDisplay="none",$scope.queryLimitDisplay="block",$scope.queryStringDisplay="block",$scope.entitySelected={},$scope.newCollection={name:"",entity:'{"name":"test"}'},$rootScope.queryCollection={},$scope.data={},$scope.data.queryPath="",$scope.data.queryBody='{ "name":"value" }',$scope.data.searchString="",$scope.data.queryLimit=""},runQuery=function(verb){$scope.loading=!0;var queryPath=$scope.removeFirstSlash($scope.data.queryPath||""),searchString=$scope.data.searchString||"",queryLimit=$scope.data.queryLimit||"",body=JSON.parse($scope.data.queryBody||"{}");"POST"==verb&&$scope.validateJson(!0)?ug.runDataPOSTQuery(queryPath,body):"PUT"==verb&&$scope.validateJson(!0)?ug.runDataPutQuery(queryPath,searchString,queryLimit,body):"DELETE"==verb?ug.runDataDeleteQuery(queryPath,searchString,query
 Limit):ug.runDataQuery(queryPath,searchString,queryLimit)};$scope.$on("top-collections-received",function(event,collectionList){$scope.loading=!1;var ignoredCollections=["events"];ignoredCollections.forEach(function(ignoredCollection){collectionList.hasOwnProperty(ignoredCollection)&&delete collectionList[ignoredCollection]}),$scope.collectionList=collectionList,$scope.queryBoxesSelected=!1,$scope.queryPath||$scope.loadCollection("/"+$scope.collectionList[Object.keys($scope.collectionList).sort()[0]].name),$scope.applyScope()}),$scope.$on("error-running-query",function(){$scope.loading=!1,runQuery("GET"),$scope.applyScope()}),$scope.$on("entity-deleted",function(){$scope.deleteLoading=!1,$rootScope.$broadcast("alert","success","Entities deleted sucessfully"),$scope.queryBoxesSelected=!1,$scope.checkNextPrev(),$scope.applyScope()}),$scope.$on("entity-deleted-error",function(){$scope.deleteLoading=!1,runQuery("GET"),$scope.applyScope()}),$scope.$on("collection-created",function(){$sco
 pe.newCollection.name="",$scope.newCollection.entity='{ "name":"value" }'}),$scope.$on("query-received",function(event,collection){$scope.loading=!1,$rootScope.queryCollection=collection,ug.getIndexes($scope.data.queryPath),$scope.setDisplayType(),$scope.checkNextPrev(),$scope.applyScope(),$scope.queryBoxesSelected=!1}),$scope.$on("query-error",function(){$scope.loading=!1,$scope.applyScope(),$scope.queryBoxesSelected=!1}),$scope.$on("indexes-received",function(event,indexes){}),$scope.$on("app-changed",function(){init()}),$scope.setDisplayType=function(){$scope.display="generic"},$scope.deleteEntitiesDialog=function(modalId){$scope.deleteLoading=!1,$scope.deleteEntities($rootScope.queryCollection,"entity-deleted","error deleting entity"),$scope.hideModal(modalId)},$scope.newCollectionDialog=function(modalId){$scope.newCollection.name?(ug.createCollection($scope.newCollection.name),ug.getTopCollections(),$rootScope.$broadcast("alert","success","Collection created successfully."),$sc
 ope.hideModal(modalId)):$rootScope.$broadcast("alert","error","You must specify a collection name.")},$scope.newCollectionWithEntityDialog=function(modalId){$scope.newCollection.name&&$scope.newCollection.name.length>0?$scope.newCollection.entity&&$scope.newCollection.entity.length>0?$scope.validateEntityData(!0)&&(ug.createCollectionWithEntity($scope.newCollection.name,$scope.newCollection.entity),ug.getTopCollections(),$scope.hideModal(modalId)):$rootScope.$broadcast("alert","error","You must specify JSON data for the new entity."):$rootScope.$broadcast("alert","error","You must specify a collection name.")},$scope.addToPath=function(uuid){$scope.data.queryPath="/"+$rootScope.queryCollection._type+"/"+uuid},$scope.removeFromPath=function(){$scope.data.queryPath="/"+$rootScope.queryCollection._type},$scope.isDeep=function(item){return"[object Object]"===Object.prototype.toString.call(item)},$scope.loadCollection=function(type){$scope.data.queryPath="/"+type.substring(1,type.length)
 ,$scope.data.searchString="",$scope.data.queryLimit="",$scope.data.body='{ "name":"value" }',$scope.selectGET(),$scope.applyScope(),$scope.run()},$scope.selectGET=function(){$scope.queryBodyDisplay="none",$scope.queryLimitDisplay="block",$scope.queryStringDisplay="block",$scope.verb="GET"},$scope.selectPOST=function(){$scope.queryBodyDisplay="block",$scope.queryLimitDisplay="none",$scope.queryStringDisplay="none",$scope.verb="POST"},$scope.selectPUT=function(){$scope.queryBodyDisplay="block",$scope.queryLimitDisplay="block",$scope.queryStringDisplay="block",$scope.verb="PUT"},$scope.selectDELETE=function(){$scope.queryBodyDisplay="none",$scope.queryLimitDisplay="block",$scope.queryStringDisplay="block",$scope.verb="DELETE"},$scope.validateEntityData=function(skipMessage){var queryBody=$scope.newCollection.entity;try{queryBody=JSON.parse(queryBody)}catch(e){return $rootScope.$broadcast("alert","error","JSON is not valid"),!1}return queryBody=JSON.stringify(queryBody,null,2),!skipMess
 age&&$rootScope.$broadcast("alert","success","JSON is valid"),$scope.newCollection.entity=queryBody,!0},$scope.validateJson=function(skipMessage){var queryBody=$scope.data.queryBody;try{queryBody=JSON.parse(queryBody)}catch(e){return $rootScope.$broadcast("alert","error","JSON is not valid"),!1}return queryBody=JSON.stringify(queryBody,null,2),!skipMessage&&$rootScope.$broadcast("alert","success","JSON is valid"),$scope.data.queryBody=queryBody,!0},$scope.isValidJSON=function(data){try{data=JSON.parse(data)}catch(e){return!1}return!0},$scope.formatJSON=function(data){try{data=JSON.parse(data)}catch(e){return data}return JSON.stringify(data,null,2)},$scope.saveEntity=function(entity){if(!$scope.validateJson())return!1;var queryBody=entity._json;queryBody=JSON.parse(queryBody),$rootScope.selectedEntity.set(),$rootScope.selectedEntity.set(queryBody),$rootScope.selectedEntity.set("type",entity._data.type),$rootScope.selectedEntity.set("uuid",entity._data.uuid),$rootScope.selectedEntity.
 save(function(err,data){err?$rootScope.$broadcast("alert","error","error: "+data.error_description):$rootScope.$broadcast("alert","success","entity saved")})},$scope.run=function(){$rootScope.queryCollection="";var verb=$scope.verb;runQuery(verb)},$scope.hasProperty=function(prop){var retval=!1;return"undefined"!=typeof $rootScope.queryCollection._list&&angular.forEach($rootScope.queryCollection._list,function(value){retval||value._data[prop]&&(retval=!0)}),retval},$scope.resetNextPrev=function(){$scope.previous_display="none",$scope.next_display="none"},$scope.checkNextPrev=function(){$scope.resetNextPrev(),$rootScope.queryCollection.hasPreviousPage()&&($scope.previous_display="default"),$rootScope.queryCollection.hasNextPage()&&($scope.next_display="default")},$scope.selectEntity=function(uuid,addToPath){$rootScope.selectedEntity=$rootScope.queryCollection.getEntityByUUID(uuid),addToPath?$scope.addToPath(uuid):$scope.removeFromPath()},$scope.getJSONView=function(entity){var tempjs
 on=entity.get(),queryBody=JSON.stringify(tempjson,null,2);queryBody=JSON.parse(queryBody),delete queryBody.metadata,delete queryBody.uuid,delete queryBody.created,delete queryBody.modified,delete queryBody.type,$scope.queryBody=JSON.stringify(queryBody,null,2)},$scope.getPrevious=function(){$rootScope.queryCollection.getPreviousPage(function(err){err&&$rootScope.$broadcast("alert","error","error getting previous page of data"),$scope.checkNextPrev(),$scope.applyScope()})},$scope.getNext=function(){$rootScope.queryCollection.getNextPage(function(err){err&&$rootScope.$broadcast("alert","error","error getting next page of data"),$scope.checkNextPrev(),$scope.applyScope()})},init(),$rootScope.queryCollection=$rootScope.queryCollection||{},$rootScope.selectedEntity={},$rootScope.queryCollection&&$rootScope.queryCollection._type&&($scope.loadCollection($rootScope.queryCollection._type),$scope.setDisplayType()),ug.getTopCollections(),$scope.resetNextPrev()}]),AppServices.Controllers.contro
 ller("EntityCtrl",["ug","$scope","$rootScope","$location",function(ug,$scope,$rootScope,$location){if(!$rootScope.selectedEntity)return void $location.path("/data");$scope.entityUUID=$rootScope.selectedEntity.get("uuid"),$scope.entityType=$rootScope.selectedEntity.get("type");var tempjson=$rootScope.selectedEntity.get(),queryBody=JSON.stringify(tempjson,null,2);queryBody=JSON.parse(queryBody),delete queryBody.metadata,delete queryBody.uuid,delete queryBody.created,delete queryBody.modified,delete queryBody.type,$scope.queryBody=JSON.stringify(queryBody,null,2),$scope.validateJson=function(){var queryBody=$scope.queryBody;try{queryBody=JSON.parse(queryBody)}catch(e){return $rootScope.$broadcast("alert","error","JSON is not valid"),!1}return queryBody=JSON.stringify(queryBody,null,2),$rootScope.$broadcast("alert","success","JSON is valid"),$scope.queryBody=queryBody,!0},$scope.saveEntity=function(){if(!$scope.validateJson())return!1;var queryBody=$scope.queryBody;queryBody=JSON.parse(
 queryBody),$rootScope.selectedEntity.set(),$rootScope.selectedEntity.set(queryBody),$rootScope.selectedEntity.set("type",$scope.entityType),$rootScope.selectedEntity.set("uuid",$scope.entityUUID),$rootScope.selectedEntity.save(function(err,data){err?$rootScope.$broadcast("alert","error","error: "+data.error_description):$rootScope.$broadcast("alert","success","entity saved")})}}]),AppServices.Directives.directive("balloon",["$window","$timeout",function($window,$timeout){return{restrict:"ECA",scope:"=",template:'<div class="baloon {{direction}}" ng-transclude></div>',replace:!0,transclude:!0,link:function(scope,lElement,attrs){scope.direction=attrs.direction;var runScroll=!0,windowEl=angular.element($window);windowEl.on("scroll",function(){runScroll&&(lElement.addClass("fade-out"),$timeout(function(){lElement.addClass("hide")},1e3),runScroll=!1)})}}}]),AppServices.Directives.directive("bsmodal",["$rootScope",function($rootScope){return{restrict:"ECA",scope:{title:"@title",buttonid:"
 =buttonid",footertext:"=footertext",closelabel:"=closelabel"},transclude:!0,templateUrl:"dialogs/modal.html",replace:!0,link:function(scope,lElement,attrs,parentCtrl){scope.title=attrs.title,scope.footertext=attrs.footertext,scope.closelabel=attrs.closelabel,scope.close=attrs.close,scope.extrabutton=attrs.extrabutton,scope.extrabuttonlabel=attrs.extrabuttonlabel,scope.buttonId=attrs.buttonid,scope.closeDelegate=function(attr){scope.$parent[attr](attrs.id,scope)},scope.extraDelegate=function(attr){scope.dialogForm.$valid?(console.log(parentCtrl),scope.$parent[attr](attrs.id)):$rootScope.$broadcast("alert","error","Please check your form input and resubmit.")}}}}]),angular.module("appservices").run(["$templateCache",function($templateCache){"use strict";$templateCache.put("activities/activities.html",'<section class="row-fluid">\n<!--\n  Licensed to the Apache Software Foundation (ASF) under one or more\n  contributor license agreements.  See the NOTICE file distributed with\n  this w
 ork for additional information regarding copyright ownership.\n  The ASF licenses this file to You under the Apache License, Version 2.0\n  (the "License"); you may not use this file except in compliance with\n  the License.  You may obtain a copy of the License at\n  \n  http://www.apache.org/licenses/LICENSE-2.0\n  \n  Unless required by applicable law or agreed to in writing, software\n  distributed under the License is distributed on an "AS IS" BASIS,\n  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n  See the License for the specific language governing permissions and\n  limitations under the License.\n-->\n  <div class="span12">\n    <div class="page-filters">\n      <h1 class="title" class="pull-left">\n        <i class="pictogram title">&#128241;</i> Activities\n      </h1>\n    </div>\n  </div>\n\n</section>\n<section class="row-fluid">\n  <div class="span12 tab-content">\n    <table class="table table-striped">\n      <tbody>\n        <tr class="
 table-header">\n          <td>Date</td>\n          <td></td>\n          <td>User</td>\n          <td>Content</td>\n          <td>Verb</td>\n          <td>UUID</td>\n        </tr>\n        <tr class="zebraRows" ng-repeat="activity in activities">\n          <td>{{formatDate(activity.created)}}</td>\n          <td class="gravatar20"><img\n            ng-src="{{activity.actor.picture}}" /></td>\n          <td>{{activity.actor.displayName}}</td>\n          <td>{{activity.content}}</td>\n          <td>{{activity.verb}}</td>\n          <td>{{activity.uuid}}</td>\n        </tr>\n      </tbody>\n    </table>\n  </div>\n</section>\n'),$templateCache.put("app-overview/app-overview.html",'<div class="app-overview-content">\n<!--\n  Licensed to the Apache Software Foundation (ASF) under one or more\n  contributor license agreements.  See the NOTICE file distributed with\n  this work for additional information regarding copyright ownership.\n  The ASF licenses this file to You under the Apache L
 icense, Version 2.0\n  (the "License"); you may not use this file except in compliance with\n  the License.  You may obtain a copy of the License at\n  \n  http://www.apache.org/licenses/LICENSE-2.0\n  \n  Unless required by applicable law or agreed to in writing, software\n  distributed under the License is distributed on an "AS IS" BASIS,\n  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n  See the License for the specific language governing permissions and\n  limitations under the License.\n-->\n  <section class="row-fluid">\n\n    <page-title title=" Summary" icon="&#128241;"></page-title>\n    <section class="row-fluid">\n      <h2 class="title" id="app-overview-title">{{currentApp}}</h2>\n    </section>\n    <section class="row-fluid">\n\n      <div class="span6">\n        <table class="table table-striped">\n          <tr class="table-header">\n            <td>Path</td>\n            <td>Title</td>\n          </tr>\n          <tr class="zebraRows" ng-
 repeat="(k,v) in collections">\n            <td>{{v.title}}</td>\n            <td>{{v.count}}</td>\n          </tr>\n        </table>\n      </div>\n\n    </section>\n</div>\n'),$templateCache.put("app-overview/doc-includes/android.html",'<h2>1. Integrate the SDK into your project</h2>\n<!--\n  Licensed to the Apache Software Foundation (ASF) under one or more\n  contributor license agreements.  See the NOTICE file distributed with\n  this work for additional information regarding copyright ownership.\n  The ASF licenses this file to You under the Apache License, Version 2.0\n  (the "License"); you may not use this file except in compliance with\n  the License.  You may obtain a copy of the License at\n  \n  http://www.apache.org/licenses/LICENSE-2.0\n  \n  Unless required by applicable law or agreed to in writing, software\n  distributed under the License is distributed on an "AS IS" BASIS,\n  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n  See the Licen
 se for the specific language governing permissions and\n  limitations under the License.\n-->\n<p>You can integrate Apigee features into your app by including the\n  SDK in your project.&nbsp;&nbsp;You can do one of the following:</p>\n\n<ul class="nav nav-tabs" id="myTab">\n  <li class="active"><a data-toggle="tab" href="#existing_project">Existing\n      project</a></li>\n  <li><a data-toggle="tab" href="#new_project">New project</a></li>\n</ul>\n\n<div class="tab-content">\n  <div class="tab-pane active" id="existing_project">\n    <a class="jumplink" name="add_the_sdk_to_an_existing_project"></a>\n    <p>If you\'ve already got&nbsp;an Android&nbsp;project, you can\n      integrate the&nbsp;Apigee&nbsp;SDK into your project as you\n      normally would:</p>\n    <div id="collapse">\n      <a href="#jar_collapse" class="btn" data-toggle="collapse"><i\n        class="icon-white icon-chevron-down"></i> Details</a>\n    </div>\n    <div id="jar_collapse" class="collapse">\n      <p>\
 n        Add\n        <code>apigee-android-&lt;version&gt;.jar</code>\n        to your class path by doing the following:\n      </p>\n\n      <h3>Android 4.0 (or later) projects</h3>\n      <p>\n        Copy the jar file into the\n        <code>/libs</code>\n        folder in your project.\n      </p>\n\n      <h3>Android 3.0 (or earlier) projects</h3>\n      <ol>\n        <li>In the&nbsp;Eclipse <strong>Package Explorer</strong>,\n          select your application\'s project folder.\n        </li>\n        <li>Click the&nbsp;<strong>File &gt; Properties</strong>&nbsp;menu.\n        </li>\n        <li>In the <strong>Java Build Path</strong> section, click\n          the <strong>Libraries</strong> tab, click <strong>Add\n            External JARs</strong>.\n        </li>\n        <li>Browse to <code>apigee-android-&lt;version&gt;.jar</code>,\n          then click&nbsp;<strong>Open</strong>.\n        </li>\n        <li>Order the <code>apigee-android-&lt;version&gt;.jar</code>\n      
     at the top of the class path:\n          <ol>\n            <li>In the Eclipse <strong>Package Explorer</strong>,\n              select your application\'s project folder.\n            </li>\n            <li>Click the&nbsp;<strong>File &gt;\n                Properties</strong> menu.\n            </li>\n            <li>In the properties dialog, in the&nbsp;<strong>Java\n                Build Path</strong> section,&nbsp;click&nbsp;the <strong>Order\n                and Export</strong>&nbsp;tab.\n            </li>\n            <li>\n              <p>\n                <strong>IMPORTANT:</strong> Select the checkbox for\n                <code>apigee-android-&lt;version&gt;.jar</code>\n                , then click the <strong>Top</strong>&nbsp;button.\n              </p>\n            </li>\n          </ol>\n        </li>\n      </ol>\n      <div class="warning">\n        <h3>Applications using Ant</h3>\n        <p>\n          If you are using Ant to build your application, you must als
 o\n          copy\n          <code>apigee-android-&lt;version&gt;.jar</code>\n          to the\n          <code>/libs</code>\n          folder in your application.\n        </p>\n      </div>\n    </div>\n  </div>\n  <div class="tab-pane" id="new_project">\n    <a class="jumplink" name="create_a_new_project_based_on_the_SDK"></a>\n    <p>If you don\'t have a&nbsp;project yet, you can begin by using\n      the project template included with the SDK. The template includes\n      support for SDK features.</p>\n    <ul>\n      <li>Locate the project template in the expanded SDK. It\n        should be at the following location: <pre>&lt;sdk_root&gt;/new-project-template</pre>\n      </li>\n    </ul>\n  </div>\n</div>\n<h2>2. Update permissions in AndroidManifest.xml</h2>\n<p>\n  Add the following Internet permissions to your application\'s\n  <code>AndroidManifest.xml</code>\n  file if they have not already been added. Note that with the exception\n  of INTERNET, enabling all other permi
 ssions are optional.\n</p>\n<pre>\n&lt;uses-permission android:name="android.permission.INTERNET" /&gt;\n&lt;uses-permission android:name="android.permission.READ_PHONE_STATE" /&gt;\n&lt;uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /&gt;\n&lt;uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /&gt;\n&lt;uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /&gt;\n</pre>\n<h2>3. Initialize the SDK</h2>\n<p>\n  To initialize the App Services SDK, you must instantiate the\n  <code>ApigeeClient</code>\n  class. There are multiple ways to handle this step, but we recommend\n  that you do the following:\n</p>\n<ol>\n  <li>Subclass the <code>Application</code> class, and add an\n    instance variable for the <code>ApigeeClient</code> to it, along\n    with getter and setter methods. <pre>\npublic class YourApplication extends Application\n{\n        \n        private ApigeeClient apigeeClient;\n        \n        public YourAp
 plication()\n        {\n                this.apigeeClient = null;\n        }\n        \n        public ApigeeClient getApigeeClient()\n        {\n                return this.apigeeClient;\n        }\n        \n        public void setApigeeClient(ApigeeClient apigeeClient)\n        {\n                this.apigeeClient = apigeeClient;\n        }\n}			\n		</pre>\n  </li>\n  <li>Declare the <code>Application</code> subclass in your <code>AndroidManifest.xml</code>.\n    For example: <pre>\n&lt;application&gt;\n    android:allowBackup="true"\n    android:icon="@drawable/ic_launcher"\n    android:label="@string/app_name"\n    android:name=".YourApplication"\n	…\n&lt;/application&gt;			\n		</pre>\n  </li>\n  <li>Instantiate the <code>ApigeeClient</code> class in the <code>onCreate</code>\n    method of your first <code>Activity</code> class: <pre>\nimport com.apigee.sdk.ApigeeClient;\n\n@Override\nprotected void onCreate(Bundle savedInstanceState) {\n    super.onCreate(savedInstanceState
 );		\n	\n	String ORGNAME = "{{currentOrg}}";\n	String APPNAME = "{{currentApp}}";\n	\n	ApigeeClient apigeeClient = new ApigeeClient(ORGNAME,APPNAME,this.getBaseContext());\n\n	// hold onto the ApigeeClient instance in our application object.\n	YourApplication yourApp = (YourApplication) getApplication;\n	yourApp.setApigeeClient(apigeeClient);			\n}\n		</pre>\n    <p>\n      This will make the instance of\n      <code>ApigeeClient</code>\n      available to your\n      <code>Application</code>\n      class.\n    </p>\n  </li>\n</ol>\n<h2>4. Import additional SDK classes</h2>\n<p>The following classes will enable you to call common SDK methods:</p>\n<pre>\nimport com.apigee.sdk.data.client.DataClient; //App Services data methods\nimport com.apigee.sdk.apm.android.MonitoringClient; //App Monitoring methods\nimport com.apigee.sdk.data.client.callbacks.ApiResponseCallback; //API response handling\nimport com.apigee.sdk.data.client.response.ApiResponse; //API response object\n</pre>\n\n<h
 2>5. Verify SDK installation</h2>\n\n<p>\n  Once initialized, App Services will also automatically instantiate the\n  <code>MonitoringClient</code>\n  class and begin logging usage, crash and error metrics for your app.\n</p>\n<p>\n  <img src="img/verify.png" alt="screenshot of data in admin portal" />\n</p>\n<p>\n  To verify that the SDK has been properly initialized, run your app,\n  then go to \'Monitoring\' > \'App Usage\' in the <a\n    href="https://www.apigee.com/usergrid">App Services admin portal</a>\n  to verify that data is being sent.\n</p>\n<div class="warning">It may take up to two minutes for data to\n  appear in the admin portal after you run your app.</div>\n\n<h2>Installation complete! Try these next steps</h2>\n<ul>\n  <li>\n    <h3>\n      <strong>Call additional SDK methods in your code</strong>\n    </h3>\n    <p>\n      The\n      <code>DataClient</code>\n      and\n      <code>MonitoringClient</code>\n      classes are also automatically instantiated for you,
  and\n      accessible with the following accessors:\n    </p>\n    <ul>\n      <li><pre>DataClient dataClient = apigeeClient.getDataClient();</pre>\n        <p>Use this object to access the data methods of the App\n          Services SDK, including those for push notifications, data\n          store, and geolocation.</p></li>\n      <li><pre>MonitoringClient monitoringClient = apigeeClient.getMonitoringClient();</pre>\n        <p>Use this object to access the app configuration and\n          monitoring methods of the App Services SDK, including advanced\n          logging, and A/B testing.</p></li>\n    </ul>\n  </li>\n  <li>\n    <h3>\n      <strong>Add App Services features to your app</strong>\n    </h3>\n    <p>With App Services you can quickly add valuable features to\n      your mobile or web app, including push notifications, a custom\n      data store, geolocation and more. Check out these links to get\n      started with a few of our most popular features:</p>\n    <ul>\n 
      <li><strong><a\n          href="http://apigee.com/docs/node/8410">Push notifications</a></strong>:\n        Send offers, alerts and other messages directly to user devices\n        to dramatically increase engagement. With App Services you can\n        send 10 million push notification per month for free!</li>\n      <li><strong>App Monitoring</strong>: When you initialize the\n        App Services SDK, a suite of valuable, <a\n        href="http://apigee.com/docs/node/13190">customizable</a>\n        application monitoring features are automatically enabled that\n        deliver the data you need to fine tune performance, analyze\n        issues, and improve user experience.\n        <ul>\n          <li><strong><a\n              href="http://apigee.com/docs/node/13176">App Usage\n                Monitoring</a></strong>: Visit the <a\n            href="https://apigee.com/usergrid">App Services admin\n              portal</a> to view usage data for your app, including data on\n 
            device models, platforms and OS versions running your app.</li>\n          <li><strong><a\n              href="http://apigee.com/docs/node/12861">API\n                Performance Monitoring</a></strong>: Network performance is key to a\n            solid user experience. In the <a\n            href="https://apigee.com/usergrid">App Services admin\n              portal</a> you can view key metrics, including response time,\n            number of requests and raw API request logs.</li>\n          <li><strong><a\n              href="http://apigee.com/docs/node/13177">Error &amp;\n                Crash Monitoring</a></strong>: Get alerted to any errors or crashes,\n            then view them in the <a href="https://apigee.com/usergrid">App\n              Services admin portal</a>, where you can also analyze raw\n            error and crash logs.</li>\n        </ul></li>\n      <li><strong><a\n          href="http://apigee.com/docs/node/410">Geolocation</a></strong>: Target\n 
        users or return result sets based on user location to keep your\n        app highly-relevant.</li>\n      <li><strong><a\n          href="http://apigee.com/docs/node/10152">Data storage</a></strong>:\n        Store all your application data on our high-availability\n        infrastructure, and never worry about dealing with a database\n        ever again.</li>\n      <li><strong><a\n          href="http://apigee.com/docs/node/376">User management and\n            authentication</a></strong>: Every app needs users. Use App Services to\n        easily implement user registration, as well as OAuth\n        2.0-compliant login and authentication.</li>\n    </ul>\n  </li>\n  <li>\n    <h3>\n      <strong>Check out the sample apps</strong>\n    </h3>\n    <p>The SDK includes samples that illustrate\n      Apigee&nbsp;features. You\'ll find the samples in the following\n      location in your SDK download:</p> <pre>\napigee-android-sdk-&lt;version&gt;\n	...\n	/samples\n		</pre>\n   
  <div id="collapse">\n      <a href="#samples_collapse" class="btn" data-toggle="collapse"><i\n        class="icon-white icon-chevron-down"></i> Details</a>\n    </div>\n    <div id="samples_collapse" class="collapse">\n      <p>The samples include the following:</p>\n      <table class="table">\n        <thead>\n          <tr>\n            <th scope="col">Sample</th>\n            <th scope="col">Description</th>\n          </tr>\n        </thead>\n        <tbody>\n          <tr>\n            <td>books</td>\n            <td>An app for storing a list of books that shows\n              Apigee database operations such as reading, creating, and\n              deleting.</td>\n          </tr>\n          <tr>\n            <td>messagee</td>\n            <td>An app for sending and receiving messages that\n              shows Apigee database operations (reading, creating).</td>\n          </tr>\n          <tr>\n            <td>push</td>\n            <td>An app that uses the push feature to se
 nd\n              notifications to the devices of users who have subscribed\n              for them.</td>\n          </tr>\n        </tbody>\n      </table>\n    </div>\n  </li>\n</ul>\n'),$templateCache.put("app-overview/doc-includes/ios.html",'<h2>1. Integrate ApigeeiOSSDK.framework</h2>\n<!--\n  Licensed to the Apache Software Foundation (ASF) under one or more\n  contributor license agreements.  See the NOTICE file distributed with\n  this work for additional information regarding copyright ownership.\n  The ASF licenses this file to You under the Apache License, Version 2.0\n  (the "License"); you may not use this file except in compliance with\n  the License.  You may obtain a copy of the License at\n  \n  http://www.apache.org/licenses/LICENSE-2.0\n  \n  Unless required by applicable law or agreed to in writing, software\n  distributed under the License is distributed on an "AS IS" BASIS,\n  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n  See the L
 icense for the specific language governing permissions and\n  limitations under the License.\n-->\n<a class="jumplink" name="add_the_sdk_to_an_existing_project"></a>\n<ul class="nav nav-tabs" id="myTab">\n  <li class="active"><a data-toggle="tab" href="#existing_project">Existing\n      project</a></li>\n  <li><a data-toggle="tab" href="#new_project">New project</a></li>\n</ul>\n<div class="tab-content">\n  <div class="tab-pane active" id="existing_project">\n    <p>If you\'ve already got&nbsp;an Xcode iOS project, add it into\n      your project as you normally would.</p>\n    <div id="collapse">\n      <a class="btn" data-toggle="collapse" href="#framework_collapse">Details</a>\n    </div>\n    <div class="collapse" id="framework_collapse">\n      <ol>\n        <li>\n          <p>Locate the SDK framework file so you can add it to your\n            project. For example, you\'ll find the file at the following\n            path:</p> <pre>\n&lt;sdk_root&gt;/bin/ApigeeiOSSDK.framework<
 /pre>\n        </li>\n        <li>In the <strong>Project Navigator</strong>, click on\n          your project file, and then the <strong>Build Phases</strong>\n          tab. Expand <strong>Link Binary With Libraries</strong>.\n        </li>\n        <li>Link the Apigee iOS SDK into your project.\n          <ul>\n            <li>Drag ApigeeiOSSDK.framework into the Frameworks\n              group created by Xcode.</li>\n          </ul>\n          <p>OR</p>\n          <ol>\n            <li>At the bottom of the <strong>Link Binary\n                With Libraries</strong> group, click the <strong>+</strong>\n              button. Then click&nbsp;<strong>Add Other</strong>.\n            </li>\n            <li>Navigate to the directory that contains\n              ApigeeiOSSDK.framework, and choose the\n              ApigeeiOSSDK.framework folder.</li>\n          </ol>\n        </li>\n      </ol>\n    </div>\n  </div>\n  <div class="tab-pane" id="new_project">\n    <a class="jumplink" na
 me="create_a_new_project_based_on_the_SDK"></a>\n    <p>If you\'re starting with a clean slate (you don\'t have\n      a&nbsp;project yet), you can begin by using the project template\n      included with the SDK. The template includes support for SDK\n      features.</p>\n    <ol>\n      <li>\n        <p>Locate the project template in the expanded SDK. It\n          should be at the following location:</p> <pre>\n&lt;sdk_root&gt;/new-project-template</pre>\n      </li>\n      <li>In the project template directory, open the project\n        file:&nbsp;Apigee App Services iOS Template.xcodeproj.</li>\n      <li>Get acquainted with the template by looking at its readme\n        file.</li>\n    </ol>\n  </div>\n</div>\n<h2>2. Add required iOS frameworks</h2>\n<p>\n  Ensure that the following iOS frameworks are part of your project. To\n  add them, under the <strong>Link Binary With Libraries</strong> group,\n  click the <strong>+</strong> button, type the name of the framework\n  you w
 ant to add, select the framework found by Xcode, then click <strong>Add</strong>.\n</p>\n<ul>\n  <li>QuartzCore.framework</li>\n  <li>CoreLocation.framework</li>\n  <li>CoreTelephony.framework&nbsp;</li>\n  <li>Security.framework</li>\n  <li>SystemConfiguration.framework</li>\n  <li>UIKit.framework</li>\n</ul>\n<h2>3. Update \'Other Linker Flags\'</h2>\n<p>\n  In the <strong>Build Settings</strong> panel, add the following under\n  <strong>Other Linker Flags</strong>:\n</p>\n<pre>\n-ObjC -all_load</pre>\n<p>\n  Confirm that flags are set for both <strong>DEBUG</strong> and <strong>RELEASE</strong>.\n</p>\n<h2>4. Initialize the SDK</h2>\n<p>\n  The <em>ApigeeClient</em> class initializes the App Services SDK. To\n  do this you will need your organization name and application name,\n  which are available in the <em>Getting Started</em> tab of the <a\n    href="https://www.apigee.com/usergrid/">App Service admin portal</a>,\n  under <strong>Mobile SDK Keys</strong>.\n</p>\n<ol>\n  <li>
 Import the SDK\n    <p>Add the following to your source code to import the SDK:</p> <pre>\n#import &lt;ApigeeiOSSDK/Apigee.h&gt;</pre>\n  </li>\n  <li>\n    <p>\n      Declare the following properties in\n      <code>AppDelegate.h</code>\n      :\n    </p> <pre>\n@property (strong, nonatomic) ApigeeClient *apigeeClient; \n@property (strong, nonatomic) ApigeeMonitoringClient *monitoringClient;\n@property (strong, nonatomic) ApigeeDataClient *dataClient;	\n		</pre>\n  </li>\n  <li>\n    <p>\n      Instantiate the\n      <code>ApigeeClient</code>\n      class inside the \n      <code>didFinishLaunching</code>\n      method of\n      <code>AppDelegate.m</code>\n      :\n    </p> <pre>\n//Replace \'AppDelegate\' with the name of your app delegate class to instantiate it\nAppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];\n\n//Sepcify your App Services organization and application names\nNSString *orgName = @"{{currentOrg}}";\nNSString *appName = @"{{
 currentApp}}";\n\n//Instantiate ApigeeClient to initialize the SDK\nappDelegate.apigeeClient = [[ApigeeClient alloc]\n                            initWithOrganizationId:orgName\n                            applicationId:appName];\n                            \n//Retrieve instances of ApigeeClient.monitoringClient and ApigeeClient.dataClient\nself.monitoringClient = [appDelegate.apigeeClient monitoringClient]; \nself.dataClient = [appDelegate.apigeeClient dataClient]; \n		</pre>\n  </li>\n</ol>\n\n<h2>5. Verify SDK installation</h2>\n\n<p>\n  Once initialized, App Services will also automatically instantiate the\n  <code>ApigeeMonitoringClient</code>\n  class and begin logging usage, crash and error metrics for your app.\n</p>\n\n<p>\n  To verify that the SDK has been properly initialized, run your app,\n  then go to <strong>\'Monitoring\' > \'App Usage\'</strong> in the <a\n    href="https://www.apigee.com/usergrid">App Services admin portal</a>\n  to verify that data is being sent.
 \n</p>\n<p>\n  <img src="img/verify.png" alt="screenshot of data in admin portal" />\n</p>\n<div class="warning">It may take up to two minutes for data to\n  appear in the admin portal after you run your app.</div>\n\n<h2>Installation complete! Try these next steps</h2>\n<ul>\n  <li>\n    <h3>\n      <strong>Call additional SDK methods in your code</strong>\n    </h3>\n    <p>\n      Create an instance of the AppDelegate class, then use\n      <code>appDelegate.dataClient</code>\n      or\n      <code>appDelegate.monitoringClient</code>\n      to call SDK methods:\n    </p>\n    <div id="collapse">\n      <a class="btn" data-toggle="collapse" href="#client_collapse">Details</a>\n    </div>\n    <div class="collapse" id="client_collapse">\n      <ul>\n        <li><code>appDelegate.dataClient</code>: Used to access the\n          data methods of the App Services SDK, including those for push\n          notifications, data store, and geolocation.</li>\n        <li><code>appDelegate.mon
 itoringClient</code>: Used to\n          access the app configuration and monitoring methods of the App\n          Services SDK, including advanced logging, and A/B testing.</li>\n      </ul>\n      <h3>Example</h3>\n      <p>For example, you could create a new entity with the\n        following:</p>\n      <pre>\nAppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];\nApigeeClientResponse *response = [appDelegate.dataClient createEntity:entity];\n			</pre>\n    </div>\n\n  </li>\n  <li>\n    <h3>\n      <strong>Add App Services features to your app</strong>\n    </h3>\n    <p>With App Services you can quickly add valuable features to\n      your mobile or web app, including push notifications, a custom\n      data store, geolocation and more. Check out these links to get\n      started with a few of our most popular features:</p>\n    <ul>\n      <li><strong><a\n          href="http://apigee.com/docs/node/8410">Push notifications</a></strong>:\n    
     Send offers, alerts and other messages directly to user devices\n        to dramatically increase engagement. With App Services you can\n        send 10 million push notification per month for free!</li>\n      <li><strong><a\n          href="http://apigee.com/docs/node/410">Geolocation</a></strong>: Target\n        users or return result sets based on user location to keep your\n        app highly-relevant.</li>\n      <li><strong><a\n          href="http://apigee.com/docs/node/10152">Data storage</a></strong>:\n        Store all your application data on our high-availability\n        infrastructure, and never worry about dealing with a database\n        ever again.</li>\n      <li><strong><a\n          href="http://apigee.com/docs/node/376">User management and\n            authentication</a></strong>: Every app needs users. Use App Services to\n        easily implement user registration, as well as OAuth\n        2.0-compliant login and authentication.</li>\n    </ul>\n  </li>
 \n  <li>\n    <h3>\n      <strong>Check out the sample apps</strong>\n    </h3>\n    <p>\n      The SDK includes samples that illustrate Apigee&nbsp;features. To\n      look at them, open the .xcodeproj file for each in Xcode. To get a\n      sample app running, open its project file, then follow the steps\n      described in the section, <a target="_blank"\n        href="http://apigee.com/docs/app-services/content/installing-apigee-sdk-ios">Add\n        the SDK to an existing project</a>.\n    </p>\n    <p>You\'ll find the samples in the following location in your SDK\n      download:</p> <pre>\napigee-ios-sdk-&lt;version&gt;\n    ...\n    /samples\n		</pre>\n    <div id="collapse">\n      <a class="btn" data-toggle="collapse" href="#samples_collapse">Details</a>\n    </div>\n    <div class="collapse" id="samples_collapse">\n      <p>The samples include the following:</p>\n      <table class="table">\n        <thead>\n          <tr>\n            <th scope="col">Sample</th>\n       
      <th scope="col">Description</th>\n          </tr>\n        </thead>\n        <tbody>\n          <tr>\n            <td>books</td>\n            <td>An app for storing a list of books that shows\n              Apigee database operations such as reading, creating, and\n              deleting.</td>\n          </tr>\n          <tr>\n            <td>messagee</td>\n            <td>An app for sending and receiving messages that\n              shows Apigee database operations (reading, creating).</td>\n          </tr>\n          <tr>\n            <td>push</td>\n            <td>An app that uses the push feature to send\n              notifications to the devices of users who have subscribed\n              for them.</td>\n          </tr>\n        </tbody>\n      </table>\n    </div>\n    <p>&nbsp;</p>\n  </li>\n</ul>\n'),$templateCache.put("app-overview/doc-includes/javascript.html",'<h2>1. Import the SDK into your HTML</h2>\n<!--\n  Licensed to the Apache Software Foundation (ASF) under o
 ne or more\n  contributor license agreements.  See the NOTICE file distributed with\n  this work for additional information regarding copyright ownership.\n  The ASF licenses this file to You under the Apache License, Version 2.0\n  (the "License"); you may not use this file except in compliance with\n  the License.  You may obtain a copy of the License at\n  \n  http://www.apache.org/licenses/LICENSE-2.0\n  \n  Unless required by applicable law or agreed to in writing, software\n  distributed under the License is distributed on an "AS IS" BASIS,\n  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n  See the License for the specific language governing permissions and\n  limitations under the License.\n-->\n<p>\n  To enable support for Apigee-related functions in your HTML, you\'ll\n  need to&nbsp;include\n  <code>apigee.js</code>\n  in your app. To do this, add the following to the\n  <code>head</code>\n  block of your HTML:\n</p>\n<pre>\n&lt;script type="tex
 t/javascript" src="path/to/js/sdk/apigee.js"&gt;&lt;/script&gt;\n</pre>\n<h2>2. Instantiate Apigee.Client</h2>\n<p>Apigee.Client initializes the App Services SDK, and gives you\n  access to all of the App Services SDK methods.</p>\n<p>You will need to pass a JSON object with the UUID or name for\n  your App Services organization and application when you instantiate\n  it.</p>\n<pre>\n//Apigee account credentials, available in the App Services admin portal \nvar client_creds = {\n        orgName:\'{{currentOrg}}\',\n        appName:\'{{currentApp}}\'\n    }\n\n//Initializes the SDK. Also instantiates Apigee.MonitoringClient\nvar dataClient = new Apigee.Client(client_creds);  \n</pre>\n\n<h2>3. Verify SDK installation</h2>\n\n<p>\n  Once initialized, App Services will also automatically instantiate\n  <code>Apigee.MonitoringClient</code>\n  and begin logging usage, crash and error metrics for your app.\n</p>\n\n<p>\n  To verify that the SDK has been properly initialized, run your app,
 \n  then go to <strong>\'Monitoring\' > \'App Usage\'</strong> in the <a\n    href="https://www.apigee.com/usergrid">App Services admin portal</a>\n  to verify that data is being sent.\n</p>\n<p>\n  <img src="img/verify.png" alt="screenshot of data in admin portal" />\n</p>\n<div class="warning">It may take up to two minutes for data to\n  appear in the admin portal after you run your app.</div>\n\n<h2>Installation complete! Try these next steps</h2>\n<ul>\n  <li>\n    <h3>\n      <strong>Call additional SDK methods in your code</strong>\n    </h3>\n    <p>\n      Use\n      <code>dataClient</code>\n      or\n      <code>dataClient.monitor</code>\n      to call SDK methods:\n    </p>\n    <div id="collapse">\n      <a href="#client_collapse" class="btn" data-toggle="collapse"><i\n        class="icon-white icon-chevron-down"></i> Details</a>\n    </div>\n    <div id="client_collapse" class="collapse">\n      <ul>\n        <li><code>dataClient</code>: Used to access the data\n        
   methods of the App Services SDK, including those for push\n          notifications, data store, and geolocation.</li>\n        <li><code>dataClient.monitor</code>: Used to access the app\n          configuration and monitoring methods of the App Services SDK,\n          including advanced logging, and A/B testing.</li>\n      </ul>\n    </div>\n  </li>\n  <li>\n    <h3>\n      <strong>Add App Services features to your app</strong>\n    </h3>\n    <p>With App Services you can quickly add valuable features to\n      your mobile or web app, including push notifications, a custom\n      data store, geolocation and more. Check out these links to get\n      started with a few of our most popular features:</p>\n    <ul>\n      <li><strong><a\n          href="http://apigee.com/docs/node/8410">Push notifications</a></strong>:\n        Send offers, alerts and other messages directly to user devices\n        to dramatically increase engagement. With App Services you can\n        send 10 mill
 ion push notification per month for free!</li>\n      <li><strong><a\n          href="http://apigee.com/docs/node/410">Geolocation</a></strong>: Keep\n        your app highly-relevant by targeting users or returning result\n        sets based on user location.</li>\n      <li><strong><a\n          href="http://apigee.com/docs/node/10152">Data storage</a></strong>:\n        Store all your application data on our high-availability\n        infrastructure, and never worry about dealing with a database\n        ever again.</li>\n      <li><strong><a\n          href="http://apigee.com/docs/node/376">User management and\n            authentication</a></strong>: Every app needs users. Use App Services to\n        easily implement registration, login and OAuth 2.0-compliant\n        authentication.</li>\n    </ul>\n  </li>\n  <li>\n    <h3>\n      <strong>Check out the sample apps</strong>\n    </h3>\n    <p>The SDK includes samples that illustrate\n      Apigee&nbsp;features. To look at th
 em, open the .xcodeproj file\n      for each in Xcode. You\'ll find the samples in the following\n      location in your SDK download:</p> <pre>\napigee-javascript-sdk-master\n    ...\n    /samples		\n		</pre>\n    <div id="collapse">\n      <a href="#samples_collapse" class="btn" data-toggle="collapse"><i\n        class="icon-white icon-chevron-down"></i> Details</a>\n    </div>\n    <div id="samples_collapse" class="collapse">\n      <p>The samples include the following:</p>\n      <table class="table">\n        <thead>\n          <tr>\n            <th scope="col">Sample</th>\n            <th scope="col">Description</th>\n          </tr>\n        </thead>\n        <tbody>\n          <tr>\n            <td>booksSample.html</td>\n            <td>An app for storing a list of books that shows\n              Apigee database operations such as reading, creating, and\n              deleting.</td>\n          </tr>\n          <tr>\n            <td>messagee</td>\n            <td>An app for s
 ending and receiving messages that\n              shows Apigee database operations (reading, creating).</td>\n          </tr>\n          <tr>\n            <td>monitoringSample.html</td>\n            <td>Shows basic configuration and initialization of the\n              HTML5 app monitoring functionality. Works in browser,\n              PhoneGap, Appcelerator, and Trigger.io.</td>\n          </tr>\n          <tr>\n            <td>readmeSample.html</td>\n            <td>A simple app for reading data from an Apigee\n              database.</td>\n          </tr>\n        </tbody>\n      </table>\n    </div>\n  </li>\n</ul>\n'),$templateCache.put("app-overview/doc-includes/net.html",'<!--\n  Licensed to the Apache Software Foundation (ASF) under one or more\n  contributor license agreements.  See the NOTICE file distributed with\n  this work for additional information regarding copyright ownership.\n  The ASF licenses this file to You under the Apache License, Version 2.0\n  (the "Licen
 se"); you may not use this file except in compliance with\n  the License.  You may obtain a copy of the License at\n  \n  http://www.apache.org/licenses/LICENSE-2.0\n  \n  Unless required by applicable law or agreed to in writing, software\n  distributed under the License is distributed on an "AS IS" BASIS,\n  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n  See the License for the specific language governing permissions and\n  limitations under the License.\n-->\n'),$templateCache.put("app-overview/doc-includes/node.html",'<!--\n  Licensed to the Apache Software Foundation (ASF) under one or more\n  contributor license agreements.  See the NOTICE file distributed with\n  this work for additional information regarding copyright ownership.\n  The ASF licenses this file to You under the Apache License, Version 2.0\n  (the "License"); you may not use this file except in compliance with\n  the License.  You may obtain a copy of the License at\n  \n  http://www
 .apache.org/licenses/LICENSE-2.0\n  \n  Unless required by applicable law or agreed to in writing, software\n  distributed under the License is distributed on an "AS IS" BASIS,\n  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n  See the License for the specific language governing permissions and\n  limitations under the License.\n-->'),$templateCache.put("app-overview/doc-includes/ruby.html",'<!--\n  Licensed to the Apache Software Foundation (ASF) under one or more\n  contributor license agreements.  See the NOTICE file distributed with\n  this work for additional information regarding copyright ownership.\n  The ASF licenses this file to You under the Apache License, Version 2.0\n  (the "License"); you may not use this file except in compliance with\n  the License.  You may obtain a copy of the License at\n  \n  http://www.apache.org/licenses/LICENSE-2.0\n  \n  Unless required by applicable law or agreed to in writing, software\n  distributed under the L
 icense is distributed on an "AS IS" BASIS,\n  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n  See the License for the specific language governing permissions and\n  limitations under the License.\n-->'),$templateCache.put("data/data.html",'<div class="content-page">\n<!--\n  Licensed to the Apache Software Foundation (ASF) under one or more\n  contributor license agreements.  See the NOTICE file distributed with\n  this work for additional information regarding copyright ownership.\n  The ASF licenses this file to You under the Apache License, Version 2.0\n  (the "License"); you may not use this file except in compliance with\n  the License.  You may obtain a copy of the License at\n\n  http://www.apache.org/licenses/LICENSE-2.0\n\n  Unless required by applicable law or agreed to in writing, software\n  distributed under the License is distributed on an "AS IS" BASIS,\n  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n  See the L
 icense for the specific language governing permissions and\n  limitations under the License.\n-->\n  <bsmodal id="newCollection" title="Create new collection"\n    close="hideModal" closelabel="Cancel"\n    extrabutton="newCollectionDialog" extrabuttonlabel="Create"\n    buttonid="collection" ng-cloak>\n  <fieldset>\n    <div class="control-group">\n      <label for="new-collection-name">Collection Name:</label>\n      <div class="controls">\n        <input type="text" ug-validate required\n          ng-pattern="collectionNameRegex"\n          ng-attr-title="{{collectionNameRegexDescription}}"\n          ng-model="$parent.newCollection.name" name="collection"\n          id="new-collection-name" class="input-xlarge" />\n        <p class="help-block hide"></p>\n      </div>\n    </div>\n  </fieldset>\n  </bsmodal>\n\n<bsmodal id="newCollectionWithEntity" title="Create new collection"\n    close="hideModal" closelabel="Cancel"\n    extrabutton="newCollectionWithEntityDialog" extrabutto
 nlabel="Create"\n    buttonid="collection" ng-cloak>\n  <fieldset>\n    <div class="control-group">\n      <label for="new-collection-name">Collection Name:</label>\n      <div class="controls">\n        <input type="text" ug-validate required\n          ng-pattern="collectionNameRegex"\n          ng-attr-title="{{collectionNameRegexDescription}}"\n          ng-model="$parent.newCollection.name"\n          placeholder="newCollection"\n          name="collection"\n          id="new-collection-name"\n          class="input-xlarge" />\n        <p class="help-block hide"></p>\n      </div>\n      <div class="controls">\n        <label for="new-collection-entity">Create a new entity for your collection:</label>\n        <textarea\n        ng-model="$parent.newCollection.entity" id="new-collection-entity" class="span6 pull-left" rows="4">{ "name":"value" }</textarea>\n        <br>\n        <a class="btn pull-left" ng-click="validateEntityData();">Validate JSON</a>\n        <p class="help-
 block hide"></p>\n      </div>\n    </div>\n  </fieldset>\n  </bsmodal>\n\n  <div id="intro-page">\n    <page-title title=" Collections" icon="&#128254;"></page-title>\n  </div>\n\n  <section class="row-fluid">\n    <div id="intro-list" class="span3 user-col">\n      <a class="btn btn-primary" id="new-collection-link"\n        ng-click="showModal(\'newCollectionWithEntity\')" title="new collection"><i\n        class="pictogram">&#57347;</i></a> <a class="help_tooltip"\n        ng-mouseover="help.sendTooltipGA(\'data new collection\')"\n        ng-show="help.helpTooltipsEnabled" href="#"\n        ng-attr-tooltip="{{tooltip_new_collection}}"\n        tooltip-placement="right">(?)</a>\n      <ul class="user-list" style="margin-top: 5px;">\n        <li\n          ng-class="queryCollection._type === entity.name ? \'selected\' : \'\'"\n          ng-repeat="entity in collectionList"\n          ng-click="loadCollection(\'/\'+entity.name);"><a\n          id="collection-{{entity.name}}-link" 
 href="javaScript:void(0)">/{{entity.name}}\n        </a></li>\n      </ul>\n\n    </div>\n\n    <div class="span9 tab-content">\n      <div class="content-page">\n        <form id="intro-collection-query" name="dataForm"\n          ng-submit="run();">\n          <fieldset>\n            <div class="control-group">\n              <div class="" data-toggle="buttons-radio">\n                <!--a class="btn" id="button-query-back">&#9664; Back</a-->\n                <!--Added disabled class to change the way button looks but their functionality is as usual -->\n                <label class="control-label" style="display: none"><strong>Method</strong>\n                  <a id="query-method-help" href="#" class="help-link">get\n                    help</a></label> <input type="radio" id="create-rb"\n                  name="query-action" style="margin-top: -2px;"\n                  ng-click="selectPOST();" ng-checked="verb==\'POST\'">\n                CREATE &nbsp; &nbsp; <input type="radi
 o" id="read-rb"\n                  name="query-action" style="margin-top: -2px;"\n                  ng-click="selectGET();" ng-checked="verb==\'GET\'">\n                READ &nbsp; &nbsp; <input type="radio" id="update-rb"\n                  name="query-action" style="margin-top: -2px;"\n                  ng-click="selectPUT();" ng-checked="verb==\'PUT\'">\n                UPDATE &nbsp; &nbsp; <input type="radio" id="delete-rb"\n                  name="query-action" style="margin-top: -2px;"\n                  ng-click="selectDELETE();" ng-checked="verb==\'DELETE\'">\n                DELETE <a class="help_tooltip"\n                  ng-mouseover="help.sendTooltipGA(\'data query verbs\')"\n                  ng-show="help.helpTooltipsEnabled" href="#"\n                  ng-attr-tooltip="{{tooltip_verb_buttons}}"\n                  tooltip-placement="right">(?)</a>\n              </div>\n            </div>\n\n            <div class="control-group">\n              <strong>Path </strong>
 \n              <div class="controls">\n                <input ng-model="data.queryPath" type="text" ug-validate\n                  id="pathDataQuery"\n                  ng-attr-title="{{pathRegexDescription}}"\n                  ng-pattern="pathRegex" class="span6"\n                  autocomplete="off" placeholder="ex: /users" required />\n                <a class="help_tooltip"\n                  ng-mouseover="help.sendTooltipGA(\'data query path\')"\n                  ng-show="help.helpTooltipsEnabled" href="#"\n                  ng-attr-tooltip="{{tooltip_path_box}}"\n                  tooltip-placement="right">(?)</a>\n              </div>\n            </div>\n            <div class="control-group">\n              <a id="back-to-collection" class="outside-link"\n                style="display: none">Back to collection</a>\n            </div>\n            <div class="control-group">\n              <strong>Query</strong>\n              <div class="controls">\n                <inp
 ut ng-model="data.searchString" type="text"\n                  class="span6" autocomplete="off"\n                  placeholder="ex: select * where name=\'fred\'" /> <a\n                  class="help_tooltip"\n                  ng-mouseover="help.sendTooltipGA(\'data query string\')"\n                  ng-show="help.helpTooltipsEnabled" href="#"\n                  ng-attr-tooltip="{{tooltip_query_box}}"\n                  tooltip-placement="right">(?)</a>\n                <div style="display: none">\n                  <a class="btn dropdown-toggle " data-toggle="dropdown">\n                    <span id="query-collections-caret" class="caret"></span>\n                  </a>\n                  <ul id="query-collections-indexes-list"\n                    class="dropdown-menu ">\n                  </ul>\n                </div>\n              </div>\n            </div>\n\n\n            <div class="control-group"\n              ng-show="verb==\'GET\' || verb==\'DELETE\'">\n              <l
 abel class="control-label" for="query-limit"><strong>Limit</strong>\n                <a class="help_tooltip"\n                ng-mouseover="help.sendTooltipGA(\'data limit\')"\n                ng-show="help.helpTooltipsEnabled" href="#"\n                ng-attr-tooltip="{{tooltip_limit}}"\n                tooltip-placement="right">(?)</a><a\n                id="query-limit-help" href="#" ng-show="false"\n                class="help-link">get help</a></label>\n              <div class="controls">\n                <div class="input-append">\n                  <input ng-model="data.queryLimit" type="text"\n                    class="span5" id="query-limit" placeholder="ex: 10">\n                </div>\n              </div>\n            </div>\n\n            <div class="control-group"\n              style="display: {{queryBodyDisplay">\n              <label class="control-label" for="query-source"><strong>JSON\n                  Body</strong> <a class="help_tooltip"\n                ng-
 mouseover="help.sendTooltipGA(\'data json body\')"\n                ng-show="help.helpTooltipsEnabled" href="#"\n                ng-attr-tooltip="{{tooltip_json_body}}"\n                tooltip-placement="right">(?)</a> <a\n                id="query-json-help" href="#" ng-show="false"\n                class="help-link">get help</a></label>\n              <div class="controls">\n                <textarea ng-model="data.queryBody" id="query-source"\n                  class="span6 pull-left" rows="4">\n      { "name":"value" }\n            </textarea>\n                <br> <a class="btn pull-left"\n                  ng-click="validateJson();">Validate JSON</a> <a\n                  class="help_tooltip"\n                  ng-mouseover="help.sendTooltipGA(\'data validate json\')"\n                  ng-show="help.helpTooltipsEnabled" href="#"\n                  ng-attr-tooltip="{{tooltip_json_validate}}"\n                  tooltip-placement="right">(?)</a>\n              </div>\n         
    </div>\n            <div style="clear: both; height: 10px;"></div>\n            <div class="control-group">\n              <input type="submit"\n                ng-disabled="!dataForm.$valid || loading"\n                class="btn btn-primary" id="button-query"\n                value="{{loading ? loadingText : \'Run Query\'}}" /> <a\n                class="help_tooltip"\n                ng-mouseover="help.sendTooltipGA(\'data run query\')"\n                ng-show="help.helpTooltipsEnabled" href="#"\n                ng-attr-tooltip="{{tooltip_run_query}}"\n                tooltip-placement="right">(?)</a>\n            </div>\n          </fieldset>\n        </form>\n        <div id="intro-entity-list">\n          <div\n'+"            ng-include=\"display=='generic' ? 'data/display-generic.html' : ''\"></div>\n          <div\n            ng-include=\"display=='users' ? 'data/display-users.html' : ''\"></div>\n          <div\n            ng-include=\"display=='groups' ? 'data/displa
 y-groups.html' : ''\"></div>\n          <div\n            ng-include=\"display=='roles' ? 'data/display-roles.html' : ''\"></div>\n        </div>\n\n      </div>\n\n    </div>\n  </section>\n\n</div>\n\n"),$templateCache.put("data/display-generic.html",'<bsmodal id="deleteEntities"\n  title="Are you sure you want to delete the entities(s)?"\n  close="hideModal" closelabel="Cancel"\n  extrabutton="deleteEntitiesDialog" extrabuttonlabel="Delete"\n  buttonid="del-entity" ng-cloak>\n  <!--\n  Licensed to the Apache Software Foundation (ASF) under one or more\n  contributor license agreements.  See the NOTICE file distributed with\n  this work for additional information regarding copyright ownership.\n  The ASF licenses this file to You under the Apache License, Version 2.0\n  (the "License"); you may not use this file except in compliance with\n  the License.  You may obtain a copy of the License at\n  \n  http://www.apache.org/licenses/LICENSE-2.0\n  \n  Unless required by applicable l
 aw or agreed to in writing, software\n  distributed under the License is distributed on an "AS IS" BASIS,\n  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n  See the License for the specific language governing permissions and\n  limitations under the License.\n-->\n<fieldset>\n  <div class="control-group"></div>\n</fieldset>\n</bsmodal>\n\n<span class="button-strip"> <a class="help_tooltip"\n  ng-mouseover="help.sendTooltipGA(\'data entities list\')"\n  ng-show="help.helpTooltipsEnabled" href="#"\n  ng-attr-tooltip="{{tooltip_entities_list}}" tooltip-placement="left">(?)</a>\n  <button class="btn btn-primary"\n    ng-disabled="!valueSelected(queryCollection._list) || deleteLoading"\n    ng-click="deleteEntitiesDialog()">{{deleteLoading ?\n    loadingText : \'Delete Entity(s)\'}}</button>\n</span>\n<table class="table table-striped collection-list">\n  <thead>\n    <tr class="table-header">\n      <th><input type="checkbox"\n        ng-show="queryCollection
 ._list.length > 0"\n        id="selectAllCheckbox" ng-model="queryBoxesSelected"\n        ng-click="selectAllEntities(queryCollection._list,$parent,\'queryBoxesSelected\',true)"></th>\n      <th ng-if="hasProperty(\'name\')">Name</th>\n      <th>UUID</th>\n      <th></th>\n    </tr>\n  </thead>\n  <tbody ng-repeat="entity in queryCollection._list">\n    <tr class="zebraRows">\n      <td><input type="checkbox"\n        id="entity-{{entity._data.name}}-cb"\n        ng-value="entity._data.uuid" ng-model="entity.checked">\n      </td>\n      <td ng-if="hasProperty(\'name\')">{{entity._data.name}}</td>\n      <td>{{entity._data.uuid}}</td>\n      <td><a href="javaScript:void(0)"\n        ng-click="entitySelected[$index] = !entitySelected[$index]; selectEntity(entity._data.uuid, entitySelected[$index]);">{{entitySelected[$index]\n          ? \'Hide\' : \'View\'}} Details</a></td>\n    </tr>\n    <tr ng-if="entitySelected[$index]">\n      <td colspan="5">\n\n\n        <h4 style="margin: 0 
 0 20px 0">Entity Detail</h4>\n\n\n        <ul class="formatted-json">\n          <li ng-repeat="(k,v) in entity._data track by $index"><span\n            class="key">{{k}} :</span> <!--todo - doing manual recursion to get this out the door for launch, please fix-->\n            <span ng-switch on="isDeep(v)">\n              <ul ng-switch-when="true">\n                <li ng-repeat="(k2,v2) in v"><span class="key">{{k2}}\n                    :</span> <span ng-switch on="isDeep(v2)">\n                    <ul ng-switch-when="true">\n                      <li ng-repeat="(k3,v3) in v2"><span\n                        class="key">{{k3}} :</span><span class="value">{{v3}}</span></li>\n                    </ul> <span ng-switch-when="false"> <span\n                      class="value">{{v2}}</span>\n                  </span>\n                </span></li>\n              </ul> <span ng-switch-when="false"> <span class="value">{{v}}</span>\n            </span>\n          </span></li>\n        </u
 l>\n\n        <div class="control-group">\n          <h4 style="margin: 20px 0 20px 0">\n            Edit Entity <a class="help_tooltip"\n              ng-mouseover="help.sendTooltipGA(\'data edit entity\')"\n              ng-show="help.helpTooltipsEnabled" href="#"\n              ng-attr-tooltip="{{tooltip_edit_entity}}"\n              tooltip-placement="right">(?)</a>\n          </h4>\n          <div class="controls">\n            <textarea ng-model="entity._json" class="span12" rows="12"></textarea>\n            <br> <a class="btn btn-primary toolbar pull-left"\n              ng-click="validateJson();">Validate JSON</a>\n            <button type="button" class="btn btn-primary pull-right"\n              id="button-query" ng-click="saveEntity(entity);">Save</button>\n          </div>\n        </div>\n      </td>\n    </tr>\n\n    <tr ng-show="queryCollection._list.length == 0">\n      <td colspan="4">No data found</td>\n    </tr>\n  </tbody>\n</table>\n<div style="padding: 10px 5p
 x 10px 5px">\n  <button class="btn btn-primary toolbar" ng-click="getPrevious()"\n    style="display: {{previous_display">< Previous</button>\n  <button class="btn btn-primary toolbar" ng-click="getNext()"\n    style="display: {{next_display">Next ></button>\n</div>\n\n'),$templateCache.put("data/display-groups.html",'<!--\n  Licensed to the Apache Software Foundation (ASF) under one or more\n  contributor license agreements.  See the NOTICE file distributed with\n  this work for additional information regarding copyright ownership.\n  The ASF licenses this file to You under the Apache License, Version 2.0\n  (the "License"); you may not use this file except in compliance with\n  the License.  You may obtain a copy of the License at\n  \n  http://www.apache.org/licenses/LICENSE-2.0\n  \n  Unless required by applicable law or agreed to in writing, software\n  distributed under the License is distributed on an "AS IS" BASIS,\n  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either expr
 ess or implied.\n  See the License for the specific language governing permissions and\n  limitations under the License.\n-->'),$templateCache.put("data/display-roles.html",'roles---------------------------------\n<!--\n  Licensed to the Apache Software Foundation (ASF) under one or more\n  contributor license agreements.  See the NOTICE file distributed with\n  this work for additional information regarding copyright ownership.\n  The ASF licenses this file to You under the Apache License, Version 2.0\n  (the "License"); you may not use this file except in compliance with\n  the License.  You may obtain a copy of the License at\n  \n  http://www.apache.org/licenses/LICENSE-2.0\n  \n  Unless required by applicable law or agreed to in writing, software\n  distributed under the License is distributed on an "AS IS" BASIS,\n  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n  See the License for the specific language governing permissions and\n  limitations unde
 r the License.\n-->\n'),$templateCache.put("data/display-users.html",'<table id="query-response-table" class="table">\n<!--\n  Licensed to the Apache Software Foundation (ASF) under one or more\n  contributor license agreements.  See the NOTICE file distributed with\n  this work for additional information regarding copyright ownership.\n  The ASF licenses this file to You under the Apache License, Version 2.0\n  (the "License"); you may not use this file except in compliance with\n  the License.  You may obtain a copy of the License at\n  \n  http://www.apache.org/licenses/LICENSE-2.0\n  \n  Unless required by applicable law or agreed to in writing, software\n  distributed under the License is distributed on an "AS IS" BASIS,\n  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n  See the License for the specific language governing permissions and\n  limitations under the License.\n-->\n  <tbody>\n    <tr class="zebraRows users-row">\n      <td class="checkbox
 o"><input type="checkbox"\n        onclick="Usergrid.console.selectAllEntities(this);"></td>\n      <td class="gravatar50-td">&nbsp;</td>\n      <td class="user-details bold-header">Username</td>\n      <td class="user-details bold-header">Display Name</td>\n      <td class="user-details bold-header">UUID</td>\n      <td class="view-details">&nbsp;</td>\n    </tr>\n    <tr class="zebraRows users-row">\n      <td class="checkboxo"><input class="listItem" type="checkbox"\n        name="/users/8bb9a3fa-d508-11e2-875d-a59031a365e8/following/bf9a95da-d508-11e2-bf44-236d2eee13a7"\n        value="bf9a95da-d508-11e2-bf44-236d2eee13a7"></td>\n      <td class="gravatar50-td"><img\n        src="http://www.gravatar.com/avatar/01b37aa66496988ca780b3f515bc768e"\n        class="gravatar50"></td>\n      <td class="details"><a\n        onclick="Usergrid.console.getCollection(\'GET\', \'/users/8bb9a3fa-d508-11e2-875d-a59031a365e8/following/\'+\'bf9a95da-d508-11e2-bf44-236d2eee13a7\'); $(\'#data-explo
 rer\').show(); return false;"\n        class="view-details">10</a></td>\n      <td class="details">#"&gt;&lt;img src=x\n        onerror=prompt(1);&gt;</td>\n      <td class="details">bf9a95da-d508-11e2-bf44-236d2eee13a7</td>\n      <td class="view-details"><a href=""\n        onclick="$(\'#query-row-bf9a95da-d508-11e2-bf44-236d2eee13a7\').toggle(); $(\'#data-explorer\').show(); return false;"\n        class="view-details">Details</a></td>\n    </tr>\n    <tr id="query-row-bf9a95da-d508-11e2-bf44-236d2eee13a7"\n      style="display: none">\n      <td colspan="5">\n        <div>\n          <div style="padding-bottom: 10px;">\n            <button type="button"\n              class="btn btn-small query-button active"\n              id="button-query-show-row-JSON"\n              onclick="Usergrid.console.activateQueryRowJSONButton(); $(\'#query-row-JSON-bf9a95da-d508-11e2-bf44-236d2eee13a7\').show(); $(\'#query-row-content-bf9a95da-d508-11e2-bf44-236d2eee13a7\').hide(); return false;">JS
 ON</button>\n            <button type="button"\n              class="btn btn-small query-button disabled"\n              id="button-query-show-row-content"\n              onclick="Usergrid.console.activateQueryRowContentButton();$(\'#query-row-content-bf9a95da-d508-11e2-bf44-236d2eee13a7\').show(); $(\'#query-row-JSON-bf9a95da-d508-11e2-bf44-236d2eee13a7\').hide(); return false;">Content</button>\n          </div>\n          <div id="query-row-JSON-bf9a95da-d508-11e2-bf44-236d2eee13a7">\n            <pre>{\n  "picture": "http://www.gravatar.com/avatar/01b37aa66496988ca780b3f515bc768e",\n  "uuid": "bf9a95da-d508-11e2-bf44-236d2eee13a7",\n  "type": "user",\n  "name": "#"&gt;&lt;img src=x onerror=prompt(1);&gt;",\n  "created": 1371224432557,\n  "modified": 1371851347024,\n  "username": "10",\n  "email": "fdsafdsa@ookfd.com",\n  "activated": "true",\n  "adr": {\n    "addr1": "",\n    "addr2": "",\n    "city": "",\n    "state": "",\n    "zip": "",\n    "country": ""\n  },\n  "metadata": 
 {\n    "path": "/users/8bb9a3fa-d508-11e2-875d-a59031a365e8/following/bf9a95da-d508-11e2-bf44-236d2eee13a7",\n    "sets": {\n      "rolenames": "/users/8bb9a3fa-d508-11e2-875d-a59031a365e8/following/bf9a95da-d508-11e2-bf44-236d2eee13a7/rolenames",\n      "permissions": "/users/8bb9a3fa-d508-11e2-875d-a59031a365e8/following/bf9a95da-d508-11e2-bf44-236d2eee13a7/permissions"\n    },\n    "collections": {\n      "activities": "/users/8bb9a3fa-d508-11e2-875d-a59031a365e8/following/bf9a95da-d508-11e2-bf44-236d2eee13a7/activities",\n      "devices": "/users/8bb9a3fa-d508-11e2-875d-a59031a365e8/following/bf9a95da-d508-11e2-bf44-236d2eee13a7/devices",\n      "feed": "/users/8bb9a3fa-d508-11e2-875d-a59031a365e8/following/bf9a95da-d508-11e2-bf44-236d2eee13a7/feed",\n      "groups": "/users/8bb9a3fa-d508-11e2-875d-a59031a365e8/following/bf9a95da-d508-11e2-bf44-236d2eee13a7/groups",\n      "roles": "/users/8bb9a3fa-d508-11e2-875d-a59031a365e8/following/bf9a95da-d508-11e2-bf44-236d2eee13a7/roles"
 ,\n      "following": "/users/8bb9a3fa-d508-11e2-875d-a59031a365e8/following/bf9a95da-d508-11e2-bf44-236d2eee13a7/following",\n      "followers": "/users/8bb9a3fa-d508-11e2-875d-a59031a365e8/following/bf9a95da-d508-11e2-bf44-236d2eee13a7/followers"\n    }\n  },\n  "title": "#"&gt;&lt;img src=x onerror=prompt(1);&gt;"\n}</pre>\n          </div>\n          <div\n            id="query-row-content-bf9a95da-d508-11e2-bf44-236d2eee13a7"\n            style="display: none">\n            <table>\n              <tbody>\n                <tr>\n                  <td>picture</td>\n                  <td>http://www.gravatar.com/avatar/01b37aa66496988ca780b3f515bc768e</td>\n                </tr>\n                <tr>\n                  <td>uuid</td>\n                  <td>bf9a95da-d508-11e2-bf44-236d2eee13a7</td>\n                </tr>\n                <tr>\n                  <td>type</td>\n                  <td>user</td>\n                </tr>\n                <tr>\n                  <td>name</td>\
 n                  <td>#&amp;quot;&amp;gt;&amp;lt;img src=x\n                    onerror=prompt(1);&amp;gt;</td>\n                </tr>\n                <tr>\n                  <td>created</td>\n                  <td>1371224432557</td>\n                </tr>\n                <tr>\n                  <td>modified</td>\n                  <td>1371851347024</td>\n                </tr>\n                <tr>\n                  <td>username</td>\n                  <td>10</td>\n                </tr>\n                <tr>\n                  <td>email</td>\n                  <td>fdsafdsa@ookfd.com</td>\n                </tr>\n                <tr>\n                  <td>activated</td>\n                  <td>true</td>\n                </tr>\n                <tr>\n                  <td></td>\n                  <td style="padding: 0"><table>\n                      <tbody>\n                        <tr></tr>\n                        <tr>\n                          <td>addr1</td>\n                   
        <td></td>\n                        </tr>\n                        <tr>\n                          <td>addr2</td>\n                          <td></td>\n                        </tr>\n                        <tr>\n                          <td>city</td>\n                          <td></td>\n                        </tr>\n                        <tr>\n                          <td>state</td>\n                          <td></td>\n                        </tr>\n                        <tr>\n                          <td>zip</td>\n                          <td></td>\n                        </tr>\n                        <tr>\n                          <td>country</td>\n                          <td></td>\n                        </tr>\n                      </tbody>\n                    </table></td>\n                </tr>\n                <tr>\n                  <td></td>\n                  <td style="padding: 0"><table>\n                      <tbody>\n                        <tr
 ></tr>\n                        <tr>\n                          <td>path</td>\n                          <td>/users/8bb9a3fa-d508-11e2-875d-a59031a365e8/following/bf9a95da-d508-11e2-bf44-236d2eee13a7</td>\n                        </tr>\n                        <tr>\n                          <td></td>\n                          <td style="padding: 0"><table>\n                              <tbody>\n                                <tr></tr>\n                                <tr>\n                                  <td>rolenames</td>\n                                  <td>/users/8bb9a3fa-d508-11e2-875d-a59031a365e8/following/bf9a95da-d508-11e2-bf44-236d2eee13a7/rolenames</td>\n                                </tr>\n                                <tr>\n                                  <td>permissions</td>\n                                  <td>/users/8bb9a3fa-d508-11e2-875d-a59031a365e8/following/bf9a95da-d508-11e2-bf44-236d2eee13a7/permissions</td>\n                                </tr
 >\n                              </tbody>\n                            </table></td>\n                        </tr>\n                        <tr>\n                          <td></td>\n                          <td style="padding: 0"><table>\n                              <tbody>\n                                <tr></tr>\n                                <tr>\n                                  <td>activities</td>\n                                  <td>/users/8bb9a3fa-d508-11e2-875d-a59031a365e8/following/bf9a95da-d508-11e2-bf44-236d2eee13a7/activities</td>\n                                </tr>\n                                <tr>\n                                  <td>devices</td>\n                                  <td>/users/8bb9a3fa-d508-11e2-875d-a59031a365e8/following/bf9a95da-d508-11e2-bf44-236d2eee13a7/devices</td>\n                                </tr>\n                                <tr>\n                                  <td>feed</td>\n                                  <t
 d>/users/8bb9a3fa-d508-11e2-875d-a59031a365e8/following/bf9a95da-d508-11e2-bf44-236d2eee13a7/feed</td>\n                                </tr>\n                                <tr>\n                                  <td>groups</td>\n                                  <td>/users/8bb9a3fa-d508-11e2-875d-a59031a365e8/following/bf9a95da-d508-11e2-bf44-236d2eee13a7/groups</td>\n                                </tr>\n                                <tr>\n                                  <td>roles</td>\n                                  <td>/users/8bb9a3fa-d508-11e2-875d-a59031a365e8/following/bf9a95da-d508-11e2-bf44-236d2eee13a7/roles</td>\n                                </tr>\n                                <tr>\n                                  <td>following</td>\n                                  <td>/users/8bb9a3fa-d508-11e2-875d-a59031a365e8/following/bf9a95da-d508-11e2-bf44-236d2eee13a7/following</td>\n                                </tr>\n                                <tr>\n  
                                 <td>followers</td>\n                                  <td>/users/8bb9a3fa-d508-11e2-875d-a59031a365e8/following/bf9a95da-d508-11e2-bf44-236d2eee13a7/followers</td>\n                                </tr>\n                              </tbody>\n                            </table></td>\n                        </tr>\n                      </tbody>\n                    </table></td>\n                </tr>\n                <tr>\n                  <td>title</td>\n                  <td>#&amp;quot;&amp;gt;&amp;lt;img src=x\n                    onerror=prompt(1);&amp;gt;</td>\n                </tr>\n              </tbody>\n            </table>\n          </div>\n        </div>\n      </td>\n    </tr>\n  </tbody>\n</table>\n'),$templateCache.put("data/entity.html",'<div class="content-page">\n<!--\n  Licensed to the Apache Software Foundation (ASF) under one or more\n  contributor license agreements.  See the NOTICE file distributed with\n  this work for addi
 tional information regarding copyright ownership.\n  The ASF licenses this file to You under the Apache License, Version 2.0\n  (the "License"); you may not use this file except in compliance with\n  the License.  You may obtain a copy of the License at\n  \n  http://www.apache.org/licenses/LICENSE-2.0\n  \n  Unless required by applicable law or agreed to in writing, software\n  distributed under the License is distributed on an "AS IS" BASIS,\n  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n  See the License for the specific language governing permissions and\n  limitations under the License.\n-->\n  <h4>Entity Detail</h4>\n  <div class="well">\n    <a href="#!/data" class="outside-link"><< Back to collection</a>\n  </div>\n  <fieldset>\n    <div class="control-group">\n      <strong>Path </strong>\n      <div class="controls">{{entityType}}/{{entityUUID}}</div>\n    </div>\n\n    <div class="control-group">\n      <label class="control-label" for="query
 -source"><strong>JSON\n          Body</strong></label>\n      <div class="controls">\n        <textarea ng-model="queryBody" class="span6 pull-left" rows="12">{{queryBody}}</textarea>\n        <br> <a class="btn pull-left" ng-click="validateJson();">Validate\n          JSON</a>\n      </div>\n    </div>\n    <div style="clear: both; height: 10px;"></div>\n    <div class="control-group">\n      <button type="button" class="btn btn-primary" id="button-query"\n        ng-click="saveEntity();">Save</button>\n      <!--button type="button" class="btn btn-primary" id="button-query" ng-click="run();">Delete</button-->\n    </div>\n  </fieldset>\n\n</div>\n\n'),$templateCache.put("dialogs/modal.html",'<div class="modal show fade" tabindex="-1" role="dialog"\n  aria-hidden="true">\n<!--\n  Licensed to the Apache Software Foundation (ASF) under one or more\n  contributor license agreements.  See the NOTICE file distributed with\n  this work for additional information regarding copyright owner
 ship.\n  The ASF licenses this file to You under the Apache License, Version 2.0\n  (the "License"); you may not use this file except in compliance with\n  the License.  You may obtain a copy of the License at\n  \n  http://www.apache.org/licenses/LICENSE-2.0\n  \n  Unless required by applicable law or agreed to in writing, software\n  distributed under the License is distributed on an "AS IS" BASIS,\n  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n  See the License for the specific language governing permissions and\n  limitations under the License.\n-->    \n  <form ng-submit="extraDelegate(extrabutton)" name="dialogForm"\n    novalidate>\n\n    <div class="modal-header">\n      <h1 class="title">{{title}}</h1>\n    </div>\n\n    <div class="modal-body" ng-transclude></div>\n    <div class="modal-footer">\n      {{footertext}} <input type="submit" class="btn"\n        id="dialogButton-{{buttonId}}" ng-if="extrabutton"\n        ng-disabled="!dialogForm.$
 valid" aria-hidden="true"\n        ng-value="extrabuttonlabel" />\n      <button class="btn cancel pull-left" data-dismiss="modal"\n        aria-hidden="true" ng-click="closeDelegate(close)">{{closelabel}}\n      </button>\n    </div>\n  </form>\n</div>\n'),$templateCache.put("global/insecure-banner.html",'<div ng-if="securityWarning" ng-cloak class="demo-holder">\n<!--\n  Licensed to the Apache Software Foundation (ASF)

<TRUNCATED>

Mime
View raw message