You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@usergrid.apache.org by sn...@apache.org on 2014/03/31 23:23:41 UTC
[1/9] fixed img path
Repository: incubator-usergrid
Updated Branches:
refs/heads/master d5b6c97e3 -> ec3f5b1c1
refs/pull/89/head [created] 09611d5b1
refs/pull/90/head [created] 70780481a
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/b73da256/portal/js/usergrid.min.js
----------------------------------------------------------------------
diff --git a/portal/js/usergrid.min.js b/portal/js/usergrid.min.js
index 1a578a1..3f03288 100644
--- a/portal/js/usergrid.min.js
+++ b/portal/js/usergrid.min.js
@@ -1,4 +1,4 @@
-/*! usergrid@2.0.1 2014-03-28 */
+/*! usergrid@2.0.1 2014-03-31 */
!function(exports,global){function renderChart(chartsDefaults,chartdata){var newSettings={};$.extend(!0,newSettings,chartsDefaults,chartdata);new Highcharts.Chart(newSettings)}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 Arra
y?[]:{};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",[]),AppServices.Performance=angular.module("appservices.performance",[]),AppServices.MAX=angular.module("appservices.max",[]),angular.module("appservices",["ngRoute","ngResource","ngSanitize","ui.bootstrap","angulartics","angulartics.google.analytics","appservices.filters","appservices
.services","appservices.directives","appservices.constants","appservices.controllers","appservices.max","angular-intro"]).config(["$routeProvider","$locationProvider","$sceDelegateProvider","$analyticsProvider",function($routeProvider,$locationProvider,$sceDelegateProvider,$analyticsProvider){$routeProvider.when("/org-overview",{templateUrl:"org-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("/getting-started/setup",{templateUrl:"app-overview/getting-started.html",controller:"GettingStartedCtrl"}).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.html",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:"gro
ups/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:"DataCtrl"}).when("/data/entity",{templateUrl:"data/entity.html",controller:"EntityCtrl"}).when("/data/shell",{templateUrl:"data/shell.html",controller:"ShellCtrl"}).when("/profile/organizations",{templateUrl:"profile/organizations.html",controller:"OrgCtrl"}).when("/profile/profile",{templateUrl:"profile/profile.html",controller:"ProfileCtrl"}).when("/profile",{templateUrl:"profile/account.html",controller:"AccountCtrl"}).when("/activities",{templateUrl:"activities/activities.html",controller:"ActivitiesCtrl"}).when("/shell",{templateU
rl:"shell/shell.html",controller:"ShellCtrl"}).when("/logout",{templateUrl:"login/logout.html",controller:"LogoutCtrl"}).otherwise({redirectTo:"/org-overview"}),$locationProvider.html5Mode(!1).hashPrefix("!"),$sceDelegateProvider.resourceUrlWhitelist(["self","http://apigee-internal-prod.jupiter.apigee.net/**","http://apigee-internal-prod.mars.apigee.net/**","https://appservices.apigee.com/**","https://api.usergrid.com/**"]),$analyticsProvider.virtualPageviews(!1),$analyticsProvider.firstPageview(!1)}]),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","charts","$scope","$rootScope","$log",funct
ion(ug,charts,$scope,$rootScope,$log){var createGradient=function(color1,color2){var perShapeGradient={x1:0,y1:0,x2:0,y2:1};return{linearGradient:perShapeGradient,stops:[[0,color1],[1,color2]]}};$scope.appOverview={},$scope.collections=[],$scope.graph="",$scope.$on("top-collections-received",function(event,collections){var dataDescription={bar1:{labels:["Total"],dataAttr:["title","count"],colors:[createGradient("rgba(36,151,212,0.6)","rgba(119,198,240,0.6)")],borderColor:"#1b97d1"}};$scope.collections=collections;var arr=[];for(var i in collections)collections.hasOwnProperty(i)&&arr.push(collections[i]);$scope.appOverview={},$rootScope.chartTemplate?($scope.appOverview.chart=angular.copy($rootScope.chartTemplate.pareto),$scope.appOverview.chart=charts.convertParetoChart(arr,$scope.appOverview.chart,dataDescription.bar1,"1h","NOW"),$scope.applyScope()):ug.httpGet(null,"js/charts/highcharts.json").then(function(success){$rootScope.chartTemplate=success,$scope.appOverview.chart=angular
.copy($rootScope.chartTemplate.pareto),$scope.appOverview.chart=charts.convertParetoChart(arr,$scope.appOverview.chart,dataDescription.bar1,"1h","NOW"),$scope.applyScope()},function(fail){$log.error("Problem getting chart template",fail)})}),$scope.$on("app-initialized",function(){ug.getTopCollections()}),$rootScope.activeUI&&ug.getTopCollections()}]),AppServices.Controllers.controller("GettingStartedCtrl",["ug","$scope","$rootScope","$location","$timeout","$anchorScroll",function(ug,$scope,$rootScope,$location,$timeout,$anchorScroll){$scope.collections=[],$scope.graph="",$scope.clientID="",$scope.clientSecret="";$scope.regenerateCredentialsDialog=function(modalId){$scope.orgAPICredentials={client_id:"regenerating...",client_secret:"regenerating..."},ug.regenerateAppCredentials(),$scope.hideModal(modalId)},$scope.$on("app-creds-updated",function(event,credentials){credentials?($scope.clientID=credentials.client_id,$scope.clientSecret=credentials.client_secret,$scope.$$phase||$scope.
$apply()):setTimeout(function(){ug.getAppCredentials()},5e3)}),ug.getAppCredentials(),$scope.contentTitle,$scope.showSDKDetail=function(name){var introContainer=document.getElementById("intro-container");if("nocontent"===name)return introContainer.style.height="0",!0;introContainer.style.opacity=.1,introContainer.style.height="0";var timeout=0;$scope.contentTitle&&(timeout=500),$timeout(function(){introContainer.style.height="1000px",introContainer.style.opacity=1},timeout),$scope.optionName=name,$scope.contentTitle=name,$scope.sdkLink="http://apigee.com/docs/content/"+name+"-sdk-redirect",$scope.docsLink="http://apigee.com/docs/app-services/content/installing-apigee-sdk-"+name,$scope.getIncludeURL=function(){return"app-overview/doc-includes/"+$scope.optionName+".html"}},$scope.scrollToElement=function(elem){return $location.hash(elem),$anchorScroll(),!1}}]),AppServices.Controllers.controller("ChartCtrl",["$scope","$location",function(){}]),AppServices.Directives.directive("chart",f
unction(){return{restrict:"E",scope:{chartdata:"=chartdata"},template:"<div></div>",replace:!0,controller:function(){},link:function(scope,element,attrs){scope.$watch("chartdata",function(chartdata){if(chartdata){var chartsDefaults={chart:{renderTo:element[0],type:attrs.type||null,height:attrs.height||null,width:attrs.width||null,reflow:!0,animation:!1,zoomType:"x"}};if("pie"===attrs.type&&(chartsDefaults.chart.margin=[0,0,0,0],chartsDefaults.chart.spacingLeft=0,chartsDefaults.chart.spacingRight=0,chartsDefaults.chart.spacingTop=0,chartsDefaults.chart.spacingBottom=0,attrs.titleimage&&(chartdata.title.text='<img src="'+attrs.titleimage+'">'),attrs.titleicon&&(chartdata.title.text='<i class="pictogram '+attrs.titleiconclass+'">'+attrs.titleicon+"</i>"),attrs.titlecolor&&(chartdata.title.style.color=attrs.titlecolor),attrs.titleimagetop&&(chartdata.title.style.marginTop=attrs.titleimagetop),attrs.titleimageleft&&(chartdata.title.style.marginLeft=attrs.titleimageleft)),"line"===attrs.t
ype&&(chartsDefaults.chart.marginTop=30,chartsDefaults.chart.spacingTop=50),"column"===attrs.type&&(chartsDefaults.chart.marginBottom=80),"area"===attrs.type&&(chartsDefaults.chart.spacingLeft=0,chartsDefaults.chart.spacingRight=0,chartsDefaults.chart.marginLeft=0,chartsDefaults.chart.marginRight=0),Highcharts.setOptions({global:{useUTC:!1},chart:{style:{fontFamily:"marquette-light, Helvetica, Arial, sans-serif"}}}),"line"===attrs.type){var xAxis1=chartdata.xAxis[0];xAxis1.labels.formatter||(xAxis1.labels.formatter=new Function(attrs.xaxislabel)),xAxis1.labels.step||(xAxis1.labels.step=attrs.xaxisstep)}chartdata.tooltip&&"string"==typeof chartdata.tooltip.formatter&&(chartdata.tooltip.formatter=new Function(chartdata.tooltip.formatter)),renderChart(chartsDefaults,chartdata)}},!0)}}}),AppServices.Services.factory("charts",function(){function sortJsonArrayByProperty(objArray,prop){if(arguments.length<2)throw new Error("sortJsonArrayByProp requires 2 arguments");var direct=arguments.le
ngth>2?arguments[2]:1;if(objArray&&objArray.constructor===Array){var propPath=prop.constructor===Array?prop:prop.split(".");objArray.sort(function(a,b){for(var p in propPath)a[propPath[p]]&&b[propPath[p]]&&(a=a[propPath[p]],b=b[propPath[p]]);return a=a.match(/^\d+$/)?+a:a,b=b.match(/^\d+$/)?+b:b,b>a?-1*direct:a>b?1*direct:0})}}var lineChart,areaChart,paretoChart,pieChart,xaxis,seriesIndex;return{convertLineChart:function(chartData,chartTemplate,dataDescription,settings,currentCompare){function plotData(counter,dPLength,dataPoints,dataAttrs,detailedView){for(var i=0;dPLength>i;i++)for(var dp=dataPoints[i],localCounter=counter,j=0;j<dataAttrs.length;j++)lineChart.series[localCounter].data.push("undefined"==typeof dp?[i,0]:[i,dp[dataAttrs[j]]]),detailedView||localCounter++}lineChart=chartTemplate,"undefined"==typeof chartData[0]&&(chartData[0]={},chartData[0].datapoints=[]);var label,dataPoints=chartData[0].datapoints,dPLength=dataPoints.length;"YESTERDAY"===currentCompare?(seriesIndex
=dataDescription.dataAttr.length,label="Yesterday "):"LAST_WEEK"===currentCompare?(seriesIndex=dataDescription.dataAttr.length,label="Last Week "):(lineChart=chartTemplate,seriesIndex=0,lineChart.series=[],label=""),xaxis=lineChart.xAxis[0],xaxis.categories=[],settings.xaxisformat&&(xaxis.labels.formatter=new Function(settings.xaxisformat)),settings.step&&(xaxis.labels.step=settings.step);for(var i=0;dPLength>i;i++){var dp=dataPoints[i];xaxis.categories.push(dp.timestamp)}if(chartData.length>1)for(var l=0;l<chartData.length;l++)chartData[l].chartGroupName&&(dataPoints=chartData[l].datapoints,lineChart.series[l]={},lineChart.series[l].data=[],lineChart.series[l].name=chartData[l].chartGroupName,lineChart.series[l].yAxis=0,lineChart.series[l].type="line",lineChart.series[l].color=dataDescription.colors[i],lineChart.series[l].dashStyle="solid",lineChart.series[l].yAxis.title.text=dataDescription.yAxisLabels,plotData(l,dPLength,dataPoints,dataDescription.detailDataAttr,!0));else{for(var
steadyCounter=0,i=seriesIndex;i<dataDescription.dataAttr.length+(seriesIndex>0?seriesIndex:0);i++){var yAxisIndex=dataDescription.multiAxis?steadyCounter:0;lineChart.series[i]={},lineChart.series[i].data=[],lineChart.series[i].name=label+dataDescription.labels[steadyCounter],lineChart.series[i].yAxis=yAxisIndex,lineChart.series[i].type="line",lineChart.series[i].color=dataDescription.colors[i],lineChart.series[i].dashStyle="solid",lineChart.yAxis[yAxisIndex].title.text=dataDescription.yAxisLabels[dataDescription.yAxisLabels>1?steadyCounter:0],steadyCounter++}plotData(seriesIndex,dPLength,dataPoints,dataDescription.dataAttr,!1)}return lineChart},convertAreaChart:function(chartData,chartTemplate,dataDescription,settings,currentCompare){function plotData(counter,dPLength,dataPoints,dataAttrs,detailedView){for(var i=0;dPLength>i;i++)for(var dp=dataPoints[i],localCounter=counter,j=0;j<dataAttrs.length;j++)areaChart.series[localCounter].data.push("undefined"==typeof dp?0:dp[dataAttrs[j]]
),detailedView||localCounter++}areaChart=angular.copy(areaChart),"undefined"==typeof chartData[0]&&(chartData[0]={},chartData[0].datapoints=[]);var label,dataPoints=chartData[0].datapoints,dPLength=dataPoints.length;"YESTERDAY"===currentCompare?(seriesIndex=dataDescription.dataAttr.length,label="Yesterday "):"LAST_WEEK"===currentCompare?(seriesIndex=dataDescription.dataAttr.length,label="Last Week "):(areaChart=chartTemplate,seriesIndex=0,areaChart.series=[],label=""),xaxis=areaChart.xAxis[0],xaxis.categories=[],settings.xaxisformat&&(xaxis.labels.formatter=new Function(settings.xaxisformat)),settings.step&&(xaxis.labels.step=settings.step);for(var i=0;dPLength>i;i++){var dp=dataPoints[i];xaxis.categories.push(dp.timestamp)}if(chartData.length>1)for(var l=0;l<chartData.length;l++)chartData[l].chartGroupName&&(dataPoints=chartData[l].datapoints,areaChart.series[l]={},areaChart.series[l].data=[],areaChart.series[l].fillColor=dataDescription.areaColors[l],areaChart.series[l].name=chart
Data[l].chartGroupName,areaChart.series[l].yAxis=0,areaChart.series[l].type="area",areaChart.series[l].pointInterval=1,areaChart.series[l].color=dataDescription.colors[l],areaChart.series[l].dashStyle="solid",areaChart.series[l].yAxis.title.text=dataDescription.yAxisLabels,plotData(l,dPLength,dataPoints,dataDescription.detailDataAttr,!0));else{for(var steadyCounter=0,i=seriesIndex;i<dataDescription.dataAttr.length+(seriesIndex>0?seriesIndex:0);i++){var yAxisIndex=dataDescription.multiAxis?steadyCounter:0;areaChart.series[i]={},areaChart.series[i].data=[],areaChart.series[i].fillColor=dataDescription.areaColors[i],areaChart.series[i].name=label+dataDescription.labels[steadyCounter],areaChart.series[i].yAxis=yAxisIndex,areaChart.series[i].type="area",areaChart.series[i].pointInterval=1,areaChart.series[i].color=dataDescription.colors[i],areaChart.series[i].dashStyle="solid",areaChart.yAxis[yAxisIndex].title.text=dataDescription.yAxisLabels[dataDescription.yAxisLabels>1?steadyCounter:0
],steadyCounter++}plotData(seriesIndex,dPLength,dataPoints,dataDescription.dataAttr,!1)}return areaChart},convertParetoChart:function(chartData,chartTemplate,dataDescription,settings,currentCompare){function getPreviousData(){for(var i=0;i<chartTemplate.series[0].data.length;i++)allParetoOptions.push(chartTemplate.xAxis.categories[i])}function createStackedBar(dataDescription,paretoChart){paretoChart.plotOptions={series:{shadow:!1,borderColor:dataDescription.borderColor,borderWidth:1},column:{stacking:"normal",dataLabels:{enabled:!0,color:Highcharts.theme&&Highcharts.theme.dataLabelsColor||"white"}}};var start=dataDescription.dataAttr[1].length,steadyCounter=0;compare&&(paretoChart.legend.enabled=!0);for(var f=seriesIndex;start+seriesIndex>f;f++)paretoChart.series[f]||(paretoChart.series[f]={data:[]}),paretoChart.series[f].data.push(bar[dataDescription.dataAttr[1][steadyCounter]]),paretoChart.series[f].name=""!==label?label+" "+dataDescription.labels[steadyCounter]:dataDescription.l
abels[steadyCounter],paretoChart.series[f].color=dataDescription.colors[f],paretoChart.series[f].stack=label,steadyCounter++}paretoChart=chartTemplate,"undefined"==typeof chartData&&(chartData=[]);var label,cdLength=chartData.length,compare=!1,allParetoOptions=[],stackedBar=!1;if(seriesIndex=0,"object"==typeof dataDescription.dataAttr[1]&&(stackedBar=!0),"YESTERDAY"===currentCompare?(label="Yesterday ",compare=!0,stackedBar&&(seriesIndex=dataDescription.dataAttr[1].length),getPreviousData()):"LAST_WEEK"===currentCompare?(label="Last Week ",compare=!0,stackedBar&&(seriesIndex=dataDescription.dataAttr[1].length),seriesIndex=getPreviousData()):(compare=!1,label="",paretoChart.xAxis.categories=[],paretoChart.series=[],paretoChart.series[0]={},paretoChart.series[0].data=[],paretoChart.legend.enabled=!1),paretoChart.plotOptions.series.borderColor=dataDescription.borderColor,compare&&!stackedBar){paretoChart.series[1]={},paretoChart.series[1].data=[];for(var i=0;i<allParetoOptions.length;i
++)paretoChart.series[1].data.push(0);paretoChart.legend.enabled=!0}for(var i=0;cdLength>i;i++){var bar=chartData[i];if(compare){var newLabel=bar[dataDescription.dataAttr[0]],newValue=bar[dataDescription.dataAttr[1]],previousIndex=allParetoOptions.indexOf(newLabel);previousIndex>-1&&("object"==typeof dataDescription.dataAttr[1]?createStackedBar(dataDescription,paretoChart,paretoChart.series.length):(paretoChart.series[1].data[previousIndex]=newValue,paretoChart.series[1].name=""!==label?label+" "+dataDescription.labels[0]:dataDescription.labels[0],paretoChart.series[1].color=dataDescription.colors[1]))}else paretoChart.xAxis.categories.push(bar[dataDescription.dataAttr[0]]),"object"==typeof dataDescription.dataAttr[1]?createStackedBar(dataDescription,paretoChart,paretoChart.series.length):(paretoChart.series[0].data.push(bar[dataDescription.dataAttr[1]]),paretoChart.series[0].name=dataDescription.labels[0],paretoChart.series[0].color=dataDescription.colors[0])}return paretoChart},co
nvertPieChart:function(chartData,chartTemplate,dataDescription,settings,currentCompare){var label,cdLength=chartData.length,compare=!1;pieChart=chartTemplate,"YESTERDAY"===currentCompare?(label="Yesterday ",compare=!1):"LAST_WEEK"===currentCompare?(label="Last Week ",compare=!1):(compare=!1,pieChart.series[0].data=[],pieChart.series[0].dataLabels&&"string"==typeof pieChart.series[0].dataLabels.formatter&&(pieChart.series[0].dataLabels.formatter=new Function(pieChart.series[0].dataLabels.formatter))),pieChart.plotOptions.pie.borderColor=dataDescription.borderColor,compare&&(pieChart.series[1].data=[],pieChart.series[1].dataLabels&&"string"==typeof pieChart.series[1].dataLabels.formatter&&(pieChart.series[1].dataLabels.formatter=new Function(pieChart.series[1].dataLabels.formatter)));for(var tempArray=[],i=0;cdLength>i;i++){var pie=chartData[i];tempArray.push({name:pie[dataDescription.dataAttr[0]],y:pie[dataDescription.dataAttr[1]],color:""})}sortJsonArrayByProperty(tempArray,"name");
for(var i=0;i<tempArray.length;i++)tempArray[i].color=dataDescription.colors[i];return compare?pieChart.series[1].data=tempArray:pieChart.series[0].data=tempArray,pieChart}}}),$(".sessions-bar").sparkline([3,5,6,3,4,5,6,7,8,4,3,5,6,3,4,5,6,7,8,4,3,5,6,3,4,5,6,7,8,4,3,5,6,3,4,5,6,7,8,4,3,5,6,3,4,5,6,7,8,4,3,5,6,3,4,5,6,7,8,1],{type:"bar",barColor:"#c5c5c5",width:"800px",height:100,barWidth:12,barSpacing:"1px"}),AppServices.Controllers.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={},$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.remove
FirstSlash($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,queryLimit):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("/"+collectionList[Object.keys(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(){$scope.newCollection.name=""}),$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("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(m
odalId)},$scope.newCollectionDialog=function(modalId){$scope.newCollection.name?(ug.createCollection($scope.newCollection.name),ug.getTopCollections(),$rootScope.$broadcast("alert","success","Collection created successfully."),$scope.hideModal(modalId)):$rootScope.$broadcast("alert","error","You must specify a collection name.")},$scope.addToPath=function(uuid){$scope.data.queryPath="/"+$rootScope.queryCollection._type+"/"+uuid},$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="n
one",$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.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.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){$rootScope.selectedEntity=$rootScope.queryCollection.getEntityByUUID(uuid),$scope.addToPath(uuid)},$scope.getJSONView=function(entity){var tem
pjson=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.con
troller("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.par
se(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",buttoni
d:"=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.")}}}}]),AppServices.Controllers.controller("AlertCtrl",["$scope","$rootScope","$timeout",function($scope,$rootScope,$timeout){$scope.alertDisplay="none",$scope.alerts=[],$scope.$on("alert",function(event,type,message,permanent){$scope.addAlert(type,message,permanent)}),$scope.$on("clear-alerts",function(){$scope.alerts=[]}),$sco
pe.addAlert=function(type,message,permanent){$scope.alertDisplay="block",$scope.alerts.push({type:type,msg:message}),$scope.applyScope(),permanent||$timeout(function(){$scope.alerts.shift()},5e3)},$scope.closeAlert=function(index){$scope.alerts.splice(index,1)}}]),AppServices.Directives.directive("alerti",["$rootScope","$timeout",function($rootScope,$timeout){return{restrict:"ECA",scope:{type:"=type",closeable:"@closeable",index:"&index"},template:'<div class="alert" ng-class="type && \'alert-\' + type"> <button ng-show="closeable" type="button" class="close" ng-click="closeAlert(index)">×</button> <i ng-if="type === \'warning\'" class="pictogram pull-left" style="font-size:3em;line-height:0.4">💥</i> <i ng-if="type === \'info\'" class="pictogram pull-left">ℹ</i> <i ng-if="type === \'error\'" class="pictogram pull-left">⚡</i> <i ng-if="type === \'success\'" class="pictogram pull-left">👍</i><div ng-transclude></div></div>',replace:!0,tr
ansclude:!0,link:function(scope,lElement,attrs){$timeout(function(){lElement.addClass("fade-out")},4e3),lElement.click(function(){attrs.index&&scope.$parent.closeAlert(attrs.index)}),setTimeout(function(){lElement.addClass("alert-animate")},10)}}}]),AppServices.Directives.directive("appswitcher",["$rootScope",function(){return{restrict:"ECA",scope:"=",templateUrl:"global/appswitcher-template.html",replace:!0,transclude:!0,link:function(){function globalNavDetail(){$("#globalNavDetail > div").removeClass(classNameOpen),$("#globalNavDetailApiPlatform").addClass(classNameOpen)}var classNameOpen="open";$("ul.nav li.dropdownContainingSubmenu").hover(function(){$(this).addClass(classNameOpen)},function(){$(this).removeClass(classNameOpen)}),$("#globalNav > a").mouseover(globalNavDetail),$("#globalNavDetail").mouseover(globalNavDetail),$("#globalNavSubmenuContainer ul li").mouseover(function(){$("#globalNavDetail > div").removeClass(classNameOpen),$("#"+this.getAttribute("data-globalNavDet
ail")).addClass(classNameOpen)})}}}]),AppServices.Services.factory("help",function($rootScope,$http,$analytics){$rootScope.help={},$rootScope.help.helpButtonStatus="Enable Help",$rootScope.help.helpTooltipsEnabled=!1,$rootScope.help.clicked=!1,$rootScope.help.showHelpButtons=!1;
var helpStartTime,introjs_step;$rootScope.help.sendTooltipGA=function(tooltipName){$analytics.eventTrack("tooltip - "+$rootScope.currentPath,{category:"App Services",label:tooltipName})},$rootScope.help.toggleTooltips=function(){0==$rootScope.help.helpTooltipsEnabled?($rootScope.help.helpButtonStatus="Disable Help",$rootScope.help.helpTooltipsEnabled=!0,showHelpModal("tooltips")):($rootScope.help.helpButtonStatus="Enable Help",$rootScope.help.helpTooltipsEnabled=!1)},$rootScope.help.IntroOptions={steps:[],showStepNumbers:!1,exitOnOverlayClick:!0,exitOnEsc:!0,nextLabel:"Next",prevLabel:"Back",skipLabel:"Exit",doneLabel:"Done"},$rootScope.$on("$routeChangeSuccess",function(event,current){var path=current.$$route?current.$$route.originalPath:null;"/org-overview"==path?($rootScope.help.showHelpButtons=!0,getHelpJson(path).success(function(json){var helpJson=json;setHelpStrings(helpJson),showHelpModal("tour")})):$rootScope.help.showHelpButtons=!1});var showHelpModal=function(helpType){va
r shouldHelp=location.search.indexOf("noHelp")<=0;"tour"!=helpType||getHelpStatus(helpType)?"tooltips"!=helpType||getHelpStatus(helpType)||shouldHelp&&$rootScope.showModal("tooltips"):shouldHelp&&$rootScope.showModal("introjs")},setHelpStrings=function(helpJson){$rootScope.help.IntroOptions.steps=helpJson.introjs,angular.forEach(helpJson.tooltip,function(value,binding){$rootScope[binding]=value})};$rootScope.help.introjs_StartEvent=function(){helpStartTime=Date.now(),introjs_step=1},$rootScope.help.introjs_ExitEvent=function(){var introjs_time=Math.round((Date.now()-helpStartTime)/1e3);$analytics.eventTrack("introjs timing - "+$rootScope.currentPath,{category:"App Services",label:introjs_time+"s"}),$analytics.eventTrack("introjs exit - "+$rootScope.currentPath,{category:"App Services",label:"step"+introjs_step})},$rootScope.help.introjs_ChangeEvent=function(){introjs_step++};var getHelpJson=function(path){return $http.jsonp("http://sdk.apigee.com.s3.amazonaws.com/portal_help"+path+"
/helpJson.json?callback=JSON_CALLBACK")},getHelpStatus=function(helpType){var status;return"tour"==helpType?(status=localStorage.getItem("ftu_tour"),localStorage.setItem("ftu_tour","false")):"tooltips"==helpType&&(status=localStorage.getItem("ftu_tooltips"),localStorage.setItem("ftu_tooltips","false")),status}}),AppServices.Directives.directive("insecureBanner",["$rootScope","ug",function($rootScope,ug){return{restrict:"E",transclude:!0,templateUrl:"global/insecure-banner.html",link:function(scope){scope.securityWarning=!1,scope.$on("roles-received",function(evt,roles){scope.securityWarning=!1,roles&&roles._list&&roles._list.forEach(function(roleHolder){var role=roleHolder._data;"GUEST"===role.name.toUpperCase()&&roleHolder.getPermissions(function(err){err||roleHolder.permissions&&roleHolder.permissions.forEach(function(permission){permission.path.indexOf("/**")>=0&&(scope.securityWarning=!0,scope.applyScope())})})})});var initialized=!1;scope.$on("app-initialized",function(){!initi
alized&&ug.getRoles(),initialized=!0}),scope.$on("app-changed",function(){scope.securityWarning=!1,ug.getRoles()})}}}]),AppServices.Constants.constant("configuration",{ITEMS_URL:"global/temp.json"}),AppServices.Controllers.controller("PageCtrl",["ug","help","utility","$scope","$rootScope","$location","$routeParams","$q","$route","$log","$analytics",function(ug,help,utility,$scope,$rootScope,$location,$routeParams,$q,$route,$log,$analytics){var initScopeVariables=function(){$scope.loadingText="Loading...",$scope.use_sso=!1,$scope.newApp={name:""},$scope.getPerm="",$scope.postPerm="",$scope.putPerm="",$scope.deletePerm="",$scope.usersTypeaheadValues=[],$scope.groupsTypeaheadValues=[],$scope.rolesTypeaheadValues=[],$rootScope.sdkActive=!1,$rootScope.demoData=!1,$scope.queryStringApplied=!1,$rootScope.autoUpdateTimer=Usergrid.config?Usergrid.config.autoUpdateTimer:61,$rootScope.requiresDeveloperKey=Usergrid.config?Usergrid.config.client.requiresDeveloperKey:!1,$rootScope.loaded=$rootSco
pe.activeUI=!1;for(var key in Usergrid.regex)$scope[key]=Usergrid.regex[key];$scope.options=Usergrid.options;var getQuery=function(){for(var m,result={},queryString=location.search.slice(1),re=/([^&=]+)=([^&]*)/g;m=re.exec(queryString);)result[decodeURIComponent(m[1])]=decodeURIComponent(m[2]);return result};$scope.queryString=getQuery()};initScopeVariables(),$rootScope.urls=function(){var urls=ug.getUrls();return $scope.apiUrl=urls.apiUrl,$scope.use_sso=urls.use_sso,urls},$rootScope.gotoPage=function(path){$location.path(path)};var notRegistration=function(){return"/forgot-password"!==$location.path()&&"/register"!==$location.path()},verifyUser=function(){"/login"!==$location.path().slice(0,"/login".length)&&($rootScope.currentPath=$location.path()),$routeParams.access_token&&$routeParams.admin_email&&$routeParams.uuid&&(ug.set("token",$routeParams.access_token),ug.set("email",$routeParams.admin_email),ug.set("uuid",$routeParams.uuid),$location.search("access_token",null),$location
.search("admin_email",null),$location.search("uuid",null)),ug.checkAuthentication(!0)};$scope.profile=function(){$scope.use_sso?window.location=$rootScope.urls().PROFILE_URL+"?callback="+encodeURIComponent($location.absUrl()):$location.path("/profile")},$rootScope.showModal=function(id){$("#"+id).modal("show")},$rootScope.hideModal=function(id){$("#"+id).modal("hide")},$scope.deleteEntities=function(collection,successBroadcast,errorMessage){collection.resetEntityPointer();for(var entitiesToDelete=[];collection.hasNextEntity();){var entity=collection.getNextEntity(),checked=entity.checked;checked&&entitiesToDelete.push(entity)}for(var count=0,success=!1,i=0;i<entitiesToDelete.length;i++){var entity=entitiesToDelete[i];collection.destroyEntity(entity,function(err){count++,err?($rootScope.$broadcast("alert","error",errorMessage),$rootScope.$broadcast(successBroadcast+"-error",err)):success=!0,count===entitiesToDelete.length&&(success&&$rootScope.$broadcast(successBroadcast),$scope.appl
yScope())})}},$scope.selectAllEntities=function(list,that,varName,setValue){varName=varName||"master";var val=that[varName];void 0==setValue&&(setValue=!0),setValue&&(that[varName]=val=!val),list.forEach(function(entitiy){entitiy.checked=val})},$scope.createPermission=function(type,entity,path,permissions){"/"!=path.charAt(0)&&(path="/"+path);var ops="",s="";permissions.getPerm&&(ops="get",s=","),permissions.postPerm&&(ops=ops+s+"post",s=","),permissions.putPerm&&(ops=ops+s+"put",s=","),permissions.deletePerm&&(ops=ops+s+"delete",s=",");var permission=ops+":"+path;return permission},$scope.formatDate=function(date){return new Date(date).toUTCString()},$scope.clearCheckbox=function(id){$("#"+id).attr("checked")&&$("#"+id).click()},$scope.removeFirstSlash=function(path){return 0===path.indexOf("/")?path.substring(1,path.length):path},$scope.applyScope=function(cb){return cb="function"==typeof cb?cb:function(){},this.$$phase?void cb():this.$apply(cb)},$scope.valueSelected=function(list
){return list&&list.some(function(item){return item.checked})},$scope.sendHelp=function(modalId){ug.jsonpRaw("apigeeuihelpemail","",{useremail:$rootScope.userEmail}).then(function(){$rootScope.$broadcast("alert","success","Email sent. Our team will be in touch with you shortly.")},function(){$rootScope.$broadcast("alert","error","Problem Sending Email. Try sending an email to mobile@apigee.com.")}),$scope.hideModal(modalId)},$scope.$on("users-typeahead-received",function(event,users){$scope.usersTypeaheadValues=users,$scope.$$phase||$scope.$apply()}),$scope.$on("groups-typeahead-received",function(event,groups){$scope.groupsTypeaheadValues=groups,$scope.$$phase||$scope.$apply()}),$scope.$on("roles-typeahead-received",function(event,roles){$scope.rolesTypeaheadValues=roles,$scope.$$phase||$scope.$apply()}),$scope.$on("checkAuthentication-success",function(){sessionStorage.setItem("authenticateAttempts",0),$scope.loaded=!0,$rootScope.activeUI=!0,$scope.applyScope(),$scope.queryStringA
pplied||($scope.queryStringApplied=!0,setTimeout(function(){$scope.queryString.org&&$rootScope.$broadcast("change-org",$scope.queryString.org)},1e3)),$rootScope.$broadcast("app-initialized")}),$scope.$on("checkAuthentication-error",function(args,err,missingData,email){if($scope.loaded=!0,err&&!$scope.use_sso&¬Registration())ug.logout(),$location.path("/login"),$scope.applyScope();else if(missingData&¬Registration()){if(!email&&$scope.use_sso)return void(window.location=$rootScope.urls().LOGIN_URL+"?callback="+encodeURIComponent($location.absUrl().split("?")[0]));ug.reAuthenticate(email)}}),$scope.$on("reAuthenticate-success",function(args,err,data,user,organizations,applications){sessionStorage.setItem("authenticateAttempts",0),$rootScope.$broadcast("loginSuccesful",user,organizations,applications),$rootScope.$emit("loginSuccesful",user,organizations,applications),$rootScope.$broadcast("checkAuthentication-success"),$scope.applyScope(function(){$scope.deferredLogin.resolve(),$
location.path("/org-overview")})});var authenticateAttempts=parseInt(sessionStorage.getItem("authenticateAttempts")||0);$scope.$on("reAuthenticate-error",function(){if($scope.use_sso){if(authenticateAttempts++>5)return void $rootScope.$broadcast("alert","error","There is an issue with authentication. Please contact support.");console.error("Failed to login via sso "+authenticateAttempts),sessionStorage.setItem("authenticateAttempts",authenticateAttempts),window.location=$rootScope.urls().LOGIN_URL+"?callback="+encodeURIComponent($location.absUrl().split("?")[0])}else notRegistration()&&(ug.logout(),$location.path("/login"),$scope.applyScope())}),$scope.$on("loginSuccessful",function(){$rootScope.activeUI=!0}),$scope.$on("app-changed",function(args,oldVal,newVal,preventReload){newVal===oldVal||preventReload||$route.reload()}),$scope.$on("org-changed",function(){ug.getApplications(),$route.reload()}),$scope.$on("app-settings-received",function(){}),$scope.$on("request-times-slow",func
tion(){$rootScope.$broadcast("alert","info","We are experiencing performance issues on our server. Please click Get Help for support if this continues.")});var lastPage="";$scope.$on("$routeChangeSuccess",function(){verifyUser(),$scope.showDemoBar="/performance"===$location.path().slice(0,"/performance".length),$scope.showDemoBar||($rootScope.demoData=!1),setTimeout(function(){lastPage=""},50);var path=window.location.pathname.replace("index-debug.html","");""===lastPage&&$analytics.pageTrack((path+$location.path()).replace("//","/")),lastPage=$location.path()}),$scope.$on("applications-received",function(event,applications){$scope.applications=applications,$scope.hasApplications=Object.keys(applications).length>0}),ug.getAppSettings(),$rootScope.startFirstTimeUser=function(){$rootScope.hideModal("introjs"),$rootScope.help.introjs_StartEvent(),$scope.startHelp()}}]),AppServices.Directives.directive("pageTitle",["$rootScope","ug",function($rootScope){return{restrict:"E",transclude:!
0,templateUrl:"global/page-title.html",link:function(scope,lElement,attrs){scope.title=attrs.title,scope.icon=attrs.icon,scope.showHelp=function(){$("#need-help").modal("show")},scope.sendHelp=function(){data.jsonp_raw("apigeeuihelpemail","",{useremail:$rootScope.userEmail}).then(function(){$rootScope.$broadcast("alert","success","Email sent. Our team will be in touch with you shortly.")},function(){$rootScope.$broadcast("alert","error","Problem Sending Email. Try sending an email to mobile@apigee.com.")}),$("#need-help").modal("hide")}}}}]),AppServices.Services.factory("ug",function(configuration,$rootScope,utility,$q,$http,$resource,$log,$analytics,$location){function reportError(data,config){try{$analytics.eventTrack("error",{category:"App Services",label:data+":"+config.url+":"+(sessionStorage.apigee_uuid||"na")})}catch(e){console.log(e)}}var requestTimes=[],running=!1,currentRequests={},getAccessToken=function(){return sessionStorage.getItem("accessToken")};return{get:function(
prop,isObject){return isObject?this.client().getObject(prop):this.client().get(prop)},set:function(prop,value){this.client().set(prop,value)},getUrls:function(){var host=$location.host(),qs=$location.search(),BASE_URL="",DATA_URL="",use_sso=!1;switch(!0){case"appservices.apigee.com"===host&&location.pathname.indexOf("/dit")>=0:BASE_URL="https://accounts.jupiter.apigee.net",DATA_URL="http://apigee-internal-prod.jupiter.apigee.net",use_sso=!0;break;case"appservices.apigee.com"===host&&location.pathname.indexOf("/mars")>=0:BASE_URL="https://accounts.mars.apigee.net",DATA_URL="http://apigee-internal-prod.mars.apigee.net",use_sso=!0;break;case"appservices.apigee.com"===host:DATA_URL=Usergrid.overrideUrl;break;case"apigee.com"===host:BASE_URL="https://accounts.apigee.com",DATA_URL="https://api.usergrid.com",use_sso=!0;break;case"usergrid.dev"===host:DATA_URL="https://api.usergrid.com";break;default:DATA_URL=Usergrid.overrideUrl}return DATA_URL=qs.api_url||DATA_URL,DATA_URL=DATA_URL.lastIn
dexOf("/")===DATA_URL.length-1?DATA_URL.substring(0,DATA_URL.length-1):DATA_URL,{DATA_URL:DATA_URL,LOGIN_URL:BASE_URL+"/accounts/sign_in",PROFILE_URL:BASE_URL+"/accounts/my_account",LOGOUT_URL:BASE_URL+"/accounts/sign_out",apiUrl:DATA_URL,use_sso:use_sso}},orgLogin:function(username,password){var self=this;this.client().set("email",username),this.client().set("token",null),this.client().orgLogin(username,password,function(err,data,user,organizations,applications){err?$rootScope.$broadcast("loginFailed",err,data):self.initializeCurrentUser(function(){$rootScope.$broadcast("loginSuccesful",user,organizations,applications)})})},checkAuthentication:function(force){var ug=this,client=ug.client(),initialize=function(){ug.initializeCurrentUser(function(){$rootScope.userEmail=client.get("email"),$rootScope.organizations=client.getObject("organizations"),$rootScope.applications=client.getObject("applications"),$rootScope.currentOrg=client.get("orgName"),$rootScope.currentApp=client.get("appN
ame");var key,size=0;for(key in $rootScope.applications)$rootScope.applications.hasOwnProperty(key)&&size++;$rootScope.$broadcast("checkAuthentication-success",client.getObject("organizations"),client.getObject("applications"),client.get("orgName"),client.get("appName"),client.get("email"))})},isAuthenticated=function(){var authenticated=null!==client.get("token")&&null!==client.get("organizations");return authenticated&&initialize(),authenticated};if(!isAuthenticated()||force){if(!client.get("token"))return $rootScope.$broadcast("checkAuthentication-error","no token",{},client.get("email"));this.client().reAuthenticateLite(function(err){var missingData=err||!client.get("orgName")||!client.get("appName")||!client.getObject("organizations")||!client.getObject("applications"),email=client.get("email");err||missingData?$rootScope.$broadcast("checkAuthentication-error",err,missingData,email):initialize()})}},reAuthenticate:function(email,eventOveride){var ug=this;this.client().reAuthent
icate(email,function(err,data,user,organizations,applications){err||($rootScope.currentUser=user),err||($rootScope.userEmail=user.get("email"),$rootScope.organizations=organizations,$rootScope.applications=applications,$rootScope.currentOrg=ug.get("orgName"),$rootScope.currentApp=ug.get("appName"),$rootScope.currentUser=user._data,$rootScope.currentUser.profileImg=utility.get_gravatar($rootScope.currentUser.email)),$rootScope.$broadcast((eventOveride||"reAuthenticate")+"-"+(err?"error":"success"),err,data,user,organizations,applications)})},logoutCallback:function(){$rootScope.$broadcast("userNotAuthenticated")},logout:function(){$rootScope.activeUI=!1,$rootScope.userEmail="user@apigee.com",$rootScope.organizations={noOrg:{name:"No Orgs Found"}},$rootScope.applications={noApp:{name:"No Apps Found"}},$rootScope.currentOrg="No Org Found",$rootScope.currentApp="No App Found",sessionStorage.setItem("accessToken",null),sessionStorage.setItem("userUUID",null),sessionStorage.setItem("userE
mail",null),this.client().logout(),this._client=null},client:function(){var options={buildCurl:!0,logging:!0};return Usergrid.options&&Usergrid.options.client&&(options.keys=Usergrid.options.client),this._client=this._client||new Usergrid.Client(options,$rootScope.urls().DATA_URL),this._client},setClientProperty:function(key,value){this.client().set(key,value)},getTopCollections:function(){var options={method:"GET",endpoint:""};this.client().request(options,function(err,data){if(err)$rootScope.$broadcast("alert","error","error getting collections");else{var collections=data.entities[0].metadata.collections;$rootScope.$broadcast("top-collections-received",collections)}})},createCollection:function(collectionName){var collections={};collections[collectionName]={};var metadata={metadata:{collections:collections}},options={method:"PUT",body:metadata,endpoint:""};this.client().request(options,function(err){err?$rootScope.$broadcast("alert","error","error creating collection"):$rootScope.
$broadcast("collection-created",collections)})},getApplications:function(){this.client().getApplications(function(err,applications){err?applications&&console.error(applications):$rootScope.$broadcast("applications-received",applications)})},getAdministrators:function(){this.client().getAdministrators(function(err,administrators){err&&$rootScope.$broadcast("alert","error","error getting administrators"),$rootScope.$broadcast("administrators-received",administrators)})},createApplication:function(appName){this.client().createApplication(appName,function(err,applications){err?$rootScope.$broadcast("alert","error","error creating application"):($rootScope.$broadcast("applications-created",applications,appName),$rootScope.$broadcast("applications-received",applications))})},createAdministrator:function(adminName){this.client().createAdministrator(adminName,function(err,administrators){err&&$rootScope.$broadcast("alert","error","error creating administrator"),$rootScope.$broadcast("admini
strators-received",administrators)})},getFeed:function(){var options={method:"GET",endpoint:"management/organizations/"+this.client().get("orgName")+"/feed",mQuery:!0};this.client().request(options,function(err,data){if(err)$rootScope.$broadcast("alert","error","error getting feed");else{var feedData=data.entities,feed=[],i=0;for(i=0;i<feedData.length;i++){var date=new Date(feedData[i].created).toUTCString(),title=feedData[i].title,n=title.indexOf(">");title=title.substring(n+1,title.length),n=title.indexOf(">"),title=title.substring(n+1,title.length),feedData[i].actor&&(title=feedData[i].actor.displayName+" "+title),feed.push({date:date,title:title})}0===i&&feed.push({date:"",title:"No Activities found."}),$rootScope.$broadcast("feed-received",feed)}})},createGroup:function(path,title){var options={path:path,title:title},self=this;this.groupsCollection.addEntity(options,function(err){err?$rootScope.$broadcast("groups-create-error",err):($rootScope.$broadcast("groups-create-success"
,self.groupsCollection),$rootScope.$broadcast("groups-received",self.groupsCollection))})},createRole:function(name,title){var options={name:name,title:title},self=this;this.rolesCollection.addEntity(options,function(err){err?$rootScope.$broadcast("alert","error","error creating role"):$rootScope.$broadcast("roles-received",self.rolesCollection)})},createUser:function(username,name,email,password){var options={username:username,name:name,email:email,password:password},self=this;this.usersCollection.addEntity(options,function(err,data){err?"string"==typeof data?$rootScope.$broadcast("alert","error","error: "+data):$rootScope.$broadcast("alert","error","error creating user. the email address might already exist."):($rootScope.$broadcast("users-create-success",self.usersCollection),$rootScope.$broadcast("users-received",self.usersCollection))})},getCollection:function(type,path,orderBy,query,limit){var options={type:path,qs:{}};query&&(options.qs.ql=query),options.qs.ql=options.qs.ql?o
ptions.qs.ql+" order by "+(orderBy||"created desc"):" order by "+(orderBy||"created desc"),limit&&(options.qs.limit=limit),this.client().createCollection(options,function(err,collection,data){err?$rootScope.$broadcast("alert","error","error getting "+collection._type+": "+data.error_description):$rootScope.$broadcast(type+"-received",collection),$rootScope.$$phase||$rootScope.$apply()})},runDataQuery:function(queryPath,searchString,queryLimit){this.getCollection("query",queryPath,null,searchString,queryLimit)},runDataPOSTQuery:function(queryPath,body){var self=this,options={method:"POST",endpoint:queryPath,body:body};this.client().request(options,function(err,data){if(err)$rootScope.$broadcast("alert","error","error: "+data.error_description),$rootScope.$broadcast("error-running-query",data);else{var queryPath=data.path;self.getCollection("query",queryPath,null,"order by modified DESC",null)}})},runDataPutQuery:function(queryPath,searchString,queryLimit,body){var self=this,options={
method:"PUT",endpoint:queryPath,body:body};searchString&&(options.qs.ql=searchString),queryLimit&&(options.qs.queryLimit=queryLimit),this.client().request(options,function(err,data){if(err)$rootScope.$broadcast("alert","error","error: "+data.error_description);else{var queryPath=data.path;self.getCollection("query",queryPath,null,"order by modified DESC",null)}})},runDataDeleteQuery:function(queryPath,searchString,queryLimit){var self=this,options={method:"DELETE",endpoint:queryPath};searchString&&(options.qs.ql=searchString),queryLimit&&(options.qs.queryLimit=queryLimit),this.client().request(options,function(err,data){if(err)$rootScope.$broadcast("alert","error","error: "+data.error_description);else{var queryPath=data.path;self.getCollection("query",queryPath,null,"order by modified DESC",null)}})},getUsers:function(){this.getCollection("users","users","username");var self=this;$rootScope.$on("users-received",function(evt,users){self.usersCollection=users})},getGroups:function(){
this.getCollection("groups","groups","title");var self=this;$rootScope.$on("groups-received",function(event,roles){self.groupsCollection=roles})},getRoles:function(){this.getCollection("roles","roles","name");var self=this;$rootScope.$on("roles-received",function(event,roles){self.rolesCollection=roles})},getNotifiers:function(){var query="",limit="100",self=this;this.getCollection("notifiers","notifiers","created",query,limit),$rootScope.$on("notifiers-received",function(event,notifiers){self.notifiersCollection=notifiers})},getNotificationHistory:function(type){var query=null;type&&(query="select * where state = '"+type+"'"),this.getCollection("notifications","notifications","created desc",query);var self=this;$rootScope.$on("notifications-received",function(event,notifications){self.notificationCollection=notifications})},getNotificationReceipts:function(uuid){this.getCollection("receipts","notifications/"+uuid+"/receipts");var self=this;$rootScope.$on("receipts-received",functio
n(event,receipts){self.receiptsCollection=receipts})},getIndexes:function(path){var options={method:"GET",endpoint:path.split("/").concat("indexes").filter(function(bit){return bit&&bit.length}).join("/")};this.client().request(options,function(err,data){err?$rootScope.$broadcast("alert","error","Problem getting indexes: "+data.error):$rootScope.$broadcast("indexes-received",data.data)})},sendNotification:function(path,body){var options={method:"POST",endpoint:path,body:body};this.client().request(options,function(err,data){err?$rootScope.$broadcast("alert","error","Problem creating notification: "+data.error):$rootScope.$broadcast("send-notification-complete")})},getRolesUsers:function(username){var options={type:"roles/users/"+username,qs:{ql:"order by username"}};this.client().createCollection(options,function(err,users){err?$rootScope.$broadcast("alert","error","error getting users"):$rootScope.$broadcast("users-received",users)})},getTypeAheadData:function(type,searchString,sea
rchBy,orderBy){var search="",qs={limit:100};searchString&&(search="select * where "+searchBy+" = '"+searchString+"'"),orderBy&&(search=search+" order by "+orderBy),search&&(qs.ql=search);var options={method:"GET",endpoint:type,qs:qs};this.client().request(options,function(err,data){if(err)$rootScope.$broadcast("alert","error","error getting "+type);else{var entities=data.entities;$rootScope.$broadcast(type+"-typeahead-received",entities)}})},getUsersTypeAhead:function(searchString){this.getTypeAheadData("users",searchString,"username","username")},getGroupsTypeAhead:function(searchString){this.getTypeAheadData("groups",searchString,"path","path")},getRolesTypeAhead:function(searchString){this.getTypeAheadData("roles",searchString,"name","name")},getGroupsForUser:function(user){var options={type:"users/"+user+"/groups"};this.client().createCollection(options,function(err,groups){err?$rootScope.$broadcast("alert","error","error getting groups"):$rootScope.$broadcast("user-groups-recei
ved",groups)})},addUserToGroup:function(user,group){var options={type:"users/"+user+"/groups/"+group};this.client().createEntity(options,function(err){err?$rootScope.$broadcast("alert","error","error adding user to group"):$rootScope.$broadcast("user-added-to-group-received")})},addUserToRole:function(user,role){var options={method:"POST",endpoint:"roles/"+role+"/users/"+user};this.client().request(options,function(err){err?$rootScope.$broadcast("alert","error","error adding user to role"):$rootScope.$broadcast("role-update-received")})},addGroupToRole:function(group,role){var options={method:"POST",endpoint:"roles/"+role+"/groups/"+group};this.client().request(options,function(err){err?$rootScope.$broadcast("alert","error","error adding group to role"):$rootScope.$broadcast("role-update-received")})},followUser:function(user){var username=$rootScope.selectedUser.get("uuid"),options={method:"POST",endpoint:"users/"+username+"/following/users/"+user};this.client().request(options,fun
ction(err){err?$rootScope.$broadcast("alert","error","error following user"):$rootScope.$broadcast("follow-user-received")})},newPermission:function(permission,type,entity){var options={method:"POST",endpoint:type+"/"+entity+"/permissions",body:{permission:permission}};this.client().request(options,function(err){err?$rootScope.$broadcast("alert","error","error adding permission"):$rootScope.$broadcast("permission-update-received")})},newUserPermission:function(permission,username){this.newPermission(permission,"users",username)},newGroupPermission:function(permission,path){this.newPermission(permission,"groups",path)},newRolePermission:function(permission,name){this.newPermission(permission,"roles",name)},deletePermission:function(permission,type,entity){var options={method:"DELETE",endpoint:type+"/"+entity+"/permissions",qs:{permission:permission}};this.client().request(options,function(err){err?$rootScope.$broadcast("alert","error","error deleting permission"):$rootScope.$broadcas
t("permission-update-received")})},deleteUserPermission:function(permission,user){this.deletePermission(permission,"users",user)},deleteGroupPermission:function(permission,group){this.deletePermission(permission,"groups",group)},deleteRolePermission:function(permission,rolename){this.deletePermission(permission,"roles",rolename)},removeUserFromRole:function(user,role){var options={method:"DELETE",endpoint:"roles/"+role+"/users/"+user};this.client().request(options,function(err){err?$rootScope.$broadcast("alert","error","error removing user from role"):$rootScope.$broadcast("role-update-received")})},removeUserFromGroup:function(group,role){var options={method:"DELETE",endpoint:"roles/"+role+"/groups/"+group};this.client().request(options,function(err){err?$rootScope.$broadcast("alert","error","error removing role from the group"):$rootScope.$broadcast("role-update-received")})},createAndroidNotifier:function(name,APIkey){var options={method:"POST",endpoint:"notifiers",body:{apiKey:A
PIkey,name:name,provider:"google"}};this.client().request(options,function(err,data){err?(console.error(data),$rootScope.$broadcast("alert","error","error creating notifier ")):($rootScope.$broadcast("alert","success","New notifier created successfully."),$rootScope.$broadcast("notifier-update"))})},createAppleNotifier:function(file,name,environment,certificatePassword){var provider="apple",formData=new FormData;formData.append("p12Certificate",file),formData.append("name",name),formData.append("provider",provider),formData.append("environment",environment),formData.append("certificatePassword",certificatePassword||"");var options={method:"POST",endpoint:"notifiers",formData:formData};this.client().request(options,function(err,data){err?(console.error(data),$rootScope.$broadcast("alert","error",data.error_description||"error creating notifier")):($rootScope.$broadcast("alert","success","New notifier created successfully."),$rootScope.$broadcast("notifier-update"))})},deleteNotifier:
function(name){var options={method:"DELETE",endpoint:"notifiers/"+name};this.client().request(options,function(err){err?$rootScope.$broadcast("alert","error","error deleting notifier"):$rootScope.$broadcast("notifier-update")})},initializeCurrentUser:function(callback){if(callback=callback||function(){},$rootScope.currentUser&&!$rootScope.currentUser.reset)return callback($rootScope.currentUser),$rootScope.$broadcast("current-user-initialized","");var options={method:"GET",endpoint:"management/users/"+this.client().get("email"),mQuery:!0};this.client().request(options,function(err,data){err?$rootScope.$broadcast("alert","error","Error getting user info"):($rootScope.currentUser=data.data,$rootScope.currentUser.profileImg=utility.get_gravatar($rootScope.currentUser.email),$rootScope.userEmail=$rootScope.currentUser.email,callback($rootScope.currentUser),$rootScope.$broadcast("current-user-initialized",$rootScope.currentUser))})},updateUser:function(user){var body=$rootScope.currentUs
er;body.username=user.username,body.name=user.name,body.email=user.email;var options={method:"PUT",endpoint:"management/users/"+user.uuid+"/",mQuery:!0,body:body},self=this;this.client().request(options,function(err,data){return self.client().set("email",user.email),self.client().set("username",user.username),err?$rootScope.$broadcast("user-update-error",data):($rootScope.currentUser.reset=!0,void self.initializeCurrentUser(function(){$rootScope.$broadcast("user-update-success",$rootScope.currentUser)}))})},resetUserPassword:function(user){var pwdata={};pwdata.oldpassword=user.oldPassword,pwdata.newpassword=user.newPassword,pwdata.username=user.username;var options={method:"PUT",endpoint:"users/"+pwdata.uuid+"/",body:pwdata};this.client().request(options,function(err){return err?$rootScope.$broadcast("alert","error","Error resetting password"):($rootScope.currentUser.oldPassword="",$rootScope.currentUser.newPassword="",void $rootScope.$broadcast("user-reset-password-success",$rootSc
ope.currentUser))})},getOrgCredentials:function(){var options={method:"GET",endpoint:"management/organizations/"+this.client().get("orgName")+"/credentials",mQuery:!0};this.client().request(options,function(err,data){err&&data.credentials?$rootScope.$broadcast("alert","error","Error getting credentials"):$rootScope.$broadcast("org-creds-updated",data.credentials)})},regenerateOrgCredentials:function(){var options={method:"POST",endpoint:"management/organizations/"+this.client().get("orgName")+"/credentials",mQuery:!0};this.client().request(options,function(err,data){err&&data.credentials?$rootScope.$broadcast("alert","error","Error regenerating credentials"):($rootScope.$broadcast("alert","success","Regeneration of credentials complete."),$rootScope.$broadcast("org-creds-updated",data.credentials))})},getAppCredentials:function(){var options={method:"GET",endpoint:"credentials"};this.client().request(options,function(err,data){err&&data.credentials?$rootScope.$broadcast("alert","err
or","Error getting credentials"):$rootScope.$broadcast("app-creds-updated",data.credentials)})},regenerateAppCredentials:function(){var options={method:"POST",endpoint:"credentials"};
this.client().request(options,function(err,data){err&&data.credentials?$rootScope.$broadcast("alert","error","Error regenerating credentials"):($rootScope.$broadcast("alert","success","Regeneration of credentials complete."),$rootScope.$broadcast("app-creds-updated",data.credentials))})},signUpUser:function(orgName,userName,name,email,password){var formData={organization:orgName,username:userName,name:name,email:email,password:password},options={method:"POST",endpoint:"management/organizations",body:formData,mQuery:!0},client=this.client();client.request(options,function(err,data){err?$rootScope.$broadcast("register-error",data):$rootScope.$broadcast("register-success",data)})},resendActivationLink:function(id){var options={method:"GET",endpoint:"management/users/"+id+"/reactivate",mQuery:!0};this.client().request(options,function(err,data){err?$rootScope.$broadcast("resend-activate-error",data):$rootScope.$broadcast("resend-activate-success",data)})},getAppSettings:function(){$root
Scope.$broadcast("app-settings-received",{})},getActivities:function(){this.client().request({method:"GET",endpoint:"activities",qs:{limit:200}},function(err,data){if(err)return $rootScope.$broadcast("app-activities-error",data);var entities=data.entities;entities.forEach(function(entity){entity.actor.picture?(entity.actor.picture=entity.actor.picture.replace(/^http:\/\/www.gravatar/i,"https://secure.gravatar"),entity.actor.picture=~entity.actor.picture.indexOf("http")?entity.actor.picture:"https://apigee.com/usergrid/img/user_profile.png"):entity.actor.picture=window.location.protocol+"//"+window.location.host+window.location.pathname+"img/user_profile.png"}),$rootScope.$broadcast("app-activities-received",data.entities)})},getEntityActivities:function(entity,isFeed){var route=isFeed?"feed":"activities",endpoint=entity.get("type")+"/"+entity.get("uuid")+"/"+route,options={method:"GET",endpoint:endpoint,qs:{limit:200}};this.client().request(options,function(err,data){err&&$rootScope
.$broadcast(entity.get("type")+"-"+route+"-error",data),data.entities.forEach(function(entityInstance){entityInstance.createdDate=new Date(entityInstance.created).toUTCString()}),$rootScope.$broadcast(entity.get("type")+"-"+route+"-received",data.entities)})},addUserActivity:function(user,content){var options={actor:{displayName:user.get("username"),uuid:user.get("uuid"),username:user.get("username")},verb:"post",content:content};this.client().createUserActivity(user.get("username"),options,function(err,activity){err?$rootScope.$broadcast("user-activity-add-error",err):$rootScope.$broadcast("user-activity-add-success",activity)})},runShellQuery:function(method,path,payload){var path=path.replace(/^\//,""),options={method:method,endpoint:path};payload&&(options.body=payload),this.client().request(options,function(err,data){err?$rootScope.$broadcast("shell-error",data):$rootScope.$broadcast("shell-success",data)})},addOrganization:function(user,orgName){var options={method:"POST",endp
oint:"management/users/"+user.uuid+"/organizations",body:{organization:orgName},mQuery:!0},client=this.client();client.request(options,function(err,data){err?$rootScope.$broadcast("user-add-org-error",data):$rootScope.$broadcast("user-add-org-success",$rootScope.organizations)})},leaveOrganization:function(user,org){var options={method:"DELETE",endpoint:"management/users/"+user.uuid+"/organizations/"+org.uuid,mQuery:!0};this.client().request(options,function(err,data){err?$rootScope.$broadcast("user-leave-org-error",data):(delete $rootScope.organizations[org.name],$rootScope.$broadcast("user-leave-org-success",$rootScope.organizations))})},httpGet:function(id,url){var deferred;return deferred=$q.defer(),$http.get(url||configuration.ITEMS_URL).success(function(data){var result;id?angular.forEach(data,function(obj){obj.id===id&&(result=obj)}):result=data,deferred.resolve(result)}).error(function(data,status,headers,config){$log.error(data,status,headers,config),reportError(data,config
),deferred.reject(data)}),deferred.promise},jsonp:function(objectType,criteriaId,params,successCallback){params||(params={}),params.demoApp=$rootScope.demoData,params.access_token=getAccessToken(),params.callback="JSON_CALLBACK";var uri=$rootScope.urls().DATA_URL+"/"+$rootScope.currentOrg+"/"+$rootScope.currentApp+"/apm/"+objectType+"/"+criteriaId;return this.jsonpRaw(objectType,criteriaId,params,uri,successCallback)},jsonpSimple:function(objectType,appId,params){var uri=$rootScope.urls().DATA_URL+"/"+$rootScope.currentOrg+"/"+$rootScope.currentApp+"/apm/"+objectType+"/"+appId;return this.jsonpRaw(objectType,appId,params,uri)},calculateAverageRequestTimes:function(){if(!running){var self=this;running=!0,setTimeout(function(){running=!1;var length=requestTimes.length<10?requestTimes.length:10,sum=requestTimes.slice(0,length).reduce(function(a,b){return a+b}),avg=sum/length;self.averageRequestTimes=avg/1e3,self.averageRequestTimes>5&&$rootScope.$broadcast("request-times-slow",self.ave
rageRequestTimes)},3e3)}},jsonpRaw:function(objectType,appId,params,uri,successCallback){"function"!=typeof successCallback&&(successCallback=null),uri=uri||$rootScope.urls().DATA_URL+"/"+$rootScope.currentOrg+"/"+$rootScope.currentApp+"/"+objectType,params||(params={});var start=(new Date).getTime(),self=this;params.access_token=getAccessToken(),params.callback="JSON_CALLBACK";var deferred=$q.defer(),diff=function(){currentRequests[uri]--,requestTimes.splice(0,0,(new Date).getTime()-start),self.calculateAverageRequestTimes()};successCallback&&$rootScope.$broadcast("ajax_loading",objectType);var reqCount=currentRequests[uri]||0;return self.averageRequestTimes>5&&reqCount>1?(setTimeout(function(){deferred.reject(new Error("query in progress"))},50),deferred):(currentRequests[uri]=(currentRequests[uri]||0)+1,$http.jsonp(uri,{params:params}).success(function(data,status,headers,config){diff(),successCallback&&(successCallback(data,status,headers,config),$rootScope.$broadcast("ajax_fini
shed",objectType)),deferred.resolve(data)}).error(function(data,status,headers,config){diff(),$log.error("ERROR: Could not get jsonp data. "+uri),reportError(data,config),deferred.reject(data)}),deferred.promise)},resource:function(params,isArray){return $resource($rootScope.urls().DATA_URL+"/:orgname/:appname/:username/:endpoint",{},{get:{method:"JSONP",isArray:isArray,params:params},login:{method:"GET",url:$rootScope.urls().DATA_URL+"/management/token",isArray:!1,params:params},save:{url:$rootScope.urls().DATA_URL+"/"+params.orgname+"/"+params.appname,method:"PUT",isArray:!1,params:params}})},httpPost:function(url,callback,payload,headers){var accessToken=getAccessToken();payload?payload.access_token=accessToken:payload={access_token:accessToken},headers||(headers={Bearer:accessToken}),$http({method:"POST",url:url,data:payload,headers:headers}).success(function(data){callback(data)}).error(function(data,status,headers,config){reportError(data,config),callback(data)})}}}),AppServic
es.Directives.directive("ngFocus",["$parse",function($parse){return function(scope,element,attr){var fn=$parse(attr.ngFocus);element.bind("focus",function(event){scope.$apply(function(){fn(scope,{$event:event})})})}}]),AppServices.Directives.directive("ngBlur",["$parse",function($parse){return function(scope,element,attr){var fn=$parse(attr.ngBlur);element.bind("blur",function(event){scope.$apply(function(){fn(scope,{$event:event})})})}}]),AppServices.Services.factory("utility",function(){return{keys:function(o){var a=[];for(var propertyName in o)a.push(propertyName);return a},get_gravatar:function(email,size){try{var size=size||50;return email.length?"https://secure.gravatar.com/avatar/"+MD5(email)+"?s="+size:"https://apigee.com/usergrid/img/user_profile.png"}catch(e){return"https://apigee.com/usergrid/img/user_profile.png"}},get_qs_params:function(){var queryParams={};if(window.location.search)for(var params=window.location.search.slice(1).split("&"),i=0;i<params.length;i++){var t
mp=params[i].split("=");queryParams[tmp[0]]=unescape(tmp[1])}return queryParams},safeApply:function(fn){var phase=this.$root.$$phase;"$apply"==phase||"$digest"==phase?fn&&"function"==typeof fn&&fn():this.$apply(fn)}}}),AppServices.Directives.directive("ugValidate",["$rootScope",function(){return{scope:!0,restrict:"A",require:"ng-model",replace:!0,link:function(scope,element,attrs,ctrl){var validate=function(){var id=element.attr("id"),validator=id+"-validator",title=element.attr("title");if(title=title&&title.length?title:"Please enter data",$("#"+validator).remove(),ctrl.$valid)element.removeClass("has-error"),$("#"+validator).remove();else{var validatorElem='<div id="'+validator+'"><span class="validator-error-message">'+title+"</span></div>";$("#"+id).after(validatorElem),element.addClass("has-error")}},firing=!1;element.bind("blur",function(){validate(scope,element,attrs,ctrl)}).bind("input",function(){firing||(firing=!0,setTimeout(function(){validate(scope,element,attrs,ctrl),
firing=!1},500))})}}}]),AppServices.Controllers.controller("GroupsActivitiesCtrl",["ug","$scope","$rootScope","$location",function(ug,$scope,$rootScope,$location){return $scope.activitiesSelected="active",$rootScope.selectedGroup?($rootScope.selectedGroup.activities=[],void $rootScope.selectedGroup.getActivities(function(err){err||$rootScope.$$phase||$rootScope.$apply()})):void $location.path("/groups")}]),AppServices.Controllers.controller("GroupsCtrl",["ug","$scope","$rootScope","$location","$route",function(ug,$scope,$rootScope,$location,$route){$scope.groupsCollection={},$rootScope.selectedGroup={},$scope.previous_display="none",$scope.next_display="none",$scope.hasGroups=!1,$scope.newGroup={path:"",title:""},ug.getGroups(),$scope.currentGroupsPage={},$scope.selectGroupPage=function(route){$scope.currentGroupsPage.template=$route.routes[route].templateUrl,$scope.currentGroupsPage.route=route},$scope.newGroupDialog=function(modalId){$scope.newGroup.path&&$scope.newGroup.title?(ug
.createGroup($scope.removeFirstSlash($scope.newGroup.path),$scope.newGroup.title),$scope.hideModal(modalId),$scope.newGroup={path:"",title:""}):$rootScope.$broadcast("alert","error","Missing required information.")},$scope.deleteGroupsDialog=function(modalId){$scope.deleteEntities($scope.groupsCollection,"group-deleted","error deleting group"),$scope.hideModal(modalId),$scope.newGroup={path:"",title:""}},$scope.$on("group-deleted",function(){$rootScope.$broadcast("alert","success","Group deleted successfully.")}),$scope.$on("group-deleted-error",function(){ug.getGroups()}),$scope.$on("groups-create-success",function(){$rootScope.$broadcast("alert","success","Group created successfully.")}),$scope.$on("groups-create-error",function(){$rootScope.$broadcast("alert","error","Error creating group. Make sure you don't have spaces in the path.")}),$scope.$on("groups-received",function(event,groups){$scope.groupBoxesSelected=!1,$scope.groupsCollection=groups,$scope.newGroup.path="",$scope.n
ewGroup.title="",!(groups._list.length>0)||$rootScope.selectedGroup._data&&groups._list.some(function(group){return $rootScope.selectedGroup._data.uuid===group._data.uuid})||$scope.selectGroup(groups._list[0]._data.uuid),$scope.hasGroups=groups._list.length>0,$scope.received=!0,$scope.checkNextPrev(),$scope.applyScope()}),$scope.resetNextPrev=function(){$scope.previous_display="none",$scope.next_display="none"},$scope.checkNextPrev=function(){$scope.resetNextPrev(),$scope.groupsCollection.hasPreviousPage()&&($scope.previous_display="block"),$scope.groupsCollection.hasNextPage()&&($scope.next_display="block")},$scope.selectGroup=function(uuid){$rootScope.selectedGroup=$scope.groupsCollection.getEntityByUUID(uuid),$scope.currentGroupsPage.template="groups/groups-details.html",$scope.currentGroupsPage.route="/groups/details",$rootScope.$broadcast("group-selection-changed",$rootScope.selectedGroup)},$scope.getPrevious=function(){$scope.groupsCollection.getPreviousPage(function(err){err&
&$rootScope.$broadcast("alert","error","error getting previous page of groups"),$scope.checkNextPrev(),$scope.applyScope()})},$scope.getNext=function(){$scope.groupsCollection.getNextPage(function(err){err&&$rootScope.$broadcast("alert","error","error getting next page of groups"),$scope.checkNextPrev(),$scope.applyScope()})},$scope.$on("group-deleted",function(){$route.reload(),$scope.master=""})}]),AppServices.Controllers.controller("GroupsDetailsCtrl",["ug","$scope","$rootScope","$location",function(ug,$scope,$rootScope,$location){var selectedGroup=$rootScope.selectedGroup.clone();return $scope.detailsSelected="active",$scope.json=selectedGroup._json||selectedGroup._data.stringifyJSON(),$scope.group=selectedGroup._data,$scope.group.path=0!=$scope.group.path.indexOf("/")?"/"+$scope.group.path:$scope.group.path,$scope.group.title=$scope.group.title,$rootScope.selectedGroup?($scope.$on("group-selection-changed",function(evt,selectedGroup){$scope.group.path=0!=selectedGroup._data.pat
h.indexOf("/")?"/"+selectedGroup._data.path:selectedGroup._data.path,$scope.group.title=selectedGroup._data.title,$scope.detailsSelected="active",$scope.json=selectedGroup._json||selectedGroup._data.stringifyJSON()}),void($rootScope.saveSelectedGroup=function(){$rootScope.selectedGroup._data.title=$scope.group.title,$rootScope.selectedGroup._data.path=$scope.removeFirstSlash($scope.group.path),$rootScope.selectedGroup.save(function(err){err?$rootScope.$broadcast("alert","error","error saving group"):$rootScope.$broadcast("alert","success","group saved")})})):void $location.path("/groups")}]),AppServices.Controllers.controller("GroupsMembersCtrl",["ug","$scope","$rootScope","$location",function(ug,$scope,$rootScope,$location){return $scope.membersSelected="active",$scope.previous_display="none",$scope.next_display="none",$scope.user="",$scope.master="",$scope.hasMembers=!1,ug.getUsersTypeAhead(),$scope.usersTypeaheadValues=[],$scope.$on("users-typeahead-received",function(event,users
){$scope.usersTypeaheadValues=users,$scope.applyScope()}),$scope.addGroupToUserDialog=function(modalId){if($scope.user){var path=$rootScope.selectedGroup.get("path");ug.addUserToGroup($scope.user.uuid,path),$scope.user="",$scope.hideModal(modalId)}else $rootScope.$broadcast("alert","error","Please select a user.")},$scope.removeUsersFromGroupDialog=function(modalId){$scope.deleteEntities($scope.groupsCollection.users,"group-update-received","Error removing user from group"),$scope.hideModal(modalId)},$scope.get=function(){if($rootScope.selectedGroup.get){var options={type:"groups/"+$rootScope.selectedGroup.get("path")+"/users"};$scope.groupsCollection.addCollection("users",options,function(err){$scope.groupMembersSelected=!1,err?$rootScope.$broadcast("alert","error","error getting users for group"):($scope.hasMembers=$scope.groupsCollection.users._list.length>0,$scope.checkNextPrev(),$scope.applyScope())})}},$scope.resetNextPrev=function(){$scope.previous_display="none",$scope.next_
display="none"},$scope.checkNextPrev=function(){$scope.resetNextPrev(),$scope.groupsCollection.users.hasPreviousPage()&&($scope.previous_display="block"),$scope.groupsCollection.users.hasNextPage()&&($scope.next_display="block")},$rootScope.selectedGroup?($scope.get(),$scope.getPrevious=function(){$scope.groupsCollection.users.getPreviousPage(function(err){err&&$rootScope.$broadcast("alert","error","error getting previous page of users"),$scope.checkNextPrev(),$rootScope.$$phase||$rootScope.$apply()})},$scope.getNext=function(){$scope.groupsCollection.users.getNextPage(function(err){err&&$rootScope.$broadcast("alert","error","error getting next page of users"),$scope.checkNextPrev(),$rootScope.$$phase||$rootScope.$apply()})},$scope.$on("group-update-received",function(){$scope.get()}),void $scope.$on("user-added-to-group-received",function(){$scope.get()})):void $location.path("/groups")}]),AppServices.Controllers.controller("GroupsRolesCtrl",["ug","$scope","$rootScope","$location",
function(ug,$scope,$rootScope,$location){return $scope.rolesSelected="active",$scope.roles_previous_display="none",$scope.roles_next_display="none",$scope.name="",$scope.master="",$scope.hasRoles=!1,$scope.hasPermissions=!1,$scope.permissions={},$scope.addGroupToRoleDialog=function(modalId){if($scope.name){var path=$rootScope.selectedGroup.get("path");ug.addGroupToRole(path,$scope.name),$scope.hideModal(modalId),$scope.name=""}else $rootScope.$broadcast("alert","error","You must specify a role name.")},$scope.leaveRoleDialog=function(modalId){for(var path=$rootScope.selectedGroup.get("path"),roles=$scope.groupsCollection.roles._list,i=0;i<roles.length;i++)roles[i].checked&&ug.removeUserFromGroup(path,roles[i]._data.name);$scope.hideModal(modalId)},$scope.addGroupPermissionDialog=function(modalId){if($scope.permissions.path){var permission=$scope.createPermission(null,null,$scope.removeFirstSlash($scope.permissions.path),$scope.permissions),path=$rootScope.selectedGroup.get("path");u
g.newGroupPermission(permission,path),$scope.hideModal(modalId),$scope.permissions&&($scope.permissions={})}else $rootScope.$broadcast("alert","error","You must specify a name for the permission.")},$scope.deleteGroupPermissionDialog=function(modalId){for(var path=$rootScope.selectedGroup.get("path"),permissions=$rootScope.selectedGroup.permissions,i=0;i<permissions.length;i++)permissions[i].checked&&ug.deleteGroupPermission(permissions[i].perm,path);$scope.hideModal(modalId)},$scope.resetNextPrev=function(){$scope.roles_previous_display="none",$scope.roles_next_display="none",$scope.permissions_previous_display="none",$scope.permissions_next_display="none"},$scope.resetNextPrev(),$scope.checkNextPrevRoles=function(){$scope.resetNextPrev(),$scope.groupsCollection.roles.hasPreviousPage()&&($scope.roles_previous_display="block"),$scope.groupsCollection.roles.hasNextPage()&&($scope.roles_next_display="block")},$scope.checkNextPrevPermissions=function(){$scope.groupsCollection.permissio
ns.hasPreviousPage()&&($scope.permissions_previous_display="block"),$scope.groupsCollection.permissions.hasNextPage()&&($scope.permissions_next_display="block")},$scope.getRoles=function(){var path=$rootScope.selectedGroup.get("path"),options={type:"groups/"+path+"/roles"};$scope.groupsCollection.addCollection("roles",options,function(err){$scope.groupRoleSelected=!1,err?$rootScope.$broadcast("alert","error","error getting roles for group"):($scope.hasRoles=$scope.groupsCollection.roles._list.length>0,$scope.checkNextPrevRoles(),$scope.applyScope())})},$scope.getPermissions=function(){$rootScope.selectedGroup.permissions=[],$rootScope.selectedGroup.getPermissions(function(err){$scope.groupPermissionsSelected=!1,$scope.hasPermissions=$scope.selectedGroup.permissions.length,err||$scope.applyScope()})},$scope.getPreviousRoles=function(){$scope.groupsCollection.roles.getPreviousPage(function(err){err&&$rootScope.$broadcast("alert","error","error getting previous page of roles"),$scope.c
heckNextPrevRoles(),$scope.applyScope()})},$scope.getNextRoles=function(){$scope.groupsCollection.roles.getNextPage(function(err){err&&$rootScope.$broadcast("alert","error","error getting next page of roles"),$scope.checkNextPrevRoles(),$scope.applyScope()})},$scope.getPreviousPermissions=function(){$scope.groupsCollection.permissions.getPreviousPage(function(err){err&&$rootScope.$broadcast("alert","error","error getting previous page of permissions"),$scope.checkNextPrevPermissions(),$scope.applyScope()})},$scope.getNextPermissions=function(){$scope.groupsCollection.permissions.getNextPage(function(err){err&&$rootScope.$broadcast("alert","error","error getting next page of permissions"),$scope.checkNextPrevPermissions(),$scope.applyScope()})},$scope.$on("role-update-received",function(){$scope.getRoles()}),$scope.$on("permission-update-received",function(){$scope.getPermissions()}),$scope.$on("groups-received",function(evt,data){$scope.groupsCollection=data,$scope.getRoles(),$scope
.getPermissions()}),$rootScope.selectedGroup?(ug.getRolesTypeAhead(),void ug.getGroups()):void $location.path("/groups")}]),AppServices.Controllers.controller("ForgotPasswordCtrl",["ug","$scope","$rootScope","$location","$sce","utility",function(ug,$scope,$rootScope,$location,$sce){$rootScope.activeUI&&$location.path("/"),$scope.forgotPWiframeURL=$sce.trustAsResourceUrl($scope.apiUrl+"/management/users/resetpw")}]),AppServices.Controllers.controller("LoginCtrl",["ug","$scope","$rootScope","$routeParams","$location","utility",function(ug,$scope,$rootScope,$routeParams,$location){$scope.loading=!1,$scope.login={},$scope.activation={},$scope.requiresDeveloperKey=$scope.options.client.requiresDeveloperKey||!1,!$scope.requiresDeveloperKey&&$scope.options.client.apiKey&&ug.setClientProperty("developerkey",$scope.options.client.apiKey),$rootScope.gotoForgotPasswordPage=function(){$location.path("/forgot-password")},$rootScope.gotoSignUp=function(){$location.path("/register")},$scope.login=
function(){var username=$scope.login.username,password=$scope.login.password;$scope.loginMessage="",$scope.loading=!0,$scope.requiresDeveloperKey&&ug.setClientProperty("developerkey",$scope.login.developerkey),ug.orgLogin(username,password)},$scope.$on("loginFailed",function(){$scope.loading=!1,ug.setClientProperty("developerkey",null),$scope.loginMessage="Error: the username / password combination was not valid",$scope.applyScope()}),$scope.logout=function(){ug.logout(),ug.setClientProperty("developerkey",null),$scope.use_sso?window.location=$rootScope.urls().LOGOUT_URL+"?redirect=no&callback="+encodeURIComponent($location.absUrl().split("?")[0]):($location.path("/login"),$scope.applyScope())},$rootScope.$on("userNotAuthenticated",function(){"/forgot-password"!==$location.path()&&($location.path("/login"),$scope.logout()),$scope.applyScope()}),$scope.$on("loginSuccesful",function(){$scope.loading=!1,$scope.login={},$location.path("/login"===$rootScope.currentPath||"/login/loading"=
==$rootScope.currentPath||"undefined"==typeof $rootScope.currentPath?"/org-overview":$rootScope.currentPath),$scope.applyScope()}),$scope.resendActivationLink=function(modalId){var id=$scope.activation.id;ug.resendActivationLink(id),$scope.activation={},$scope.hideModal(modalId)},$scope.$on("resend-activate-success",function(){$scope.activationId="",$scope.$apply(),$rootScope.$broadcast("alert","success","Activation link sent successfully.")}),$scope.$on("resend-activate-error",function(){$rootScope.$broadcast("alert","error","Activation link failed to send.")})}]),AppServices.Controllers.controller("LogoutCtrl",["ug","$scope","$rootScope","$routeParams","$location","utility",function(ug,$scope,$rootScope,$routeParams,$location){ug.logout(),$scope.use_sso?window.location=$rootScope.urls().LOGOUT_URL+"?callback="+encodeURIComponent($location.absUrl().split("?")[0]):($location.path("/login"),$scope.applyScope())}]),AppServices.Controllers.controller("RegisterCtrl",["ug","$scope","$roo
tScope","$routeParams","$location","utility",function(ug,$scope,$rootScope,$routeParams,$location){$rootScope.activeUI&&$location.path("/");var init=function(){$scope.registeredUser={}};init(),$scope.cancel=function(){$location.path("/")},$scope.register=function(){var user=$scope.registeredUser.clone();user.password===user.confirmPassword?ug.signUpUser(user.orgName,user.userName,user.name,user.email,user.password):$rootScope.$broadcast("alert","error","Passwords do not match."+name)},$scope.$on("register-error",function(event,data){$scope.signUpSuccess=!1,$rootScope.$broadcast("alert","error","Error registering: "+(data&&data.error_description?data.error_description:name))}),$scope.$on("register-success",function(){$scope.registeredUser={},$scope.signUpSuccess=!0,init(),$scope.$apply()})}]),AppServices.Directives.directive("menu",["$location","$rootScope","$log",function($location,$rootScope,$log){return{link:function(scope,lElement,attrs){function setActiveElement(ele,locationPath
,$rootScope,isParentClick){ele.removeClass("active");var menuItem,parentMenuItem,newActiveElement=ele.parent().find('a[href*="#!'+locationPath+'"]');if(0===newActiveElement.length)parentMenuItem=ele;else{menuItem=newActiveElement.parent(),menuItem.hasClass("option")?parentMenuItem=menuItem[0]:1===menuItem.size()?(parentMenuItem=newActiveElement.parent().parent().parent(),parentMenuItem.addClass("active")):(parentMenuItem=menuItem[0],menuItem=menuItem[1]);try{var menuItemCompare=parentMenuItem[0]||parentMenuItem;ele[0]!==menuItemCompare&&isParentClick&&ele.find("ul")[0]&&(ele.find("ul")[0].style.height=0);var subMenuSizer=angular.element(parentMenuItem).find(".nav-list")[0];if(subMenuSizer){var heightChecker,clientHeight=subMenuSizer.getAttribute("data-height"),heightCounter=1;clientHeight||heightChecker?(menuItem.addClass("active"),subMenuSizer.style.height=c
<TRUNCATED>
[3/9] merging upstream
Posted by sn...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/09611d5b/portal/js/usergrid-dev.min.js
----------------------------------------------------------------------
diff --cc portal/js/usergrid-dev.min.js
index 87fd017,af849c2..0e96767
--- a/portal/js/usergrid-dev.min.js
+++ b/portal/js/usergrid-dev.min.js
@@@ -4512,6 -4511,6 +4511,19760 @@@
$templateCache.put("users/users-tabs.html", "\n" + "\n" + "\n");
$templateCache.put("users/users.html", '<div class="content-page">\n' + "\n" + ' <page-title title=" Users" icon="👤"></page-title>\n' + ' <bsmodal id="newUser"\n' + ' title="Create New User"\n' + ' close="hideModal"\n' + ' closelabel="Cancel"\n' + ' buttonid="users"\n' + ' extrabutton="newUserDialog"\n' + ' extrabuttonlabel="Create"\n' + " ng-cloak>\n" + " <fieldset>\n" + ' <div class="control-group">\n' + ' <label for="new-user-username">Username</label>\n' + "\n" + ' <div class="controls">\n' + ' <input type="text" required ng-model="$parent.newUser.newusername" ng-pattern="usernameRegex" ng-attr-title="{{usernameRegexDescription}}" name="username" id="new-user-username" class="input-xlarge" ug-validate/>\n' + ' <p class="help-block hide"></p>\n' + " </div>\n" + " </div>\n" + ' <div class="control-group">\n' + ' <label for="new-u
ser-fullname">Full name</label>\n' + "\n" + ' <div class="controls">\n' + ' <input type="text" required ng-attr-title="{{nameRegexDescription}}" ng-pattern="nameRegex" ng-model="$parent.newUser.name" name="name" id="new-user-fullname" class="input-xlarge" ug-validate/>\n' + "\n" + ' <p class="help-block hide"></p>\n' + " </div>\n" + " </div>\n" + ' <div class="control-group">\n' + ' <label for="new-user-email">Email</label>\n' + "\n" + ' <div class="controls">\n' + ' <input type="email" required ng-model="$parent.newUser.email" pattern="emailRegex" ng-attr-title="{{emailRegexDescription}}" name="email" id="new-user-email" class="input-xlarge" ug-validate/>\n' + "\n" + ' <p class="help-block hide"></p>\n' + " </div>\n" + " </div>\n" + ' <div class="control-group">\n' + ' <label for="new-user-password">Password</label>\n' + "\n" + ' <div class="controls">\n' + ' <inpu
t type="password" required ng-pattern="passwordRegex" ng-attr-title="{{passwordRegexDescription}}" ng-model="$parent.newUser.newpassword" name="password" id="new-user-password" ug-validate\n' + ' class="input-xlarge"/>\n' + "\n" + ' <p class="help-block hide"></p>\n' + " </div>\n" + " </div>\n" + ' <div class="control-group">\n' + ' <label for="new-user-re-password">Confirm password</label>\n' + "\n" + ' <div class="controls">\n' + ' <input type="password" required ng-pattern="passwordRegex" ng-attr-title="{{passwordRegexDescription}}" ng-model="$parent.newUser.repassword" name="re-password" id="new-user-re-password" ug-validate\n' + ' class="input-xlarge"/>\n' + "\n" + ' <p class="help-block hide"></p>\n' + " </div>\n" + " </div>\n" + " </fieldset>\n" + " </bsmodal>\n" + "\n" + ' <bsmodal id="deleteUser"\n' + ' title="Delete User"\n' + ' close="hideModal"
\n' + ' closelabel="Cancel"\n' + ' extrabutton="deleteUsersDialog"\n' + ' extrabuttonlabel="Delete"\n' + ' buttonid="deleteusers"\n' + " ng-cloak>\n" + " <p>Are you sure you want to delete the user(s)?</p>\n" + " </bsmodal>\n" + "\n" + ' <section class="row-fluid">\n' + ' <div class="span3 user-col">\n' + "\n" + ' <div class="button-toolbar span12">\n' + ' <a title="Select All" class="btn btn-primary toolbar select-all" ng-show="hasUsers" ng-click="selectAllEntities(usersCollection._list,this,\'usersSelected\',true)" ng-model="usersSelected"> <i class="pictogram">⊟</i></a>\n' + ' <button title="Delete" class="btn btn-primary toolbar" ng-disabled="!hasUsers || !valueSelected(usersCollection._list)" ng-click="showModal(\'deleteUser\')" id="delete-user-button"><i class="pictogram">☕</i></button>\n' + ' <button title="Add" class="btn btn-primary toolbar" ng-click="showModal(\'newUser\
')" id="new-user-button" ng-attr-id="new-user-button"><i class="pictogram"></i></button>\n' + " </div>\n" + ' <ul class="user-list">\n' + ' <li ng-class="selectedUser._data.uuid === user._data.uuid ? \'selected\' : \'\'" ng-repeat="user in usersCollection._list" ng-click="selectUser(user._data.uuid)">\n' + " <input\n" + ' type="checkbox"\n' + " id=\"user-{{user.get('username')}}-checkbox\"\n" + " ng-value=\"user.get('uuid')\"\n" + ' ng-checked="master"\n' + ' ng-model="user.checked"\n' + " >\n" + " <a href=\"javaScript:void(0)\" id=\"user-{{user.get('username')}}-link\" >{{user.get('username')}}</a>\n" + ' <span ng-if="user.name" class="label">Display Name:</span>{{user.name}}\n' + " </li>\n" + " </ul>\n" + "\n" + ' <div style="padding: 10px 5px 10px 5px">\n' + ' <button class="btn btn-primary t
oolbar" ng-click="getPrevious()" style="display:{{previous_display}}">< Previous\n' + " </button>\n" + ' <button class="btn btn-primary toolbar" ng-click="getNext()" style="display:{{next_display}}; float:right;">Next >\n' + " </button>\n" + " </div>\n" + "\n" + " </div>\n" + "\n" + ' <div class="span9 tab-content" ng-show="hasUsers">\n' + ' <div class="menu-toolbar">\n' + ' <ul class="inline">\n' + ' <li class="tab" ng-class="currentUsersPage.route === \'/users/profile\' ? \'selected\' : \'\'"><a class="btn btn-primary toolbar" ng-click="selectUserPage(\'/users/profile\')"><i class="pictogram"></i>Profile</a></li>\n' + ' <li class="tab" ng-class="currentUsersPage.route === \'/users/groups\' ? \'selected\' : \'\'"><a class="btn btn-primary toolbar" ng-click="selectUserPage(\'/users/groups\')"><i class="pictogram">👥</i>Groups</a></li>\n' + ' <li class="tab" ng-class="currentUsersPage.route
=== \'/users/activities\' ? \'selected\' : \'\'"><a class="btn btn-primary toolbar" ng-click="selectUserPage(\'/users/activities\')"><i class="pictogram"></i>Activities</a></li>\n' + ' <li class="tab" ng-class="currentUsersPage.route === \'/users/feed\' ? \'selected\' : \'\'"><a class="btn btn-primary toolbar" ng-click="selectUserPage(\'/users/feed\')"><i class="pictogram">📄</i>Feed</a></li>\n' + ' <li class="tab" ng-class="currentUsersPage.route === \'/users/graph\' ? \'selected\' : \'\'"><a class="btn btn-primary toolbar" ng-click="selectUserPage(\'/users/graph\')"><i class="pictogram">☁</i>Graph</a></li>\n' + ' <li class="tab" ng-class="currentUsersPage.route === \'/users/roles\' ? \'selected\' : \'\'"><a class="btn btn-primary toolbar" ng-click="selectUserPage(\'/users/roles\')"><i class="pictogram">🌎</i>Roles & Permissions</a></li>\n' + " </ul>\n" + " </div>\n" + ' <span ng-include="currentUsersPage.t
emplate"></span>\n' + " </div>\n" + " </section>\n" + "</div>");
} ]);
++ (function(exports, global) {
++ global["true"] = exports;
++ "use strict";
++ var polyfills = function(window, Object) {
++ window.requestAnimFrame = function() {
++ return window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame || function(callback, element) {
++ window.setTimeout(callback, 1e3 / 60);
++ };
++ }();
++ Object.defineProperty(Object.prototype, "clone", {
++ enumerable: false,
++ writable: true,
++ value: function() {
++ var i, newObj = this instanceof Array ? [] : {};
++ for (i in this) {
++ if (i === "clone") {
++ continue;
++ }
++ if (this[i] && typeof this[i] === "object") {
++ newObj[i] = this[i].clone();
++ } else {
++ newObj[i] = this[i];
++ }
++ }
++ return newObj;
++ }
++ });
++ Object.defineProperty(Object.prototype, "stringifyJSON", {
++ enumerable: false,
++ writable: true,
++ value: function() {
++ return JSON.stringify(this, null, " ");
++ }
++ });
++ };
++ polyfills(window, Object);
++ var global = global || this;
++ var 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", []);
++ AppServices.Performance = angular.module("appservices.performance", []);
++ AppServices.MAX = angular.module("appservices.max", []);
++ angular.module("appservices", [ "ngRoute", "ngResource", "ngSanitize", "ui.bootstrap", "angulartics", "angulartics.google.analytics", "appservices.filters", "appservices.services", "appservices.directives", "appservices.constants", "appservices.controllers", "appservices.max", "angular-intro" ]).config([ "$routeProvider", "$locationProvider", "$sceDelegateProvider", "$analyticsProvider", function($routeProvider, $locationProvider, $sceDelegateProvider, $analyticsProvider) {
++ $routeProvider.when("/org-overview", {
++ templateUrl: "org-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("/getting-started/setup", {
++ templateUrl: "app-overview/getting-started.html",
++ controller: "GettingStartedCtrl"
++ }).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.html",
++ 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: "DataCtrl"
++ }).when("/data/entity", {
++ templateUrl: "data/entity.html",
++ controller: "EntityCtrl"
++ }).when("/data/shell", {
++ templateUrl: "data/shell.html",
++ controller: "ShellCtrl"
++ }).when("/profile/organizations", {
++ templateUrl: "profile/organizations.html",
++ controller: "OrgCtrl"
++ }).when("/profile/profile", {
++ templateUrl: "profile/profile.html",
++ controller: "ProfileCtrl"
++ }).when("/profile", {
++ templateUrl: "profile/account.html",
++ controller: "AccountCtrl"
++ }).when("/activities", {
++ templateUrl: "activities/activities.html",
++ controller: "ActivitiesCtrl"
++ }).when("/shell", {
++ templateUrl: "shell/shell.html",
++ controller: "ShellCtrl"
++ }).when("/logout", {
++ templateUrl: "login/logout.html",
++ controller: "LogoutCtrl"
++ }).otherwise({
++ redirectTo: "/org-overview"
++ });
++ $locationProvider.html5Mode(false).hashPrefix("!");
++ $sceDelegateProvider.resourceUrlWhitelist([ "self", "http://apigee-internal-prod.jupiter.apigee.net/**", "http://apigee-internal-prod.mars.apigee.net/**", "https://appservices.apigee.com/**", "https://api.usergrid.com/**" ]);
++ $analyticsProvider.virtualPageviews(false);
++ $analyticsProvider.firstPageview(false);
++ } ]);
++ AppServices.Controllers.controller("ActivitiesCtrl", [ "ug", "$scope", "$rootScope", "$location", "$route", function(ug, $scope, $rootScope, $location, $route) {
++ $scope.$on("app-activities-received", function(evt, data) {
++ $scope.activities = data;
++ $scope.$apply();
++ });
++ $scope.$on("app-activities-error", function(evt, data) {
++ $rootScope.$broadcast("alert", "error", "Application failed to retreive activities data.");
++ });
++ ug.getActivities();
++ } ]);
++ "use strict";
++ AppServices.Controllers.controller("AppOverviewCtrl", [ "ug", "charts", "$scope", "$rootScope", "$log", function(ug, charts, $scope, $rootScope, $log) {
++ var createGradient = function(color1, color2) {
++ var perShapeGradient = {
++ x1: 0,
++ y1: 0,
++ x2: 0,
++ y2: 1
++ };
++ return {
++ linearGradient: perShapeGradient,
++ stops: [ [ 0, color1 ], [ 1, color2 ] ]
++ };
++ };
++ $scope.appOverview = {};
++ $scope.collections = [];
++ $scope.graph = "";
++ $scope.$on("top-collections-received", function(event, collections) {
++ var dataDescription = {
++ bar1: {
++ labels: [ "Total" ],
++ dataAttr: [ "title", "count" ],
++ colors: [ createGradient("rgba(36,151,212,0.6)", "rgba(119,198,240,0.6)") ],
++ borderColor: "#1b97d1"
++ }
++ };
++ $scope.collections = collections;
++ var arr = [];
++ for (var i in collections) {
++ if (collections.hasOwnProperty(i)) {
++ arr.push(collections[i]);
++ }
++ }
++ $scope.appOverview = {};
++ if (!$rootScope.chartTemplate) {
++ ug.httpGet(null, "js/charts/highcharts.json").then(function(success) {
++ $rootScope.chartTemplate = success;
++ $scope.appOverview.chart = angular.copy($rootScope.chartTemplate.pareto);
++ $scope.appOverview.chart = charts.convertParetoChart(arr, $scope.appOverview.chart, dataDescription.bar1, "1h", "NOW");
++ $scope.applyScope();
++ }, function(fail) {
++ $log.error("Problem getting chart template", fail);
++ });
++ } else {
++ $scope.appOverview.chart = angular.copy($rootScope.chartTemplate.pareto);
++ $scope.appOverview.chart = charts.convertParetoChart(arr, $scope.appOverview.chart, dataDescription.bar1, "1h", "NOW");
++ $scope.applyScope();
++ }
++ });
++ $scope.$on("app-initialized", function() {
++ ug.getTopCollections();
++ });
++ if ($rootScope.activeUI) {
++ ug.getTopCollections();
++ }
++ } ]);
++ "use strict";
++ AppServices.Controllers.controller("GettingStartedCtrl", [ "ug", "$scope", "$rootScope", "$location", "$timeout", "$anchorScroll", function(ug, $scope, $rootScope, $location, $timeout, $anchorScroll) {
++ $scope.collections = [];
++ $scope.graph = "";
++ $scope.clientID = "";
++ $scope.clientSecret = "";
++ var getKeys = function() {
++ return ug.jsonpRaw("credentials", "", {});
++ };
++ $scope.regenerateCredentialsDialog = function(modalId) {
++ $scope.orgAPICredentials = {
++ client_id: "regenerating...",
++ client_secret: "regenerating..."
++ };
++ ug.regenerateAppCredentials();
++ $scope.hideModal(modalId);
++ };
++ $scope.$on("app-creds-updated", function(event, credentials) {
++ if (credentials) {
++ $scope.clientID = credentials.client_id;
++ $scope.clientSecret = credentials.client_secret;
++ if (!$scope.$$phase) {
++ $scope.$apply();
++ }
++ } else {
++ setTimeout(function() {
++ ug.getAppCredentials();
++ }, 5e3);
++ }
++ });
++ ug.getAppCredentials();
++ $scope.contentTitle;
++ $scope.showSDKDetail = function(name) {
++ var introContainer = document.getElementById("intro-container");
++ if (name === "nocontent") {
++ introContainer.style.height = "0";
++ return true;
++ }
++ introContainer.style.opacity = .1;
++ introContainer.style.height = "0";
++ var timeout = 0;
++ if ($scope.contentTitle) {
++ timeout = 500;
++ }
++ $timeout(function() {
++ introContainer.style.height = "1000px";
++ introContainer.style.opacity = 1;
++ }, timeout);
++ $scope.optionName = name;
++ $scope.contentTitle = name;
++ $scope.sdkLink = "http://apigee.com/docs/content/" + name + "-sdk-redirect";
++ $scope.docsLink = "http://apigee.com/docs/app-services/content/installing-apigee-sdk-" + name;
++ $scope.getIncludeURL = function() {
++ return "app-overview/doc-includes/" + $scope.optionName + ".html";
++ };
++ };
++ $scope.scrollToElement = function(elem) {
++ $location.hash(elem);
++ $anchorScroll();
++ return false;
++ };
++ } ]);
++ "use strict";
++ AppServices.Controllers.controller("ChartCtrl", [ "$scope", "$location", function($scope, $location) {} ]);
++ "use strict";
++ AppServices.Directives.directive("chart", function($rootScope) {
++ return {
++ restrict: "E",
++ scope: {
++ chartdata: "=chartdata"
++ },
++ template: "<div></div>",
++ replace: true,
++ controller: function($scope, $element) {},
++ link: function(scope, element, attrs) {
++ scope.$watch("chartdata", function(chartdata, oldchartdata) {
++ if (chartdata) {
++ var chartsDefaults = {
++ chart: {
++ renderTo: element[0],
++ type: attrs.type || null,
++ height: attrs.height || null,
++ width: attrs.width || null,
++ reflow: true,
++ animation: false,
++ zoomType: "x"
++ }
++ };
++ if (attrs.type === "pie") {
++ chartsDefaults.chart.margin = [ 0, 0, 0, 0 ];
++ chartsDefaults.chart.spacingLeft = 0;
++ chartsDefaults.chart.spacingRight = 0;
++ chartsDefaults.chart.spacingTop = 0;
++ chartsDefaults.chart.spacingBottom = 0;
++ if (attrs.titleimage) {
++ chartdata.title.text = '<img src="' + attrs.titleimage + '">';
++ }
++ if (attrs.titleicon) {
++ chartdata.title.text = '<i class="pictogram ' + attrs.titleiconclass + '">' + attrs.titleicon + "</i>";
++ }
++ if (attrs.titlecolor) {
++ chartdata.title.style.color = attrs.titlecolor;
++ }
++ if (attrs.titleimagetop) {
++ chartdata.title.style.marginTop = attrs.titleimagetop;
++ }
++ if (attrs.titleimageleft) {
++ chartdata.title.style.marginLeft = attrs.titleimageleft;
++ }
++ }
++ if (attrs.type === "line") {
++ chartsDefaults.chart.marginTop = 30;
++ chartsDefaults.chart.spacingTop = 50;
++ }
++ if (attrs.type === "column") {
++ chartsDefaults.chart.marginBottom = 80;
++ }
++ if (attrs.type === "area") {
++ chartsDefaults.chart.spacingLeft = 0;
++ chartsDefaults.chart.spacingRight = 0;
++ chartsDefaults.chart.marginLeft = 0;
++ chartsDefaults.chart.marginRight = 0;
++ }
++ Highcharts.setOptions({
++ global: {
++ useUTC: false
++ },
++ chart: {
++ style: {
++ fontFamily: "marquette-light, Helvetica, Arial, sans-serif"
++ }
++ }
++ });
++ if (attrs.type === "line") {
++ var xAxis1 = chartdata.xAxis[0];
++ if (!xAxis1.labels.formatter) {
++ xAxis1.labels.formatter = new Function(attrs.xaxislabel);
++ }
++ if (!xAxis1.labels.step) {
++ xAxis1.labels.step = attrs.xaxisstep;
++ }
++ }
++ if (chartdata.tooltip) {
++ if (typeof chartdata.tooltip.formatter === "string") {
++ chartdata.tooltip.formatter = new Function(chartdata.tooltip.formatter);
++ }
++ }
++ renderChart(chartsDefaults, chartdata);
++ }
++ }, true);
++ }
++ };
++ });
++ function renderChart(chartsDefaults, chartdata, attrs) {
++ var newSettings = {};
++ $.extend(true, newSettings, chartsDefaults, chartdata);
++ var chart = new Highcharts.Chart(newSettings);
++ }
++ AppServices.Services.factory("charts", function() {
++ var lineChart, areaChart, paretoChart, pieChart, pieCompare, xaxis, seriesIndex;
++ return {
++ convertLineChart: function(chartData, chartTemplate, dataDescription, settings, currentCompare) {
++ lineChart = chartTemplate;
++ if (typeof chartData[0] === "undefined") {
++ chartData[0] = {};
++ chartData[0].datapoints = [];
++ }
++ var dataPoints = chartData[0].datapoints, dPLength = dataPoints.length, label;
++ if (currentCompare === "YESTERDAY") {
++ seriesIndex = dataDescription.dataAttr.length;
++ label = "Yesterday ";
++ } else if (currentCompare === "LAST_WEEK") {
++ seriesIndex = dataDescription.dataAttr.length;
++ label = "Last Week ";
++ } else {
++ lineChart = chartTemplate;
++ seriesIndex = 0;
++ lineChart.series = [];
++ label = "";
++ }
++ xaxis = lineChart.xAxis[0];
++ xaxis.categories = [];
++ if (settings.xaxisformat) {
++ xaxis.labels.formatter = new Function(settings.xaxisformat);
++ }
++ if (settings.step) {
++ xaxis.labels.step = settings.step;
++ }
++ for (var i = 0; i < dPLength; i++) {
++ var dp = dataPoints[i];
++ xaxis.categories.push(dp.timestamp);
++ }
++ if (chartData.length > 1) {
++ for (var l = 0; l < chartData.length; l++) {
++ if (chartData[l].chartGroupName) {
++ dataPoints = chartData[l].datapoints;
++ lineChart.series[l] = {};
++ lineChart.series[l].data = [];
++ lineChart.series[l].name = chartData[l].chartGroupName;
++ lineChart.series[l].yAxis = 0;
++ lineChart.series[l].type = "line";
++ lineChart.series[l].color = dataDescription.colors[i];
++ lineChart.series[l].dashStyle = "solid";
++ lineChart.series[l].yAxis.title.text = dataDescription.yAxisLabels;
++ plotData(l, dPLength, dataPoints, dataDescription.detailDataAttr, true);
++ }
++ }
++ } else {
++ var steadyCounter = 0;
++ for (var i = seriesIndex; i < dataDescription.dataAttr.length + (seriesIndex > 0 ? seriesIndex : 0); i++) {
++ var yAxisIndex = dataDescription.multiAxis ? steadyCounter : 0;
++ lineChart.series[i] = {};
++ lineChart.series[i].data = [];
++ lineChart.series[i].name = label + dataDescription.labels[steadyCounter];
++ lineChart.series[i].yAxis = yAxisIndex;
++ lineChart.series[i].type = "line";
++ lineChart.series[i].color = dataDescription.colors[i];
++ lineChart.series[i].dashStyle = "solid";
++ lineChart.yAxis[yAxisIndex].title.text = dataDescription.yAxisLabels[dataDescription.yAxisLabels > 1 ? steadyCounter : 0];
++ steadyCounter++;
++ }
++ plotData(seriesIndex, dPLength, dataPoints, dataDescription.dataAttr, false);
++ }
++ function plotData(counter, dPLength, dataPoints, dataAttrs, detailedView) {
++ for (var i = 0; i < dPLength; i++) {
++ var dp = dataPoints[i];
++ var localCounter = counter;
++ for (var j = 0; j < dataAttrs.length; j++) {
++ if (typeof dp === "undefined") {
++ lineChart.series[localCounter].data.push([ i, 0 ]);
++ } else {
++ lineChart.series[localCounter].data.push([ i, dp[dataAttrs[j]] ]);
++ }
++ if (!detailedView) {
++ localCounter++;
++ }
++ }
++ }
++ }
++ return lineChart;
++ },
++ convertAreaChart: function(chartData, chartTemplate, dataDescription, settings, currentCompare) {
++ areaChart = angular.copy(areaChart);
++ if (typeof chartData[0] === "undefined") {
++ chartData[0] = {};
++ chartData[0].datapoints = [];
++ }
++ var dataPoints = chartData[0].datapoints, dPLength = dataPoints.length, label;
++ if (currentCompare === "YESTERDAY") {
++ seriesIndex = dataDescription.dataAttr.length;
++ label = "Yesterday ";
++ } else if (currentCompare === "LAST_WEEK") {
++ seriesIndex = dataDescription.dataAttr.length;
++ label = "Last Week ";
++ } else {
++ areaChart = chartTemplate;
++ seriesIndex = 0;
++ areaChart.series = [];
++ label = "";
++ }
++ xaxis = areaChart.xAxis[0];
++ xaxis.categories = [];
++ if (settings.xaxisformat) {
++ xaxis.labels.formatter = new Function(settings.xaxisformat);
++ }
++ if (settings.step) {
++ xaxis.labels.step = settings.step;
++ }
++ for (var i = 0; i < dPLength; i++) {
++ var dp = dataPoints[i];
++ xaxis.categories.push(dp.timestamp);
++ }
++ if (chartData.length > 1) {
++ for (var l = 0; l < chartData.length; l++) {
++ if (chartData[l].chartGroupName) {
++ dataPoints = chartData[l].datapoints;
++ areaChart.series[l] = {};
++ areaChart.series[l].data = [];
++ areaChart.series[l].fillColor = dataDescription.areaColors[l];
++ areaChart.series[l].name = chartData[l].chartGroupName;
++ areaChart.series[l].yAxis = 0;
++ areaChart.series[l].type = "area";
++ areaChart.series[l].pointInterval = 1;
++ areaChart.series[l].color = dataDescription.colors[l];
++ areaChart.series[l].dashStyle = "solid";
++ areaChart.series[l].yAxis.title.text = dataDescription.yAxisLabels;
++ plotData(l, dPLength, dataPoints, dataDescription.detailDataAttr, true);
++ }
++ }
++ } else {
++ var steadyCounter = 0;
++ for (var i = seriesIndex; i < dataDescription.dataAttr.length + (seriesIndex > 0 ? seriesIndex : 0); i++) {
++ var yAxisIndex = dataDescription.multiAxis ? steadyCounter : 0;
++ areaChart.series[i] = {};
++ areaChart.series[i].data = [];
++ areaChart.series[i].fillColor = dataDescription.areaColors[i];
++ areaChart.series[i].name = label + dataDescription.labels[steadyCounter];
++ areaChart.series[i].yAxis = yAxisIndex;
++ areaChart.series[i].type = "area";
++ areaChart.series[i].pointInterval = 1;
++ areaChart.series[i].color = dataDescription.colors[i];
++ areaChart.series[i].dashStyle = "solid";
++ areaChart.yAxis[yAxisIndex].title.text = dataDescription.yAxisLabels[dataDescription.yAxisLabels > 1 ? steadyCounter : 0];
++ steadyCounter++;
++ }
++ plotData(seriesIndex, dPLength, dataPoints, dataDescription.dataAttr, false);
++ }
++ function plotData(counter, dPLength, dataPoints, dataAttrs, detailedView) {
++ for (var i = 0; i < dPLength; i++) {
++ var dp = dataPoints[i];
++ var localCounter = counter;
++ for (var j = 0; j < dataAttrs.length; j++) {
++ if (typeof dp === "undefined") {
++ areaChart.series[localCounter].data.push(0);
++ } else {
++ areaChart.series[localCounter].data.push(dp[dataAttrs[j]]);
++ }
++ if (!detailedView) {
++ localCounter++;
++ }
++ }
++ }
++ }
++ return areaChart;
++ },
++ convertParetoChart: function(chartData, chartTemplate, dataDescription, settings, currentCompare) {
++ paretoChart = chartTemplate;
++ if (typeof chartData === "undefined") {
++ chartData = [];
++ }
++ var label, cdLength = chartData.length, compare = false, allParetoOptions = [], stackedBar = false;
++ seriesIndex = 0;
++ function getPreviousData() {
++ for (var i = 0; i < chartTemplate.series[0].data.length; i++) {
++ allParetoOptions.push(chartTemplate.xAxis.categories[i]);
++ }
++ }
++ if (typeof dataDescription.dataAttr[1] === "object") {
++ stackedBar = true;
++ }
++ if (currentCompare === "YESTERDAY") {
++ label = "Yesterday ";
++ compare = true;
++ if (stackedBar) {
++ seriesIndex = dataDescription.dataAttr[1].length;
++ }
++ getPreviousData();
++ } else if (currentCompare === "LAST_WEEK") {
++ label = "Last Week ";
++ compare = true;
++ if (stackedBar) {
++ seriesIndex = dataDescription.dataAttr[1].length;
++ }
++ seriesIndex = getPreviousData();
++ } else {
++ compare = false;
++ label = "";
++ paretoChart.xAxis.categories = [];
++ paretoChart.series = [];
++ paretoChart.series[0] = {};
++ paretoChart.series[0].data = [];
++ paretoChart.legend.enabled = false;
++ }
++ paretoChart.plotOptions.series.borderColor = dataDescription.borderColor;
++ if (compare && !stackedBar) {
++ paretoChart.series[1] = {};
++ paretoChart.series[1].data = [];
++ for (var i = 0; i < allParetoOptions.length; i++) {
++ paretoChart.series[1].data.push(0);
++ }
++ paretoChart.legend.enabled = true;
++ }
++ for (var i = 0; i < cdLength; i++) {
++ var bar = chartData[i];
++ if (!compare) {
++ paretoChart.xAxis.categories.push(bar[dataDescription.dataAttr[0]]);
++ if (typeof dataDescription.dataAttr[1] === "object") {
++ createStackedBar(dataDescription, paretoChart, paretoChart.series.length);
++ } else {
++ paretoChart.series[0].data.push(bar[dataDescription.dataAttr[1]]);
++ paretoChart.series[0].name = dataDescription.labels[0];
++ paretoChart.series[0].color = dataDescription.colors[0];
++ }
++ } else {
++ var newLabel = bar[dataDescription.dataAttr[0]], newValue = bar[dataDescription.dataAttr[1]], previousIndex = allParetoOptions.indexOf(newLabel);
++ if (previousIndex > -1) {
++ if (typeof dataDescription.dataAttr[1] === "object") {
++ createStackedBar(dataDescription, paretoChart, paretoChart.series.length);
++ } else {
++ paretoChart.series[1].data[previousIndex] = newValue;
++ paretoChart.series[1].name = label !== "" ? label + " " + dataDescription.labels[0] : dataDescription.labels[0];
++ paretoChart.series[1].color = dataDescription.colors[1];
++ }
++ } else {}
++ }
++ }
++ function createStackedBar(dataDescription, paretoChart, startingPoint) {
++ paretoChart.plotOptions = {
++ series: {
++ shadow: false,
++ borderColor: dataDescription.borderColor,
++ borderWidth: 1
++ },
++ column: {
++ stacking: "normal",
++ dataLabels: {
++ enabled: true,
++ color: Highcharts.theme && Highcharts.theme.dataLabelsColor || "white"
++ }
++ }
++ };
++ var start = dataDescription.dataAttr[1].length, steadyCounter = 0, stackName = label;
++ if (compare) {
++ paretoChart.legend.enabled = true;
++ }
++ for (var f = seriesIndex; f < start + seriesIndex; f++) {
++ if (!paretoChart.series[f]) {
++ paretoChart.series[f] = {
++ data: []
++ };
++ }
++ paretoChart.series[f].data.push(bar[dataDescription.dataAttr[1][steadyCounter]]);
++ paretoChart.series[f].name = label !== "" ? label + " " + dataDescription.labels[steadyCounter] : dataDescription.labels[steadyCounter];
++ paretoChart.series[f].color = dataDescription.colors[f];
++ paretoChart.series[f].stack = label;
++ steadyCounter++;
++ }
++ }
++ return paretoChart;
++ },
++ convertPieChart: function(chartData, chartTemplate, dataDescription, settings, currentCompare) {
++ var label, cdLength = chartData.length, compare = false;
++ pieChart = chartTemplate;
++ if (currentCompare === "YESTERDAY") {
++ label = "Yesterday ";
++ compare = false;
++ } else if (currentCompare === "LAST_WEEK") {
++ label = "Last Week ";
++ compare = false;
++ } else {
++ compare = false;
++ pieChart.series[0].data = [];
++ if (pieChart.series[0].dataLabels) {
++ if (typeof pieChart.series[0].dataLabels.formatter === "string") {
++ pieChart.series[0].dataLabels.formatter = new Function(pieChart.series[0].dataLabels.formatter);
++ }
++ }
++ }
++ pieChart.plotOptions.pie.borderColor = dataDescription.borderColor;
++ if (compare) {
++ pieChart.series[1].data = [];
++ if (pieChart.series[1].dataLabels) {
++ if (typeof pieChart.series[1].dataLabels.formatter === "string") {
++ pieChart.series[1].dataLabels.formatter = new Function(pieChart.series[1].dataLabels.formatter);
++ }
++ }
++ }
++ var tempArray = [];
++ for (var i = 0; i < cdLength; i++) {
++ var pie = chartData[i];
++ tempArray.push({
++ name: pie[dataDescription.dataAttr[0]],
++ y: pie[dataDescription.dataAttr[1]],
++ color: ""
++ });
++ }
++ sortJsonArrayByProperty(tempArray, "name");
++ for (var i = 0; i < tempArray.length; i++) {
++ tempArray[i].color = dataDescription.colors[i];
++ }
++ if (!compare) {
++ pieChart.series[0].data = tempArray;
++ } else {
++ pieChart.series[1].data = tempArray;
++ }
++ return pieChart;
++ }
++ };
++ function sortJsonArrayByProperty(objArray, prop, direction) {
++ if (arguments.length < 2) throw new Error("sortJsonArrayByProp requires 2 arguments");
++ var direct = arguments.length > 2 ? arguments[2] : 1;
++ if (objArray && objArray.constructor === Array) {
++ var propPath = prop.constructor === Array ? prop : prop.split(".");
++ objArray.sort(function(a, b) {
++ for (var p in propPath) {
++ if (a[propPath[p]] && b[propPath[p]]) {
++ a = a[propPath[p]];
++ b = b[propPath[p]];
++ }
++ }
++ a = a.match(/^\d+$/) ? +a : a;
++ b = b.match(/^\d+$/) ? +b : b;
++ return a < b ? -1 * direct : a > b ? 1 * direct : 0;
++ });
++ }
++ }
++ });
++ $(".sessions-bar").sparkline([ 3, 5, 6, 3, 4, 5, 6, 7, 8, 4, 3, 5, 6, 3, 4, 5, 6, 7, 8, 4, 3, 5, 6, 3, 4, 5, 6, 7, 8, 4, 3, 5, 6, 3, 4, 5, 6, 7, 8, 4, 3, 5, 6, 3, 4, 5, 6, 7, 8, 4, 3, 5, 6, 3, 4, 5, 6, 7, 8, 1 ], {
++ type: "bar",
++ barColor: "#c5c5c5",
++ width: "800px",
++ height: 100,
++ barWidth: 12,
++ barSpacing: "1px"
++ });
++ "use strict";
++ AppServices.Controllers.controller("DataCtrl", [ "ug", "$scope", "$rootScope", "$location", function(ug, $scope, $rootScope, $location) {
++ var init = function() {
++ $scope.verb = "GET";
++ $scope.display = "";
++ $scope.queryBodyDetail = {};
++ $scope.queryBodyDisplay = "none";
++ $scope.queryLimitDisplay = "block";
++ $scope.queryStringDisplay = "block";
++ $scope.entitySelected = {};
++ $scope.newCollection = {};
++ $rootScope.queryCollection = {};
++ $scope.data = {};
++ $scope.data.queryPath = "";
++ $scope.data.queryBody = '{ "name":"value" }';
++ $scope.data.searchString = "";
++ $scope.data.queryLimit = "";
++ };
++ var runQuery = function(verb) {
++ $scope.loading = true;
++ var queryPath = $scope.removeFirstSlash($scope.data.queryPath || "");
++ var searchString = $scope.data.searchString || "";
++ var queryLimit = $scope.data.queryLimit || "";
++ var body = JSON.parse($scope.data.queryBody || "{}");
++ if (verb == "POST" && $scope.validateJson(true)) {
++ ug.runDataPOSTQuery(queryPath, body);
++ } else if (verb == "PUT" && $scope.validateJson(true)) {
++ ug.runDataPutQuery(queryPath, searchString, queryLimit, body);
++ } else if (verb == "DELETE") {
++ ug.runDataDeleteQuery(queryPath, searchString, queryLimit);
++ } else {
++ ug.runDataQuery(queryPath, searchString, queryLimit);
++ }
++ };
++ $scope.$on("top-collections-received", function(event, collectionList) {
++ $scope.loading = false;
++ var ignoredCollections = [ "events" ];
++ ignoredCollections.forEach(function(ignoredCollection) {
++ collectionList.hasOwnProperty(ignoredCollection) && delete collectionList[ignoredCollection];
++ });
++ $scope.collectionList = collectionList;
++ $scope.queryBoxesSelected = false;
++ if (!$scope.queryPath) {
++ $scope.loadCollection("/" + collectionList[Object.keys(collectionList).sort()[0]].name);
++ }
++ $scope.applyScope();
++ });
++ $scope.$on("error-running-query", function(event) {
++ $scope.loading = false;
++ runQuery("GET");
++ $scope.applyScope();
++ });
++ $scope.$on("entity-deleted", function(event) {
++ $scope.deleteLoading = false;
++ $rootScope.$broadcast("alert", "success", "Entities deleted sucessfully");
++ $scope.queryBoxesSelected = false;
++ $scope.checkNextPrev();
++ $scope.applyScope();
++ });
++ $scope.$on("entity-deleted-error", function(event) {
++ $scope.deleteLoading = false;
++ runQuery("GET");
++ $scope.applyScope();
++ });
++ $scope.$on("collection-created", function() {
++ $scope.newCollection.name = "";
++ });
++ $scope.$on("query-received", function(event, collection) {
++ $scope.loading = false;
++ $rootScope.queryCollection = collection;
++ ug.getIndexes($scope.data.queryPath);
++ $scope.setDisplayType();
++ $scope.checkNextPrev();
++ $scope.applyScope();
++ $scope.queryBoxesSelected = false;
++ });
++ $scope.$on("indexes-received", function(event, indexes) {
++ var fred = indexes;
++ });
++ $scope.$on("app-changed", function() {
++ init();
++ });
++ $scope.setDisplayType = function() {
++ $scope.display = "generic";
++ };
++ $scope.deleteEntitiesDialog = function(modalId) {
++ $scope.deleteLoading = false;
++ $scope.deleteEntities($rootScope.queryCollection, "entity-deleted", "error deleting entity");
++ $scope.hideModal(modalId);
++ };
++ $scope.newCollectionDialog = function(modalId) {
++ if ($scope.newCollection.name) {
++ ug.createCollection($scope.newCollection.name);
++ ug.getTopCollections();
++ $rootScope.$broadcast("alert", "success", "Collection created successfully.");
++ $scope.hideModal(modalId);
++ } else {
++ $rootScope.$broadcast("alert", "error", "You must specify a collection name.");
++ }
++ };
++ $scope.addToPath = function(uuid) {
++ $scope.data.queryPath = "/" + $rootScope.queryCollection._type + "/" + uuid;
++ };
++ $scope.isDeep = function(item) {
++ return Object.prototype.toString.call(item) === "[object Object]";
++ };
++ $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.validateJson = function(skipMessage) {
++ var queryBody = $scope.data.queryBody;
++ try {
++ queryBody = JSON.parse(queryBody);
++ } catch (e) {
++ $rootScope.$broadcast("alert", "error", "JSON is not valid");
++ return false;
++ }
++ queryBody = JSON.stringify(queryBody, null, 2);
++ !skipMessage && $rootScope.$broadcast("alert", "success", "JSON is valid");
++ $scope.data.queryBody = queryBody;
++ return true;
++ };
++ $scope.saveEntity = function(entity) {
++ if (!$scope.validateJson()) {
++ return false;
++ }
++ 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) {
++ if (err) {
++ $rootScope.$broadcast("alert", "error", "error: " + data.error_description);
++ } else {
++ $rootScope.$broadcast("alert", "success", "entity saved");
++ }
++ });
++ };
++ $scope.run = function() {
++ $rootScope.queryCollection = "";
++ var verb = $scope.verb;
++ runQuery(verb);
++ };
++ $scope.hasProperty = function(prop) {
++ var retval = false;
++ if (typeof $rootScope.queryCollection._list !== "undefined") {
++ angular.forEach($rootScope.queryCollection._list, function(value, key) {
++ if (!retval) {
++ if (value._data[prop]) {
++ retval = true;
++ }
++ }
++ });
++ }
++ return retval;
++ };
++ $scope.resetNextPrev = function() {
++ $scope.previous_display = "none";
++ $scope.next_display = "none";
++ };
++ $scope.checkNextPrev = function() {
++ $scope.resetNextPrev();
++ if ($rootScope.queryCollection.hasPreviousPage()) {
++ $scope.previous_display = "default";
++ }
++ if ($rootScope.queryCollection.hasNextPage()) {
++ $scope.next_display = "default";
++ }
++ };
++ $scope.selectEntity = function(uuid) {
++ $rootScope.selectedEntity = $rootScope.queryCollection.getEntityByUUID(uuid);
++ $scope.addToPath(uuid);
++ };
++ $scope.getJSONView = function(entity) {
++ var tempjson = entity.get();
++ var 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) {
++ if (err) {
++ $rootScope.$broadcast("alert", "error", "error getting previous page of data");
++ }
++ $scope.checkNextPrev();
++ $scope.applyScope();
++ });
++ };
++ $scope.getNext = function() {
++ $rootScope.queryCollection.getNextPage(function(err) {
++ if (err) {
++ $rootScope.$broadcast("alert", "error", "error getting next page of data");
++ }
++ $scope.checkNextPrev();
++ $scope.applyScope();
++ });
++ };
++ init();
++ $rootScope.queryCollection = $rootScope.queryCollection || {};
++ $rootScope.selectedEntity = {};
++ if ($rootScope.queryCollection && $rootScope.queryCollection._type) {
++ $scope.loadCollection($rootScope.queryCollection._type);
++ $scope.setDisplayType();
++ }
++ ug.getTopCollections();
++ $scope.resetNextPrev();
++ } ]);
++ "use strict";
++ AppServices.Controllers.controller("EntityCtrl", [ "ug", "$scope", "$rootScope", "$location", function(ug, $scope, $rootScope, $location) {
++ if (!$rootScope.selectedEntity) {
++ $location.path("/data");
++ return;
++ }
++ $scope.entityUUID = $rootScope.selectedEntity.get("uuid");
++ $scope.entityType = $rootScope.selectedEntity.get("type");
++ var tempjson = $rootScope.selectedEntity.get();
++ var 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) {
++ $rootScope.$broadcast("alert", "error", "JSON is not valid");
++ return false;
++ }
++ queryBody = JSON.stringify(queryBody, null, 2);
++ $rootScope.$broadcast("alert", "success", "JSON is valid");
++ $scope.queryBody = queryBody;
++ return true;
++ };
++ $scope.saveEntity = function() {
++ if (!$scope.validateJson()) {
++ return false;
++ }
++ 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) {
++ if (err) {
++ $rootScope.$broadcast("alert", "error", "error: " + data.error_description);
++ } else {
++ $rootScope.$broadcast("alert", "success", "entity saved");
++ }
++ });
++ };
++ } ]);
++ "use strict";
++ AppServices.Directives.directive("balloon", [ "$window", "$timeout", function($window, $timeout) {
++ return {
++ restrict: "ECA",
++ scope: "=",
++ template: "" + '<div class="baloon {{direction}}" ng-transclude>' + "</div>",
++ replace: true,
++ transclude: true,
++ link: function linkFn(scope, lElement, attrs) {
++ scope.direction = attrs.direction;
++ var runScroll = true;
++ var windowEl = angular.element($window);
++ windowEl.on("scroll", function() {
++ if (runScroll) {
++ lElement.addClass("fade-out");
++ $timeout(function() {
++ lElement.addClass("hide");
++ }, 1e3);
++ runScroll = false;
++ }
++ });
++ }
++ };
++ } ]);
++ "use strict";
++ AppServices.Directives.directive("bsmodal", [ "$rootScope", function($rootScope) {
++ return {
++ restrict: "ECA",
++ scope: {
++ title: "@title",
++ buttonid: "=buttonid",
++ footertext: "=footertext",
++ closelabel: "=closelabel"
++ },
++ transclude: true,
++ templateUrl: "dialogs/modal.html",
++ replace: true,
++ link: function linkFn(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) {
++ if (scope.dialogForm.$valid) {
++ console.log(parentCtrl);
++ scope.$parent[attr](attrs.id);
++ } else {
++ $rootScope.$broadcast("alert", "error", "Please check your form input and resubmit.");
++ }
++ };
++ }
++ };
++ } ]);
++ "use strict";
++ AppServices.Controllers.controller("AlertCtrl", [ "$scope", "$rootScope", "$timeout", function($scope, $rootScope, $timeout) {
++ $scope.alertDisplay = "none";
++ $scope.alerts = [];
++ $scope.$on("alert", function(event, type, message, permanent) {
++ $scope.addAlert(type, message, permanent);
++ });
++ $scope.$on("clear-alerts", function(event, message) {
++ $scope.alerts = [];
++ });
++ $scope.addAlert = function(type, message, permanent) {
++ $scope.alertDisplay = "block";
++ $scope.alerts.push({
++ type: type,
++ msg: message
++ });
++ $scope.applyScope();
++ if (!permanent) {
++ $timeout(function() {
++ $scope.alerts.shift();
++ }, 5e3);
++ }
++ };
++ $scope.closeAlert = function(index) {
++ $scope.alerts.splice(index, 1);
++ };
++ } ]);
++ "use strict";
++ AppServices.Directives.directive("alerti", [ "$rootScope", "$timeout", function($rootScope, $timeout) {
++ return {
++ restrict: "ECA",
++ scope: {
++ type: "=type",
++ closeable: "@closeable",
++ index: "&index"
++ },
++ template: '<div class="alert" ng-class="type && \'alert-\' + type">' + ' <button ng-show="closeable" type="button" class="close" ng-click="closeAlert(index)">×</button>' + ' <i ng-if="type === \'warning\'" class="pictogram pull-left" style="font-size:3em;line-height:0.4">💥</i>' + ' <i ng-if="type === \'info\'" class="pictogram pull-left">ℹ</i>' + ' <i ng-if="type === \'error\'" class="pictogram pull-left">⚡</i>' + ' <i ng-if="type === \'success\'" class="pictogram pull-left">👍</i>' + "<div ng-transclude></div>" + "</div>",
++ replace: true,
++ transclude: true,
++ link: function linkFn(scope, lElement, attrs) {
++ $timeout(function() {
++ lElement.addClass("fade-out");
++ }, 4e3);
++ lElement.click(function() {
++ if (attrs.index) {
++ scope.$parent.closeAlert(attrs.index);
++ }
++ });
++ setTimeout(function() {
++ lElement.addClass("alert-animate");
++ }, 10);
++ }
++ };
++ } ]);
++ "use strict";
++ AppServices.Directives.directive("appswitcher", [ "$rootScope", function($rootScope) {
++ return {
++ restrict: "ECA",
++ scope: "=",
++ templateUrl: "global/appswitcher-template.html",
++ replace: true,
++ transclude: true,
++ link: function linkFn(scope, lElement, attrs) {
++ var classNameOpen = "open";
++ $("ul.nav li.dropdownContainingSubmenu").hover(function() {
++ $(this).addClass(classNameOpen);
++ }, function() {
++ $(this).removeClass(classNameOpen);
++ });
++ $("#globalNav > a").mouseover(globalNavDetail);
++ $("#globalNavDetail").mouseover(globalNavDetail);
++ $("#globalNavSubmenuContainer ul li").mouseover(function() {
++ $("#globalNavDetail > div").removeClass(classNameOpen);
++ $("#" + this.getAttribute("data-globalNavDetail")).addClass(classNameOpen);
++ });
++ function globalNavDetail() {
++ $("#globalNavDetail > div").removeClass(classNameOpen);
++ $("#globalNavDetailApiPlatform").addClass(classNameOpen);
++ }
++ }
++ };
++ } ]);
++ "use strict";
++ AppServices.Services.factory("help", function($rootScope, $http, $analytics) {
++ $rootScope.help = {};
++ $rootScope.help.helpButtonStatus = "Enable Help";
++ $rootScope.help.helpTooltipsEnabled = false;
++ $rootScope.help.clicked = false;
++ $rootScope.help.showHelpButtons = false;
++ var tooltipStartTime;
++ var helpStartTime;
++ var introjs_step;
++ $rootScope.help.sendTooltipGA = function(tooltipName) {
++ $analytics.eventTrack("tooltip - " + $rootScope.currentPath, {
++ category: "App Services",
++ label: tooltipName
++ });
++ };
++ $rootScope.help.toggleTooltips = function() {
++ if ($rootScope.help.helpTooltipsEnabled == false) {
++ $rootScope.help.helpButtonStatus = "Disable Help";
++ $rootScope.help.helpTooltipsEnabled = true;
++ showHelpModal("tooltips");
++ } else {
++ $rootScope.help.helpButtonStatus = "Enable Help";
++ $rootScope.help.helpTooltipsEnabled = false;
++ }
++ };
++ $rootScope.help.IntroOptions = {
++ steps: [],
++ showStepNumbers: false,
++ exitOnOverlayClick: true,
++ exitOnEsc: true,
++ nextLabel: "Next",
++ prevLabel: "Back",
++ skipLabel: "Exit",
++ doneLabel: "Done"
++ };
++ $rootScope.$on("$routeChangeSuccess", function(event, current) {
++ var path = current.$$route ? current.$$route.originalPath : null;
++ if (path == "/org-overview") {
++ $rootScope.help.showHelpButtons = true;
++ getHelpJson(path).success(function(json) {
++ var helpJson = json;
++ setHelpStrings(helpJson);
++ showHelpModal("tour");
++ });
++ } else {
++ $rootScope.help.showHelpButtons = false;
++ }
++ });
++ var showHelpModal = function(helpType) {
++ var shouldHelp = location.search.indexOf("noHelp") <= 0;
++ if (helpType == "tour" && !getHelpStatus(helpType)) {
++ shouldHelp && $rootScope.showModal("introjs");
++ } else if (helpType == "tooltips" && !getHelpStatus(helpType)) {
++ shouldHelp && $rootScope.showModal("tooltips");
++ }
++ };
++ var setHelpStrings = function(helpJson) {
++ $rootScope.help.IntroOptions.steps = helpJson.introjs;
++ angular.forEach(helpJson.tooltip, function(value, binding) {
++ $rootScope[binding] = value;
++ });
++ };
++ $rootScope.help.introjs_StartEvent = function() {
++ helpStartTime = Date.now();
++ introjs_step = 1;
++ };
++ $rootScope.help.introjs_ExitEvent = function() {
++ var introjs_time = Math.round((Date.now() - helpStartTime) / 1e3);
++ $analytics.eventTrack("introjs timing - " + $rootScope.currentPath, {
++ category: "App Services",
++ label: introjs_time + "s"
++ });
++ $analytics.eventTrack("introjs exit - " + $rootScope.currentPath, {
++ category: "App Services",
++ label: "step" + introjs_step
++ });
++ };
++ $rootScope.help.introjs_ChangeEvent = function() {
++ introjs_step++;
++ };
++ var getHelpJson = function(path) {
++ return $http.jsonp("http://sdk.apigee.com.s3.amazonaws.com/portal_help" + path + "/helpJson.json?callback=JSON_CALLBACK");
++ };
++ var getHelpStatus = function(helpType) {
++ var status;
++ if (helpType == "tour") {
++ status = localStorage.getItem("ftu_tour");
++ localStorage.setItem("ftu_tour", "false");
++ } else if (helpType == "tooltips") {
++ status = localStorage.getItem("ftu_tooltips");
++ localStorage.setItem("ftu_tooltips", "false");
++ }
++ return status;
++ };
++ });
++ AppServices.Directives.directive("insecureBanner", [ "$rootScope", "ug", function($rootScope, ug) {
++ return {
++ restrict: "E",
++ transclude: true,
++ templateUrl: "global/insecure-banner.html",
++ link: function linkFn(scope, lElement, attrs) {
++ scope.securityWarning = false;
++ scope.$on("roles-received", function(evt, roles) {
++ scope.securityWarning = false;
++ if (!roles || !roles._list) return;
++ roles._list.forEach(function(roleHolder) {
++ var role = roleHolder._data;
++ if (role.name.toUpperCase() === "GUEST") {
++ roleHolder.getPermissions(function(err, data) {
++ if (!err) {
++ if (roleHolder.permissions) {
++ roleHolder.permissions.forEach(function(permission) {
++ if (permission.path.indexOf("/**") >= 0) {
++ scope.securityWarning = true;
++ scope.applyScope();
++ }
++ });
++ }
++ }
++ });
++ }
++ });
++ });
++ var initialized = false;
++ scope.$on("app-initialized", function() {
++ !initialized && ug.getRoles();
++ initialized = true;
++ });
++ scope.$on("app-changed", function() {
++ scope.securityWarning = false;
++ ug.getRoles();
++ });
++ }
++ };
++ } ]);
++ "use strict";
++ AppServices.Constants.constant("configuration", {
++ ITEMS_URL: "global/temp.json"
++ });
++ "use strict";
++ AppServices.Controllers.controller("PageCtrl", [ "ug", "help", "utility", "$scope", "$rootScope", "$location", "$routeParams", "$q", "$route", "$log", "$analytics", function(ug, help, utility, $scope, $rootScope, $location, $routeParams, $q, $route, $log, $analytics) {
++ var initScopeVariables = function() {
++ $scope.loadingText = "Loading...";
++ $scope.use_sso = false;
++ $scope.newApp = {
++ name: ""
++ };
++ $scope.getPerm = "";
++ $scope.postPerm = "";
++ $scope.putPerm = "";
++ $scope.deletePerm = "";
++ $scope.usersTypeaheadValues = [];
++ $scope.groupsTypeaheadValues = [];
++ $scope.rolesTypeaheadValues = [];
++ $rootScope.sdkActive = false;
++ $rootScope.demoData = false;
++ $scope.queryStringApplied = false;
++ $rootScope.autoUpdateTimer = Usergrid.config ? Usergrid.config.autoUpdateTimer : 61;
++ $rootScope.requiresDeveloperKey = Usergrid.config ? Usergrid.config.client.requiresDeveloperKey : false;
++ $rootScope.loaded = $rootScope.activeUI = false;
++ for (var key in Usergrid.regex) {
++ $scope[key] = Usergrid.regex[key];
++ }
++ $scope.options = Usergrid.options;
++ var getQuery = function() {
++ var result = {}, queryString = location.search.slice(1), re = /([^&=]+)=([^&]*)/g, m;
++ while (m = re.exec(queryString)) {
++ result[decodeURIComponent(m[1])] = decodeURIComponent(m[2]);
++ }
++ return result;
++ };
++ $scope.queryString = getQuery();
++ };
++ initScopeVariables();
++ $rootScope.urls = function() {
++ var urls = ug.getUrls($scope.queryString);
++ $scope.apiUrl = urls.apiUrl;
++ $scope.use_sso = urls.use_sso;
++ return urls;
++ };
++ $rootScope.gotoPage = function(path) {
++ $location.path(path);
++ };
++ var notRegistration = function() {
++ return "/forgot-password" !== $location.path() && "/register" !== $location.path();
++ };
++ var verifyUser = function() {
++ if ($location.path().slice(0, "/login".length) !== "/login") {
++ $rootScope.currentPath = $location.path();
++ }
++ if ($routeParams.access_token && $routeParams.admin_email && $routeParams.uuid) {
++ ug.set("token", $routeParams.access_token);
++ ug.set("email", $routeParams.admin_email);
++ ug.set("uuid", $routeParams.uuid);
++ $location.search("access_token", null);
++ $location.search("admin_email", null);
++ $location.search("uuid", null);
++ }
++ ug.checkAuthentication(true);
++ };
++ $scope.profile = function() {
++ if ($scope.use_sso) {
++ window.location = $rootScope.urls().PROFILE_URL + "?callback=" + encodeURIComponent($location.absUrl());
++ } else {
++ $location.path("/profile");
++ }
++ };
++ $rootScope.showModal = function(id) {
++ $("#" + id).modal("show");
++ };
++ $rootScope.hideModal = function(id) {
++ $("#" + id).modal("hide");
++ };
++ $scope.deleteEntities = function(collection, successBroadcast, errorMessage) {
++ collection.resetEntityPointer();
++ var entitiesToDelete = [];
++ while (collection.hasNextEntity()) {
++ var entity = collection.getNextEntity();
++ var checked = entity.checked;
++ if (checked) {
++ entitiesToDelete.push(entity);
++ }
++ }
++ var count = 0, success = false;
++ for (var i = 0; i < entitiesToDelete.length; i++) {
++ var entity = entitiesToDelete[i];
++ collection.destroyEntity(entity, function(err) {
++ count++;
++ if (err) {
++ $rootScope.$broadcast("alert", "error", errorMessage);
++ $rootScope.$broadcast(successBroadcast + "-error", err);
++ } else {
++ success = true;
++ }
++ if (count === entitiesToDelete.length) {
++ success && $rootScope.$broadcast(successBroadcast);
++ $scope.applyScope();
++ }
++ });
++ }
++ };
++ $scope.selectAllEntities = function(list, that, varName, setValue) {
++ varName = varName || "master";
++ var val = that[varName];
++ if (setValue == undefined) {
++ setValue = true;
++ }
++ if (setValue) {
++ that[varName] = val = !val;
++ }
++ list.forEach(function(entitiy) {
++ entitiy.checked = val;
++ });
++ };
++ $scope.createPermission = function(type, entity, path, permissions) {
++ if (path.charAt(0) != "/") {
++ path = "/" + path;
++ }
++ var ops = "";
++ var s = "";
++ if (permissions.getPerm) {
++ ops = "get";
++ s = ",";
++ }
++ if (permissions.postPerm) {
++ ops = ops + s + "post";
++ s = ",";
++ }
++ if (permissions.putPerm) {
++ ops = ops + s + "put";
++ s = ",";
++ }
++ if (permissions.deletePerm) {
++ ops = ops + s + "delete";
++ s = ",";
++ }
++ var permission = ops + ":" + path;
++ return permission;
++ };
++ $scope.formatDate = function(date) {
++ return new Date(date).toUTCString();
++ };
++ $scope.clearCheckbox = function(id) {
++ if ($("#" + id).attr("checked")) {
++ $("#" + id).click();
++ }
++ };
++ $scope.removeFirstSlash = function(path) {
++ return path.indexOf("/") === 0 ? path.substring(1, path.length) : path;
++ };
++ $scope.applyScope = function(cb) {
++ cb = typeof cb === "function" ? cb : function() {};
++ if (!this.$$phase) {
++ return this.$apply(cb);
++ } else {
++ cb();
++ }
++ };
++ $scope.valueSelected = function(list) {
++ return list && list.some(function(item) {
++ return item.checked;
++ });
++ };
++ $scope.sendHelp = function(modalId) {
++ ug.jsonpRaw("apigeeuihelpemail", "", {
++ useremail: $rootScope.userEmail
++ }).then(function() {
++ $rootScope.$broadcast("alert", "success", "Email sent. Our team will be in touch with you shortly.");
++ }, function() {
++ $rootScope.$broadcast("alert", "error", "Problem Sending Email. Try sending an email to mobile@apigee.com.");
++ });
++ $scope.hideModal(modalId);
++ };
++ $scope.$on("users-typeahead-received", function(event, users) {
++ $scope.usersTypeaheadValues = users;
++ if (!$scope.$$phase) {
++ $scope.$apply();
++ }
++ });
++ $scope.$on("groups-typeahead-received", function(event, groups) {
++ $scope.groupsTypeaheadValues = groups;
++ if (!$scope.$$phase) {
++ $scope.$apply();
++ }
++ });
++ $scope.$on("roles-typeahead-received", function(event, roles) {
++ $scope.rolesTypeaheadValues = roles;
++ if (!$scope.$$phase) {
++ $scope.$apply();
++ }
++ });
++ $scope.$on("checkAuthentication-success", function() {
++ sessionStorage.setItem("authenticateAttempts", 0);
++ $scope.loaded = true;
++ $rootScope.activeUI = true;
++ $scope.applyScope();
++ if (!$scope.queryStringApplied) {
++ $scope.queryStringApplied = true;
++ setTimeout(function() {
++ if ($scope.queryString.org) {
++ $rootScope.$broadcast("change-org", $scope.queryString.org);
++ }
++ }, 1e3);
++ }
++ $rootScope.$broadcast("app-initialized");
++ });
++ $scope.$on("checkAuthentication-error", function(args, err, missingData, email) {
++ $scope.loaded = true;
++ if (err && !$scope.use_sso && notRegistration()) {
++ ug.logout();
++ $location.path("/login");
++ $scope.applyScope();
++ } else {
++ if (missingData && notRegistration()) {
++ if (!email && $scope.use_sso) {
++ window.location = $rootScope.urls().LOGIN_URL + "?callback=" + encodeURIComponent($location.absUrl().split("?")[0]);
++ return;
++ }
++ ug.reAuthenticate(email);
++ }
++ }
++ });
++ $scope.$on("reAuthenticate-success", function(args, err, data, user, organizations, applications) {
++ sessionStorage.setItem("authenticateAttempts", 0);
++ $rootScope.$broadcast("loginSuccesful", user, organizations, applications);
++ $rootScope.$emit("loginSuccesful", user, organizations, applications);
++ $rootScope.$broadcast("checkAuthentication-success");
++ $scope.applyScope(function() {
++ $scope.deferredLogin.resolve();
++ $location.path("/org-overview");
++ });
++ });
++ var authenticateAttempts = parseInt(sessionStorage.getItem("authenticateAttempts") || 0);
++ $scope.$on("reAuthenticate-error", function() {
++ if ($scope.use_sso) {
++ if (authenticateAttempts++ > 5) {
++ $rootScope.$broadcast("alert", "error", "There is an issue with authentication. Please contact support.");
++ return;
++ }
++ console.error("Failed to login via sso " + authenticateAttempts);
++ sessionStorage.setItem("authenticateAttempts", authenticateAttempts);
++ window.location = $rootScope.urls().LOGIN_URL + "?callback=" + encodeURIComponent($location.absUrl().split("?")[0]);
++ } else {
++ if (notRegistration()) {
++ ug.logout();
++ $location.path("/login");
++ $scope.applyScope();
++ }
++ }
++ });
++ $scope.$on("loginSuccessful", function() {
++ $rootScope.activeUI = true;
++ });
++ $scope.$on("app-changed", function(args, oldVal, newVal, preventReload) {
++ if (newVal !== oldVal && !preventReload) {
++ $route.reload();
++ }
++ });
++ $scope.$on("org-changed", function(args, oldOrg, newOrg) {
++ ug.getApplications();
++ $route.reload();
++ });
++ $scope.$on("app-settings-received", function(evt, data) {});
++ $scope.$on("request-times-slow", function(evt, averageRequestTimes) {
++ $rootScope.$broadcast("alert", "info", "We are experiencing performance issues on our server. Please click Get Help for support if this continues.");
++ });
++ var lastPage = "";
++ $scope.$on("$routeChangeSuccess", function() {
++ verifyUser();
++ $scope.showDemoBar = $location.path().slice(0, "/performance".length) === "/performance";
++ if (!$scope.showDemoBar) {
++ $rootScope.demoData = false;
++ }
++ setTimeout(function() {
++ lastPage = "";
++ }, 50);
++ var path = window.location.pathname.replace("index-debug.html", "");
++ lastPage === "" && $analytics.pageTrack((path + $location.path()).replace("//", "/"));
++ lastPage = $location.path();
++ });
++ $scope.$on("applications-received", function(event, applications) {
++ $scope.applications = applications;
++ $scope.hasApplications = Object.keys(applications).length > 0;
++ });
++ ug.getAppSettings();
++ $rootScope.startFirstTimeUser = function() {
++ $rootScope.hideModal("introjs");
++
<TRUNCATED>
[5/9] git commit: Merge pull request #89 from amuramoto/master
Posted by sn...@apache.org.
Merge pull request #89 from amuramoto/master
Fixed img path
Project: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/commit/3313695d
Tree: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/tree/3313695d
Diff: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/diff/3313695d
Branch: refs/heads/master
Commit: 3313695d4d139172e6997a43df6e0634ba82f8aa
Parents: d5b6c97 09611d5
Author: Shawn Feldman <sh...@gmail.com>
Authored: Mon Mar 31 14:37:14 2014 -0600
Committer: Shawn Feldman <sh...@gmail.com>
Committed: Mon Mar 31 14:37:14 2014 -0600
----------------------------------------------------------------------
portal/css/dash.min.css | 2 +-
portal/css/main.css | 10 +-
portal/js/usergrid-dev.min.js | 19754 +++++++++++++++++++++++++++++++++++
3 files changed, 19760 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
[6/9] building files
Posted by sn...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/70780481/portal/js/usergrid-dev.min.js
----------------------------------------------------------------------
diff --git a/portal/js/usergrid-dev.min.js b/portal/js/usergrid-dev.min.js
index 0e96767..af849c2 100644
--- a/portal/js/usergrid-dev.min.js
+++ b/portal/js/usergrid-dev.min.js
@@ -4511,19760 +4511,6 @@
$templateCache.put("users/users-tabs.html", "\n" + "\n" + "\n");
$templateCache.put("users/users.html", '<div class="content-page">\n' + "\n" + ' <page-title title=" Users" icon="👤"></page-title>\n' + ' <bsmodal id="newUser"\n' + ' title="Create New User"\n' + ' close="hideModal"\n' + ' closelabel="Cancel"\n' + ' buttonid="users"\n' + ' extrabutton="newUserDialog"\n' + ' extrabuttonlabel="Create"\n' + " ng-cloak>\n" + " <fieldset>\n" + ' <div class="control-group">\n' + ' <label for="new-user-username">Username</label>\n' + "\n" + ' <div class="controls">\n' + ' <input type="text" required ng-model="$parent.newUser.newusername" ng-pattern="usernameRegex" ng-attr-title="{{usernameRegexDescription}}" name="username" id="new-user-username" class="input-xlarge" ug-validate/>\n' + ' <p class="help-block hide"></p>\n' + " </div>\n" + " </div>\n" + ' <div class="control-group">\n' + ' <label for="new-us
er-fullname">Full name</label>\n' + "\n" + ' <div class="controls">\n' + ' <input type="text" required ng-attr-title="{{nameRegexDescription}}" ng-pattern="nameRegex" ng-model="$parent.newUser.name" name="name" id="new-user-fullname" class="input-xlarge" ug-validate/>\n' + "\n" + ' <p class="help-block hide"></p>\n' + " </div>\n" + " </div>\n" + ' <div class="control-group">\n' + ' <label for="new-user-email">Email</label>\n' + "\n" + ' <div class="controls">\n' + ' <input type="email" required ng-model="$parent.newUser.email" pattern="emailRegex" ng-attr-title="{{emailRegexDescription}}" name="email" id="new-user-email" class="input-xlarge" ug-validate/>\n' + "\n" + ' <p class="help-block hide"></p>\n' + " </div>\n" + " </div>\n" + ' <div class="control-group">\n' + ' <label for="new-user-password">Password</label>\n' + "\n" + ' <div class="controls">\n' + ' <input
type="password" required ng-pattern="passwordRegex" ng-attr-title="{{passwordRegexDescription}}" ng-model="$parent.newUser.newpassword" name="password" id="new-user-password" ug-validate\n' + ' class="input-xlarge"/>\n' + "\n" + ' <p class="help-block hide"></p>\n' + " </div>\n" + " </div>\n" + ' <div class="control-group">\n' + ' <label for="new-user-re-password">Confirm password</label>\n' + "\n" + ' <div class="controls">\n' + ' <input type="password" required ng-pattern="passwordRegex" ng-attr-title="{{passwordRegexDescription}}" ng-model="$parent.newUser.repassword" name="re-password" id="new-user-re-password" ug-validate\n' + ' class="input-xlarge"/>\n' + "\n" + ' <p class="help-block hide"></p>\n' + " </div>\n" + " </div>\n" + " </fieldset>\n" + " </bsmodal>\n" + "\n" + ' <bsmodal id="deleteUser"\n' + ' title="Delete User"\n' + ' close="hideModal"\
n' + ' closelabel="Cancel"\n' + ' extrabutton="deleteUsersDialog"\n' + ' extrabuttonlabel="Delete"\n' + ' buttonid="deleteusers"\n' + " ng-cloak>\n" + " <p>Are you sure you want to delete the user(s)?</p>\n" + " </bsmodal>\n" + "\n" + ' <section class="row-fluid">\n' + ' <div class="span3 user-col">\n' + "\n" + ' <div class="button-toolbar span12">\n' + ' <a title="Select All" class="btn btn-primary toolbar select-all" ng-show="hasUsers" ng-click="selectAllEntities(usersCollection._list,this,\'usersSelected\',true)" ng-model="usersSelected"> <i class="pictogram">⊟</i></a>\n' + ' <button title="Delete" class="btn btn-primary toolbar" ng-disabled="!hasUsers || !valueSelected(usersCollection._list)" ng-click="showModal(\'deleteUser\')" id="delete-user-button"><i class="pictogram">☕</i></button>\n' + ' <button title="Add" class="btn btn-primary toolbar" ng-click="showModal(\'newUser\'
)" id="new-user-button" ng-attr-id="new-user-button"><i class="pictogram"></i></button>\n' + " </div>\n" + ' <ul class="user-list">\n' + ' <li ng-class="selectedUser._data.uuid === user._data.uuid ? \'selected\' : \'\'" ng-repeat="user in usersCollection._list" ng-click="selectUser(user._data.uuid)">\n' + " <input\n" + ' type="checkbox"\n' + " id=\"user-{{user.get('username')}}-checkbox\"\n" + " ng-value=\"user.get('uuid')\"\n" + ' ng-checked="master"\n' + ' ng-model="user.checked"\n' + " >\n" + " <a href=\"javaScript:void(0)\" id=\"user-{{user.get('username')}}-link\" >{{user.get('username')}}</a>\n" + ' <span ng-if="user.name" class="label">Display Name:</span>{{user.name}}\n' + " </li>\n" + " </ul>\n" + "\n" + ' <div style="padding: 10px 5px 10px 5px">\n' + ' <button class="btn btn-primary to
olbar" ng-click="getPrevious()" style="display:{{previous_display}}">< Previous\n' + " </button>\n" + ' <button class="btn btn-primary toolbar" ng-click="getNext()" style="display:{{next_display}}; float:right;">Next >\n' + " </button>\n" + " </div>\n" + "\n" + " </div>\n" + "\n" + ' <div class="span9 tab-content" ng-show="hasUsers">\n' + ' <div class="menu-toolbar">\n' + ' <ul class="inline">\n' + ' <li class="tab" ng-class="currentUsersPage.route === \'/users/profile\' ? \'selected\' : \'\'"><a class="btn btn-primary toolbar" ng-click="selectUserPage(\'/users/profile\')"><i class="pictogram"></i>Profile</a></li>\n' + ' <li class="tab" ng-class="currentUsersPage.route === \'/users/groups\' ? \'selected\' : \'\'"><a class="btn btn-primary toolbar" ng-click="selectUserPage(\'/users/groups\')"><i class="pictogram">👥</i>Groups</a></li>\n' + ' <li class="tab" ng-class="currentUsersPage.route =
== \'/users/activities\' ? \'selected\' : \'\'"><a class="btn btn-primary toolbar" ng-click="selectUserPage(\'/users/activities\')"><i class="pictogram"></i>Activities</a></li>\n' + ' <li class="tab" ng-class="currentUsersPage.route === \'/users/feed\' ? \'selected\' : \'\'"><a class="btn btn-primary toolbar" ng-click="selectUserPage(\'/users/feed\')"><i class="pictogram">📄</i>Feed</a></li>\n' + ' <li class="tab" ng-class="currentUsersPage.route === \'/users/graph\' ? \'selected\' : \'\'"><a class="btn btn-primary toolbar" ng-click="selectUserPage(\'/users/graph\')"><i class="pictogram">☁</i>Graph</a></li>\n' + ' <li class="tab" ng-class="currentUsersPage.route === \'/users/roles\' ? \'selected\' : \'\'"><a class="btn btn-primary toolbar" ng-click="selectUserPage(\'/users/roles\')"><i class="pictogram">🌎</i>Roles & Permissions</a></li>\n' + " </ul>\n" + " </div>\n" + ' <span ng-include="currentUsersPage.te
mplate"></span>\n' + " </div>\n" + " </section>\n" + "</div>");
} ]);
- (function(exports, global) {
- global["true"] = exports;
- "use strict";
- var polyfills = function(window, Object) {
- window.requestAnimFrame = function() {
- return window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame || function(callback, element) {
- window.setTimeout(callback, 1e3 / 60);
- };
- }();
- Object.defineProperty(Object.prototype, "clone", {
- enumerable: false,
- writable: true,
- value: function() {
- var i, newObj = this instanceof Array ? [] : {};
- for (i in this) {
- if (i === "clone") {
- continue;
- }
- if (this[i] && typeof this[i] === "object") {
- newObj[i] = this[i].clone();
- } else {
- newObj[i] = this[i];
- }
- }
- return newObj;
- }
- });
- Object.defineProperty(Object.prototype, "stringifyJSON", {
- enumerable: false,
- writable: true,
- value: function() {
- return JSON.stringify(this, null, " ");
- }
- });
- };
- polyfills(window, Object);
- var global = global || this;
- var 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", []);
- AppServices.Performance = angular.module("appservices.performance", []);
- AppServices.MAX = angular.module("appservices.max", []);
- angular.module("appservices", [ "ngRoute", "ngResource", "ngSanitize", "ui.bootstrap", "angulartics", "angulartics.google.analytics", "appservices.filters", "appservices.services", "appservices.directives", "appservices.constants", "appservices.controllers", "appservices.max", "angular-intro" ]).config([ "$routeProvider", "$locationProvider", "$sceDelegateProvider", "$analyticsProvider", function($routeProvider, $locationProvider, $sceDelegateProvider, $analyticsProvider) {
- $routeProvider.when("/org-overview", {
- templateUrl: "org-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("/getting-started/setup", {
- templateUrl: "app-overview/getting-started.html",
- controller: "GettingStartedCtrl"
- }).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.html",
- 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: "DataCtrl"
- }).when("/data/entity", {
- templateUrl: "data/entity.html",
- controller: "EntityCtrl"
- }).when("/data/shell", {
- templateUrl: "data/shell.html",
- controller: "ShellCtrl"
- }).when("/profile/organizations", {
- templateUrl: "profile/organizations.html",
- controller: "OrgCtrl"
- }).when("/profile/profile", {
- templateUrl: "profile/profile.html",
- controller: "ProfileCtrl"
- }).when("/profile", {
- templateUrl: "profile/account.html",
- controller: "AccountCtrl"
- }).when("/activities", {
- templateUrl: "activities/activities.html",
- controller: "ActivitiesCtrl"
- }).when("/shell", {
- templateUrl: "shell/shell.html",
- controller: "ShellCtrl"
- }).when("/logout", {
- templateUrl: "login/logout.html",
- controller: "LogoutCtrl"
- }).otherwise({
- redirectTo: "/org-overview"
- });
- $locationProvider.html5Mode(false).hashPrefix("!");
- $sceDelegateProvider.resourceUrlWhitelist([ "self", "http://apigee-internal-prod.jupiter.apigee.net/**", "http://apigee-internal-prod.mars.apigee.net/**", "https://appservices.apigee.com/**", "https://api.usergrid.com/**" ]);
- $analyticsProvider.virtualPageviews(false);
- $analyticsProvider.firstPageview(false);
- } ]);
- AppServices.Controllers.controller("ActivitiesCtrl", [ "ug", "$scope", "$rootScope", "$location", "$route", function(ug, $scope, $rootScope, $location, $route) {
- $scope.$on("app-activities-received", function(evt, data) {
- $scope.activities = data;
- $scope.$apply();
- });
- $scope.$on("app-activities-error", function(evt, data) {
- $rootScope.$broadcast("alert", "error", "Application failed to retreive activities data.");
- });
- ug.getActivities();
- } ]);
- "use strict";
- AppServices.Controllers.controller("AppOverviewCtrl", [ "ug", "charts", "$scope", "$rootScope", "$log", function(ug, charts, $scope, $rootScope, $log) {
- var createGradient = function(color1, color2) {
- var perShapeGradient = {
- x1: 0,
- y1: 0,
- x2: 0,
- y2: 1
- };
- return {
- linearGradient: perShapeGradient,
- stops: [ [ 0, color1 ], [ 1, color2 ] ]
- };
- };
- $scope.appOverview = {};
- $scope.collections = [];
- $scope.graph = "";
- $scope.$on("top-collections-received", function(event, collections) {
- var dataDescription = {
- bar1: {
- labels: [ "Total" ],
- dataAttr: [ "title", "count" ],
- colors: [ createGradient("rgba(36,151,212,0.6)", "rgba(119,198,240,0.6)") ],
- borderColor: "#1b97d1"
- }
- };
- $scope.collections = collections;
- var arr = [];
- for (var i in collections) {
- if (collections.hasOwnProperty(i)) {
- arr.push(collections[i]);
- }
- }
- $scope.appOverview = {};
- if (!$rootScope.chartTemplate) {
- ug.httpGet(null, "js/charts/highcharts.json").then(function(success) {
- $rootScope.chartTemplate = success;
- $scope.appOverview.chart = angular.copy($rootScope.chartTemplate.pareto);
- $scope.appOverview.chart = charts.convertParetoChart(arr, $scope.appOverview.chart, dataDescription.bar1, "1h", "NOW");
- $scope.applyScope();
- }, function(fail) {
- $log.error("Problem getting chart template", fail);
- });
- } else {
- $scope.appOverview.chart = angular.copy($rootScope.chartTemplate.pareto);
- $scope.appOverview.chart = charts.convertParetoChart(arr, $scope.appOverview.chart, dataDescription.bar1, "1h", "NOW");
- $scope.applyScope();
- }
- });
- $scope.$on("app-initialized", function() {
- ug.getTopCollections();
- });
- if ($rootScope.activeUI) {
- ug.getTopCollections();
- }
- } ]);
- "use strict";
- AppServices.Controllers.controller("GettingStartedCtrl", [ "ug", "$scope", "$rootScope", "$location", "$timeout", "$anchorScroll", function(ug, $scope, $rootScope, $location, $timeout, $anchorScroll) {
- $scope.collections = [];
- $scope.graph = "";
- $scope.clientID = "";
- $scope.clientSecret = "";
- var getKeys = function() {
- return ug.jsonpRaw("credentials", "", {});
- };
- $scope.regenerateCredentialsDialog = function(modalId) {
- $scope.orgAPICredentials = {
- client_id: "regenerating...",
- client_secret: "regenerating..."
- };
- ug.regenerateAppCredentials();
- $scope.hideModal(modalId);
- };
- $scope.$on("app-creds-updated", function(event, credentials) {
- if (credentials) {
- $scope.clientID = credentials.client_id;
- $scope.clientSecret = credentials.client_secret;
- if (!$scope.$$phase) {
- $scope.$apply();
- }
- } else {
- setTimeout(function() {
- ug.getAppCredentials();
- }, 5e3);
- }
- });
- ug.getAppCredentials();
- $scope.contentTitle;
- $scope.showSDKDetail = function(name) {
- var introContainer = document.getElementById("intro-container");
- if (name === "nocontent") {
- introContainer.style.height = "0";
- return true;
- }
- introContainer.style.opacity = .1;
- introContainer.style.height = "0";
- var timeout = 0;
- if ($scope.contentTitle) {
- timeout = 500;
- }
- $timeout(function() {
- introContainer.style.height = "1000px";
- introContainer.style.opacity = 1;
- }, timeout);
- $scope.optionName = name;
- $scope.contentTitle = name;
- $scope.sdkLink = "http://apigee.com/docs/content/" + name + "-sdk-redirect";
- $scope.docsLink = "http://apigee.com/docs/app-services/content/installing-apigee-sdk-" + name;
- $scope.getIncludeURL = function() {
- return "app-overview/doc-includes/" + $scope.optionName + ".html";
- };
- };
- $scope.scrollToElement = function(elem) {
- $location.hash(elem);
- $anchorScroll();
- return false;
- };
- } ]);
- "use strict";
- AppServices.Controllers.controller("ChartCtrl", [ "$scope", "$location", function($scope, $location) {} ]);
- "use strict";
- AppServices.Directives.directive("chart", function($rootScope) {
- return {
- restrict: "E",
- scope: {
- chartdata: "=chartdata"
- },
- template: "<div></div>",
- replace: true,
- controller: function($scope, $element) {},
- link: function(scope, element, attrs) {
- scope.$watch("chartdata", function(chartdata, oldchartdata) {
- if (chartdata) {
- var chartsDefaults = {
- chart: {
- renderTo: element[0],
- type: attrs.type || null,
- height: attrs.height || null,
- width: attrs.width || null,
- reflow: true,
- animation: false,
- zoomType: "x"
- }
- };
- if (attrs.type === "pie") {
- chartsDefaults.chart.margin = [ 0, 0, 0, 0 ];
- chartsDefaults.chart.spacingLeft = 0;
- chartsDefaults.chart.spacingRight = 0;
- chartsDefaults.chart.spacingTop = 0;
- chartsDefaults.chart.spacingBottom = 0;
- if (attrs.titleimage) {
- chartdata.title.text = '<img src="' + attrs.titleimage + '">';
- }
- if (attrs.titleicon) {
- chartdata.title.text = '<i class="pictogram ' + attrs.titleiconclass + '">' + attrs.titleicon + "</i>";
- }
- if (attrs.titlecolor) {
- chartdata.title.style.color = attrs.titlecolor;
- }
- if (attrs.titleimagetop) {
- chartdata.title.style.marginTop = attrs.titleimagetop;
- }
- if (attrs.titleimageleft) {
- chartdata.title.style.marginLeft = attrs.titleimageleft;
- }
- }
- if (attrs.type === "line") {
- chartsDefaults.chart.marginTop = 30;
- chartsDefaults.chart.spacingTop = 50;
- }
- if (attrs.type === "column") {
- chartsDefaults.chart.marginBottom = 80;
- }
- if (attrs.type === "area") {
- chartsDefaults.chart.spacingLeft = 0;
- chartsDefaults.chart.spacingRight = 0;
- chartsDefaults.chart.marginLeft = 0;
- chartsDefaults.chart.marginRight = 0;
- }
- Highcharts.setOptions({
- global: {
- useUTC: false
- },
- chart: {
- style: {
- fontFamily: "marquette-light, Helvetica, Arial, sans-serif"
- }
- }
- });
- if (attrs.type === "line") {
- var xAxis1 = chartdata.xAxis[0];
- if (!xAxis1.labels.formatter) {
- xAxis1.labels.formatter = new Function(attrs.xaxislabel);
- }
- if (!xAxis1.labels.step) {
- xAxis1.labels.step = attrs.xaxisstep;
- }
- }
- if (chartdata.tooltip) {
- if (typeof chartdata.tooltip.formatter === "string") {
- chartdata.tooltip.formatter = new Function(chartdata.tooltip.formatter);
- }
- }
- renderChart(chartsDefaults, chartdata);
- }
- }, true);
- }
- };
- });
- function renderChart(chartsDefaults, chartdata, attrs) {
- var newSettings = {};
- $.extend(true, newSettings, chartsDefaults, chartdata);
- var chart = new Highcharts.Chart(newSettings);
- }
- AppServices.Services.factory("charts", function() {
- var lineChart, areaChart, paretoChart, pieChart, pieCompare, xaxis, seriesIndex;
- return {
- convertLineChart: function(chartData, chartTemplate, dataDescription, settings, currentCompare) {
- lineChart = chartTemplate;
- if (typeof chartData[0] === "undefined") {
- chartData[0] = {};
- chartData[0].datapoints = [];
- }
- var dataPoints = chartData[0].datapoints, dPLength = dataPoints.length, label;
- if (currentCompare === "YESTERDAY") {
- seriesIndex = dataDescription.dataAttr.length;
- label = "Yesterday ";
- } else if (currentCompare === "LAST_WEEK") {
- seriesIndex = dataDescription.dataAttr.length;
- label = "Last Week ";
- } else {
- lineChart = chartTemplate;
- seriesIndex = 0;
- lineChart.series = [];
- label = "";
- }
- xaxis = lineChart.xAxis[0];
- xaxis.categories = [];
- if (settings.xaxisformat) {
- xaxis.labels.formatter = new Function(settings.xaxisformat);
- }
- if (settings.step) {
- xaxis.labels.step = settings.step;
- }
- for (var i = 0; i < dPLength; i++) {
- var dp = dataPoints[i];
- xaxis.categories.push(dp.timestamp);
- }
- if (chartData.length > 1) {
- for (var l = 0; l < chartData.length; l++) {
- if (chartData[l].chartGroupName) {
- dataPoints = chartData[l].datapoints;
- lineChart.series[l] = {};
- lineChart.series[l].data = [];
- lineChart.series[l].name = chartData[l].chartGroupName;
- lineChart.series[l].yAxis = 0;
- lineChart.series[l].type = "line";
- lineChart.series[l].color = dataDescription.colors[i];
- lineChart.series[l].dashStyle = "solid";
- lineChart.series[l].yAxis.title.text = dataDescription.yAxisLabels;
- plotData(l, dPLength, dataPoints, dataDescription.detailDataAttr, true);
- }
- }
- } else {
- var steadyCounter = 0;
- for (var i = seriesIndex; i < dataDescription.dataAttr.length + (seriesIndex > 0 ? seriesIndex : 0); i++) {
- var yAxisIndex = dataDescription.multiAxis ? steadyCounter : 0;
- lineChart.series[i] = {};
- lineChart.series[i].data = [];
- lineChart.series[i].name = label + dataDescription.labels[steadyCounter];
- lineChart.series[i].yAxis = yAxisIndex;
- lineChart.series[i].type = "line";
- lineChart.series[i].color = dataDescription.colors[i];
- lineChart.series[i].dashStyle = "solid";
- lineChart.yAxis[yAxisIndex].title.text = dataDescription.yAxisLabels[dataDescription.yAxisLabels > 1 ? steadyCounter : 0];
- steadyCounter++;
- }
- plotData(seriesIndex, dPLength, dataPoints, dataDescription.dataAttr, false);
- }
- function plotData(counter, dPLength, dataPoints, dataAttrs, detailedView) {
- for (var i = 0; i < dPLength; i++) {
- var dp = dataPoints[i];
- var localCounter = counter;
- for (var j = 0; j < dataAttrs.length; j++) {
- if (typeof dp === "undefined") {
- lineChart.series[localCounter].data.push([ i, 0 ]);
- } else {
- lineChart.series[localCounter].data.push([ i, dp[dataAttrs[j]] ]);
- }
- if (!detailedView) {
- localCounter++;
- }
- }
- }
- }
- return lineChart;
- },
- convertAreaChart: function(chartData, chartTemplate, dataDescription, settings, currentCompare) {
- areaChart = angular.copy(areaChart);
- if (typeof chartData[0] === "undefined") {
- chartData[0] = {};
- chartData[0].datapoints = [];
- }
- var dataPoints = chartData[0].datapoints, dPLength = dataPoints.length, label;
- if (currentCompare === "YESTERDAY") {
- seriesIndex = dataDescription.dataAttr.length;
- label = "Yesterday ";
- } else if (currentCompare === "LAST_WEEK") {
- seriesIndex = dataDescription.dataAttr.length;
- label = "Last Week ";
- } else {
- areaChart = chartTemplate;
- seriesIndex = 0;
- areaChart.series = [];
- label = "";
- }
- xaxis = areaChart.xAxis[0];
- xaxis.categories = [];
- if (settings.xaxisformat) {
- xaxis.labels.formatter = new Function(settings.xaxisformat);
- }
- if (settings.step) {
- xaxis.labels.step = settings.step;
- }
- for (var i = 0; i < dPLength; i++) {
- var dp = dataPoints[i];
- xaxis.categories.push(dp.timestamp);
- }
- if (chartData.length > 1) {
- for (var l = 0; l < chartData.length; l++) {
- if (chartData[l].chartGroupName) {
- dataPoints = chartData[l].datapoints;
- areaChart.series[l] = {};
- areaChart.series[l].data = [];
- areaChart.series[l].fillColor = dataDescription.areaColors[l];
- areaChart.series[l].name = chartData[l].chartGroupName;
- areaChart.series[l].yAxis = 0;
- areaChart.series[l].type = "area";
- areaChart.series[l].pointInterval = 1;
- areaChart.series[l].color = dataDescription.colors[l];
- areaChart.series[l].dashStyle = "solid";
- areaChart.series[l].yAxis.title.text = dataDescription.yAxisLabels;
- plotData(l, dPLength, dataPoints, dataDescription.detailDataAttr, true);
- }
- }
- } else {
- var steadyCounter = 0;
- for (var i = seriesIndex; i < dataDescription.dataAttr.length + (seriesIndex > 0 ? seriesIndex : 0); i++) {
- var yAxisIndex = dataDescription.multiAxis ? steadyCounter : 0;
- areaChart.series[i] = {};
- areaChart.series[i].data = [];
- areaChart.series[i].fillColor = dataDescription.areaColors[i];
- areaChart.series[i].name = label + dataDescription.labels[steadyCounter];
- areaChart.series[i].yAxis = yAxisIndex;
- areaChart.series[i].type = "area";
- areaChart.series[i].pointInterval = 1;
- areaChart.series[i].color = dataDescription.colors[i];
- areaChart.series[i].dashStyle = "solid";
- areaChart.yAxis[yAxisIndex].title.text = dataDescription.yAxisLabels[dataDescription.yAxisLabels > 1 ? steadyCounter : 0];
- steadyCounter++;
- }
- plotData(seriesIndex, dPLength, dataPoints, dataDescription.dataAttr, false);
- }
- function plotData(counter, dPLength, dataPoints, dataAttrs, detailedView) {
- for (var i = 0; i < dPLength; i++) {
- var dp = dataPoints[i];
- var localCounter = counter;
- for (var j = 0; j < dataAttrs.length; j++) {
- if (typeof dp === "undefined") {
- areaChart.series[localCounter].data.push(0);
- } else {
- areaChart.series[localCounter].data.push(dp[dataAttrs[j]]);
- }
- if (!detailedView) {
- localCounter++;
- }
- }
- }
- }
- return areaChart;
- },
- convertParetoChart: function(chartData, chartTemplate, dataDescription, settings, currentCompare) {
- paretoChart = chartTemplate;
- if (typeof chartData === "undefined") {
- chartData = [];
- }
- var label, cdLength = chartData.length, compare = false, allParetoOptions = [], stackedBar = false;
- seriesIndex = 0;
- function getPreviousData() {
- for (var i = 0; i < chartTemplate.series[0].data.length; i++) {
- allParetoOptions.push(chartTemplate.xAxis.categories[i]);
- }
- }
- if (typeof dataDescription.dataAttr[1] === "object") {
- stackedBar = true;
- }
- if (currentCompare === "YESTERDAY") {
- label = "Yesterday ";
- compare = true;
- if (stackedBar) {
- seriesIndex = dataDescription.dataAttr[1].length;
- }
- getPreviousData();
- } else if (currentCompare === "LAST_WEEK") {
- label = "Last Week ";
- compare = true;
- if (stackedBar) {
- seriesIndex = dataDescription.dataAttr[1].length;
- }
- seriesIndex = getPreviousData();
- } else {
- compare = false;
- label = "";
- paretoChart.xAxis.categories = [];
- paretoChart.series = [];
- paretoChart.series[0] = {};
- paretoChart.series[0].data = [];
- paretoChart.legend.enabled = false;
- }
- paretoChart.plotOptions.series.borderColor = dataDescription.borderColor;
- if (compare && !stackedBar) {
- paretoChart.series[1] = {};
- paretoChart.series[1].data = [];
- for (var i = 0; i < allParetoOptions.length; i++) {
- paretoChart.series[1].data.push(0);
- }
- paretoChart.legend.enabled = true;
- }
- for (var i = 0; i < cdLength; i++) {
- var bar = chartData[i];
- if (!compare) {
- paretoChart.xAxis.categories.push(bar[dataDescription.dataAttr[0]]);
- if (typeof dataDescription.dataAttr[1] === "object") {
- createStackedBar(dataDescription, paretoChart, paretoChart.series.length);
- } else {
- paretoChart.series[0].data.push(bar[dataDescription.dataAttr[1]]);
- paretoChart.series[0].name = dataDescription.labels[0];
- paretoChart.series[0].color = dataDescription.colors[0];
- }
- } else {
- var newLabel = bar[dataDescription.dataAttr[0]], newValue = bar[dataDescription.dataAttr[1]], previousIndex = allParetoOptions.indexOf(newLabel);
- if (previousIndex > -1) {
- if (typeof dataDescription.dataAttr[1] === "object") {
- createStackedBar(dataDescription, paretoChart, paretoChart.series.length);
- } else {
- paretoChart.series[1].data[previousIndex] = newValue;
- paretoChart.series[1].name = label !== "" ? label + " " + dataDescription.labels[0] : dataDescription.labels[0];
- paretoChart.series[1].color = dataDescription.colors[1];
- }
- } else {}
- }
- }
- function createStackedBar(dataDescription, paretoChart, startingPoint) {
- paretoChart.plotOptions = {
- series: {
- shadow: false,
- borderColor: dataDescription.borderColor,
- borderWidth: 1
- },
- column: {
- stacking: "normal",
- dataLabels: {
- enabled: true,
- color: Highcharts.theme && Highcharts.theme.dataLabelsColor || "white"
- }
- }
- };
- var start = dataDescription.dataAttr[1].length, steadyCounter = 0, stackName = label;
- if (compare) {
- paretoChart.legend.enabled = true;
- }
- for (var f = seriesIndex; f < start + seriesIndex; f++) {
- if (!paretoChart.series[f]) {
- paretoChart.series[f] = {
- data: []
- };
- }
- paretoChart.series[f].data.push(bar[dataDescription.dataAttr[1][steadyCounter]]);
- paretoChart.series[f].name = label !== "" ? label + " " + dataDescription.labels[steadyCounter] : dataDescription.labels[steadyCounter];
- paretoChart.series[f].color = dataDescription.colors[f];
- paretoChart.series[f].stack = label;
- steadyCounter++;
- }
- }
- return paretoChart;
- },
- convertPieChart: function(chartData, chartTemplate, dataDescription, settings, currentCompare) {
- var label, cdLength = chartData.length, compare = false;
- pieChart = chartTemplate;
- if (currentCompare === "YESTERDAY") {
- label = "Yesterday ";
- compare = false;
- } else if (currentCompare === "LAST_WEEK") {
- label = "Last Week ";
- compare = false;
- } else {
- compare = false;
- pieChart.series[0].data = [];
- if (pieChart.series[0].dataLabels) {
- if (typeof pieChart.series[0].dataLabels.formatter === "string") {
- pieChart.series[0].dataLabels.formatter = new Function(pieChart.series[0].dataLabels.formatter);
- }
- }
- }
- pieChart.plotOptions.pie.borderColor = dataDescription.borderColor;
- if (compare) {
- pieChart.series[1].data = [];
- if (pieChart.series[1].dataLabels) {
- if (typeof pieChart.series[1].dataLabels.formatter === "string") {
- pieChart.series[1].dataLabels.formatter = new Function(pieChart.series[1].dataLabels.formatter);
- }
- }
- }
- var tempArray = [];
- for (var i = 0; i < cdLength; i++) {
- var pie = chartData[i];
- tempArray.push({
- name: pie[dataDescription.dataAttr[0]],
- y: pie[dataDescription.dataAttr[1]],
- color: ""
- });
- }
- sortJsonArrayByProperty(tempArray, "name");
- for (var i = 0; i < tempArray.length; i++) {
- tempArray[i].color = dataDescription.colors[i];
- }
- if (!compare) {
- pieChart.series[0].data = tempArray;
- } else {
- pieChart.series[1].data = tempArray;
- }
- return pieChart;
- }
- };
- function sortJsonArrayByProperty(objArray, prop, direction) {
- if (arguments.length < 2) throw new Error("sortJsonArrayByProp requires 2 arguments");
- var direct = arguments.length > 2 ? arguments[2] : 1;
- if (objArray && objArray.constructor === Array) {
- var propPath = prop.constructor === Array ? prop : prop.split(".");
- objArray.sort(function(a, b) {
- for (var p in propPath) {
- if (a[propPath[p]] && b[propPath[p]]) {
- a = a[propPath[p]];
- b = b[propPath[p]];
- }
- }
- a = a.match(/^\d+$/) ? +a : a;
- b = b.match(/^\d+$/) ? +b : b;
- return a < b ? -1 * direct : a > b ? 1 * direct : 0;
- });
- }
- }
- });
- $(".sessions-bar").sparkline([ 3, 5, 6, 3, 4, 5, 6, 7, 8, 4, 3, 5, 6, 3, 4, 5, 6, 7, 8, 4, 3, 5, 6, 3, 4, 5, 6, 7, 8, 4, 3, 5, 6, 3, 4, 5, 6, 7, 8, 4, 3, 5, 6, 3, 4, 5, 6, 7, 8, 4, 3, 5, 6, 3, 4, 5, 6, 7, 8, 1 ], {
- type: "bar",
- barColor: "#c5c5c5",
- width: "800px",
- height: 100,
- barWidth: 12,
- barSpacing: "1px"
- });
- "use strict";
- AppServices.Controllers.controller("DataCtrl", [ "ug", "$scope", "$rootScope", "$location", function(ug, $scope, $rootScope, $location) {
- var init = function() {
- $scope.verb = "GET";
- $scope.display = "";
- $scope.queryBodyDetail = {};
- $scope.queryBodyDisplay = "none";
- $scope.queryLimitDisplay = "block";
- $scope.queryStringDisplay = "block";
- $scope.entitySelected = {};
- $scope.newCollection = {};
- $rootScope.queryCollection = {};
- $scope.data = {};
- $scope.data.queryPath = "";
- $scope.data.queryBody = '{ "name":"value" }';
- $scope.data.searchString = "";
- $scope.data.queryLimit = "";
- };
- var runQuery = function(verb) {
- $scope.loading = true;
- var queryPath = $scope.removeFirstSlash($scope.data.queryPath || "");
- var searchString = $scope.data.searchString || "";
- var queryLimit = $scope.data.queryLimit || "";
- var body = JSON.parse($scope.data.queryBody || "{}");
- if (verb == "POST" && $scope.validateJson(true)) {
- ug.runDataPOSTQuery(queryPath, body);
- } else if (verb == "PUT" && $scope.validateJson(true)) {
- ug.runDataPutQuery(queryPath, searchString, queryLimit, body);
- } else if (verb == "DELETE") {
- ug.runDataDeleteQuery(queryPath, searchString, queryLimit);
- } else {
- ug.runDataQuery(queryPath, searchString, queryLimit);
- }
- };
- $scope.$on("top-collections-received", function(event, collectionList) {
- $scope.loading = false;
- var ignoredCollections = [ "events" ];
- ignoredCollections.forEach(function(ignoredCollection) {
- collectionList.hasOwnProperty(ignoredCollection) && delete collectionList[ignoredCollection];
- });
- $scope.collectionList = collectionList;
- $scope.queryBoxesSelected = false;
- if (!$scope.queryPath) {
- $scope.loadCollection("/" + collectionList[Object.keys(collectionList).sort()[0]].name);
- }
- $scope.applyScope();
- });
- $scope.$on("error-running-query", function(event) {
- $scope.loading = false;
- runQuery("GET");
- $scope.applyScope();
- });
- $scope.$on("entity-deleted", function(event) {
- $scope.deleteLoading = false;
- $rootScope.$broadcast("alert", "success", "Entities deleted sucessfully");
- $scope.queryBoxesSelected = false;
- $scope.checkNextPrev();
- $scope.applyScope();
- });
- $scope.$on("entity-deleted-error", function(event) {
- $scope.deleteLoading = false;
- runQuery("GET");
- $scope.applyScope();
- });
- $scope.$on("collection-created", function() {
- $scope.newCollection.name = "";
- });
- $scope.$on("query-received", function(event, collection) {
- $scope.loading = false;
- $rootScope.queryCollection = collection;
- ug.getIndexes($scope.data.queryPath);
- $scope.setDisplayType();
- $scope.checkNextPrev();
- $scope.applyScope();
- $scope.queryBoxesSelected = false;
- });
- $scope.$on("indexes-received", function(event, indexes) {
- var fred = indexes;
- });
- $scope.$on("app-changed", function() {
- init();
- });
- $scope.setDisplayType = function() {
- $scope.display = "generic";
- };
- $scope.deleteEntitiesDialog = function(modalId) {
- $scope.deleteLoading = false;
- $scope.deleteEntities($rootScope.queryCollection, "entity-deleted", "error deleting entity");
- $scope.hideModal(modalId);
- };
- $scope.newCollectionDialog = function(modalId) {
- if ($scope.newCollection.name) {
- ug.createCollection($scope.newCollection.name);
- ug.getTopCollections();
- $rootScope.$broadcast("alert", "success", "Collection created successfully.");
- $scope.hideModal(modalId);
- } else {
- $rootScope.$broadcast("alert", "error", "You must specify a collection name.");
- }
- };
- $scope.addToPath = function(uuid) {
- $scope.data.queryPath = "/" + $rootScope.queryCollection._type + "/" + uuid;
- };
- $scope.isDeep = function(item) {
- return Object.prototype.toString.call(item) === "[object Object]";
- };
- $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.validateJson = function(skipMessage) {
- var queryBody = $scope.data.queryBody;
- try {
- queryBody = JSON.parse(queryBody);
- } catch (e) {
- $rootScope.$broadcast("alert", "error", "JSON is not valid");
- return false;
- }
- queryBody = JSON.stringify(queryBody, null, 2);
- !skipMessage && $rootScope.$broadcast("alert", "success", "JSON is valid");
- $scope.data.queryBody = queryBody;
- return true;
- };
- $scope.saveEntity = function(entity) {
- if (!$scope.validateJson()) {
- return false;
- }
- 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) {
- if (err) {
- $rootScope.$broadcast("alert", "error", "error: " + data.error_description);
- } else {
- $rootScope.$broadcast("alert", "success", "entity saved");
- }
- });
- };
- $scope.run = function() {
- $rootScope.queryCollection = "";
- var verb = $scope.verb;
- runQuery(verb);
- };
- $scope.hasProperty = function(prop) {
- var retval = false;
- if (typeof $rootScope.queryCollection._list !== "undefined") {
- angular.forEach($rootScope.queryCollection._list, function(value, key) {
- if (!retval) {
- if (value._data[prop]) {
- retval = true;
- }
- }
- });
- }
- return retval;
- };
- $scope.resetNextPrev = function() {
- $scope.previous_display = "none";
- $scope.next_display = "none";
- };
- $scope.checkNextPrev = function() {
- $scope.resetNextPrev();
- if ($rootScope.queryCollection.hasPreviousPage()) {
- $scope.previous_display = "default";
- }
- if ($rootScope.queryCollection.hasNextPage()) {
- $scope.next_display = "default";
- }
- };
- $scope.selectEntity = function(uuid) {
- $rootScope.selectedEntity = $rootScope.queryCollection.getEntityByUUID(uuid);
- $scope.addToPath(uuid);
- };
- $scope.getJSONView = function(entity) {
- var tempjson = entity.get();
- var 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) {
- if (err) {
- $rootScope.$broadcast("alert", "error", "error getting previous page of data");
- }
- $scope.checkNextPrev();
- $scope.applyScope();
- });
- };
- $scope.getNext = function() {
- $rootScope.queryCollection.getNextPage(function(err) {
- if (err) {
- $rootScope.$broadcast("alert", "error", "error getting next page of data");
- }
- $scope.checkNextPrev();
- $scope.applyScope();
- });
- };
- init();
- $rootScope.queryCollection = $rootScope.queryCollection || {};
- $rootScope.selectedEntity = {};
- if ($rootScope.queryCollection && $rootScope.queryCollection._type) {
- $scope.loadCollection($rootScope.queryCollection._type);
- $scope.setDisplayType();
- }
- ug.getTopCollections();
- $scope.resetNextPrev();
- } ]);
- "use strict";
- AppServices.Controllers.controller("EntityCtrl", [ "ug", "$scope", "$rootScope", "$location", function(ug, $scope, $rootScope, $location) {
- if (!$rootScope.selectedEntity) {
- $location.path("/data");
- return;
- }
- $scope.entityUUID = $rootScope.selectedEntity.get("uuid");
- $scope.entityType = $rootScope.selectedEntity.get("type");
- var tempjson = $rootScope.selectedEntity.get();
- var 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) {
- $rootScope.$broadcast("alert", "error", "JSON is not valid");
- return false;
- }
- queryBody = JSON.stringify(queryBody, null, 2);
- $rootScope.$broadcast("alert", "success", "JSON is valid");
- $scope.queryBody = queryBody;
- return true;
- };
- $scope.saveEntity = function() {
- if (!$scope.validateJson()) {
- return false;
- }
- 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) {
- if (err) {
- $rootScope.$broadcast("alert", "error", "error: " + data.error_description);
- } else {
- $rootScope.$broadcast("alert", "success", "entity saved");
- }
- });
- };
- } ]);
- "use strict";
- AppServices.Directives.directive("balloon", [ "$window", "$timeout", function($window, $timeout) {
- return {
- restrict: "ECA",
- scope: "=",
- template: "" + '<div class="baloon {{direction}}" ng-transclude>' + "</div>",
- replace: true,
- transclude: true,
- link: function linkFn(scope, lElement, attrs) {
- scope.direction = attrs.direction;
- var runScroll = true;
- var windowEl = angular.element($window);
- windowEl.on("scroll", function() {
- if (runScroll) {
- lElement.addClass("fade-out");
- $timeout(function() {
- lElement.addClass("hide");
- }, 1e3);
- runScroll = false;
- }
- });
- }
- };
- } ]);
- "use strict";
- AppServices.Directives.directive("bsmodal", [ "$rootScope", function($rootScope) {
- return {
- restrict: "ECA",
- scope: {
- title: "@title",
- buttonid: "=buttonid",
- footertext: "=footertext",
- closelabel: "=closelabel"
- },
- transclude: true,
- templateUrl: "dialogs/modal.html",
- replace: true,
- link: function linkFn(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) {
- if (scope.dialogForm.$valid) {
- console.log(parentCtrl);
- scope.$parent[attr](attrs.id);
- } else {
- $rootScope.$broadcast("alert", "error", "Please check your form input and resubmit.");
- }
- };
- }
- };
- } ]);
- "use strict";
- AppServices.Controllers.controller("AlertCtrl", [ "$scope", "$rootScope", "$timeout", function($scope, $rootScope, $timeout) {
- $scope.alertDisplay = "none";
- $scope.alerts = [];
- $scope.$on("alert", function(event, type, message, permanent) {
- $scope.addAlert(type, message, permanent);
- });
- $scope.$on("clear-alerts", function(event, message) {
- $scope.alerts = [];
- });
- $scope.addAlert = function(type, message, permanent) {
- $scope.alertDisplay = "block";
- $scope.alerts.push({
- type: type,
- msg: message
- });
- $scope.applyScope();
- if (!permanent) {
- $timeout(function() {
- $scope.alerts.shift();
- }, 5e3);
- }
- };
- $scope.closeAlert = function(index) {
- $scope.alerts.splice(index, 1);
- };
- } ]);
- "use strict";
- AppServices.Directives.directive("alerti", [ "$rootScope", "$timeout", function($rootScope, $timeout) {
- return {
- restrict: "ECA",
- scope: {
- type: "=type",
- closeable: "@closeable",
- index: "&index"
- },
- template: '<div class="alert" ng-class="type && \'alert-\' + type">' + ' <button ng-show="closeable" type="button" class="close" ng-click="closeAlert(index)">×</button>' + ' <i ng-if="type === \'warning\'" class="pictogram pull-left" style="font-size:3em;line-height:0.4">💥</i>' + ' <i ng-if="type === \'info\'" class="pictogram pull-left">ℹ</i>' + ' <i ng-if="type === \'error\'" class="pictogram pull-left">⚡</i>' + ' <i ng-if="type === \'success\'" class="pictogram pull-left">👍</i>' + "<div ng-transclude></div>" + "</div>",
- replace: true,
- transclude: true,
- link: function linkFn(scope, lElement, attrs) {
- $timeout(function() {
- lElement.addClass("fade-out");
- }, 4e3);
- lElement.click(function() {
- if (attrs.index) {
- scope.$parent.closeAlert(attrs.index);
- }
- });
- setTimeout(function() {
- lElement.addClass("alert-animate");
- }, 10);
- }
- };
- } ]);
- "use strict";
- AppServices.Directives.directive("appswitcher", [ "$rootScope", function($rootScope) {
- return {
- restrict: "ECA",
- scope: "=",
- templateUrl: "global/appswitcher-template.html",
- replace: true,
- transclude: true,
- link: function linkFn(scope, lElement, attrs) {
- var classNameOpen = "open";
- $("ul.nav li.dropdownContainingSubmenu").hover(function() {
- $(this).addClass(classNameOpen);
- }, function() {
- $(this).removeClass(classNameOpen);
- });
- $("#globalNav > a").mouseover(globalNavDetail);
- $("#globalNavDetail").mouseover(globalNavDetail);
- $("#globalNavSubmenuContainer ul li").mouseover(function() {
- $("#globalNavDetail > div").removeClass(classNameOpen);
- $("#" + this.getAttribute("data-globalNavDetail")).addClass(classNameOpen);
- });
- function globalNavDetail() {
- $("#globalNavDetail > div").removeClass(classNameOpen);
- $("#globalNavDetailApiPlatform").addClass(classNameOpen);
- }
- }
- };
- } ]);
- "use strict";
- AppServices.Services.factory("help", function($rootScope, $http, $analytics) {
- $rootScope.help = {};
- $rootScope.help.helpButtonStatus = "Enable Help";
- $rootScope.help.helpTooltipsEnabled = false;
- $rootScope.help.clicked = false;
- $rootScope.help.showHelpButtons = false;
- var tooltipStartTime;
- var helpStartTime;
- var introjs_step;
- $rootScope.help.sendTooltipGA = function(tooltipName) {
- $analytics.eventTrack("tooltip - " + $rootScope.currentPath, {
- category: "App Services",
- label: tooltipName
- });
- };
- $rootScope.help.toggleTooltips = function() {
- if ($rootScope.help.helpTooltipsEnabled == false) {
- $rootScope.help.helpButtonStatus = "Disable Help";
- $rootScope.help.helpTooltipsEnabled = true;
- showHelpModal("tooltips");
- } else {
- $rootScope.help.helpButtonStatus = "Enable Help";
- $rootScope.help.helpTooltipsEnabled = false;
- }
- };
- $rootScope.help.IntroOptions = {
- steps: [],
- showStepNumbers: false,
- exitOnOverlayClick: true,
- exitOnEsc: true,
- nextLabel: "Next",
- prevLabel: "Back",
- skipLabel: "Exit",
- doneLabel: "Done"
- };
- $rootScope.$on("$routeChangeSuccess", function(event, current) {
- var path = current.$$route ? current.$$route.originalPath : null;
- if (path == "/org-overview") {
- $rootScope.help.showHelpButtons = true;
- getHelpJson(path).success(function(json) {
- var helpJson = json;
- setHelpStrings(helpJson);
- showHelpModal("tour");
- });
- } else {
- $rootScope.help.showHelpButtons = false;
- }
- });
- var showHelpModal = function(helpType) {
- var shouldHelp = location.search.indexOf("noHelp") <= 0;
- if (helpType == "tour" && !getHelpStatus(helpType)) {
- shouldHelp && $rootScope.showModal("introjs");
- } else if (helpType == "tooltips" && !getHelpStatus(helpType)) {
- shouldHelp && $rootScope.showModal("tooltips");
- }
- };
- var setHelpStrings = function(helpJson) {
- $rootScope.help.IntroOptions.steps = helpJson.introjs;
- angular.forEach(helpJson.tooltip, function(value, binding) {
- $rootScope[binding] = value;
- });
- };
- $rootScope.help.introjs_StartEvent = function() {
- helpStartTime = Date.now();
- introjs_step = 1;
- };
- $rootScope.help.introjs_ExitEvent = function() {
- var introjs_time = Math.round((Date.now() - helpStartTime) / 1e3);
- $analytics.eventTrack("introjs timing - " + $rootScope.currentPath, {
- category: "App Services",
- label: introjs_time + "s"
- });
- $analytics.eventTrack("introjs exit - " + $rootScope.currentPath, {
- category: "App Services",
- label: "step" + introjs_step
- });
- };
- $rootScope.help.introjs_ChangeEvent = function() {
- introjs_step++;
- };
- var getHelpJson = function(path) {
- return $http.jsonp("http://sdk.apigee.com.s3.amazonaws.com/portal_help" + path + "/helpJson.json?callback=JSON_CALLBACK");
- };
- var getHelpStatus = function(helpType) {
- var status;
- if (helpType == "tour") {
- status = localStorage.getItem("ftu_tour");
- localStorage.setItem("ftu_tour", "false");
- } else if (helpType == "tooltips") {
- status = localStorage.getItem("ftu_tooltips");
- localStorage.setItem("ftu_tooltips", "false");
- }
- return status;
- };
- });
- AppServices.Directives.directive("insecureBanner", [ "$rootScope", "ug", function($rootScope, ug) {
- return {
- restrict: "E",
- transclude: true,
- templateUrl: "global/insecure-banner.html",
- link: function linkFn(scope, lElement, attrs) {
- scope.securityWarning = false;
- scope.$on("roles-received", function(evt, roles) {
- scope.securityWarning = false;
- if (!roles || !roles._list) return;
- roles._list.forEach(function(roleHolder) {
- var role = roleHolder._data;
- if (role.name.toUpperCase() === "GUEST") {
- roleHolder.getPermissions(function(err, data) {
- if (!err) {
- if (roleHolder.permissions) {
- roleHolder.permissions.forEach(function(permission) {
- if (permission.path.indexOf("/**") >= 0) {
- scope.securityWarning = true;
- scope.applyScope();
- }
- });
- }
- }
- });
- }
- });
- });
- var initialized = false;
- scope.$on("app-initialized", function() {
- !initialized && ug.getRoles();
- initialized = true;
- });
- scope.$on("app-changed", function() {
- scope.securityWarning = false;
- ug.getRoles();
- });
- }
- };
- } ]);
- "use strict";
- AppServices.Constants.constant("configuration", {
- ITEMS_URL: "global/temp.json"
- });
- "use strict";
- AppServices.Controllers.controller("PageCtrl", [ "ug", "help", "utility", "$scope", "$rootScope", "$location", "$routeParams", "$q", "$route", "$log", "$analytics", function(ug, help, utility, $scope, $rootScope, $location, $routeParams, $q, $route, $log, $analytics) {
- var initScopeVariables = function() {
- $scope.loadingText = "Loading...";
- $scope.use_sso = false;
- $scope.newApp = {
- name: ""
- };
- $scope.getPerm = "";
- $scope.postPerm = "";
- $scope.putPerm = "";
- $scope.deletePerm = "";
- $scope.usersTypeaheadValues = [];
- $scope.groupsTypeaheadValues = [];
- $scope.rolesTypeaheadValues = [];
- $rootScope.sdkActive = false;
- $rootScope.demoData = false;
- $scope.queryStringApplied = false;
- $rootScope.autoUpdateTimer = Usergrid.config ? Usergrid.config.autoUpdateTimer : 61;
- $rootScope.requiresDeveloperKey = Usergrid.config ? Usergrid.config.client.requiresDeveloperKey : false;
- $rootScope.loaded = $rootScope.activeUI = false;
- for (var key in Usergrid.regex) {
- $scope[key] = Usergrid.regex[key];
- }
- $scope.options = Usergrid.options;
- var getQuery = function() {
- var result = {}, queryString = location.search.slice(1), re = /([^&=]+)=([^&]*)/g, m;
- while (m = re.exec(queryString)) {
- result[decodeURIComponent(m[1])] = decodeURIComponent(m[2]);
- }
- return result;
- };
- $scope.queryString = getQuery();
- };
- initScopeVariables();
- $rootScope.urls = function() {
- var urls = ug.getUrls($scope.queryString);
- $scope.apiUrl = urls.apiUrl;
- $scope.use_sso = urls.use_sso;
- return urls;
- };
- $rootScope.gotoPage = function(path) {
- $location.path(path);
- };
- var notRegistration = function() {
- return "/forgot-password" !== $location.path() && "/register" !== $location.path();
- };
- var verifyUser = function() {
- if ($location.path().slice(0, "/login".length) !== "/login") {
- $rootScope.currentPath = $location.path();
- }
- if ($routeParams.access_token && $routeParams.admin_email && $routeParams.uuid) {
- ug.set("token", $routeParams.access_token);
- ug.set("email", $routeParams.admin_email);
- ug.set("uuid", $routeParams.uuid);
- $location.search("access_token", null);
- $location.search("admin_email", null);
- $location.search("uuid", null);
- }
- ug.checkAuthentication(true);
- };
- $scope.profile = function() {
- if ($scope.use_sso) {
- window.location = $rootScope.urls().PROFILE_URL + "?callback=" + encodeURIComponent($location.absUrl());
- } else {
- $location.path("/profile");
- }
- };
- $rootScope.showModal = function(id) {
- $("#" + id).modal("show");
- };
- $rootScope.hideModal = function(id) {
- $("#" + id).modal("hide");
- };
- $scope.deleteEntities = function(collection, successBroadcast, errorMessage) {
- collection.resetEntityPointer();
- var entitiesToDelete = [];
- while (collection.hasNextEntity()) {
- var entity = collection.getNextEntity();
- var checked = entity.checked;
- if (checked) {
- entitiesToDelete.push(entity);
- }
- }
- var count = 0, success = false;
- for (var i = 0; i < entitiesToDelete.length; i++) {
- var entity = entitiesToDelete[i];
- collection.destroyEntity(entity, function(err) {
- count++;
- if (err) {
- $rootScope.$broadcast("alert", "error", errorMessage);
- $rootScope.$broadcast(successBroadcast + "-error", err);
- } else {
- success = true;
- }
- if (count === entitiesToDelete.length) {
- success && $rootScope.$broadcast(successBroadcast);
- $scope.applyScope();
- }
- });
- }
- };
- $scope.selectAllEntities = function(list, that, varName, setValue) {
- varName = varName || "master";
- var val = that[varName];
- if (setValue == undefined) {
- setValue = true;
- }
- if (setValue) {
- that[varName] = val = !val;
- }
- list.forEach(function(entitiy) {
- entitiy.checked = val;
- });
- };
- $scope.createPermission = function(type, entity, path, permissions) {
- if (path.charAt(0) != "/") {
- path = "/" + path;
- }
- var ops = "";
- var s = "";
- if (permissions.getPerm) {
- ops = "get";
- s = ",";
- }
- if (permissions.postPerm) {
- ops = ops + s + "post";
- s = ",";
- }
- if (permissions.putPerm) {
- ops = ops + s + "put";
- s = ",";
- }
- if (permissions.deletePerm) {
- ops = ops + s + "delete";
- s = ",";
- }
- var permission = ops + ":" + path;
- return permission;
- };
- $scope.formatDate = function(date) {
- return new Date(date).toUTCString();
- };
- $scope.clearCheckbox = function(id) {
- if ($("#" + id).attr("checked")) {
- $("#" + id).click();
- }
- };
- $scope.removeFirstSlash = function(path) {
- return path.indexOf("/") === 0 ? path.substring(1, path.length) : path;
- };
- $scope.applyScope = function(cb) {
- cb = typeof cb === "function" ? cb : function() {};
- if (!this.$$phase) {
- return this.$apply(cb);
- } else {
- cb();
- }
- };
- $scope.valueSelected = function(list) {
- return list && list.some(function(item) {
- return item.checked;
- });
- };
- $scope.sendHelp = function(modalId) {
- ug.jsonpRaw("apigeeuihelpemail", "", {
- useremail: $rootScope.userEmail
- }).then(function() {
- $rootScope.$broadcast("alert", "success", "Email sent. Our team will be in touch with you shortly.");
- }, function() {
- $rootScope.$broadcast("alert", "error", "Problem Sending Email. Try sending an email to mobile@apigee.com.");
- });
- $scope.hideModal(modalId);
- };
- $scope.$on("users-typeahead-received", function(event, users) {
- $scope.usersTypeaheadValues = users;
- if (!$scope.$$phase) {
- $scope.$apply();
- }
- });
- $scope.$on("groups-typeahead-received", function(event, groups) {
- $scope.groupsTypeaheadValues = groups;
- if (!$scope.$$phase) {
- $scope.$apply();
- }
- });
- $scope.$on("roles-typeahead-received", function(event, roles) {
- $scope.rolesTypeaheadValues = roles;
- if (!$scope.$$phase) {
- $scope.$apply();
- }
- });
- $scope.$on("checkAuthentication-success", function() {
- sessionStorage.setItem("authenticateAttempts", 0);
- $scope.loaded = true;
- $rootScope.activeUI = true;
- $scope.applyScope();
- if (!$scope.queryStringApplied) {
- $scope.queryStringApplied = true;
- setTimeout(function() {
- if ($scope.queryString.org) {
- $rootScope.$broadcast("change-org", $scope.queryString.org);
- }
- }, 1e3);
- }
- $rootScope.$broadcast("app-initialized");
- });
- $scope.$on("checkAuthentication-error", function(args, err, missingData, email) {
- $scope.loaded = true;
- if (err && !$scope.use_sso && notRegistration()) {
- ug.logout();
- $location.path("/login");
- $scope.applyScope();
- } else {
- if (missingData && notRegistration()) {
- if (!email && $scope.use_sso) {
- window.location = $rootScope.urls().LOGIN_URL + "?callback=" + encodeURIComponent($location.absUrl().split("?")[0]);
- return;
- }
- ug.reAuthenticate(email);
- }
- }
- });
- $scope.$on("reAuthenticate-success", function(args, err, data, user, organizations, applications) {
- sessionStorage.setItem("authenticateAttempts", 0);
- $rootScope.$broadcast("loginSuccesful", user, organizations, applications);
- $rootScope.$emit("loginSuccesful", user, organizations, applications);
- $rootScope.$broadcast("checkAuthentication-success");
- $scope.applyScope(function() {
- $scope.deferredLogin.resolve();
- $location.path("/org-overview");
- });
- });
- var authenticateAttempts = parseInt(sessionStorage.getItem("authenticateAttempts") || 0);
- $scope.$on("reAuthenticate-error", function() {
- if ($scope.use_sso) {
- if (authenticateAttempts++ > 5) {
- $rootScope.$broadcast("alert", "error", "There is an issue with authentication. Please contact support.");
- return;
- }
- console.error("Failed to login via sso " + authenticateAttempts);
- sessionStorage.setItem("authenticateAttempts", authenticateAttempts);
- window.location = $rootScope.urls().LOGIN_URL + "?callback=" + encodeURIComponent($location.absUrl().split("?")[0]);
- } else {
- if (notRegistration()) {
- ug.logout();
- $location.path("/login");
- $scope.applyScope();
- }
- }
- });
- $scope.$on("loginSuccessful", function() {
- $rootScope.activeUI = true;
- });
- $scope.$on("app-changed", function(args, oldVal, newVal, preventReload) {
- if (newVal !== oldVal && !preventReload) {
- $route.reload();
- }
- });
- $scope.$on("org-changed", function(args, oldOrg, newOrg) {
- ug.getApplications();
- $route.reload();
- });
- $scope.$on("app-settings-received", function(evt, data) {});
- $scope.$on("request-times-slow", function(evt, averageRequestTimes) {
- $rootScope.$broadcast("alert", "info", "We are experiencing performance issues on our server. Please click Get Help for support if this continues.");
- });
- var lastPage = "";
- $scope.$on("$routeChangeSuccess", function() {
- verifyUser();
- $scope.showDemoBar = $location.path().slice(0, "/performance".length) === "/performance";
- if (!$scope.showDemoBar) {
- $rootScope.demoData = false;
- }
- setTimeout(function() {
- lastPage = "";
- }, 50);
- var path = window.location.pathname.replace("index-debug.html", "");
- lastPage === "" && $analytics.pageTrack((path + $location.path()).replace("//", "/"));
- lastPage = $location.path();
- });
- $scope.$on("applications-received", function(event, applications) {
- $scope.applications = applications;
- $scope.hasApplications = Object.keys(applications).length > 0;
- });
- ug.getAppSettings();
- $rootScope.startFirstTimeUser = function() {
- $rootScope.hideModal("introjs");
- $rootScope.help.introjs_StartEvent();
- $scope.startHelp();
- };
- } ]);
- "use strict";
- AppServices.Directives.directive("pageTitle", [ "$rootScope", "ug", function($rootScope, ug) {
- return {
- restrict: "E",
- transclude: true,
- templateUrl: "global/page-title.html",
- link: function linkFn(scope, lElement, attrs) {
- scope.title = attrs.title;
- scope.icon = attrs.icon;
- scope.showHelp = function() {
- $("#need-help").modal("show");
- };
- scope.sendHelp = function() {
- data.jsonp_raw("apigeeuihelpemail", "", {
- useremail: $rootScope.userEmail
- }).then(function() {
- $rootScope.$broadcast("alert", "success", "Email sent. Our team will be in touch with you shortly.");
- }, function() {
- $rootScope.$broadcast("alert", "error", "Problem Sending Email. Try sending an email to mobile@apigee.com.");
- });
- $("#need-help").modal("hide");
- };
- }
- };
- } ]);
- "use strict";
- AppServices.Services.factory("ug", function(configuration, $rootScope, utility, $q, $http, $resource, $log, $analytics, $location) {
- var requestTimes = [],
<TRUNCATED>
[7/9] building files
Posted by sn...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/70780481/portal/dist/appsvc-ui/css/dash.min.css
----------------------------------------------------------------------
diff --git a/portal/dist/appsvc-ui/css/dash.min.css b/portal/dist/appsvc-ui/css/dash.min.css
index 62424d9..c2b5359 100644
--- a/portal/dist/appsvc-ui/css/dash.min.css
+++ b/portal/dist/appsvc-ui/css/dash.min.css
@@ -1 +1 @@
-.dropdown{position:relative}.dropdown-toggle{*margin-bottom:-3px}.dropdown-toggle:active,.open .dropdown-toggle{outline:0}.caret{display:inline-block;width:0;height:0;vertical-align:top;border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid #000;opacity:.3;filter:alpha(opacity=30);content:""}.dropdown .caret{margin-top:8px;margin-left:2px}.dropdown:hover .caret,.open.dropdown .caret{opacity:1;filter:alpha(opacity=100)}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;float:left;display:none;min-width:160px;padding:4px 0;margin:0;list-style:none;background-color:#fff;border-color:#ccc;border-color:rgba(0,0,0,.2);border-style:solid;border-width:1px;-webkit-border-radius:0 0 5px 5px;-moz-border-radius:0 0 5px 5px;border-radius:0 0 5px 5px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip
:padding-box;*border-right-width:2px;*border-bottom-width:2px}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:8px 1px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #fff;*width:100%;*margin:-5px 0 5px}.dropdown-menu a{display:block;padding:3px 15px;clear:both;font-weight:400;line-height:18px;color:#333;white-space:nowrap}.dropdown-menu .active>a,.dropdown-menu .active>a:hover,.dropdown-menu li>a:hover{color:#fff;text-decoration:none;background-color:#08c}.dropdown.open{*z-index:1000}.dropdown.open .dropdown-toggle{color:#fff;background:#ccc;background:rgba(0,0,0,.3)}.dropdown.open .dropdown-menu{display:block}.pull-right .dropdown-menu{left:auto;right:0}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid #000;content:"\2191"}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}.dropdownContainingSubmenu .dropdown-menu{padding:0;margin-t
op:-4px;min-width:auto;background-color:#fff;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:4px 4px 16px rgba(0,0,0,.25);-moz-box-shadow:4px 4px 16px rgba(0,0,0,.25);box-shadow:4px 4px 16px rgba(0,0,0,.25);border-width:1px;border-top-width:4px;border-color:#bb2d16}.dropdownContainingSubmenu .dropdown-menu a{color:#494949;padding:7px 10px}.dropdownContainingSubmenu .dropdown-menu a:hover{color:#fff;background-color:#f03800}.dropdownContainingSubmenu .dropdown-menu .nav-header{background-color:#f0f0f0;margin-top:0;padding-left:10px}.dropdownContainingSubmenu .dropdown-menu .divider{margin:0}.navbar .dropdown-menu:after,.navbar .dropdown-menu:before{content:normal}#globalNav{margin-left:20px;background-color:transparent}#globalNav .dropdown-toggle{border-radius:3px;padding-top:3px;padding-bottom:3px;margin-top:7.5px;margin-bottom:7.5px}#globalNav .dropdown-toggle :hover{background-color:transparent}#globalNav.active .caret{opacity:.7}#globalNav.active :
hover .caret{opacity:1}#globalNav ul ul a{border-left:1px solid #bb2d16}#globalNav ul ul li{position:relative}#globalNav ul ul li:first-child{border-bottom:1px solid #bb2d16}#globalNav ul ul a:before{content:"";width:6px;height:32px;position:absolute;left:-6px;top:0}#globalNav ul ul .active a:before,#globalNav ul ul .active a:hover:before{background-image:url(images/triangleMenuItem_right.png)}#globalNav ul ul:hover a:before{background-image:none}#globalNav ul ul a:hover:before{background-image:url(images/triangleMenuItem_right_hover.png)}#globalNav ul ul li a:hover{border-color:transparent}#globalNav .dropdown-menu{width:400px}#globalNavDetail{padding:20px 10px 0;width:250px;height:100%;position:relative;top:0}#globalNavDetail>div{display:none;color:graytext;background-image:none;background-repeat:no-repeat;background-position:0 0;min-height:64px}#globalNavDetail>div.open{display:inline-block}#globalNavDetail>div .globalNavDetailApigeeLogo,#globalNavDetail>div .globalNavDetailDescr
iption,#globalNavDetail>div .globalNavDetailSubtitle,#globalNavDetail>div .globalNavDetailTitle{margin-left:80px}#globalNavDetail>div .globalNavDetailSubtitle{font-size:10px;text-transform:uppercase}#globalNavDetail>div .globalNavDetailTitle{margin-top:5px;font-size:20px}#globalNavDetail>div .globalNavDetailDescription{margin-top:10px;line-height:17px;font-style:oblique}#globalNavDetail #globalNavDetailApigeeHome{margin-top:-10px;background-image:url(img/appswitcher/home_lg.png)}#globalNavDetail #globalNavDetailApigeeHome .globalNavDetailApigeeLogo{margin-top:10px;background-image:url(img/appswitcher/logo_color.png);width:116px;height:40px}#globalNavDetail #globalNavDetailAppServices{background-image:url(img/appswitcher/appServices_lg.png)}#globalNavDetail #globalNavDetailApiPlatform{background-image:url(img/appswitcher/apiPlatform_lg.png)}#globalNavDetail #globalNavDetailMobileAnalytics{background-image:url(img/appswitcher/max_lg.png)}#globalNavDetail #globalNavDetailApiConsoles{ba
ckground-image:url(img/appswitcher/console_lg.png)}#globalNavSubmenuContainer{float:right}#globalNavSubmenuContainer ul{margin-left:0}.ng-cloak,.x-ng-cloak,[data-ng-cloak],[ng-cloak],[ng\:cloak],[x-ng-cloak]{display:none}html{min-height:100%;position:relative;margin:0 auto;background:#fff;min-width:1100px}body{padding:0;background-color:#fff;font-family:marquette-light,'Helvetica Neue',Helvetica,Arial,sans-serif;height:100%;max-height:100%;overflow-x:hidden}a{cursor:pointer}@font-face{font-family:entypo;src:url(entypo/entypo.eot);src:url(entypo/entypo.eot?#iefix) format('embedded-opentype'),url(entypo/entypo.woff) format('woff'),url(entypo/entypo.ttf) format('truetype'),url(entypo/entypo.svg#entypo) format('svg');font-weight:400;font-style:normal}@font-face{font-family:marquette-medium;src:url(arsmarquette/ARSMaquettePro-Medium.otf),url(arsmarquette/ARSMaquettePro-Medium.otf) format('opentype')}@font-face{font-family:marquette-regular;src:url(arsmarquette/ARSMaquettePro-Regular.otf)
,url(arsmarquette/ARSMaquettePro-Regular.otf) format('opentype')}@font-face{font-family:marquette-light;src:url(arsmarquette/ARSMaquettePro-Light.otf),url(arsmarquette/ARSMaquettePro-Light.otf) format('opentype')}.bold{font-family:marquette-medium}.main-content{background-color:#fff;margin:0 0 0 200px}.side-menu{position:absolute;top:51px;left:0;bottom:0;width:200px;float:left;background-color:#eee}footer{padding-top:20px;clear:both}.zero-out{padding:0;text-shadow:none;background-color:transparent;background-image:none;border:0;box-shadow:none;outline:0}.modal-body{overflow-y:visible}.demo-holder{margin:0 -20px 0 -20px;position:relative}.alert-holder{position:fixed;right:0;margin:20px 20px 0 0;z-index:10500;width:302px}.alert,.alert.alert-demo{padding:9px 35px 5px 14px;margin-bottom:3px;text-shadow:0 1px 0 rgba(255,255,255,.5);background-color:#eee;border:1px solid #eee;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-transition:all 1s ease;-moz-transition:all 1s
ease;transition:all 1s ease;height:0;overflow:hidden;line-height:0;float:right}.alert.alert-demo{float:none}.alert{width:0}.alert.alert-success{background-color:rgba(155,198,144,.31);color:#1f6719;border-left:2px solid #1f6719}.alert.alert-warning{background-color:rgba(239,172,37,.2);color:#efac25;border-left:2px solid #efac25}.alert.alert-info{background-color:rgba(27,151,209,.2);color:#1b97d1;border-left:2px solid #1b97d1}.alert.alert-error{background-color:rgba(255,3,3,.2);color:#ff0303;border-left:2px solid #ff0303}.alert.alert-animate.alert-demo{height:20px;line-height:normal;opacity:1;width:100%;-moz-box-shadow:inset 0 2px 13px #b8b8b8;-webkit-box-shadow:inset 0 2px 13px #b8b8b8;box-shadow:inset 0 2px 13px #b8b8b8}.alert.alert-animate{height:auto;line-height:normal;opacity:.9;width:300px}@-webkit-keyframes alert-out{from{opacity:1}to{-webkit-transform:translateY(500px);opacity:0}}@keyframes alert-out{from{opacity:1}to{transform:translateY(500px);opacity:0}}.fade-out{-webkit-a
nimation-name:alert-out;-webkit-animation-duration:1s;-webkit-animation-timing-function:step-stop;-webkit-animation-direction:normal;-webkit-animation-iteration-count:1;animation-name:alert-out;animation-duration:1s;animation-timing-function:step-stop;animation-direction:normal;animation-iteration-count:1;opacity:.9}.margin-35{margin-top:35px}.modal-footer{background-color:transparent}.baloon{margin:20px;padding:20px 30px;position:fixed;bottom:0;top:auto;border-style:solid;border-radius:2px;box-shadow:0 0 4px rgba(0,0,0,.8)}.baloon:after{content:"";position:absolute;width:10px;height:10px;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-o-transform:rotate(45deg);-ms-filter:"progid:DXImageTransform.Microsoft.Matrix(M11=0.7071067811865473, M12=-0.7071067811865477, M21=0.7071067811865477, M22=0.7071067811865473, SizingMethod='auto expand')"}.north.baloon:after{top:-6px;left:30px;border-top-style:solid;border-left-style:solid;box-shadow:-2px -2px 3px -1px rgba(0,0,0,.5)}.so
uth.baloon:after{bottom:-6px;left:30px;border-bottom-style:solid;border-right-style:solid;box-shadow:2px 2px 3px -1px rgba(0,0,0,.5)}.left.baloon:after{top:10px;left:-6px;border-bottom-style:solid;border-left-style:solid;box-shadow:-2px 2px 3px -1px rgba(0,0,0,.5)}.right.baloon:after{bottom:10px;right:-6px;border-top-style:solid;border-right-style:solid;box-shadow:2px -2px 3px -1px rgba(0,0,0,.5)}.baloon,.baloon:after{font-family:sans-serif;font-weight:700;border-color:#f7f7f7;border-width:1px;background-color:#3ac62f;color:#fff}#globalNav{float:right;margin:15px 8px 0 9px;list-style:none;width:114px}#globalNav ul{list-style:none}#globalNavDetail>div{display:none;color:graytext;background-image:none;background-repeat:no-repeat;background-position:0 0;min-height:64px}#globalNavDetail #globalNavDetailApiPlatform{background-image:url(../img/appswitcher/apiPlatform_lg.png)}#globalNavDetail #globalNavDetailAppServices{background-image:url(../img/appswitcher/appServices_lg.png)}#globalNav
Detail #globalNavDetailApigeeHome{margin-top:-10px;background-image:url(../img/appswitcher/home_lg.png)}#globalNavDetail #globalNavDetailApiConsoles{background-image:url(../img/appswitcher/console_lg.png)}#globalNavDetail #globalNavDetailApigeeHome .globalNavDetailApigeeLogo{margin-top:10px;background-image:url(../img/appswitcher/logo_color.png);width:116px;height:40px}#globalNavDetail>div .globalNavDetailSubtitle{font-size:10px;text-transform:uppercase}#globalNavDetail>div .globalNavDetailTitle{margin-top:5px;font-size:20px}#globalNavDetail>div .globalNavDetailDescription{margin-top:10px;line-height:17px;font-style:oblique}.navbar.navbar-static-top .dropdownContainingSubmenu .dropdown-menu a{color:#494949;padding:13px 10px}.navbar.navbar-static-top .dropdownContainingSubmenu .dropdown-menu .active a{color:#fff;background-color:#bb2d16}.navbar.navbar-static-top .dropdown-menu a{display:block;padding:3px 15px;clear:both;font-weight:400;line-height:18px;color:#333;white-space:nowrap}#
globalNav .dropdown-toggle{border-radius:3px;padding:3px 6px;margin:0}.dropdown-toggle{background-color:#bb2d16;padding:3px}.demo-holder .alert.alert-demo{background-color:rgba(196,196,196,.1);color:#777;padding:12px 35px 7px 14px}.demo-holder-content{position:absolute;right:50px}.demo-text{position:absolute;right:223px;left:0;padding:0 0 0 10px}.b{display:block}.toggle,.toggle-form{position:absolute;top:10px;right:173px;width:50px;height:23px;border-radius:100px;background-color:#ddd;overflow:hidden;box-shadow:inset 0 0 2px 1px rgba(0,0,0,.05)}.form-horizontal.configs .control-label{width:250px;padding:0 10px 0 0}.toggle-form{position:relative;right:auto;top:auto;display:inline-block}.toggle-form-label{display:inline-block}input[type=checkbox].check{position:absolute;display:block;cursor:pointer;top:0;left:0;width:100%;height:100%;opacity:0;z-index:6}.check:checked~.track{box-shadow:inset 0 0 0 20px #ff3b00}.toggle-form .check:checked~.track{box-shadow:inset 0 0 0 20px #82ce85}.che
ck:checked~.switch{right:2px;left:27px;transition:.4s ease;transition-property:left,right;transition-delay:.05s,0s}.switch{position:absolute;left:2px;top:2px;bottom:2px;right:27px;background-color:#fff;border-radius:36px;z-index:1;transition:.4s ease;transition-property:left,right;transition-delay:0s,.05s;box-shadow:0 1px 2px rgba(0,0,0,.2)}.track{position:absolute;left:0;top:0;right:0;bottom:0;transition:.4s ease;box-shadow:inset 0 0 0 2px rgba(0,0,0,.05);border-radius:40px}.add-app .pictogram,top-selector .pictogram{margin:0 3px 0 0}i.pictogram{font-family:entypo;display:inline-block;width:23px;margin:0 5px 0 0;font-size:2.5em;height:17px;line-height:.35;overflow:hidden;vertical-align:middle;padding:5px 0 0;font-style:normal;font-weight:100;-webkit-font-smoothing:antialiased}i.pictogram.sub{margin:0 0 0 10px;font-size:2.1em}i.pictogram.title{margin:0;font-size:2.1em}i.pictogram.chart{margin:0 0 0 3px;font-size:2.1em;line-height:.4em;height:.5em;width:100%}i.pictogram.apichart{marg
in:0 0 0 11px;font-size:2.1em;line-height:.4em;height:.5em;width:100%}[class*=" ma-icon-"],[class^=ma-icon-]{display:inline-block;width:23px;height:20px;margin:1px 3px 0 0;line-height:20px;vertical-align:text-top;background-image:url(../img/nav-sprites.png);background-position:14px 14px;background-repeat:no-repeat}[class*=" sdk-icon-"],[class^=sdk-icon-]{display:inline-block;width:32px;height:29px;margin:-3px 3px 0 0;line-height:32px;vertical-align:text-top;background-image:url(../img/sdk-sprites.png);background-position:14px 14px;background-repeat:no-repeat;cursor:pointer;overflow:hidden}[class*=" sdk-icon-large-"],[class^=sdk-icon-large-]{display:inline-block;width:86px;height:86px;margin:-3px 3px 0 0;line-height:32px;vertical-align:text-top;background-image:url(../img/sdk-sprites-large.png);background-position:14px 14px;background-repeat:no-repeat;border:1px solid #aaa;-moz-box-shadow:3px 3px 0 -1px #ccc;-webkit-box-shadow:3px 3px 0 -1px #ccc;box-shadow:3px 3px 0 -1px #ccc}.sdk-i
con-ios{background-position:-6px -4px}.sdk-icon-android{background-position:-59px -3px}.sdk-icon-js{background-position:-109px -4px}.sdk-icon-node{background-position:-154px -3px}.sdk-icon-ruby{background-position:-204px -3px}.sdk-icon-net{background-position:-256px -4px}.sdk-icon-large-ios{background-position:-6px -3px}.sdk-icon-large-android{background-position:-113px 0}.sdk-icon-large-js{background-position:-219px 0}.sdk-icon-large-node{background-position:-323px -3px}.sdk-icon-large-ruby{background-position:-431px 0}.sdk-icon-large-net{background-position:-537px -3px}body>header>.navbar{background-color:#ff3b00}body>header .navbar:first-child>a{height:22px;line-height:22px;padding:10px 20px 20px 13px}.navbar.navbar-static-top a{text-shadow:none;color:#fff}.navbar-text{color:#fff;margin:4px}.navbar-text .dropdown-menu a{color:#343434}.navbar-text.pull-left{margin-left:90px}.top-nav,ul.app-nav li,ul.org-nav li{background-color:#fff}.top-nav .btn-group{margin:9px 0 5px 5px}.nav .ap
p-selector .caret,.nav .app-selector:active .caret,.nav .app-selector:focus .caret,.nav .app-selector:hover .caret,.nav .org-selector .caret,.nav .org-selector:active .caret,.nav .org-selector:focus .caret,.nav .org-selector:hover .caret{border-top-color:#5f5f5f;border-bottom-color:transparent;margin-top:8px;position:absolute;right:10px}.org-options{margin:5px 2px -8px -5px;border-top:3px solid #e6e6e6;overflow:hidden}.navbar.secondary{margin:0 -20px 0 -21px;border-bottom:3px solid #e6e6e6}.navbar.secondary>.container-fluid{margin:0 -20px 0 -18px}.navbar.secondary .nav,.navbar.secondary>.container-fluid .nav-collapse.collapse.span9,.top-nav{margin:0}.top-nav>li,.top-nav>li>div{width:100%}.span9.button-area{margin-left:0}.navbar .nav a.btn-create i{margin:1px 0 0}.navbar .nav a.btn-create,.navbar .nav a.btn-create:hover{text-align:left;font-weight:400;color:#1b70a0;padding:0 0 0 10px;margin:4px 0 0 3px;display:block;width:140px;height:30px;line-height:30px;background-color:#f3f3f3}.n
avbar .nav a.btn-create:hover{color:#1b70a0}.navbar .nav a.btn-create:active{box-shadow:none}.sdks>ul>li.title label{color:#5f5f5f;font-size:15px;display:inline-block;padding:16px 0 0;line-height:6px;cursor:default}.sdks>ul>li.title a{color:#5f5f5f;font-size:15px;display:inline-block;padding:16px 0 0;line-height:6px}.sdks>ul{list-style:none;margin:0;height:32px;overflow:hidden}.sdks>ul>li{display:inline;margin:0 10px 0 0;line-height:11px}.navbar.secondary,.navbar.secondary .btn-group>.btn,.navbar.secondary .btn-group>.dropdown-menu,.side-menu .btn-group>.btn,.side-menu .dropdown-menu{text-transform:uppercase;font-family:marquette-regular,'Helvetica Neue',Helvetica,Arial,sans-serif;color:#5f5f5f;font-size:14px;-webkit-font-smoothing:antialiased}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover,.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover,.dropdown-submenu:focus>a,.dropdown-submenu:hover>a{text-decoration:none;color:#fff;background-color:#5f
5f5f;background-image:-moz-linear-gradient(top,#5f5f5f,#787878);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5f5f5f),to(#787878));background-image:-webkit-linear-gradient(top,#5f5f5f,#787878);background-image:-o-linear-gradient(top,#5f5f5f,#787878);background-image:linear-gradient(to bottom,#5f5f5f,#787878);background-repeat:repeat-x}.btn-group.open .btn.dropdown-toggle.top-selector,.top-selector,.top-selector:active,.top-selector:focus,.top-selector:hover{color:#5f5f5f;padding:0;text-shadow:none;background-color:transparent;background-image:none;border:0;box-shadow:none;outline:0;width:100%;text-align:left}.dialog-body{padding:20px}h1.title{font-size:1.3em;font-family:marquette-medium,"Helvetica Neue",sans-serif;color:#686868;line-height:17px;display:inline-block;padding:0 10px 0 0}h2.title{text-transform:uppercase;font-size:1.2em;border-top:2px solid #eee;color:#828282}h2.title.chart{margin:10px 0 20px 10px;z-index:101;position:absolute;top:0;left:0;right:0}h3.title{t
ext-transform:uppercase;font-size:1.1em}.sidebar-nav .nav-list{padding:0}.nav-list .nav-header,.sidebar-nav .nav-list>li>a{margin-right:0}.sidebar-nav .nav-list.trans{max-height:100000px;-webkit-transition:all .5s ease;-moz-transition:all .5s ease;transition:all .5s ease;display:block;opacity:0}.sidebar-nav .nav-list li a{padding:10px 0 10px 25px;color:#5f5f5f;text-shadow:none;background-color:#eee;font-size:14px;text-transform:uppercase;position:relative}.sidebar-nav .nav-list li a.org-overview{background-color:#fff;font-family:marquette-light,'Helvetica Neue',Helvetica,Arial,sans-serif}.sidebar-nav .nav-list li a.org-overview:hover{color:#5f5f5f}.sidebar-nav .nav-list:first-child>li{margin:0;height:39px;overflow:hidden}.sidebar-nav .nav-list:first-child>li.active{height:auto;overflow:visible}.sidebar-nav .nav-list:first-child>li>ul>li>a{color:#5f5f5f}.sidebar-nav .nav-list:first-child>li.active>a,.sidebar-nav .nav-list:first-child>li>a:focus,.sidebar-nav .nav-list:first-child>li>a
:hover{color:#fff;text-shadow:none;background-color:#1b70a0;margin:0 0 0 -15px}.sidebar-nav .nav-list:first-child li.active>ul>li>a{background-color:#fff}.sidebar-nav .nav-list li.option>ul{overflow:hidden;opacity:0;height:auto;display:block;-webkit-transition:all .5s ease;-moz-transition:all .5s ease;transition:all .5s ease;max-height:100000px}.sidebar-nav .nav-list li.option.active>ul{opacity:1}.sidebar-nav .nav-list li.active>ul>li a{border-bottom:1px solid #eee;color:#747474;text-transform:none;font-weight:300;padding:10px 0 10px 22px}.sidebar-nav .nav-list li.active>ul>li.active>a,.sidebar-nav .nav-list li.active>ul>li>a:focus,.sidebar-nav .nav-list li.active>ul>li>a:hover{color:#1b70a0;background:#fff url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAKCAYAAAB4zEQNAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIH
g6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYxIDY0LjE0MDk0OSwgMjAxMC8xMi8wNy0xMDo1NzowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNS4xIE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo1NkEzQ0Y1MUI0MjIxMUUyODZGN0I5RUE1NjAwQ0I0MCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo1NkEzQ0Y1MkI0MjIxMUUyODZGN0I5RUE1NjAwQ0I0MCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjU2QTNDRjRGQjQyMjExRTI4NkY3QjlFQTU2MDBDQjQwIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjU2QTNDRjUwQjQyMjExRTI4NkY3QjlFQTU2MDBDQjQwIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+poqUzgAAAG1JREFUeNpilC5YwIADqLNgEWQG4kYg9mNCk1AE4sNAXA3iIEuGAPF5ILaECYAkeYB
4DhCvBmJ+ZGNAkt+B+CkQ/0W3nAkqWA/EblBFKJIwsA+IDYF4BzZJEHgNxJ5AXAbEv1hwBEA3EK8BCDAAwgoRW2zTv6EAAAAASUVORK5CYII=) no-repeat;background-position:206px 16px;font-family:marquette-medium,'Helvetica Neue',Helvetica,Arial,sans-serif;border-bottom:1px solid #eee;text-shadow:none;-webkit-font-smoothing:antialiased}.sidebar-nav .nav-list li.option ul{list-style:none}.new-tag{border-radius:3px;display:inline-block;font-family:marquette-medium;font-size:.6em;background-color:rgba(26,26,26,.5);color:#fff;padding:3px;height:8px;line-height:8px;position:absolute;right:5px;top:13px}.sidebar-nav .nav-list li:active a{background-color:rgba(255,255,255,.5)}.app-creds dt{font-family:marquette-medium}.intro-container{position:relative;height:auto;-webkit-transition:all .5s ease-out;-moz-transition:all .5s ease-out;transition:all .5s ease-out;overflow:hidden}.sdk-intro{position:absolute;border:1px solid #aaa;background-color:#f4f4f4;-moz-box-shadow:inset 0 0 10px #ccc;-webkit-box-shadow:inset 0 0 10px #cc
c;box-shadow:inset 0 4px 10px #ccc;opacity:.4;top:0;left:6px;right:1px;bottom:0;height:auto;overflow:hidden}.sdk-intro-content{position:absolute;padding:10px 40px 10px 10px;top:0;left:6px;right:-20px;bottom:0;height:auto;overflow:auto}.sdk-intro-content .btn.normal{margin:19px 10px 0 0}.keys-creds h2{margin-bottom:-2px}.user-list{padding:0;margin:0;list-style:none;min-height:450px;float:left;width:100%}.user-list li{padding:10px;border-bottom:1px solid #c5c5c5;cursor:pointer}.user-list li .label{margin:0 0 0 22px}.user-list li input{margin:0 10px 0 0}.user-list li.selected{background-color:#eee}#user-panel{margin-top:20px}.user-col{border-right:1px solid #c5c5c5;-moz-box-shadow:inset -27px 1px 6px -27px #b8b8b8;-webkit-box-shadow:inset -27px 1px 6px -27px #b8b8b8;box-shadow:inset -27px 1px 6px -27px #b8b8b8}.user-profile-picture{width:40px;height:40px}.content-page>.well{padding:10px;height:40px}.table-header td{font-weight:800;color:#000}.user-header-title{font-size:13px;font-famil
y:marquette-regular,'Helvetica Neue',Helvetica,Arial,sans-serif}.tabbable>.tab-content{overflow:visible}.button-strip{float:right;margin-bottom:10px}a.notifications-links{color:#1b97d1}.notifications-header{height:50px;background-color:#eee;padding:10px;border-bottom:1px solid #aaa;position:relative;overflow:hidden}.groups-row td.details,.notifications-row td.details,.roles-row td.details,.users-row td.details{line-height:25px!important;border-right:1px solid #e5e5e5}.nav-tabs>li{cursor:pointer}.login-content{position:absolute;top:91px;bottom:0;left:0;right:0;background-color:#fff;padding:9% 0 0 32%}.login-content form{margin:0}.login-content form h1{padding:10px 0 5px 20px}.login-holder{width:450px;border:1px solid #e5e5e5}.login-holder .form-actions{padding-left:30px;margin-bottom:0}.login-holder .form-actions .submit{padding:0 30px 0 0}.login-content .extra-actions{margin-top:10px;padding-left:30px;margin-bottom:0}.login-content .extra-actions .submit{padding:0 30px 0 0}.login-co
ntent .extra-actions .submit a{margin-left:3px;margin-right:3px}.signUp-content{position:absolute;top:91px;bottom:0;left:0;right:0;background-color:#fff;padding:9% 0 0 32%}.signUp-content form{margin:0}.signUp-content form h1{padding:10px 0 5px 20px}.signUp-holder{width:450px;border:1px solid #e5e5e5}.signUp-holder .form-actions{margin-bottom:0}.signUp-holder .form-actions .submit{padding:0 30px 0 0}.table.collection-list{border:1px solid #eee}.formatted-json,.formatted-json ul{list-style:none}.formatted-json .key{font-family:marquette-medium}.formatted-json li{border-bottom:1px solid #eee;margin:3px 0}iframe[seamless]{background-color:transparent;border:0 none transparent;padding:0;overflow:visible;overflow-x:hidden;width:100%}.gravatar20{padding:7px 0 0 10px!important;margin:0;width:30px}#shell-panel *{font-family:monospace}#shell-panel .boxContent{font-family:monospace;font-size:14px;min-height:400px}#shell-panel input{font-family:monospace;overflow:auto;width:90%;margin-top:10px
}#shell-panel hr{margin:2px;border-color:#e1e1e1}form input.has-error{-webkit-animation:pulse-red 1s alternate infinite;-moz-animation:pulse-red 1s alternate infinite;border:1px solid rgba(255,3,3,.6)}.validator-error-message{color:#ff0303}@-webkit-keyframes pulse-red{0%{box-shadow:inset 0 0 5px 2px rgba(255,3,3,.1),0 0 5px 2px rgba(255,3,3,.3)}100%{box-shadow:inset 0 0 5px 2px rgba(255,3,3,.3),0 0 5px 2px rgba(255,3,3,.1)}}@-moz-keyframes pulse-red{0%{box-shadow:inset 0 0 5px 2px rgba(255,3,3,.1),0 0 5px 2px rgba(255,3,3,.3)}100%{box-shadow:inset 0 0 5px 2px rgba(255,3,3,.3),0 0 5px 2px rgba(255,3,3,.1)}}.modal-instructions{padding-top:5px;padding-bottom:5px}.dropdown-menu{width:100%}.modal{width:560px!important}.dropdown-backdrop{position:static}.title.with-icons a{display:inline-block;text-transform:lowercase;font-size:.8em;margin:0 5px 0 0}.span9.tab-content{margin:0}.span9.tab-content .content-page{padding:0 0 0 30px}.button-toolbar,.menu-toolbar{padding:10px 0;margin:0;width:1
00%}.menu-toolbar{padding:0 0 20px}.menu-toolbar>ul.inline{border-bottom:1px solid #c5c5c5;margin:0}.btn-group .filter-selector,.btn-group .filter-selector:active,.btn-group .filter-selector:focus,.btn-group .filter-selector:hover,.btn-group .filter-title,.btn-group .filter-title:active,.btn-group .filter-title:focus,.btn-group.open .btn.dropdown-toggle.filter-selector,.btn-group.open .btn.dropdown-toggle.filter-title,.btn-group>.filter-selector.btn:first-child,.btn-group>.filter-title.btn:first-child,.btn.btn-primary,.btn.normal,.modal-footer .btn{color:#fff;padding:3px 9px;text-shadow:none;background-color:#494949;background-image:none;border:1px solid #c5c5c5;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;border-bottom-left-radius:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;box-shadow:none}ul.inline>li.tab{margin:0;padding:0}li.tab .btn.btn-primary{background-color:#eee;border:0;color:#494949;box-shadow:none;margin:0 -1px -1px -1px;padding:3px 19px 3
px 16px;border-bottom:1px solid #c5c5c5}ul.inline>li.tab.selected{margin:0 0 -1px 0;border-bottom:1px solid #fff}li.tab.selected .btn.btn-primary.toolbar{color:#494949;border-left:1px solid #c5c5c5;border-right:1px solid #c5c5c5;border-top:1px solid #c5c5c5;border-bottom:0;background-color:#fff}.btn-group.compare .filter-selector.btn:first-child,.btn.btn-primary.toolbar{color:#494949;background-color:#f1f1f1}li.selected .btn.btn-primary.toolbar{color:#fff;border:1px solid #1b70a0;background-color:#1b70a0}.btn.cancel,.btn.cancel:hover,.btn.normal.white,.btn.normal.white:hover{background-color:#fff;color:#5f5f5f}.btn-group .filter-selector:active,.btn-group .filter-title:hover,.btn-group.selected .filter-selector,.btn-group.selected>.filter-selector.btn:first-child,.btn.btn-primary:active,.btn.btn-primary:hover,.btn.normal:hover,.modal-footer .btn:active,.modal-footer .btn:hover{color:#fff;border:1px solid #1b70a0;background-color:#1b70a0}.btn-group .filter-selector .caret{margin:8px
0 0 10px;border-top:4px solid #fff;border-right:4px solid transparent;border-left:4px solid transparent}.btn-group.header-button{margin:4px 0 0;text-transform:none}.page-filters{padding:0;margin:10px 0}.dropdown-menu{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;z-index:102}.modal{position:fixed;top:10%;left:50%;margin-left:-280px;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,.3);*border:1px solid #999;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:0 3px 7px rgba(0,0,0,.3);-moz-box-shadow:0 3px 7px rgba(0,0,0,.3);box-shadow:0 3px 7px rgba(0,0,0,.3);-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box;outline:0}.modal.fade{z-index:-200}.modal.fade.in{z-index:1050}.auto-update-container{padding:10px 0 0}.auto-updates{margin:0 10px 0 0}.super-help{font-size:9pt;vertical-align:super}.help_tooltip{font-size:9pt;text-transform:none}.helpButton{font-family:Helvetica,Arial,s
ans-serif;font-size:13px;font-weight:300;padding:5px 8px;text-align:center;vertical-align:middle;color:#ffd6ca;border:1px solid #ffbfab;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;background-color:#ff3b00;width:110px;outline:0}.helpButton:hover{cursor:pointer;background-color:#FFB7A5;color:#dc3300;-webkit-transition:background-color .1s;-moz-transition:background-color .1s;-o-transition:background-color .1s;transition:background-color .1s}.helpButtonClicked{background-color:#FFB7A5;color:#dc3300;outline:0}.introjs-overlay{background:0 0;filter:none;-ms-filter:"alpha(Opacity=20)";filter:alpha(opacity=20);background-color:#fff;opacity:.2}.introjs-helperLayer{border-radius:0;box-shadow:none;border:1px solid rgba(0,0,0,.25)}.introjs-helperNumberLayer{top:-12px;left:-12px;font-family:"Open Sans",Arial,sans-serif;font-weight:400;border:0;filter:none;filter:none;box-shadow:none}.introjs-arrow{border:10px solid #fff}.introjs-arrow.top{top:-20px;border-bottom-color:#6d
bce3}.introjs-arrow.right{right:-20px;top:20px;border-left-color:#6dbce3}.introjs-arrow.bottom{bottom:-20px;border-top-color:#6dbce3}.introjs-arrow.left{left:-20px;top:20px;border-right-color:#6dbce3}.introjs-arrow:before{border:10px solid #fff;content:'';position:absolute}.introjs-arrow.top:before{top:-8px;left:-10px;border-top-color:transparent;border-right-color:transparent;border-bottom-color:#F0F8FC;border-left-color:transparent}.introjs-arrow.right:before{right:-7px;top:-10px;border-top-color:transparent;border-right-color:transparent;border-bottom-color:transparent;border-left-color:#F0F8FC}.introjs-arrow.bottom:before{bottom:-9px;left:-10px;border-top-color:#F0F8FC;border-right-color:transparent;border-bottom-color:transparent;border-left-color:transparent}.introjs-arrow.left:before{left:-7px;top:-10px;border-top-color:transparent;border-right-color:#F0F8FC;border-bottom-color:transparent;border-left-color:transparent}.introjs-tooltip{background-color:#F0F8FC;border-radius:0
;border:1px solid #6dbce3;box-shadow:0 1px 7px rgba(0,0,0,.3)}.introjs-button{text-shadow:none;font:12px/normal sans-serif;color:#1f77a3;background-color:#F0F8FC;background-image:none;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px;border:1px solid #d4d4d4}.introjs-button:hover{font-family:"Open Sans",Arial,sans-serif}.introjs-button:active,.introjs-button:focus{text-decoration:none;outline:0}.introjs-skipbutton{color:#1f77a3;text-decoration:none;font-family:"Open Sans",Arial,sans-serif;margin-right:32px;border:1px solid #6dbce3}.introjs-nextbutton{text-decoration:none;font-family:"Open Sans",Arial,sans-serif;width:40px;margin-left:3px}.introjs-prevbutton{text-decoration:none;font-family:"Open Sans",Arial,sans-serif;width:40px}.introjs-nextbutton,.introjs-nextbutton:active,.introjs-nextbutton:focus,.introjs-nextbutton:hover{background-image:url(img/introjs_arrow_step_next.png);background-position:48px 5px;background-repeat:no-repeat;text-align:left;border:1px soli
d #6dbce3}.introjs-prevbutton,.introjs-prevbutton:active,.introjs-prevbutton:focus,.introjs-prevbutton:hover{background-image:url(img/introjs_arrow_step_prev.png);background-position:2px 5px;background-repeat:no-repeat;text-align:right;border:1px solid #6dbce3}.introjs-nextbutton.introjs-disabled,.introjs-nextbutton.introjs-disabled:active,.introjs-nextbutton.introjs-disabled:focus,.introjs-nextbutton.introjs-disabled:hover{background-image:url(img/introjs_arrow_step_next_disabled.png);background-position:48px 5px;background-repeat:no-repeat;text-align:left;border:1px solid #d4d4d4}.introjs-prevbutton.introjs-disabled,.introjs-prevbutton.introjs-disabled:active,.introjs-prevbutton.introjs-disabled:focus,.introjs-prevbutton.introjs-disabled:hover{background-image:url(img/introjs_arrow_step_prev_disabled.png);background-position:2px 5px;background-repeat:no-repeat;text-align:right;border:1px solid #d4d4d4}.introjs-disabled,.introjs-disabled:focus,.introjs-disabled:hover{color:gray;bac
kground-color:#F0F8FC}.introjs-tooltiptext{font-size:13px;line-height:19px}.introjstooltipheader{font-size:13px;line-height:19px;font-family:marquette-medium,'Helvetica Neue',Helvetica,Arial,sans-serif}
\ No newline at end of file
+.dropdown{position:relative}.dropdown-toggle{*margin-bottom:-3px}.dropdown-toggle:active,.open .dropdown-toggle{outline:0}.caret{display:inline-block;width:0;height:0;vertical-align:top;border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid #000;opacity:.3;filter:alpha(opacity=30);content:""}.dropdown .caret{margin-top:8px;margin-left:2px}.dropdown:hover .caret,.open.dropdown .caret{opacity:1;filter:alpha(opacity=100)}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;float:left;display:none;min-width:160px;padding:4px 0;margin:0;list-style:none;background-color:#fff;border-color:#ccc;border-color:rgba(0,0,0,.2);border-style:solid;border-width:1px;-webkit-border-radius:0 0 5px 5px;-moz-border-radius:0 0 5px 5px;border-radius:0 0 5px 5px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip
:padding-box;*border-right-width:2px;*border-bottom-width:2px}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:8px 1px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #fff;*width:100%;*margin:-5px 0 5px}.dropdown-menu a{display:block;padding:3px 15px;clear:both;font-weight:400;line-height:18px;color:#333;white-space:nowrap}.dropdown-menu .active>a,.dropdown-menu .active>a:hover,.dropdown-menu li>a:hover{color:#fff;text-decoration:none;background-color:#08c}.dropdown.open{*z-index:1000}.dropdown.open .dropdown-toggle{color:#fff;background:#ccc;background:rgba(0,0,0,.3)}.dropdown.open .dropdown-menu{display:block}.pull-right .dropdown-menu{left:auto;right:0}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid #000;content:"\2191"}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}.dropdownContainingSubmenu .dropdown-menu{padding:0;margin-t
op:-4px;min-width:auto;background-color:#fff;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:4px 4px 16px rgba(0,0,0,.25);-moz-box-shadow:4px 4px 16px rgba(0,0,0,.25);box-shadow:4px 4px 16px rgba(0,0,0,.25);border-width:1px;border-top-width:4px;border-color:#bb2d16}.dropdownContainingSubmenu .dropdown-menu a{color:#494949;padding:7px 10px}.dropdownContainingSubmenu .dropdown-menu a:hover{color:#fff;background-color:#f03800}.dropdownContainingSubmenu .dropdown-menu .nav-header{background-color:#f0f0f0;margin-top:0;padding-left:10px}.dropdownContainingSubmenu .dropdown-menu .divider{margin:0}.navbar .dropdown-menu:after,.navbar .dropdown-menu:before{content:normal}#globalNav{margin-left:20px;background-color:transparent}#globalNav .dropdown-toggle{border-radius:3px;padding-top:3px;padding-bottom:3px;margin-top:7.5px;margin-bottom:7.5px}#globalNav .dropdown-toggle :hover{background-color:transparent}#globalNav.active .caret{opacity:.7}#globalNav.active :
hover .caret{opacity:1}#globalNav ul ul a{border-left:1px solid #bb2d16}#globalNav ul ul li{position:relative}#globalNav ul ul li:first-child{border-bottom:1px solid #bb2d16}#globalNav ul ul a:before{content:"";width:6px;height:32px;position:absolute;left:-6px;top:0}#globalNav ul ul .active a:before,#globalNav ul ul .active a:hover:before{background-image:url(images/triangleMenuItem_right.png)}#globalNav ul ul:hover a:before{background-image:none}#globalNav ul ul a:hover:before{background-image:url(images/triangleMenuItem_right_hover.png)}#globalNav ul ul li a:hover{border-color:transparent}#globalNav .dropdown-menu{width:400px}#globalNavDetail{padding:20px 10px 0;width:250px;height:100%;position:relative;top:0}#globalNavDetail>div{display:none;color:graytext;background-image:none;background-repeat:no-repeat;background-position:0 0;min-height:64px}#globalNavDetail>div.open{display:inline-block}#globalNavDetail>div .globalNavDetailApigeeLogo,#globalNavDetail>div .globalNavDetailDescr
iption,#globalNavDetail>div .globalNavDetailSubtitle,#globalNavDetail>div .globalNavDetailTitle{margin-left:80px}#globalNavDetail>div .globalNavDetailSubtitle{font-size:10px;text-transform:uppercase}#globalNavDetail>div .globalNavDetailTitle{margin-top:5px;font-size:20px}#globalNavDetail>div .globalNavDetailDescription{margin-top:10px;line-height:17px;font-style:oblique}#globalNavDetail #globalNavDetailApigeeHome{margin-top:-10px;background-image:url(img/appswitcher/home_lg.png)}#globalNavDetail #globalNavDetailApigeeHome .globalNavDetailApigeeLogo{margin-top:10px;background-image:url(img/appswitcher/logo_color.png);width:116px;height:40px}#globalNavDetail #globalNavDetailAppServices{background-image:url(img/appswitcher/appServices_lg.png)}#globalNavDetail #globalNavDetailApiPlatform{background-image:url(img/appswitcher/apiPlatform_lg.png)}#globalNavDetail #globalNavDetailMobileAnalytics{background-image:url(img/appswitcher/max_lg.png)}#globalNavDetail #globalNavDetailApiConsoles{ba
ckground-image:url(img/appswitcher/console_lg.png)}#globalNavSubmenuContainer{float:right}#globalNavSubmenuContainer ul{margin-left:0}.ng-cloak,.x-ng-cloak,[data-ng-cloak],[ng-cloak],[ng\:cloak],[x-ng-cloak]{display:none}html{min-height:100%;position:relative;margin:0 auto;background:#fff;min-width:1100px}body{padding:0;background-color:#fff;font-family:marquette-light,'Helvetica Neue',Helvetica,Arial,sans-serif;height:100%;max-height:100%;overflow-x:hidden}a{cursor:pointer}@font-face{font-family:entypo;src:url(entypo/entypo.eot);src:url(entypo/entypo.eot?#iefix) format('embedded-opentype'),url(entypo/entypo.woff) format('woff'),url(entypo/entypo.ttf) format('truetype'),url(entypo/entypo.svg#entypo) format('svg');font-weight:400;font-style:normal}@font-face{font-family:marquette-medium;src:url(arsmarquette/ARSMaquettePro-Medium.otf),url(arsmarquette/ARSMaquettePro-Medium.otf) format('opentype')}@font-face{font-family:marquette-regular;src:url(arsmarquette/ARSMaquettePro-Regular.otf)
,url(arsmarquette/ARSMaquettePro-Regular.otf) format('opentype')}@font-face{font-family:marquette-light;src:url(arsmarquette/ARSMaquettePro-Light.otf),url(arsmarquette/ARSMaquettePro-Light.otf) format('opentype')}.bold{font-family:marquette-medium}.main-content{background-color:#fff;margin:0 0 0 200px}.side-menu{position:absolute;top:51px;left:0;bottom:0;width:200px;float:left;background-color:#eee}footer{padding-top:20px;clear:both}.zero-out{padding:0;text-shadow:none;background-color:transparent;background-image:none;border:0;box-shadow:none;outline:0}.modal-body{overflow-y:visible}.demo-holder{margin:0 -20px 0 -20px;position:relative}.alert-holder{position:fixed;right:0;margin:20px 20px 0 0;z-index:10500;width:302px}.alert,.alert.alert-demo{padding:9px 35px 5px 14px;margin-bottom:3px;text-shadow:0 1px 0 rgba(255,255,255,.5);background-color:#eee;border:1px solid #eee;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-transition:all 1s ease;-moz-transition:all 1s
ease;transition:all 1s ease;height:0;overflow:hidden;line-height:0;float:right}.alert.alert-demo{float:none}.alert{width:0}.alert.alert-success{background-color:rgba(155,198,144,.31);color:#1f6719;border-left:2px solid #1f6719}.alert.alert-warning{background-color:rgba(239,172,37,.2);color:#efac25;border-left:2px solid #efac25}.alert.alert-info{background-color:rgba(27,151,209,.2);color:#1b97d1;border-left:2px solid #1b97d1}.alert.alert-error{background-color:rgba(255,3,3,.2);color:#ff0303;border-left:2px solid #ff0303}.alert.alert-animate.alert-demo{height:20px;line-height:normal;opacity:1;width:100%;-moz-box-shadow:inset 0 2px 13px #b8b8b8;-webkit-box-shadow:inset 0 2px 13px #b8b8b8;box-shadow:inset 0 2px 13px #b8b8b8}.alert.alert-animate{height:auto;line-height:normal;opacity:.9;width:300px}@-webkit-keyframes alert-out{from{opacity:1}to{-webkit-transform:translateY(500px);opacity:0}}@keyframes alert-out{from{opacity:1}to{transform:translateY(500px);opacity:0}}.fade-out{-webkit-a
nimation-name:alert-out;-webkit-animation-duration:1s;-webkit-animation-timing-function:step-stop;-webkit-animation-direction:normal;-webkit-animation-iteration-count:1;animation-name:alert-out;animation-duration:1s;animation-timing-function:step-stop;animation-direction:normal;animation-iteration-count:1;opacity:.9}.margin-35{margin-top:35px}.modal-footer{background-color:transparent}.baloon{margin:20px;padding:20px 30px;position:fixed;bottom:0;top:auto;border-style:solid;border-radius:2px;box-shadow:0 0 4px rgba(0,0,0,.8)}.baloon:after{content:"";position:absolute;width:10px;height:10px;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-o-transform:rotate(45deg);-ms-filter:"progid:DXImageTransform.Microsoft.Matrix(M11=0.7071067811865473, M12=-0.7071067811865477, M21=0.7071067811865477, M22=0.7071067811865473, SizingMethod='auto expand')"}.north.baloon:after{top:-6px;left:30px;border-top-style:solid;border-left-style:solid;box-shadow:-2px -2px 3px -1px rgba(0,0,0,.5)}.so
uth.baloon:after{bottom:-6px;left:30px;border-bottom-style:solid;border-right-style:solid;box-shadow:2px 2px 3px -1px rgba(0,0,0,.5)}.left.baloon:after{top:10px;left:-6px;border-bottom-style:solid;border-left-style:solid;box-shadow:-2px 2px 3px -1px rgba(0,0,0,.5)}.right.baloon:after{bottom:10px;right:-6px;border-top-style:solid;border-right-style:solid;box-shadow:2px -2px 3px -1px rgba(0,0,0,.5)}.baloon,.baloon:after{font-family:sans-serif;font-weight:700;border-color:#f7f7f7;border-width:1px;background-color:#3ac62f;color:#fff}#globalNav{float:right;margin:15px 8px 0 9px;list-style:none;width:114px}#globalNav ul{list-style:none}#globalNavDetail>div{display:none;color:graytext;background-image:none;background-repeat:no-repeat;background-position:0 0;min-height:64px}#globalNavDetail #globalNavDetailApiPlatform{background-image:url(../img/appswitcher/apiPlatform_lg.png)}#globalNavDetail #globalNavDetailAppServices{background-image:url(../img/appswitcher/appServices_lg.png)}#globalNav
Detail #globalNavDetailApigeeHome{margin-top:-10px;background-image:url(../img/appswitcher/home_lg.png)}#globalNavDetail #globalNavDetailApiConsoles{background-image:url(../img/appswitcher/console_lg.png)}#globalNavDetail #globalNavDetailApigeeHome .globalNavDetailApigeeLogo{margin-top:10px;background-image:url(../img/appswitcher/logo_color.png);width:116px;height:40px}#globalNavDetail>div .globalNavDetailSubtitle{font-size:10px;text-transform:uppercase}#globalNavDetail>div .globalNavDetailTitle{margin-top:5px;font-size:20px}#globalNavDetail>div .globalNavDetailDescription{margin-top:10px;line-height:17px;font-style:oblique}.navbar.navbar-static-top .dropdownContainingSubmenu .dropdown-menu a{color:#494949;padding:13px 10px}.navbar.navbar-static-top .dropdownContainingSubmenu .dropdown-menu .active a{color:#fff;background-color:#bb2d16}.navbar.navbar-static-top .dropdown-menu a{display:block;padding:3px 15px;clear:both;font-weight:400;line-height:18px;color:#333;white-space:nowrap}#
globalNav .dropdown-toggle{border-radius:3px;padding:3px 6px;margin:0}.dropdown-toggle{background-color:#bb2d16;padding:3px}.demo-holder .alert.alert-demo{background-color:rgba(196,196,196,.1);color:#777;padding:12px 35px 7px 14px}.demo-holder-content{position:absolute;right:50px}.demo-text{position:absolute;right:223px;left:0;padding:0 0 0 10px}.b{display:block}.toggle,.toggle-form{position:absolute;top:10px;right:173px;width:50px;height:23px;border-radius:100px;background-color:#ddd;overflow:hidden;box-shadow:inset 0 0 2px 1px rgba(0,0,0,.05)}.form-horizontal.configs .control-label{width:250px;padding:0 10px 0 0}.toggle-form{position:relative;right:auto;top:auto;display:inline-block}.toggle-form-label{display:inline-block}input[type=checkbox].check{position:absolute;display:block;cursor:pointer;top:0;left:0;width:100%;height:100%;opacity:0;z-index:6}.check:checked~.track{box-shadow:inset 0 0 0 20px #ff3b00}.toggle-form .check:checked~.track{box-shadow:inset 0 0 0 20px #82ce85}.che
ck:checked~.switch{right:2px;left:27px;transition:.4s ease;transition-property:left,right;transition-delay:.05s,0s}.switch{position:absolute;left:2px;top:2px;bottom:2px;right:27px;background-color:#fff;border-radius:36px;z-index:1;transition:.4s ease;transition-property:left,right;transition-delay:0s,.05s;box-shadow:0 1px 2px rgba(0,0,0,.2)}.track{position:absolute;left:0;top:0;right:0;bottom:0;transition:.4s ease;box-shadow:inset 0 0 0 2px rgba(0,0,0,.05);border-radius:40px}.add-app .pictogram,top-selector .pictogram{margin:0 3px 0 0}i.pictogram{font-family:entypo;display:inline-block;width:23px;margin:0 5px 0 0;font-size:2.5em;height:17px;line-height:.35;overflow:hidden;vertical-align:middle;padding:5px 0 0;font-style:normal;font-weight:100;-webkit-font-smoothing:antialiased}i.pictogram.sub{margin:0 0 0 10px;font-size:2.1em}i.pictogram.title{margin:0;font-size:2.1em}i.pictogram.chart{margin:0 0 0 3px;font-size:2.1em;line-height:.4em;height:.5em;width:100%}i.pictogram.apichart{marg
in:0 0 0 11px;font-size:2.1em;line-height:.4em;height:.5em;width:100%}[class*=" ma-icon-"],[class^=ma-icon-]{display:inline-block;width:23px;height:20px;margin:1px 3px 0 0;line-height:20px;vertical-align:text-top;background-image:url(../img/nav-sprites.png);background-position:14px 14px;background-repeat:no-repeat}[class*=" sdk-icon-"],[class^=sdk-icon-]{display:inline-block;width:32px;height:29px;margin:-3px 3px 0 0;line-height:32px;vertical-align:text-top;background-image:url(../img/sdk-sprites.png);background-position:14px 14px;background-repeat:no-repeat;cursor:pointer;overflow:hidden}[class*=" sdk-icon-large-"],[class^=sdk-icon-large-]{display:inline-block;width:86px;height:86px;margin:-3px 3px 0 0;line-height:32px;vertical-align:text-top;background-image:url(../img/sdk-sprites-large.png);background-position:14px 14px;background-repeat:no-repeat;border:1px solid #aaa;-moz-box-shadow:3px 3px 0 -1px #ccc;-webkit-box-shadow:3px 3px 0 -1px #ccc;box-shadow:3px 3px 0 -1px #ccc}.sdk-i
con-ios{background-position:-6px -4px}.sdk-icon-android{background-position:-59px -3px}.sdk-icon-js{background-position:-109px -4px}.sdk-icon-node{background-position:-154px -3px}.sdk-icon-ruby{background-position:-204px -3px}.sdk-icon-net{background-position:-256px -4px}.sdk-icon-large-ios{background-position:-6px -3px}.sdk-icon-large-android{background-position:-113px 0}.sdk-icon-large-js{background-position:-219px 0}.sdk-icon-large-node{background-position:-323px -3px}.sdk-icon-large-ruby{background-position:-431px 0}.sdk-icon-large-net{background-position:-537px -3px}body>header>.navbar{background-color:#ff3b00}body>header .navbar:first-child>a{height:22px;line-height:22px;padding:10px 20px 20px 13px}.navbar.navbar-static-top a{text-shadow:none;color:#fff}.navbar-text{color:#fff;margin:4px}.navbar-text .dropdown-menu a{color:#343434}.navbar-text.pull-left{margin-left:90px}.top-nav,ul.app-nav li,ul.org-nav li{background-color:#fff}.top-nav .btn-group{margin:9px 0 5px 5px}.nav .ap
p-selector .caret,.nav .app-selector:active .caret,.nav .app-selector:focus .caret,.nav .app-selector:hover .caret,.nav .org-selector .caret,.nav .org-selector:active .caret,.nav .org-selector:focus .caret,.nav .org-selector:hover .caret{border-top-color:#5f5f5f;border-bottom-color:transparent;margin-top:8px;position:absolute;right:10px}.org-options{margin:5px 2px -8px -5px;border-top:3px solid #e6e6e6;overflow:hidden}.navbar.secondary{margin:0 -20px 0 -21px;border-bottom:3px solid #e6e6e6}.navbar.secondary>.container-fluid{margin:0 -20px 0 -18px}.navbar.secondary .nav,.navbar.secondary>.container-fluid .nav-collapse.collapse.span9,.top-nav{margin:0}.top-nav>li,.top-nav>li>div{width:100%}.span9.button-area{margin-left:0}.navbar .nav a.btn-create i{margin:1px 0 0}.navbar .nav a.btn-create,.navbar .nav a.btn-create:hover{text-align:left;font-weight:400;color:#1b70a0;padding:0 0 0 10px;margin:4px 0 0 3px;display:block;width:140px;height:30px;line-height:30px;background-color:#f3f3f3}.n
avbar .nav a.btn-create:hover{color:#1b70a0}.navbar .nav a.btn-create:active{box-shadow:none}.sdks>ul>li.title label{color:#5f5f5f;font-size:15px;display:inline-block;padding:16px 0 0;line-height:6px;cursor:default}.sdks>ul>li.title a{color:#5f5f5f;font-size:15px;display:inline-block;padding:16px 0 0;line-height:6px}.sdks>ul{list-style:none;margin:0;height:32px;overflow:hidden}.sdks>ul>li{display:inline;margin:0 10px 0 0;line-height:11px}.navbar.secondary,.navbar.secondary .btn-group>.btn,.navbar.secondary .btn-group>.dropdown-menu,.side-menu .btn-group>.btn,.side-menu .dropdown-menu{text-transform:uppercase;font-family:marquette-regular,'Helvetica Neue',Helvetica,Arial,sans-serif;color:#5f5f5f;font-size:14px;-webkit-font-smoothing:antialiased}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover,.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover,.dropdown-submenu:focus>a,.dropdown-submenu:hover>a{text-decoration:none;color:#fff;background-color:#5f
5f5f;background-image:-moz-linear-gradient(top,#5f5f5f,#787878);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5f5f5f),to(#787878));background-image:-webkit-linear-gradient(top,#5f5f5f,#787878);background-image:-o-linear-gradient(top,#5f5f5f,#787878);background-image:linear-gradient(to bottom,#5f5f5f,#787878);background-repeat:repeat-x}.btn-group.open .btn.dropdown-toggle.top-selector,.top-selector,.top-selector:active,.top-selector:focus,.top-selector:hover{color:#5f5f5f;padding:0;text-shadow:none;background-color:transparent;background-image:none;border:0;box-shadow:none;outline:0;width:100%;text-align:left}.dialog-body{padding:20px}h1.title{font-size:1.3em;font-family:marquette-medium,"Helvetica Neue",sans-serif;color:#686868;line-height:17px;display:inline-block;padding:0 10px 0 0}h2.title{text-transform:uppercase;font-size:1.2em;border-top:2px solid #eee;color:#828282}h2.title.chart{margin:10px 0 20px 10px;z-index:101;position:absolute;top:0;left:0;right:0}h3.title{t
ext-transform:uppercase;font-size:1.1em}.sidebar-nav .nav-list{padding:0}.nav-list .nav-header,.sidebar-nav .nav-list>li>a{margin-right:0}.sidebar-nav .nav-list.trans{max-height:100000px;-webkit-transition:all .5s ease;-moz-transition:all .5s ease;transition:all .5s ease;display:block;opacity:0}.sidebar-nav .nav-list li a{padding:10px 0 10px 25px;color:#5f5f5f;text-shadow:none;background-color:#eee;font-size:14px;text-transform:uppercase;position:relative}.sidebar-nav .nav-list li a.org-overview{background-color:#fff;font-family:marquette-light,'Helvetica Neue',Helvetica,Arial,sans-serif}.sidebar-nav .nav-list li a.org-overview:hover{color:#5f5f5f}.sidebar-nav .nav-list:first-child>li{margin:0;height:39px;overflow:hidden}.sidebar-nav .nav-list:first-child>li.active{height:auto;overflow:visible}.sidebar-nav .nav-list:first-child>li>ul>li>a{color:#5f5f5f}.sidebar-nav .nav-list:first-child>li.active>a,.sidebar-nav .nav-list:first-child>li>a:focus,.sidebar-nav .nav-list:first-child>li>a
:hover{color:#fff;text-shadow:none;background-color:#1b70a0;margin:0 0 0 -15px}.sidebar-nav .nav-list:first-child li.active>ul>li>a{background-color:#fff}.sidebar-nav .nav-list li.option>ul{overflow:hidden;opacity:0;height:auto;display:block;-webkit-transition:all .5s ease;-moz-transition:all .5s ease;transition:all .5s ease;max-height:100000px}.sidebar-nav .nav-list li.option.active>ul{opacity:1}.sidebar-nav .nav-list li.active>ul>li a{border-bottom:1px solid #eee;color:#747474;text-transform:none;font-weight:300;padding:10px 0 10px 22px}.sidebar-nav .nav-list li.active>ul>li.active>a,.sidebar-nav .nav-list li.active>ul>li>a:focus,.sidebar-nav .nav-list li.active>ul>li>a:hover{color:#1b70a0;background:#fff url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAKCAYAAAB4zEQNAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIH
g6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYxIDY0LjE0MDk0OSwgMjAxMC8xMi8wNy0xMDo1NzowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNS4xIE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo1NkEzQ0Y1MUI0MjIxMUUyODZGN0I5RUE1NjAwQ0I0MCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo1NkEzQ0Y1MkI0MjIxMUUyODZGN0I5RUE1NjAwQ0I0MCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjU2QTNDRjRGQjQyMjExRTI4NkY3QjlFQTU2MDBDQjQwIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjU2QTNDRjUwQjQyMjExRTI4NkY3QjlFQTU2MDBDQjQwIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+poqUzgAAAG1JREFUeNpilC5YwIADqLNgEWQG4kYg9mNCk1AE4sNAXA3iIEuGAPF5ILaECYAkeYB
4DhCvBmJ+ZGNAkt+B+CkQ/0W3nAkqWA/EblBFKJIwsA+IDYF4BzZJEHgNxJ5AXAbEv1hwBEA3EK8BCDAAwgoRW2zTv6EAAAAASUVORK5CYII=) no-repeat;background-position:206px 16px;font-family:marquette-medium,'Helvetica Neue',Helvetica,Arial,sans-serif;border-bottom:1px solid #eee;text-shadow:none;-webkit-font-smoothing:antialiased}.sidebar-nav .nav-list li.option ul{list-style:none}.new-tag{border-radius:3px;display:inline-block;font-family:marquette-medium;font-size:.6em;background-color:rgba(26,26,26,.5);color:#fff;padding:3px;height:8px;line-height:8px;position:absolute;right:5px;top:13px}.sidebar-nav .nav-list li:active a{background-color:rgba(255,255,255,.5)}.app-creds dt{font-family:marquette-medium}.intro-container{position:relative;height:auto;-webkit-transition:all .5s ease-out;-moz-transition:all .5s ease-out;transition:all .5s ease-out;overflow:hidden}.sdk-intro{position:absolute;border:1px solid #aaa;background-color:#f4f4f4;-moz-box-shadow:inset 0 0 10px #ccc;-webkit-box-shadow:inset 0 0 10px #cc
c;box-shadow:inset 0 4px 10px #ccc;opacity:.4;top:0;left:6px;right:1px;bottom:0;height:auto;overflow:hidden}.sdk-intro-content{position:absolute;padding:10px 40px 10px 10px;top:0;left:6px;right:-20px;bottom:0;height:auto;overflow:auto}.sdk-intro-content .btn.normal{margin:19px 10px 0 0}.keys-creds h2{margin-bottom:-2px}.user-list{padding:0;margin:0;list-style:none;min-height:450px;float:left;width:100%}.user-list li{padding:10px;border-bottom:1px solid #c5c5c5;cursor:pointer}.user-list li .label{margin:0 0 0 22px}.user-list li input{margin:0 10px 0 0}.user-list li.selected{background-color:#eee}#user-panel{margin-top:20px}.user-col{border-right:1px solid #c5c5c5;-moz-box-shadow:inset -27px 1px 6px -27px #b8b8b8;-webkit-box-shadow:inset -27px 1px 6px -27px #b8b8b8;box-shadow:inset -27px 1px 6px -27px #b8b8b8}.user-profile-picture{width:40px;height:40px}.content-page>.well{padding:10px;height:40px}.table-header td{font-weight:800;color:#000}.user-header-title{font-size:13px;font-famil
y:marquette-regular,'Helvetica Neue',Helvetica,Arial,sans-serif}.tabbable>.tab-content{overflow:visible}.button-strip{float:right;margin-bottom:10px}a.notifications-links{color:#1b97d1}.notifications-header{height:50px;background-color:#eee;padding:10px;border-bottom:1px solid #aaa;position:relative;overflow:hidden}.groups-row td.details,.notifications-row td.details,.roles-row td.details,.users-row td.details{line-height:25px!important;border-right:1px solid #e5e5e5}.nav-tabs>li{cursor:pointer}.login-content{position:absolute;top:91px;bottom:0;left:0;right:0;background-color:#fff;padding:9% 0 0 32%}.login-content form{margin:0}.login-content form h1{padding:10px 0 5px 20px}.login-holder{width:450px;border:1px solid #e5e5e5}.login-holder .form-actions{padding-left:30px;margin-bottom:0}.login-holder .form-actions .submit{padding:0 30px 0 0}.login-content .extra-actions{margin-top:10px;padding-left:30px;margin-bottom:0}.login-content .extra-actions .submit{padding:0 30px 0 0}.login-co
ntent .extra-actions .submit a{margin-left:3px;margin-right:3px}.signUp-content{position:absolute;top:91px;bottom:0;left:0;right:0;background-color:#fff;padding:9% 0 0 32%}.signUp-content form{margin:0}.signUp-content form h1{padding:10px 0 5px 20px}.signUp-holder{width:450px;border:1px solid #e5e5e5}.signUp-holder .form-actions{margin-bottom:0}.signUp-holder .form-actions .submit{padding:0 30px 0 0}.table.collection-list{border:1px solid #eee}.formatted-json,.formatted-json ul{list-style:none}.formatted-json .key{font-family:marquette-medium}.formatted-json li{border-bottom:1px solid #eee;margin:3px 0}iframe[seamless]{background-color:transparent;border:0 none transparent;padding:0;overflow:visible;overflow-x:hidden;width:100%}.gravatar20{padding:7px 0 0 10px!important;margin:0;width:30px}#shell-panel *{font-family:monospace}#shell-panel .boxContent{font-family:monospace;font-size:14px;min-height:400px}#shell-panel input{font-family:monospace;overflow:auto;width:90%;margin-top:10px
}#shell-panel hr{margin:2px;border-color:#e1e1e1}form input.has-error{-webkit-animation:pulse-red 1s alternate infinite;-moz-animation:pulse-red 1s alternate infinite;border:1px solid rgba(255,3,3,.6)}.validator-error-message{color:#ff0303}@-webkit-keyframes pulse-red{0%{box-shadow:inset 0 0 5px 2px rgba(255,3,3,.1),0 0 5px 2px rgba(255,3,3,.3)}100%{box-shadow:inset 0 0 5px 2px rgba(255,3,3,.3),0 0 5px 2px rgba(255,3,3,.1)}}@-moz-keyframes pulse-red{0%{box-shadow:inset 0 0 5px 2px rgba(255,3,3,.1),0 0 5px 2px rgba(255,3,3,.3)}100%{box-shadow:inset 0 0 5px 2px rgba(255,3,3,.3),0 0 5px 2px rgba(255,3,3,.1)}}.modal-instructions{padding-top:5px;padding-bottom:5px}.dropdown-menu{width:100%}.modal{width:560px!important}.dropdown-backdrop{position:static}.title.with-icons a{display:inline-block;text-transform:lowercase;font-size:.8em;margin:0 5px 0 0}.span9.tab-content{margin:0}.span9.tab-content .content-page{padding:0 0 0 30px}.button-toolbar,.menu-toolbar{padding:10px 0;margin:0;width:1
00%}.menu-toolbar{padding:0 0 20px}.menu-toolbar>ul.inline{border-bottom:1px solid #c5c5c5;margin:0}.btn-group .filter-selector,.btn-group .filter-selector:active,.btn-group .filter-selector:focus,.btn-group .filter-selector:hover,.btn-group .filter-title,.btn-group .filter-title:active,.btn-group .filter-title:focus,.btn-group.open .btn.dropdown-toggle.filter-selector,.btn-group.open .btn.dropdown-toggle.filter-title,.btn-group>.filter-selector.btn:first-child,.btn-group>.filter-title.btn:first-child,.btn.btn-primary,.btn.normal,.modal-footer .btn{color:#fff;padding:3px 9px;text-shadow:none;background-color:#494949;background-image:none;border:1px solid #c5c5c5;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;border-bottom-left-radius:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;box-shadow:none}ul.inline>li.tab{margin:0;padding:0}li.tab .btn.btn-primary{background-color:#eee;border:0;color:#494949;box-shadow:none;margin:0 -1px -1px -1px;padding:3px 19px 3
px 16px;border-bottom:1px solid #c5c5c5}ul.inline>li.tab.selected{margin:0 0 -1px 0;border-bottom:1px solid #fff}li.tab.selected .btn.btn-primary.toolbar{color:#494949;border-left:1px solid #c5c5c5;border-right:1px solid #c5c5c5;border-top:1px solid #c5c5c5;border-bottom:0;background-color:#fff}.btn-group.compare .filter-selector.btn:first-child,.btn.btn-primary.toolbar{color:#494949;background-color:#f1f1f1}li.selected .btn.btn-primary.toolbar{color:#fff;border:1px solid #1b70a0;background-color:#1b70a0}.btn.cancel,.btn.cancel:hover,.btn.normal.white,.btn.normal.white:hover{background-color:#fff;color:#5f5f5f}.btn-group .filter-selector:active,.btn-group .filter-title:hover,.btn-group.selected .filter-selector,.btn-group.selected>.filter-selector.btn:first-child,.btn.btn-primary:active,.btn.btn-primary:hover,.btn.normal:hover,.modal-footer .btn:active,.modal-footer .btn:hover{color:#fff;border:1px solid #1b70a0;background-color:#1b70a0}.btn-group .filter-selector .caret{margin:8px
0 0 10px;border-top:4px solid #fff;border-right:4px solid transparent;border-left:4px solid transparent}.btn-group.header-button{margin:4px 0 0;text-transform:none}.page-filters{padding:0;margin:10px 0}.dropdown-menu{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;z-index:102}.modal{position:fixed;top:10%;left:50%;margin-left:-280px;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,.3);*border:1px solid #999;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:0 3px 7px rgba(0,0,0,.3);-moz-box-shadow:0 3px 7px rgba(0,0,0,.3);box-shadow:0 3px 7px rgba(0,0,0,.3);-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box;outline:0}.modal.fade{z-index:-200}.modal.fade.in{z-index:1050}.auto-update-container{padding:10px 0 0}.auto-updates{margin:0 10px 0 0}.super-help{font-size:9pt;vertical-align:super}.help_tooltip{font-size:9pt;text-transform:none}.helpButton{font-family:Helvetica,Arial,s
ans-serif;font-size:13px;font-weight:300;padding:5px 8px;text-align:center;vertical-align:middle;color:#ffd6ca;border:1px solid #ffbfab;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;background-color:#ff3b00;width:110px;outline:0}.helpButton:hover{cursor:pointer;background-color:#FFB7A5;color:#dc3300;-webkit-transition:background-color .1s;-moz-transition:background-color .1s;-o-transition:background-color .1s;transition:background-color .1s}.helpButtonClicked{background-color:#FFB7A5;color:#dc3300;outline:0}.introjs-overlay{background:0 0;filter:none;-ms-filter:"alpha(Opacity=20)";filter:alpha(opacity=20);background-color:#fff;opacity:.2}.introjs-helperLayer{border-radius:0;box-shadow:none;border:1px solid rgba(0,0,0,.25)}.introjs-helperNumberLayer{top:-12px;left:-12px;font-family:"Open Sans",Arial,sans-serif;font-weight:400;border:0;filter:none;filter:none;box-shadow:none}.introjs-arrow{border:10px solid #fff}.introjs-arrow.top{top:-20px;border-bottom-color:#6d
bce3}.introjs-arrow.right{right:-20px;top:20px;border-left-color:#6dbce3}.introjs-arrow.bottom{bottom:-20px;border-top-color:#6dbce3}.introjs-arrow.left{left:-20px;top:20px;border-right-color:#6dbce3}.introjs-arrow:before{border:10px solid #fff;content:'';position:absolute}.introjs-arrow.top:before{top:-8px;left:-10px;border-top-color:transparent;border-right-color:transparent;border-bottom-color:#F0F8FC;border-left-color:transparent}.introjs-arrow.right:before{right:-7px;top:-10px;border-top-color:transparent;border-right-color:transparent;border-bottom-color:transparent;border-left-color:#F0F8FC}.introjs-arrow.bottom:before{bottom:-9px;left:-10px;border-top-color:#F0F8FC;border-right-color:transparent;border-bottom-color:transparent;border-left-color:transparent}.introjs-arrow.left:before{left:-7px;top:-10px;border-top-color:transparent;border-right-color:#F0F8FC;border-bottom-color:transparent;border-left-color:transparent}.introjs-tooltip{background-color:#F0F8FC;border-radius:0
;border:1px solid #6dbce3;box-shadow:0 1px 7px rgba(0,0,0,.3)}.introjs-button{text-shadow:none;font:12px/normal sans-serif;color:#1f77a3;background-color:#F0F8FC;background-image:none;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px;border:1px solid #d4d4d4}.introjs-button:hover{font-family:"Open Sans",Arial,sans-serif}.introjs-button:active,.introjs-button:focus{text-decoration:none;outline:0}.introjs-skipbutton{color:#1f77a3;text-decoration:none;font-family:"Open Sans",Arial,sans-serif;margin-right:32px;border:1px solid #6dbce3}.introjs-nextbutton{text-decoration:none;font-family:"Open Sans",Arial,sans-serif;width:40px;margin-left:3px}.introjs-prevbutton{text-decoration:none;font-family:"Open Sans",Arial,sans-serif;width:40px}.introjs-nextbutton,.introjs-nextbutton:active,.introjs-nextbutton:focus,.introjs-nextbutton:hover{background-image:url(../img/introjs_arrow_step_next.png);background-position:45px 5px;background-repeat:no-repeat;text-align:left;border:1px s
olid #6dbce3}.introjs-prevbutton,.introjs-prevbutton:active,.introjs-prevbutton:focus,.introjs-prevbutton:hover{background-image:url(../img/introjs_arrow_step_prev.png);background-position:2px 5px;background-repeat:no-repeat;text-align:right;border:1px solid #6dbce3}.introjs-nextbutton.introjs-disabled,.introjs-nextbutton.introjs-disabled:active,.introjs-nextbutton.introjs-disabled:focus,.introjs-nextbutton.introjs-disabled:hover{background-image:url(../img/introjs_arrow_step_next_disabled.png);background-position:48px 5px;background-repeat:no-repeat;text-align:left;border:1px solid #d4d4d4}.introjs-prevbutton.introjs-disabled,.introjs-prevbutton.introjs-disabled:active,.introjs-prevbutton.introjs-disabled:focus,.introjs-prevbutton.introjs-disabled:hover{background-image:url(../img/introjs_arrow_step_prev_disabled.png);background-position:2px 5px;background-repeat:no-repeat;text-align:right;border:1px solid #d4d4d4}.introjs-disabled,.introjs-disabled:focus,.introjs-disabled:hover{co
lor:gray;background-color:#F0F8FC}.introjs-tooltiptext{font-size:13px;line-height:19px}.introjstooltipheader{font-size:13px;line-height:19px;font-family:marquette-medium,'Helvetica Neue',Helvetica,Arial,sans-serif}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/70780481/portal/dist/appsvc-ui/css/main.css
----------------------------------------------------------------------
diff --git a/portal/dist/appsvc-ui/css/main.css b/portal/dist/appsvc-ui/css/main.css
index 9c8ab5d..ffdaebb 100644
--- a/portal/dist/appsvc-ui/css/main.css
+++ b/portal/dist/appsvc-ui/css/main.css
@@ -1912,8 +1912,8 @@ li.selected .btn.btn-primary.toolbar {
.introjs-nextbutton:focus,
.introjs-nextbutton:active,
.introjs-nextbutton:hover {
- background-image: url("img/introjs_arrow_step_next.png");
- background-position: 48px 5px;
+ background-image: url("../img/introjs_arrow_step_next.png");
+ background-position: 45px 5px;
background-repeat: no-repeat;
text-align: left;
border: 1px solid #6dbce3;
@@ -1923,7 +1923,7 @@ li.selected .btn.btn-primary.toolbar {
.introjs-prevbutton:focus,
.introjs-prevbutton:active,
.introjs-prevbutton:hover {
- background-image: url("img/introjs_arrow_step_prev.png");
+ background-image: url("../img/introjs_arrow_step_prev.png");
background-position: 2px 5px;
background-repeat: no-repeat;
text-align: right;
@@ -1934,7 +1934,7 @@ li.selected .btn.btn-primary.toolbar {
.introjs-nextbutton.introjs-disabled:active,
.introjs-nextbutton.introjs-disabled:hover,
.introjs-nextbutton.introjs-disabled:focus {
- background-image: url("img/introjs_arrow_step_next_disabled.png");
+ background-image: url("../img/introjs_arrow_step_next_disabled.png");
background-position: 48px 5px;
background-repeat: no-repeat;
text-align: left;
@@ -1945,7 +1945,7 @@ li.selected .btn.btn-primary.toolbar {
.introjs-prevbutton.introjs-disabled:active,
.introjs-prevbutton.introjs-disabled:hover,
.introjs-prevbutton.introjs-disabled:focus {
- background-image: url("img/introjs_arrow_step_prev_disabled.png");
+ background-image: url("../img/introjs_arrow_step_prev_disabled.png");
background-position: 2px 5px;
background-repeat: no-repeat;
text-align: right;
[8/9] git commit: building files
Posted by sn...@apache.org.
building files
Project: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/commit/70780481
Tree: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/tree/70780481
Diff: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/diff/70780481
Branch: refs/heads/master
Commit: 70780481a39fa758dc2a909b097cfaf33ed4b669
Parents: 3313695
Author: Shawn Feldman <sh...@gmail.com>
Authored: Mon Mar 31 14:48:09 2014 -0600
Committer: Shawn Feldman <sh...@gmail.com>
Committed: Mon Mar 31 14:48:09 2014 -0600
----------------------------------------------------------------------
portal/dist/appsvc-ui/2.0.2/css/dash.min.css | 2 +-
portal/dist/appsvc-ui/2.0.2/css/main.css | 10 +-
portal/dist/appsvc-ui/css/dash.min.css | 2 +-
portal/dist/appsvc-ui/css/main.css | 10 +-
portal/js/usergrid-dev.min.js | 19754 --------------------
5 files changed, 12 insertions(+), 19766 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/70780481/portal/dist/appsvc-ui/2.0.2/css/dash.min.css
----------------------------------------------------------------------
diff --git a/portal/dist/appsvc-ui/2.0.2/css/dash.min.css b/portal/dist/appsvc-ui/2.0.2/css/dash.min.css
index 62424d9..c2b5359 100644
--- a/portal/dist/appsvc-ui/2.0.2/css/dash.min.css
+++ b/portal/dist/appsvc-ui/2.0.2/css/dash.min.css
@@ -1 +1 @@
-.dropdown{position:relative}.dropdown-toggle{*margin-bottom:-3px}.dropdown-toggle:active,.open .dropdown-toggle{outline:0}.caret{display:inline-block;width:0;height:0;vertical-align:top;border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid #000;opacity:.3;filter:alpha(opacity=30);content:""}.dropdown .caret{margin-top:8px;margin-left:2px}.dropdown:hover .caret,.open.dropdown .caret{opacity:1;filter:alpha(opacity=100)}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;float:left;display:none;min-width:160px;padding:4px 0;margin:0;list-style:none;background-color:#fff;border-color:#ccc;border-color:rgba(0,0,0,.2);border-style:solid;border-width:1px;-webkit-border-radius:0 0 5px 5px;-moz-border-radius:0 0 5px 5px;border-radius:0 0 5px 5px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip
:padding-box;*border-right-width:2px;*border-bottom-width:2px}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:8px 1px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #fff;*width:100%;*margin:-5px 0 5px}.dropdown-menu a{display:block;padding:3px 15px;clear:both;font-weight:400;line-height:18px;color:#333;white-space:nowrap}.dropdown-menu .active>a,.dropdown-menu .active>a:hover,.dropdown-menu li>a:hover{color:#fff;text-decoration:none;background-color:#08c}.dropdown.open{*z-index:1000}.dropdown.open .dropdown-toggle{color:#fff;background:#ccc;background:rgba(0,0,0,.3)}.dropdown.open .dropdown-menu{display:block}.pull-right .dropdown-menu{left:auto;right:0}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid #000;content:"\2191"}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}.dropdownContainingSubmenu .dropdown-menu{padding:0;margin-t
op:-4px;min-width:auto;background-color:#fff;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:4px 4px 16px rgba(0,0,0,.25);-moz-box-shadow:4px 4px 16px rgba(0,0,0,.25);box-shadow:4px 4px 16px rgba(0,0,0,.25);border-width:1px;border-top-width:4px;border-color:#bb2d16}.dropdownContainingSubmenu .dropdown-menu a{color:#494949;padding:7px 10px}.dropdownContainingSubmenu .dropdown-menu a:hover{color:#fff;background-color:#f03800}.dropdownContainingSubmenu .dropdown-menu .nav-header{background-color:#f0f0f0;margin-top:0;padding-left:10px}.dropdownContainingSubmenu .dropdown-menu .divider{margin:0}.navbar .dropdown-menu:after,.navbar .dropdown-menu:before{content:normal}#globalNav{margin-left:20px;background-color:transparent}#globalNav .dropdown-toggle{border-radius:3px;padding-top:3px;padding-bottom:3px;margin-top:7.5px;margin-bottom:7.5px}#globalNav .dropdown-toggle :hover{background-color:transparent}#globalNav.active .caret{opacity:.7}#globalNav.active :
hover .caret{opacity:1}#globalNav ul ul a{border-left:1px solid #bb2d16}#globalNav ul ul li{position:relative}#globalNav ul ul li:first-child{border-bottom:1px solid #bb2d16}#globalNav ul ul a:before{content:"";width:6px;height:32px;position:absolute;left:-6px;top:0}#globalNav ul ul .active a:before,#globalNav ul ul .active a:hover:before{background-image:url(images/triangleMenuItem_right.png)}#globalNav ul ul:hover a:before{background-image:none}#globalNav ul ul a:hover:before{background-image:url(images/triangleMenuItem_right_hover.png)}#globalNav ul ul li a:hover{border-color:transparent}#globalNav .dropdown-menu{width:400px}#globalNavDetail{padding:20px 10px 0;width:250px;height:100%;position:relative;top:0}#globalNavDetail>div{display:none;color:graytext;background-image:none;background-repeat:no-repeat;background-position:0 0;min-height:64px}#globalNavDetail>div.open{display:inline-block}#globalNavDetail>div .globalNavDetailApigeeLogo,#globalNavDetail>div .globalNavDetailDescr
iption,#globalNavDetail>div .globalNavDetailSubtitle,#globalNavDetail>div .globalNavDetailTitle{margin-left:80px}#globalNavDetail>div .globalNavDetailSubtitle{font-size:10px;text-transform:uppercase}#globalNavDetail>div .globalNavDetailTitle{margin-top:5px;font-size:20px}#globalNavDetail>div .globalNavDetailDescription{margin-top:10px;line-height:17px;font-style:oblique}#globalNavDetail #globalNavDetailApigeeHome{margin-top:-10px;background-image:url(img/appswitcher/home_lg.png)}#globalNavDetail #globalNavDetailApigeeHome .globalNavDetailApigeeLogo{margin-top:10px;background-image:url(img/appswitcher/logo_color.png);width:116px;height:40px}#globalNavDetail #globalNavDetailAppServices{background-image:url(img/appswitcher/appServices_lg.png)}#globalNavDetail #globalNavDetailApiPlatform{background-image:url(img/appswitcher/apiPlatform_lg.png)}#globalNavDetail #globalNavDetailMobileAnalytics{background-image:url(img/appswitcher/max_lg.png)}#globalNavDetail #globalNavDetailApiConsoles{ba
ckground-image:url(img/appswitcher/console_lg.png)}#globalNavSubmenuContainer{float:right}#globalNavSubmenuContainer ul{margin-left:0}.ng-cloak,.x-ng-cloak,[data-ng-cloak],[ng-cloak],[ng\:cloak],[x-ng-cloak]{display:none}html{min-height:100%;position:relative;margin:0 auto;background:#fff;min-width:1100px}body{padding:0;background-color:#fff;font-family:marquette-light,'Helvetica Neue',Helvetica,Arial,sans-serif;height:100%;max-height:100%;overflow-x:hidden}a{cursor:pointer}@font-face{font-family:entypo;src:url(entypo/entypo.eot);src:url(entypo/entypo.eot?#iefix) format('embedded-opentype'),url(entypo/entypo.woff) format('woff'),url(entypo/entypo.ttf) format('truetype'),url(entypo/entypo.svg#entypo) format('svg');font-weight:400;font-style:normal}@font-face{font-family:marquette-medium;src:url(arsmarquette/ARSMaquettePro-Medium.otf),url(arsmarquette/ARSMaquettePro-Medium.otf) format('opentype')}@font-face{font-family:marquette-regular;src:url(arsmarquette/ARSMaquettePro-Regular.otf)
,url(arsmarquette/ARSMaquettePro-Regular.otf) format('opentype')}@font-face{font-family:marquette-light;src:url(arsmarquette/ARSMaquettePro-Light.otf),url(arsmarquette/ARSMaquettePro-Light.otf) format('opentype')}.bold{font-family:marquette-medium}.main-content{background-color:#fff;margin:0 0 0 200px}.side-menu{position:absolute;top:51px;left:0;bottom:0;width:200px;float:left;background-color:#eee}footer{padding-top:20px;clear:both}.zero-out{padding:0;text-shadow:none;background-color:transparent;background-image:none;border:0;box-shadow:none;outline:0}.modal-body{overflow-y:visible}.demo-holder{margin:0 -20px 0 -20px;position:relative}.alert-holder{position:fixed;right:0;margin:20px 20px 0 0;z-index:10500;width:302px}.alert,.alert.alert-demo{padding:9px 35px 5px 14px;margin-bottom:3px;text-shadow:0 1px 0 rgba(255,255,255,.5);background-color:#eee;border:1px solid #eee;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-transition:all 1s ease;-moz-transition:all 1s
ease;transition:all 1s ease;height:0;overflow:hidden;line-height:0;float:right}.alert.alert-demo{float:none}.alert{width:0}.alert.alert-success{background-color:rgba(155,198,144,.31);color:#1f6719;border-left:2px solid #1f6719}.alert.alert-warning{background-color:rgba(239,172,37,.2);color:#efac25;border-left:2px solid #efac25}.alert.alert-info{background-color:rgba(27,151,209,.2);color:#1b97d1;border-left:2px solid #1b97d1}.alert.alert-error{background-color:rgba(255,3,3,.2);color:#ff0303;border-left:2px solid #ff0303}.alert.alert-animate.alert-demo{height:20px;line-height:normal;opacity:1;width:100%;-moz-box-shadow:inset 0 2px 13px #b8b8b8;-webkit-box-shadow:inset 0 2px 13px #b8b8b8;box-shadow:inset 0 2px 13px #b8b8b8}.alert.alert-animate{height:auto;line-height:normal;opacity:.9;width:300px}@-webkit-keyframes alert-out{from{opacity:1}to{-webkit-transform:translateY(500px);opacity:0}}@keyframes alert-out{from{opacity:1}to{transform:translateY(500px);opacity:0}}.fade-out{-webkit-a
nimation-name:alert-out;-webkit-animation-duration:1s;-webkit-animation-timing-function:step-stop;-webkit-animation-direction:normal;-webkit-animation-iteration-count:1;animation-name:alert-out;animation-duration:1s;animation-timing-function:step-stop;animation-direction:normal;animation-iteration-count:1;opacity:.9}.margin-35{margin-top:35px}.modal-footer{background-color:transparent}.baloon{margin:20px;padding:20px 30px;position:fixed;bottom:0;top:auto;border-style:solid;border-radius:2px;box-shadow:0 0 4px rgba(0,0,0,.8)}.baloon:after{content:"";position:absolute;width:10px;height:10px;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-o-transform:rotate(45deg);-ms-filter:"progid:DXImageTransform.Microsoft.Matrix(M11=0.7071067811865473, M12=-0.7071067811865477, M21=0.7071067811865477, M22=0.7071067811865473, SizingMethod='auto expand')"}.north.baloon:after{top:-6px;left:30px;border-top-style:solid;border-left-style:solid;box-shadow:-2px -2px 3px -1px rgba(0,0,0,.5)}.so
uth.baloon:after{bottom:-6px;left:30px;border-bottom-style:solid;border-right-style:solid;box-shadow:2px 2px 3px -1px rgba(0,0,0,.5)}.left.baloon:after{top:10px;left:-6px;border-bottom-style:solid;border-left-style:solid;box-shadow:-2px 2px 3px -1px rgba(0,0,0,.5)}.right.baloon:after{bottom:10px;right:-6px;border-top-style:solid;border-right-style:solid;box-shadow:2px -2px 3px -1px rgba(0,0,0,.5)}.baloon,.baloon:after{font-family:sans-serif;font-weight:700;border-color:#f7f7f7;border-width:1px;background-color:#3ac62f;color:#fff}#globalNav{float:right;margin:15px 8px 0 9px;list-style:none;width:114px}#globalNav ul{list-style:none}#globalNavDetail>div{display:none;color:graytext;background-image:none;background-repeat:no-repeat;background-position:0 0;min-height:64px}#globalNavDetail #globalNavDetailApiPlatform{background-image:url(../img/appswitcher/apiPlatform_lg.png)}#globalNavDetail #globalNavDetailAppServices{background-image:url(../img/appswitcher/appServices_lg.png)}#globalNav
Detail #globalNavDetailApigeeHome{margin-top:-10px;background-image:url(../img/appswitcher/home_lg.png)}#globalNavDetail #globalNavDetailApiConsoles{background-image:url(../img/appswitcher/console_lg.png)}#globalNavDetail #globalNavDetailApigeeHome .globalNavDetailApigeeLogo{margin-top:10px;background-image:url(../img/appswitcher/logo_color.png);width:116px;height:40px}#globalNavDetail>div .globalNavDetailSubtitle{font-size:10px;text-transform:uppercase}#globalNavDetail>div .globalNavDetailTitle{margin-top:5px;font-size:20px}#globalNavDetail>div .globalNavDetailDescription{margin-top:10px;line-height:17px;font-style:oblique}.navbar.navbar-static-top .dropdownContainingSubmenu .dropdown-menu a{color:#494949;padding:13px 10px}.navbar.navbar-static-top .dropdownContainingSubmenu .dropdown-menu .active a{color:#fff;background-color:#bb2d16}.navbar.navbar-static-top .dropdown-menu a{display:block;padding:3px 15px;clear:both;font-weight:400;line-height:18px;color:#333;white-space:nowrap}#
globalNav .dropdown-toggle{border-radius:3px;padding:3px 6px;margin:0}.dropdown-toggle{background-color:#bb2d16;padding:3px}.demo-holder .alert.alert-demo{background-color:rgba(196,196,196,.1);color:#777;padding:12px 35px 7px 14px}.demo-holder-content{position:absolute;right:50px}.demo-text{position:absolute;right:223px;left:0;padding:0 0 0 10px}.b{display:block}.toggle,.toggle-form{position:absolute;top:10px;right:173px;width:50px;height:23px;border-radius:100px;background-color:#ddd;overflow:hidden;box-shadow:inset 0 0 2px 1px rgba(0,0,0,.05)}.form-horizontal.configs .control-label{width:250px;padding:0 10px 0 0}.toggle-form{position:relative;right:auto;top:auto;display:inline-block}.toggle-form-label{display:inline-block}input[type=checkbox].check{position:absolute;display:block;cursor:pointer;top:0;left:0;width:100%;height:100%;opacity:0;z-index:6}.check:checked~.track{box-shadow:inset 0 0 0 20px #ff3b00}.toggle-form .check:checked~.track{box-shadow:inset 0 0 0 20px #82ce85}.che
ck:checked~.switch{right:2px;left:27px;transition:.4s ease;transition-property:left,right;transition-delay:.05s,0s}.switch{position:absolute;left:2px;top:2px;bottom:2px;right:27px;background-color:#fff;border-radius:36px;z-index:1;transition:.4s ease;transition-property:left,right;transition-delay:0s,.05s;box-shadow:0 1px 2px rgba(0,0,0,.2)}.track{position:absolute;left:0;top:0;right:0;bottom:0;transition:.4s ease;box-shadow:inset 0 0 0 2px rgba(0,0,0,.05);border-radius:40px}.add-app .pictogram,top-selector .pictogram{margin:0 3px 0 0}i.pictogram{font-family:entypo;display:inline-block;width:23px;margin:0 5px 0 0;font-size:2.5em;height:17px;line-height:.35;overflow:hidden;vertical-align:middle;padding:5px 0 0;font-style:normal;font-weight:100;-webkit-font-smoothing:antialiased}i.pictogram.sub{margin:0 0 0 10px;font-size:2.1em}i.pictogram.title{margin:0;font-size:2.1em}i.pictogram.chart{margin:0 0 0 3px;font-size:2.1em;line-height:.4em;height:.5em;width:100%}i.pictogram.apichart{marg
in:0 0 0 11px;font-size:2.1em;line-height:.4em;height:.5em;width:100%}[class*=" ma-icon-"],[class^=ma-icon-]{display:inline-block;width:23px;height:20px;margin:1px 3px 0 0;line-height:20px;vertical-align:text-top;background-image:url(../img/nav-sprites.png);background-position:14px 14px;background-repeat:no-repeat}[class*=" sdk-icon-"],[class^=sdk-icon-]{display:inline-block;width:32px;height:29px;margin:-3px 3px 0 0;line-height:32px;vertical-align:text-top;background-image:url(../img/sdk-sprites.png);background-position:14px 14px;background-repeat:no-repeat;cursor:pointer;overflow:hidden}[class*=" sdk-icon-large-"],[class^=sdk-icon-large-]{display:inline-block;width:86px;height:86px;margin:-3px 3px 0 0;line-height:32px;vertical-align:text-top;background-image:url(../img/sdk-sprites-large.png);background-position:14px 14px;background-repeat:no-repeat;border:1px solid #aaa;-moz-box-shadow:3px 3px 0 -1px #ccc;-webkit-box-shadow:3px 3px 0 -1px #ccc;box-shadow:3px 3px 0 -1px #ccc}.sdk-i
con-ios{background-position:-6px -4px}.sdk-icon-android{background-position:-59px -3px}.sdk-icon-js{background-position:-109px -4px}.sdk-icon-node{background-position:-154px -3px}.sdk-icon-ruby{background-position:-204px -3px}.sdk-icon-net{background-position:-256px -4px}.sdk-icon-large-ios{background-position:-6px -3px}.sdk-icon-large-android{background-position:-113px 0}.sdk-icon-large-js{background-position:-219px 0}.sdk-icon-large-node{background-position:-323px -3px}.sdk-icon-large-ruby{background-position:-431px 0}.sdk-icon-large-net{background-position:-537px -3px}body>header>.navbar{background-color:#ff3b00}body>header .navbar:first-child>a{height:22px;line-height:22px;padding:10px 20px 20px 13px}.navbar.navbar-static-top a{text-shadow:none;color:#fff}.navbar-text{color:#fff;margin:4px}.navbar-text .dropdown-menu a{color:#343434}.navbar-text.pull-left{margin-left:90px}.top-nav,ul.app-nav li,ul.org-nav li{background-color:#fff}.top-nav .btn-group{margin:9px 0 5px 5px}.nav .ap
p-selector .caret,.nav .app-selector:active .caret,.nav .app-selector:focus .caret,.nav .app-selector:hover .caret,.nav .org-selector .caret,.nav .org-selector:active .caret,.nav .org-selector:focus .caret,.nav .org-selector:hover .caret{border-top-color:#5f5f5f;border-bottom-color:transparent;margin-top:8px;position:absolute;right:10px}.org-options{margin:5px 2px -8px -5px;border-top:3px solid #e6e6e6;overflow:hidden}.navbar.secondary{margin:0 -20px 0 -21px;border-bottom:3px solid #e6e6e6}.navbar.secondary>.container-fluid{margin:0 -20px 0 -18px}.navbar.secondary .nav,.navbar.secondary>.container-fluid .nav-collapse.collapse.span9,.top-nav{margin:0}.top-nav>li,.top-nav>li>div{width:100%}.span9.button-area{margin-left:0}.navbar .nav a.btn-create i{margin:1px 0 0}.navbar .nav a.btn-create,.navbar .nav a.btn-create:hover{text-align:left;font-weight:400;color:#1b70a0;padding:0 0 0 10px;margin:4px 0 0 3px;display:block;width:140px;height:30px;line-height:30px;background-color:#f3f3f3}.n
avbar .nav a.btn-create:hover{color:#1b70a0}.navbar .nav a.btn-create:active{box-shadow:none}.sdks>ul>li.title label{color:#5f5f5f;font-size:15px;display:inline-block;padding:16px 0 0;line-height:6px;cursor:default}.sdks>ul>li.title a{color:#5f5f5f;font-size:15px;display:inline-block;padding:16px 0 0;line-height:6px}.sdks>ul{list-style:none;margin:0;height:32px;overflow:hidden}.sdks>ul>li{display:inline;margin:0 10px 0 0;line-height:11px}.navbar.secondary,.navbar.secondary .btn-group>.btn,.navbar.secondary .btn-group>.dropdown-menu,.side-menu .btn-group>.btn,.side-menu .dropdown-menu{text-transform:uppercase;font-family:marquette-regular,'Helvetica Neue',Helvetica,Arial,sans-serif;color:#5f5f5f;font-size:14px;-webkit-font-smoothing:antialiased}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover,.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover,.dropdown-submenu:focus>a,.dropdown-submenu:hover>a{text-decoration:none;color:#fff;background-color:#5f
5f5f;background-image:-moz-linear-gradient(top,#5f5f5f,#787878);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5f5f5f),to(#787878));background-image:-webkit-linear-gradient(top,#5f5f5f,#787878);background-image:-o-linear-gradient(top,#5f5f5f,#787878);background-image:linear-gradient(to bottom,#5f5f5f,#787878);background-repeat:repeat-x}.btn-group.open .btn.dropdown-toggle.top-selector,.top-selector,.top-selector:active,.top-selector:focus,.top-selector:hover{color:#5f5f5f;padding:0;text-shadow:none;background-color:transparent;background-image:none;border:0;box-shadow:none;outline:0;width:100%;text-align:left}.dialog-body{padding:20px}h1.title{font-size:1.3em;font-family:marquette-medium,"Helvetica Neue",sans-serif;color:#686868;line-height:17px;display:inline-block;padding:0 10px 0 0}h2.title{text-transform:uppercase;font-size:1.2em;border-top:2px solid #eee;color:#828282}h2.title.chart{margin:10px 0 20px 10px;z-index:101;position:absolute;top:0;left:0;right:0}h3.title{t
ext-transform:uppercase;font-size:1.1em}.sidebar-nav .nav-list{padding:0}.nav-list .nav-header,.sidebar-nav .nav-list>li>a{margin-right:0}.sidebar-nav .nav-list.trans{max-height:100000px;-webkit-transition:all .5s ease;-moz-transition:all .5s ease;transition:all .5s ease;display:block;opacity:0}.sidebar-nav .nav-list li a{padding:10px 0 10px 25px;color:#5f5f5f;text-shadow:none;background-color:#eee;font-size:14px;text-transform:uppercase;position:relative}.sidebar-nav .nav-list li a.org-overview{background-color:#fff;font-family:marquette-light,'Helvetica Neue',Helvetica,Arial,sans-serif}.sidebar-nav .nav-list li a.org-overview:hover{color:#5f5f5f}.sidebar-nav .nav-list:first-child>li{margin:0;height:39px;overflow:hidden}.sidebar-nav .nav-list:first-child>li.active{height:auto;overflow:visible}.sidebar-nav .nav-list:first-child>li>ul>li>a{color:#5f5f5f}.sidebar-nav .nav-list:first-child>li.active>a,.sidebar-nav .nav-list:first-child>li>a:focus,.sidebar-nav .nav-list:first-child>li>a
:hover{color:#fff;text-shadow:none;background-color:#1b70a0;margin:0 0 0 -15px}.sidebar-nav .nav-list:first-child li.active>ul>li>a{background-color:#fff}.sidebar-nav .nav-list li.option>ul{overflow:hidden;opacity:0;height:auto;display:block;-webkit-transition:all .5s ease;-moz-transition:all .5s ease;transition:all .5s ease;max-height:100000px}.sidebar-nav .nav-list li.option.active>ul{opacity:1}.sidebar-nav .nav-list li.active>ul>li a{border-bottom:1px solid #eee;color:#747474;text-transform:none;font-weight:300;padding:10px 0 10px 22px}.sidebar-nav .nav-list li.active>ul>li.active>a,.sidebar-nav .nav-list li.active>ul>li>a:focus,.sidebar-nav .nav-list li.active>ul>li>a:hover{color:#1b70a0;background:#fff url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAKCAYAAAB4zEQNAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIH
g6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYxIDY0LjE0MDk0OSwgMjAxMC8xMi8wNy0xMDo1NzowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNS4xIE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo1NkEzQ0Y1MUI0MjIxMUUyODZGN0I5RUE1NjAwQ0I0MCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo1NkEzQ0Y1MkI0MjIxMUUyODZGN0I5RUE1NjAwQ0I0MCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjU2QTNDRjRGQjQyMjExRTI4NkY3QjlFQTU2MDBDQjQwIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjU2QTNDRjUwQjQyMjExRTI4NkY3QjlFQTU2MDBDQjQwIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+poqUzgAAAG1JREFUeNpilC5YwIADqLNgEWQG4kYg9mNCk1AE4sNAXA3iIEuGAPF5ILaECYAkeYB
4DhCvBmJ+ZGNAkt+B+CkQ/0W3nAkqWA/EblBFKJIwsA+IDYF4BzZJEHgNxJ5AXAbEv1hwBEA3EK8BCDAAwgoRW2zTv6EAAAAASUVORK5CYII=) no-repeat;background-position:206px 16px;font-family:marquette-medium,'Helvetica Neue',Helvetica,Arial,sans-serif;border-bottom:1px solid #eee;text-shadow:none;-webkit-font-smoothing:antialiased}.sidebar-nav .nav-list li.option ul{list-style:none}.new-tag{border-radius:3px;display:inline-block;font-family:marquette-medium;font-size:.6em;background-color:rgba(26,26,26,.5);color:#fff;padding:3px;height:8px;line-height:8px;position:absolute;right:5px;top:13px}.sidebar-nav .nav-list li:active a{background-color:rgba(255,255,255,.5)}.app-creds dt{font-family:marquette-medium}.intro-container{position:relative;height:auto;-webkit-transition:all .5s ease-out;-moz-transition:all .5s ease-out;transition:all .5s ease-out;overflow:hidden}.sdk-intro{position:absolute;border:1px solid #aaa;background-color:#f4f4f4;-moz-box-shadow:inset 0 0 10px #ccc;-webkit-box-shadow:inset 0 0 10px #cc
c;box-shadow:inset 0 4px 10px #ccc;opacity:.4;top:0;left:6px;right:1px;bottom:0;height:auto;overflow:hidden}.sdk-intro-content{position:absolute;padding:10px 40px 10px 10px;top:0;left:6px;right:-20px;bottom:0;height:auto;overflow:auto}.sdk-intro-content .btn.normal{margin:19px 10px 0 0}.keys-creds h2{margin-bottom:-2px}.user-list{padding:0;margin:0;list-style:none;min-height:450px;float:left;width:100%}.user-list li{padding:10px;border-bottom:1px solid #c5c5c5;cursor:pointer}.user-list li .label{margin:0 0 0 22px}.user-list li input{margin:0 10px 0 0}.user-list li.selected{background-color:#eee}#user-panel{margin-top:20px}.user-col{border-right:1px solid #c5c5c5;-moz-box-shadow:inset -27px 1px 6px -27px #b8b8b8;-webkit-box-shadow:inset -27px 1px 6px -27px #b8b8b8;box-shadow:inset -27px 1px 6px -27px #b8b8b8}.user-profile-picture{width:40px;height:40px}.content-page>.well{padding:10px;height:40px}.table-header td{font-weight:800;color:#000}.user-header-title{font-size:13px;font-famil
y:marquette-regular,'Helvetica Neue',Helvetica,Arial,sans-serif}.tabbable>.tab-content{overflow:visible}.button-strip{float:right;margin-bottom:10px}a.notifications-links{color:#1b97d1}.notifications-header{height:50px;background-color:#eee;padding:10px;border-bottom:1px solid #aaa;position:relative;overflow:hidden}.groups-row td.details,.notifications-row td.details,.roles-row td.details,.users-row td.details{line-height:25px!important;border-right:1px solid #e5e5e5}.nav-tabs>li{cursor:pointer}.login-content{position:absolute;top:91px;bottom:0;left:0;right:0;background-color:#fff;padding:9% 0 0 32%}.login-content form{margin:0}.login-content form h1{padding:10px 0 5px 20px}.login-holder{width:450px;border:1px solid #e5e5e5}.login-holder .form-actions{padding-left:30px;margin-bottom:0}.login-holder .form-actions .submit{padding:0 30px 0 0}.login-content .extra-actions{margin-top:10px;padding-left:30px;margin-bottom:0}.login-content .extra-actions .submit{padding:0 30px 0 0}.login-co
ntent .extra-actions .submit a{margin-left:3px;margin-right:3px}.signUp-content{position:absolute;top:91px;bottom:0;left:0;right:0;background-color:#fff;padding:9% 0 0 32%}.signUp-content form{margin:0}.signUp-content form h1{padding:10px 0 5px 20px}.signUp-holder{width:450px;border:1px solid #e5e5e5}.signUp-holder .form-actions{margin-bottom:0}.signUp-holder .form-actions .submit{padding:0 30px 0 0}.table.collection-list{border:1px solid #eee}.formatted-json,.formatted-json ul{list-style:none}.formatted-json .key{font-family:marquette-medium}.formatted-json li{border-bottom:1px solid #eee;margin:3px 0}iframe[seamless]{background-color:transparent;border:0 none transparent;padding:0;overflow:visible;overflow-x:hidden;width:100%}.gravatar20{padding:7px 0 0 10px!important;margin:0;width:30px}#shell-panel *{font-family:monospace}#shell-panel .boxContent{font-family:monospace;font-size:14px;min-height:400px}#shell-panel input{font-family:monospace;overflow:auto;width:90%;margin-top:10px
}#shell-panel hr{margin:2px;border-color:#e1e1e1}form input.has-error{-webkit-animation:pulse-red 1s alternate infinite;-moz-animation:pulse-red 1s alternate infinite;border:1px solid rgba(255,3,3,.6)}.validator-error-message{color:#ff0303}@-webkit-keyframes pulse-red{0%{box-shadow:inset 0 0 5px 2px rgba(255,3,3,.1),0 0 5px 2px rgba(255,3,3,.3)}100%{box-shadow:inset 0 0 5px 2px rgba(255,3,3,.3),0 0 5px 2px rgba(255,3,3,.1)}}@-moz-keyframes pulse-red{0%{box-shadow:inset 0 0 5px 2px rgba(255,3,3,.1),0 0 5px 2px rgba(255,3,3,.3)}100%{box-shadow:inset 0 0 5px 2px rgba(255,3,3,.3),0 0 5px 2px rgba(255,3,3,.1)}}.modal-instructions{padding-top:5px;padding-bottom:5px}.dropdown-menu{width:100%}.modal{width:560px!important}.dropdown-backdrop{position:static}.title.with-icons a{display:inline-block;text-transform:lowercase;font-size:.8em;margin:0 5px 0 0}.span9.tab-content{margin:0}.span9.tab-content .content-page{padding:0 0 0 30px}.button-toolbar,.menu-toolbar{padding:10px 0;margin:0;width:1
00%}.menu-toolbar{padding:0 0 20px}.menu-toolbar>ul.inline{border-bottom:1px solid #c5c5c5;margin:0}.btn-group .filter-selector,.btn-group .filter-selector:active,.btn-group .filter-selector:focus,.btn-group .filter-selector:hover,.btn-group .filter-title,.btn-group .filter-title:active,.btn-group .filter-title:focus,.btn-group.open .btn.dropdown-toggle.filter-selector,.btn-group.open .btn.dropdown-toggle.filter-title,.btn-group>.filter-selector.btn:first-child,.btn-group>.filter-title.btn:first-child,.btn.btn-primary,.btn.normal,.modal-footer .btn{color:#fff;padding:3px 9px;text-shadow:none;background-color:#494949;background-image:none;border:1px solid #c5c5c5;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;border-bottom-left-radius:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;box-shadow:none}ul.inline>li.tab{margin:0;padding:0}li.tab .btn.btn-primary{background-color:#eee;border:0;color:#494949;box-shadow:none;margin:0 -1px -1px -1px;padding:3px 19px 3
px 16px;border-bottom:1px solid #c5c5c5}ul.inline>li.tab.selected{margin:0 0 -1px 0;border-bottom:1px solid #fff}li.tab.selected .btn.btn-primary.toolbar{color:#494949;border-left:1px solid #c5c5c5;border-right:1px solid #c5c5c5;border-top:1px solid #c5c5c5;border-bottom:0;background-color:#fff}.btn-group.compare .filter-selector.btn:first-child,.btn.btn-primary.toolbar{color:#494949;background-color:#f1f1f1}li.selected .btn.btn-primary.toolbar{color:#fff;border:1px solid #1b70a0;background-color:#1b70a0}.btn.cancel,.btn.cancel:hover,.btn.normal.white,.btn.normal.white:hover{background-color:#fff;color:#5f5f5f}.btn-group .filter-selector:active,.btn-group .filter-title:hover,.btn-group.selected .filter-selector,.btn-group.selected>.filter-selector.btn:first-child,.btn.btn-primary:active,.btn.btn-primary:hover,.btn.normal:hover,.modal-footer .btn:active,.modal-footer .btn:hover{color:#fff;border:1px solid #1b70a0;background-color:#1b70a0}.btn-group .filter-selector .caret{margin:8px
0 0 10px;border-top:4px solid #fff;border-right:4px solid transparent;border-left:4px solid transparent}.btn-group.header-button{margin:4px 0 0;text-transform:none}.page-filters{padding:0;margin:10px 0}.dropdown-menu{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;z-index:102}.modal{position:fixed;top:10%;left:50%;margin-left:-280px;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,.3);*border:1px solid #999;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:0 3px 7px rgba(0,0,0,.3);-moz-box-shadow:0 3px 7px rgba(0,0,0,.3);box-shadow:0 3px 7px rgba(0,0,0,.3);-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box;outline:0}.modal.fade{z-index:-200}.modal.fade.in{z-index:1050}.auto-update-container{padding:10px 0 0}.auto-updates{margin:0 10px 0 0}.super-help{font-size:9pt;vertical-align:super}.help_tooltip{font-size:9pt;text-transform:none}.helpButton{font-family:Helvetica,Arial,s
ans-serif;font-size:13px;font-weight:300;padding:5px 8px;text-align:center;vertical-align:middle;color:#ffd6ca;border:1px solid #ffbfab;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;background-color:#ff3b00;width:110px;outline:0}.helpButton:hover{cursor:pointer;background-color:#FFB7A5;color:#dc3300;-webkit-transition:background-color .1s;-moz-transition:background-color .1s;-o-transition:background-color .1s;transition:background-color .1s}.helpButtonClicked{background-color:#FFB7A5;color:#dc3300;outline:0}.introjs-overlay{background:0 0;filter:none;-ms-filter:"alpha(Opacity=20)";filter:alpha(opacity=20);background-color:#fff;opacity:.2}.introjs-helperLayer{border-radius:0;box-shadow:none;border:1px solid rgba(0,0,0,.25)}.introjs-helperNumberLayer{top:-12px;left:-12px;font-family:"Open Sans",Arial,sans-serif;font-weight:400;border:0;filter:none;filter:none;box-shadow:none}.introjs-arrow{border:10px solid #fff}.introjs-arrow.top{top:-20px;border-bottom-color:#6d
bce3}.introjs-arrow.right{right:-20px;top:20px;border-left-color:#6dbce3}.introjs-arrow.bottom{bottom:-20px;border-top-color:#6dbce3}.introjs-arrow.left{left:-20px;top:20px;border-right-color:#6dbce3}.introjs-arrow:before{border:10px solid #fff;content:'';position:absolute}.introjs-arrow.top:before{top:-8px;left:-10px;border-top-color:transparent;border-right-color:transparent;border-bottom-color:#F0F8FC;border-left-color:transparent}.introjs-arrow.right:before{right:-7px;top:-10px;border-top-color:transparent;border-right-color:transparent;border-bottom-color:transparent;border-left-color:#F0F8FC}.introjs-arrow.bottom:before{bottom:-9px;left:-10px;border-top-color:#F0F8FC;border-right-color:transparent;border-bottom-color:transparent;border-left-color:transparent}.introjs-arrow.left:before{left:-7px;top:-10px;border-top-color:transparent;border-right-color:#F0F8FC;border-bottom-color:transparent;border-left-color:transparent}.introjs-tooltip{background-color:#F0F8FC;border-radius:0
;border:1px solid #6dbce3;box-shadow:0 1px 7px rgba(0,0,0,.3)}.introjs-button{text-shadow:none;font:12px/normal sans-serif;color:#1f77a3;background-color:#F0F8FC;background-image:none;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px;border:1px solid #d4d4d4}.introjs-button:hover{font-family:"Open Sans",Arial,sans-serif}.introjs-button:active,.introjs-button:focus{text-decoration:none;outline:0}.introjs-skipbutton{color:#1f77a3;text-decoration:none;font-family:"Open Sans",Arial,sans-serif;margin-right:32px;border:1px solid #6dbce3}.introjs-nextbutton{text-decoration:none;font-family:"Open Sans",Arial,sans-serif;width:40px;margin-left:3px}.introjs-prevbutton{text-decoration:none;font-family:"Open Sans",Arial,sans-serif;width:40px}.introjs-nextbutton,.introjs-nextbutton:active,.introjs-nextbutton:focus,.introjs-nextbutton:hover{background-image:url(img/introjs_arrow_step_next.png);background-position:48px 5px;background-repeat:no-repeat;text-align:left;border:1px soli
d #6dbce3}.introjs-prevbutton,.introjs-prevbutton:active,.introjs-prevbutton:focus,.introjs-prevbutton:hover{background-image:url(img/introjs_arrow_step_prev.png);background-position:2px 5px;background-repeat:no-repeat;text-align:right;border:1px solid #6dbce3}.introjs-nextbutton.introjs-disabled,.introjs-nextbutton.introjs-disabled:active,.introjs-nextbutton.introjs-disabled:focus,.introjs-nextbutton.introjs-disabled:hover{background-image:url(img/introjs_arrow_step_next_disabled.png);background-position:48px 5px;background-repeat:no-repeat;text-align:left;border:1px solid #d4d4d4}.introjs-prevbutton.introjs-disabled,.introjs-prevbutton.introjs-disabled:active,.introjs-prevbutton.introjs-disabled:focus,.introjs-prevbutton.introjs-disabled:hover{background-image:url(img/introjs_arrow_step_prev_disabled.png);background-position:2px 5px;background-repeat:no-repeat;text-align:right;border:1px solid #d4d4d4}.introjs-disabled,.introjs-disabled:focus,.introjs-disabled:hover{color:gray;bac
kground-color:#F0F8FC}.introjs-tooltiptext{font-size:13px;line-height:19px}.introjstooltipheader{font-size:13px;line-height:19px;font-family:marquette-medium,'Helvetica Neue',Helvetica,Arial,sans-serif}
\ No newline at end of file
+.dropdown{position:relative}.dropdown-toggle{*margin-bottom:-3px}.dropdown-toggle:active,.open .dropdown-toggle{outline:0}.caret{display:inline-block;width:0;height:0;vertical-align:top;border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid #000;opacity:.3;filter:alpha(opacity=30);content:""}.dropdown .caret{margin-top:8px;margin-left:2px}.dropdown:hover .caret,.open.dropdown .caret{opacity:1;filter:alpha(opacity=100)}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;float:left;display:none;min-width:160px;padding:4px 0;margin:0;list-style:none;background-color:#fff;border-color:#ccc;border-color:rgba(0,0,0,.2);border-style:solid;border-width:1px;-webkit-border-radius:0 0 5px 5px;-moz-border-radius:0 0 5px 5px;border-radius:0 0 5px 5px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip
:padding-box;*border-right-width:2px;*border-bottom-width:2px}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:8px 1px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #fff;*width:100%;*margin:-5px 0 5px}.dropdown-menu a{display:block;padding:3px 15px;clear:both;font-weight:400;line-height:18px;color:#333;white-space:nowrap}.dropdown-menu .active>a,.dropdown-menu .active>a:hover,.dropdown-menu li>a:hover{color:#fff;text-decoration:none;background-color:#08c}.dropdown.open{*z-index:1000}.dropdown.open .dropdown-toggle{color:#fff;background:#ccc;background:rgba(0,0,0,.3)}.dropdown.open .dropdown-menu{display:block}.pull-right .dropdown-menu{left:auto;right:0}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid #000;content:"\2191"}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}.dropdownContainingSubmenu .dropdown-menu{padding:0;margin-t
op:-4px;min-width:auto;background-color:#fff;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:4px 4px 16px rgba(0,0,0,.25);-moz-box-shadow:4px 4px 16px rgba(0,0,0,.25);box-shadow:4px 4px 16px rgba(0,0,0,.25);border-width:1px;border-top-width:4px;border-color:#bb2d16}.dropdownContainingSubmenu .dropdown-menu a{color:#494949;padding:7px 10px}.dropdownContainingSubmenu .dropdown-menu a:hover{color:#fff;background-color:#f03800}.dropdownContainingSubmenu .dropdown-menu .nav-header{background-color:#f0f0f0;margin-top:0;padding-left:10px}.dropdownContainingSubmenu .dropdown-menu .divider{margin:0}.navbar .dropdown-menu:after,.navbar .dropdown-menu:before{content:normal}#globalNav{margin-left:20px;background-color:transparent}#globalNav .dropdown-toggle{border-radius:3px;padding-top:3px;padding-bottom:3px;margin-top:7.5px;margin-bottom:7.5px}#globalNav .dropdown-toggle :hover{background-color:transparent}#globalNav.active .caret{opacity:.7}#globalNav.active :
hover .caret{opacity:1}#globalNav ul ul a{border-left:1px solid #bb2d16}#globalNav ul ul li{position:relative}#globalNav ul ul li:first-child{border-bottom:1px solid #bb2d16}#globalNav ul ul a:before{content:"";width:6px;height:32px;position:absolute;left:-6px;top:0}#globalNav ul ul .active a:before,#globalNav ul ul .active a:hover:before{background-image:url(images/triangleMenuItem_right.png)}#globalNav ul ul:hover a:before{background-image:none}#globalNav ul ul a:hover:before{background-image:url(images/triangleMenuItem_right_hover.png)}#globalNav ul ul li a:hover{border-color:transparent}#globalNav .dropdown-menu{width:400px}#globalNavDetail{padding:20px 10px 0;width:250px;height:100%;position:relative;top:0}#globalNavDetail>div{display:none;color:graytext;background-image:none;background-repeat:no-repeat;background-position:0 0;min-height:64px}#globalNavDetail>div.open{display:inline-block}#globalNavDetail>div .globalNavDetailApigeeLogo,#globalNavDetail>div .globalNavDetailDescr
iption,#globalNavDetail>div .globalNavDetailSubtitle,#globalNavDetail>div .globalNavDetailTitle{margin-left:80px}#globalNavDetail>div .globalNavDetailSubtitle{font-size:10px;text-transform:uppercase}#globalNavDetail>div .globalNavDetailTitle{margin-top:5px;font-size:20px}#globalNavDetail>div .globalNavDetailDescription{margin-top:10px;line-height:17px;font-style:oblique}#globalNavDetail #globalNavDetailApigeeHome{margin-top:-10px;background-image:url(img/appswitcher/home_lg.png)}#globalNavDetail #globalNavDetailApigeeHome .globalNavDetailApigeeLogo{margin-top:10px;background-image:url(img/appswitcher/logo_color.png);width:116px;height:40px}#globalNavDetail #globalNavDetailAppServices{background-image:url(img/appswitcher/appServices_lg.png)}#globalNavDetail #globalNavDetailApiPlatform{background-image:url(img/appswitcher/apiPlatform_lg.png)}#globalNavDetail #globalNavDetailMobileAnalytics{background-image:url(img/appswitcher/max_lg.png)}#globalNavDetail #globalNavDetailApiConsoles{ba
ckground-image:url(img/appswitcher/console_lg.png)}#globalNavSubmenuContainer{float:right}#globalNavSubmenuContainer ul{margin-left:0}.ng-cloak,.x-ng-cloak,[data-ng-cloak],[ng-cloak],[ng\:cloak],[x-ng-cloak]{display:none}html{min-height:100%;position:relative;margin:0 auto;background:#fff;min-width:1100px}body{padding:0;background-color:#fff;font-family:marquette-light,'Helvetica Neue',Helvetica,Arial,sans-serif;height:100%;max-height:100%;overflow-x:hidden}a{cursor:pointer}@font-face{font-family:entypo;src:url(entypo/entypo.eot);src:url(entypo/entypo.eot?#iefix) format('embedded-opentype'),url(entypo/entypo.woff) format('woff'),url(entypo/entypo.ttf) format('truetype'),url(entypo/entypo.svg#entypo) format('svg');font-weight:400;font-style:normal}@font-face{font-family:marquette-medium;src:url(arsmarquette/ARSMaquettePro-Medium.otf),url(arsmarquette/ARSMaquettePro-Medium.otf) format('opentype')}@font-face{font-family:marquette-regular;src:url(arsmarquette/ARSMaquettePro-Regular.otf)
,url(arsmarquette/ARSMaquettePro-Regular.otf) format('opentype')}@font-face{font-family:marquette-light;src:url(arsmarquette/ARSMaquettePro-Light.otf),url(arsmarquette/ARSMaquettePro-Light.otf) format('opentype')}.bold{font-family:marquette-medium}.main-content{background-color:#fff;margin:0 0 0 200px}.side-menu{position:absolute;top:51px;left:0;bottom:0;width:200px;float:left;background-color:#eee}footer{padding-top:20px;clear:both}.zero-out{padding:0;text-shadow:none;background-color:transparent;background-image:none;border:0;box-shadow:none;outline:0}.modal-body{overflow-y:visible}.demo-holder{margin:0 -20px 0 -20px;position:relative}.alert-holder{position:fixed;right:0;margin:20px 20px 0 0;z-index:10500;width:302px}.alert,.alert.alert-demo{padding:9px 35px 5px 14px;margin-bottom:3px;text-shadow:0 1px 0 rgba(255,255,255,.5);background-color:#eee;border:1px solid #eee;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-transition:all 1s ease;-moz-transition:all 1s
ease;transition:all 1s ease;height:0;overflow:hidden;line-height:0;float:right}.alert.alert-demo{float:none}.alert{width:0}.alert.alert-success{background-color:rgba(155,198,144,.31);color:#1f6719;border-left:2px solid #1f6719}.alert.alert-warning{background-color:rgba(239,172,37,.2);color:#efac25;border-left:2px solid #efac25}.alert.alert-info{background-color:rgba(27,151,209,.2);color:#1b97d1;border-left:2px solid #1b97d1}.alert.alert-error{background-color:rgba(255,3,3,.2);color:#ff0303;border-left:2px solid #ff0303}.alert.alert-animate.alert-demo{height:20px;line-height:normal;opacity:1;width:100%;-moz-box-shadow:inset 0 2px 13px #b8b8b8;-webkit-box-shadow:inset 0 2px 13px #b8b8b8;box-shadow:inset 0 2px 13px #b8b8b8}.alert.alert-animate{height:auto;line-height:normal;opacity:.9;width:300px}@-webkit-keyframes alert-out{from{opacity:1}to{-webkit-transform:translateY(500px);opacity:0}}@keyframes alert-out{from{opacity:1}to{transform:translateY(500px);opacity:0}}.fade-out{-webkit-a
nimation-name:alert-out;-webkit-animation-duration:1s;-webkit-animation-timing-function:step-stop;-webkit-animation-direction:normal;-webkit-animation-iteration-count:1;animation-name:alert-out;animation-duration:1s;animation-timing-function:step-stop;animation-direction:normal;animation-iteration-count:1;opacity:.9}.margin-35{margin-top:35px}.modal-footer{background-color:transparent}.baloon{margin:20px;padding:20px 30px;position:fixed;bottom:0;top:auto;border-style:solid;border-radius:2px;box-shadow:0 0 4px rgba(0,0,0,.8)}.baloon:after{content:"";position:absolute;width:10px;height:10px;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-o-transform:rotate(45deg);-ms-filter:"progid:DXImageTransform.Microsoft.Matrix(M11=0.7071067811865473, M12=-0.7071067811865477, M21=0.7071067811865477, M22=0.7071067811865473, SizingMethod='auto expand')"}.north.baloon:after{top:-6px;left:30px;border-top-style:solid;border-left-style:solid;box-shadow:-2px -2px 3px -1px rgba(0,0,0,.5)}.so
uth.baloon:after{bottom:-6px;left:30px;border-bottom-style:solid;border-right-style:solid;box-shadow:2px 2px 3px -1px rgba(0,0,0,.5)}.left.baloon:after{top:10px;left:-6px;border-bottom-style:solid;border-left-style:solid;box-shadow:-2px 2px 3px -1px rgba(0,0,0,.5)}.right.baloon:after{bottom:10px;right:-6px;border-top-style:solid;border-right-style:solid;box-shadow:2px -2px 3px -1px rgba(0,0,0,.5)}.baloon,.baloon:after{font-family:sans-serif;font-weight:700;border-color:#f7f7f7;border-width:1px;background-color:#3ac62f;color:#fff}#globalNav{float:right;margin:15px 8px 0 9px;list-style:none;width:114px}#globalNav ul{list-style:none}#globalNavDetail>div{display:none;color:graytext;background-image:none;background-repeat:no-repeat;background-position:0 0;min-height:64px}#globalNavDetail #globalNavDetailApiPlatform{background-image:url(../img/appswitcher/apiPlatform_lg.png)}#globalNavDetail #globalNavDetailAppServices{background-image:url(../img/appswitcher/appServices_lg.png)}#globalNav
Detail #globalNavDetailApigeeHome{margin-top:-10px;background-image:url(../img/appswitcher/home_lg.png)}#globalNavDetail #globalNavDetailApiConsoles{background-image:url(../img/appswitcher/console_lg.png)}#globalNavDetail #globalNavDetailApigeeHome .globalNavDetailApigeeLogo{margin-top:10px;background-image:url(../img/appswitcher/logo_color.png);width:116px;height:40px}#globalNavDetail>div .globalNavDetailSubtitle{font-size:10px;text-transform:uppercase}#globalNavDetail>div .globalNavDetailTitle{margin-top:5px;font-size:20px}#globalNavDetail>div .globalNavDetailDescription{margin-top:10px;line-height:17px;font-style:oblique}.navbar.navbar-static-top .dropdownContainingSubmenu .dropdown-menu a{color:#494949;padding:13px 10px}.navbar.navbar-static-top .dropdownContainingSubmenu .dropdown-menu .active a{color:#fff;background-color:#bb2d16}.navbar.navbar-static-top .dropdown-menu a{display:block;padding:3px 15px;clear:both;font-weight:400;line-height:18px;color:#333;white-space:nowrap}#
globalNav .dropdown-toggle{border-radius:3px;padding:3px 6px;margin:0}.dropdown-toggle{background-color:#bb2d16;padding:3px}.demo-holder .alert.alert-demo{background-color:rgba(196,196,196,.1);color:#777;padding:12px 35px 7px 14px}.demo-holder-content{position:absolute;right:50px}.demo-text{position:absolute;right:223px;left:0;padding:0 0 0 10px}.b{display:block}.toggle,.toggle-form{position:absolute;top:10px;right:173px;width:50px;height:23px;border-radius:100px;background-color:#ddd;overflow:hidden;box-shadow:inset 0 0 2px 1px rgba(0,0,0,.05)}.form-horizontal.configs .control-label{width:250px;padding:0 10px 0 0}.toggle-form{position:relative;right:auto;top:auto;display:inline-block}.toggle-form-label{display:inline-block}input[type=checkbox].check{position:absolute;display:block;cursor:pointer;top:0;left:0;width:100%;height:100%;opacity:0;z-index:6}.check:checked~.track{box-shadow:inset 0 0 0 20px #ff3b00}.toggle-form .check:checked~.track{box-shadow:inset 0 0 0 20px #82ce85}.che
ck:checked~.switch{right:2px;left:27px;transition:.4s ease;transition-property:left,right;transition-delay:.05s,0s}.switch{position:absolute;left:2px;top:2px;bottom:2px;right:27px;background-color:#fff;border-radius:36px;z-index:1;transition:.4s ease;transition-property:left,right;transition-delay:0s,.05s;box-shadow:0 1px 2px rgba(0,0,0,.2)}.track{position:absolute;left:0;top:0;right:0;bottom:0;transition:.4s ease;box-shadow:inset 0 0 0 2px rgba(0,0,0,.05);border-radius:40px}.add-app .pictogram,top-selector .pictogram{margin:0 3px 0 0}i.pictogram{font-family:entypo;display:inline-block;width:23px;margin:0 5px 0 0;font-size:2.5em;height:17px;line-height:.35;overflow:hidden;vertical-align:middle;padding:5px 0 0;font-style:normal;font-weight:100;-webkit-font-smoothing:antialiased}i.pictogram.sub{margin:0 0 0 10px;font-size:2.1em}i.pictogram.title{margin:0;font-size:2.1em}i.pictogram.chart{margin:0 0 0 3px;font-size:2.1em;line-height:.4em;height:.5em;width:100%}i.pictogram.apichart{marg
in:0 0 0 11px;font-size:2.1em;line-height:.4em;height:.5em;width:100%}[class*=" ma-icon-"],[class^=ma-icon-]{display:inline-block;width:23px;height:20px;margin:1px 3px 0 0;line-height:20px;vertical-align:text-top;background-image:url(../img/nav-sprites.png);background-position:14px 14px;background-repeat:no-repeat}[class*=" sdk-icon-"],[class^=sdk-icon-]{display:inline-block;width:32px;height:29px;margin:-3px 3px 0 0;line-height:32px;vertical-align:text-top;background-image:url(../img/sdk-sprites.png);background-position:14px 14px;background-repeat:no-repeat;cursor:pointer;overflow:hidden}[class*=" sdk-icon-large-"],[class^=sdk-icon-large-]{display:inline-block;width:86px;height:86px;margin:-3px 3px 0 0;line-height:32px;vertical-align:text-top;background-image:url(../img/sdk-sprites-large.png);background-position:14px 14px;background-repeat:no-repeat;border:1px solid #aaa;-moz-box-shadow:3px 3px 0 -1px #ccc;-webkit-box-shadow:3px 3px 0 -1px #ccc;box-shadow:3px 3px 0 -1px #ccc}.sdk-i
con-ios{background-position:-6px -4px}.sdk-icon-android{background-position:-59px -3px}.sdk-icon-js{background-position:-109px -4px}.sdk-icon-node{background-position:-154px -3px}.sdk-icon-ruby{background-position:-204px -3px}.sdk-icon-net{background-position:-256px -4px}.sdk-icon-large-ios{background-position:-6px -3px}.sdk-icon-large-android{background-position:-113px 0}.sdk-icon-large-js{background-position:-219px 0}.sdk-icon-large-node{background-position:-323px -3px}.sdk-icon-large-ruby{background-position:-431px 0}.sdk-icon-large-net{background-position:-537px -3px}body>header>.navbar{background-color:#ff3b00}body>header .navbar:first-child>a{height:22px;line-height:22px;padding:10px 20px 20px 13px}.navbar.navbar-static-top a{text-shadow:none;color:#fff}.navbar-text{color:#fff;margin:4px}.navbar-text .dropdown-menu a{color:#343434}.navbar-text.pull-left{margin-left:90px}.top-nav,ul.app-nav li,ul.org-nav li{background-color:#fff}.top-nav .btn-group{margin:9px 0 5px 5px}.nav .ap
p-selector .caret,.nav .app-selector:active .caret,.nav .app-selector:focus .caret,.nav .app-selector:hover .caret,.nav .org-selector .caret,.nav .org-selector:active .caret,.nav .org-selector:focus .caret,.nav .org-selector:hover .caret{border-top-color:#5f5f5f;border-bottom-color:transparent;margin-top:8px;position:absolute;right:10px}.org-options{margin:5px 2px -8px -5px;border-top:3px solid #e6e6e6;overflow:hidden}.navbar.secondary{margin:0 -20px 0 -21px;border-bottom:3px solid #e6e6e6}.navbar.secondary>.container-fluid{margin:0 -20px 0 -18px}.navbar.secondary .nav,.navbar.secondary>.container-fluid .nav-collapse.collapse.span9,.top-nav{margin:0}.top-nav>li,.top-nav>li>div{width:100%}.span9.button-area{margin-left:0}.navbar .nav a.btn-create i{margin:1px 0 0}.navbar .nav a.btn-create,.navbar .nav a.btn-create:hover{text-align:left;font-weight:400;color:#1b70a0;padding:0 0 0 10px;margin:4px 0 0 3px;display:block;width:140px;height:30px;line-height:30px;background-color:#f3f3f3}.n
avbar .nav a.btn-create:hover{color:#1b70a0}.navbar .nav a.btn-create:active{box-shadow:none}.sdks>ul>li.title label{color:#5f5f5f;font-size:15px;display:inline-block;padding:16px 0 0;line-height:6px;cursor:default}.sdks>ul>li.title a{color:#5f5f5f;font-size:15px;display:inline-block;padding:16px 0 0;line-height:6px}.sdks>ul{list-style:none;margin:0;height:32px;overflow:hidden}.sdks>ul>li{display:inline;margin:0 10px 0 0;line-height:11px}.navbar.secondary,.navbar.secondary .btn-group>.btn,.navbar.secondary .btn-group>.dropdown-menu,.side-menu .btn-group>.btn,.side-menu .dropdown-menu{text-transform:uppercase;font-family:marquette-regular,'Helvetica Neue',Helvetica,Arial,sans-serif;color:#5f5f5f;font-size:14px;-webkit-font-smoothing:antialiased}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover,.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover,.dropdown-submenu:focus>a,.dropdown-submenu:hover>a{text-decoration:none;color:#fff;background-color:#5f
5f5f;background-image:-moz-linear-gradient(top,#5f5f5f,#787878);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5f5f5f),to(#787878));background-image:-webkit-linear-gradient(top,#5f5f5f,#787878);background-image:-o-linear-gradient(top,#5f5f5f,#787878);background-image:linear-gradient(to bottom,#5f5f5f,#787878);background-repeat:repeat-x}.btn-group.open .btn.dropdown-toggle.top-selector,.top-selector,.top-selector:active,.top-selector:focus,.top-selector:hover{color:#5f5f5f;padding:0;text-shadow:none;background-color:transparent;background-image:none;border:0;box-shadow:none;outline:0;width:100%;text-align:left}.dialog-body{padding:20px}h1.title{font-size:1.3em;font-family:marquette-medium,"Helvetica Neue",sans-serif;color:#686868;line-height:17px;display:inline-block;padding:0 10px 0 0}h2.title{text-transform:uppercase;font-size:1.2em;border-top:2px solid #eee;color:#828282}h2.title.chart{margin:10px 0 20px 10px;z-index:101;position:absolute;top:0;left:0;right:0}h3.title{t
ext-transform:uppercase;font-size:1.1em}.sidebar-nav .nav-list{padding:0}.nav-list .nav-header,.sidebar-nav .nav-list>li>a{margin-right:0}.sidebar-nav .nav-list.trans{max-height:100000px;-webkit-transition:all .5s ease;-moz-transition:all .5s ease;transition:all .5s ease;display:block;opacity:0}.sidebar-nav .nav-list li a{padding:10px 0 10px 25px;color:#5f5f5f;text-shadow:none;background-color:#eee;font-size:14px;text-transform:uppercase;position:relative}.sidebar-nav .nav-list li a.org-overview{background-color:#fff;font-family:marquette-light,'Helvetica Neue',Helvetica,Arial,sans-serif}.sidebar-nav .nav-list li a.org-overview:hover{color:#5f5f5f}.sidebar-nav .nav-list:first-child>li{margin:0;height:39px;overflow:hidden}.sidebar-nav .nav-list:first-child>li.active{height:auto;overflow:visible}.sidebar-nav .nav-list:first-child>li>ul>li>a{color:#5f5f5f}.sidebar-nav .nav-list:first-child>li.active>a,.sidebar-nav .nav-list:first-child>li>a:focus,.sidebar-nav .nav-list:first-child>li>a
:hover{color:#fff;text-shadow:none;background-color:#1b70a0;margin:0 0 0 -15px}.sidebar-nav .nav-list:first-child li.active>ul>li>a{background-color:#fff}.sidebar-nav .nav-list li.option>ul{overflow:hidden;opacity:0;height:auto;display:block;-webkit-transition:all .5s ease;-moz-transition:all .5s ease;transition:all .5s ease;max-height:100000px}.sidebar-nav .nav-list li.option.active>ul{opacity:1}.sidebar-nav .nav-list li.active>ul>li a{border-bottom:1px solid #eee;color:#747474;text-transform:none;font-weight:300;padding:10px 0 10px 22px}.sidebar-nav .nav-list li.active>ul>li.active>a,.sidebar-nav .nav-list li.active>ul>li>a:focus,.sidebar-nav .nav-list li.active>ul>li>a:hover{color:#1b70a0;background:#fff url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAKCAYAAAB4zEQNAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIH
g6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYxIDY0LjE0MDk0OSwgMjAxMC8xMi8wNy0xMDo1NzowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNS4xIE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo1NkEzQ0Y1MUI0MjIxMUUyODZGN0I5RUE1NjAwQ0I0MCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo1NkEzQ0Y1MkI0MjIxMUUyODZGN0I5RUE1NjAwQ0I0MCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjU2QTNDRjRGQjQyMjExRTI4NkY3QjlFQTU2MDBDQjQwIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjU2QTNDRjUwQjQyMjExRTI4NkY3QjlFQTU2MDBDQjQwIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+poqUzgAAAG1JREFUeNpilC5YwIADqLNgEWQG4kYg9mNCk1AE4sNAXA3iIEuGAPF5ILaECYAkeYB
4DhCvBmJ+ZGNAkt+B+CkQ/0W3nAkqWA/EblBFKJIwsA+IDYF4BzZJEHgNxJ5AXAbEv1hwBEA3EK8BCDAAwgoRW2zTv6EAAAAASUVORK5CYII=) no-repeat;background-position:206px 16px;font-family:marquette-medium,'Helvetica Neue',Helvetica,Arial,sans-serif;border-bottom:1px solid #eee;text-shadow:none;-webkit-font-smoothing:antialiased}.sidebar-nav .nav-list li.option ul{list-style:none}.new-tag{border-radius:3px;display:inline-block;font-family:marquette-medium;font-size:.6em;background-color:rgba(26,26,26,.5);color:#fff;padding:3px;height:8px;line-height:8px;position:absolute;right:5px;top:13px}.sidebar-nav .nav-list li:active a{background-color:rgba(255,255,255,.5)}.app-creds dt{font-family:marquette-medium}.intro-container{position:relative;height:auto;-webkit-transition:all .5s ease-out;-moz-transition:all .5s ease-out;transition:all .5s ease-out;overflow:hidden}.sdk-intro{position:absolute;border:1px solid #aaa;background-color:#f4f4f4;-moz-box-shadow:inset 0 0 10px #ccc;-webkit-box-shadow:inset 0 0 10px #cc
c;box-shadow:inset 0 4px 10px #ccc;opacity:.4;top:0;left:6px;right:1px;bottom:0;height:auto;overflow:hidden}.sdk-intro-content{position:absolute;padding:10px 40px 10px 10px;top:0;left:6px;right:-20px;bottom:0;height:auto;overflow:auto}.sdk-intro-content .btn.normal{margin:19px 10px 0 0}.keys-creds h2{margin-bottom:-2px}.user-list{padding:0;margin:0;list-style:none;min-height:450px;float:left;width:100%}.user-list li{padding:10px;border-bottom:1px solid #c5c5c5;cursor:pointer}.user-list li .label{margin:0 0 0 22px}.user-list li input{margin:0 10px 0 0}.user-list li.selected{background-color:#eee}#user-panel{margin-top:20px}.user-col{border-right:1px solid #c5c5c5;-moz-box-shadow:inset -27px 1px 6px -27px #b8b8b8;-webkit-box-shadow:inset -27px 1px 6px -27px #b8b8b8;box-shadow:inset -27px 1px 6px -27px #b8b8b8}.user-profile-picture{width:40px;height:40px}.content-page>.well{padding:10px;height:40px}.table-header td{font-weight:800;color:#000}.user-header-title{font-size:13px;font-famil
y:marquette-regular,'Helvetica Neue',Helvetica,Arial,sans-serif}.tabbable>.tab-content{overflow:visible}.button-strip{float:right;margin-bottom:10px}a.notifications-links{color:#1b97d1}.notifications-header{height:50px;background-color:#eee;padding:10px;border-bottom:1px solid #aaa;position:relative;overflow:hidden}.groups-row td.details,.notifications-row td.details,.roles-row td.details,.users-row td.details{line-height:25px!important;border-right:1px solid #e5e5e5}.nav-tabs>li{cursor:pointer}.login-content{position:absolute;top:91px;bottom:0;left:0;right:0;background-color:#fff;padding:9% 0 0 32%}.login-content form{margin:0}.login-content form h1{padding:10px 0 5px 20px}.login-holder{width:450px;border:1px solid #e5e5e5}.login-holder .form-actions{padding-left:30px;margin-bottom:0}.login-holder .form-actions .submit{padding:0 30px 0 0}.login-content .extra-actions{margin-top:10px;padding-left:30px;margin-bottom:0}.login-content .extra-actions .submit{padding:0 30px 0 0}.login-co
ntent .extra-actions .submit a{margin-left:3px;margin-right:3px}.signUp-content{position:absolute;top:91px;bottom:0;left:0;right:0;background-color:#fff;padding:9% 0 0 32%}.signUp-content form{margin:0}.signUp-content form h1{padding:10px 0 5px 20px}.signUp-holder{width:450px;border:1px solid #e5e5e5}.signUp-holder .form-actions{margin-bottom:0}.signUp-holder .form-actions .submit{padding:0 30px 0 0}.table.collection-list{border:1px solid #eee}.formatted-json,.formatted-json ul{list-style:none}.formatted-json .key{font-family:marquette-medium}.formatted-json li{border-bottom:1px solid #eee;margin:3px 0}iframe[seamless]{background-color:transparent;border:0 none transparent;padding:0;overflow:visible;overflow-x:hidden;width:100%}.gravatar20{padding:7px 0 0 10px!important;margin:0;width:30px}#shell-panel *{font-family:monospace}#shell-panel .boxContent{font-family:monospace;font-size:14px;min-height:400px}#shell-panel input{font-family:monospace;overflow:auto;width:90%;margin-top:10px
}#shell-panel hr{margin:2px;border-color:#e1e1e1}form input.has-error{-webkit-animation:pulse-red 1s alternate infinite;-moz-animation:pulse-red 1s alternate infinite;border:1px solid rgba(255,3,3,.6)}.validator-error-message{color:#ff0303}@-webkit-keyframes pulse-red{0%{box-shadow:inset 0 0 5px 2px rgba(255,3,3,.1),0 0 5px 2px rgba(255,3,3,.3)}100%{box-shadow:inset 0 0 5px 2px rgba(255,3,3,.3),0 0 5px 2px rgba(255,3,3,.1)}}@-moz-keyframes pulse-red{0%{box-shadow:inset 0 0 5px 2px rgba(255,3,3,.1),0 0 5px 2px rgba(255,3,3,.3)}100%{box-shadow:inset 0 0 5px 2px rgba(255,3,3,.3),0 0 5px 2px rgba(255,3,3,.1)}}.modal-instructions{padding-top:5px;padding-bottom:5px}.dropdown-menu{width:100%}.modal{width:560px!important}.dropdown-backdrop{position:static}.title.with-icons a{display:inline-block;text-transform:lowercase;font-size:.8em;margin:0 5px 0 0}.span9.tab-content{margin:0}.span9.tab-content .content-page{padding:0 0 0 30px}.button-toolbar,.menu-toolbar{padding:10px 0;margin:0;width:1
00%}.menu-toolbar{padding:0 0 20px}.menu-toolbar>ul.inline{border-bottom:1px solid #c5c5c5;margin:0}.btn-group .filter-selector,.btn-group .filter-selector:active,.btn-group .filter-selector:focus,.btn-group .filter-selector:hover,.btn-group .filter-title,.btn-group .filter-title:active,.btn-group .filter-title:focus,.btn-group.open .btn.dropdown-toggle.filter-selector,.btn-group.open .btn.dropdown-toggle.filter-title,.btn-group>.filter-selector.btn:first-child,.btn-group>.filter-title.btn:first-child,.btn.btn-primary,.btn.normal,.modal-footer .btn{color:#fff;padding:3px 9px;text-shadow:none;background-color:#494949;background-image:none;border:1px solid #c5c5c5;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;border-bottom-left-radius:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;box-shadow:none}ul.inline>li.tab{margin:0;padding:0}li.tab .btn.btn-primary{background-color:#eee;border:0;color:#494949;box-shadow:none;margin:0 -1px -1px -1px;padding:3px 19px 3
px 16px;border-bottom:1px solid #c5c5c5}ul.inline>li.tab.selected{margin:0 0 -1px 0;border-bottom:1px solid #fff}li.tab.selected .btn.btn-primary.toolbar{color:#494949;border-left:1px solid #c5c5c5;border-right:1px solid #c5c5c5;border-top:1px solid #c5c5c5;border-bottom:0;background-color:#fff}.btn-group.compare .filter-selector.btn:first-child,.btn.btn-primary.toolbar{color:#494949;background-color:#f1f1f1}li.selected .btn.btn-primary.toolbar{color:#fff;border:1px solid #1b70a0;background-color:#1b70a0}.btn.cancel,.btn.cancel:hover,.btn.normal.white,.btn.normal.white:hover{background-color:#fff;color:#5f5f5f}.btn-group .filter-selector:active,.btn-group .filter-title:hover,.btn-group.selected .filter-selector,.btn-group.selected>.filter-selector.btn:first-child,.btn.btn-primary:active,.btn.btn-primary:hover,.btn.normal:hover,.modal-footer .btn:active,.modal-footer .btn:hover{color:#fff;border:1px solid #1b70a0;background-color:#1b70a0}.btn-group .filter-selector .caret{margin:8px
0 0 10px;border-top:4px solid #fff;border-right:4px solid transparent;border-left:4px solid transparent}.btn-group.header-button{margin:4px 0 0;text-transform:none}.page-filters{padding:0;margin:10px 0}.dropdown-menu{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;z-index:102}.modal{position:fixed;top:10%;left:50%;margin-left:-280px;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,.3);*border:1px solid #999;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:0 3px 7px rgba(0,0,0,.3);-moz-box-shadow:0 3px 7px rgba(0,0,0,.3);box-shadow:0 3px 7px rgba(0,0,0,.3);-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box;outline:0}.modal.fade{z-index:-200}.modal.fade.in{z-index:1050}.auto-update-container{padding:10px 0 0}.auto-updates{margin:0 10px 0 0}.super-help{font-size:9pt;vertical-align:super}.help_tooltip{font-size:9pt;text-transform:none}.helpButton{font-family:Helvetica,Arial,s
ans-serif;font-size:13px;font-weight:300;padding:5px 8px;text-align:center;vertical-align:middle;color:#ffd6ca;border:1px solid #ffbfab;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;background-color:#ff3b00;width:110px;outline:0}.helpButton:hover{cursor:pointer;background-color:#FFB7A5;color:#dc3300;-webkit-transition:background-color .1s;-moz-transition:background-color .1s;-o-transition:background-color .1s;transition:background-color .1s}.helpButtonClicked{background-color:#FFB7A5;color:#dc3300;outline:0}.introjs-overlay{background:0 0;filter:none;-ms-filter:"alpha(Opacity=20)";filter:alpha(opacity=20);background-color:#fff;opacity:.2}.introjs-helperLayer{border-radius:0;box-shadow:none;border:1px solid rgba(0,0,0,.25)}.introjs-helperNumberLayer{top:-12px;left:-12px;font-family:"Open Sans",Arial,sans-serif;font-weight:400;border:0;filter:none;filter:none;box-shadow:none}.introjs-arrow{border:10px solid #fff}.introjs-arrow.top{top:-20px;border-bottom-color:#6d
bce3}.introjs-arrow.right{right:-20px;top:20px;border-left-color:#6dbce3}.introjs-arrow.bottom{bottom:-20px;border-top-color:#6dbce3}.introjs-arrow.left{left:-20px;top:20px;border-right-color:#6dbce3}.introjs-arrow:before{border:10px solid #fff;content:'';position:absolute}.introjs-arrow.top:before{top:-8px;left:-10px;border-top-color:transparent;border-right-color:transparent;border-bottom-color:#F0F8FC;border-left-color:transparent}.introjs-arrow.right:before{right:-7px;top:-10px;border-top-color:transparent;border-right-color:transparent;border-bottom-color:transparent;border-left-color:#F0F8FC}.introjs-arrow.bottom:before{bottom:-9px;left:-10px;border-top-color:#F0F8FC;border-right-color:transparent;border-bottom-color:transparent;border-left-color:transparent}.introjs-arrow.left:before{left:-7px;top:-10px;border-top-color:transparent;border-right-color:#F0F8FC;border-bottom-color:transparent;border-left-color:transparent}.introjs-tooltip{background-color:#F0F8FC;border-radius:0
;border:1px solid #6dbce3;box-shadow:0 1px 7px rgba(0,0,0,.3)}.introjs-button{text-shadow:none;font:12px/normal sans-serif;color:#1f77a3;background-color:#F0F8FC;background-image:none;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px;border:1px solid #d4d4d4}.introjs-button:hover{font-family:"Open Sans",Arial,sans-serif}.introjs-button:active,.introjs-button:focus{text-decoration:none;outline:0}.introjs-skipbutton{color:#1f77a3;text-decoration:none;font-family:"Open Sans",Arial,sans-serif;margin-right:32px;border:1px solid #6dbce3}.introjs-nextbutton{text-decoration:none;font-family:"Open Sans",Arial,sans-serif;width:40px;margin-left:3px}.introjs-prevbutton{text-decoration:none;font-family:"Open Sans",Arial,sans-serif;width:40px}.introjs-nextbutton,.introjs-nextbutton:active,.introjs-nextbutton:focus,.introjs-nextbutton:hover{background-image:url(../img/introjs_arrow_step_next.png);background-position:45px 5px;background-repeat:no-repeat;text-align:left;border:1px s
olid #6dbce3}.introjs-prevbutton,.introjs-prevbutton:active,.introjs-prevbutton:focus,.introjs-prevbutton:hover{background-image:url(../img/introjs_arrow_step_prev.png);background-position:2px 5px;background-repeat:no-repeat;text-align:right;border:1px solid #6dbce3}.introjs-nextbutton.introjs-disabled,.introjs-nextbutton.introjs-disabled:active,.introjs-nextbutton.introjs-disabled:focus,.introjs-nextbutton.introjs-disabled:hover{background-image:url(../img/introjs_arrow_step_next_disabled.png);background-position:48px 5px;background-repeat:no-repeat;text-align:left;border:1px solid #d4d4d4}.introjs-prevbutton.introjs-disabled,.introjs-prevbutton.introjs-disabled:active,.introjs-prevbutton.introjs-disabled:focus,.introjs-prevbutton.introjs-disabled:hover{background-image:url(../img/introjs_arrow_step_prev_disabled.png);background-position:2px 5px;background-repeat:no-repeat;text-align:right;border:1px solid #d4d4d4}.introjs-disabled,.introjs-disabled:focus,.introjs-disabled:hover{co
lor:gray;background-color:#F0F8FC}.introjs-tooltiptext{font-size:13px;line-height:19px}.introjstooltipheader{font-size:13px;line-height:19px;font-family:marquette-medium,'Helvetica Neue',Helvetica,Arial,sans-serif}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/70780481/portal/dist/appsvc-ui/2.0.2/css/main.css
----------------------------------------------------------------------
diff --git a/portal/dist/appsvc-ui/2.0.2/css/main.css b/portal/dist/appsvc-ui/2.0.2/css/main.css
index 9c8ab5d..ffdaebb 100644
--- a/portal/dist/appsvc-ui/2.0.2/css/main.css
+++ b/portal/dist/appsvc-ui/2.0.2/css/main.css
@@ -1912,8 +1912,8 @@ li.selected .btn.btn-primary.toolbar {
.introjs-nextbutton:focus,
.introjs-nextbutton:active,
.introjs-nextbutton:hover {
- background-image: url("img/introjs_arrow_step_next.png");
- background-position: 48px 5px;
+ background-image: url("../img/introjs_arrow_step_next.png");
+ background-position: 45px 5px;
background-repeat: no-repeat;
text-align: left;
border: 1px solid #6dbce3;
@@ -1923,7 +1923,7 @@ li.selected .btn.btn-primary.toolbar {
.introjs-prevbutton:focus,
.introjs-prevbutton:active,
.introjs-prevbutton:hover {
- background-image: url("img/introjs_arrow_step_prev.png");
+ background-image: url("../img/introjs_arrow_step_prev.png");
background-position: 2px 5px;
background-repeat: no-repeat;
text-align: right;
@@ -1934,7 +1934,7 @@ li.selected .btn.btn-primary.toolbar {
.introjs-nextbutton.introjs-disabled:active,
.introjs-nextbutton.introjs-disabled:hover,
.introjs-nextbutton.introjs-disabled:focus {
- background-image: url("img/introjs_arrow_step_next_disabled.png");
+ background-image: url("../img/introjs_arrow_step_next_disabled.png");
background-position: 48px 5px;
background-repeat: no-repeat;
text-align: left;
@@ -1945,7 +1945,7 @@ li.selected .btn.btn-primary.toolbar {
.introjs-prevbutton.introjs-disabled:active,
.introjs-prevbutton.introjs-disabled:hover,
.introjs-prevbutton.introjs-disabled:focus {
- background-image: url("img/introjs_arrow_step_prev_disabled.png");
+ background-image: url("../img/introjs_arrow_step_prev_disabled.png");
background-position: 2px 5px;
background-repeat: no-repeat;
text-align: right;
[9/9] git commit: Merge pull request #90 from shawnfeldman/master
Posted by sn...@apache.org.
Merge pull request #90 from shawnfeldman/master
need to rebuild files
Project: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/commit/ec3f5b1c
Tree: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/tree/ec3f5b1c
Diff: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/diff/ec3f5b1c
Branch: refs/heads/master
Commit: ec3f5b1c142bca41bedc6d17380cbaf0429406f4
Parents: 3313695 7078048
Author: Rod Simpson <ro...@rodsimpson.com>
Authored: Mon Mar 31 14:51:14 2014 -0600
Committer: Rod Simpson <ro...@rodsimpson.com>
Committed: Mon Mar 31 14:51:14 2014 -0600
----------------------------------------------------------------------
portal/dist/appsvc-ui/2.0.2/css/dash.min.css | 2 +-
portal/dist/appsvc-ui/2.0.2/css/main.css | 10 +-
portal/dist/appsvc-ui/css/dash.min.css | 2 +-
portal/dist/appsvc-ui/css/main.css | 10 +-
portal/js/usergrid-dev.min.js | 19754 --------------------
5 files changed, 12 insertions(+), 19766 deletions(-)
----------------------------------------------------------------------
[2/9] git commit: fixed img path
Posted by sn...@apache.org.
fixed img path
Project: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/commit/b73da256
Tree: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/tree/b73da256
Diff: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/diff/b73da256
Branch: refs/heads/master
Commit: b73da25615388b33d680d26db1f9f47b7a7dfd55
Parents: ad1e3b3
Author: amuramoto <am...@apigee.com>
Authored: Mon Mar 31 13:04:37 2014 -0700
Committer: amuramoto <am...@apigee.com>
Committed: Mon Mar 31 13:04:37 2014 -0700
----------------------------------------------------------------------
portal/css/dash.min.css | 2 +-
portal/css/main.css | 10 +++++-----
portal/js/usergrid-dev.min.js | 2 +-
portal/js/usergrid.min.js | 2 +-
4 files changed, 8 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/b73da256/portal/css/dash.min.css
----------------------------------------------------------------------
diff --git a/portal/css/dash.min.css b/portal/css/dash.min.css
index 62424d9..c2b5359 100644
--- a/portal/css/dash.min.css
+++ b/portal/css/dash.min.css
@@ -1 +1 @@
-.dropdown{position:relative}.dropdown-toggle{*margin-bottom:-3px}.dropdown-toggle:active,.open .dropdown-toggle{outline:0}.caret{display:inline-block;width:0;height:0;vertical-align:top;border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid #000;opacity:.3;filter:alpha(opacity=30);content:""}.dropdown .caret{margin-top:8px;margin-left:2px}.dropdown:hover .caret,.open.dropdown .caret{opacity:1;filter:alpha(opacity=100)}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;float:left;display:none;min-width:160px;padding:4px 0;margin:0;list-style:none;background-color:#fff;border-color:#ccc;border-color:rgba(0,0,0,.2);border-style:solid;border-width:1px;-webkit-border-radius:0 0 5px 5px;-moz-border-radius:0 0 5px 5px;border-radius:0 0 5px 5px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip
:padding-box;*border-right-width:2px;*border-bottom-width:2px}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:8px 1px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #fff;*width:100%;*margin:-5px 0 5px}.dropdown-menu a{display:block;padding:3px 15px;clear:both;font-weight:400;line-height:18px;color:#333;white-space:nowrap}.dropdown-menu .active>a,.dropdown-menu .active>a:hover,.dropdown-menu li>a:hover{color:#fff;text-decoration:none;background-color:#08c}.dropdown.open{*z-index:1000}.dropdown.open .dropdown-toggle{color:#fff;background:#ccc;background:rgba(0,0,0,.3)}.dropdown.open .dropdown-menu{display:block}.pull-right .dropdown-menu{left:auto;right:0}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid #000;content:"\2191"}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}.dropdownContainingSubmenu .dropdown-menu{padding:0;margin-t
op:-4px;min-width:auto;background-color:#fff;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:4px 4px 16px rgba(0,0,0,.25);-moz-box-shadow:4px 4px 16px rgba(0,0,0,.25);box-shadow:4px 4px 16px rgba(0,0,0,.25);border-width:1px;border-top-width:4px;border-color:#bb2d16}.dropdownContainingSubmenu .dropdown-menu a{color:#494949;padding:7px 10px}.dropdownContainingSubmenu .dropdown-menu a:hover{color:#fff;background-color:#f03800}.dropdownContainingSubmenu .dropdown-menu .nav-header{background-color:#f0f0f0;margin-top:0;padding-left:10px}.dropdownContainingSubmenu .dropdown-menu .divider{margin:0}.navbar .dropdown-menu:after,.navbar .dropdown-menu:before{content:normal}#globalNav{margin-left:20px;background-color:transparent}#globalNav .dropdown-toggle{border-radius:3px;padding-top:3px;padding-bottom:3px;margin-top:7.5px;margin-bottom:7.5px}#globalNav .dropdown-toggle :hover{background-color:transparent}#globalNav.active .caret{opacity:.7}#globalNav.active :
hover .caret{opacity:1}#globalNav ul ul a{border-left:1px solid #bb2d16}#globalNav ul ul li{position:relative}#globalNav ul ul li:first-child{border-bottom:1px solid #bb2d16}#globalNav ul ul a:before{content:"";width:6px;height:32px;position:absolute;left:-6px;top:0}#globalNav ul ul .active a:before,#globalNav ul ul .active a:hover:before{background-image:url(images/triangleMenuItem_right.png)}#globalNav ul ul:hover a:before{background-image:none}#globalNav ul ul a:hover:before{background-image:url(images/triangleMenuItem_right_hover.png)}#globalNav ul ul li a:hover{border-color:transparent}#globalNav .dropdown-menu{width:400px}#globalNavDetail{padding:20px 10px 0;width:250px;height:100%;position:relative;top:0}#globalNavDetail>div{display:none;color:graytext;background-image:none;background-repeat:no-repeat;background-position:0 0;min-height:64px}#globalNavDetail>div.open{display:inline-block}#globalNavDetail>div .globalNavDetailApigeeLogo,#globalNavDetail>div .globalNavDetailDescr
iption,#globalNavDetail>div .globalNavDetailSubtitle,#globalNavDetail>div .globalNavDetailTitle{margin-left:80px}#globalNavDetail>div .globalNavDetailSubtitle{font-size:10px;text-transform:uppercase}#globalNavDetail>div .globalNavDetailTitle{margin-top:5px;font-size:20px}#globalNavDetail>div .globalNavDetailDescription{margin-top:10px;line-height:17px;font-style:oblique}#globalNavDetail #globalNavDetailApigeeHome{margin-top:-10px;background-image:url(img/appswitcher/home_lg.png)}#globalNavDetail #globalNavDetailApigeeHome .globalNavDetailApigeeLogo{margin-top:10px;background-image:url(img/appswitcher/logo_color.png);width:116px;height:40px}#globalNavDetail #globalNavDetailAppServices{background-image:url(img/appswitcher/appServices_lg.png)}#globalNavDetail #globalNavDetailApiPlatform{background-image:url(img/appswitcher/apiPlatform_lg.png)}#globalNavDetail #globalNavDetailMobileAnalytics{background-image:url(img/appswitcher/max_lg.png)}#globalNavDetail #globalNavDetailApiConsoles{ba
ckground-image:url(img/appswitcher/console_lg.png)}#globalNavSubmenuContainer{float:right}#globalNavSubmenuContainer ul{margin-left:0}.ng-cloak,.x-ng-cloak,[data-ng-cloak],[ng-cloak],[ng\:cloak],[x-ng-cloak]{display:none}html{min-height:100%;position:relative;margin:0 auto;background:#fff;min-width:1100px}body{padding:0;background-color:#fff;font-family:marquette-light,'Helvetica Neue',Helvetica,Arial,sans-serif;height:100%;max-height:100%;overflow-x:hidden}a{cursor:pointer}@font-face{font-family:entypo;src:url(entypo/entypo.eot);src:url(entypo/entypo.eot?#iefix) format('embedded-opentype'),url(entypo/entypo.woff) format('woff'),url(entypo/entypo.ttf) format('truetype'),url(entypo/entypo.svg#entypo) format('svg');font-weight:400;font-style:normal}@font-face{font-family:marquette-medium;src:url(arsmarquette/ARSMaquettePro-Medium.otf),url(arsmarquette/ARSMaquettePro-Medium.otf) format('opentype')}@font-face{font-family:marquette-regular;src:url(arsmarquette/ARSMaquettePro-Regular.otf)
,url(arsmarquette/ARSMaquettePro-Regular.otf) format('opentype')}@font-face{font-family:marquette-light;src:url(arsmarquette/ARSMaquettePro-Light.otf),url(arsmarquette/ARSMaquettePro-Light.otf) format('opentype')}.bold{font-family:marquette-medium}.main-content{background-color:#fff;margin:0 0 0 200px}.side-menu{position:absolute;top:51px;left:0;bottom:0;width:200px;float:left;background-color:#eee}footer{padding-top:20px;clear:both}.zero-out{padding:0;text-shadow:none;background-color:transparent;background-image:none;border:0;box-shadow:none;outline:0}.modal-body{overflow-y:visible}.demo-holder{margin:0 -20px 0 -20px;position:relative}.alert-holder{position:fixed;right:0;margin:20px 20px 0 0;z-index:10500;width:302px}.alert,.alert.alert-demo{padding:9px 35px 5px 14px;margin-bottom:3px;text-shadow:0 1px 0 rgba(255,255,255,.5);background-color:#eee;border:1px solid #eee;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-transition:all 1s ease;-moz-transition:all 1s
ease;transition:all 1s ease;height:0;overflow:hidden;line-height:0;float:right}.alert.alert-demo{float:none}.alert{width:0}.alert.alert-success{background-color:rgba(155,198,144,.31);color:#1f6719;border-left:2px solid #1f6719}.alert.alert-warning{background-color:rgba(239,172,37,.2);color:#efac25;border-left:2px solid #efac25}.alert.alert-info{background-color:rgba(27,151,209,.2);color:#1b97d1;border-left:2px solid #1b97d1}.alert.alert-error{background-color:rgba(255,3,3,.2);color:#ff0303;border-left:2px solid #ff0303}.alert.alert-animate.alert-demo{height:20px;line-height:normal;opacity:1;width:100%;-moz-box-shadow:inset 0 2px 13px #b8b8b8;-webkit-box-shadow:inset 0 2px 13px #b8b8b8;box-shadow:inset 0 2px 13px #b8b8b8}.alert.alert-animate{height:auto;line-height:normal;opacity:.9;width:300px}@-webkit-keyframes alert-out{from{opacity:1}to{-webkit-transform:translateY(500px);opacity:0}}@keyframes alert-out{from{opacity:1}to{transform:translateY(500px);opacity:0}}.fade-out{-webkit-a
nimation-name:alert-out;-webkit-animation-duration:1s;-webkit-animation-timing-function:step-stop;-webkit-animation-direction:normal;-webkit-animation-iteration-count:1;animation-name:alert-out;animation-duration:1s;animation-timing-function:step-stop;animation-direction:normal;animation-iteration-count:1;opacity:.9}.margin-35{margin-top:35px}.modal-footer{background-color:transparent}.baloon{margin:20px;padding:20px 30px;position:fixed;bottom:0;top:auto;border-style:solid;border-radius:2px;box-shadow:0 0 4px rgba(0,0,0,.8)}.baloon:after{content:"";position:absolute;width:10px;height:10px;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-o-transform:rotate(45deg);-ms-filter:"progid:DXImageTransform.Microsoft.Matrix(M11=0.7071067811865473, M12=-0.7071067811865477, M21=0.7071067811865477, M22=0.7071067811865473, SizingMethod='auto expand')"}.north.baloon:after{top:-6px;left:30px;border-top-style:solid;border-left-style:solid;box-shadow:-2px -2px 3px -1px rgba(0,0,0,.5)}.so
uth.baloon:after{bottom:-6px;left:30px;border-bottom-style:solid;border-right-style:solid;box-shadow:2px 2px 3px -1px rgba(0,0,0,.5)}.left.baloon:after{top:10px;left:-6px;border-bottom-style:solid;border-left-style:solid;box-shadow:-2px 2px 3px -1px rgba(0,0,0,.5)}.right.baloon:after{bottom:10px;right:-6px;border-top-style:solid;border-right-style:solid;box-shadow:2px -2px 3px -1px rgba(0,0,0,.5)}.baloon,.baloon:after{font-family:sans-serif;font-weight:700;border-color:#f7f7f7;border-width:1px;background-color:#3ac62f;color:#fff}#globalNav{float:right;margin:15px 8px 0 9px;list-style:none;width:114px}#globalNav ul{list-style:none}#globalNavDetail>div{display:none;color:graytext;background-image:none;background-repeat:no-repeat;background-position:0 0;min-height:64px}#globalNavDetail #globalNavDetailApiPlatform{background-image:url(../img/appswitcher/apiPlatform_lg.png)}#globalNavDetail #globalNavDetailAppServices{background-image:url(../img/appswitcher/appServices_lg.png)}#globalNav
Detail #globalNavDetailApigeeHome{margin-top:-10px;background-image:url(../img/appswitcher/home_lg.png)}#globalNavDetail #globalNavDetailApiConsoles{background-image:url(../img/appswitcher/console_lg.png)}#globalNavDetail #globalNavDetailApigeeHome .globalNavDetailApigeeLogo{margin-top:10px;background-image:url(../img/appswitcher/logo_color.png);width:116px;height:40px}#globalNavDetail>div .globalNavDetailSubtitle{font-size:10px;text-transform:uppercase}#globalNavDetail>div .globalNavDetailTitle{margin-top:5px;font-size:20px}#globalNavDetail>div .globalNavDetailDescription{margin-top:10px;line-height:17px;font-style:oblique}.navbar.navbar-static-top .dropdownContainingSubmenu .dropdown-menu a{color:#494949;padding:13px 10px}.navbar.navbar-static-top .dropdownContainingSubmenu .dropdown-menu .active a{color:#fff;background-color:#bb2d16}.navbar.navbar-static-top .dropdown-menu a{display:block;padding:3px 15px;clear:both;font-weight:400;line-height:18px;color:#333;white-space:nowrap}#
globalNav .dropdown-toggle{border-radius:3px;padding:3px 6px;margin:0}.dropdown-toggle{background-color:#bb2d16;padding:3px}.demo-holder .alert.alert-demo{background-color:rgba(196,196,196,.1);color:#777;padding:12px 35px 7px 14px}.demo-holder-content{position:absolute;right:50px}.demo-text{position:absolute;right:223px;left:0;padding:0 0 0 10px}.b{display:block}.toggle,.toggle-form{position:absolute;top:10px;right:173px;width:50px;height:23px;border-radius:100px;background-color:#ddd;overflow:hidden;box-shadow:inset 0 0 2px 1px rgba(0,0,0,.05)}.form-horizontal.configs .control-label{width:250px;padding:0 10px 0 0}.toggle-form{position:relative;right:auto;top:auto;display:inline-block}.toggle-form-label{display:inline-block}input[type=checkbox].check{position:absolute;display:block;cursor:pointer;top:0;left:0;width:100%;height:100%;opacity:0;z-index:6}.check:checked~.track{box-shadow:inset 0 0 0 20px #ff3b00}.toggle-form .check:checked~.track{box-shadow:inset 0 0 0 20px #82ce85}.che
ck:checked~.switch{right:2px;left:27px;transition:.4s ease;transition-property:left,right;transition-delay:.05s,0s}.switch{position:absolute;left:2px;top:2px;bottom:2px;right:27px;background-color:#fff;border-radius:36px;z-index:1;transition:.4s ease;transition-property:left,right;transition-delay:0s,.05s;box-shadow:0 1px 2px rgba(0,0,0,.2)}.track{position:absolute;left:0;top:0;right:0;bottom:0;transition:.4s ease;box-shadow:inset 0 0 0 2px rgba(0,0,0,.05);border-radius:40px}.add-app .pictogram,top-selector .pictogram{margin:0 3px 0 0}i.pictogram{font-family:entypo;display:inline-block;width:23px;margin:0 5px 0 0;font-size:2.5em;height:17px;line-height:.35;overflow:hidden;vertical-align:middle;padding:5px 0 0;font-style:normal;font-weight:100;-webkit-font-smoothing:antialiased}i.pictogram.sub{margin:0 0 0 10px;font-size:2.1em}i.pictogram.title{margin:0;font-size:2.1em}i.pictogram.chart{margin:0 0 0 3px;font-size:2.1em;line-height:.4em;height:.5em;width:100%}i.pictogram.apichart{marg
in:0 0 0 11px;font-size:2.1em;line-height:.4em;height:.5em;width:100%}[class*=" ma-icon-"],[class^=ma-icon-]{display:inline-block;width:23px;height:20px;margin:1px 3px 0 0;line-height:20px;vertical-align:text-top;background-image:url(../img/nav-sprites.png);background-position:14px 14px;background-repeat:no-repeat}[class*=" sdk-icon-"],[class^=sdk-icon-]{display:inline-block;width:32px;height:29px;margin:-3px 3px 0 0;line-height:32px;vertical-align:text-top;background-image:url(../img/sdk-sprites.png);background-position:14px 14px;background-repeat:no-repeat;cursor:pointer;overflow:hidden}[class*=" sdk-icon-large-"],[class^=sdk-icon-large-]{display:inline-block;width:86px;height:86px;margin:-3px 3px 0 0;line-height:32px;vertical-align:text-top;background-image:url(../img/sdk-sprites-large.png);background-position:14px 14px;background-repeat:no-repeat;border:1px solid #aaa;-moz-box-shadow:3px 3px 0 -1px #ccc;-webkit-box-shadow:3px 3px 0 -1px #ccc;box-shadow:3px 3px 0 -1px #ccc}.sdk-i
con-ios{background-position:-6px -4px}.sdk-icon-android{background-position:-59px -3px}.sdk-icon-js{background-position:-109px -4px}.sdk-icon-node{background-position:-154px -3px}.sdk-icon-ruby{background-position:-204px -3px}.sdk-icon-net{background-position:-256px -4px}.sdk-icon-large-ios{background-position:-6px -3px}.sdk-icon-large-android{background-position:-113px 0}.sdk-icon-large-js{background-position:-219px 0}.sdk-icon-large-node{background-position:-323px -3px}.sdk-icon-large-ruby{background-position:-431px 0}.sdk-icon-large-net{background-position:-537px -3px}body>header>.navbar{background-color:#ff3b00}body>header .navbar:first-child>a{height:22px;line-height:22px;padding:10px 20px 20px 13px}.navbar.navbar-static-top a{text-shadow:none;color:#fff}.navbar-text{color:#fff;margin:4px}.navbar-text .dropdown-menu a{color:#343434}.navbar-text.pull-left{margin-left:90px}.top-nav,ul.app-nav li,ul.org-nav li{background-color:#fff}.top-nav .btn-group{margin:9px 0 5px 5px}.nav .ap
p-selector .caret,.nav .app-selector:active .caret,.nav .app-selector:focus .caret,.nav .app-selector:hover .caret,.nav .org-selector .caret,.nav .org-selector:active .caret,.nav .org-selector:focus .caret,.nav .org-selector:hover .caret{border-top-color:#5f5f5f;border-bottom-color:transparent;margin-top:8px;position:absolute;right:10px}.org-options{margin:5px 2px -8px -5px;border-top:3px solid #e6e6e6;overflow:hidden}.navbar.secondary{margin:0 -20px 0 -21px;border-bottom:3px solid #e6e6e6}.navbar.secondary>.container-fluid{margin:0 -20px 0 -18px}.navbar.secondary .nav,.navbar.secondary>.container-fluid .nav-collapse.collapse.span9,.top-nav{margin:0}.top-nav>li,.top-nav>li>div{width:100%}.span9.button-area{margin-left:0}.navbar .nav a.btn-create i{margin:1px 0 0}.navbar .nav a.btn-create,.navbar .nav a.btn-create:hover{text-align:left;font-weight:400;color:#1b70a0;padding:0 0 0 10px;margin:4px 0 0 3px;display:block;width:140px;height:30px;line-height:30px;background-color:#f3f3f3}.n
avbar .nav a.btn-create:hover{color:#1b70a0}.navbar .nav a.btn-create:active{box-shadow:none}.sdks>ul>li.title label{color:#5f5f5f;font-size:15px;display:inline-block;padding:16px 0 0;line-height:6px;cursor:default}.sdks>ul>li.title a{color:#5f5f5f;font-size:15px;display:inline-block;padding:16px 0 0;line-height:6px}.sdks>ul{list-style:none;margin:0;height:32px;overflow:hidden}.sdks>ul>li{display:inline;margin:0 10px 0 0;line-height:11px}.navbar.secondary,.navbar.secondary .btn-group>.btn,.navbar.secondary .btn-group>.dropdown-menu,.side-menu .btn-group>.btn,.side-menu .dropdown-menu{text-transform:uppercase;font-family:marquette-regular,'Helvetica Neue',Helvetica,Arial,sans-serif;color:#5f5f5f;font-size:14px;-webkit-font-smoothing:antialiased}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover,.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover,.dropdown-submenu:focus>a,.dropdown-submenu:hover>a{text-decoration:none;color:#fff;background-color:#5f
5f5f;background-image:-moz-linear-gradient(top,#5f5f5f,#787878);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5f5f5f),to(#787878));background-image:-webkit-linear-gradient(top,#5f5f5f,#787878);background-image:-o-linear-gradient(top,#5f5f5f,#787878);background-image:linear-gradient(to bottom,#5f5f5f,#787878);background-repeat:repeat-x}.btn-group.open .btn.dropdown-toggle.top-selector,.top-selector,.top-selector:active,.top-selector:focus,.top-selector:hover{color:#5f5f5f;padding:0;text-shadow:none;background-color:transparent;background-image:none;border:0;box-shadow:none;outline:0;width:100%;text-align:left}.dialog-body{padding:20px}h1.title{font-size:1.3em;font-family:marquette-medium,"Helvetica Neue",sans-serif;color:#686868;line-height:17px;display:inline-block;padding:0 10px 0 0}h2.title{text-transform:uppercase;font-size:1.2em;border-top:2px solid #eee;color:#828282}h2.title.chart{margin:10px 0 20px 10px;z-index:101;position:absolute;top:0;left:0;right:0}h3.title{t
ext-transform:uppercase;font-size:1.1em}.sidebar-nav .nav-list{padding:0}.nav-list .nav-header,.sidebar-nav .nav-list>li>a{margin-right:0}.sidebar-nav .nav-list.trans{max-height:100000px;-webkit-transition:all .5s ease;-moz-transition:all .5s ease;transition:all .5s ease;display:block;opacity:0}.sidebar-nav .nav-list li a{padding:10px 0 10px 25px;color:#5f5f5f;text-shadow:none;background-color:#eee;font-size:14px;text-transform:uppercase;position:relative}.sidebar-nav .nav-list li a.org-overview{background-color:#fff;font-family:marquette-light,'Helvetica Neue',Helvetica,Arial,sans-serif}.sidebar-nav .nav-list li a.org-overview:hover{color:#5f5f5f}.sidebar-nav .nav-list:first-child>li{margin:0;height:39px;overflow:hidden}.sidebar-nav .nav-list:first-child>li.active{height:auto;overflow:visible}.sidebar-nav .nav-list:first-child>li>ul>li>a{color:#5f5f5f}.sidebar-nav .nav-list:first-child>li.active>a,.sidebar-nav .nav-list:first-child>li>a:focus,.sidebar-nav .nav-list:first-child>li>a
:hover{color:#fff;text-shadow:none;background-color:#1b70a0;margin:0 0 0 -15px}.sidebar-nav .nav-list:first-child li.active>ul>li>a{background-color:#fff}.sidebar-nav .nav-list li.option>ul{overflow:hidden;opacity:0;height:auto;display:block;-webkit-transition:all .5s ease;-moz-transition:all .5s ease;transition:all .5s ease;max-height:100000px}.sidebar-nav .nav-list li.option.active>ul{opacity:1}.sidebar-nav .nav-list li.active>ul>li a{border-bottom:1px solid #eee;color:#747474;text-transform:none;font-weight:300;padding:10px 0 10px 22px}.sidebar-nav .nav-list li.active>ul>li.active>a,.sidebar-nav .nav-list li.active>ul>li>a:focus,.sidebar-nav .nav-list li.active>ul>li>a:hover{color:#1b70a0;background:#fff url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAKCAYAAAB4zEQNAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIH
g6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYxIDY0LjE0MDk0OSwgMjAxMC8xMi8wNy0xMDo1NzowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNS4xIE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo1NkEzQ0Y1MUI0MjIxMUUyODZGN0I5RUE1NjAwQ0I0MCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo1NkEzQ0Y1MkI0MjIxMUUyODZGN0I5RUE1NjAwQ0I0MCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjU2QTNDRjRGQjQyMjExRTI4NkY3QjlFQTU2MDBDQjQwIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjU2QTNDRjUwQjQyMjExRTI4NkY3QjlFQTU2MDBDQjQwIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+poqUzgAAAG1JREFUeNpilC5YwIADqLNgEWQG4kYg9mNCk1AE4sNAXA3iIEuGAPF5ILaECYAkeYB
4DhCvBmJ+ZGNAkt+B+CkQ/0W3nAkqWA/EblBFKJIwsA+IDYF4BzZJEHgNxJ5AXAbEv1hwBEA3EK8BCDAAwgoRW2zTv6EAAAAASUVORK5CYII=) no-repeat;background-position:206px 16px;font-family:marquette-medium,'Helvetica Neue',Helvetica,Arial,sans-serif;border-bottom:1px solid #eee;text-shadow:none;-webkit-font-smoothing:antialiased}.sidebar-nav .nav-list li.option ul{list-style:none}.new-tag{border-radius:3px;display:inline-block;font-family:marquette-medium;font-size:.6em;background-color:rgba(26,26,26,.5);color:#fff;padding:3px;height:8px;line-height:8px;position:absolute;right:5px;top:13px}.sidebar-nav .nav-list li:active a{background-color:rgba(255,255,255,.5)}.app-creds dt{font-family:marquette-medium}.intro-container{position:relative;height:auto;-webkit-transition:all .5s ease-out;-moz-transition:all .5s ease-out;transition:all .5s ease-out;overflow:hidden}.sdk-intro{position:absolute;border:1px solid #aaa;background-color:#f4f4f4;-moz-box-shadow:inset 0 0 10px #ccc;-webkit-box-shadow:inset 0 0 10px #cc
c;box-shadow:inset 0 4px 10px #ccc;opacity:.4;top:0;left:6px;right:1px;bottom:0;height:auto;overflow:hidden}.sdk-intro-content{position:absolute;padding:10px 40px 10px 10px;top:0;left:6px;right:-20px;bottom:0;height:auto;overflow:auto}.sdk-intro-content .btn.normal{margin:19px 10px 0 0}.keys-creds h2{margin-bottom:-2px}.user-list{padding:0;margin:0;list-style:none;min-height:450px;float:left;width:100%}.user-list li{padding:10px;border-bottom:1px solid #c5c5c5;cursor:pointer}.user-list li .label{margin:0 0 0 22px}.user-list li input{margin:0 10px 0 0}.user-list li.selected{background-color:#eee}#user-panel{margin-top:20px}.user-col{border-right:1px solid #c5c5c5;-moz-box-shadow:inset -27px 1px 6px -27px #b8b8b8;-webkit-box-shadow:inset -27px 1px 6px -27px #b8b8b8;box-shadow:inset -27px 1px 6px -27px #b8b8b8}.user-profile-picture{width:40px;height:40px}.content-page>.well{padding:10px;height:40px}.table-header td{font-weight:800;color:#000}.user-header-title{font-size:13px;font-famil
y:marquette-regular,'Helvetica Neue',Helvetica,Arial,sans-serif}.tabbable>.tab-content{overflow:visible}.button-strip{float:right;margin-bottom:10px}a.notifications-links{color:#1b97d1}.notifications-header{height:50px;background-color:#eee;padding:10px;border-bottom:1px solid #aaa;position:relative;overflow:hidden}.groups-row td.details,.notifications-row td.details,.roles-row td.details,.users-row td.details{line-height:25px!important;border-right:1px solid #e5e5e5}.nav-tabs>li{cursor:pointer}.login-content{position:absolute;top:91px;bottom:0;left:0;right:0;background-color:#fff;padding:9% 0 0 32%}.login-content form{margin:0}.login-content form h1{padding:10px 0 5px 20px}.login-holder{width:450px;border:1px solid #e5e5e5}.login-holder .form-actions{padding-left:30px;margin-bottom:0}.login-holder .form-actions .submit{padding:0 30px 0 0}.login-content .extra-actions{margin-top:10px;padding-left:30px;margin-bottom:0}.login-content .extra-actions .submit{padding:0 30px 0 0}.login-co
ntent .extra-actions .submit a{margin-left:3px;margin-right:3px}.signUp-content{position:absolute;top:91px;bottom:0;left:0;right:0;background-color:#fff;padding:9% 0 0 32%}.signUp-content form{margin:0}.signUp-content form h1{padding:10px 0 5px 20px}.signUp-holder{width:450px;border:1px solid #e5e5e5}.signUp-holder .form-actions{margin-bottom:0}.signUp-holder .form-actions .submit{padding:0 30px 0 0}.table.collection-list{border:1px solid #eee}.formatted-json,.formatted-json ul{list-style:none}.formatted-json .key{font-family:marquette-medium}.formatted-json li{border-bottom:1px solid #eee;margin:3px 0}iframe[seamless]{background-color:transparent;border:0 none transparent;padding:0;overflow:visible;overflow-x:hidden;width:100%}.gravatar20{padding:7px 0 0 10px!important;margin:0;width:30px}#shell-panel *{font-family:monospace}#shell-panel .boxContent{font-family:monospace;font-size:14px;min-height:400px}#shell-panel input{font-family:monospace;overflow:auto;width:90%;margin-top:10px
}#shell-panel hr{margin:2px;border-color:#e1e1e1}form input.has-error{-webkit-animation:pulse-red 1s alternate infinite;-moz-animation:pulse-red 1s alternate infinite;border:1px solid rgba(255,3,3,.6)}.validator-error-message{color:#ff0303}@-webkit-keyframes pulse-red{0%{box-shadow:inset 0 0 5px 2px rgba(255,3,3,.1),0 0 5px 2px rgba(255,3,3,.3)}100%{box-shadow:inset 0 0 5px 2px rgba(255,3,3,.3),0 0 5px 2px rgba(255,3,3,.1)}}@-moz-keyframes pulse-red{0%{box-shadow:inset 0 0 5px 2px rgba(255,3,3,.1),0 0 5px 2px rgba(255,3,3,.3)}100%{box-shadow:inset 0 0 5px 2px rgba(255,3,3,.3),0 0 5px 2px rgba(255,3,3,.1)}}.modal-instructions{padding-top:5px;padding-bottom:5px}.dropdown-menu{width:100%}.modal{width:560px!important}.dropdown-backdrop{position:static}.title.with-icons a{display:inline-block;text-transform:lowercase;font-size:.8em;margin:0 5px 0 0}.span9.tab-content{margin:0}.span9.tab-content .content-page{padding:0 0 0 30px}.button-toolbar,.menu-toolbar{padding:10px 0;margin:0;width:1
00%}.menu-toolbar{padding:0 0 20px}.menu-toolbar>ul.inline{border-bottom:1px solid #c5c5c5;margin:0}.btn-group .filter-selector,.btn-group .filter-selector:active,.btn-group .filter-selector:focus,.btn-group .filter-selector:hover,.btn-group .filter-title,.btn-group .filter-title:active,.btn-group .filter-title:focus,.btn-group.open .btn.dropdown-toggle.filter-selector,.btn-group.open .btn.dropdown-toggle.filter-title,.btn-group>.filter-selector.btn:first-child,.btn-group>.filter-title.btn:first-child,.btn.btn-primary,.btn.normal,.modal-footer .btn{color:#fff;padding:3px 9px;text-shadow:none;background-color:#494949;background-image:none;border:1px solid #c5c5c5;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;border-bottom-left-radius:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;box-shadow:none}ul.inline>li.tab{margin:0;padding:0}li.tab .btn.btn-primary{background-color:#eee;border:0;color:#494949;box-shadow:none;margin:0 -1px -1px -1px;padding:3px 19px 3
px 16px;border-bottom:1px solid #c5c5c5}ul.inline>li.tab.selected{margin:0 0 -1px 0;border-bottom:1px solid #fff}li.tab.selected .btn.btn-primary.toolbar{color:#494949;border-left:1px solid #c5c5c5;border-right:1px solid #c5c5c5;border-top:1px solid #c5c5c5;border-bottom:0;background-color:#fff}.btn-group.compare .filter-selector.btn:first-child,.btn.btn-primary.toolbar{color:#494949;background-color:#f1f1f1}li.selected .btn.btn-primary.toolbar{color:#fff;border:1px solid #1b70a0;background-color:#1b70a0}.btn.cancel,.btn.cancel:hover,.btn.normal.white,.btn.normal.white:hover{background-color:#fff;color:#5f5f5f}.btn-group .filter-selector:active,.btn-group .filter-title:hover,.btn-group.selected .filter-selector,.btn-group.selected>.filter-selector.btn:first-child,.btn.btn-primary:active,.btn.btn-primary:hover,.btn.normal:hover,.modal-footer .btn:active,.modal-footer .btn:hover{color:#fff;border:1px solid #1b70a0;background-color:#1b70a0}.btn-group .filter-selector .caret{margin:8px
0 0 10px;border-top:4px solid #fff;border-right:4px solid transparent;border-left:4px solid transparent}.btn-group.header-button{margin:4px 0 0;text-transform:none}.page-filters{padding:0;margin:10px 0}.dropdown-menu{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;z-index:102}.modal{position:fixed;top:10%;left:50%;margin-left:-280px;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,.3);*border:1px solid #999;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:0 3px 7px rgba(0,0,0,.3);-moz-box-shadow:0 3px 7px rgba(0,0,0,.3);box-shadow:0 3px 7px rgba(0,0,0,.3);-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box;outline:0}.modal.fade{z-index:-200}.modal.fade.in{z-index:1050}.auto-update-container{padding:10px 0 0}.auto-updates{margin:0 10px 0 0}.super-help{font-size:9pt;vertical-align:super}.help_tooltip{font-size:9pt;text-transform:none}.helpButton{font-family:Helvetica,Arial,s
ans-serif;font-size:13px;font-weight:300;padding:5px 8px;text-align:center;vertical-align:middle;color:#ffd6ca;border:1px solid #ffbfab;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;background-color:#ff3b00;width:110px;outline:0}.helpButton:hover{cursor:pointer;background-color:#FFB7A5;color:#dc3300;-webkit-transition:background-color .1s;-moz-transition:background-color .1s;-o-transition:background-color .1s;transition:background-color .1s}.helpButtonClicked{background-color:#FFB7A5;color:#dc3300;outline:0}.introjs-overlay{background:0 0;filter:none;-ms-filter:"alpha(Opacity=20)";filter:alpha(opacity=20);background-color:#fff;opacity:.2}.introjs-helperLayer{border-radius:0;box-shadow:none;border:1px solid rgba(0,0,0,.25)}.introjs-helperNumberLayer{top:-12px;left:-12px;font-family:"Open Sans",Arial,sans-serif;font-weight:400;border:0;filter:none;filter:none;box-shadow:none}.introjs-arrow{border:10px solid #fff}.introjs-arrow.top{top:-20px;border-bottom-color:#6d
bce3}.introjs-arrow.right{right:-20px;top:20px;border-left-color:#6dbce3}.introjs-arrow.bottom{bottom:-20px;border-top-color:#6dbce3}.introjs-arrow.left{left:-20px;top:20px;border-right-color:#6dbce3}.introjs-arrow:before{border:10px solid #fff;content:'';position:absolute}.introjs-arrow.top:before{top:-8px;left:-10px;border-top-color:transparent;border-right-color:transparent;border-bottom-color:#F0F8FC;border-left-color:transparent}.introjs-arrow.right:before{right:-7px;top:-10px;border-top-color:transparent;border-right-color:transparent;border-bottom-color:transparent;border-left-color:#F0F8FC}.introjs-arrow.bottom:before{bottom:-9px;left:-10px;border-top-color:#F0F8FC;border-right-color:transparent;border-bottom-color:transparent;border-left-color:transparent}.introjs-arrow.left:before{left:-7px;top:-10px;border-top-color:transparent;border-right-color:#F0F8FC;border-bottom-color:transparent;border-left-color:transparent}.introjs-tooltip{background-color:#F0F8FC;border-radius:0
;border:1px solid #6dbce3;box-shadow:0 1px 7px rgba(0,0,0,.3)}.introjs-button{text-shadow:none;font:12px/normal sans-serif;color:#1f77a3;background-color:#F0F8FC;background-image:none;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px;border:1px solid #d4d4d4}.introjs-button:hover{font-family:"Open Sans",Arial,sans-serif}.introjs-button:active,.introjs-button:focus{text-decoration:none;outline:0}.introjs-skipbutton{color:#1f77a3;text-decoration:none;font-family:"Open Sans",Arial,sans-serif;margin-right:32px;border:1px solid #6dbce3}.introjs-nextbutton{text-decoration:none;font-family:"Open Sans",Arial,sans-serif;width:40px;margin-left:3px}.introjs-prevbutton{text-decoration:none;font-family:"Open Sans",Arial,sans-serif;width:40px}.introjs-nextbutton,.introjs-nextbutton:active,.introjs-nextbutton:focus,.introjs-nextbutton:hover{background-image:url(img/introjs_arrow_step_next.png);background-position:48px 5px;background-repeat:no-repeat;text-align:left;border:1px soli
d #6dbce3}.introjs-prevbutton,.introjs-prevbutton:active,.introjs-prevbutton:focus,.introjs-prevbutton:hover{background-image:url(img/introjs_arrow_step_prev.png);background-position:2px 5px;background-repeat:no-repeat;text-align:right;border:1px solid #6dbce3}.introjs-nextbutton.introjs-disabled,.introjs-nextbutton.introjs-disabled:active,.introjs-nextbutton.introjs-disabled:focus,.introjs-nextbutton.introjs-disabled:hover{background-image:url(img/introjs_arrow_step_next_disabled.png);background-position:48px 5px;background-repeat:no-repeat;text-align:left;border:1px solid #d4d4d4}.introjs-prevbutton.introjs-disabled,.introjs-prevbutton.introjs-disabled:active,.introjs-prevbutton.introjs-disabled:focus,.introjs-prevbutton.introjs-disabled:hover{background-image:url(img/introjs_arrow_step_prev_disabled.png);background-position:2px 5px;background-repeat:no-repeat;text-align:right;border:1px solid #d4d4d4}.introjs-disabled,.introjs-disabled:focus,.introjs-disabled:hover{color:gray;bac
kground-color:#F0F8FC}.introjs-tooltiptext{font-size:13px;line-height:19px}.introjstooltipheader{font-size:13px;line-height:19px;font-family:marquette-medium,'Helvetica Neue',Helvetica,Arial,sans-serif}
\ No newline at end of file
+.dropdown{position:relative}.dropdown-toggle{*margin-bottom:-3px}.dropdown-toggle:active,.open .dropdown-toggle{outline:0}.caret{display:inline-block;width:0;height:0;vertical-align:top;border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid #000;opacity:.3;filter:alpha(opacity=30);content:""}.dropdown .caret{margin-top:8px;margin-left:2px}.dropdown:hover .caret,.open.dropdown .caret{opacity:1;filter:alpha(opacity=100)}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;float:left;display:none;min-width:160px;padding:4px 0;margin:0;list-style:none;background-color:#fff;border-color:#ccc;border-color:rgba(0,0,0,.2);border-style:solid;border-width:1px;-webkit-border-radius:0 0 5px 5px;-moz-border-radius:0 0 5px 5px;border-radius:0 0 5px 5px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip
:padding-box;*border-right-width:2px;*border-bottom-width:2px}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:8px 1px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #fff;*width:100%;*margin:-5px 0 5px}.dropdown-menu a{display:block;padding:3px 15px;clear:both;font-weight:400;line-height:18px;color:#333;white-space:nowrap}.dropdown-menu .active>a,.dropdown-menu .active>a:hover,.dropdown-menu li>a:hover{color:#fff;text-decoration:none;background-color:#08c}.dropdown.open{*z-index:1000}.dropdown.open .dropdown-toggle{color:#fff;background:#ccc;background:rgba(0,0,0,.3)}.dropdown.open .dropdown-menu{display:block}.pull-right .dropdown-menu{left:auto;right:0}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid #000;content:"\2191"}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}.dropdownContainingSubmenu .dropdown-menu{padding:0;margin-t
op:-4px;min-width:auto;background-color:#fff;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:4px 4px 16px rgba(0,0,0,.25);-moz-box-shadow:4px 4px 16px rgba(0,0,0,.25);box-shadow:4px 4px 16px rgba(0,0,0,.25);border-width:1px;border-top-width:4px;border-color:#bb2d16}.dropdownContainingSubmenu .dropdown-menu a{color:#494949;padding:7px 10px}.dropdownContainingSubmenu .dropdown-menu a:hover{color:#fff;background-color:#f03800}.dropdownContainingSubmenu .dropdown-menu .nav-header{background-color:#f0f0f0;margin-top:0;padding-left:10px}.dropdownContainingSubmenu .dropdown-menu .divider{margin:0}.navbar .dropdown-menu:after,.navbar .dropdown-menu:before{content:normal}#globalNav{margin-left:20px;background-color:transparent}#globalNav .dropdown-toggle{border-radius:3px;padding-top:3px;padding-bottom:3px;margin-top:7.5px;margin-bottom:7.5px}#globalNav .dropdown-toggle :hover{background-color:transparent}#globalNav.active .caret{opacity:.7}#globalNav.active :
hover .caret{opacity:1}#globalNav ul ul a{border-left:1px solid #bb2d16}#globalNav ul ul li{position:relative}#globalNav ul ul li:first-child{border-bottom:1px solid #bb2d16}#globalNav ul ul a:before{content:"";width:6px;height:32px;position:absolute;left:-6px;top:0}#globalNav ul ul .active a:before,#globalNav ul ul .active a:hover:before{background-image:url(images/triangleMenuItem_right.png)}#globalNav ul ul:hover a:before{background-image:none}#globalNav ul ul a:hover:before{background-image:url(images/triangleMenuItem_right_hover.png)}#globalNav ul ul li a:hover{border-color:transparent}#globalNav .dropdown-menu{width:400px}#globalNavDetail{padding:20px 10px 0;width:250px;height:100%;position:relative;top:0}#globalNavDetail>div{display:none;color:graytext;background-image:none;background-repeat:no-repeat;background-position:0 0;min-height:64px}#globalNavDetail>div.open{display:inline-block}#globalNavDetail>div .globalNavDetailApigeeLogo,#globalNavDetail>div .globalNavDetailDescr
iption,#globalNavDetail>div .globalNavDetailSubtitle,#globalNavDetail>div .globalNavDetailTitle{margin-left:80px}#globalNavDetail>div .globalNavDetailSubtitle{font-size:10px;text-transform:uppercase}#globalNavDetail>div .globalNavDetailTitle{margin-top:5px;font-size:20px}#globalNavDetail>div .globalNavDetailDescription{margin-top:10px;line-height:17px;font-style:oblique}#globalNavDetail #globalNavDetailApigeeHome{margin-top:-10px;background-image:url(img/appswitcher/home_lg.png)}#globalNavDetail #globalNavDetailApigeeHome .globalNavDetailApigeeLogo{margin-top:10px;background-image:url(img/appswitcher/logo_color.png);width:116px;height:40px}#globalNavDetail #globalNavDetailAppServices{background-image:url(img/appswitcher/appServices_lg.png)}#globalNavDetail #globalNavDetailApiPlatform{background-image:url(img/appswitcher/apiPlatform_lg.png)}#globalNavDetail #globalNavDetailMobileAnalytics{background-image:url(img/appswitcher/max_lg.png)}#globalNavDetail #globalNavDetailApiConsoles{ba
ckground-image:url(img/appswitcher/console_lg.png)}#globalNavSubmenuContainer{float:right}#globalNavSubmenuContainer ul{margin-left:0}.ng-cloak,.x-ng-cloak,[data-ng-cloak],[ng-cloak],[ng\:cloak],[x-ng-cloak]{display:none}html{min-height:100%;position:relative;margin:0 auto;background:#fff;min-width:1100px}body{padding:0;background-color:#fff;font-family:marquette-light,'Helvetica Neue',Helvetica,Arial,sans-serif;height:100%;max-height:100%;overflow-x:hidden}a{cursor:pointer}@font-face{font-family:entypo;src:url(entypo/entypo.eot);src:url(entypo/entypo.eot?#iefix) format('embedded-opentype'),url(entypo/entypo.woff) format('woff'),url(entypo/entypo.ttf) format('truetype'),url(entypo/entypo.svg#entypo) format('svg');font-weight:400;font-style:normal}@font-face{font-family:marquette-medium;src:url(arsmarquette/ARSMaquettePro-Medium.otf),url(arsmarquette/ARSMaquettePro-Medium.otf) format('opentype')}@font-face{font-family:marquette-regular;src:url(arsmarquette/ARSMaquettePro-Regular.otf)
,url(arsmarquette/ARSMaquettePro-Regular.otf) format('opentype')}@font-face{font-family:marquette-light;src:url(arsmarquette/ARSMaquettePro-Light.otf),url(arsmarquette/ARSMaquettePro-Light.otf) format('opentype')}.bold{font-family:marquette-medium}.main-content{background-color:#fff;margin:0 0 0 200px}.side-menu{position:absolute;top:51px;left:0;bottom:0;width:200px;float:left;background-color:#eee}footer{padding-top:20px;clear:both}.zero-out{padding:0;text-shadow:none;background-color:transparent;background-image:none;border:0;box-shadow:none;outline:0}.modal-body{overflow-y:visible}.demo-holder{margin:0 -20px 0 -20px;position:relative}.alert-holder{position:fixed;right:0;margin:20px 20px 0 0;z-index:10500;width:302px}.alert,.alert.alert-demo{padding:9px 35px 5px 14px;margin-bottom:3px;text-shadow:0 1px 0 rgba(255,255,255,.5);background-color:#eee;border:1px solid #eee;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-transition:all 1s ease;-moz-transition:all 1s
ease;transition:all 1s ease;height:0;overflow:hidden;line-height:0;float:right}.alert.alert-demo{float:none}.alert{width:0}.alert.alert-success{background-color:rgba(155,198,144,.31);color:#1f6719;border-left:2px solid #1f6719}.alert.alert-warning{background-color:rgba(239,172,37,.2);color:#efac25;border-left:2px solid #efac25}.alert.alert-info{background-color:rgba(27,151,209,.2);color:#1b97d1;border-left:2px solid #1b97d1}.alert.alert-error{background-color:rgba(255,3,3,.2);color:#ff0303;border-left:2px solid #ff0303}.alert.alert-animate.alert-demo{height:20px;line-height:normal;opacity:1;width:100%;-moz-box-shadow:inset 0 2px 13px #b8b8b8;-webkit-box-shadow:inset 0 2px 13px #b8b8b8;box-shadow:inset 0 2px 13px #b8b8b8}.alert.alert-animate{height:auto;line-height:normal;opacity:.9;width:300px}@-webkit-keyframes alert-out{from{opacity:1}to{-webkit-transform:translateY(500px);opacity:0}}@keyframes alert-out{from{opacity:1}to{transform:translateY(500px);opacity:0}}.fade-out{-webkit-a
nimation-name:alert-out;-webkit-animation-duration:1s;-webkit-animation-timing-function:step-stop;-webkit-animation-direction:normal;-webkit-animation-iteration-count:1;animation-name:alert-out;animation-duration:1s;animation-timing-function:step-stop;animation-direction:normal;animation-iteration-count:1;opacity:.9}.margin-35{margin-top:35px}.modal-footer{background-color:transparent}.baloon{margin:20px;padding:20px 30px;position:fixed;bottom:0;top:auto;border-style:solid;border-radius:2px;box-shadow:0 0 4px rgba(0,0,0,.8)}.baloon:after{content:"";position:absolute;width:10px;height:10px;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-o-transform:rotate(45deg);-ms-filter:"progid:DXImageTransform.Microsoft.Matrix(M11=0.7071067811865473, M12=-0.7071067811865477, M21=0.7071067811865477, M22=0.7071067811865473, SizingMethod='auto expand')"}.north.baloon:after{top:-6px;left:30px;border-top-style:solid;border-left-style:solid;box-shadow:-2px -2px 3px -1px rgba(0,0,0,.5)}.so
uth.baloon:after{bottom:-6px;left:30px;border-bottom-style:solid;border-right-style:solid;box-shadow:2px 2px 3px -1px rgba(0,0,0,.5)}.left.baloon:after{top:10px;left:-6px;border-bottom-style:solid;border-left-style:solid;box-shadow:-2px 2px 3px -1px rgba(0,0,0,.5)}.right.baloon:after{bottom:10px;right:-6px;border-top-style:solid;border-right-style:solid;box-shadow:2px -2px 3px -1px rgba(0,0,0,.5)}.baloon,.baloon:after{font-family:sans-serif;font-weight:700;border-color:#f7f7f7;border-width:1px;background-color:#3ac62f;color:#fff}#globalNav{float:right;margin:15px 8px 0 9px;list-style:none;width:114px}#globalNav ul{list-style:none}#globalNavDetail>div{display:none;color:graytext;background-image:none;background-repeat:no-repeat;background-position:0 0;min-height:64px}#globalNavDetail #globalNavDetailApiPlatform{background-image:url(../img/appswitcher/apiPlatform_lg.png)}#globalNavDetail #globalNavDetailAppServices{background-image:url(../img/appswitcher/appServices_lg.png)}#globalNav
Detail #globalNavDetailApigeeHome{margin-top:-10px;background-image:url(../img/appswitcher/home_lg.png)}#globalNavDetail #globalNavDetailApiConsoles{background-image:url(../img/appswitcher/console_lg.png)}#globalNavDetail #globalNavDetailApigeeHome .globalNavDetailApigeeLogo{margin-top:10px;background-image:url(../img/appswitcher/logo_color.png);width:116px;height:40px}#globalNavDetail>div .globalNavDetailSubtitle{font-size:10px;text-transform:uppercase}#globalNavDetail>div .globalNavDetailTitle{margin-top:5px;font-size:20px}#globalNavDetail>div .globalNavDetailDescription{margin-top:10px;line-height:17px;font-style:oblique}.navbar.navbar-static-top .dropdownContainingSubmenu .dropdown-menu a{color:#494949;padding:13px 10px}.navbar.navbar-static-top .dropdownContainingSubmenu .dropdown-menu .active a{color:#fff;background-color:#bb2d16}.navbar.navbar-static-top .dropdown-menu a{display:block;padding:3px 15px;clear:both;font-weight:400;line-height:18px;color:#333;white-space:nowrap}#
globalNav .dropdown-toggle{border-radius:3px;padding:3px 6px;margin:0}.dropdown-toggle{background-color:#bb2d16;padding:3px}.demo-holder .alert.alert-demo{background-color:rgba(196,196,196,.1);color:#777;padding:12px 35px 7px 14px}.demo-holder-content{position:absolute;right:50px}.demo-text{position:absolute;right:223px;left:0;padding:0 0 0 10px}.b{display:block}.toggle,.toggle-form{position:absolute;top:10px;right:173px;width:50px;height:23px;border-radius:100px;background-color:#ddd;overflow:hidden;box-shadow:inset 0 0 2px 1px rgba(0,0,0,.05)}.form-horizontal.configs .control-label{width:250px;padding:0 10px 0 0}.toggle-form{position:relative;right:auto;top:auto;display:inline-block}.toggle-form-label{display:inline-block}input[type=checkbox].check{position:absolute;display:block;cursor:pointer;top:0;left:0;width:100%;height:100%;opacity:0;z-index:6}.check:checked~.track{box-shadow:inset 0 0 0 20px #ff3b00}.toggle-form .check:checked~.track{box-shadow:inset 0 0 0 20px #82ce85}.che
ck:checked~.switch{right:2px;left:27px;transition:.4s ease;transition-property:left,right;transition-delay:.05s,0s}.switch{position:absolute;left:2px;top:2px;bottom:2px;right:27px;background-color:#fff;border-radius:36px;z-index:1;transition:.4s ease;transition-property:left,right;transition-delay:0s,.05s;box-shadow:0 1px 2px rgba(0,0,0,.2)}.track{position:absolute;left:0;top:0;right:0;bottom:0;transition:.4s ease;box-shadow:inset 0 0 0 2px rgba(0,0,0,.05);border-radius:40px}.add-app .pictogram,top-selector .pictogram{margin:0 3px 0 0}i.pictogram{font-family:entypo;display:inline-block;width:23px;margin:0 5px 0 0;font-size:2.5em;height:17px;line-height:.35;overflow:hidden;vertical-align:middle;padding:5px 0 0;font-style:normal;font-weight:100;-webkit-font-smoothing:antialiased}i.pictogram.sub{margin:0 0 0 10px;font-size:2.1em}i.pictogram.title{margin:0;font-size:2.1em}i.pictogram.chart{margin:0 0 0 3px;font-size:2.1em;line-height:.4em;height:.5em;width:100%}i.pictogram.apichart{marg
in:0 0 0 11px;font-size:2.1em;line-height:.4em;height:.5em;width:100%}[class*=" ma-icon-"],[class^=ma-icon-]{display:inline-block;width:23px;height:20px;margin:1px 3px 0 0;line-height:20px;vertical-align:text-top;background-image:url(../img/nav-sprites.png);background-position:14px 14px;background-repeat:no-repeat}[class*=" sdk-icon-"],[class^=sdk-icon-]{display:inline-block;width:32px;height:29px;margin:-3px 3px 0 0;line-height:32px;vertical-align:text-top;background-image:url(../img/sdk-sprites.png);background-position:14px 14px;background-repeat:no-repeat;cursor:pointer;overflow:hidden}[class*=" sdk-icon-large-"],[class^=sdk-icon-large-]{display:inline-block;width:86px;height:86px;margin:-3px 3px 0 0;line-height:32px;vertical-align:text-top;background-image:url(../img/sdk-sprites-large.png);background-position:14px 14px;background-repeat:no-repeat;border:1px solid #aaa;-moz-box-shadow:3px 3px 0 -1px #ccc;-webkit-box-shadow:3px 3px 0 -1px #ccc;box-shadow:3px 3px 0 -1px #ccc}.sdk-i
con-ios{background-position:-6px -4px}.sdk-icon-android{background-position:-59px -3px}.sdk-icon-js{background-position:-109px -4px}.sdk-icon-node{background-position:-154px -3px}.sdk-icon-ruby{background-position:-204px -3px}.sdk-icon-net{background-position:-256px -4px}.sdk-icon-large-ios{background-position:-6px -3px}.sdk-icon-large-android{background-position:-113px 0}.sdk-icon-large-js{background-position:-219px 0}.sdk-icon-large-node{background-position:-323px -3px}.sdk-icon-large-ruby{background-position:-431px 0}.sdk-icon-large-net{background-position:-537px -3px}body>header>.navbar{background-color:#ff3b00}body>header .navbar:first-child>a{height:22px;line-height:22px;padding:10px 20px 20px 13px}.navbar.navbar-static-top a{text-shadow:none;color:#fff}.navbar-text{color:#fff;margin:4px}.navbar-text .dropdown-menu a{color:#343434}.navbar-text.pull-left{margin-left:90px}.top-nav,ul.app-nav li,ul.org-nav li{background-color:#fff}.top-nav .btn-group{margin:9px 0 5px 5px}.nav .ap
p-selector .caret,.nav .app-selector:active .caret,.nav .app-selector:focus .caret,.nav .app-selector:hover .caret,.nav .org-selector .caret,.nav .org-selector:active .caret,.nav .org-selector:focus .caret,.nav .org-selector:hover .caret{border-top-color:#5f5f5f;border-bottom-color:transparent;margin-top:8px;position:absolute;right:10px}.org-options{margin:5px 2px -8px -5px;border-top:3px solid #e6e6e6;overflow:hidden}.navbar.secondary{margin:0 -20px 0 -21px;border-bottom:3px solid #e6e6e6}.navbar.secondary>.container-fluid{margin:0 -20px 0 -18px}.navbar.secondary .nav,.navbar.secondary>.container-fluid .nav-collapse.collapse.span9,.top-nav{margin:0}.top-nav>li,.top-nav>li>div{width:100%}.span9.button-area{margin-left:0}.navbar .nav a.btn-create i{margin:1px 0 0}.navbar .nav a.btn-create,.navbar .nav a.btn-create:hover{text-align:left;font-weight:400;color:#1b70a0;padding:0 0 0 10px;margin:4px 0 0 3px;display:block;width:140px;height:30px;line-height:30px;background-color:#f3f3f3}.n
avbar .nav a.btn-create:hover{color:#1b70a0}.navbar .nav a.btn-create:active{box-shadow:none}.sdks>ul>li.title label{color:#5f5f5f;font-size:15px;display:inline-block;padding:16px 0 0;line-height:6px;cursor:default}.sdks>ul>li.title a{color:#5f5f5f;font-size:15px;display:inline-block;padding:16px 0 0;line-height:6px}.sdks>ul{list-style:none;margin:0;height:32px;overflow:hidden}.sdks>ul>li{display:inline;margin:0 10px 0 0;line-height:11px}.navbar.secondary,.navbar.secondary .btn-group>.btn,.navbar.secondary .btn-group>.dropdown-menu,.side-menu .btn-group>.btn,.side-menu .dropdown-menu{text-transform:uppercase;font-family:marquette-regular,'Helvetica Neue',Helvetica,Arial,sans-serif;color:#5f5f5f;font-size:14px;-webkit-font-smoothing:antialiased}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover,.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover,.dropdown-submenu:focus>a,.dropdown-submenu:hover>a{text-decoration:none;color:#fff;background-color:#5f
5f5f;background-image:-moz-linear-gradient(top,#5f5f5f,#787878);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5f5f5f),to(#787878));background-image:-webkit-linear-gradient(top,#5f5f5f,#787878);background-image:-o-linear-gradient(top,#5f5f5f,#787878);background-image:linear-gradient(to bottom,#5f5f5f,#787878);background-repeat:repeat-x}.btn-group.open .btn.dropdown-toggle.top-selector,.top-selector,.top-selector:active,.top-selector:focus,.top-selector:hover{color:#5f5f5f;padding:0;text-shadow:none;background-color:transparent;background-image:none;border:0;box-shadow:none;outline:0;width:100%;text-align:left}.dialog-body{padding:20px}h1.title{font-size:1.3em;font-family:marquette-medium,"Helvetica Neue",sans-serif;color:#686868;line-height:17px;display:inline-block;padding:0 10px 0 0}h2.title{text-transform:uppercase;font-size:1.2em;border-top:2px solid #eee;color:#828282}h2.title.chart{margin:10px 0 20px 10px;z-index:101;position:absolute;top:0;left:0;right:0}h3.title{t
ext-transform:uppercase;font-size:1.1em}.sidebar-nav .nav-list{padding:0}.nav-list .nav-header,.sidebar-nav .nav-list>li>a{margin-right:0}.sidebar-nav .nav-list.trans{max-height:100000px;-webkit-transition:all .5s ease;-moz-transition:all .5s ease;transition:all .5s ease;display:block;opacity:0}.sidebar-nav .nav-list li a{padding:10px 0 10px 25px;color:#5f5f5f;text-shadow:none;background-color:#eee;font-size:14px;text-transform:uppercase;position:relative}.sidebar-nav .nav-list li a.org-overview{background-color:#fff;font-family:marquette-light,'Helvetica Neue',Helvetica,Arial,sans-serif}.sidebar-nav .nav-list li a.org-overview:hover{color:#5f5f5f}.sidebar-nav .nav-list:first-child>li{margin:0;height:39px;overflow:hidden}.sidebar-nav .nav-list:first-child>li.active{height:auto;overflow:visible}.sidebar-nav .nav-list:first-child>li>ul>li>a{color:#5f5f5f}.sidebar-nav .nav-list:first-child>li.active>a,.sidebar-nav .nav-list:first-child>li>a:focus,.sidebar-nav .nav-list:first-child>li>a
:hover{color:#fff;text-shadow:none;background-color:#1b70a0;margin:0 0 0 -15px}.sidebar-nav .nav-list:first-child li.active>ul>li>a{background-color:#fff}.sidebar-nav .nav-list li.option>ul{overflow:hidden;opacity:0;height:auto;display:block;-webkit-transition:all .5s ease;-moz-transition:all .5s ease;transition:all .5s ease;max-height:100000px}.sidebar-nav .nav-list li.option.active>ul{opacity:1}.sidebar-nav .nav-list li.active>ul>li a{border-bottom:1px solid #eee;color:#747474;text-transform:none;font-weight:300;padding:10px 0 10px 22px}.sidebar-nav .nav-list li.active>ul>li.active>a,.sidebar-nav .nav-list li.active>ul>li>a:focus,.sidebar-nav .nav-list li.active>ul>li>a:hover{color:#1b70a0;background:#fff url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAKCAYAAAB4zEQNAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIH
g6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYxIDY0LjE0MDk0OSwgMjAxMC8xMi8wNy0xMDo1NzowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNS4xIE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo1NkEzQ0Y1MUI0MjIxMUUyODZGN0I5RUE1NjAwQ0I0MCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo1NkEzQ0Y1MkI0MjIxMUUyODZGN0I5RUE1NjAwQ0I0MCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjU2QTNDRjRGQjQyMjExRTI4NkY3QjlFQTU2MDBDQjQwIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjU2QTNDRjUwQjQyMjExRTI4NkY3QjlFQTU2MDBDQjQwIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+poqUzgAAAG1JREFUeNpilC5YwIADqLNgEWQG4kYg9mNCk1AE4sNAXA3iIEuGAPF5ILaECYAkeYB
4DhCvBmJ+ZGNAkt+B+CkQ/0W3nAkqWA/EblBFKJIwsA+IDYF4BzZJEHgNxJ5AXAbEv1hwBEA3EK8BCDAAwgoRW2zTv6EAAAAASUVORK5CYII=) no-repeat;background-position:206px 16px;font-family:marquette-medium,'Helvetica Neue',Helvetica,Arial,sans-serif;border-bottom:1px solid #eee;text-shadow:none;-webkit-font-smoothing:antialiased}.sidebar-nav .nav-list li.option ul{list-style:none}.new-tag{border-radius:3px;display:inline-block;font-family:marquette-medium;font-size:.6em;background-color:rgba(26,26,26,.5);color:#fff;padding:3px;height:8px;line-height:8px;position:absolute;right:5px;top:13px}.sidebar-nav .nav-list li:active a{background-color:rgba(255,255,255,.5)}.app-creds dt{font-family:marquette-medium}.intro-container{position:relative;height:auto;-webkit-transition:all .5s ease-out;-moz-transition:all .5s ease-out;transition:all .5s ease-out;overflow:hidden}.sdk-intro{position:absolute;border:1px solid #aaa;background-color:#f4f4f4;-moz-box-shadow:inset 0 0 10px #ccc;-webkit-box-shadow:inset 0 0 10px #cc
c;box-shadow:inset 0 4px 10px #ccc;opacity:.4;top:0;left:6px;right:1px;bottom:0;height:auto;overflow:hidden}.sdk-intro-content{position:absolute;padding:10px 40px 10px 10px;top:0;left:6px;right:-20px;bottom:0;height:auto;overflow:auto}.sdk-intro-content .btn.normal{margin:19px 10px 0 0}.keys-creds h2{margin-bottom:-2px}.user-list{padding:0;margin:0;list-style:none;min-height:450px;float:left;width:100%}.user-list li{padding:10px;border-bottom:1px solid #c5c5c5;cursor:pointer}.user-list li .label{margin:0 0 0 22px}.user-list li input{margin:0 10px 0 0}.user-list li.selected{background-color:#eee}#user-panel{margin-top:20px}.user-col{border-right:1px solid #c5c5c5;-moz-box-shadow:inset -27px 1px 6px -27px #b8b8b8;-webkit-box-shadow:inset -27px 1px 6px -27px #b8b8b8;box-shadow:inset -27px 1px 6px -27px #b8b8b8}.user-profile-picture{width:40px;height:40px}.content-page>.well{padding:10px;height:40px}.table-header td{font-weight:800;color:#000}.user-header-title{font-size:13px;font-famil
y:marquette-regular,'Helvetica Neue',Helvetica,Arial,sans-serif}.tabbable>.tab-content{overflow:visible}.button-strip{float:right;margin-bottom:10px}a.notifications-links{color:#1b97d1}.notifications-header{height:50px;background-color:#eee;padding:10px;border-bottom:1px solid #aaa;position:relative;overflow:hidden}.groups-row td.details,.notifications-row td.details,.roles-row td.details,.users-row td.details{line-height:25px!important;border-right:1px solid #e5e5e5}.nav-tabs>li{cursor:pointer}.login-content{position:absolute;top:91px;bottom:0;left:0;right:0;background-color:#fff;padding:9% 0 0 32%}.login-content form{margin:0}.login-content form h1{padding:10px 0 5px 20px}.login-holder{width:450px;border:1px solid #e5e5e5}.login-holder .form-actions{padding-left:30px;margin-bottom:0}.login-holder .form-actions .submit{padding:0 30px 0 0}.login-content .extra-actions{margin-top:10px;padding-left:30px;margin-bottom:0}.login-content .extra-actions .submit{padding:0 30px 0 0}.login-co
ntent .extra-actions .submit a{margin-left:3px;margin-right:3px}.signUp-content{position:absolute;top:91px;bottom:0;left:0;right:0;background-color:#fff;padding:9% 0 0 32%}.signUp-content form{margin:0}.signUp-content form h1{padding:10px 0 5px 20px}.signUp-holder{width:450px;border:1px solid #e5e5e5}.signUp-holder .form-actions{margin-bottom:0}.signUp-holder .form-actions .submit{padding:0 30px 0 0}.table.collection-list{border:1px solid #eee}.formatted-json,.formatted-json ul{list-style:none}.formatted-json .key{font-family:marquette-medium}.formatted-json li{border-bottom:1px solid #eee;margin:3px 0}iframe[seamless]{background-color:transparent;border:0 none transparent;padding:0;overflow:visible;overflow-x:hidden;width:100%}.gravatar20{padding:7px 0 0 10px!important;margin:0;width:30px}#shell-panel *{font-family:monospace}#shell-panel .boxContent{font-family:monospace;font-size:14px;min-height:400px}#shell-panel input{font-family:monospace;overflow:auto;width:90%;margin-top:10px
}#shell-panel hr{margin:2px;border-color:#e1e1e1}form input.has-error{-webkit-animation:pulse-red 1s alternate infinite;-moz-animation:pulse-red 1s alternate infinite;border:1px solid rgba(255,3,3,.6)}.validator-error-message{color:#ff0303}@-webkit-keyframes pulse-red{0%{box-shadow:inset 0 0 5px 2px rgba(255,3,3,.1),0 0 5px 2px rgba(255,3,3,.3)}100%{box-shadow:inset 0 0 5px 2px rgba(255,3,3,.3),0 0 5px 2px rgba(255,3,3,.1)}}@-moz-keyframes pulse-red{0%{box-shadow:inset 0 0 5px 2px rgba(255,3,3,.1),0 0 5px 2px rgba(255,3,3,.3)}100%{box-shadow:inset 0 0 5px 2px rgba(255,3,3,.3),0 0 5px 2px rgba(255,3,3,.1)}}.modal-instructions{padding-top:5px;padding-bottom:5px}.dropdown-menu{width:100%}.modal{width:560px!important}.dropdown-backdrop{position:static}.title.with-icons a{display:inline-block;text-transform:lowercase;font-size:.8em;margin:0 5px 0 0}.span9.tab-content{margin:0}.span9.tab-content .content-page{padding:0 0 0 30px}.button-toolbar,.menu-toolbar{padding:10px 0;margin:0;width:1
00%}.menu-toolbar{padding:0 0 20px}.menu-toolbar>ul.inline{border-bottom:1px solid #c5c5c5;margin:0}.btn-group .filter-selector,.btn-group .filter-selector:active,.btn-group .filter-selector:focus,.btn-group .filter-selector:hover,.btn-group .filter-title,.btn-group .filter-title:active,.btn-group .filter-title:focus,.btn-group.open .btn.dropdown-toggle.filter-selector,.btn-group.open .btn.dropdown-toggle.filter-title,.btn-group>.filter-selector.btn:first-child,.btn-group>.filter-title.btn:first-child,.btn.btn-primary,.btn.normal,.modal-footer .btn{color:#fff;padding:3px 9px;text-shadow:none;background-color:#494949;background-image:none;border:1px solid #c5c5c5;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;border-bottom-left-radius:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;box-shadow:none}ul.inline>li.tab{margin:0;padding:0}li.tab .btn.btn-primary{background-color:#eee;border:0;color:#494949;box-shadow:none;margin:0 -1px -1px -1px;padding:3px 19px 3
px 16px;border-bottom:1px solid #c5c5c5}ul.inline>li.tab.selected{margin:0 0 -1px 0;border-bottom:1px solid #fff}li.tab.selected .btn.btn-primary.toolbar{color:#494949;border-left:1px solid #c5c5c5;border-right:1px solid #c5c5c5;border-top:1px solid #c5c5c5;border-bottom:0;background-color:#fff}.btn-group.compare .filter-selector.btn:first-child,.btn.btn-primary.toolbar{color:#494949;background-color:#f1f1f1}li.selected .btn.btn-primary.toolbar{color:#fff;border:1px solid #1b70a0;background-color:#1b70a0}.btn.cancel,.btn.cancel:hover,.btn.normal.white,.btn.normal.white:hover{background-color:#fff;color:#5f5f5f}.btn-group .filter-selector:active,.btn-group .filter-title:hover,.btn-group.selected .filter-selector,.btn-group.selected>.filter-selector.btn:first-child,.btn.btn-primary:active,.btn.btn-primary:hover,.btn.normal:hover,.modal-footer .btn:active,.modal-footer .btn:hover{color:#fff;border:1px solid #1b70a0;background-color:#1b70a0}.btn-group .filter-selector .caret{margin:8px
0 0 10px;border-top:4px solid #fff;border-right:4px solid transparent;border-left:4px solid transparent}.btn-group.header-button{margin:4px 0 0;text-transform:none}.page-filters{padding:0;margin:10px 0}.dropdown-menu{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;z-index:102}.modal{position:fixed;top:10%;left:50%;margin-left:-280px;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,.3);*border:1px solid #999;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:0 3px 7px rgba(0,0,0,.3);-moz-box-shadow:0 3px 7px rgba(0,0,0,.3);box-shadow:0 3px 7px rgba(0,0,0,.3);-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box;outline:0}.modal.fade{z-index:-200}.modal.fade.in{z-index:1050}.auto-update-container{padding:10px 0 0}.auto-updates{margin:0 10px 0 0}.super-help{font-size:9pt;vertical-align:super}.help_tooltip{font-size:9pt;text-transform:none}.helpButton{font-family:Helvetica,Arial,s
ans-serif;font-size:13px;font-weight:300;padding:5px 8px;text-align:center;vertical-align:middle;color:#ffd6ca;border:1px solid #ffbfab;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;background-color:#ff3b00;width:110px;outline:0}.helpButton:hover{cursor:pointer;background-color:#FFB7A5;color:#dc3300;-webkit-transition:background-color .1s;-moz-transition:background-color .1s;-o-transition:background-color .1s;transition:background-color .1s}.helpButtonClicked{background-color:#FFB7A5;color:#dc3300;outline:0}.introjs-overlay{background:0 0;filter:none;-ms-filter:"alpha(Opacity=20)";filter:alpha(opacity=20);background-color:#fff;opacity:.2}.introjs-helperLayer{border-radius:0;box-shadow:none;border:1px solid rgba(0,0,0,.25)}.introjs-helperNumberLayer{top:-12px;left:-12px;font-family:"Open Sans",Arial,sans-serif;font-weight:400;border:0;filter:none;filter:none;box-shadow:none}.introjs-arrow{border:10px solid #fff}.introjs-arrow.top{top:-20px;border-bottom-color:#6d
bce3}.introjs-arrow.right{right:-20px;top:20px;border-left-color:#6dbce3}.introjs-arrow.bottom{bottom:-20px;border-top-color:#6dbce3}.introjs-arrow.left{left:-20px;top:20px;border-right-color:#6dbce3}.introjs-arrow:before{border:10px solid #fff;content:'';position:absolute}.introjs-arrow.top:before{top:-8px;left:-10px;border-top-color:transparent;border-right-color:transparent;border-bottom-color:#F0F8FC;border-left-color:transparent}.introjs-arrow.right:before{right:-7px;top:-10px;border-top-color:transparent;border-right-color:transparent;border-bottom-color:transparent;border-left-color:#F0F8FC}.introjs-arrow.bottom:before{bottom:-9px;left:-10px;border-top-color:#F0F8FC;border-right-color:transparent;border-bottom-color:transparent;border-left-color:transparent}.introjs-arrow.left:before{left:-7px;top:-10px;border-top-color:transparent;border-right-color:#F0F8FC;border-bottom-color:transparent;border-left-color:transparent}.introjs-tooltip{background-color:#F0F8FC;border-radius:0
;border:1px solid #6dbce3;box-shadow:0 1px 7px rgba(0,0,0,.3)}.introjs-button{text-shadow:none;font:12px/normal sans-serif;color:#1f77a3;background-color:#F0F8FC;background-image:none;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px;border:1px solid #d4d4d4}.introjs-button:hover{font-family:"Open Sans",Arial,sans-serif}.introjs-button:active,.introjs-button:focus{text-decoration:none;outline:0}.introjs-skipbutton{color:#1f77a3;text-decoration:none;font-family:"Open Sans",Arial,sans-serif;margin-right:32px;border:1px solid #6dbce3}.introjs-nextbutton{text-decoration:none;font-family:"Open Sans",Arial,sans-serif;width:40px;margin-left:3px}.introjs-prevbutton{text-decoration:none;font-family:"Open Sans",Arial,sans-serif;width:40px}.introjs-nextbutton,.introjs-nextbutton:active,.introjs-nextbutton:focus,.introjs-nextbutton:hover{background-image:url(../img/introjs_arrow_step_next.png);background-position:45px 5px;background-repeat:no-repeat;text-align:left;border:1px s
olid #6dbce3}.introjs-prevbutton,.introjs-prevbutton:active,.introjs-prevbutton:focus,.introjs-prevbutton:hover{background-image:url(../img/introjs_arrow_step_prev.png);background-position:2px 5px;background-repeat:no-repeat;text-align:right;border:1px solid #6dbce3}.introjs-nextbutton.introjs-disabled,.introjs-nextbutton.introjs-disabled:active,.introjs-nextbutton.introjs-disabled:focus,.introjs-nextbutton.introjs-disabled:hover{background-image:url(../img/introjs_arrow_step_next_disabled.png);background-position:48px 5px;background-repeat:no-repeat;text-align:left;border:1px solid #d4d4d4}.introjs-prevbutton.introjs-disabled,.introjs-prevbutton.introjs-disabled:active,.introjs-prevbutton.introjs-disabled:focus,.introjs-prevbutton.introjs-disabled:hover{background-image:url(../img/introjs_arrow_step_prev_disabled.png);background-position:2px 5px;background-repeat:no-repeat;text-align:right;border:1px solid #d4d4d4}.introjs-disabled,.introjs-disabled:focus,.introjs-disabled:hover{co
lor:gray;background-color:#F0F8FC}.introjs-tooltiptext{font-size:13px;line-height:19px}.introjstooltipheader{font-size:13px;line-height:19px;font-family:marquette-medium,'Helvetica Neue',Helvetica,Arial,sans-serif}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/b73da256/portal/css/main.css
----------------------------------------------------------------------
diff --git a/portal/css/main.css b/portal/css/main.css
index 9c8ab5d..ffdaebb 100644
--- a/portal/css/main.css
+++ b/portal/css/main.css
@@ -1912,8 +1912,8 @@ li.selected .btn.btn-primary.toolbar {
.introjs-nextbutton:focus,
.introjs-nextbutton:active,
.introjs-nextbutton:hover {
- background-image: url("img/introjs_arrow_step_next.png");
- background-position: 48px 5px;
+ background-image: url("../img/introjs_arrow_step_next.png");
+ background-position: 45px 5px;
background-repeat: no-repeat;
text-align: left;
border: 1px solid #6dbce3;
@@ -1923,7 +1923,7 @@ li.selected .btn.btn-primary.toolbar {
.introjs-prevbutton:focus,
.introjs-prevbutton:active,
.introjs-prevbutton:hover {
- background-image: url("img/introjs_arrow_step_prev.png");
+ background-image: url("../img/introjs_arrow_step_prev.png");
background-position: 2px 5px;
background-repeat: no-repeat;
text-align: right;
@@ -1934,7 +1934,7 @@ li.selected .btn.btn-primary.toolbar {
.introjs-nextbutton.introjs-disabled:active,
.introjs-nextbutton.introjs-disabled:hover,
.introjs-nextbutton.introjs-disabled:focus {
- background-image: url("img/introjs_arrow_step_next_disabled.png");
+ background-image: url("../img/introjs_arrow_step_next_disabled.png");
background-position: 48px 5px;
background-repeat: no-repeat;
text-align: left;
@@ -1945,7 +1945,7 @@ li.selected .btn.btn-primary.toolbar {
.introjs-prevbutton.introjs-disabled:active,
.introjs-prevbutton.introjs-disabled:hover,
.introjs-prevbutton.introjs-disabled:focus {
- background-image: url("img/introjs_arrow_step_prev_disabled.png");
+ background-image: url("../img/introjs_arrow_step_prev_disabled.png");
background-position: 2px 5px;
background-repeat: no-repeat;
text-align: right;
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/b73da256/portal/js/usergrid-dev.min.js
----------------------------------------------------------------------
diff --git a/portal/js/usergrid-dev.min.js b/portal/js/usergrid-dev.min.js
index 6611d35..87fd017 100644
--- a/portal/js/usergrid-dev.min.js
+++ b/portal/js/usergrid-dev.min.js
@@ -1,4 +1,4 @@
-/*! usergrid@2.0.1 2014-03-28 */
+/*! usergrid@2.0.1 2014-03-31 */
(function(exports, global) {
global["true"] = exports;
"use strict";
[4/9] git commit: merging upstream
Posted by sn...@apache.org.
merging upstream
Project: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/commit/09611d5b
Tree: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/tree/09611d5b
Diff: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/diff/09611d5b
Branch: refs/heads/master
Commit: 09611d5b18358f9b1c26bf735f1e4a817130c825
Parents: b73da25 d5b6c97
Author: amuramoto <am...@apigee.com>
Authored: Mon Mar 31 13:18:10 2014 -0700
Committer: amuramoto <am...@apigee.com>
Committed: Mon Mar 31 13:18:10 2014 -0700
----------------------------------------------------------------------
.gitignore | 2 +-
bower.json | 39 +
portal/Gruntfile.js | 61 +-
portal/bower.json | 24 +-
portal/config.js | 45 +-
portal/dist/appsvc-ui.2.0.1.zip | Bin 16937328 -> 0 bytes
.../bower_components/angular-intro.js/LICENSE | 20 +
.../angular-intro.js/angular-intro.js | 60 +
.../angular-intro.js/bower.json | 20 +
.../angular-intro.js/build/angular-intro.min.js | 1 +
.../angular-intro.js/example/app.js | 51 +
.../angular-intro.js/lib/app.js | 49 +
.../angular-intro.js/lib/intro.min.js | 20 +
.../angular-intro.js/lib/introjs.css | 216 +
.../2.0.2/bower_components/angular/README.md | 48 +
.../bower_components/angular/angular-csp.css | 18 +
.../2.0.2/bower_components/angular/angular.js | 21734 +++++++++++
.../bower_components/angular/angular.min.js | 211 +
.../angular/angular.min.js.gzip | Bin 0 -> 38778 bytes
.../bower_components/angular/angular.min.js.map | 8 +
.../2.0.2/bower_components/angular/bower.json | 7 +
.../bower_components/angularitics/Gruntfile.js | 62 +
.../2.0.2/bower_components/angularitics/LICENSE | 22 +
.../bower_components/angularitics/README.md | 115 +
.../bower_components/angularitics/bower.json | 12 +
.../dist/angulartics-chartbeat.min.js | 7 +
.../dist/angulartics-ga-cordova.min.js | 6 +
.../angularitics/dist/angulartics-ga.min.js | 7 +
.../dist/angulartics-google-analytics.min.js | 7 +
.../dist/angulartics-kissmetrics.min.js | 6 +
.../dist/angulartics-mixpanel.min.js | 7 +
.../angularitics/dist/angulartics-scroll.min.js | 14 +
.../dist/angulartics-segmentio.min.js | 6 +
.../angularitics/dist/angulartics.min.js | 6 +
.../bower_components/angularitics/karma.conf.js | 22 +
.../bower_components/angularitics/package.json | 43 +
.../angularitics/samples/chartbeat.html | 79 +
.../angularitics/samples/google-analytics.html | 68 +
.../angularitics/samples/kissmetrics.html | 75 +
.../angularitics/samples/mixpanel.html | 65 +
.../angularitics/samples/partials/a.tpl.html | 1 +
.../angularitics/samples/partials/b.tpl.html | 1 +
.../angularitics/samples/partials/c.tpl.html | 1 +
.../angularitics/samples/partials/root.tpl.html | 1 +
.../angularitics/samples/scroll.html | 82 +
.../angularitics/samples/segmentio.html | 65 +
.../angularitics/src/angulartics-chartbeat.js | 29 +
.../angularitics/src/angulartics-ga-cordova.js | 91 +
.../angularitics/src/angulartics-ga.js | 32 +
.../angularitics/src/angulartics-kissmetrics.js | 29 +
.../angularitics/src/angulartics-mixpanel.js | 29 +
.../angularitics/src/angulartics-scroll.js | 47 +
.../angularitics/src/angulartics-segmentio.js | 24 +
.../angularitics/src/angulartics.js | 132 +
.../angularitics/test/angularticsSpec.js | 38 +
.../2.0.2/bower_components/apigee-sdk/apigee.js | 3260 ++
.../bower_components/apigee-sdk/apigee.min.js | 3 +
.../bower_components/apigee-sdk/bower.json | 13 +
.../samples/collections/css/apigee.min.css | 213 +
.../collections/css/jquery.mobile.icons.min.css | 3 +
.../samples/collections/css/theme.min.css | 213 +
.../apigee-sdk/samples/collections/js/index.js | 360 +
.../entities/css/jquery.mobile.icons.min.css | 3 +
.../samples/entities/css/theme.min.css | 213 +
.../apigee-sdk/samples/entities/js/index.js | 228 +
.../geolocation/css/jquery.mobile.icons.min.css | 3 +
.../samples/geolocation/css/theme.min.css | 213 +
.../apigee-sdk/samples/geolocation/js/index.js | 133 +
.../apigee-sdk/samples/messagee/app.js | 634 +
.../samples/messagee/usergrid.validation.js | 249 +
.../samples/push/android/AndroidManifest.xml | 79 +
.../samples/push/android/ant.properties | 17 +
.../push/android/assets/www/PushNotification.js | 65 +
.../push/android/assets/www/cordova-2.7.0.js | 6836 ++++
.../push/android/assets/www/css/index.css | 115 +
.../push/android/assets/www/img/cordova.png | Bin 0 -> 19932 bytes
.../push/android/assets/www/img/logo.png | Bin 0 -> 21814 bytes
.../samples/push/android/assets/www/js/index.js | 241 +
.../samples/push/android/assets/www/main.js | 165 +
.../samples/push/android/assets/www/master.css | 116 +
.../screen/android/screen-hdpi-landscape.png | Bin 0 -> 218302 bytes
.../res/screen/android/screen-hdpi-portrait.png | Bin 0 -> 222148 bytes
.../screen/android/screen-ldpi-landscape.png | Bin 0 -> 42616 bytes
.../res/screen/android/screen-ldpi-portrait.png | Bin 0 -> 42034 bytes
.../screen/android/screen-mdpi-landscape.png | Bin 0 -> 92347 bytes
.../res/screen/android/screen-mdpi-portrait.png | Bin 0 -> 90555 bytes
.../screen/android/screen-xhdpi-landscape.png | Bin 0 -> 489604 bytes
.../screen/android/screen-xhdpi-portrait.png | Bin 0 -> 504508 bytes
.../samples/push/android/assets/www/spec.html | 68 +
.../push/android/assets/www/spec/helper.js | 33 +
.../push/android/assets/www/spec/index.js | 67 +
.../www/spec/lib/jasmine-1.2.0/MIT.LICENSE | 20 +
.../www/spec/lib/jasmine-1.2.0/jasmine-html.js | 616 +
.../www/spec/lib/jasmine-1.2.0/jasmine.css | 81 +
.../www/spec/lib/jasmine-1.2.0/jasmine.js | 2529 ++
.../apigee-sdk/samples/push/android/build.xml | 92 +
.../samples/push/android/cordova/appinfo.jar | Bin 0 -> 1574 bytes
.../samples/push/android/cordova/build | 24 +
.../samples/push/android/cordova/clean | 24 +
.../samples/push/android/cordova/cordova | 159 +
.../apigee-sdk/samples/push/android/cordova/log | 24 +
.../samples/push/android/cordova/release | 24 +
.../apigee-sdk/samples/push/android/cordova/run | 24 +
.../push/android/libs/android-support-v13.jar | Bin 0 -> 402581 bytes
.../samples/push/android/libs/cordova-2.7.0.jar | Bin 0 -> 256941 bytes
.../samples/push/android/libs/gcm.jar | Bin 0 -> 13662 bytes
.../samples/push/android/proguard-project.txt | 20 +
.../samples/push/android/project.properties | 14 +
.../android/res/drawable-hdpi/ic_launcher.png | Bin 0 -> 9397 bytes
.../push/android/res/drawable-hdpi/icon.png | Bin 0 -> 6080 bytes
.../android/res/drawable-ldpi/ic_launcher.png | Bin 0 -> 2729 bytes
.../push/android/res/drawable-ldpi/icon.png | Bin 0 -> 3096 bytes
.../android/res/drawable-mdpi/ic_launcher.png | Bin 0 -> 5237 bytes
.../push/android/res/drawable-mdpi/icon.png | Bin 0 -> 4090 bytes
.../android/res/drawable-xhdpi/ic_launcher.png | Bin 0 -> 14383 bytes
.../push/android/res/drawable-xhdpi/icon.png | Bin 0 -> 7685 bytes
.../samples/push/android/res/drawable/icon.png | Bin 0 -> 7685 bytes
.../samples/push/android/res/layout/main.xml | 13 +
.../samples/push/android/res/values/strings.xml | 4 +
.../samples/push/android/res/xml/config.xml | 62 +
.../plugin/gcm/CordovaGCMBroadcastReceiver.java | 19 +
.../src/com/plugin/gcm/GCMIntentService.java | 163 +
.../src/com/plugin/gcm/PushHandlerActivity.java | 66 +
.../android/src/com/plugin/gcm/PushPlugin.java | 216 +
.../src/me/mdob/android/androidpush.java | 36 +
.../samples/push/ios/CordovaLib/Classes/CDV.h | 57 +
.../ios/CordovaLib/Classes/CDVAccelerometer.h | 39 +
.../ios/CordovaLib/Classes/CDVAccelerometer.m | 128 +
.../ios/CordovaLib/Classes/CDVAvailability.h | 87 +
.../push/ios/CordovaLib/Classes/CDVBattery.h | 40 +
.../push/ios/CordovaLib/Classes/CDVBattery.m | 152 +
.../push/ios/CordovaLib/Classes/CDVCamera.h | 92 +
.../push/ios/CordovaLib/Classes/CDVCamera.m | 570 +
.../push/ios/CordovaLib/Classes/CDVCapture.h | 118 +
.../push/ios/CordovaLib/Classes/CDVCapture.m | 847 +
.../ios/CordovaLib/Classes/CDVCommandDelegate.h | 54 +
.../CordovaLib/Classes/CDVCommandDelegateImpl.h | 33 +
.../CordovaLib/Classes/CDVCommandDelegateImpl.m | 145 +
.../ios/CordovaLib/Classes/CDVCommandQueue.h | 40 +
.../ios/CordovaLib/Classes/CDVCommandQueue.m | 169 +
.../ios/CordovaLib/Classes/CDVConfigParser.h | 28 +
.../ios/CordovaLib/Classes/CDVConfigParser.m | 70 +
.../push/ios/CordovaLib/Classes/CDVConnection.h | 34 +
.../push/ios/CordovaLib/Classes/CDVConnection.m | 132 +
.../push/ios/CordovaLib/Classes/CDVContact.h | 136 +
.../push/ios/CordovaLib/Classes/CDVContact.m | 1752 +
.../push/ios/CordovaLib/Classes/CDVContacts.h | 151 +
.../push/ios/CordovaLib/Classes/CDVContacts.m | 593 +
.../push/ios/CordovaLib/Classes/CDVDebug.h | 25 +
.../ios/CordovaLib/Classes/CDVDebugConsole.h | 28 +
.../ios/CordovaLib/Classes/CDVDebugConsole.m | 37 +
.../push/ios/CordovaLib/Classes/CDVDevice.h | 30 +
.../push/ios/CordovaLib/Classes/CDVDevice.m | 90 +
.../push/ios/CordovaLib/Classes/CDVEcho.h | 23 +
.../push/ios/CordovaLib/Classes/CDVEcho.m | 61 +
.../push/ios/CordovaLib/Classes/CDVExif.h | 43 +
.../push/ios/CordovaLib/Classes/CDVFile.h | 106 +
.../push/ios/CordovaLib/Classes/CDVFile.m | 1409 +
.../ios/CordovaLib/Classes/CDVFileTransfer.h | 74 +
.../ios/CordovaLib/Classes/CDVFileTransfer.m | 625 +
.../ios/CordovaLib/Classes/CDVGlobalization.h | 150 +
.../ios/CordovaLib/Classes/CDVGlobalization.m | 790 +
.../ios/CordovaLib/Classes/CDVInAppBrowser.h | 88 +
.../ios/CordovaLib/Classes/CDVInAppBrowser.m | 581 +
.../CordovaLib/Classes/CDVInvokedUrlCommand.h | 57 +
.../CordovaLib/Classes/CDVInvokedUrlCommand.m | 140 +
.../push/ios/CordovaLib/Classes/CDVJSON.h | 30 +
.../push/ios/CordovaLib/Classes/CDVJSON.m | 77 +
.../CordovaLib/Classes/CDVJpegHeaderWriter.h | 62 +
.../CordovaLib/Classes/CDVJpegHeaderWriter.m | 522 +
.../ios/CordovaLib/Classes/CDVLocalStorage.h | 50 +
.../ios/CordovaLib/Classes/CDVLocalStorage.m | 485 +
.../push/ios/CordovaLib/Classes/CDVLocation.h | 104 +
.../push/ios/CordovaLib/Classes/CDVLocation.m | 623 +
.../push/ios/CordovaLib/Classes/CDVLogger.h | 26 +
.../push/ios/CordovaLib/Classes/CDVLogger.m | 38 +
.../ios/CordovaLib/Classes/CDVNotification.h | 37 +
.../ios/CordovaLib/Classes/CDVNotification.m | 126 +
.../push/ios/CordovaLib/Classes/CDVPlugin.h | 64 +
.../push/ios/CordovaLib/Classes/CDVPlugin.m | 152 +
.../ios/CordovaLib/Classes/CDVPluginResult.h | 68 +
.../ios/CordovaLib/Classes/CDVPluginResult.m | 224 +
.../ios/CordovaLib/Classes/CDVReachability.h | 85 +
.../ios/CordovaLib/Classes/CDVReachability.m | 260 +
.../Classes/CDVScreenOrientationDelegate.h | 28 +
.../push/ios/CordovaLib/Classes/CDVSound.h | 116 +
.../push/ios/CordovaLib/Classes/CDVSound.m | 699 +
.../ios/CordovaLib/Classes/CDVSplashScreen.h | 33 +
.../ios/CordovaLib/Classes/CDVSplashScreen.m | 225 +
.../ios/CordovaLib/Classes/CDVURLProtocol.h | 29 +
.../ios/CordovaLib/Classes/CDVURLProtocol.m | 230 +
.../ios/CordovaLib/Classes/CDVUserAgentUtil.h | 27 +
.../ios/CordovaLib/Classes/CDVUserAgentUtil.m | 120 +
.../ios/CordovaLib/Classes/CDVViewController.h | 73 +
.../ios/CordovaLib/Classes/CDVViewController.m | 931 +
.../ios/CordovaLib/Classes/CDVWebViewDelegate.h | 37 +
.../ios/CordovaLib/Classes/CDVWebViewDelegate.m | 171 +
.../push/ios/CordovaLib/Classes/CDVWhitelist.h | 36 +
.../push/ios/CordovaLib/Classes/CDVWhitelist.m | 192 +
.../CordovaLib/Classes/NSArray+Comparisons.h | 26 +
.../CordovaLib/Classes/NSArray+Comparisons.m | 41 +
.../push/ios/CordovaLib/Classes/NSData+Base64.h | 33 +
.../push/ios/CordovaLib/Classes/NSData+Base64.m | 281 +
.../Classes/NSDictionary+Extensions.h | 35 +
.../Classes/NSDictionary+Extensions.m | 159 +
.../Classes/NSMutableArray+QueueAdditions.h | 29 +
.../Classes/NSMutableArray+QueueAdditions.m | 58 +
.../CordovaLib/Classes/UIDevice+Extensions.h | 31 +
.../CordovaLib/Classes/UIDevice+Extensions.m | 47 +
.../Classes/compatibility/0.9.6/CDV.h | 30 +
.../Classes/compatibility/0.9.6/CDVPlugin.h | 46 +
.../Classes/compatibility/0.9.6/CDVPlugin.m | 29 +
.../Classes/compatibility/1.5.0/CDV.h | 32 +
.../Classes/compatibility/1.5.0/CDVPlugin.h | 23 +
.../CordovaLib/Classes/compatibility/README.txt | 23 +
.../CordovaLib.xcodeproj/project.pbxproj | 667 +
.../push/ios/CordovaLib/CordovaLib_Prefix.pch | 22 +
.../samples/push/ios/CordovaLib/VERSION | 1 +
.../apigee-sdk/samples/push/ios/cordova/build | 51 +
.../apigee-sdk/samples/push/ios/cordova/emulate | 55 +
.../apigee-sdk/samples/push/ios/cordova/log | 23 +
.../apigee-sdk/samples/push/ios/cordova/release | 51 +
.../apigee-sdk/samples/push/ios/cordova/run | 58 +
.../push/ios/iospush.xcodeproj/project.pbxproj | 623 +
.../push/ios/iospush/Classes/AppDelegate.h | 42 +
.../push/ios/iospush/Classes/AppDelegate.m | 122 +
.../ios/iospush/Classes/MainViewController.h | 40 +
.../ios/iospush/Classes/MainViewController.m | 174 +
.../ios/iospush/Classes/MainViewController.xib | 138 +
.../iospush/Plugins/AppDelegate+notification.h | 20 +
.../iospush/Plugins/AppDelegate+notification.m | 119 +
.../push/ios/iospush/Plugins/PushPlugin.h | 54 +
.../push/ios/iospush/Plugins/PushPlugin.m | 248 +
.../samples/push/ios/iospush/Plugins/README | 20 +
.../Resources/Capture.bundle/controls_bg.png | Bin 0 -> 955 bytes
.../Resources/Capture.bundle/controls_bg@2x.png | Bin 0 -> 971 bytes
.../Capture.bundle/controls_bg@2x~ipad.png | Bin 0 -> 2858 bytes
.../Capture.bundle/controls_bg~ipad.png | Bin 0 -> 969 bytes
.../microphone-568h@2x~iphone.png | Bin 0 -> 531673 bytes
.../Resources/Capture.bundle/microphone.png | Bin 0 -> 72226 bytes
.../Resources/Capture.bundle/microphone@2x.png | Bin 0 -> 282409 bytes
.../Capture.bundle/microphone@2x~ipad.png | Bin 0 -> 911582 bytes
.../Capture.bundle/microphone~ipad.png | Bin 0 -> 393975 bytes
.../Resources/Capture.bundle/record_button.png | Bin 0 -> 5852 bytes
.../Capture.bundle/record_button@2x.png | Bin 0 -> 13875 bytes
.../Capture.bundle/record_button@2x~ipad.png | Bin 0 -> 15822 bytes
.../Capture.bundle/record_button~ipad.png | Bin 0 -> 7547 bytes
.../Resources/Capture.bundle/recording_bg.png | Bin 0 -> 973 bytes
.../Capture.bundle/recording_bg@2x.png | Bin 0 -> 990 bytes
.../Capture.bundle/recording_bg@2x~ipad.png | Bin 0 -> 1026 bytes
.../Capture.bundle/recording_bg~ipad.png | Bin 0 -> 996 bytes
.../Resources/Capture.bundle/stop_button.png | Bin 0 -> 5514 bytes
.../Resources/Capture.bundle/stop_button@2x.png | Bin 0 -> 12965 bytes
.../Capture.bundle/stop_button@2x~ipad.png | Bin 0 -> 14474 bytes
.../Capture.bundle/stop_button~ipad.png | Bin 0 -> 7119 bytes
.../Resources/de.lproj/Localizable.strings | 26 +
.../Resources/en.lproj/Localizable.strings | 25 +
.../Resources/es.lproj/Localizable.strings | 25 +
.../ios/iospush/Resources/icons/icon-72.png | Bin 0 -> 4944 bytes
.../ios/iospush/Resources/icons/icon-72@2x.png | Bin 0 -> 11706 bytes
.../push/ios/iospush/Resources/icons/icon.png | Bin 0 -> 3902 bytes
.../ios/iospush/Resources/icons/icon@2x.png | Bin 0 -> 7869 bytes
.../Resources/se.lproj/Localizable.strings | 26 +
.../Resources/splash/Default-568h@2x~iphone.png | Bin 0 -> 34225 bytes
.../splash/Default-Landscape@2x~ipad.png | Bin 0 -> 77300 bytes
.../Resources/splash/Default-Landscape~ipad.png | Bin 0 -> 34935 bytes
.../splash/Default-Portrait@2x~ipad.png | Bin 0 -> 76546 bytes
.../Resources/splash/Default-Portrait~ipad.png | Bin 0 -> 34278 bytes
.../Resources/splash/Default@2x~iphone.png | Bin 0 -> 29475 bytes
.../iospush/Resources/splash/Default~iphone.png | Bin 0 -> 10394 bytes
.../samples/push/ios/iospush/config.xml | 65 +
.../samples/push/ios/iospush/iospush-Info.plist | 78 +
.../samples/push/ios/iospush/iospush-Prefix.pch | 26 +
.../apigee-sdk/samples/push/ios/iospush/main.m | 35 +
.../samples/push/ios/www/PushNotification.js | 65 +
.../samples/push/ios/www/cordova-2.6.0.js | 6433 ++++
.../samples/push/ios/www/css/index.css | 115 +
.../samples/push/ios/www/img/logo.png | Bin 0 -> 21814 bytes
.../apigee-sdk/samples/push/ios/www/js/index.js | 217 +
.../res/screen/ios/screen-ipad-landscape-2x.png | Bin 0 -> 1534088 bytes
.../res/screen/ios/screen-ipad-landscape.png | Bin 0 -> 407370 bytes
.../res/screen/ios/screen-ipad-portrait-2x.png | Bin 0 -> 1610434 bytes
.../www/res/screen/ios/screen-ipad-portrait.png | Bin 0 -> 422441 bytes
.../screen/ios/screen-iphone-landscape-2x.png | Bin 0 -> 339639 bytes
.../res/screen/ios/screen-iphone-landscape.png | Bin 0 -> 92301 bytes
.../screen/ios/screen-iphone-portrait-2x.png | Bin 0 -> 350593 bytes
.../res/screen/ios/screen-iphone-portrait.png | Bin 0 -> 93897 bytes
.../apigee-sdk/samples/push/ios/www/spec.html | 68 +
.../samples/push/ios/www/spec/helper.js | 33 +
.../samples/push/ios/www/spec/index.js | 67 +
.../ios/www/spec/lib/jasmine-1.2.0/MIT.LICENSE | 20 +
.../www/spec/lib/jasmine-1.2.0/jasmine-html.js | 616 +
.../ios/www/spec/lib/jasmine-1.2.0/jasmine.css | 81 +
.../ios/www/spec/lib/jasmine-1.2.0/jasmine.js | 2529 ++
.../samples/usersAndGroups/README.txt | 22 +
.../usersAndGroups/css/codiqa.ext.min.css | 1 +
.../usersAndGroups/css/images/ajax-loader.gif | Bin 0 -> 7825 bytes
.../css/images/icons-18-black.png | Bin 0 -> 1968 bytes
.../css/images/icons-18-white.png | Bin 0 -> 1988 bytes
.../css/images/icons-36-black.png | Bin 0 -> 3859 bytes
.../css/images/icons-36-white.png | Bin 0 -> 3861 bytes
.../css/jquery.mobile-1.3.1.min.css | 3 +
.../samples/usersAndGroups/js/codiqa.ext.min.js | 6 +
.../samples/usersAndGroups/js/index.js | 345 +
.../usersAndGroups/js/jquery-1.9.1.min.js | 5 +
.../js/jquery.mobile-1.3.1.min.js | 7 +
.../bower_components/apigee.max.ui/bower.json | 19 +
.../apigee.max.ui/dist/css/max.min.css | 1 +
.../apigee.max.ui/dist/img/no-data1.png | Bin 0 -> 45300 bytes
.../apigee.max.ui/dist/img/phone-small.gif | Bin 0 -> 1300 bytes
.../apigee.max.ui/dist/img/tablet-small.gif | Bin 0 -> 1390 bytes
.../apigee.max.ui/dist/js/max-dev.min.js | 1781 +
.../apigee.max.ui/dist/js/max.min.js | 4 +
.../bower_components/intro.js/BUILD/BUILD.js | 43 +
.../2.0.2/bower_components/intro.js/Makefile | 6 +
.../2.0.2/bower_components/intro.js/README.md | 487 +
.../2.0.2/bower_components/intro.js/bower.json | 9 +
.../bower_components/intro.js/component.json | 13 +
.../2.0.2/bower_components/intro.js/intro.js | 940 +
.../bower_components/intro.js/introjs-rtl.css | 22 +
.../2.0.2/bower_components/intro.js/introjs.css | 248 +
.../intro.js/minified/intro.min.js | 24 +
.../intro.js/minified/introjs-rtl.min.css | 1 +
.../intro.js/minified/introjs.min.css | 1 +
.../bower_components/intro.js/package.json | 17 +
.../jquery-waypoints/CHANGELOG.md | 92 +
.../jquery-waypoints/README.markdown | 47 +
.../jquery-waypoints/bower.json | 19 +
.../jquery-waypoints/licenses.txt | 23 +
.../jquery-waypoints/package.json | 19 +
.../infinite-scroll/waypoints-infinite.js | 67 +
.../infinite-scroll/waypoints-infinite.min.js | 8 +
.../sticky-elements/waypoints-sticky.js | 55 +
.../sticky-elements/waypoints-sticky.min.js | 8 +
.../jquery-waypoints/waypoints.js | 520 +
.../jquery-waypoints/waypoints.min.js | 8 +
.../bower_components/jquery/MIT-LICENSE.txt | 21 +
.../2.0.2/bower_components/jquery/bower.json | 27 +
.../bower_components/jquery/dist/jquery.js | 9174 +++++
.../bower_components/jquery/dist/jquery.min.js | 5 +
.../bower_components/jquery/dist/jquery.min.map | 1 +
.../2.0.2/bower_components/jquery/src/ajax.js | 806 +
.../bower_components/jquery/src/ajax/jsonp.js | 89 +
.../bower_components/jquery/src/ajax/load.js | 75 +
.../jquery/src/ajax/parseJSON.js | 13 +
.../jquery/src/ajax/parseXML.js | 28 +
.../bower_components/jquery/src/ajax/script.js | 64 +
.../jquery/src/ajax/var/nonce.js | 5 +
.../jquery/src/ajax/var/rquery.js | 3 +
.../bower_components/jquery/src/ajax/xhr.js | 135 +
.../bower_components/jquery/src/attributes.js | 11 +
.../jquery/src/attributes/attr.js | 143 +
.../jquery/src/attributes/classes.js | 158 +
.../jquery/src/attributes/prop.js | 96 +
.../jquery/src/attributes/support.js | 35 +
.../jquery/src/attributes/val.js | 163 +
.../bower_components/jquery/src/callbacks.js | 205 +
.../2.0.2/bower_components/jquery/src/core.js | 498 +
.../bower_components/jquery/src/core/access.js | 60 +
.../bower_components/jquery/src/core/init.js | 123 +
.../jquery/src/core/parseHTML.js | 39 +
.../bower_components/jquery/src/core/ready.js | 97 +
.../jquery/src/core/var/rsingleTag.js | 4 +
.../2.0.2/bower_components/jquery/src/css.js | 451 +
.../jquery/src/css/addGetHookIf.js | 24 +
.../bower_components/jquery/src/css/curCSS.js | 57 +
.../jquery/src/css/defaultDisplay.js | 70 +
.../jquery/src/css/hiddenVisibleSelectors.js | 15 +
.../bower_components/jquery/src/css/support.js | 91 +
.../bower_components/jquery/src/css/swap.js | 28 +
.../jquery/src/css/var/cssExpand.js | 3 +
.../jquery/src/css/var/getStyles.js | 5 +
.../jquery/src/css/var/isHidden.js | 13 +
.../jquery/src/css/var/rmargin.js | 3 +
.../jquery/src/css/var/rnumnonpx.js | 5 +
.../2.0.2/bower_components/jquery/src/data.js | 175 +
.../bower_components/jquery/src/data/Data.js | 181 +
.../bower_components/jquery/src/data/accepts.js | 20 +
.../jquery/src/data/var/data_priv.js | 5 +
.../jquery/src/data/var/data_user.js | 5 +
.../bower_components/jquery/src/deferred.js | 149 +
.../bower_components/jquery/src/deprecated.js | 13 +
.../bower_components/jquery/src/dimensions.js | 50 +
.../bower_components/jquery/src/effects.js | 647 +
.../jquery/src/effects/Tween.js | 114 +
.../jquery/src/effects/animatedSelector.js | 13 +
.../2.0.2/bower_components/jquery/src/event.js | 868 +
.../bower_components/jquery/src/event/alias.js | 39 +
.../jquery/src/event/support.js | 9 +
.../bower_components/jquery/src/exports/amd.js | 24 +
.../jquery/src/exports/global.js | 32 +
.../2.0.2/bower_components/jquery/src/intro.js | 44 +
.../2.0.2/bower_components/jquery/src/jquery.js | 36 +
.../bower_components/jquery/src/manipulation.js | 582 +
.../jquery/src/manipulation/_evalUrl.js | 18 +
.../jquery/src/manipulation/support.js | 31 +
.../src/manipulation/var/rcheckableType.js | 3 +
.../2.0.2/bower_components/jquery/src/offset.js | 204 +
.../2.0.2/bower_components/jquery/src/outro.js | 1 +
.../2.0.2/bower_components/jquery/src/queue.js | 142 +
.../bower_components/jquery/src/queue/delay.js | 22 +
.../jquery/src/selector-native.js | 172 +
.../jquery/src/selector-sizzle.js | 14 +
.../bower_components/jquery/src/selector.js | 1 +
.../bower_components/jquery/src/serialize.js | 111 +
.../jquery/src/sizzle/dist/sizzle.js | 2034 ++
.../jquery/src/sizzle/dist/sizzle.min.js | 3 +
.../jquery/src/sizzle/dist/sizzle.min.map | 1 +
.../bower_components/jquery/src/traversing.js | 200 +
.../jquery/src/traversing/findFilter.js | 100 +
.../jquery/src/traversing/var/rneedsContext.js | 6 +
.../bower_components/jquery/src/var/arr.js | 3 +
.../jquery/src/var/class2type.js | 4 +
.../bower_components/jquery/src/var/concat.js | 5 +
.../bower_components/jquery/src/var/hasOwn.js | 5 +
.../bower_components/jquery/src/var/indexOf.js | 5 +
.../bower_components/jquery/src/var/pnum.js | 3 +
.../bower_components/jquery/src/var/push.js | 5 +
.../jquery/src/var/rnotwhite.js | 3 +
.../bower_components/jquery/src/var/slice.js | 5 +
.../jquery/src/var/strundefined.js | 3 +
.../bower_components/jquery/src/var/support.js | 4 +
.../bower_components/jquery/src/var/toString.js | 5 +
.../bower_components/jquery/src/var/trim.js | 3 +
.../2.0.2/bower_components/jquery/src/wrap.js | 78 +
.../bower_components/sizzle/dist/sizzle.js | 2015 +
.../bower_components/sizzle/dist/sizzle.min.js | 3 +
.../bower_components/sizzle/dist/sizzle.min.map | 1 +
.../bower_components/sizzle/tasks/commit.js | 10 +
.../bower_components/sizzle/tasks/compile.js | 34 +
.../2.0.2/bower_components/sizzle/tasks/dist.js | 35 +
.../bower_components/sizzle/tasks/release.js | 43 +
.../2.0.2/bower_components/sizzle/tasks/tag.js | 9 +
.../bower_components/sizzle/tasks/version.js | 35 +
.../bower_components/sizzle/test/data/empty.js | 0
.../sizzle/test/data/mixed_sort.html | 22 +
.../sizzle/test/data/testinit.js | 136 +
.../bower_components/sizzle/test/jquery.js | 9597 +++++
.../sizzle/test/libs/qunit/qunit.css | 244 +
.../sizzle/test/libs/qunit/qunit.js | 2212 ++
.../sizzle/test/unit/extending.js | 95 +
.../sizzle/test/unit/selector.js | 1138 +
.../sizzle/test/unit/utilities.js | 169 +
.../2.0.2/css/apigeeGlobalNavigation.css | 274 +
.../css/arsmarquette/ARSMaquettePro-Light.otf | Bin 0 -> 184600 bytes
.../css/arsmarquette/ARSMaquettePro-Medium.otf | Bin 0 -> 188020 bytes
.../css/arsmarquette/ARSMaquettePro-Regular.otf | Bin 0 -> 188096 bytes
portal/dist/appsvc-ui/2.0.2/css/dash.min.css | 1 +
.../dist/appsvc-ui/2.0.2/css/entypo/entypo.eot | Bin 0 -> 35540 bytes
.../dist/appsvc-ui/2.0.2/css/entypo/entypo.svg | 13 +
.../dist/appsvc-ui/2.0.2/css/entypo/entypo.ttf | Bin 0 -> 35392 bytes
.../dist/appsvc-ui/2.0.2/css/entypo/entypo.woff | Bin 0 -> 21916 bytes
portal/dist/appsvc-ui/2.0.2/css/main.css | 1970 +
.../2.0.2/img/appswitcher/apiPlatform_lg.png | Bin 0 -> 2397 bytes
.../2.0.2/img/appswitcher/appServices_lg.png | Bin 0 -> 2295 bytes
.../2.0.2/img/appswitcher/console_lg.png | Bin 0 -> 1453 bytes
.../appsvc-ui/2.0.2/img/appswitcher/home_lg.png | Bin 0 -> 1522 bytes
.../2.0.2/img/appswitcher/logo_color.png | Bin 0 -> 3459 bytes
.../appsvc-ui/2.0.2/img/appswitcher/max_lg.png | Bin 0 -> 1970 bytes
.../img/appswitcher/triangleMenuItem_right.png | Bin 0 -> 1158 bytes
.../triangleMenuItem_right_hover.png | Bin 0 -> 1169 bytes
portal/dist/appsvc-ui/2.0.2/img/blue-bars.png | Bin 0 -> 3635 bytes
portal/dist/appsvc-ui/2.0.2/img/blue-bolt.png | Bin 0 -> 3942 bytes
portal/dist/appsvc-ui/2.0.2/img/blue-carat.png | Bin 0 -> 1006 bytes
portal/dist/appsvc-ui/2.0.2/img/green_dot.png | Bin 0 -> 3472 bytes
.../2.0.2/img/introjs_arrow_step_next.png | Bin 0 -> 219 bytes
.../img/introjs_arrow_step_next_disabled.png | Bin 0 -> 220 bytes
.../2.0.2/img/introjs_arrow_step_prev.png | Bin 0 -> 217 bytes
.../img/introjs_arrow_step_prev_disabled.png | Bin 0 -> 218 bytes
.../dist/appsvc-ui/2.0.2/img/introjs_close.png | Bin 0 -> 274 bytes
portal/dist/appsvc-ui/2.0.2/img/logo.gif | Bin 0 -> 2279 bytes
portal/dist/appsvc-ui/2.0.2/img/nav-device.gif | Bin 0 -> 2184 bytes
portal/dist/appsvc-ui/2.0.2/img/nav-sprites.png | Bin 0 -> 7953 bytes
portal/dist/appsvc-ui/2.0.2/img/no-data1.png | Bin 0 -> 45300 bytes
portal/dist/appsvc-ui/2.0.2/img/phone-small.gif | Bin 0 -> 1300 bytes
.../2.0.2/img/push/APNS_cert_upload.png | Bin 0 -> 33956 bytes
.../2.0.2/img/push/APNS_certification.png | Bin 0 -> 16855 bytes
.../2.0.2/img/push/android-notification.png | Bin 0 -> 41629 bytes
.../appsvc-ui/2.0.2/img/push/google_api_key.png | Bin 0 -> 98118 bytes
.../appsvc-ui/2.0.2/img/push/iphone_message.png | Bin 0 -> 90307 bytes
portal/dist/appsvc-ui/2.0.2/img/push/step_1.png | Bin 0 -> 1953 bytes
portal/dist/appsvc-ui/2.0.2/img/push/step_2.png | Bin 0 -> 2117 bytes
portal/dist/appsvc-ui/2.0.2/img/push/step_3.png | Bin 0 -> 2162 bytes
portal/dist/appsvc-ui/2.0.2/img/red_dot.png | Bin 0 -> 3482 bytes
.../appsvc-ui/2.0.2/img/sdk-sprites-large.png | Bin 0 -> 14642 bytes
portal/dist/appsvc-ui/2.0.2/img/sdk-sprites.png | Bin 0 -> 5027 bytes
.../dist/appsvc-ui/2.0.2/img/tablet-small.gif | Bin 0 -> 1390 bytes
portal/dist/appsvc-ui/2.0.2/img/user-photo.png | Bin 0 -> 3849 bytes
.../dist/appsvc-ui/2.0.2/img/user_profile.png | Bin 0 -> 3775 bytes
portal/dist/appsvc-ui/2.0.2/img/verify.png | Bin 0 -> 22934 bytes
portal/dist/appsvc-ui/2.0.2/img/yellow_dot.png | Bin 0 -> 3475 bytes
.../2.0.2/js/libs/Highcharts-2.3.5/index.htm | 79 +
.../js/adapters/mootools-adapter.js | 13 +
.../js/adapters/mootools-adapter.src.js | 328 +
.../js/adapters/prototype-adapter.js | 16 +
.../js/adapters/prototype-adapter.src.js | 385 +
.../libs/Highcharts-2.3.5/js/highcharts-more.js | 35 +
.../Highcharts-2.3.5/js/highcharts-more.src.js | 1581 +
.../js/libs/Highcharts-2.3.5/js/highcharts.js | 250 +
.../libs/Highcharts-2.3.5/js/highcharts.src.js | 15281 ++++++++
.../Highcharts-2.3.5/js/modules/canvas-tools.js | 133 +
.../js/modules/canvas-tools.src.js | 3113 ++
.../js/libs/Highcharts-2.3.5/js/modules/data.js | 14 +
.../Highcharts-2.3.5/js/modules/data.src.js | 512 +
.../Highcharts-2.3.5/js/modules/exporting.js | 23 +
.../js/modules/exporting.src.js | 752 +
.../Highcharts-2.3.5/js/themes/dark-blue.js | 263 +
.../Highcharts-2.3.5/js/themes/dark-green.js | 263 +
.../js/libs/Highcharts-2.3.5/js/themes/gray.js | 262 +
.../js/libs/Highcharts-2.3.5/js/themes/grid.js | 95 +
.../js/libs/Highcharts-2.3.5/js/themes/skies.js | 89 +
portal/dist/appsvc-ui/2.0.2/js/libs/MD5.min.js | 1 +
.../js/libs/angular-1.0.5/angular-cookies.js | 183 +
.../libs/angular-1.0.5/angular-cookies.min.js | 7 +
.../js/libs/angular-1.0.5/angular-loader.js | 276 +
.../js/libs/angular-1.0.5/angular-loader.min.js | 7 +
.../js/libs/angular-1.0.5/angular-mocks.js | 1886 +
.../js/libs/angular-1.0.5/angular-resource.js | 445 +
.../libs/angular-1.0.5/angular-resource.min.js | 10 +
.../js/libs/angular-1.0.5/angular-sanitize.js | 535 +
.../libs/angular-1.0.5/angular-sanitize.min.js | 13 +
.../2.0.2/js/libs/angular-1.0.5/angular.js | 14733 ++++++++
.../2.0.2/js/libs/angular-1.0.5/angular.min.js | 161 +
.../2.0.2/js/libs/angular-1.0.5/version.txt | 1 +
.../js/libs/angular-1.1.5/angular-1.1.5.js | 16876 +++++++++
.../js/libs/angular-1.1.5/angular-merge.min.js | 8 +
.../angular-1.1.5/angular-resource-1.1.5.js | 537 +
.../js/libs/angular-1.2.5/angular-animate.js | 1323 +
.../libs/angular-1.2.5/angular-animate.min.js | 23 +
.../angular-1.2.5/angular-animate.min.js.map | 8 +
.../js/libs/angular-1.2.5/angular-cookies.js | 202 +
.../libs/angular-1.2.5/angular-cookies.min.js | 8 +
.../angular-1.2.5/angular-cookies.min.js.map | 8 +
.../2.0.2/js/libs/angular-1.2.5/angular-csp.css | 24 +
.../js/libs/angular-1.2.5/angular-loader.js | 410 +
.../js/libs/angular-1.2.5/angular-loader.min.js | 9 +
.../angular-1.2.5/angular-loader.min.js.map | 8 +
.../js/libs/angular-1.2.5/angular-mocks.js | 2116 ++
.../js/libs/angular-1.2.5/angular-resource.js | 565 +
.../libs/angular-1.2.5/angular-resource.min.js | 13 +
.../angular-1.2.5/angular-resource.min.js.map | 8 +
.../js/libs/angular-1.2.5/angular-route.js | 911 +
.../js/libs/angular-1.2.5/angular-route.min.js | 14 +
.../libs/angular-1.2.5/angular-route.min.js.map | 8 +
.../js/libs/angular-1.2.5/angular-sanitize.js | 622 +
.../libs/angular-1.2.5/angular-sanitize.min.js | 14 +
.../angular-1.2.5/angular-sanitize.min.js.map | 8 +
.../js/libs/angular-1.2.5/angular-scenario.js | 32374 +++++++++++++++++
.../js/libs/angular-1.2.5/angular-touch.js | 563 +
.../js/libs/angular-1.2.5/angular-touch.min.js | 13 +
.../libs/angular-1.2.5/angular-touch.min.js.map | 8 +
.../2.0.2/js/libs/angular-1.2.5/angular.js | 20369 +++++++++++
.../2.0.2/js/libs/angular-1.2.5/angular.min.js | 201 +
.../js/libs/angular-1.2.5/angular.min.js.map | 8 +
.../2.0.2/js/libs/angular-1.2.5/errors.json | 1 +
.../2.0.2/js/libs/angular-1.2.5/version.json | 1 +
.../2.0.2/js/libs/angular-1.2.5/version.txt | 1 +
.../angularitics-0.8.5-google-analytics.js | 7 +
.../js/libs/angularitics/angularitics-0.8.5.js | 6 +
.../libs/bootstrap/css/bootstrap-responsive.css | 1345 +
.../bootstrap/css/bootstrap-responsive.min.css | 1245 +
.../2.0.2/js/libs/bootstrap/css/bootstrap.css | 6169 ++++
.../js/libs/bootstrap/css/bootstrap.min.css | 5469 +++
.../js/libs/bootstrap/custom/css/bootstrap.css | 6316 ++++
.../libs/bootstrap/custom/css/bootstrap.min.css | 9 +
.../custom/img/glyphicons-halflings-white.png | Bin 0 -> 8777 bytes
.../custom/img/glyphicons-halflings.png | Bin 0 -> 12799 bytes
.../js/libs/bootstrap/custom/js/bootstrap.js | 2291 ++
.../libs/bootstrap/custom/js/bootstrap.min.js | 7 +
.../img/glyphicons-halflings-white.png | Bin 0 -> 8777 bytes
.../libs/bootstrap/img/glyphicons-halflings.png | Bin 0 -> 12799 bytes
.../2.0.2/js/libs/bootstrap/js/bootstrap.js | 2117 ++
.../2.0.2/js/libs/bootstrap/js/bootstrap.min.js | 644 +
.../appsvc-ui/2.0.2/js/libs/google-viz-api.js | 49 +
.../2.0.2/js/libs/jquery/jquery-1.9.1.min.js | 5 +
.../js/libs/jquery/jquery-migrate-1.1.1.min.js | 3 +
.../js/libs/jquery/jquery.sparkline.min.js | 5 +
.../2.0.2/js/libs/jqueryui/date.min.js | 2 +
.../ui-bg_diagonals-thick_90_eeeeee_40x40.png | Bin 0 -> 251 bytes
.../images/ui-bg_flat_100_deedf7_40x100.png | Bin 0 -> 182 bytes
.../images/ui-bg_flat_100_e4f1fb_40x100.png | Bin 0 -> 213 bytes
.../images/ui-bg_flat_100_f2f5f7_40x100.png | Bin 0 -> 212 bytes
.../images/ui-bg_flat_15_cd0a0a_40x100.png | Bin 0 -> 181 bytes
.../images/ui-bg_flat_50_3baae3_40x100.png | Bin 0 -> 182 bytes
.../images/ui-bg_flat_80_d7ebf9_40x100.png | Bin 0 -> 183 bytes
.../ui-bg_highlight-hard_70_000000_1x100.png | Bin 0 -> 118 bytes
.../ui-bg_highlight-soft_25_ffef8f_1x100.png | Bin 0 -> 153 bytes
.../jqueryui/images/ui-icons_000000_256x240.png | Bin 0 -> 4369 bytes
.../jqueryui/images/ui-icons_2694e8_256x240.png | Bin 0 -> 4369 bytes
.../jqueryui/images/ui-icons_2e83ff_256x240.png | Bin 0 -> 4369 bytes
.../jqueryui/images/ui-icons_3d80b3_256x240.png | Bin 0 -> 4369 bytes
.../jqueryui/images/ui-icons_72a7cf_256x240.png | Bin 0 -> 4369 bytes
.../jqueryui/images/ui-icons_ffffff_256x240.png | Bin 0 -> 4369 bytes
.../js/libs/jqueryui/jquery-ui-1.8.18.min.js | 15 +
.../js/libs/jqueryui/jquery-ui-1.8.9.custom.css | 1 +
.../js/libs/jqueryui/jquery-ui-timepicker.css | 1 +
.../libs/jqueryui/jquery.ui.timepicker.min.js | 1 +
.../ui-bootstrap-custom-0.3.0.min.js | 1 +
.../ui-bootstrap-custom-tpls-0.3.0.min.js | 1 +
.../2.0.2/js/libs/usergrid-libs.min.js | 22 +
.../appsvc-ui/2.0.2/js/libs/usergrid.sdk.js | 2474 ++
.../dist/appsvc-ui/2.0.2/js/usergrid-dev.min.js | 4939 +++
portal/dist/appsvc-ui/2.0.2/js/usergrid.min.js | 6 +
portal/dist/appsvc-ui/archive/coming_soon.html | 31 +
.../ui-bg_diagonals-thick_90_eeeeee_40x40.png | Bin 0 -> 251 bytes
.../images/ui-bg_flat_100_deedf7_40x100.png | Bin 0 -> 182 bytes
.../images/ui-bg_flat_100_e4f1fb_40x100.png | Bin 0 -> 213 bytes
.../images/ui-bg_flat_100_f2f5f7_40x100.png | Bin 0 -> 212 bytes
.../images/ui-bg_flat_15_cd0a0a_40x100.png | Bin 0 -> 181 bytes
.../images/ui-bg_flat_50_3baae3_40x100.png | Bin 0 -> 182 bytes
.../images/ui-bg_flat_80_d7ebf9_40x100.png | Bin 0 -> 183 bytes
.../ui-bg_highlight-hard_70_000000_1x100.png | Bin 0 -> 118 bytes
.../ui-bg_highlight-soft_25_ffef8f_1x100.png | Bin 0 -> 153 bytes
.../images/ui-icons_000000_256x240.png | Bin 0 -> 4369 bytes
.../images/ui-icons_2694e8_256x240.png | Bin 0 -> 4369 bytes
.../images/ui-icons_2e83ff_256x240.png | Bin 0 -> 4369 bytes
.../images/ui-icons_3d80b3_256x240.png | Bin 0 -> 4369 bytes
.../images/ui-icons_72a7cf_256x240.png | Bin 0 -> 4369 bytes
.../images/ui-icons_ffffff_256x240.png | Bin 0 -> 4369 bytes
.../css/custom-theme/jquery-ui-1.8.9.custom.css | 573 +
.../archive/css/jquery-ui-timepicker.css | 53 +
.../archive/css/jquery.ui.statusbar.css | 25 +
portal/dist/appsvc-ui/archive/css/prettify.css | 52 +
.../appsvc-ui/archive/css/usergrid-stripped.css | 5199 +++
portal/dist/appsvc-ui/archive/css/usergrid.css | 5203 +++
portal/dist/appsvc-ui/archive/dash/README.md | 3 +
.../archive/dash/config/testacular-e2e.conf.js | 22 +
.../archive/dash/config/testacular.conf.js | 20 +
.../appsvc-ui/archive/dash/test/e2e/runner.html | 10 +
.../archive/dash/test/e2e/scenarios.js | 45 +
.../dash/test/lib/angular/angular-mocks.js | 1764 +
.../dash/test/lib/angular/angular-scenario.js | 26195 +++++++++++++
.../archive/dash/test/lib/angular/version.txt | 1 +
.../archive/dash/test/unit/controllersSpec.js | 31 +
.../archive/dash/test/unit/directivesSpec.js | 19 +
.../archive/dash/test/unit/filtersSpec.js | 19 +
.../archive/dash/test/unit/servicesSpec.js | 14 +
.../archive/images/APNS_cert_upload.png | Bin 0 -> 33956 bytes
.../archive/images/APNS_certification.png | Bin 0 -> 16855 bytes
.../archive/images/android-notification.png | Bin 0 -> 41629 bytes
.../archive/images/android-sdk-download.png | Bin 0 -> 4848 bytes
.../appsvc-ui/archive/images/api-activity.gif | Bin 0 -> 10819 bytes
.../appsvc-ui/archive/images/apigee-logo.png | Bin 0 -> 3647 bytes
.../appsvc-ui/archive/images/apigeetopbar.png | Bin 0 -> 4658 bytes
.../archive/images/background_one_col.png | Bin 0 -> 3126 bytes
.../archive/images/btn-copyCurl-up.png | Bin 0 -> 2762 bytes
.../dist/appsvc-ui/archive/images/clippy-bg.png | Bin 0 -> 561 bytes
portal/dist/appsvc-ui/archive/images/close.gif | Bin 0 -> 718 bytes
.../archive/images/dotnet-sdk-download.png | Bin 0 -> 7149 bytes
.../appsvc-ui/archive/images/down_arrow.png | Bin 0 -> 1285 bytes
portal/dist/appsvc-ui/archive/images/error.png | Bin 0 -> 2009 bytes
.../appsvc-ui/archive/images/faviconApigee.ico | Bin 0 -> 1150 bytes
.../images/glyphicons-halflings-white.png | Bin 0 -> 4352 bytes
.../archive/images/glyphicons-halflings.png | Bin 0 -> 4352 bytes
.../glyphicons_halflings_135_wrench-white2.pdn | Bin 0 -> 5400 bytes
.../glyphicons_halflings_135_wrench-white2.png | Bin 0 -> 296 bytes
.../images/glyphicons_halflings_135_wrench.png | Bin 0 -> 228 bytes
.../glyphicons_halflings_135_wrench_white.png | Bin 0 -> 251 bytes
.../glyphicons_halflings_wrench_white.png | Bin 0 -> 1016 bytes
.../appsvc-ui/archive/images/google_api_key.png | Bin 0 -> 98118 bytes
.../dist/appsvc-ui/archive/images/green_dot.png | Bin 0 -> 3472 bytes
portal/dist/appsvc-ui/archive/images/grid.png | Bin 0 -> 166 bytes
portal/dist/appsvc-ui/archive/images/icons.png | Bin 0 -> 13132 bytes
.../archive/images/ios-sdk-download.png | Bin 0 -> 4886 bytes
.../appsvc-ui/archive/images/iphone_message.png | Bin 0 -> 90307 bytes
.../archive/images/javascript-sdk-download.png | Bin 0 -> 4618 bytes
.../appsvc-ui/archive/images/left_arrow.png | Bin 0 -> 1257 bytes
.../appsvc-ui/archive/images/logo-white.png | Bin 0 -> 2014 bytes
.../archive/images/menuActiveTriangle.png | Bin 0 -> 315 bytes
.../archive/images/nodejs-sdk-download.png | Bin 0 -> 5273 bytes
portal/dist/appsvc-ui/archive/images/notice.png | Bin 0 -> 2112 bytes
.../appsvc-ui/archive/images/orange-arrow.png | Bin 0 -> 242 bytes
.../archive/images/push_notifications_icon.png | Bin 0 -> 338 bytes
.../dist/appsvc-ui/archive/images/red_dot.png | Bin 0 -> 3482 bytes
.../appsvc-ui/archive/images/right_arrow.png | Bin 0 -> 1251 bytes
.../archive/images/ruby-sdk-download.png | Bin 0 -> 6343 bytes
portal/dist/appsvc-ui/archive/images/step_1.png | Bin 0 -> 1953 bytes
portal/dist/appsvc-ui/archive/images/step_2.png | Bin 0 -> 2117 bytes
portal/dist/appsvc-ui/archive/images/step_3.png | Bin 0 -> 2162 bytes
.../dist/appsvc-ui/archive/images/success.png | Bin 0 -> 1863 bytes
.../appsvc-ui/archive/images/swish_arrow.png | Bin 0 -> 220 bytes
.../appsvc-ui/archive/images/topbackground.png | Bin 0 -> 2890 bytes
.../dist/appsvc-ui/archive/images/up_arrow.png | Bin 0 -> 1292 bytes
.../appsvc-ui/archive/images/user-photo.png | Bin 0 -> 3849 bytes
.../appsvc-ui/archive/images/user_profile.png | Bin 0 -> 3775 bytes
.../appsvc-ui/archive/images/usergrid_200.png | Bin 0 -> 6397 bytes
.../appsvc-ui/archive/images/usergrid_400.png | Bin 0 -> 8746 bytes
.../dist/appsvc-ui/archive/images/warning.png | Bin 0 -> 1179 bytes
.../appsvc-ui/archive/images/yellow_dot.png | Bin 0 -> 3475 bytes
.../dist/appsvc-ui/archive/index-stripped2.html | 1795 +
portal/dist/appsvc-ui/archive/index.html | 1931 +
portal/dist/appsvc-ui/archive/js/app/app.js | 131 +
portal/dist/appsvc-ui/archive/js/app/console.js | 5397 +++
portal/dist/appsvc-ui/archive/js/app/helpers.js | 241 +
.../dist/appsvc-ui/archive/js/app/navigation.js | 251 +
portal/dist/appsvc-ui/archive/js/app/pages.js | 161 +
portal/dist/appsvc-ui/archive/js/app/params.js | 30 +
.../dist/appsvc-ui/archive/js/app/quickLogin.js | 30 +
portal/dist/appsvc-ui/archive/js/app/session.js | 176 +
portal/dist/appsvc-ui/archive/js/app/sso.js | 135 +
portal/dist/appsvc-ui/archive/js/app/status.js | 37 +
.../archive/js/app/ui/collections.entity.js | 320 +
.../archive/js/app/ui/collections.user.js | 120 +
portal/dist/appsvc-ui/archive/js/app/ui/ui.js | 415 +
.../appsvc-ui/archive/js/app/usergrid.appSDK.js | 2097 ++
.../archive/js/app/usergrid.appSDK.orig.js | 2070 ++
portal/dist/appsvc-ui/archive/js/lib/MD5.min.js | 1 +
.../dist/appsvc-ui/archive/js/lib/backbone.js | 1431 +
.../appsvc-ui/archive/js/lib/bootstrap.min.js | 7 +
.../dist/appsvc-ui/archive/js/lib/date.min.js | 2 +
.../archive/js/lib/jquery-1.7.2.min.js | 4 +
.../archive/js/lib/jquery-ui-1.8.18.min.js | 15 +
.../archive/js/lib/jquery.dataset.min.js | 1 +
.../archive/js/lib/jquery.dform-0.1.3.min.js | 16 +
.../archive/js/lib/jquery.jsonp-2.3.1.min.js | 3 +
.../appsvc-ui/archive/js/lib/jquery.tmpl.min.js | 10 +
.../archive/js/lib/jquery.ui.statusbar.min.js | 1 +
.../archive/js/lib/jquery.ui.timepicker.min.js | 1 +
.../dist/appsvc-ui/archive/js/lib/prettify.js | 1477 +
.../appsvc-ui/archive/js/lib/underscore-min.js | 5 +
.../appsvc-ui/archive/js/spec/client-tests.js | 159 +
.../dist/appsvc-ui/archive/js/spec/index.html | 20 +
.../appsvc-ui/archive/js/spec/qunit-git.css | 238 +
.../dist/appsvc-ui/archive/js/spec/qunit-git.js | 1865 +
.../archive/js/unit-tests/appSDK-tests.js | 255 +
.../archive/js/unit-tests/ie-jquery-tests.js | 191 +
.../appsvc-ui/archive/js/unit-tests/qunit.css | 231 +
.../appsvc-ui/archive/js/unit-tests/qunit.js | 1934 +
portal/dist/appsvc-ui/archive/loading.html | 9 +
portal/dist/appsvc-ui/archive/max/index.html | 0
.../dist/appsvc-ui/archive/planned_outage.html | 48 +
portal/dist/appsvc-ui/archive/push/index.html | 34 +
portal/dist/appsvc-ui/archive/service_down.html | 48 +
.../apigee.ui.activities.table_rows.html | 14 +
.../templates/apigee.ui.admins.table_rows.html | 8 +
.../apigee.ui.applications.table_rows.html | 4 +
.../apigee.ui.collection.table_rows.html | 67 +
.../apigee.ui.collections.query.indexes.html | 5 +
.../apigee.ui.collections.table_rows.html | 9 +
.../apigee.ui.collections.user.header.html | 21 +
.../templates/apigee.ui.curl.detail.html | 11 +
.../templates/apigee.ui.feed.table_rows.html | 15 +
.../templates/apigee.ui.groups.table_rows.html | 14 +
.../apigee.ui.panels.group.activities.html | 28 +
.../apigee.ui.panels.group.details.html | 97 +
.../apigee.ui.panels.group.memberships.html | 40 +
.../apigee.ui.panels.group.permissions.html | 99 +
...pigee.ui.panels.notifications.configure.html | 14 +
.../apigee.ui.panels.role.permissions.html | 58 +
.../templates/apigee.ui.panels.role.users.html | 38 +
.../apigee.ui.panels.user.activities.html | 40 +
.../templates/apigee.ui.panels.user.graph.html | 80 +
.../apigee.ui.panels.user.memberships.html | 40 +
.../apigee.ui.panels.user.permissions.html | 105 +
.../apigee.ui.panels.user.profile.html | 113 +
.../apigee.ui.role.groups.table_rows.html | 44 +
.../templates/apigee.ui.roles.table_rows.html | 15 +
.../templates/apigee.ui.users.table_rows.html | 18 +
.../archive/templates/test/modalForm2.html | 32 +
.../appsvc-ui/archive/test/autocomplete.html | 25 +
.../dist/appsvc-ui/archive/test/modalForm.html | 32 +
portal/dist/appsvc-ui/config.js | 60 +
.../appsvc-ui/css/apigeeGlobalNavigation.css | 274 +
.../css/arsmarquette/ARSMaquettePro-Light.otf | Bin 0 -> 184600 bytes
.../css/arsmarquette/ARSMaquettePro-Medium.otf | Bin 0 -> 188020 bytes
.../css/arsmarquette/ARSMaquettePro-Regular.otf | Bin 0 -> 188096 bytes
portal/dist/appsvc-ui/css/dash.min.css | 1 +
portal/dist/appsvc-ui/css/entypo/entypo.eot | Bin 0 -> 35540 bytes
portal/dist/appsvc-ui/css/entypo/entypo.svg | 13 +
portal/dist/appsvc-ui/css/entypo/entypo.ttf | Bin 0 -> 35392 bytes
portal/dist/appsvc-ui/css/entypo/entypo.woff | Bin 0 -> 21916 bytes
portal/dist/appsvc-ui/css/main.css | 1970 +
portal/dist/appsvc-ui/favicon.ico | Bin 0 -> 1150 bytes
.../img/appswitcher/apiPlatform_lg.png | Bin 0 -> 2397 bytes
.../img/appswitcher/appServices_lg.png | Bin 0 -> 2295 bytes
.../appsvc-ui/img/appswitcher/console_lg.png | Bin 0 -> 1453 bytes
.../dist/appsvc-ui/img/appswitcher/home_lg.png | Bin 0 -> 1522 bytes
.../appsvc-ui/img/appswitcher/logo_color.png | Bin 0 -> 3459 bytes
.../dist/appsvc-ui/img/appswitcher/max_lg.png | Bin 0 -> 1970 bytes
.../img/appswitcher/triangleMenuItem_right.png | Bin 0 -> 1158 bytes
.../triangleMenuItem_right_hover.png | Bin 0 -> 1169 bytes
portal/dist/appsvc-ui/img/blue-bars.png | Bin 0 -> 3635 bytes
portal/dist/appsvc-ui/img/blue-bolt.png | Bin 0 -> 3942 bytes
portal/dist/appsvc-ui/img/blue-carat.png | Bin 0 -> 1006 bytes
portal/dist/appsvc-ui/img/green_dot.png | Bin 0 -> 3472 bytes
.../appsvc-ui/img/introjs_arrow_step_next.png | Bin 0 -> 219 bytes
.../img/introjs_arrow_step_next_disabled.png | Bin 0 -> 220 bytes
.../appsvc-ui/img/introjs_arrow_step_prev.png | Bin 0 -> 217 bytes
.../img/introjs_arrow_step_prev_disabled.png | Bin 0 -> 218 bytes
portal/dist/appsvc-ui/img/introjs_close.png | Bin 0 -> 274 bytes
portal/dist/appsvc-ui/img/logo.gif | Bin 0 -> 2279 bytes
portal/dist/appsvc-ui/img/nav-device.gif | Bin 0 -> 2184 bytes
portal/dist/appsvc-ui/img/nav-sprites.png | Bin 0 -> 7953 bytes
portal/dist/appsvc-ui/img/no-data1.png | Bin 0 -> 45300 bytes
portal/dist/appsvc-ui/img/phone-small.gif | Bin 0 -> 1300 bytes
.../appsvc-ui/img/push/APNS_cert_upload.png | Bin 0 -> 33956 bytes
.../appsvc-ui/img/push/APNS_certification.png | Bin 0 -> 16855 bytes
.../appsvc-ui/img/push/android-notification.png | Bin 0 -> 41629 bytes
.../dist/appsvc-ui/img/push/google_api_key.png | Bin 0 -> 98118 bytes
.../dist/appsvc-ui/img/push/iphone_message.png | Bin 0 -> 90307 bytes
portal/dist/appsvc-ui/img/push/step_1.png | Bin 0 -> 1953 bytes
portal/dist/appsvc-ui/img/push/step_2.png | Bin 0 -> 2117 bytes
portal/dist/appsvc-ui/img/push/step_3.png | Bin 0 -> 2162 bytes
portal/dist/appsvc-ui/img/red_dot.png | Bin 0 -> 3482 bytes
portal/dist/appsvc-ui/img/sdk-sprites-large.png | Bin 0 -> 14642 bytes
portal/dist/appsvc-ui/img/sdk-sprites.png | Bin 0 -> 5027 bytes
portal/dist/appsvc-ui/img/tablet-small.gif | Bin 0 -> 1390 bytes
portal/dist/appsvc-ui/img/user-photo.png | Bin 0 -> 3849 bytes
portal/dist/appsvc-ui/img/user_profile.png | Bin 0 -> 3775 bytes
portal/dist/appsvc-ui/img/verify.png | Bin 0 -> 22934 bytes
portal/dist/appsvc-ui/img/yellow_dot.png | Bin 0 -> 3475 bytes
portal/dist/appsvc-ui/index-debug.html | 167 +
portal/dist/appsvc-ui/index-template.html | 172 +
portal/dist/appsvc-ui/index.html | 167 +
portal/dist/appsvc-ui/js/charts/highcharts.json | 329 +
portal/dist/appsvc-ui/sdk/usergrid.0.10.4.js | 1402 +
portal/dist/appsvc-ui/sdk/usergrid.0.10.5.js | 1755 +
portal/dist/appsvc-ui/sdk/usergrid.0.10.7.js | 2265 ++
portal/index-debug.html | 57 +-
portal/index-template.html | 39 +-
portal/index.html | 57 +-
portal/js/global/page-controller.js | 3 +-
portal/js/global/ug-service.js | 3 +-
portal/js/libs/usergrid-libs.min.js | 4 +-
portal/js/usergrid-dev.min.js | 19761 +++++++++-
portal/js/usergrid.min.js | 4 +-
portal/package.json | 2 +-
.../instrument/js/usergrid-coverage.min.js | 2 +-
.../test/coverage/instrument/js/usergrid.min.js | 2 +-
829 files changed, 357652 insertions(+), 135 deletions(-)
----------------------------------------------------------------------