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/04/10 22:22:18 UTC
[13/63] [abbrv] new bower build
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/f3b55942/portal/dist/usergrid-portal/bower_components/apigee.max.ui/dist/js/max-dev.min.js
----------------------------------------------------------------------
diff --git a/portal/dist/usergrid-portal/bower_components/apigee.max.ui/dist/js/max-dev.min.js b/portal/dist/usergrid-portal/bower_components/apigee.max.ui/dist/js/max-dev.min.js
deleted file mode 100644
index 71dee75..0000000
--- a/portal/dist/usergrid-portal/bower_components/apigee.max.ui/dist/js/max-dev.min.js
+++ /dev/null
@@ -1,1781 +0,0 @@
-/*! apigee-max-ui@1.0.1 2014-03-24 */
- AppServices = AppServices || {};(function(exports, global) {
- global["true"] = exports;
- angular.module("appservices.max").run([ "$templateCache", function($templateCache) {
- "use strict";
- $templateCache.put("performance/ab-config.html", "<div>\n" + "\n" + ' <page-title icon="" title="A/B Testing Configs"></page-title>\n' + "\n" + ' <div class="row-fluid" >\n' + "\n" + ' <div class="span12">\n' + ' <form class="form-horizontal configs">\n' + ' <div class="control-group">\n' + ' <slidecheckbox label="Enable A/B Testing" data="configData.abtestingOverrideEnabled"></slidecheckbox>\n' + " </div>\n" + "\n" + ' <div class="control-group">\n' + ' <label class="control-label" for="inputApplyTo">Apply to </label>\n' + ' <div class="controls">\n' + ' <input type="text" id="inputApplyTo" class="input-mini" ng-model="configData.abtestingPercentage"> % of Devices\n' + " </div>\n" + " </div>\n" + " \n" + " \n" + ' <h2 class="title">Monitoring Configs</h2>\n' + "\n" + "\n" + ' <div class="control-group">\n' + '
<slidecheckbox label="Enable Log Capturing" data="configData.abtestingAppConfig.enableLogMonitoring"></slidecheckbox>\n' + " </div>\n" + ' <div class="control-group">\n' + ' <label class="control-label">Log Capture Levels</label>\n' + ' <div class="controls">\n' + ' <select ng-model="abLogLevel" ng-options="l.label for l in logLevels" ng-change="updateLogLevel(abLogLevel,\'abtestingAppConfig\')"></select>\n' + " </div>\n" + " </div>\n" + ' <div class="control-group">\n' + ' <slidecheckbox label="Enable Network Monitoring" data="configData.abtestingAppConfig.networkMonitoringEnabled"></slidecheckbox>\n' + " </div>\n" + ' <div class="control-group">\n' + ' <slidecheckbox label="Enable Device Data Capture" data="configData.abtestingAppConfig.sessionDataCaptureEnabled"></slidecheckbox>\n' + " </div>\n" + ' <div cl
ass="control-group">\n' + "\n" + ' <slidecheckbox label="Read Location" data="configData.abtestingAppConfig.locationCaptureEnabled"></slidecheckbox>\n' + "\n" + ' <slidecheckbox label="Read IMEI" data="configData.abtestingAppConfig.imeicaptureEnabled"></slidecheckbox>\n' + "\n" + ' <slidecheckbox label="Read Device Model" data="configData.abtestingAppConfig.deviceModelCaptureEnabled"></slidecheckbox>\n' + "\n" + ' <slidecheckbox label="Read Network Carrier" data="configData.abtestingAppConfig.networkCarrierCaptureEnabled"></slidecheckbox>\n' + "\n" + ' <slidecheckbox label="Read Apigee Device ID" data="configData.abtestingAppConfig.deviceIdCaptureEnabled"></slidecheckbox>\n' + "\n" + " </div>\n" + ' <div class="control-group">\n' + ' <label class="control-label" for="inputUploadInt">Data Upload Interval (in Seconds)</label>\n' + ' <div class="controls">\n' + '
<input type="text" id="inputUploadInt" ng-model="configData.abtestingAppConfig.agentUploadIntervalInSeconds">\n' + " </div>\n" + " </div>\n" + ' <div class="control-group">\n' + ' <label class="control-label" for="inputSampRate">Sampling Rate (in Percentage)</label>\n' + ' <div class="controls">\n' + ' <input type="text" id="inputSampRate" ng-model="configData.abtestingAppConfig.samplingRate">\n' + " </div>\n" + " </div>\n" + ' <div class="control-group">\n' + ' <slidecheckbox label="Upload When Roaming" data="configData.abtestingAppConfig.enableUploadWhenRoaming"></slidecheckbox>\n' + " </div>\n" + ' <div class="control-group">\n' + ' <slidecheckbox label="Upload When Not on WIFI" data="configData.abtestingAppConfig.enableUploadWhenMobile"></slidecheckbox>\n' + " </div>\n" + "\n" + ' <h2 class="title
">Application Specific Configs</h2>\n' + ' <div class="row-fluid" >\n' + ' <div class="span3" style="margin-right: 12px;">Tag</div>\n' + ' <div class="span3" style="margin-right: 15px;">Key</div>\n' + ' <div class="span3">Value</div>\n' + " </div>\n" + ' <div class="form-inline" ng-repeat="config in abConfigParameters">\n' + ' <input name="category" type="text" class="input-large" ng-model="config.tag" required>\n' + ' <input name="key" type="text" class="input-large" ng-model="config.paramKey" required> =\n' + ' <input name="value" type="text" class="input-large" ng-model="config.paramValue" required>\n' + ' <span class="hide">{{config.index = ($index + 1)}}</span>\n' + ' <button class="btn" ng-click="addRemoveConfig(config,\'abConfigParameters\')" ng-show="abConfigParameters.length != ($index + 1)">-</button>\n' + '
<button class="btn" ng-click="addRemoveConfig(config,\'abConfigParameters\')" ng-show="abConfigParameters.length == ($index + 1)">+</button>\n' + " </div>\n" + " <hr/>\n" + ' <button type="submit" class="btn btn-primary " ng-click="saveData(\'abConfigParameters\')">Save Changes</button>\n' + " </form>\n" + "\n" + " </div>\n" + "\n" + "\n" + " </div>\n" + "\n" + "\n" + "\n" + "\n" + "\n" + "</div>\n" + "\n" + "\n");
- $templateCache.put("performance/api-perf.html", "<demo-data></demo-data>\n" + '<page-title icon="📈" title="API Performance"></page-title>\n' + "\n" + '<div class="page-filters">\n' + " <span ng-include=\"'performance/includes/time-filters.html'\"></span>\n" + "</div>\n" + "\n" + '<div ng-init="apiPerfSetup()">\n' + ' <section class="row-fluid">\n' + "\n" + " </section>\n" + " <!-- errors and crashes total row -->\n" + ' <section class="row-fluid api-perf-charts">\n' + "\n" + ' <div class="span6">\n' + "\n" + ' <h2 class="title chart">Avg Response Time</h2>\n' + "\n" + ' <div ng-include="\'performance/includes/no-data.html\'" ng-if="!chartDataPresent"></div>\n' + "\n" + ' <div class="main-chart-holder" ng-if="chartDataPresent">\n' + ' <chart id="requestTime" class="anim-chart" ng-if="selectedChartCriteria.chartCriteriaId === 1"\n' + ' chartdata="perfCharts.requestTimes"\n' + ' type="line"\n' + " xAxisLabe
l=\"return Highcharts.dateFormat('%a, %H:%M', this.value);\"\n" + ' xAxisStep="3"></chart>\n' + "\n" + ' <chart id="requestTimeBar" class="anim-chart" ng-if="selectedChartCriteria.chartCriteriaId > 1"\n' + ' chartdata="perfCharts.requestTimes"\n' + ' type="column" class="bar"></chart>\n' + " </div>\n" + " </div>\n" + "\n" + ' <div class="span6">\n' + "\n" + ' <h2 class="title chart">Total Requests</h2>\n' + "\n" + ' <div ng-include="\'performance/includes/no-data.html\'" ng-if="!chartDataPresent"></div>\n' + "\n" + ' <div class="main-chart-holder" ng-if="chartDataPresent">\n' + ' <chart id="requests" class="anim-chart" ng-if="selectedChartCriteria.chartCriteriaId === 1"\n' + ' chartdata="perfCharts.requests"\n' + ' type="line"\n' + " xAxisLabel=\"return Highcharts.dateFormat('%a, %H:%M', this.value);\"\n" + ' xAxisStep="3"></chart>\n' + "\n" + ' <chart id="re
questsBar" class="anim-chart" ng-if="selectedChartCriteria.chartCriteriaId > 1"\n' + ' chartdata="perfCharts.requests"\n' + ' type="column" class="bar"></chart>\n' + " </div>\n" + " </div>\n" + "\n" + "\n" + "\n" + "\n" + "\n" + "\n" + " </section>\n" + "\n" + ' <section class="row-fluid">\n' + "\n" + ' <div class="span12 perf-summary-data">\n' + "\n" + ' <div class="span3">\n' + ' <infobox datasrc="perfCharts.summary.avgLatency"\n' + ' currentcompare="perfCharts.summary.currentCompare"\n' + ' title="Avg Response Time"\n' + ' class="response-time"></infobox>\n' + " </div>\n" + "\n" + ' <div class="span3">\n' + ' <infobox datasrc="perfCharts.summary.maxLatency"\n' + ' currentcompare="perfCharts.summary.currentCompare"\n' + ' title="Max Response Time"\n' + ' class="request-time"></infobox>\n' + " </div>\n" + "\n" + '
<div class="span3">\n' + ' <infobox datasrc="perfCharts.summary.totalRequests"\n' + ' currentcompare="perfCharts.summary.currentCompare"\n' + ' title="Network Requests"\n' + ' class="requests"></infobox>\n' + " </div>\n" + "\n" + ' <div class="span3">\n' + ' <infobox datasrc="perfCharts.summary.totalErrors"\n' + ' currentcompare="perfCharts.summary.currentCompare"\n' + ' title="Network Errors"\n' + ' class="errors"></infobox>\n' + " </div>\n" + "\n" + "\n" + " </div>\n" + "\n" + " </section>\n" + "\n" + ' <balloon direction="south" ng-if="!chartDataPresent && logDataPresent">\n' + " Scroll down to see log data sent by your SDK.\n" + " </balloon>\n" + "\n" + ' <section class="row-fluid">\n' + ' <div class="span12 pareto-charts">\n' + "\n" + ' <div class="row-fluid log-search" ng-controller="RawLogCtrl">\n' + "\n" + ' <div class="span1
2">\n' + ' <h2 class="title">Network API Search</h2>\n' + " <form>\n" + ' <div class="input-append span8">\n' + ' <input type="text" placeholder="e.g. apigee.com..." ng-model="rawLogSearch.url"\n' + ' class=" input-xxlarge" ng-change="loadMoreLogs()">\n' + ' <button type="button" class="btn" ng-click="rawLogSearchShowAdv=!rawLogSearchShowAdv">Advanced</button>\n' + " </div>\n" + ' <div class="span4 text-right" ng-if="rawLogs.length === 100 || rawLogSearch.pageNumber > 0">\n' + " {{rawLogSearch.pageNumber === 0 ? 1 : rawLogSearch.pageNumber * 100}} - {{rawLogSearch.pageNumber === 0 ? (1 * rawLogs.length) : (rawLogSearch.pageNumber + 1) * rawLogs.length}}\n" + ' <a class="btn btn-primary toolbar" ng-disabled="rawLogSearch.pageNumber === 0" ng-click="rawLogSearch.pageNumber > 0 ? prevPage() : \'\'"><i class="pictogram"></i></a>\n' + ' <a class="btn b
tn-primary toolbar" ng-disabled="rawLogs.length !== 100" ng-click="rawLogs.length === 100 ? nextPage() : \'\'"><i class="pictogram"></i></a>\n' + " </div>\n" + " </form>\n" + ' <form class="form-inline adv-rawlog-form" ng-show="rawLogSearchShowAdv">\n' + ' <br style="clear:both"/>\n' + ' <div class="input-prepend">\n' + ' <span class="add-on">Status Code:</span>\n' + ' <input class="input-small" type="text" ng-model="rawLogSearch.httpStatusCode" ng-change="loadMoreLogs()">\n' + " </div>\n" + ' <div class="input-prepend">\n' + ' <span class="add-on">Resp. Time > </span>\n' + ' <input class="input-small" type="text" ng-model="rawLogSearch.latency" ng-change="loadMoreLogs()">\n' + " </div>\n" + ' <div class="input-prepend">\n' + ' <span class="add-on">Network Type</span>\n' + ' <input class="input-small" t
ype="text" ng-model="rawLogSearch.networkType" ng-change="loadMoreLogs()">\n' + " </div>\n" + ' <div class="input-prepend">\n' + ' <span class="add-on">Carrier</span>\n' + ' <input class="input-small" type="text" ng-model="rawLogSearch.networkCarrier" ng-change="loadMoreLogs()">\n' + " </div>\n" + ' <div class="input-prepend">\n' + ' <span class="add-on">Platform</span>\n' + ' <input class="input-small" type="text" ng-model="rawLogSearch.devicePlatform" ng-change="loadMoreLogs()">\n' + " </div>\n" + " <button type=\"submit\" class=\"btn\" ng-click=\"rawLogSearch.httpStatusCode='';rawLogSearch.latency='';rawLogSearch.networkType='';rawLogSearch.networkCarrier='';rawLogSearch.devicePlatform='';loadMoreLogs()\">Clear All Advanced</button>\n" + " </form>\n" + ' <table class="table table-striped table-bordered raw-log-table">\n' + " <thead>
\n" + " <tr>\n" + " <th>Time</th>\n" + " <th>Message</th>\n" + " </tr>\n" + " </thead>\n" + " <tbody>\n" + " <tr ng-repeat=\"log in rawLogs | orderBy:'timeStamp':true | rawLogFilter:rawLogSearch:['url']:['latency']\">\n" + ' <td class="log-time-holder">\n' + " <div>\n" + " <span class=\"{{rawLogs.rawDataType === 'logRawData' ? 'log-time1' : 'log-time2'}}\">{{log.timeStamp | date:'M-dd-yyyy HH:mm:ss'}}</span>\n" + " </div>\n" + " </td>\n" + " <td>\n" + " <span>{{log.url}}</span>\n" + ' <div class="row-meta">\n' + ' <span class="label">Status Code:</span>\n' + ' <span class="value">{{log.httpStatusCode}}</span>\n' + ' <span class="label">Response Time:</span>\n' + ' <span class="value">{{log.latency}}</span>\n' + '
<span class="label">Network Type:</span>\n' + ' <span class="value">{{log.networkType}}</span>\n' + ' <span class="label">Carrier:</span>\n' + ' <span class="value">{{log.networkCarrier}}</span>\n' + ' <span class="label">Platform:</span>\n' + ' <span class="value">{{log.devicePlatform}}</span>\n' + " </div>\n" + " </td>\n" + " </tr>\n" + " </tbody>\n" + " </table>\n" + ' <div class="row-fluid">\n' + ' <div class="input-append span8">\n' + "\n" + "\n" + " </div>\n" + ' <div class="span4 text-right" ng-if="rawLogs.length === 100 || rawLogSearch.pageNumber > 0">\n' + " {{rawLogSearch.pageNumber === 0 ? 1 : rawLogSearch.pageNumber * 100}} - {{rawLogSearch.pageNumber === 0 ? (1 * rawLogs.length) : (rawLogSearch.pageNumber + 1) * rawLogs.length}}\n" + ' <a class="btn bt
n-primary toolbar" ng-disabled="rawLogSearch.pageNumber === 0" ng-click="rawLogSearch.pageNumber > 0 ? prevPage() : \'\'"><i class="pictogram"></i></a>\n' + ' <a class="btn btn-primary toolbar" ng-disabled="rawLogs.length !== 100" ng-click="rawLogs.length === 100 ? nextPage() : \'\'"><i class="pictogram"></i></a>\n' + " </div>\n" + " </div>\n" + " </div>\n" + "\n" + " </div>\n" + "\n" + " </div>\n" + " </section>\n" + "\n" + "</div>\n" + "\n" + "\n");
- $templateCache.put("performance/app-overview.html", "<demo-data></demo-data>\n" + "\n" + "<div ng:include=\"'performance/includes/time-filters.html'\"></div>\n" + "\n" + '<div ng-controller="PerformanceCtrl" ng-init="appOverviewSetup()">\n' + "<!-- crash errors row -->\n" + '<section class="row-fluid errors-crashes">\n' + ' <div class="span6">\n' + "\n" + ' <ul class="span2 info-details unstyled">\n' + ' <li class="title">Top 5 Crash Causes</li>\n' + ' <li class="secondary">15 Total</li>\n' + ' <li class="tertiary">38 users affected</li>\n' + " </ul>\n" + "\n" + ' <div class="span10 top-5-crash info-box">\n' + ' <div class="info-container">\n' + ' <table class="table">\n' + " <thead>\n" + " <tr>\n" + ' <th class="graph-row">Cause</th>\n' + ' <th class="count">Total</th>\n' + " </tr>\n" + "
</thead>\n" + " <tbody>\n" + " <tr>\n" + ' <td class="graph-row">\n' + ' <div class="bar">message</div>\n' + " </td>\n" + ' <td class="count">134</td>\n' + " </tr>\n" + " <tr>\n" + ' <td class="graph-row">\n' + ' <div class="bar">message</div>\n' + " </td>\n" + ' <td class="count">134</td>\n' + " </tr>\n" + " <tr>\n" + ' <td class="graph-row">\n' + ' <div class="bar">message</div>\n' + " </td>\n" + ' <td class="count">134</td>\n' + " </tr>\n" + " <tr>\n" + ' <td class="graph-row">\n' + '
<div class="bar">message</div>\n' + " </td>\n" + ' <td class="count">134</td>\n' + " </tr>\n" + " <tr>\n" + ' <td class="graph-row">\n' + ' <div class="bar">message</div>\n' + " </td>\n" + ' <td class="count">134</td>\n' + " </tr>\n" + " </tbody>\n" + " </table>\n" + " </div>\n" + " </div>\n" + "\n" + " </div>\n" + "\n" + ' <div class="span6">\n' + "\n" + ' <ul class="span2 info-details unstyled">\n' + ' <li class="title">Top 5 Errors</li>\n' + ' <li class="secondary">120 Total</li>\n' + ' <li class="tertiary">200 users affected</li>\n' + " </ul>\n" + "\n" + ' <div class="span10 top-5-crash info-box">\n' + ' <div class="info-container">\n' + ' <tabl
e class="table">\n' + " <thead>\n" + " <tr>\n" + ' <th class="graph-row">Cause</th>\n' + ' <th class="count">Total</th>\n' + " </tr>\n" + " </thead>\n" + " <tbody>\n" + " <tr>\n" + ' <td class="graph-row">\n' + ' <div class="bar">message</div>\n' + " </td>\n" + ' <td class="count">134</td>\n' + " </tr>\n" + " <tr>\n" + ' <td class="graph-row">\n' + ' <div class="bar">message</div>\n' + " </td>\n" + ' <td class="count">134</td>\n' + " </tr>\n" + " <tr>\n" + ' <td class="graph-row">\n' + ' <div class="bar">message</
div>\n' + " </td>\n" + ' <td class="count">134</td>\n' + " </tr>\n" + " <tr>\n" + ' <td class="graph-row">\n' + ' <div class="bar">message</div>\n' + " </td>\n" + ' <td class="count">134</td>\n' + " </tr>\n" + " <tr>\n" + ' <td class="graph-row">\n' + ' <div class="bar">message</div>\n' + " </td>\n" + ' <td class="count">134</td>\n' + " </tr>\n" + " </tbody>\n" + " </table>\n" + " </div>\n" + " </div>\n" + "\n" + " </div>\n" + "</section>\n" + "\n" + "<!-- api row -->\n" + '<section class="row-fluid api-issues">\n' + ' <div class="span6">\n' + "\n" + ' <ul class="span2 info-details unstyled">
\n' + ' <li class="title">Slow APIs</li>\n' + ' <li class="secondary">Above 2000ms</li>\n' + " </ul>\n" + "\n" + ' <div class="span10 slow-apis info-box">\n' + ' <div class="info-container">\n' + ' <table class="table">\n' + " <thead>\n" + " <tr>\n" + ' <th class="normal-row">URL</th>\n' + ' <th class="count">Response Time</th>\n' + " </tr>\n" + " </thead>\n" + " <tbody>\n" + " <tr>\n" + ' <td class="normal-row">message</td>\n' + ' <td class="count">134</td>\n' + " </tr>\n" + " <tr>\n" + ' <td class="normal-row">message</td>\n' + ' <td class="count">134</td>\n' + " </tr>\n" + " <tr>\n" + '
<td class="normal-row">message</td>\n' + ' <td class="count">134</td>\n' + " </tr>\n" + " <tr>\n" + ' <td class="normal-row">message</td>\n' + ' <td class="count">134</td>\n' + " </tr>\n" + " <tr>\n" + ' <td class="normal-row">message</td>\n' + ' <td class="count">134</td>\n' + " </tr>\n" + " </tbody>\n" + " </table>\n" + " </div>\n" + " </div>\n" + "\n" + " </div>\n" + "\n" + ' <div class="span6">\n' + "\n" + ' <ul class="span2 info-details unstyled">\n' + ' <li class="title">API Errors</li>\n' + ' <li class="secondary">Abnormal Status Codes</li>\n' + " </ul>\n" + "\n" + ' <div class="span10 api-errors info-box">\n' + ' <div class="info-container">\n' +
' <table class="table">\n' + " <thead>\n" + " <tr>\n" + ' <th class="normal-row">URL</th>\n' + ' <th class="count">Status Code</th>\n' + " </tr>\n" + " </thead>\n" + " <tbody>\n" + " <tr>\n" + ' <td class="normal-row">message</td>\n' + ' <td class="count">134</td>\n' + " </tr>\n" + " <tr>\n" + ' <td class="normal-row">message</td>\n' + ' <td class="count">134</td>\n' + " </tr>\n" + " <tr>\n" + ' <td class="normal-row">message</td>\n' + ' <td class="count">134</td>\n' + " </tr>\n" + " <tr>\n" + ' <td class="normal-row">message</td>\n' + '
<td class="count">134</td>\n' + " </tr>\n" + " <tr>\n" + ' <td class="normal-row">message</td>\n' + ' <td class="count">134</td>\n' + " </tr>\n" + " </tbody>\n" + " </table>\n" + " </div>\n" + " </div>\n" + "\n" + " </div>\n" + "</section>\n" + "\n" + "\n" + "<!-- app usage row -->\n" + '<section class="row-fluid api-issues">\n' + ' <div class="span6">\n' + "\n" + ' <ul class="span2 info-details unstyled">\n' + ' <li class="title">App Usage</li>\n' + ' <li class="secondary">By Version</li>\n' + " </ul>\n" + "\n" + ' <div class="span10 app-usage-content">\n' + ' <chart id="appVersions" value=\'{{appOverviewCharts.appVersions}}\' type="pie"\n' + ' style="max-width: 50%;height:250px"></chart>\n' + ' <table class="table">\n' +
" <thead>\n" + " <tr>\n" + " <th>App Version</th>\n" + " </tr>\n" + " </thead>\n" + " <tbody>\n" + " <tr>\n" + ' <td class="graph-row">\n' + ' <div class="bar"></div>\n' + " 1.0.0\n" + " </td>\n" + ' <td class="count">12%</td>\n' + " </tr>\n" + " <tr>\n" + ' <td class="graph-row">\n' + ' <div class="bar"></div>\n' + " 1.1.1\n" + " </td>\n" + ' <td class="count">22%</td>\n' + " </tr>\n" + " <tr>\n" + ' <td class="graph-row">\n' + ' <div class="bar"></div>\n' + " 1.2.0\n" + " </td>\n" + ' <td class="count">63%</td>
\n' + " </tr>\n" + " </tbody>\n" + " </table>\n" + " </div>\n" + "\n" + " </div>\n" + "\n" + ' <div class="span6">\n' + "\n" + ' <ul class="span2 info-details unstyled">\n' + ' <li class="title">App Usage</li>\n' + ' <li class="secondary">By Platform</li>\n' + " </ul>\n" + "\n" + ' <div class="span10 app-usage-content">\n' + ' <chart id="platformVersions" value=\'{{appOverviewCharts.platformVersions}}\' type="pie"\n' + ' style="max-width: 50%;height:250px"></chart>\n' + ' <table class="table">\n' + " <thead>\n" + " <tr>\n" + " <th>Platform</th>\n" + " </tr>\n" + " </thead>\n" + " <tbody>\n" + " <tr>\n" + ' <td class="graph-row">\n' + ' <div class="bar"></div>\n' + " Firefox OS\
n" + " </td>\n" + ' <td class="count">12%</td>\n' + " </tr>\n" + " <tr>\n" + ' <td class="graph-row">\n' + ' <div class="bar"></div>\n' + " Android\n" + " </td>\n" + ' <td class="count">22%</td>\n' + " </tr>\n" + " <tr>\n" + ' <td class="graph-row">\n' + ' <div class="bar"></div>\n' + " iOS\n" + " </td>\n" + ' <td class="count">63%</td>\n' + " </tr>\n" + " </tbody>\n" + " </table>\n" + " </div>\n" + "\n" + " </div>\n" + "</section>\n" + "\n" + "<!-- trouble makers row -->\n" + '<section class="row-fluid trouble-makers">\n' + ' <div class="span12">\n' + "\n" + ' <ul class="span2 info-details fixed unstyled">\n' + '
<li class="title">Trouble Makers</li>\n' + ' <li class="secondary">Problematic Devices, Networks, and OSs</li>\n' + " </ul>\n" + "\n" + ' <div class="span10">\n' + ' <div class="row-fluid">\n' + ' <div class="span12">\n' + "\n" + ' <section class="span4">\n' + " <h5>Problematic Devices</h5>\n" + ' <table class="table">\n' + " <tbody>\n" + " <tr>\n" + ' <td class="tablet-icon">HTC One</td>\n' + ' <td class="phone-icon">Nexus One</td>\n' + " </tr>\n" + " <tr>\n" + ' <td class="phone-icon">HTC Evo</td>\n' + ' <td class="tablet-icon">Galaxy Tab</td>\n' + " </tr>\n" + " </tbody>\n" + "
</table>\n" + "\n" + " </section>\n" + "\n" + ' <section class="span4">\n' + " <h5>Slowest Carriers</h5>\n" + ' <ol class="asc-light slow-carriers grow">\n' + " <li>Verizon</li>\n" + " <li>Sprint</li>\n" + " <li>TMobile</li>\n" + " <li>AT&T</li>\n" + " </ol>\n" + " </section>\n" + "\n" + ' <section class="span4">\n' + " <h5>Problematic OS Versions</h5>\n" + ' <ol class="asc-light prob-os">\n' + " <li>Android 2.3</li>\n" + " <li>Android 2.3</li>\n" + " <li>Android 2.3</li>\n" + " <li>Android 2.3</li>\n" + " </ol>\n" + " </
section>\n" + " </div>\n" + " </div>\n" + " </div>\n" + "\n" + " </div>\n" + "</section>\n" + "\n" + "<!-- sessions sparklines row -->\n" + '<section class="row-fluid trouble-makers">\n' + ' <div class="span12">\n' + "\n" + ' <ul class="span2 info-details fixed unstyled">\n' + ' <li class="title">Sessions</li>\n' + ' <li class="secondary">Over Past Hour</li>\n' + " </ul>\n" + "\n" + ' <div class="span10">\n' + ' <span class="span12 sessions-bar"></span>\n' + " </div>\n" + "\n" + " </div>\n" + "</section>\n" + "\n" + "</div>\n" + "\n" + "\n");
- $templateCache.put("performance/app-usage.html", "<demo-data></demo-data>\n" + '<page-title icon="📊" title="App Usage"></page-title>\n' + "\n" + '<div class="page-filters">\n' + " <span ng-include=\"'performance/includes/time-filters.html'\"></span>\n" + "</div>\n" + "\n" + "\n" + "\n" + '<div ng-init="appUsageSetup()">\n' + "\n" + "\n" + " <!-- errors and crashes total row -->\n" + ' <section class="row-fluid api-perf-charts">\n' + "\n" + ' <div class="span12">\n' + ' <h2 class="title chart">Active Sessions Count {{selectedChartCriteria.chartName}}</h2>\n' + ' <!--step: <input ng-model="apptest.step" width="5" style="width: 20px" />-->\n' + "\n" + ' <div ng-include="\'performance/includes/no-data.html\'" ng-if="chartDataWaiting || !chartDataPresent"></div>\n' + "\n" + ' <div class="main-chart-holder" ng-if="chartDataPresent">\n' + ' <chart id="sessionTotals" class="anim-chart" ng-if="selectedChartCriteria.chartName === \'Overview\'"\n'
+ ' chartdata="appUsageCharts.totals"\n' + ' type="line"\n' + " xAxisLabel=\"return Highcharts.dateFormat('%a, %H:%M', this.value);\"\n" + ' xAxisStep="3"></chart>\n' + "\n" + ' <chart id="sessionTotalsBar" class="anim-chart" ng-if="selectedChartCriteria.chartName !== \'Overview\'"\n' + ' chartdata="appUsageCharts.totals"\n' + ' type="column"></chart>\n' + " </div>\n" + ' <div class="row-fluid app-summary-data">\n' + ' <div class="span4">\n' + ' <infobox datasrc="appUsageCharts.summary.totalSessions"\n' + ' currentcompare="appUsageCharts.summary.currentCompare"\n' + ' title="Total Sessions"\n' + ' class="usage"></infobox>\n' + " </div>\n" + "\n" + ' <div class="span4">\n' + ' <infobox datasrc="appUsageCharts.summary.maxConcurrentSessions"\n' + ' currentcompare="appUsageCharts.summary.cur
rentCompare"\n' + ' title="Max Concurrent Sessions"\n' + ' class="usage"></infobox>\n' + " </div>\n" + "\n" + ' <div class="span4">\n' + ' <infobox datasrc="appUsageCharts.summary.totalUniqueUsers"\n' + ' currentcompare="appUsageCharts.summary.currentCompare"\n' + ' title="Total Unique Users"\n' + ' class="usage"></infobox>\n' + " </div>\n" + " </div>\n" + "\n" + " </div>\n" + "\n" + "\n" + " </section>\n" + "\n" + ' <section class="row-fluid api-issues" ng-if="selectedChartCriteria.chartName === \'Overview\'">\n' + ' <div class="span6">\n' + "\n" + ' <ul class="span12 info-details unstyled">\n' + ' <li class="title pie-label">App Version</li>\n' + " </ul>\n" + ' <div class="span12 app-usage-content">\n' + ' <chart id="appVersion" class="anim-chart"\n' + ' chartdata="appUsageCharts.appVersion.chart"\n' + '
type="pie" style="max-width:60%;margin:0 0 0 -5%;height:300px"\n' + ' titleicon="📊"\n' + ' titleiconclass="apichart"\n' + ' titlecolor="rgba(27,112,160,0.4)"\n' + ' titleimagetop="-6%"\n' + ' titleimageleft="-5%"></chart>\n' + ' <table class="table">\n' + " <thead>\n" + " <tr>\n" + " <th>App Version</th>\n" + " </tr>\n" + " </thead>\n" + " <tbody>\n" + ' <tr ng-repeat="app in appUsageCharts.appVersion.data.chartData">\n' + ' <td class="graph-row" >\n' + ' <div class="bar"></div>\n' + " {{app.attribute}}\n" + " </td>\n" + ' <td class="count">{{app.percentage | number:0}}%</td>\n' + " </tr>\n" + " </tbody>\n" + " </table>\n" + " </div>\n" + "\n" + " </div>\n" + "\n" + ' <div class="span6">\n' + "\n" + ' <ul class="span12 info-de
tails unstyled">\n' + ' <li class="title pie-label">Device Platform</li>\n' + " </ul>\n" + "\n" + ' <div class="span12 app-usage-content">\n' + ' <chart id="devicePlatform" class="anim-chart"\n' + ' chartdata="appUsageCharts.devicePlatform.chart"\n' + ' type="pie" style="max-width:60%;margin:0 0 0 -5%;height:300px"\n' + ' titleicon="📊"\n' + ' titleiconclass="apichart"\n' + ' titlecolor="rgba(27,112,160,0.4)"\n' + ' titleimagetop="-6%"\n' + ' titleimageleft="-5%"></chart>\n' + ' <table class="table">\n' + " <thead>\n" + " <tr>\n" + " <th>Platform</th>\n" + " </tr>\n" + " </thead>\n" + " <tbody>\n" + "\n" + ' <tr ng-repeat="app in appUsageCharts.devicePlatform.data.chartData">\n' + ' <td class="graph-row" >\n' + ' <div class="bar"></div>\n' + " {{app
.attribute}}\n" + " </td>\n" + ' <td class="count">{{app.percentage | number:0}}%</td>\n' + " </tr>\n" + " </tbody>\n" + " </table>\n" + " </div>\n" + "\n" + " </div>\n" + " </section>\n" + "\n" + "\n" + ' <section class="row-fluid" ng-if="selectedChartCriteria.chartName === \'Overview\'">\n' + ' <div class="span6 pareto-charts">\n' + ' <h2 class="title">Sessions by Device Model</h2>\n' + "\n" + ' <chart id="sessionsByModel" class="anim-chart"\n' + ' chartdata="appUsageCharts.sessionsByModel"\n' + ' type="column"\n' + ' height="300"></chart>\n' + " </div>\n" + "\n" + ' <div class="span6 pareto-charts">\n' + ' <h2 class="title">Sessions by OS Versions</h2>\n' + "\n" + ' <chart id="sessionsByModel" class="anim-chart"\n' + ' chartdata="appUsageCharts.sessionsByPlatform"\n' + ' type="column"\n' + ' height="300">
</chart>\n' + " </div>\n" + " </section>\n" + "\n" + "\n" + "\n" + "\n" + "\n" + "</div>\n" + "\n" + "\n");
- $templateCache.put("performance/beta-config.html", "<div>\n" + ' <page-title icon="" title="Beta Testing Configs"></page-title>\n' + "\n" + "\n" + ' <div class="row-fluid" >\n' + "\n" + ' <div class="span12">\n' + "\n" + ' <form class="form-horizontal configs">\n' + ' <div class="control-group">\n' + ' <slidecheckbox label="Enable Device Level Override" data="configData.deviceLevelOverrideEnabled"></slidecheckbox>\n' + " </div>\n" + "\n" + ' <div class="control-group">\n' + ' <label class="control-label">Matching Apigee Device Ids (one Id per line):</label>\n' + ' <div class="controls">\n' + " <textarea ng-model=\"deviceIdFilters\" ng-blur=\"updateFilter(deviceIdFilters,'deviceIdFilters','DEVICE_ID')\"></textarea>\n" + " </div>\n" + " </div>\n" + "\n" + ' <div class="control-group">\n' + ' <label class="contr
ol-label">Matching Telephone Numbers (Android Only):</label>\n' + ' <div class="controls">\n' + " <textarea ng-model=\"deviceNumberFilters\" ng-blur=\"updateFilter(deviceNumberFilters,'deviceNumberFilters','DEVICE_NUMBER')\"></textarea>\n" + " </div>\n" + " </div>\n" + "\n" + ' <h2 class="title">Monitoring Configs</h2>\n' + "\n" + ' <div class="control-group">\n' + ' <slidecheckbox label="Enable Log Capturing" data="configData.deviceLevelAppConfig.enableLogMonitoring"></slidecheckbox>\n' + " </div>\n" + ' <div class="control-group">\n' + ' <label class="control-label">Log Capture Levels</label>\n' + ' <div class="controls">\n' + ' <select ng-model="betaLogLevel" ng-options="l.label for l in logLevels" ng-change="updateLogLevel(betaLogLevel,\'deviceLevelAppConfig\')"></select>\n' + " </div>\n" + " </div>\n" + '
<div class="control-group">\n' + ' <slidecheckbox label="Enable Network Monitoring" data="configData.deviceLevelAppConfig.networkMonitoringEnabled"></slidecheckbox>\n' + " </div>\n" + ' <div class="control-group">\n' + ' <slidecheckbox label="Enable Device Data Capture" data="configData.deviceLevelAppConfig.deviceIdCaptureEnabled"></slidecheckbox>\n' + " </div>\n" + ' <div class="control-group">\n' + "\n" + ' <slidecheckbox label="Read Location" data="configData.deviceLevelAppConfig.locationCaptureEnabled"></slidecheckbox>\n' + "\n" + ' <slidecheckbox label="Read IMEI" data="configData.deviceLevelAppConfig.imeicaptureEnabled"></slidecheckbox>\n' + "\n" + ' <slidecheckbox label="Read Device Model" data="configData.deviceLevelAppConfig.deviceModelCaptureEnabled"></slidecheckbox>\n' + "\n" + ' <slidecheckbox label="Read Network Carrier" data="configData.
deviceLevelAppConfig.networkCarrierCaptureEnabled"></slidecheckbox>\n' + "\n" + ' <slidecheckbox label="Read Apigee Device ID" data="configData.deviceLevelAppConfig.deviceIdCaptureEnabled"></slidecheckbox>\n' + "\n" + " </div>\n" + ' <div class="control-group">\n' + ' <label class="control-label" for="inputUploadInt">Data Upload Interval (in Seconds)</label>\n' + ' <div class="controls">\n' + ' <input type="text" id="inputUploadInt" ng-model="configData.deviceLevelAppConfig.agentUploadIntervalInSeconds">\n' + " </div>\n" + " </div>\n" + ' <div class="control-group">\n' + ' <label class="control-label" for="inputSampRate">Sampling Rate (in Percentage)</label>\n' + ' <div class="controls">\n' + ' <input type="text" id="inputSampRate" ng-model="configData.deviceLevelAppConfig.samplingRate">\n' + " </div>\n" + " <
/div>\n" + ' <div class="control-group">\n' + ' <slidecheckbox label="Upload When Roaming" data="configData.deviceLevelAppConfig.enableUploadWhenRoaming"></slidecheckbox>\n' + " </div>\n" + ' <div class="control-group">\n' + ' <slidecheckbox label="Upload When Not on WIFI" data="configData.deviceLevelAppConfig.enableUploadWhenMobile"></slidecheckbox>\n' + " </div>\n" + "\n" + ' <h2 class="title">Application Specific Configs</h2>\n' + ' <div class="row-fluid" >\n' + ' <div class="span3" style="margin-right: 12px;">Tag</div>\n' + ' <div class="span3" style="margin-right: 15px;">Key</div>\n' + ' <div class="span3">Value</div>\n' + " </div>\n" + ' <div class="form-inline" ng-repeat="config in deviceLevelConfigParameters">\n' + ' <input name="category" type="text" class="input-large" ng-model="config.tag" re
quired>\n' + ' <input name="key" type="text" class="input-large" ng-model="config.paramKey" required> =\n' + ' <input name="value" type="text" class="input-large" ng-model="config.paramValue" required>\n' + ' <span class="hide">{{config.index = ($index + 1)}}</span>\n' + ' <button class="btn" ng-click="addRemoveConfig(config,\'deviceLevelConfigParameters\')" ng-show="deviceLevelConfigParameters.length != ($index + 1)">-</button>\n' + ' <button class="btn" ng-click="addRemoveConfig(config,\'deviceLevelConfigParameters\')" ng-show="deviceLevelConfigParameters.length == ($index + 1)">+</button>\n' + " </div>\n" + " <hr/>\n" + ' <button type="submit" class="btn btn-primary " ng-click="saveData(\'deviceLevelConfigParameters\')">Save Changes</button>\n' + "\n" + " </form>\n" + "\n" + " </div>\n" + "\n" + "\n" + " </div>\n" + "\n" + " </div>\n" + "\n" + "\n" + "\n" + "
</div>\n" + "\n" + "\n");
- $templateCache.put("performance/checkbox-template.html", "<div>\n" + '<label class="control-label">{{label}}</label>\n' + '<div class="controls">\n' + ' <div class="toggle-form">\n' + ' <input type="checkbox" class="check" ng-model="data"><b class="b switch"></b>\n' + ' <b class="b track"></b></div>\n' + "</div>\n" + "</div>");
- $templateCache.put("performance/configure.html", "<div>\n" + "\n" + '<section class="row-fluid">\n' + "\n" + ' <div class="span12">\n' + "\n" + ' <h2 class="chart-title">{{configData.appName}}</h2>\n' + "\n" + ' <div class="row-fluid" >\n' + "\n" + ' <div class="span6">\n' + "\n" + ' <form class="form-horizontal">\n' + ' <div class="control-group">\n' + ' <label class="control-label" for="inputAppId">App ID</label>\n' + ' <div class="controls">\n' + ' <input type="text" id="inputAppId" ng-model="configData.instaOpsApplicationId">\n' + " </div>\n" + " </div>\n" + ' <div class="control-group">\n' + ' <div class="controls">\n' + ' <label class="checkbox">\n' + ' <input type="checkbox" ng-model="configData.monitoringDisabled"> monitoringDisabled\n' + " </label>\n" + ' <button type="submit" class="btn">Sign in</button>\n' + "
</div>\n" + " </div>\n" + " </form>\n" + "\n" + " </div>\n" + "\n" + "\n" + " </div>\n" + "\n" + " </div>\n" + "\n" + "</section>\n" + "\n" + "</div>\n" + "\n" + "\n");
- $templateCache.put("performance/custom-events.html", '<h1 class="title"><i class="pictogram title">◴</i> Custom Events</h1>\n' + "\n" + "<div ng:include=\"'performance/includes/time-filters.html'\"></div>");
- $templateCache.put("performance/default-config.html", "<div>\n" + ' <page-title icon="📖" title="Default Configs"></page-title>\n' + "\n" + "\n" + ' <div class="row-fluid" >\n' + ' <div class="span12">\n' + ' <h2 class="title">Monitoring Configs</h2>\n' + ' <form class="form-horizontal configs">\n' + ' <div class="control-group">\n' + ' <slidecheckbox label="Enable Log Capturing" data="configData.defaultAppConfig.enableLogMonitoring"></slidecheckbox>\n' + " </div>\n" + ' <div class="control-group">\n' + ' <label class="control-label">Log Capture Levels</label>\n' + ' <div class="controls">\n' + ' <select ng-model="appConfigLogLevel" ng-options="l.label for l in logLevels" ng-change="updateLogLevel(appConfigLogLevel,\'defaultAppConfig\')"></select>\n' + " </div>\n" + " </div>\n" + ' <div class="control-group">\n' + ' <slidecheckbox l
abel="Enable Network Monitoring" data="configData.defaultAppConfig.networkMonitoringEnabled"></slidecheckbox>\n' + " </div>\n" + ' <div class="control-group">\n' + ' <slidecheckbox label="Enable Device Data Capture" data="configData.defaultAppConfig.sessionDataCaptureEnabled"></slidecheckbox>\n' + " </div>\n" + ' <div class="control-group">\n' + "\n" + ' <slidecheckbox label="Read Location" data="configData.defaultAppConfig.locationCaptureEnabled"></slidecheckbox>\n' + "\n" + ' <slidecheckbox label="Read IMEI" data="configData.defaultAppConfig.imeicaptureEnabled"></slidecheckbox>\n' + "\n" + ' <slidecheckbox label="Read Device Model" data="configData.defaultAppConfig.deviceModelCaptureEnabled"></slidecheckbox>\n' + "\n" + ' <slidecheckbox label="Read Network Carrier" data="configData.defaultAppConfig.networkCarrierCaptureEnabled"></slidecheckbox>\n' + "\n" + ' <slidecheckbox label="
Read Apigee Device ID" data="configData.defaultAppConfig.deviceIdCaptureEnabled"></slidecheckbox>\n' + "\n" + " </div>\n" + ' <div class="control-group">\n' + ' <label class="control-label" for="inputUploadInt">Data Upload Interval (in Seconds)</label>\n' + ' <div class="controls">\n' + ' <input type="text" id="inputUploadInt" ng-model="configData.defaultAppConfig.agentUploadIntervalInSeconds">\n' + " </div>\n" + " </div>\n" + ' <div class="control-group">\n' + ' <label class="control-label" for="inputSampRate">Sampling Rate (in Percentage)</label>\n' + ' <div class="controls">\n' + ' <input type="text" id="inputSampRate" ng-model="configData.defaultAppConfig.samplingRate">\n' + " </div>\n" + " </div>\n" + ' <div class="control-group">\n' + ' <slidecheckbox label="Upload When Roaming" data="configData.defaultAppConfig.enableUplo
adWhenRoaming"></slidecheckbox>\n' + " </div>\n" + ' <div class="control-group">\n' + ' <slidecheckbox label=" Upload When Not on WIFI" data="configData.defaultAppConfig.enableUploadWhenMobile"></slidecheckbox>\n' + " </div>\n" + "\n" + ' <h2 class="title">Application Specific Configs</h2>\n' + "\n" + ' <div class="row-fluid" >\n' + ' <div class="span3" style="margin-right: 12px;">Tag</div>\n' + ' <div class="span3" style="margin-right: 15px;">Key</div>\n' + ' <div class="span3">Value</div>\n' + " </div>\n" + ' <div class="form-inline " ng-repeat="config in defaultAppConfigParameters">\n' + ' <input name="category" type="text" class="input-large" ng-model="config.tag" required>\n' + ' <input name="key" type="text" class="input-large" ng-model="config.paramKey" required> =\n' + ' <input name="value" typ
e="text" class="input-large" ng-model="config.paramValue" required>\n' + ' <span class="hide">{{config.index = ($index + 1)}}</span>\n' + ' <button class="btn" ng-click="addRemoveConfig(config,\'defaultAppConfigParameters\')"\n' + ' ng-show="defaultAppConfigParameters.length != ($index + 1)">-\n' + " </button>\n" + ' <button class="btn" ng-click="addRemoveConfig(config,\'defaultAppConfigParameters\')"\n' + ' ng-show="defaultAppConfigParameters.length == ($index + 1)">+\n' + " </button>\n" + " </div>\n" + " <hr/>\n" + ' <button type="submit" class="btn btn-primary " ng-click="saveData(\'defaultAppConfigParameters\')">Save Changes</button>\n' + " </form>\n" + "\n" + " </div>\n" + "\n" + "\n" + " </div>\n" + "\n" + " </div>\n" + "\n" + "\n" + "\n" + "</div>\n" + "\n" + "\n");
- $templateCache.put("performance/demo-data.html", '<div id="demo-data-ctrl" ng-if="dataVals.showDemoBar" ng-cloak class="demo-holder">\n' + ' <div class="alert alert-demo alert-animate">\n' + ' <div class="toggle">\n' + ' <input type="checkbox" class="check" ng-model="dataVals.demoData">\n' + ' <b class="b switch"></b>\n' + ' <b class="b track"></b>\n' + " </div>\n" + "\n" + ' <div class="demo-text">\n' + " <i class=\"pictogram\">{{dataVals.demoData ? '💥' : ''}}</i>You are currently viewing <span class=\"bold\">{{dataVals.demoData ? 'demo data' : 'live data for your ' + currentApp + ' app'}}</span>.\n" + " </div>\n" + "\n" + " <div class=\"demo-holder-content\">DEMO MODE {{dataVals.demoData ? 'ON' : 'OFF'}}</div>\n" + " </div>\n" + "</div>");
- $templateCache.put("performance/errors-crashes.html", "<demo-data></demo-data>\n" + '<div ng-init="errorsCrashesSetup()">\n' + '<page-title icon="⚡" title="Errors & Crashes"></page-title>\n' + "\n" + '<div class="page-filters">\n' + " <span ng-include=\"'performance/includes/time-filters.html'\"></span>\n" + "</div>\n" + "\n" + "\n" + "\n" + "<!-- errors and crashes total row -->\n" + '<div id="popupHolder"></div>\n' + '<div id="pointPopupTemp">\n' + '<div id="pointPopup" class="hide" style="position:absolute" ng-mousedown="popup.startMoving(event);" ng-mouseup="popup.stopMoving();">\n' + ' <h3><i class="pictogram sub">⚡</i><span></span></h3><a class="pull-right" ng-click="hidePopup($event)">Close</a>\n' + ' <div class="content">\n' + "\n" + " </div>\n" + ' <div class="footer">\n' + " <a ng-click=\"scrollTo('logs')\">View all logs</a>\n" + " </div>\n" + "</div>\n" + "</div>\n" + "\n" + '<section class="row-fluid">\n' + "\n" + "\n" + "\n" + "</section
>\n" + '<section class="row-fluid">\n' + "\n" + "<div ng-class=\"ecDetailedView.value == 1 ? 'span8' : 'span12'\">\n" + "\n" + ' <h2 class="title with-icons">{{selectedChartCriteria.chartName}} <div class="pull-right">\n' + ' <a ng-if="selectedChartCriteria.chartName === \'Overview\'" ng-click="convertChartType(\'convertLineChart\')"><i class="pictogram">📈</i>line</a>\n' + ' <a ng-if="selectedChartCriteria.chartName === \'Overview\'" ng-click="convertChartType(\'convertAreaChart\')"><i class="pictogram">🔾</i>area</a></div></h2>\n' + "\n" + ' <div ng-include="\'performance/includes/no-data.html\'" ng-if="!chartDataPresent"></div>\n' + "\n" + ' <div class="main-chart-holder" ng-if="chartDataPresent">\n' + "\n" + ' <chart id="ecTotals" class="anim-chart"\n' + ' chartdata="ecCharts.totals"\n' + ' type="column"></chart>\n' + " </div>\n" + " <!--errors and crashes only (combined view)-->\n" + ' <div class="row-fluid summary-data errors-crashes"
ng-show="ecDetailedView.value === 1">\n' + "\n" + ' <div class="span6">\n' + ' <infobox datasrc="ecCharts.summary.totalAppErrors"\n' + ' currentcompare="ecCharts.summary.currentCompare"\n' + ' title="Total App Errors"\n' + ' class="errors"></infobox>\n' + " </div>\n" + "\n" + ' <div class="span6">\n' + ' <infobox datasrc="ecCharts.summary.totalCrashes"\n' + ' currentcompare="ecCharts.summary.currentCompare"\n' + ' title="Total Crashes"\n' + ' class="crashes"></infobox>\n' + " </div>\n" + "\n" + " </div>\n" + "\n" + " <!--errors only-->\n" + ' <div class="row-fluid summary-data errors" ng-if="ecDetailedView.value === 2">\n' + "\n" + ' <div class="span4">\n' + ' <infobox datasrc="ecCharts.summary.totalCriticalErrors"\n' + ' currentcompare="ecCharts.summary.currentCompare"\n' + ' title="Total Critical"\n' + ' class="critical"></
infobox>\n' + " </div>\n" + "\n" + ' <div class="span4">\n' + ' <infobox datasrc="ecCharts.summary.totalErrors"\n' + ' currentcompare="ecCharts.summary.currentCompare"\n' + ' title="Total Errors"\n' + ' class="errors"></infobox>\n' + " </div>\n" + "\n" + ' <div class="span4">\n' + ' <infobox datasrc="ecCharts.summary.totalWarnings"\n' + ' currentcompare="ecCharts.summary.currentCompare"\n' + ' title="Total Warnings"\n' + ' class="warnings"></infobox>\n' + " </div>\n" + " </div>\n" + "\n" + " <!--crashes only-->\n" + ' <div class="row-fluid summary-data crashes" ng-if="ecDetailedView.value === 3">\n' + "\n" + "\n" + "\n" + ' <div class="span12">\n' + ' <infobox datasrc="ecCharts.summary.totalCrashes"\n' + ' currentcompare="ecCharts.summary.currentCompare"\n' + ' title="Total Crashes"\n' + ' class="crashes"></infobox>\n' + "
</div>\n" + "\n" + "\n" + " </div>\n" + "\n" + "</div>\n" + "\n" + '<div class="span4 crash-summary" ng-if="ecDetailedView.value === 1">\n' + ' <h2 class="title">Crash Summary (Top 5)</h2>\n' + "\n" + ' <div class="row-fluid" style="text-align:center">\n' + "\n" + "\n" + ' <ul class="crashes-pie span12 info-details unstyled">\n' + ' <li class="small">App Version</li>\n' + "\n" + "\n" + ' <li style="width:250px;margin:10px auto 0 auto;">\n' + ' <chart id="appVersion"\n' + ' class="anim-chart"\n' + ' chartdata="ecCharts.appVersion.chart"\n' + ' type="pie" style="height:260px"\n' + ' titleicon="⚡"\n' + ' titleiconclass="chart"\n' + ' titlecolor="rgba(255,3,3,0.5)"\n' + ' titleimagetop="-6%"\n' + ' titleimageleft="-2%"></chart>\n' + " </li>\n" + "\n" + " </ul>\n" + "\n" + ' <ul class="crashes-pie span12 info-details unstyled">
\n' + ' <li class="small">Platforms</li>\n' + "\n" + "\n" + ' <li style="width:250px;margin:10px auto 0 auto;">\n' + ' <chart id="appVersion"\n' + ' class="anim-chart"\n' + ' chartdata="ecCharts.devicePlatform.chart"\n' + ' type="pie" style="height:260px"\n' + ' titleicon="⚡"\n' + ' titleiconclass="chart"\n' + ' titlecolor="rgba(255,3,3,0.5)"\n' + ' titleimagetop="-6%"\n' + ' titleimageleft="-2%"></chart>\n' + " </li>\n" + " </ul>\n" + "\n" + " </div>\n" + "</div>\n" + "\n" + "</section>\n" + '<section class="row-fluid" ng-if="ecDetailedView.value === 1">\n' + ' <div class="span12 pareto-charts">\n' + "\n" + ' <div ng-class="row-fluid">\n' + "\n" + ' <div id="deviceModelCrashes1" ng-if="rawLogs.rawDataType === \'logRawData\'" class="span6">\n' + ' <h2 class="title">Crashes by Device Models</h2>\n' + "\n" + ' <chart
id="deviceModels1"\n' + ' class="anim-chart"\n' + ' chartdata="ecCharts.deviceModels"\n' + ' type="column"\n' + ' height="300"></chart>\n' + "\n" + " </div>\n" + "\n" + "\n" + ' <div ng-if="rawLogs.rawDataType === \'logRawData\'" class="span6">\n' + ' <h2 class="title">Crashes by OS Versions</h2>\n' + "\n" + ' <chart id="platformVersions"\n' + ' class="anim-chart"\n' + ' chartdata="ecCharts.platformVersions"\n' + ' type="column"\n' + ' height="300"></chart>\n' + " </div>\n" + "\n" + " </div>\n" + "\n" + " </div>\n" + "</section>\n" + "\n" + '<balloon direction="south" ng-if="!chartDataPresent && logDataPresent">\n' + " Scroll down to see log data sent by your SDK.\n" + "</balloon>\n" + "\n" + '<section class="row-fluid">\n' + ' <div class="span12">\n' + "\n" + " <!--http://blogs.lessthandot.com/index.php/WebDev/UIDevelopment/AJAX/ang
ularjs-and-ng-grid-->\n" + ' <a name="logs"></a>\n' + ' <div class="row-fluid log-search" ng-controller="RawLogCtrl">\n' + ' <div class="span12">\n' + ' <h2 ng-show="rawLogs.rawDataType === \'logRawData\'" class="title">Raw Log Search</h2>\n' + "\n" + ' <h2 ng-hide="rawLogs.rawDataType === \'logRawData\'" class="title">Crash Log Search</h2>\n' + "\n" + ' <form ng-switch="rawLogs.rawDataType">\n' + "\n" + ' <div class="input-append span8">\n' + "\n" + ' <input ng-show="rawLogs.rawDataType === \'logRawData\'" type="text" placeholder="log search..."\n' + ' ng-model="rawLogSearch.logMessage" class="input-xxlarge" ng-change="loadMoreLogs()">\n' + ' <input ng-hide="rawLogs.rawDataType === \'logRawData\'" type="text" placeholder="crash log search..."\n' + ' ng-model="rawLogSearch.crashSummary" class="input-xxlarge" ng-change="loadMoreLogs()">\n' + ' <button type="button" class="btn
" ng-click="rawLogSearchShowAdv=!rawLogSearchShowAdv">{{rawLogSearchShowAdv ? \'Hide\' : \'Show\'}} Advanced</button>\n' + "\n" + " </div>\n" + ' <div class="span4 text-right" ng-if="rawLogs.rawData.length === 100 || rawLogSearch.pageNumber > 0">\n' + " {{rawLogSearch.pageNumber === 0 ? 1 : rawLogSearch.pageNumber * 100}} - {{rawLogSearch.pageNumber === 0 ? (1 * rawLogs.rawData.length) : (rawLogSearch.pageNumber + 1) * rawLogs.rawData.length}}\n" + ' <a class="btn btn-primary toolbar" ng-disabled="rawLogSearch.pageNumber === 0" ng-click="rawLogSearch.pageNumber > 0 ? prevPage() : \'\'"><i class="pictogram"></i></a>\n' + ' <a class="btn btn-primary toolbar" ng-disabled="rawLogs.rawData.length !== 100" ng-click="rawLogs.rawData.length === 100 ? nextPage() : \'\'"><i class="pictogram"></i></a>\n' + " </div>\n" + " </form>\n" + ' <form class="form-inline adv-rawlog-form" ng-show="rawLogSearchShowAd
v">\n' + ' <br style="clear:both"/>\n' + ' <div class="input-prepend">\n' + ' <span class="add-on">Tag</span>\n' + ' <input class="input-small" type="text" ng-model="rawLogSearch.tag"\n' + ' ng-attr-placeholder="{{rawLogs.rawData[0].tag}}..." ng-change="loadMoreLogs()">\n' + " </div>\n" + ' <div class="input-prepend" ng-show="rawLogs.rawDataType === \'logRawData\'">\n' + ' <span class="add-on">Log Level</span>\n' + ' <input class="input-mini" type="text" ng-model="rawLogSearch.logLevel"\n' + ' ng-attr-placeholder="{{rawLogs.rawData[0].logLevel}}..." ng-change="loadMoreLogs()">\n' + " </div>\n" + ' <div class="input-prepend">\n' + ' <span class="add-on">Device Model</span>\n' + ' <input class="input-small" type="text" ng-model="rawLogSearch.deviceModel"\n' + ' ng-attr-placeholder="{{rawLogs.rawData[0].deviceModel
}}..." ng-change="loadMoreLogs()">\n' + " </div>\n" + ' <div class="input-prepend">\n' + ' <span class="add-on">Platform</span>\n' + ' <input class="input-small" type="text" ng-model="rawLogSearch.devicePlatform"\n' + ' ng-attr-placeholder="{{rawLogs.rawData[0].devicePlatform}}..." ng-change="loadMoreLogs()">\n' + " </div>\n" + ' <div class="input-prepend">\n' + ' <span class="add-on">OS Version</span>\n' + ' <input class="input-small" type="text" ng-model="rawLogSearch.deviceOperatingSystem"\n' + ' ng-attr-placeholder="{{rawLogs.rawData[0].deviceOperatingSystem}}..." ng-change="loadMoreLogs()">\n' + " </div>\n" + ' <div class="input-prepend">\n' + ' <span class="add-on">Device ID</span>\n' + ' <input class="input-small" type="text" ng-model="rawLogSearch.deviceId"\n' + ' ng-attr-placeholder="{{rawLogs.rawData[0
].deviceId}}..." ng-change="loadMoreLogs()">\n' + " </div>\n" + ' <button type="submit" class="btn"\n' + " ng-click=\"rawLogSearch.tag='';rawLogSearch.deviceModel='';rawLogSearch.devicePlatform='';rawLogSearch.deviceOperatingSystem='';rawLogSearch.deviceId='';loadMoreLogs()\">\n" + " Clear All Advanced\n" + " </button>\n" + " </form>\n" + ' <table class="table table-striped table-bordered raw-log-table">\n' + " <thead>\n" + " <tr>\n" + ' <th class="log-time-header"><div class="raw-data-text">Time</div></th>\n' + ' <th class="message-header"><div class="raw-data-text">Message</div>\n' + "\n" + "\n" + " </th>\n" + " </tr>\n" + " </thead>\n" + " <tbody>\n" + " <tr ng-repeat=\"log in rawLogs.rawData | orderBy:'timeStamp':true | rawLogFilter:rawLogSearch:['logMessage','crashSummary']\">\n" + ' <td class="log-time-holder">
\n' + " <div>\n" + " <span ng-class=\"rawLogs.rawDataType === 'logRawData' ? 'log-time1' : 'log-time2'\">{{log.timeStamp | date:'M-dd-yyyy HH:mm:ss'}}</span>\n" + ' <span ng-if="rawLogs.rawDataType === \'logRawData\'" class="log-level {{log.logLevel}}">\n' + " {{log.logLevel === 'D' ? 'Debug' : ''}}\n" + " {{log.logLevel === 'A' ? 'Assert' : ''}}\n" + " {{log.logLevel === 'I' ? 'Info' : ''}}\n" + " {{log.logLevel === 'W' ? 'Warn' : ''}}\n" + " {{log.logLevel === 'E' ? 'Error' : ''}}\n" + "\n" + " </span>\n" + " </div>\n" + " </td>\n" + " <td >\n" + " <span ng-if=\"rawLogs.rawDataType === 'logRawData'\">{{log.logMessage}}</span>\n" + " <span ng-if=\"rawLogs.rawDataType !== 'logRawData'\">{{log.crashSummary ? log.crashSummary : 'No crash summary available'}}</span>\n" + "\n" + ' <div class
="row-meta">\n' + " <span ng-show=\"rawLogs.rawDataType === 'logRawData'\">\n" + ' <span class="label">Tag:</span>\n' + ' <span class="value">{{log.tag}}</span>\n' + ' <span class="label">Network Type:</span>\n' + ' <span class="value">{{log.networkType}}</span>\n' + ' <span class="label">Carrier:</span>\n' + ' <span class="value">{{log.networkCarrier}}</span>\n' + " </span>\n" + ' <span class="label">Device ID:</span>\n' + ' <span class="value">{{log.deviceId}}</span>\n' + ' <span class="label">Platform:</span>\n' + ' <span class="value">{{log.devicePlatform}}</span>\n' + ' <span class="label">OS:</span>\n' + ' <span class="value">{{log.deviceOperatingSystem}}</span>\n' + ' <span class="label">Device Model:</span>\n' + ' <span class="
value">{{log.deviceModel}}</span>\n' + ' <span class="value" ng-hide="rawLogs.rawDataType === \'logRawData\'"><a ng-href="{{log.crashLogUrl}}">Download Crash Log</a></span>\n' + " </div>\n" + " </td>\n" + " </tr>\n" + " </tbody>\n" + " </table>\n" + ' <div class="row-fluid">\n' + ' <div class="input-append span8">\n' + "\n" + "\n" + " </div>\n" + ' <div class="span4 text-right" ng-if="rawLogs.rawData.length === 100 || rawLogSearch.pageNumber > 0">\n' + " {{rawLogSearch.pageNumber === 0 ? 1 : rawLogSearch.pageNumber * 100}} - {{rawLogSearch.pageNumber === 0 ? (1 * rawLogs.rawData.length) : (rawLogSearch.pageNumber + 1) * rawLogs.rawData.length}}\n" + ' <a class="btn btn-primary toolbar" ng-disabled="rawLogSearch.pageNumber === 0" ng-click="rawLogSearch.pageNumber > 0 ? prevPage() : \'\'"><i class="pictogram"></i></a>\n' + ' <a class="btn btn-prima
ry toolbar" ng-disabled="rawLogs.rawData.length !== 100" ng-click="rawLogs.rawData.length === 100 ? nextPage() : \'\'"><i class="pictogram"></i></a>\n' + " </div>\n" + " </div>\n" + " </div>\n" + "\n" + " </div>\n" + " </div>\n" + "</section>\n" + "\n" + "</div>\n" + "\n" + "\n");
- $templateCache.put("performance/errors-crashes/crashes.html", "");
- $templateCache.put("performance/errors-crashes/errors.html", "");
- $templateCache.put("performance/event-config.html", "<div>\n" + "\n" + ' <section class="row-fluid">\n' + "\n" + ' <div class="span12">\n' + "\n" + ' <h1 class="title"><i class="pictogram title">⇆</i> Event Configs</h1>\n' + "\n" + ' <div class="row-fluid" >\n' + "\n" + ' <div class="span12">\n' + ' <h2 class="title"></h2>\n' + ' <form class="form-horizontal">\n' + "\n" + " </form>\n" + "\n" + " </div>\n" + "\n" + "\n" + " </div>\n" + "\n" + " </div>\n" + "\n" + " </section>\n" + "\n" + "</div>\n" + "\n" + "\n");
- $templateCache.put("performance/includes/info-box.html", '<ul class="info-details unstyled">\n' + ' <li class="title small">{{title}}</li>\n' + ' <li class="top-5-crash info-box">\n' + ' <div class="summary-container {{datasrc.color}}">\n' + " {{datasrc.label}}\n" + ' <div class="compare-data" ng-show="currentcompare != \'NOW\'">\n' + " <span ng-class=\"currentcompare\">({{currentcompare == 'YESTERDAY' && 'Yesterday' || 'Last Week'}}) {{datasrc.value}}</span>\n" + " </div>\n" + " </div>\n" + " </li>\n" + "</ul>");
- $templateCache.put("performance/includes/no-data.html", '<div class="main-chart-holder no-data">\n' + ' <bsmodal id="needHelp"\n' + ' title="Need Help?"\n' + ' close="hideModal"\n' + ' closelabel="Cancel"\n' + ' extrabutton="needHelpDialog"\n' + ' extrabuttonlabel="Get Help"\n' + " ng-cloak>\n" + " <p>Do you want to contact support? Support will get in touch with you as soon as possible.</p>\n" + " </bsmodal>\n" + ' <div class="no-data-msg" >\n' + ' <div class="waiting" ng-if="chartDataWaiting">\n' + ' <div class="bars" id="bar1"></div>\n' + ' <div class="bars" id="bar2"></div>\n' + ' <div class="bars" id="bar3"></div>\n' + " </div>\n" + ' <div ng-if="!chartDataPresent && !chartDataWaiting && !logDataPresent">\n' + ' <div class="content">\n' + " No data detected for this time range.\n" + " </div>\n" + ' <button ng-click="showModal(\'needHelp\')" ng-if="performance.showHelp
Button" class="btn glow">I have installed the SDK and need help!</button>\n' + ' <div class="content" style="margin: 10px 0 10px 0" ng-if="performance.showHelpButton">\n' + " or\n" + " </div>\n" + ' <button ng-click="toggleDemoData()" onclick="this.disabled=true" class="btn btn-primary action">View demo data</button>\n' + " </div>\n" + " </div>\n" + "</div>");
- $templateCache.put("performance/includes/time-filters.html", "<!-- filtering -->\n" + "\n" + "\n" + " <!-- custom errors-crashes filtering -->\n" + ' <div class="btn-group" ng-if="ecHideChartFilters === true">\n' + ' <a class="btn dropdown-toggle filter-selector action" data-toggle="dropdown">\n' + ' <span class="filter-ec">{{ecDetailedView.label}}</span>\n' + ' <span class="caret"></span>\n' + " </a>\n" + ' <ul class="dropdown-menu">\n' + ' <li ng-repeat="detailedView in ecDetailedViewList" class="filterItem"><a ng-click="changeEcDetailedView(detailedView)">{{detailedView.label}}</a></li>\n' + " </ul>\n" + " </div>\n" + " <!--common/global monitoring filters-->\n" + ' <div class="btn-group" ng-if="ecHideChartFilters !== true || ecDetailChartFilters === true">\n' + "\n" + ' <a class="btn dropdown-toggle filter-selector" data-toggle="dropdown">\n' + ' <span class="filter-label">{{selectedChartCriteria.chartName}}</span>\n' + ' <spa
n class="caret"></span>\n' + " </a>\n" + ' <ul class="dropdown-menu" chart-filter="chartCriteria">\n' + " </ul>\n" + " </div>\n" + ' <div class="btn-group">\n' + ' <a class="btn dropdown-toggle filter-selector" data-toggle="dropdown">\n' + ' <span class="filter-label">{{selectedtimefilter.label}}</span>\n' + ' <span class="caret"></span>\n' + " </a>\n" + ' <ul class="dropdown-menu" time-filter="timeFilters">\n' + " </ul>\n" + " </div>\n" + " <div class=\"btn-group compare\" ng-class=\"(currentCompare === 'LAST_WEEK') ? 'selected' : ''\">\n" + ' <a class="btn filter-selector" ng-click="compare(\'LAST_WEEK\',false)">\n' + ' <span class="filter-label"><i class="pictogram"></i>Compare Last Week</span>\n' + " </a>\n" + " </div>\n" + " <div class=\"btn-group compare\" ng-class=\"(currentCompare === 'YESTERDAY') ? 'selected' : ''\">\n" + ' <a class="btn filter-selector" ng-click="compare(\'YESTERDAY\',false)">\n' + ' <span cla
ss="filter-label"><i class="pictogram"></i>Compare Yesterday</span>\n' + " </a>\n" + " </div>\n" + ' <div class="pull-right auto-update-container">\n' + ' <a class="auto-updates" ng-show="showAutoRefresh && !hideAutoupdate" ng-click="toggleAutoUpdate()"><i ng-if="autoUpdate !== null" class="pictogram title" style="width:13px">■</i><i ng-if="autoUpdate === null" class="pictogram title" style="width:13px">▶</i> Turn auto updates <span ng-if="autoUpdate !== null">off ({{autoUpdateTimer}})</span><span ng-if="autoUpdate === null">on</span></a>\n' + " </div>\n");
- $templateCache.put("push/push-config.html", '<div class="content-page">\n' + ' <page-title icon="⚒" title="Configuration"></page-title>\n' + "\n" + "\n" + ' <bsmodal id="deleteNotifier"\n' + ' title="Delete Notifier"\n' + ' close="hideModal"\n' + ' closelabel="Cancel"\n' + ' extrabutton="deleteNotifiersDialog"\n' + ' extrabuttonlabel="Delete"\n' + " ng-cloak>\n" + " <p>Are you sure you want to delete the notifier(s)?</p>\n" + " </bsmodal>\n" + "\n" + ' <a style="float: right" target="_blank" href="http://apigee.com/docs/usergrid/content/push-notifications" class="notifications-links">Learn more in our docs</a>\n' + " <tabs>\n" + ' <pane heading="Apple">\n' + ' <div style="margin-top: 10px;"> <!-- ng-controller="PushConfigCtrl"-->\n' + ' <div class="user-header-title">Apple Push Notification Service</div>\n' + " <br>\n" + " A Notifier allows App Services to connect to and
deliver a message to a communication provider such as\n" + " Apple's APNs. Upload Development and Production Certificates (.p12) to set up a bridge between your app\n" + " and APNs for push notifications on iOS devices.\n" + "\n" + " For more help: view our\n" + ' <a href="#!/push/getStarted" class="notifications-links">getting started page</a>\n' + " for more info on how to generate and download an iOS .p12 certificate at the Apple Developer Connection website.\n" + " <br>\n" + " <br>\n" + ' <form name="iosNotifierForm" id="iosNotifierForm" ng-submit="createAppleNotifier()" class="form-horizontal" novalidate>\n' + "\n" + " <fieldset>\n" + ' <div class="control-group">\n' + ' <label for="ios-notifier-name"><strong>Name this notifier </strong></label>\n' + ' <div class="">\n' + ' <input type="text" id="ios-notifier-name" required ug-validate ng-model="notif
ier.appleNotifierName" class="" class="span6">\n' + " <br>\n" + " The notifier name is used as the key for push data. Give this a name that describes the certificate being uploaded.\n" + " </div>\n" + " <br>\n" + ' <label for="ios-cert"><strong>Certificate </strong></label>\n' + ' <div class="">\n' + ' <input type="file" data-file="param.file" id="ios-cert" />\n' + " </div>\n" + " <br>\n" + " <strong>Environment </strong>\n" + ' <div class="">\n' + ' <select ng-model="notifier.appleEnvironment" required ug-validate id="ios-env">\n' + ' <option value="development">development</option>\n' + ' <option value="production">production</option>\n' + " </select>\n" + " </div>\n" + " <br>\n" + " <strong>Certificate Password</strong>\n" + '
<div class="">\n' + ' <input ng-model="notifier.appleCertPassword" type="text" title="Please enter a password." class="span6" autocomplete="off" placeholder="ex: appledev"/>\n' + " <br>\n" + " Only applicable if your certificate is password protected\n" + " </div>\n" + " </div>\n" + "\n" + ' <input type="submit" ng-disabled="!iosNotifierForm.$valid" class="btn btn-primary" value="Create Notifier"/>\n' + " </fieldset>\n" + " </form>\n" + "\n" + " </div>\n" + "\n" + " </pane>\n" + ' <pane heading="Android">\n' + "\n" + ' <div style="margin-top: 10px;">\n' + ' <span class="title">Google Cloud Messaging</span>\n' + " <br>\n" + " A Notifier allows App Services to connect to and deliver a message to a communication provider such as\n" + " Google Cloud Messaging (GCM). Copy and paste your API key to create a bridge between your app\n" + "
and GCM for push notifications on Android devices..\n" + " <br><br>\n" + "\n" + ' For more help: see our <a href="#!/getting-started/setup" class="notifications-links">getting started page</a> page.\n' + "\n" + ' <form id="droidNotifierForm" name="droidNotifierForm" ng-submit="createAndroidNotifier()" class="form-horizontal" novalidate>\n' + " <fieldset>\n" + ' <div class="control-group">\n' + " <strong>Name this notifier </strong>\n" + " <div >\n" + ' <input ng-model="notifier.androidNotifierName" id="droid-notifier-name" required ug-validate type="text" class="span6" autocomplete="off" placeholder="ex: androidDev"/>\n' + " <br>\n" + " The notifier name is used as the key for push data. Give this a name that describes the API key being uploaded.\n" + " </div>\n" + " </div>\n" + "\n" + ' <div class="control-group">\n' + " <
strong>API Key </strong>\n" + " <div >\n" + ' <input ng-model="notifier.androidNotifierAPIKey" id="droid-key-value" required type="text" class="span6" autocomplete="off" ug-validate/>\n' + " </div>\n" + " </div>\n" + ' <input type="submit" href="" class="btn btn-primary" ng-disabled="!droidNotifierForm.$valid" value="Create Notifier"/>\n' + " </fieldset>\n" + " </form>\n" + " </div>\n" + "\n" + " </pane>\n" + ' <pane heading="Notifiers">\n' + "\n" + ' <bsmodal id="deleteNotifiers"\n' + ' title="Are you sure you want to delete the notifiers(s)?"\n' + ' close="hideModal"\n' + ' closelabel="Cancel"\n' + ' extrabutton="deleteNotifiersDialog"\n' + ' extrabuttonlabel="Delete"\n' + " ng-cloak>\n" + " <fieldset>\n" + ' <div class="control-group">\n' + " </d
iv>\n" + " </fieldset>\n" + " </bsmodal>\n" + "\n" + ' <span class="button-strip">\n' + ' <button class="btn btn-primary" ng-disabled="!valueSelected(notifiersCollection._list)" ng-click="deleteNotifiersDialog()">Delete Notifier(s)</button>\n' + " </span>\n" + ' <table class="table table-striped collection-list">\n' + " <tbody>\n" + ' <tr class="zebraRows notifications-row">\n' + ' <td style="width: 30px;"><input type="checkbox" ng-click="selectAllEntities(notifiersCollection._list,this,\'queryBoxesSelected\',true)"></td>\n' + ' <td class="notifications-details bold-header">Provider</td>\n' + ' <td class="notifications-details bold-header">Notifier</td>\n' + " </tr>\n" + "\n" + ' <tr class="zebraRows notifications-row" ng-repeat="notifier in notifiersCollection._list">\n' + " <td>\n" + " <input\n" + ' type="checkbox"\n' + ' ng-value="notifier
.uuid"\n' + "\n" + ' ng-model="notifier.checked"\n' + " >\n" + " </td>\n" + " <td class=\"details\">{{notifier.get('provider')}}</td>\n" + " <td class=\"details\">{{notifier.get('name')}}</td>\n" + " </tr>\n" + " </table>\n" + " </pane>\n" + "\n" + "\n" + " </tabs>\n" + "\n" + "</div>");
- $templateCache.put("push/push-get-started.html", "\n" + '<div class="content-page">\n' + ' <page-title icon="" title="Getting Started"></page-title>\n' + "\n" + "\n" + "\n" + " <div>\n" + " <tabs>\n" + ' <pane heading="Apple">\n' + ' <span class="title">Set up Push Notifications for Apple iOS</span>\n' + ' <div class="notifications-get-started">\n' + ' <div class="header">\n' + ' <img src="img/push/step_1.png" style="float: left;padding-right: 10px;">\n' + ' <div style="padding-top: 9px;">\n' + ' Follow <a target="_blank" href="http://apigee.com/docs/usergrid/content/push-notifications" class="notifications-links">the process</a> to generate and download an iOS .p12 certificate at the <a href="https://developer.apple.com/ios/manage/overview/index.action">Apple Developer Connection website</a>.\n' + " </div>\n" + " </div>\n" + ' <img style="margin-bottom: -5px;" src="img
/push/APNS_cert_upload.png">\n' + " </div>\n" + "\n" + ' <div class="notifications-get-started">\n' + ' <div class="header">\n' + ' <img src="img/push/step_2.png" style="float: left;padding-right: 10px;">\n' + ' <div style="padding-top: 9px;">\n' + " Add the certificates to set up your notifiers.\n" + " </div>\n" + " </div>\n" + ' <div style="">\n' + ' <a href="#!/push/configuration">Upload a certificate and create the connection to APNs.</a>\n' + " </div>\n" + ' <img style="margin-left: 50px; margin-bottom: -5px;" src="img/push/APNS_certification.png">\n' + " </div>\n" + "\n" + ' <div class="notifications-get-started">\n' + ' <div class="header">\n' + ' <img src="img/push/step_3.png" style="float: left;padding-right: 10px;">\n' + ' <div style="padding-top: 9px;">\n' + " Compose and schedule a push notification.
\n" + " </div>\n" + " </div>\n" + ' <div style="">\n' + ' <a href="#!/push/sendNotification">Send a push notification.</a>\n' + " </div>\n" + " <br><br>\n" + ' <img style="margin-left: 58px; margin-bottom: -5px;" src="img/push/iphone_message.png">\n' + " </div>\n" + " </pane>\n" + ' <pane heading="Android">\n' + ' <span class="title">Set up Push Notifications for Google Android</span>\n' + ' <div class="notifications-get-started">\n' + ' <div class="header">\n' + ' <img src="img/push/step_1.png" style="float: left;padding-right: 10px;">\n' + ' <div style="padding-top: 9px;">\n' + ' Retrieve your API key from the <a href="https://code.google.com/apis/console/" target="_blank">Android API Developer website</a>\n' + " </div>\n" + " </div>\n" + ' <img style="margin-bottom: -5px;" src="img/push/google_api_key.png">\n' +
" </div>\n" + "\n" + ' <div class="notifications-get-started">\n' + ' <div class="header">\n' + ' <img src="img/push/step_2.png" style="float: left;padding-right: 10px;">\n' + ' <div style="padding-top: 9px;">\n' + " Add your API key to set up your notifiers.\n" + " </div>\n" + " </div>\n" + ' <div style="">\n' + ' <a href="#!/push/configuration">Copy and paste your Google API Access key.</a>\n' + " </div>\n" + ' <img style="margin-left: 50px; margin-bottom: -5px;" src="img/push/APNS_certification.png">\n' + " </div>\n" + "\n" + ' <div class="notifications-get-started">\n' + ' <div class="header">\n' + ' <img src="img/push/step_3.png" style="float: left;padding-right: 10px;">\n' + ' <div style="padding-top: 9px;">\n' + " Compose and schedule a push notification.\n" + " </div>\n" + " </div>\n
" + ' <div style="">\n' + ' <a href="#!/push/sendNotification">Send a push notification.</a>\n' + " </div>\n" + " <br><br>\n" + ' <img style="margin-left: 58px; margin-bottom: -5px;" src="img/push/android-notification.png">\n' + " </div>\n" + "\n" + " </pane>\n" + " </tabs>\n" + " </div>\n" + "</div>\n");
- $templateCache.put("push/push-history.html", '<div class="content-page" style="min-height: 500px;">\n' + ' <page-title icon="✇" title="Message History"></page-title>\n' + "\n" + "\n" + "\n" + ' <section class="row-fluid">\n' + ' <div class="span12">\n' + ' <a style="float: right" target="_blank" href="http://apigee.com/docs/usergrid/content/push-notifications" class="notifications-links">Learn more in our docs</a>\n' + "\n" + ' <div class="pull-left" style="margin-top: 10px;">\n' + ' <ul class="nav nav-pills">\n' + ' <li ng-class="selectedHistory.name === option.name ? \'active\' : \'\'" ng-repeat="option in historyList"><a ng-click="showHistory(option)">{{option.name}}</a></li>\n' + " </ul>\n" + " </div>\n" + " </div>\n" + " </section>\n" + ' <section class="row-fluid">\n' + ' <div class="span12">\n' + ' <div ng-if="notificationCollection._list.length === 0">\n' + " No messages found\n" +
" </div>\n" + "\n" + ' <div ng-repeat="notification in notificationCollection._list">\n' + ' <div style="border: 1px solid #aaa;">\n' + ' <div class="notifications-header">\n' + ' <div style="float: left">\n' + " <strong>Send Date:</strong>\n" + " {{getNotificationStartedDate(notification._data) | date:'EEEE, MMMM d, y h:mm:ss a'}}\n" + ' <div style="margin-top: 10px;">\n' + ' <img ng-src="{{getStateImage(notification)}}" style="vertical-align:middle;margin-top: -3px;"> {{getStateMessage(notification)}}\n' + " </div>\n" + " </div>\n" + ' <div style="float: right; text-align: right;">\n' + ' <a href="" class="notifications-links" ng-click="viewReceipts(notification._data.uuid)">view details</a>\n' + " <br>Total Sent: {{notification._data.statistics.sent ? notification._data.statistics.sent : 0}} Total Erro
rs: {{notification._data.statistics.errors ? notification._data.statistics.errors : 0}}\n" + " <br>\n" + " <b>UUID</b>:\n" + ' <a href="" ng-click="viewReceipts(\'{{notification._data.uuid}}\')">{{notification._data.uuid}}</a>\n' + " </div>\n" + " </div>\n" + ' <div style="padding: 10px;">\n' + " <div> payload: {{notification._data.payloads}} </div>\n" + ' <div ng-if="notification._data.errorMessage"> error message: {{notification._data.errorMessage}} </div>\n' + " </div>\n" + " </div>\n" + " <br>\n" + " </div>\n" + "\n" + ' <div style="height:20px"> </div>\n' + ' <div style="padding: 10px 5px 10px 5px">\n' + ' <button class="btn btn-primary" ng-click="getPrevious()" style="display:{{previous_display}}">< Previous</button>\n' + ' <button class="btn btn-primary" ng-click="getNext()" style="display:{{next_displ
ay}}; float:right;">Next ></button>\n' + " </div>\n" + " </div>\n" + " </section>\n" + "</div>\n");
- $templateCache.put("push/push-receipts.html", '<div class="content-page" style="min-height: 500px;">\n' + ' <span style="float: left">\n' + ' <a href="#!/push/history" class="notifications-links" id="return-to-notifications"><- Return to All Notifications</a></span>\n' + " <br>\n" + "\n" + ' <div style="clear: both;"> </div>\n' + ' <table class="table">\n' + " <tbody>\n" + ' <tr class="zebraRows notifications-row">\n' + ' <td class="notifications-details bold-header">Created</td>\n' + ' <td class="notifications-details bold-header">Payload</td>\n' + ' <td class="notifications-details bold-header">Sent</td>\n' + ' <td class="notifications-details bold-header">Error</td>\n' + " </tr>\n" + "\n" + ' <tr class="zebraRows notifications-row" ng-repeat="receipt in receiptsCollection._list">\n' + " <td class=\"details\">{{receipt.get('created')}}</td>\n" + " <td class=\"details\">{{receipt.get('payload')}}</td>\n" + " <td cla
ss=\"details\">{{receipt.get('sent')}}</td>\n" + " <td class=\"view-details\">{{receipt.get('errorCode') + (receipt.get('errorCode') ? ':' : '')}} {{receipt.get('errorMessage')}}</td>\n" + " </tr>\n" + " </table>\n" + " <br>\n" + "\n" + "\n" + "\n" + ' <div style="height:20px"> </div>\n' + ' <div style="padding: 10px 5px 10px 5px">\n' + ' <button class="btn btn-primary" ng-click="getPrevious()" style="display:{{previous_display}}">< Previous</button>\n' + ' <button class="btn btn-primary" ng-click="getNext()" style="display:{{next_display}}; float:right;">Next ></button>\n' + " </div>\n" + "\n" + "</div>\n" + "\n" + "\n" + "\n" + '<!--div id="notificationsReceipt-panel" class="panel-buffer">\n' + ' <div class="well thingy">\n' + ' <span class="title">Notification Receipts</span>\n' + ' <span style="float: right"><a href="#" class="notifications-links" id="return-to-notifications"><- Return to All Notifications</a></span>\n' + " </div>\n" + ' <div sty
le="float: left">\n' + ' <ul class="nav nav-pills">\n' + ' <li class="active"><a href="#" id="view-notification-receipt-all">All</a></li>\n' + ' <li><a href="#" id="view-notification-receipt-received">Received</a></li>\n' + ' <li><a href="#" id="view-notification-receipt-failed">Failed</a></li>\n' + " </ul>\n" + " </div>\n" + ' <div style="margin-top:35px;"> </div>\n' + ' <div id="notification-receipts-display">\n' + " <br><br>No Notifications found.\n" + " </div>\n" + "\n" + ' <ul id="notification-receipt-pagination" class="pager">\n' + ' <li style="display: none" id="notification-receipt-previous" class="previous"><a >← Previous</a></li>\n' + ' <li style="display: none" id="notification-receipt-next" class="next"><a >Next →</a></li>\n' + " </ul>\n" + "\n" + "</div-->");
- $templateCache.put("push/push-send-notification.html", '<div class="content-page">\n' + "\n" + "\n" + ' <page-title icon="🔿" title="Send Notification"></page-title>\n' + "\n" + "\n" + ' <a style="float: right" target="_blank" href="http://apigee.com/docs/usergrid/content/push-notifications" class="notifications-links">Learn more in our docs</a>\n' + "\n" + ' <form id="query-inputs" class="notifcations-form" ng-submit="scheduleNotification()" novalidate name="send">\n' + " <h4>Notifier and Recipients</h4>\n" + " Choose the Notifier (a configured notification service) to connect with for this push notification. Only users\n" + " with devices registered with this notifier will receive the push notification. If a group is selected, only the users\n" + " in the selected goup, with devices registered with this notifier, will receive the push notification.\n" + "\n" + " <br/><br/>\n" + ' <label for="send-notification-notifier">Notifier:</label>\n' + '
<select name="notifierName" ng-required="true" id="send-notification-notifier" ng-model="send.selectedNotifier" ng-options="n._data.name for n in notifiersCollection">\n' + ' <option value="">Choose Notifier</option>\n' + " </select>\n" + ' <span ng-sho
<TRUNCATED>