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/08/04 21:57:49 UTC
[19/54] [abbrv] [partial] more updates to look and feel
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/11243eff/deleted/dist-cov/usergrid-portal/archive/js/app/console.js
----------------------------------------------------------------------
diff --git a/deleted/dist-cov/usergrid-portal/archive/js/app/console.js b/deleted/dist-cov/usergrid-portal/archive/js/app/console.js
deleted file mode 100644
index cb6da03..0000000
--- a/deleted/dist-cov/usergrid-portal/archive/js/app/console.js
+++ /dev/null
@@ -1,5397 +0,0 @@
-function apigee_console_app(Pages, query_params) {
- //This code block *WILL NOT* load before the document is complete
- window.Usergrid = window.Usergrid || {};
- Usergrid.console = Usergrid.console || {};
-
- // for running Apigee App Services as a local server
- var LOCAL_STANDALONE_API_URL = "http://localhost/usergrid";
- var LOCAL_TOMCAT_API_URL = "http://localhost:8080/ROOT";
- var LOCAL_API_URL = LOCAL_STANDALONE_API_URL;
- var PUBLIC_API_URL = "https://api.usergrid.com/";
- var FORCE_PUBLIC_API = true; // Always use public API
- if (!FORCE_PUBLIC_API && (document.domain.substring(0,9) == "localhost")) {
- Usergrid.ApiClient.setApiUrl(LOCAL_API_URL);
- }
-
- String.prototype.endsWith = function (s) {
- return (this.length >= s.length && this.substr(this.length - s.length) == s);
- };
-
- if (query_params.api_url) {
- if (!query_params.api_url.endsWith('/')) {
- query_params.api_url += '/';
- }
- Usergrid.ApiClient.setApiUrl(query_params.api_url);
- } else {
- if(window.location.host === 'localhost'){
- //local = DIT
- Usergrid.ApiClient.setApiUrl('http://apigee-internal-prod.jupiter.apigee.net/');
- }if(window.location.host === 'appservices.apigee.com' && location.pathname.indexOf('/dit') >= 0){
- //DIT
- Usergrid.ApiClient.setApiUrl('http://apigee-internal-prod.jupiter.apigee.net/');
- }else if(window.location.host === 'appservices.apigee.com' && location.pathname.indexOf('/mars') >= 0 ){
- //staging
- Usergrid.ApiClient.setApiUrl('http://apigee-internal-prod.mars.apigee.net/');
- }
- }
- //Display message page in case there is a a timeout to the API
- Usergrid.ApiClient.setCallTimeoutCallback(function(){
- showMessagePage();
- });
-
- var HIDE_CONSOLE = query_params.hide_console || "";
-
- if (HIDE_CONSOLE.indexOf("true") >= 0) {
- $('#sidebar-menu ul li a[href="#console"]').hide();
- }
-
- var OFFLINE = false;
- var OFFLINE_PAGE = "#query-page";
-
- var self = this;
-
- var emailRegex = new RegExp("^(([0-9a-zA-Z]+[_\+.-]?)+@[0-9a-zA-Z]+[0-9,a-z,A-Z,.,-]*(.){1}[a-zA-Z]{2,4})+$");
- var emailAllowedCharsMessage = 'eg. example@apigee.com';
-
- var passwordRegex = new RegExp("^([0-9a-zA-Z@#$%^&!?<>;:.,'\"~*=+_\[\\](){}/\\ |-])+$");
- var passwordAllowedCharsMessage = 'This field only allows: A-Z, a-z, 0-9, ~ @ # % ^ & * ( ) - _ = + [ ] { } \\ | ; : \' " , . < > / ? !';
- var passwordMismatchMessage = 'Password must match';
-
- var usernameRegex = new RegExp("^([0-9a-zA-Z\.\_-])+$");
- var usernameAllowedCharsMessage = 'This field only allows : A-Z, a-z, 0-9, dot, underscore and dash';
-
- var organizationNameRegex = new RegExp ("^([0-9a-zA-Z.-])+$");
- var organizationNameAllowedCharsMessage = 'This field only allows : A-Z, a-z, 0-9, dot, and dash';
-
- //Regex declared differently from al the others because of the use of ". Functions exacly as if it was called from new RegExp
- var nameRegex = /[0-9a-zA-ZáéíóúÁÉÍÓÚÑñ@#$%\^&!\?;:\.,'\"~\*-=\+_\(\)\[\]\{\}\|\/\\]+/;
- var nameAllowedCharsMessage = "This field only allows: A-Z, a-z, áéíóúÁÉÍÓÚÑñ, 0-9, ~ @ # % ^ & * ( ) - _ = + [ ] { } \\ | ; : \' \" , . / ? !";
-
- var titleRegex = new RegExp("[a-zA-Z0-9.!-?]+[\/]?");
- var titleAllowedCharsMessage = 'Title field only allows : space, A-Z, a-z, 0-9, dot, dash, /, !, and ?';
-
- var alphaNumRegex = new RegExp("[0-9a-zA-Z]+");
- var alphaNumAllowedCharsMessage = 'Collection name only allows : a-z A-Z 0-9';
-
- var pathRegex = new RegExp("^[^\/]*([a-zA-Z0-9\.-]+[\/]{0,1})+[^\/]$");
- var pathAllowedCharsMessage = 'Path only allows : /, a-z, 0-9, dot, and dash, paths of the format: /path, path/, or path//path are not allowed';
-
- var roleRegex = new RegExp("^([0-9a-zA-Z./-])+$");
- var roleAllowedCharsMessage = 'Role only allows : /, a-z, 0-9, dot, and dash';
-
- var intRegex = new RegExp("^([0-9])+$");
-
- var applications = {};
- var applications_by_id = {};
-
- var current_application_id = "";
- var current_application_name = {};
- var applicationData = {};
-
- var query_entities = null;
- var query_entities_by_id = null;
-
- var query_history = [];
-
- var indexes = [];
- var backgroundGraphColor = '#ffffff';
-
- String.prototype.startsWith = function(s) {
- return this.lastIndexOf(s, 0) === 0;
- };
-
- String.prototype.endsWith = function(s) {
- return this.length >= s.length
- && this.substr(this.length - s.length) == s;
- };
-
- $("#fixme").click(function(e){
- e.preventDefault();
- $('#application-panel-buttons').css('position', 'relative');
- });
-
- function clearBackgroundImage(){
- $('body').css({'background-image' : 'none'});
- }
- Usergrid.console.clearBackgroundImage = clearBackgroundImage;
- function setColumnBackgroundImage(){
-// $('body').css({background : 'url(images/background_one_col.png) repeat-y'});
- }
- Usergrid.console.setColumnBackgroundImage = setColumnBackgroundImage;
-
- function initOrganizationVars() {
- applications = {};
- applications_by_id = {};
-
- current_application_id = "";
- current_application_name = "";
-
- query_entities = null;
- query_entities_by_id = null;
-
- query_history = [];
-
- indexes = [];
- }
-
- function keys(o) {
- var a = [];
- for (var propertyName in o) {
- a.push(propertyName);
- }
- return a;
- }
-
- $('#api-activity').ajaxStart( function() {
- $(this).show();
- });
-
- $('#api-activity').ajaxComplete( function() {
- $(this).hide();
- });
-
- function showPanel(page) {
- var p = $(page);
- $("#console-panels").children().each(function() {
- if ($(this).attr("id") == p.attr("id")) {
- $(this).show();
- } else {
- $(this).hide();
- }
- });
- }
-
- function initConsoleFrame(){
- $("#console-panel iframe").attr("src", url);
- }
-
- function getAccessTokenURL(){
- var bearerToken = Usergrid.ApiClient.getToken();
- var app_name = Usergrid.ApiClient.getApplicationName();
- if (typeof app_name != 'string') {
- app_name = '';
- }
- var org_name = Usergrid.ApiClient.getOrganizationName();
- if (typeof org_name != 'string') {
- org_name = '';
- }
- var bearerTokenJson = JSON.stringify(
- [{
- "type":"custom_token",
- "name":"Authorization",
- "value":"Bearer " + bearerToken,
- "style":"header"
- }, {
- "type":"custom_token",
- "name":"app_name",
- "value":app_name,
- "style":"template"
- }, {
- "type":"custom_token",
- "name":"org_name",
- "value":org_name,
- "style":"template"
- }]
- );
- var bearerTokenString = encodeURIComponent(bearerTokenJson);
- var url = 'https://apigee.com/apigeedev/console/usergrid?v=2&embedded=true&auth=' + bearerTokenString;
- return url;
- }
- Usergrid.console.getAccessTokenURL = getAccessTokenURL;
-
- function showPanelContent(panelDiv, contentDiv) {
- var cdiv = $(contentDiv);
- $(panelDiv).children(".panel-content").each(function() {
- var el = $(this);
- if (el.attr("id") == cdiv.attr("id")) {
- el.show();
- } else {
- el.hide();
- }
- });
- }
-
- function selectTabButton(link) {
- var tab = $(link).parent();
- tab.parent().find("li.active").removeClass('active');
- tab.addClass('active');
- }
-
- function selectPillButton(link) {
- var tab = $(link);
- tab.parent().find("a.active").removeClass('active');
- tab.addClass('active');
- }
- function selectFirstTabButton(bar){
- selectTabButton($(bar).find("li:first-child a"));
- }
-
- function setNavApplicationText() {
- var name = Usergrid.ApiClient.getApplicationName();
- if(!name) {
- name = "Select an Application";
- }
- $('#current-app-name').html('<div class="app-menu">' + name + '</div> <span class="caret"></span>');
- // $('.thingy span.title span.app_title').text(" " + name);
- $('#nav-app-name').html(name);
- }
-
- function escapeMe(obj) {
- for (var property in obj) {
- if (obj.hasOwnProperty(property)){
- if (obj[property] && obj[property].constructor == Object || obj[property] instanceof Array) {
- var prop = encodeURIComponent(property);
- var value = obj[property];
- delete obj[property];
- obj[prop] = value;
- escapeMe(obj[prop]);
- }
- else {
- if (property === 'picture') continue;
- var prop = escapeString(property);
- var value = escapeString(obj[property]);
- delete obj[property];
- obj[prop] = value;
- if (property === 'created' || property === 'modified') {
- try {
- obj[property] = parseInt(obj[property]);
- }catch(e){}
- }
- }
- }
- }
- return obj;
- }
-
- function escapeString(str) {
- return String(str)
- .replace(/&/g, '&')
- .replace(/"/g, '"')
- .replace(/'/g, ''')
- .replace(/</g, '<')
- .replace(/>/g, '>');
- }
-
- /*******************************************************************
- *
- * Collections
- *
- ******************************************************************/
-
- function pageSelectCollections() {
- hideModal(' #collections-messages')
- getCollections();
- }
- window.Usergrid.console.pageSelectCollections = pageSelectCollections;
-
- function getCollections() {
- //clear out the table before we start
- var output = $('#collections-table');
- output.empty();
- hideCurlCommand('collections');
- var section =$('#application-collections');
- section.empty().html('<div class="alert alert-info">Loading...</div>');
-
- var queryObj = new Usergrid.Query("GET",'', null, null, getCollectionsCallback,
- function() { alertModal("Error", "There was an error getting the collections"); }
- );
-
- runAppQuery(queryObj);
- return false;
- }
-
- function compare(a,b) {
- if (a.name < b.name)
- return -1;
- if (a.name > b.name)
- return 1;
- return 0;
- }
-
- function getCollectionsCallback(response) {
- //response = escapeMe(response);
-
- $('#collections-pagination').hide();
- $('#collections-next').hide();
- $('#collections-previous').hide();
- showEntitySelectButton();
- if (response.entities && response.entities[0] && response.entities[0].metadata && response.entities[0].metadata.collections) {
- applicationData.Collections = response.entities[0].metadata.collections;
- updateApplicationDashboard();
- updateQueryAutocompleteCollections();
- }
-
- var data = response.entities[0].metadata.collections;
- var output = $('#collections-table');
-
- var elements = [];
- for (var key in data) {
- if (data.hasOwnProperty(key)) {
- elements.push(data[key])
- }
- }
- var currentPath = $("#query-path").val();
- elements.sort(compare)
- var r = {};
- if ($.isEmptyObject(data)) {
- output.replaceWith('<div id="collections-table" class="collection-panel-section-message">No collections found.</div>');
- } else {
- output.replaceWith('<table id="collections-table" class="table"><tbody></tbody></table>');
- var leftMenuContent = '<ul id="collections-link-buttons" class="nav nav-list" style="margin-bottom: 5px;">';
- for (var i=0;i<elements.length;i++) {
- r.name = elements[i];
- r.count = data[elements[i].count];
- var name = escapeString(elements[i].name);
- $.tmpl('apigee.ui.collections.table_rows.html', r).appendTo('#collections-table');
- var active = (currentPath == "/"+name)?'class="active"':'';
- var link = "Usergrid.console.pageOpenQueryExplorer('"+name+"'); return false;";
- leftMenuContent += '<li id="collections-link-button-'+name+'" '+active+'><a href="#" onclick="'+link+'" class="collection-nav-links"><span class="nav-menu-text">/'+name+'</span></a></li>';
- }
-
- leftMenuContent += '</ul>';
- $('#left-collections-content').html(leftMenuContent);
- }
- showCurlCommand('collections', this.getCurl(), this.getToken());
- }
-
- /*******************************************************************
- *
- * Query Explorer
- *
- ******************************************************************/
-
- function pageOpenQueryExplorer(collection) {
-
- collection = collection || "";
- showPanel("#collections-panel");
- hideMoreQueryOptions();
- //reset the form fields
- $("#query-path").val("");
- $("#query-source").val("");
- $("#query-ql").val("");
- showQueryCollectionView();
- query_history = [];
- //Prepare Collection Index Dropdown Menu
- requestIndexes(collection);
- //bind events for previous and next buttons
- bindPagingEvents('query-response');
- //clear out the table before we start
- var output = $('#query-response-table');
- output.empty();
- //if a collection was provided, go ahead and get the default data
- if (collection) {
- getCollection('GET', collection);
- }
- }
- window.Usergrid.console.pageOpenQueryExplorer = pageOpenQueryExplorer;
-
- $("#query-help").click(function(e){
- e.preventDefault();
- $('#queryHelpModal').modal('show');
- });
- $("#query-method-help").click(function(e){
- e.preventDefault();
- $('#queryMethodHelpModal').modal('show');
- });
- $("#query-path-help").click(function(e){
- e.preventDefault();
- $('#queryPathHelpModal').modal('show');
- });
- $("#query-limit-help").click(function(e){
- e.preventDefault();
- $('#queryLimitHelpModal').modal('show');
- });
- $("#query-json-help").click(function(e){
- e.preventDefault();
- $('#queryJsonHelpModal').modal('show');
- });
-
-
- //change contexts for REST operations
- $("#button-query-get").click(function(){
- $("#query-json-box").hide();
- $("#query-query-box").show();
- $("#query-limit-box").show();
- });
-
- $("#button-query-post").click(function(){
- $("#query-json-box").show();
- $("#query-query-box").hide();
- $("#query-limit-box").hide();
- });
-
- $("#button-query-put").click(function(){
- $("#query-json-box").show();
- $("#query-query-box").show();
- $("#query-limit-box").hide();
- });
-
- $("#button-query-delete").click(function(){
- $("#query-json-box").hide();
- $("#query-query-box").show();
- $("#query-limit-box").hide();
- });
-
- $("#data-explorer-link").click(function(){
- $('#data-explorer').show();
- $('#query-path').val('');
- $("#query-response-area").hide();
- });
-
- var queryPath = '';
- function runCollectionQuery(){
- var method;
-
-
- //Select method to use
- if($('#button-query-get').prop('checked') ){
- method = 'GET';
- } else if($('#button-query-post').prop('checked')){
- method = 'POST';
- } else if($('#button-query-put').prop('checked')){
- method = 'PUT';
- } else if($('#button-query-delete').prop('checked')){
- method = 'DELETE';
- } else {
- alertModal("Notice", "Please select a method.");
- return;
- }
-
-
- //If jsonBody is empty fill it with empty brackets
- if($('#query-source').val() === '') {
- $("#query-source").val('{"name":"value"}');
- }
- getCollection(method);
- }
-
- window.Usergrid.console.getCollection = getCollection;
-
- function getCollection(method, path){
- $("#data-explorer-status").html('Working...');
- $("#data-explorer-status").show();
-
- //get the data to run the query
- if(!path){
- var path = $("#query-path").val();
- }
- var path=path.replace("//","/");
- if(method.toUpperCase() !== 'GET' && method.toUpperCase() !== 'DELETE'){
- var data = $("#query-source").val();
- try{
- validateJson();
- StatusBar.hideAlert();
- data = JSON.parse(data);
- } catch (e) {
- alertModal("Error", "There is a problem with your JSON.");
- return false;
- }
- }
-
- var params = {};
- var ql = $("#query-ql").val();
- params.ql = ql;
- if(method.toUpperCase() === 'GET'){
- var limit = $("#query-limit").val();
- params.limit = limit;
- }
-
- queryPath = path;
-
- queryObj = new Usergrid.Query(method, path, data, params, getCollectionCallback, function(response) { alertModal("Error", response) });
- runAppQuery(queryObj);
- }
-
- function getCollectionCallback(response) {
- response = escapeMe(response);
- setTimeout(function(){$("#data-explorer-status").hide();},3000);
- $('body').scrollTop(0);
- hidePagination('query-response');
- $('#query-response-area').show();
- if (response.action == 'post') {
- pageSelectCollections();
- }
-
-
- $("#data-explorer-status").html('API call completed');
-
- var path = response.path || "";
- path = "" + path.match(/[^?]*/);
- var path_no_slashes = "";
- try {
- path_no_slashes = response.path.replace(/\//g,'');
- } catch(e) {}
-
- $("#collections-link-buttons li").removeClass('active');
- $("#collections-link-button-"+path_no_slashes).addClass('active');
-
- if(response.action === ("delete")){
- getCollection("GET", path);
- return;
- }
-
- var slashes = (queryPath.split("/").length -1)
- if (!slashes && queryPath.length > 0) {
- queryPath = "/" + queryPath;
- }
- $('#query-path').val(queryPath);
-
- $("#collection-type-field").html(response.path);
- var output = $('#query-response-table');
- if (response.entities) {
- if (response.entities.length == 1 && slashes > 1){
- generateBackToCollectionButton(response.path);
- } else {
- $('#back-to-collection').hide();
- }
- if (response.entities.length < 1) {
- output.replaceWith('<table id="query-response-table" class="table"><tbody><tr class="zebraRows users-row"><td>No entities found</td></tr></table>');
- } else {
- //Inform the user of a valid query
-
- var entity_type = response.entities [0].type;
-
- var table = '<table id="query-response-table" class="table"><tbody><tr class="zebraRows users-row">' +
- '<td class="checkboxo"><input type="checkbox" onclick="Usergrid.console.selectAllEntities(this);" /></td>';
- if (entity_type === 'user') {
- table += '<td class="gravatar50-td"> </td>'+
- '<td class="user-details bold-header">Username</td>'+
- '<td class="user-details bold-header">Display Name</td>';
- } else if (entity_type === 'group') {
- table += '<td class="user-details bold-header">Path</td>'+
- '<td class="user-details bold-header">Title</td>';
- } else if (entity_type === 'role') {
- table += '<td class="user-details bold-header">Title</td>'+
- '<td class="user-details bold-header">Rolename</td>';
- } else {
- table += '<td class="user-details bold-header">Name</td>';
- }
- table += '<td class="user-details bold-header">UUID</td>';
- table += '<td class="view-details"> </td>' +
- '</tr></tbody></table>';
- output.replaceWith(table);
- var this_data = {}
- this_data.path = response.path;
- for (i = 0; i < response.entities.length; i++) {
- this_data.r = response.entities [i];
- //next get a table view of the object
- this_data.content = buildContentArea(response.entities [i]);
-
-
- //get a json representation of the object
- this_data.json = JSON.stringify(response.entities [i], null, 2);
-
- if (this_data.type === 'user') {
- if (!this_data.r.picture) {
- this_data.r.picture = window.location.protocol+ "//" + window.location.host + window.location.pathname + "images/user-photo.png"
- } else {
- this_data.r.picture = get_replacementGravatar(this_data.r.picture);
- }
- } else {
- if (!this_data.r.name) {
- this_data.r.name = '[No value set]';
- }
- }
- $.tmpl('apigee.ui.collection.table_rows.html', this_data).appendTo('#query-response-table');
- }
-
- }
- } else if (response.list) {
-
- var query = response.params.ql[0];
- query = query.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
- query = query.substr(6, query.length);
- query = query.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
- query = query.substring(0, query.indexOf("where"));
- var params = query.split(",");
-
- var table = '<table id="query-response-table" class="table"><tbody><tr class="zebraRows users-row">';
-
- for (i = 0; i < params.length; i++) {
- table +='<td class="user-details bold-header">'+params[i].replace(/^\s\s*/, '').replace(/\s\s*$/, '')+'</td>';
- }
- for (i = 0; i < response.list.length; i++) {
- var list = response.list[i];
- table += '<tr class="zebraRows users-row">';
- for (j = 0; j < list.length; j++) {
- var value = list[j];
- if (!value) { value = '[no value]'; }
- table +='<td class="details">'+value+'</td>';
- }
- table += '</tr>';
- }
-
- table += '</table>';
- output.replaceWith(table);
-
- } else {
- output.replaceWith('<table id="query-response-table" class="table"><tbody><tr class="zebraRows users-row"><td>No entities found</td></tr></table>');
- }
-
- showPagination('query-response');
- }
-
-
- function buildContentArea(obj2) {
- function getProperties(obj, keyType){
- var output = '';
- for (var property in obj) {
- if (property == 'metadata') { keyType = 'metadata'; }
- else if (property == 'collections') { keyType = 'collections'; }
- else { keyType = ''; }
-
- output += '<tr>';
- if (obj.hasOwnProperty(property)){
- if (obj[property] && obj[property].constructor == Object || obj[property] instanceof Array) {
-
- var prop = (obj[property] instanceof Array)?property:'';
- //console.log('**Object -> '+property+': ');
- output += '<td>'+prop+'</td><td style="padding: 0"><table><tr>';
- output += getProperties(obj[property], keyType);
- output += '</td></tr></table>';
- }
- else {
- //console.log(property + " " + obj[property]);
- if (keyType == 'metadata' || keyType == 'collections') {
- var link = '<a href="#" onclick="Usergrid.console.pageOpenQueryExplorer(\''+obj[property]+'\'); return false;">'+obj[property]+'</a>';
- output += '<td>'+property+'</td><td>'+link+'</td>';
- } else {
- var htmlescaped = htmlEscape(obj[property]);
- output += '<td>'+property+'</td><td>'+htmlescaped+'</td>';
- }
- }
- }
- output += '</tr>';
- }
- return output;
- }
- var output = getProperties(obj2, '');
- return '<table>' + output + '</table>';
- }
- function htmlEscape(str) {
- return String(str)
- .replace(/&/g, '&')
- .replace(/"/g, '"')
- .replace(/'/g, ''')
- .replace(/</g, '<')
- .replace(/>/g, '>');
- }
-
-
-
-
- function activateQueryRowJSONButton() {
- $("#button-query-show-row-JSON").removeClass('disabled').addClass('active');
- $("#button-query-show-row-content").removeClass('active').addClass('disabled');
- }
- window.Usergrid.console.activateQueryRowJSONButton = activateQueryRowJSONButton;
-
- function activateQueryRowContentButton() {
- $("#button-query-show-row-JSON").removeClass('active').addClass('disabled');
- $("#button-query-show-row-content").removeClass('disabled').addClass('active');
- }
- window.Usergrid.console.activateQueryRowContentButton = activateQueryRowContentButton;
-
- function showQueryCollectionView() {
- $('#query-collection-info').show();
- $('#query-detail-info').hide();
- $('#query-ql-box').show();
- $('#back-to-collection').hide();
- }
-
-
-
- function generateBackToCollectionButton(returnPath) {
- var backButton = $('#back-to-collection');
- if(backButton.attr('onclick')){
- backButton.removeAttr('onclick');
- }
- backButton.attr('onclick',"Usergrid.console.getCollection('GET','" + returnPath+ "')");
- $('#back-to-collection').show();
- }
-
- $.fn.loadEntityCollectionsListWidget = function() {
- this.each(function() {
- var entityType = $(this).dataset('entity-type');
- var entityUIPlugin = "apigee_collections_" + entityType + "_list_item";
- if (!$(this)[entityUIPlugin]) {
- entityUIPlugin = "apigee_collections_entity_list_item";
- }
- $(this)[entityUIPlugin]();
- });
- };
-
- $.fn.loadEntityCollectionsDetailWidget = function() {
- this.each(function() {
- var entityType = $(this).dataset('entity-type');
- var entityUIPlugin = "apigee_collections_" + entityType + "_detail";
- if (!$(this)[entityUIPlugin]) {
- entityUIPlugin = "apigee_collections_entity_detail";
- }
- $(this)[entityUIPlugin]();
- });
- if (this.length === 1 ){
- hideEntityCheckboxes();
- hideEntitySelectButton();
- }
- };
-
- function hideEntityCheckboxes(){
- $(".listItem").hide();
- $(".listItem").attr('checked', true);
- }
-
- function hideEntitySelectButton(){
- $("#selectAllCollections").hide();
- }
- function showEntitySelectButton(){
- $("#selectAllCollections").show();
- }
-
- function getQueryResultEntity(id) {
- if (query_entities_by_id) {
- return query_entities_by_id[id];
- }
- return null;
- }
- window.Usergrid.console.getQueryResultEntity = getQueryResultEntity;
-
- function showQueryStatus(s, _type) {
- StatusBar.showAlert(s, _type);
- }
-
- function expandQueryInput() {
- $('#query-source').height(150);
- $('#button-query-shrink').show();
- $('#button-query-expand').hide();
- return false;
- }
-
- function shrinkQueryInput() {
- $('#query-source').height(60);
- $('#button-query-shrink').hide();
- $('#button-query-expand').show();
- return false;
- }
-
- InitQueryPanel();
- function InitQueryPanel(){
- $('#query-source').focus(function(){
- expandQueryInput();
- prepareQueryInput(this);
- });
- //$('#query-source').keyup(function(){activateJSONValidator('#button-query-validate', '#query-source');})
- $('#button-query-validate').click(function() {validateJson();return false;});
- $('#button-query-shrink').click(shrinkQueryInput);
- $('#button-query-expand').click(expandQueryInput);
-
- $('#button-query').click(function(){runCollectionQuery(); return false;});
-
- }
-
- function prepareQueryInput(selector) {
- var queryInput = $(selector);
- if( queryInput.val() === ""){
- queryInput.val("{\n\n}");
- }
- }
-
- function activateJSONValidator(valButton, jsonArea) {
- var validatorButton = $(valButton);
- var textArea = $(jsonArea)
- if(validatorButton.hasClass('disabled')){
- validatorButton.removeClass('disabled');
- validatorButton.click(function() {validateJson();return false;});
- } else if(textArea.val() === "") {
- validatorButton.addClass('disabled');
- validatorButton.unbind('click');
- }
- }
-
- function showMoreQueryOptions() {
- $('.query-more-options').show();
- $('.query-less-options').hide();
- $('#query-ql').val("");
- $('#query-source').val("{ }");
- }
-
- function hideMoreQueryOptions() {
- $('.query-more-options').hide();
- $('.query-less-options').show();
- $('#query-ql').val("");
- $('#query-source').val("");
- }
-
- function toggleMoreQueryOptions() {
- $('.query-more-options').toggle();
- $('.query-less-options').toggle();
- $('#query-ql').val("");
- $('#query-source').val("");
- }
-
- $('#button-query-more-options').click(function() {
- toggleMoreQueryOptions();
- return false;
- });
-
- $('#button-query-less-options').click(function() {
- toggleMoreQueryOptions();
- return false;
- });
-
- $('#query-source').keydown(function(e) {
- var key = e.keyCode || e.which;
-
- if ((key == 9 || key ===13)) {
- e.preventDefault();
- //Get cursor position
- var start = this.selectionStart;
- var end = this.selectionEnd;
- var field = $(this);
- var value = field.val();
- //insert Text and indentation
- field.val(value.substring(0, start) + '\r ' + value.substring(end));
- //return cursor to its position
- this.selectionStart = this.selectionEnd = start + 1;
- }
- });
-
- function validateJson() {
- try {
- var result = JSON.parse($('#query-source').val());
- if (result) {
- showQueryStatus('JSON is valid!');
- $('#query-source').val(JSON.stringify(result, null, " "));
- return result;
- }
- } catch(e) {
- showQueryStatus(e.toString(), "error");
- }
- return false;
- };
-
- window.Usergrid.console.doChildClick = function(event) {
- var path = new String($('#query-path').val());
- if (!path.endsWith("/")) {
- path += "/";
- }
- path += event.target.innerText;
- $('#query-path').val(path);
- };
-
- var queryQl = $('#query-ql');
- queryQl.typeahead({source:indexes});
-
- function doBuildIndexMenu() {
- queryQl.data('typeahead').source = indexes;
- }
-
- $('#delete-entity-link').click(deleteEntity);
-
- function deleteEntity(e) {
- e.preventDefault();
- var items = $('#query-response-table input[class=listItem]:checked');
- if(!items.length){
- alertModal("Please, first select the entities you want to delete.");
- return;
- }
- var itemsCount = items.size();
- confirmDelete(function(){
- items.each(function() {
- var path = $(this).attr('name');
- runAppQuery(new Usergrid.Query("DELETE", path, null, null,
- function(request) {
- itemsCount--;
- if(itemsCount==0){
- $("#query-path").val(request.path);
- getCollection('GET');
- }},
- function() { alertModal("Unable to delete: " + path); }
- ));
- });
- });
- }
-
- function requestIndexes(path){
- var data = {};
- runAppQuery(new Usergrid.Query("GET", path + "/indexes", null, null,
- function(response) {
- if(response && response.data) {
- data = response;
- }
- buildIndexDropdown('query-collections-indexes-list', data);
-
- }));
- }
-
- function buildIndexDropdown(menuId, indexes) {
- var menu = $("#" + menuId);
- menu.empty();
- $.tmpl('apigee.ui.collections.query.indexes.html', indexes).appendTo(menu);
- }
-
- function appendToCollectionsQuery(message){
- var queryTextArea = $("#query-ql");
- queryTextArea.val(queryTextArea.val()+ " " + message );
- }
- window.Usergrid.console.appendToCollectionsQuery = appendToCollectionsQuery;
-
- /*******************************************************************
- *
- * Organization Home
- *
- ******************************************************************/
-
-
- function pageSelectHome() {
-
- requestAdmins();
- displayOrganizationName(Usergrid.ApiClient.getOrganizationName());
- requestOrganizationCredentials();
- requestAdminFeed();
- }
- window.Usergrid.console.pageSelectHome = pageSelectHome;
-
-
- function displayApplications(response) {
- applications = {};
- applications_by_id = {};
- var appMenu = $('.applications-menu');
- var appList = $('table#organization-applications-table');
- appMenu.empty();
- appList.empty();
-
- if (response.data) {
- applications = response.data;
- var count = 0;
- var applicationNames = keys(applications).sort();
- var data = [];
- var appMenuTmpl = $('<li><a >${name}</a></li>');
-
- for (var i in applicationNames) {
- var name = applicationNames[i];
- var uuid = applications[name];
- data.push({uuid:uuid, name:name.split("/")[1]});
- count++;
- applications_by_id[uuid] = name.split("/")[1];
- }
-
- if (count) {
- $.tmpl('apigee.ui.applications.table_rows.html', data).appendTo(appList);
- appMenuTmpl.tmpl(data).appendTo(appMenu);
- appMenuTmpl.tmpl(data)
- appMenu.find("a").click(function selectApp(e) {
- var link = $(this);
- pageSelect(link.tmplItem().data.name);
- Usergrid.Navigation.router.navigateTo('dashboard');
- });
-
- appList.find("a").click(function selectApp(e) {
- e.preventDefault();
- var link = $(this);
- pageSelect(link.tmplItem().data.name);
- Usergrid.Navigation.router.navigateTo('dashboard');
- });
- enableApplicationPanelButtons();
- }
- appMenu.append('<li class="divider"></li>');
- appMenu.append('<li><a class="" data-toggle="modal" href="#dialog-form-new-application"> <strong>+</strong> New Application</a></li>');
- }
-
- if(appList.is(":empty")){
- appList.html('<div class="alert user-panel-section">No applications created.</div>');
- appMenu.html('<li>--No Apps--</li>');
- forceNewApp();
- }
-
- var appName = Usergrid.ApiClient.getApplicationName();
- if (!appName) {
- selectFirstApp();
- } else {
- setNavApplicationText();
- }
- }
-
- function requestApplications() {
- var sectionApps = $('#organization-applications-table');
- sectionApps.empty().html('<div class="alert alert-info user-panel-section">Loading...</div>');
- runManagementQuery(new Usergrid.Query("GET","organizations/" + Usergrid.ApiClient.getOrganizationName() + "/applications", null, null,
- displayApplications,
- function() {
- sectionApps.html('<div class="alert user-panel-section">Unable to retrieve application list.</div>');
- }
- ));
- }
- Usergrid.console.requestApplications = requestApplications;
-
- function selectFirstApp() {
- //get the currently specified app name
- var appName = Usergrid.ApiClient.getApplicationName();
- //and make sure we it is in one of the current orgs
- var app = Usergrid.organizations.getItemByName(appName);
- if(appName && app) {
- Usergrid.ApiClient.setApplicationName(appName);
- pageSelect(appName);
- } else {
- //we need to select an app, so get the current org name
- var orgName = Usergrid.ApiClient.getOrganizationName();
- //get a reference to the org object by using the name
- var org = Usergrid.organizations.getItemByName(orgName);
- //get a handle to the first app in the org
- app = org.getFirstItem();
- //store the new app in the client
- Usergrid.ApiClient.setApplicationName(app.getName());
- pageSelect(app.getName());
- }
- setNavApplicationText();
- }
-
- function displayAdmins(response) {
- var sectionAdmins = $('#organization-admins-table');
- sectionAdmins.empty();
- if (response.data) {
- var admins = response.data;
- admins = admins.sort();
- for (var i in admins) {
- var admin = admins[i];
- admin.gravatar = get_gravatar(admin.email, 20);
- $.tmpl('apigee.ui.admins.table_rows.html', admin).appendTo(sectionAdmins);
- }
- }
- if(sectionAdmins.is(':empty')){
- sectionAdmins.html('<div class="alert user-panel-section">No organization administrators.</div>');
- }
- }
-
- function requestAdmins() {
- var sectionAdmins =$('#organization-admins-table');
- sectionAdmins.empty().html('<div class="alert alert-info user-panel-section">Loading...</div>');
- runManagementQuery(new Usergrid.Query("GET","organizations/" + Usergrid.ApiClient.getOrganizationName() + "/users", null, null,
- displayAdmins,
- function() {sectionAdmins.html('<div class="alert user-panel-section">Unable to retrieve admin list</div>');
- }));
- }
-
- $(document).on('click', '.toggleableSP', function() {
- $(this).parent().find('.toggleableSP').toggle();
- return false
- });
-
- function get_gravatar(email, size) {
- var size = size || 50;
- return 'https://secure.gravatar.com/avatar/' + MD5(email) + '?s=' + size + encodeURI("&d=https://apigee.com/usergrid/img/user_profile.png");
- }
-
- function get_replacementGravatar(picture) {
- picture = picture.replace(/^http:\/\/www.gravatar/i, 'https://secure.gravatar');
- //note: changing this to use the image on apigee.com - since the gravatar default won't work on any non-public domains such as localhost
- //this_data.picture = this_data.picture + encodeURI("?d="+window.location.protocol+"//" + window.location.host + window.location.pathname + "images/user_profile.png");
- picture = picture + encodeURI("?d=https://apigee.com/usergrid/img/user_profile.png");
- return picture;
- }
-
- function displayAdminFeed(response) {
-
- var sectionActivities = $('#organization-feed-table');
- sectionActivities.empty();
-
- if (response.entities && (response.entities.length > 0)) {
- var activities = response.entities;
- for (var i in activities) {
- var activity = activities[i];
-
- // Next part is a hack. The API should return the email and title cleanly.
- var title_tmp = $("<span/>", {html: activity.title});
- activity.actor.email = title_tmp.find('a').attr('mailto');
- title_tmp.find('a').remove();
- activity.title = title_tmp.text();
- // hack ends here
-
- activity.actor.gravatar = get_gravatar(activity.actor.email, 20);
- $.tmpl('apigee.ui.feed.table_rows.html', activity).appendTo(sectionActivities);
- }
- }
-
- if (sectionActivities.is(":empty")) {
- sectionActivities.html('<div class="alert user-panel-section">No activities.</div>');
- }
- }
-
- function requestAdminFeed() {
- var section =$('#organization-activities');
- section.empty().html('<div class="alert alert-info">Loading...</div>');
- runManagementQuery(new Usergrid.Query("GET","orgs/" + Usergrid.ApiClient.getOrganizationName() + "/feed", null, null, displayAdminFeed,
- function() { section.html('<div class="alert">Unable to retrieve feed.</div>'); }));
- }
- window.Usergrid.console.requestAdminFeed = requestAdminFeed;
-
- var organization_keys = { };
-
- function requestOrganizationCredentials() {
- $('#organization-panel-key').html('<div class="alert alert-info marginless">Loading...</div>');
- $('#organization-panel-secret').html('<div class="alert alert-info marginless">Loading...</div>');
- runManagementQuery(new Usergrid.Query("GET",'organizations/'+ Usergrid.ApiClient.getOrganizationName() + "/credentials", null, null,
- function(response) {
- $('#organization-panel-key').html(response.credentials.client_id);
- $('#organization-panel-secret').html(response.credentials.client_secret);
- organization_keys = {client_id : response.credentials.client_id, client_secret : response.credentials.client_secret};
- },
- function() {
- $('#organization-panel-key').html('<div class="alert marginless">Unable to load...</div>');
- $('#organization-panel-secret').html('<div class="alert marginless">Unable to load...</div>');
- }));
- }
-
- function newOrganizationCredentials() {
- $('#organization-panel-key').html('<div class="alert alert-info marginless">Loading...</div>');
- $('#organization-panel-secret').html('<div class="alert alert-info marginless">Loading...</div>');
- runManagementQuery(new Usergrid.Query("POST",'organizations/' + Usergrid.ApiClient.getOrganizationName() + "/credentials",null, null,
- function(response) {
- $('#organization-panel-key').html(response.credentials.client_id);
- $('#organization-panel-secret').html(response.credentials.client_secret);
- organization_keys = {client_id : response.credentials.client_id, client_secret : response.credentials.client_secret};
- },
- function() {
- $('#organization-panel-key').html('<div class="alert marginless">Unable to load...</div>');
- $('#organization-panel-secret').html('<div class="alert marginless">Unable to load...</div>');
- }
- ));
- }
- window.Usergrid.console.newOrganizationCredentials = newOrganizationCredentials;
-
- function updateTips(t) {
- tips.text(t).addClass('ui-state-highlight');
- setTimeout(function() {
- tips.removeClass('ui-state-highlight', 1500);
- },
- 500);
- }
-
- function checkLength(o, n, min, max) {
- if (o.val().length > max || o.val().length < min) {
- o.addClass('ui-state-error');
- updateTips("Length of " + n + " must be between " + min
- + " and " + max + ".");
- return false;
- } else {
- return true;
- }
- }
-
- function checkRegexp(o, regexp, n) {
- if (! (regexp.test(o.val()))) {
- o.addClass('ui-state-error');
- updateTips(n);
- return false;
- } else {
- return true;
- }
- }
-
- function checkTrue(o, t, n) {
- if (!t) {
- o.addClass('ui-state-error');
- updateTips(n);
- }
- return t;
- }
-
- var tips = $('.validateTips');
-
- /*******************************************************************
- *
- * Modals
- *
- ******************************************************************/
-
- function alertModal(header,message) {
- $('#alertModal h4').text(header);
- $('#alertModal p').text(message);
- $('#alertModal').modal('show');
- }
-
- //use like: alertBanner("Oh no!", "Say it isn't so!!");
- //or like: alertBanner("Oh no!", "Say it isn't so!!", 5000); //will auto-close in 5 seconds
- function alertBanner(header, message, timeout) {
- $('#alert-error-header').html(header);
- $('#alert-error-message').html(message);
- $('#alert-error-message-container').show();
- if (timeout) {
- var alertTimer = setInterval(function(){
- $('#alert-error-message-container').hide();
- window.clearInterval(alertTimer);
- },timeout);
- }
- }
-
- function hideModal(id){
- $(id).hide();
- }
-
- function confirmAction(header, message, callback){
- var form = $('#confirmAction');
-
- form.find('h4').text(header);
- form.find('p').text(message);
- form.unbind('submit');
-
- form.submit(function(){
- form.modal("hide");
- callback();
-
- return false;
- });
-
- form.modal('show');
- }
-
- function resetModal(){
- this.reset();
- var form = $(this);
- formClearErrors(form);
- }
-
- function focusModal(){
- $(this).find('input:first').focus();
- }
-
- function submitModal(e){
- e.preventDefault();
- }
-
- $('form.modal').on('hidden',resetModal).on('shown',focusModal).submit(submitModal);
- $('#dialog-form-new-application').submit(submitApplication);
- $('#dialog-form-force-new-application').submit(submitApplication);
- $('#dialog-form-new-admin').submit(submitNewAdmin);
- $('#dialog-form-new-organization').submit(submitNewOrg);
- $('#dialog-form-new-user').submit(submitNewUser);
- $('#dialog-form-new-role').submit(submitNewRole);
- $('#dialog-form-new-collection').submit(submitNewCollection);
- $('#dialog-form-new-group').submit(submitNewGroup);
- $('#dialog-form-add-group-to-user').submit(submitAddGroupToUser);
- $('#dialog-form-add-user-to-group').submit(submitAddUserToGroup);
- $('#dialog-form-add-user-to-role').submit(submitAddUserToRole);
- $('#dialog-form-add-role-to-user').submit(function() { submitAddRoleToUser(current_roleName, current_roleTitle)});
- $('#dialog-form-add-user-to-notification').submit(function() { addUserToNotification()});
- $('#dialog-form-add-group-to-notification').submit(function() { addGroupToNotification()});
- $('#dialog-form-add-group-to-role').submit(function() { submitAddGroupToRole(current_roleName, current_roleTitle)});
- $('#dialog-form-add-role-to-group').submit(submitAddRoleToGroup);
- $('#dialog-form-follow-user').submit(submitFollowUser);
-
- function checkLength2(input, min, max) {
- if (input.val().length > max || input.val().length < min) {
- var tip = "Length must be between " + min + " and " + max + ".";
- validationError(input,tip);
- return false;
- }
-
- return true;
- }
-
- function checkRegexp2(input, regexp, tip) {
- if (! (regexp.test(input.val()))) {
- validationError(input,tip);
- return false;
- }
- return true;
- }
-
- function checkTrue2(input, exp, tip) {
- if (!exp) {
- validationError(input,tip);
- return false;
- }
-
- return true;
- }
-
- function confirmDelete(callback){
- var form = $('#confirmDialog');
- if (form.submit) {
- form.unbind('submit');
- }
-
- form.submit(function(e){
- e.preventDefault();
- form.modal('hide');
- }).submit(callback);
-
- form.modal('show');
- }
-
- function validationError(input, tip){
- input.focus();
- input.parent().parent().addClass("error");
- input.parent().parent().find(".help-block").text(tip).addClass("alert-error").addClass("alert").show();
- }
-
- $.fn.serializeObject = function() {
- var o = {};
- var a = this.serializeArray();
-
- $.each(a, function() {
- if (o[this.name]) {
- if (!o[this.name].push) {
- o[this.name] = [o[this.name]];
- }
- o[this.name].push(this.value || '');
- } else {
- o[this.name] = this.value || '';
- }
- });
-
- return o;
- };
-
- function formClearErrors(form){
- form.find('.ui-state-error').removeClass('ui-state-error');
- form.find('.error').removeClass('error');
- form.find('.help-block').empty().hide();
- }
-
- function submitApplication() {
- var form = $(this);
- formClearErrors(form);
-
- var new_application_name = $(this).find('.new-application-name');
-
- var bValid = checkLength2(new_application_name, 4, 80)
- && checkRegexp2(new_application_name, usernameRegex, usernameAllowedCharsMessage);
-
- if (bValid) {
- runManagementQuery(new Usergrid.Query("POST","organizations/" + Usergrid.ApiClient.getOrganizationName() + "/applications", form.serializeObject(), null,
- function(response) {
- for (var appName in response.data) { break; }
- var appTitle = appName.split("/")[1];
- var currentOrg = Usergrid.ApiClient.getOrganizationName();
- Usergrid.organizations.getItemByName(currentOrg).addItem(new Usergrid.Application(appTitle, response.data[appName]));
- pageSelect(appTitle);
- requestApplications();
- },
- function() {
- closeErrorMessage = function() {
- $('#home-messages').hide();
- };
- var closebutton = '<a onclick="closeErrorMessage();" class="close">×</a>'
- $('#home-messages').text("Unable to create application: ").prepend(closebutton).addClass('alert-error').show();
- }));
- $(this).modal('hide');
- }
- }
-
- function submitNewAdmin() {
- var form = $(this);
- formClearErrors(form);
-
- var new_admin_email = $('#new-admin-email');
- var bValid = checkLength2(new_admin_email, 6, 80)
- && checkRegexp2(new_admin_email,emailRegex, emailAllowedCharsMessage);
- if (bValid) {
- var data = form.serializeObject();
- runManagementQuery(new Usergrid.Query("POST","organizations/" + Usergrid.ApiClient.getOrganizationName() + "/users", data, null,
- requestAdmins,
- function () { alertModal("Error", "Unable to create admin"); }
- ));
- $(this).modal('hide');
- }
- }
-
- function addOrganizationToList(orgName) {
- runManagementQuery(new Usergrid.Query("GET","orgs/" + orgName, null, null,
- function(response) {
- var orgName = response.organization.name;
- var orgUUID = response.organization.uuid;
- organization = new Usergrid.Organization(orgName, orgUUID);
- var apps = response.organization.applications;
- for(app in apps) {
- var appName = app.split("/")[1];
- //grab the id
- var appUUID = response.organization.applications[app];
- //store in the new Application object
- application = new Usergrid.Application(appName, appUUID);
- organization.addItem(application);
- }
- //add organization to organizations list
- Usergrid.organizations.addItem(organization);
- requestAccountSettings();
- setupOrganizationsMenu();
- },
- function() { alertModal("Error", "Unable to get organization" + orgName);
- }
- ));
- }
-
- function submitNewOrg() {
- var form = $(this);
- formClearErrors(form);
-
- var new_organization_name = $('#new-organization-name');
- var new_organization_name_val = $('#new-organization-name').val();
- var bValid = checkLength2(new_organization_name, 4, 80)
- && checkRegexp2(new_organization_name, organizationNameRegex, organizationNameAllowedCharsMessage);
-
- if (bValid) {
- var data = form.serializeObject();
- runManagementQuery(new Usergrid.Query("POST","users/" + Usergrid.userSession.getUserUUID() + "/organizations", data, null,
- function() {
- addOrganizationToList(new_organization_name_val);
- },
- function() { alertModal("Error", "Unable to create organization"); }
- ));
- $(this).modal('hide');
- }
- }
- //TODO: the organization, and required fields for this method, are hidden. There is no quick way to check variable names and order
- /*
- * Needed fields:
- * username:
- * name: FULL NAME
- * email:
- * password:
- */
- function submitNewUser() {
- var form = $(this);
- formClearErrors(form);
-
- var email = $('#new-user-email');
- var username = $('#new-user-username');
- var fullname = $('#new-user-fullname');
- var password = $('#new-user-password');
- var validate_password = $('#new-user-validate-password');
-
- var bValid =
- //Fullname can is not required.
- checkLength2(fullname , 0, 80)
- && ( fullname.val() === "" || checkRegexp2(fullname, nameRegex, nameAllowedCharsMessage) )
- //Username IS required
- && checkRegexp2(username, usernameRegex, usernameAllowedCharsMessage)
- //Email is NOT required
- && ( checkLength2(email, 6, 80) )
- && ( email.val() === "" || checkRegexp2(email,emailRegex, emailAllowedCharsMessage) )
- && ( checkLength2(password ,0 ,0) || checkLength2(password, 1, 64) )
- && ( password.val() === "" || checkRegexp2(password,passwordRegex, passwordAllowedCharsMessage) )
- && ( checkTrue2(password, (password.val() === validate_password.val()), passwordMismatchMessage));
-
- if (bValid) {
- var data = {"email":email.val(), "username":username.val(),"name":fullname.val(), "password":password.val()}
- runAppQuery(new Usergrid.Query("POST", 'users', data, null,
- function() {
- getUsers();
- closeErrorMessage = function() {
- $('#users-messages').hide();
- };
- var closebutton = '<a onclick="closeErrorMessage();" class="close">×</a>';
- $('#users-messages')
- .text("User created successfully.")
- .prepend(closebutton)
- .removeClass()
- .addClass('alert alert-warning')
- .show();
- },
- function() {
- closeErrorMessage = function() {
- $('#users-messages').hide();
- };
- var closebutton = '<a onclick="closeErrorMessage();" class="close">×</a>'
- $('#users-messages')
- .text("Unable to create user")
- .prepend(closebutton)
- .removeClass()
- .addClass('alert alert-error')
- .show();
- }
- ));
-
- $(this).modal('hide');
- }
- }
-
- function submitNewRole() {
- var form = $(this);
- formClearErrors(form);
-
- var new_role_name = $('#new-role-name');
- var new_role_title = $('#new-role-title');
-
- var bValid = checkLength2(new_role_name, 1, 80)
- && checkRegexp2(new_role_name, roleRegex, roleAllowedCharsMessage)
- && checkLength2(new_role_title, 1, 80)
- && checkRegexp2(new_role_title,titleRegex, titleAllowedCharsMessage);
-
- if (bValid) {
- var data = form.serializeObject();
- runAppQuery(new Usergrid.Query("POST", "role", data, null,
- function() {
- getRoles();
- closeErrorMessage = function() {
- $('#roles-messages').hide();
- };
- var closebutton = '<a onclick="closeErrorMessage();" class="close">×</a>'
- $('#roles-messages')
- .text("Role created successfully.")
- .prepend(closebutton)
- .removeClass()
- .addClass('alert alert-warning')
- .show();
- },
- function() {
- closeErrorMessage = function() {
- $('#roles-messages').hide();
- };
- var closebutton = '<a onclick="closeErrorMessage();" class="close">×</a>'
- $('#roles-messages')
- .text("Unable to create user")
- .prepend(closebutton)
- .removeClass()
- .addClass('alert alert-error')
- .show();
- }
- ));
-
- $(this).modal('hide');
- }
- }
-
- function submitNewCollection() {
- var form = $(this);
- formClearErrors(form);
-
- var new_collection_name = $('#new-collection-name');
-
- var bValid = checkLength2(new_collection_name, 4, 80)
- && checkRegexp2(new_collection_name, alphaNumRegex, alphaNumAllowedCharsMessage);
-
- if (bValid) {
- var data = form.serializeObject();
- var collections = {};
- collections[data.name] = {};
- var metadata = {
- metadata: {
- collections: collections
- }
- }
- runAppQuery(new Usergrid.Query("PUT", "", metadata, null,
- function() {
- getCollections();
- closeErrorMessage = function() {
- $('#collections-messages').hide();
- };
- var closebutton = '<a onclick="closeErrorMessage();" class="close">×</a>'
- $('#collections-messages')
- .text("Collection created successfully.")
- .prepend(closebutton)
- .removeClass()
- .addClass('alert alert-warning')
- .show();
- getCollection("get", data.name);
- },
- function() {
- closeErrorMessage = function() {
- $('#collections-messages').hide();
- };
- var closebutton = '<a onclick="closeErrorMessage();" class="close">×</a>'
- $('#collections-messages')
- .text("Unable to create user")
- .prepend(closebutton)
- .removeClass()
- .addClass('alert alert-error')
- .show();
- }
- ));
-
- $(this).modal('hide');
- }
- }
-
- function submitNewGroup() {
- var form = $(this);
- formClearErrors(form);
-
- var new_group_title = $('#new-group-title');
- var new_group_path = $('#new-group-path');
-
- var bValid = checkLength2(new_group_title, 1, 80)
- && checkRegexp2(new_group_title, nameRegex, nameAllowedCharsMessage)
- && checkLength2(new_group_path, 1, 80)
- && checkRegexp2(new_group_path, pathRegex, pathAllowedCharsMessage);
-
- if (bValid) {
- var data = form.serializeObject();
- runAppQuery(new Usergrid.Query("POST", "groups", data, null,
- function() {
- getGroups();
- closeErrorMessage = function() {
- $('#groups-messages').hide();
- };
- var closebutton = '<a onclick="closeErrorMessage();" class="close">×</a>'
- $('#groups-messages')
- .text("Group created successfully.")
- .prepend(closebutton)
- .removeClass()
- .addClass('alert alert-warning')
- .show();
- },
- function() {
- closeErrorMessage = function() {
- $('#groups-messages').hide();
- };
- var closebutton = '<a onclick="closeErrorMessage();" class="close">×</a>'
- $('#groups-messages').text("Unable to create group").prepend(closebutton).addClass('alert-error').show();
- }
- ));
-
- $(this).modal('hide');
- }
- }
-
- function submitAddGroupToUser() {
- var form = $(this);
- formClearErrors(form);
- var add_group_groupname = $('#search-group-name-input');
- var bValid = checkLength2(add_group_groupname, 1, 80)
- && checkRegexp2(add_group_groupname, usernameRegex, usernameAllowedCharsMessage);
-
- if (bValid) {
- userId = $('#search-group-userid').val();
- groupId = $('#search-group-name-input').val();
-
- runAppQuery(new Usergrid.Query("POST", "/groups/" + groupId + "/users/" + userId, null, null,
- function() { requestUser(userId); },
- function() { alertModal("Error", "Unable to add group to user"); }
- ));
-
- $(this).modal('hide');
- }
- }
-
- function submitAddUserToGroup() {
- var form = $(this);
- formClearErrors(form);
- var add_user_username = $('#search-user-name-input');
- var bValid = checkLength2(add_user_username, 1, 80)
- && checkRegexp2(add_user_username, usernameRegex, usernameAllowedCharsMessage);
-
- if (bValid) {
- userId = $('#search-user-name-input').val();
- groupId = $('#search-user-groupid').val();
- runAppQuery(new Usergrid.Query("POST", "/groups/" + groupId + "/users/" + userId, null, null,
- function() { requestGroup(groupId); },
- function() { alertModal("Error", "Unable to add user to group"); }
- ));
- $(this).modal('hide');
- }
- }
-
- function submitFollowUser(){
- var form = $(this);
- formClearErrors(form);
- var username = $('#search-follow-username-input');
- var bValid = checkLength2(username, 1, 80) && checkRegexp2(username, usernameRegex, usernameAllowedCharsMessage);
- if (bValid) {
- var followingUserId = $('#search-follow-username').val();
- var followedUserId = $('#search-follow-username-input').val();
- runAppQuery(new Usergrid.Query("POST", "/users/" + followingUserId + "/following/user/" + followedUserId, null, null,
- function() { pageSelectUserGraph(followingUserId)},
- function() {alertModal("Error", "Unable to follow User");}
- ));
- $(this).modal('hide');
- }
- }
-
- function submitAddRoleToUser(roleName, roleTitle) {
- var form = $(this);
- formClearErrors(form);
- var roleIdField = $('#search-roles-user-name-input');
- var bValid = checkLength2(roleIdField, 1, 80) && checkRegexp2(roleIdField, usernameRegex, usernameAllowedCharsMessage)
- var username = $('#search-roles-user-name-input').val();
- if (bValid) {
- runAppQuery(new Usergrid.Query("POST", "/roles/" + roleName + "/users/" + username, null, null,
- function() { pageSelectRoleUsers(roleName, roleTitle); },
- function() { alertModal("Error", "Unable to add user to role"); }
- ));
- $('#dialog-form-add-role-to-user').modal('hide');
- }
- }
-
- function submitAddUserToRole() {
- var form = $(this);
- formClearErrors(form);
-
- var roleIdField = $('#search-role-name-input');
- var bValid = checkLength2(roleIdField, 1, 80)
- && checkRegexp2(roleIdField, roleRegex, roleAllowedCharsMessage)
-
- var username = $('#role-form-username').val();
- var roleId = $('#search-role-name-input').val();
- // role may have a preceding or trailing slash, remove it
- roleId = roleId.replace('/','');
- if (bValid) {
- runAppQuery(new Usergrid.Query("POST", "/roles/" + roleId + "/users/" + username, null, null,
- function() { pageSelectUserPermissions(username); },
- function() { alertModal("Error", "Unable to add user to role"); }
- ));
-
- $(this).modal('hide');
- }
- }
-
- function deleteUsersFromRoles(username) {
- var items = $('#users-permissions-response-table input[class^=listItem]:checked');
- if(!items.length){
- alertModal("Error", "Please, first select the roles you want to delete for this user.");
- return;
- }
-
- confirmDelete(function(){
- items.each(function() {
- var roleName = $(this).attr("value");
- runAppQuery(new Usergrid.Query("DELETE", "/roles/" + roleName + "/users/" + username, null, null,
- function() { pageSelectUserPermissions (username); },
- function() { alertModal("Error", "Unable to remove user from role"); }
- ));
- });
- });
- }
- window.Usergrid.console.deleteUsersFromRoles = deleteUsersFromRoles;
-
- function deleteRoleFromUser(roleName, roleTitle) {
- var items = $('#role-users input[class^=listItem]:checked');
- if(!items.length){
- alertModal("Error", "Please, first select the users you want to delete from this role.");
- return;
- }
-
- confirmDelete(function(){
- items.each(function() {
- var username = $(this).attr("value");
- runAppQuery(new Usergrid.Query("DELETE", "/roles/" + roleName + "/users/" + username, null, null,
- function() { pageSelectRoleUsers (roleName, roleTitle); },
- function() { alertModal("Error", "Unable to remove user from role"); }
- ));
- });
- });
- }
- window.Usergrid.console.deleteRoleFromUser = deleteRoleFromUser;
-
- function removeUserFromGroup(userId) {
- var items = $('#user-panel-memberships input[class^=listItem]:checked');
- if(!items.length){
- alertModal("Error", "Please, first select the groups you want to delete for this user.")
- return;
- }
- confirmDelete(function(){
- items.each(function() {
- var groupId = $(this).attr("value");
- runAppQuery(new Usergrid.Query("DELETE", "/groups/" + groupId + "/users/" + userId, null, null,
- function() { pageSelectUserGroups (userId); },
- function() { alertModal("Error", "Unable to remove user from group"); }
- ));
- });
- });
- }
- window.Usergrid.console.removeUserFromGroup = removeUserFromGroup;
-
- function removeGroupFromUser(groupId) {
- var items = $('#group-panel-memberships input[class^=listItem]:checked');
- if (!items.length) {
- alertModal("Error", "Please, first select the users you want to from this group.");
- return;
- }
-
- confirmDelete(function(){
- items.each(function() {
- var userId = $(this).attr("value");
- runAppQuery(new Usergrid.Query("DELETE", "/groups/" + groupId + "/users/" + userId, null, null,
- function() { pageSelectGroupMemberships (groupId); },
- function() { alertModal("Error", "Unable to remove user from group"); }
- ));
- });
- });
- }
- window.Usergrid.console.removeGroupFromUser = removeGroupFromUser;
-
- function deleteRolesFromGroup(roleId, rolename) {
- var items = $('#group-panel-permissions input[class^=listItem]:checked');
- if(!items.length){
- alertModal("Error", "Please, first select the roles you want to delete from this group.")
- return;
- }
-
- confirmDelete(function(){
- items.each(function() {
- var roleId = $(this).attr("value");
- var groupname = $('#role-form-groupname').val();
- runAppQuery(new Usergrid.Query("DELETE", "/roles/" + roleId + "/groups/" + groupname, null, null,
- function() { pageSelectGroupPermissions(groupname); },
- function() { alertModal("Error", "Unable to remove role from group"); }
- ));
- });
- });
- }
- window.Usergrid.console.deleteRolesFromGroup = deleteRolesFromGroup;
-
- function submitAddRoleToGroup() {
- var form = $(this);
- formClearErrors(form);
-
- var roleIdField = $('#search-groups-role-name-input');
- var bValid = checkLength2(roleIdField, 1, 80)
- && checkRegexp2(roleIdField, roleRegex, roleAllowedCharsMessage)
-
- var groupname = $('#role-form-groupname').val();
- var roleId = $('#search-groups-role-name-input').val();
- // role may have a preceding or trailing slash, remove it
- roleId = roleId.replace('/','');
-
- if (bValid) {
- runAppQuery(new Usergrid.Query("POST", "/groups/" + groupname + "/roles/" + roleId, null, null,
- function() { pageSelectGroupPermissions(groupname); },
- function() { alertModal("Error", "Unable to add user to role"); }
- ));
- $(this).modal('hide');
- }
- }
-
- /*******************************************************************
- *
- * Generic page select
- *
- ******************************************************************/
- function pageSelect(name) {
- if (name) {
- //the following 3 lines are just a safety check, we could just store the name
- //get the current org name
- var currentOrg = Usergrid.ApiClient.getOrganizationName();
- //get a reference to the current org object by using the name
- var org = Usergrid.organizations.getItemByName(currentOrg);
- //get a reference to the specified app by name
- var app = org.getItemByName(name);
- //store the name
- Usergrid.ApiClient.setApplicationName(app.getName());
- }
- setNavApplicationText();
- getCollections();
- query_history = [];
- }
- window.Usergrid.console.pageSelect = pageSelect;
-
-
- /*******************************************************************
- *
- * Application
- *
- ******************************************************************/
-
- function pageSelectApplication() {
- pageSelect();
- requestApplicationUsage();
- }
- window.Usergrid.console.pageSelectApplication = pageSelectApplication;
-
- function updateApplicationDashboard(){
- var data = new google.visualization.DataTable();
- data.addColumn('string', 'Entity');
- data.addColumn('number', 'Count');
- var rows = [];
- var t = '<table class="table table-bordered" id="application-panel-entity-counts">';
- var collectionNames = keys(applicationData.Collections).sort();
-
- var entity_count = 0;
- for (var i in collectionNames) {
- var collectionName = collectionNames[i];
- var collection = applicationData.Collections[collectionName];
- var row = [collectionName, {v: Math.abs(collection.count)}];
- rows.push(row);
- collectionName = escapeString(collectionName);
- t += '<tr class="zebraRows"><td>' + collection.count + '</td><td>' + collectionName + '</td></tr>';
- entity_count += collection.count;
- }
- t += '<tr id="application-panel-entity-total"><th>' + entity_count + '</th><th>entities total</th></tr>';
- t += '</table>';
- data.addRows(rows);
-
- new google.visualization.PieChart(
- document.getElementById('application-panel-entity-graph')).
- draw(data, {
- height: 200,
- is3D: true,
- backgroundColor: backgroundGraphColor
- }
- );
-
- $('#dashboard-panel #application-panel-text').html(t);
- }
-
- function requestApplicationUsage() {
- $('#application-entities-timeline').html("");
- $('#application-cpu-time').html("");
- $('#application-data-uploaded').html("");
- $('#application-data-downloaded').html("");
- var params = {};
- params.start_time = Math.floor(new Date().getTime() / 1209600000) * 1209600000;
- params.end_time = start_timestamp + 1209600000;
- params.resolution = "day";
- params.counter = ["application.entities", "application.request.download", "application.request.time", "application.request.upload"];
- params.pad = true;
-
- runAppQuery(new Usergrid.Query("GET", "counters", null, params,
- function(response) {
- var usage_counters = response.counters;
-
- if (!usage_counters) {
- $('#application-entities-timeline').html("");
- $('#application-cpu-time').html("");
- $('#application-data-uploaded').html("");
- $('#application-data-downloaded').html("");
- return;
- }
-
- var graph_width = 350;
- var graph_height = 100;
- var data = new google.visualization.DataTable();
- data.addColumn('date', 'Time');
- data.addColumn('number', 'Entities');
- data.addRows(15);
-
- for (var i in usage_counters[0].values) {
- data.setCell(parseInt(i), 0, new Date(usage_counters[0].values[i].timestamp));
- data.setCell(parseInt(i), 1, usage_counters[0].values[i].value);
- }
-
- new google.visualization.LineChart(document.getElementById('application-entities-timeline')).draw(data, {
- title: "Entities",
- titlePosition: "in",
- titleTextStyle: {color: 'black', fontName: 'Arial', fontSize: 18},
- width: graph_width,
- height: graph_height,
- backgroundColor: backgroundGraphColor,
- legend: "none",
- hAxis: {textStyle: {color:"transparent", fontSize: 1}},
- vAxis: {textStyle: {color:"transparent", fontSize: 1}}
- });
-
- data = new google.visualization.DataTable();
- data.addColumn('date', 'Time');
- data.addColumn('number', 'CPU');
- data.addRows(15);
-
- for (var i in usage_counters[2].values) {
- data.setCell(parseInt(i), 0, new Date(usage_counters[2].values[i].timestamp));
- data.setCell(parseInt(i), 1, usage_counters[2].values[i].value);
- }
-
- new google.visualization.LineChart(document.getElementById('application-cpu-time')).draw(data, {
- title: "CPU Time Used",
- titlePosition: "in",
- titleTextStyle: {color: 'black', fontName: 'Arial', fontSize: 18},
- width: graph_width,
- height: graph_height,
- backgroundColor: backgroundGraphColor,
- legend: "none",
- hAxis: {textStyle: {color:"transparent", fontSize: 1}},
- vAxis: {textStyle: {color:"transparent", fontSize: 1}}
- });
-
- data = new google.visualization.DataTable();
- data.addColumn('date', 'Time');
- data.addColumn('number', 'Uploaded');
- data.addRows(15);
-
- for (var i in usage_counters[3].values) {
- data.setCell(parseInt(i), 0, new Date(usage_counters[3].values[i].timestamp));
- data.setCell(parseInt(i), 1, usage_counters[3].values[i].value);
- }
-
- new google.visualization.LineChart(document.getElementById('application-data-uploaded')).draw(data, {
- title: "Bytes Uploaded",
- titlePosition: "in",
- titleTextStyle: {color: 'black', fontName: 'Arial', fontSize: 18},
- width: graph_width,
- height: graph_height,
- backgroundColor: backgroundGraphColor,
- legend: "none",
- hAxis: {textStyle: {color:"transparent", fontSize: 1}},
- vAxis: {textStyle: {color:"transparent", fontSize: 1}}
- });
-
- data = new google.visualization.DataTable();
- data.addColumn('date', 'Time');
- data.addColumn('number', 'Downloaded');
- data.addRows(15);
-
- for (var i in usage_counters[1].values) {
- data.setCell(parseInt(i), 0, new Date(usage_counters[1].values[i].timestamp));
- data.setCell(parseInt(i), 1, usage_counters[1].values[i].value);
- }
-
- new google.visualization.LineChart(document.getElementById('application-data-downloaded')).draw(data, {
- title: "Bytes Downloaded",
- titlePosition: "in",
- titleTextStyle: {color: 'black', fontName: 'Arial', fontSize: 18},
- width: graph_width,
- height: graph_height,
- backgroundColor: backgroundGraphColor,
- legend: "none",
- hAxis: {textStyle: {color:"transparent", fontSize: 1}},
- vAxis: {textStyle: {color:"transparent", fontSize: 1}}
- });
- },
- function() {
- $('#application-entities-timeline').html("");
- $('#application-cpu-time').html("");
- $('#application-data-uploaded').html("");
- $('#application-data-downloaded').html("");
- }
- ));
- }
- window.Usergrid.console.requestApplicationUsage = requestApplicationUsage;
-
- /*******************************************************************
- *
- * Query Object Setup
- *
- ******************************************************************/
- var queryObj = {};
-
- function hidePagination(section) {
- $('#'+section+'-pagination').hide();
- $('#'+section+'-next').hide();
- $('#'+section+'-previous').hide();
- }
-
- function showPagination(section){
- if (queryObj.hasNext()) {
- $('#'+section+'-pagination').show();
- $('#'+section+'-next').show();
- }
-
- if (queryObj.hasPrevious()) {
- $('#'+section+'-pagination').show();
- $('#'+section+'-previous').show();
- }
- }
-
- function hideCurlCommand(section) {
- $('#'+section+'-curl-container').hide();
- $('#'+section+'-curl-token').hide();
- }
-
- function showCurlCommand(section, curl, token) {
- var data = {
- curlData: curl,
- sectionName: section
- };
- var sectionId = $('#'+section+'-curl-container');
- sectionId.html("");
- $.tmpl('apigee.ui.curl.detail.html', data).appendTo(sectionId);
- sectionId.show();
- if (!token) {
- $('#'+section+'-curl-token').hide();
- }
- }
-
- function copyCurlCommand() {
- $('#copypath', 'body')
- .find('a')
- .livequery('click', function() {
- $(this)
- .blur();
- var nodetext = $('#'+section+'-curl').html();
- $('#copypath input').focus();
- $('#copypath input').select();
- return false;
- });
-
- }
-
- function bindPagingEvents(section) {
- $(document).off('click', '#'+section+'-previous', getPrevious);
- $(document).off('click', '#'+section+'-next', getNext);
- //bind the click events
- $(document).on('click', '#'+section+'-previous', getPrevious);
- $(document).on('click', '#'+section+'-next', getNext);
- }
- Usergrid.console.bindPagingEvents = bindPagingEvents;
-
- function getPrevious() { //called by a click event - for paging
- queryObj.getPrevious();
- runAppQuery();
- }
- function getNext() { //called by a click event - for paging
- queryObj.getNext();
- runAppQuery();
- }
-
- function runAppQuery(_queryObj) {
- var obj = _queryObj || queryObj;
- Usergrid.ApiClient.runAppQuery(obj);
- return false;
- }
-
- function runManagementQuery(_queryObj) {
- var obj = _queryObj || queryObj;
- Usergrid.ApiClient.runManagementQuery(obj);
- return false;
- }
-
- /*******************************************************************
- *
- * Users
- *
- ******************************************************************/
- var userLetter = "*";
- var userSortBy = "username";
-
- function pageSelectUsers() {
- //Hide old Alert Messages
- hideModal('#users-messages');
- //make a new query object
- queryObj = new Usergrid.Query(null);
- //bind events for previous and next buttons
- bindPagingEvents('users');
- //reset paging so we start at the first page
- queryObj.resetPaging();
- //the method to get the compile and call the query
- getUsers();
- //ui stuff
- selectFirstTabButton('#users-panel-tab-bar');
- showPanelList('users');
- $('#search-user-username').val(''); //reset the search box
- }
- window.Usergrid.console.pageSelectUsers = pageSelectUsers;
-
- function getUsers(search, searchType) {
- //clear out the table before we start
- hideCurlCommand('users');
- var output = $('#users-table');
- output.empty();
- var query = {"ql" : "order by " + userSortBy}; //default to built in search
- if (typeof search == 'string') {
- if (search.length > 0) {
- if (searchType == 'name') {
- query = {"ql" : searchType + " contains '" + search + "*'"};
- } else {
- query = {"ql" : searchType + "='" + search + "*'"};
- }
- }
- } else if (userLetter != "*") {
- query = {"ql" : searchType + "='" + userLetter + "*'"};
- }
-
- queryObj = new Usergrid.Query("GET", "users", null, query, getUsersCallback, function() { alertModal("Error", "Unable to retrieve users."); });
- runAppQuery(queryObj);
- }
-
- function getUsersCallback(response) {
- response = escapeMe(response);
- hidePagination('users');
- var output = $('#users-table');
- if (response.entities.length < 1) {
- output.replaceWith('<div id="users-table" class="panel-section-message">No users found.</div>');
- } else {
- output.replaceWith('<table id="users-table" class="table"><tbody><tr class="zebraRows users-row"><td class="checkboxo"><input type="checkbox" onclick="Usergrid.console.selectAllEntities(this);" /></td><td class="gravatar50-td"> </td><td class="user-details bold-header">username</td><td class="user-details bold-header">Display Name</td><td class="view-details"> </td></tr></tbody></table>');
- for (i = 0; i < response.entities.length; i++) {
- var this_data = response.entities[i];
- if (!this_data.picture) {
- this_data.picture = window.location.protocol+ "//" + window.location.host + window.location.pathname + "images/user-photo.png"
- } else {
- this_data.picture = get_replacementGravatar(this_data.picture);
- }
- $.tmpl('apigee.ui.users.table_rows.html', this_data).appendTo('#users-table');
- }
- }
- showPagination('users');
- showCurlCommand('users', queryObj.getCurl(), queryObj.getToken());
- }
-
- function showUsersForSearch(search){
- selectFirstTabButton('#users-panel-tab-bar');
- $('#users-panel-search').hide();
- selectTabButton('#button-users-list');
- $('#users-panel-list').show();
- userLetter = search;
- getUsers();
- }
- Usergrid.console.showUsersForSearch = showUsersForSearch;
-
- function searchUsers(){
- var search = $('#search-user-username').val();
- var searchType = ($('#search-user-type').val())?$('#search-user-type').val():userSortBy;
- //make sure the input is valid:
- if (searchType == 'name') {
- searchType = 'name';
- } else if (searchType == 'username') {searchType = 'username';}
- getUsers(search, searchType);
- }
- Usergrid.console.searchUsers = searchUsers;
-
- function selectAllEntities(checkbox){
- if (checkbox.checked) {
- $('[class=listItem]').attr('checked', true);
- } else {
- $('[class=listItem]').attr('checked', false);
- }
- }
- window.Usergrid.console.selectAllEntities = selectAllEntities;
-
- $('#delete-users-link').click(deleteUsers);
- function deleteUsers(e) {
- e.preventDefault();
-
- var items = $('#users-table input[class^=listItem]:checked');
- if(!items.length){
- alertModal("Error", "Please, first select the users you want to delete.");
- return;
- }
-
- confirmDelete(function(){
- items.each(function() {
- var userId = $(this).attr("value");
- runAppQuery(new Usergrid.Query("DELETE", 'users/' + userId, null, null,
- getUsers,
- function() { alertModal("Error", "Unable to delete user - " + userId) }
- ));
- });
- });
- }
-
- /*******************************************************************
- *
- * User
- *
- ******************************************************************/
-
- function pageOpenUserProfile(userName) {
- hideModal('.messages');
- Pages.SelectPanel('user');
- requestUser(userName);
- selectTabButton('#button-user-profile');
- showPanelContent('#user-panel', '#user-panel-profile');
- }
- window.Usergrid.console.pageOpenUserProfile = pageOpenUserProfile;
-
- function pageOpenUserActivities(userId) {
- Pages.SelectPanel('user');
- requestUser(userId);
- selectTabButton('#button-user-activities');
- showPanelContent('#user-panel', '#user-panel-activities');
- }
- window.Usergrid.console.pageOpenUserActivities = pageOpenUserActivities;
-
- function pageSelectUserPermissions(userId) {
- Pages.SelectPanel('user');
- requestUser(userId);
- selectTabButton('#button-user-permissions');
- showPanelContent('#user-panel', '#user-panel-permissions');
- }
- window.Usergrid.console.pageSelectUserPermissions = pageSelectUserPermissions;
-
- function pageSelectUserGroups(userId) {
- Pages.SelectPanel('user');
- requestUser(userId);
- selectTabButton('#button-user-memberships');
- showPanelContent('#user-panel', '#user-panel-memberships');
- }
-
- function pageSelectUserGraph(userId) {
- Pages.SelectPanel('user');
- requestUser(userId);
- selectTabButton('#button-user-graph');
- showPanelContent('#user-panel', '#user-panel-graph');
- }
-
- window.Usergrid.console.pageSelectUserGroups = pageSelectUserGroups;
-
- function saveUserProfile(uuid){
- var payload = Usergrid.console.ui.jsonSchemaToPayload(Usergrid.console.ui.collections.vcard_schema);
- runAppQuery(new Usergrid.Query("PUT", "users/"+uuid, payload, null,
- completeSave,
- function() { alertModal("Error", "Unable to update User"); }
- ));
- }
- window.Usergrid.console.saveUserProfile = saveUserProfile;
-
- function completeSave(){
- closeMessage = function() {
- $('.messages').hide();
- };
- var closebutton = '<a onclick="closeMessage();" class="close">×</a>'
- $('.messages').text("Information Saved.").prepend(closebutton).show();
- }
-
- function redrawUserProfile(data, curl){
- redrawFormPanel('user-panel-profile', 'apigee.ui.panels.user.profile.html', data);
- showCurlCommand('user-panel-profile', curl);
- };
-
- function redrawUserMemberships(data, curl){
- redrawPanel('user-panel-memberships', 'apigee.ui.panels.user.memberships.html', data);
- showCurlCommand('user-panel-memberships', curl);
- updateGroupsAutocomplete();
- };
-
- function redrawUserActivities(data, curl){
- redrawPanel('user-panel-activities', 'apigee.ui.panels.user.activities.html', data);
- showCurlCommand('user-panel-activities', curl);
- };
-
- function redrawUserGraph(data, curlFollowing, curlFollowers){
- redrawPanel('user-panel-graph', 'apigee.ui.panels.user.graph.html', data);
- showCurlCommand('user-panel-following', curlFollowing);
- showCurlCommand('user-panel-followers', curlFollowers);
- updateFollowUserAutocomplete();
- };
-
- function redrawUserPermissions(data, curlRoles, curlPermissions){
- redrawPanel('user-panel-permissions', 'apigee.ui.panels.user.permissions.html', data);
- showCurlCommand('user-panel-roles', curlRoles);
- showCurlCommand('user-panel-permissions', curlPermissions);
- updateRolesAutocomplete();
- updateQueryAutocompleteCollectionsUsers();
- };
-
- function redrawPanel(panelDiv, panelTemplate, data){
- $("#"+panelDiv).html("");
- $.tmpl(panelTemplate, data).appendTo($("#"+panelDiv));
- };
-
- function redrawGroupForm(panelDiv, panelTemplate, data){
- $("#"+panelDiv).html("");
- var details = $.tmpl(panelTemplate, data);
- var formDiv = details.find('.query-result-form');
- $(formDiv).buildForm(Usergrid.console.ui.jsonSchemaToDForm(Usergrid.console.ui.collections.group_schema, data.entity));
- details.appendTo($("#"+panelDiv));
- details.find('.button').button();
- }
-
- function redrawFormPanel(panelDiv, panelTemplate, data){
- $("#"+panelDiv).html("");
- var details = $.tmpl(panelTemplate, data);
- var formDiv = details.find('.query-result-form');
- $(formDiv).buildForm(Usergrid.console.ui.jsonSchemaToDForm(Usergrid.console.ui.collections.vcard_schema, data.entity));
- details.appendTo($("#"+panelDiv));
- };
-
- function saveUserData(){
- Usergrid.console.ui.jsonSchemaToPayload(schema, obj);
- }
-
- var user_data = null;
-
- function handleUserResponse(response) {
- if (response.entities && (response.entities.length > 0)) {
- var entity = response.entities[0];
- var path = response.path || "";
- path = "" + path.match(/[^?]*/);
- var username = entity.username;
- var name = entity.uuid + " : " + entity.type;
-
- if (entity.username) {
- name = entity.username;
- }
-
- if (entity.name) {
- name = name + " : " + entity.name;
- }
-
- var collections = $.extend({ }, (entity.metadata || { }).collections, (entity.metadata || { }).connections);
- if ($.isEmptyObject(collections)){
- collections = null;
- }
-
- var entity_contents = $.extend( false, { }, entity);
- delete entity_contents['metadata'];
-
- var metadata = entity.metadata;
- if ($.isEmptyObject(metadata)){
- metadata = null;
- }
-
- var entity_path = (entity.metadata || {}).path;
- if ($.isEmptyObject(entity_path)) {
- entity_path = path + "/" + entity.uuid;
- }
-
- var picture = window.location.protocol+ "//" + window.location.host + window.location.pathname + "images/user_profile.png";
- if (entity.picture) {
- entity.picture = entity.picture.replace(/^http:\/\/www.gravatar/i, 'https://secure.gravatar');
- //note: changing this to use the image on apigee.com - since the gravatar default won't work on any non-public domains such as localhost
- //this_data.picture = this_data.picture + encodeURI("?d="+window.location.protocol+"//" + window.location.host + window.location.pathname + "images/user_profile.png");
- picture = entity.picture + encodeURI("?d=https://apigee.com/usergrid/img/user_profile.png");
- }
-
- var data = {
- entity: entity_contents,
- picture: picture,
- name: name,
- username: username,
- path: entity_path,
- collections: collections,
- metadata: metadata,
- uri: (entity.metadata || { }).uri,
- followingCurl: "",
- followersCurl: "",
- rolesCurl: "",
- permissionsCurl: ""
- }
-
- redrawUserProfile(data, this.getCurl());
-
- //TODO: This block and the subsequent blocks could all be methods of their own
- runAppQuery(new Usergrid.Query("GET", 'users/' + entity.username + '/groups', null, null,
- function(response) {
- if (data && response.entities && (response.entities.length > 0)) {
- data.memberships = response.entities;
- }
- redrawUserMemberships(data, this.getCurl());
- },
- function() { alertModal("Error", "Unable to retrieve user's groups."); }
- ));
-
- runAppQuery(new Usergrid.Query("GET", 'users/' + entity.username + '/activities', null, null,
- function(response) {
- if (data && response.entities && (response.entities.length > 0)) {
- data.activities = response.entities;
- data.curl = this.getCurl();
- $('span[id^=activities-date-field]').each( function() {
- var created = dateToString(parseInt($(this).html()))
- $(this).html(created);
- });
- }
- redrawUserActivities(data, this.getCurl());
- },
- function() { alertModal("Error", "Unable to retrieve user's activities.");}
- ));
-
- runAppQuery(new Usergrid.Query("GET", 'users/' + entity.username + '/roles', null, null,
- function(response) {
- response = escapeMe(response);
- if (data && response.entities && (response.entities.length > 0)) {
- data.roles = response.entities;
- } else {
- data.roles = null;
- }
- data.rolesCurl = this.getCurl();
- //Run Permissions query after roles query has been handled
- runAppQuery(new Usergrid.Query("GET", 'users/' + entity.username + '/permissions', null, null,
- function(response) {
- var permissions = {};
- if (data && response.data && (response.data.length > 0)) {
-
- if (response.data) {
- var perms = response.data;
- var count = 0;
-
- for (var i in perms) {
- count++;
- var perm = perms[i];
- var parts = perm.split(':');
- var ops_part = "";
- var path_part = parts[0];
-
- if (parts.length > 1) {
- ops_part = parts[0];
- path_part = parts[1];
- }
-
- ops_part.replace("*", "get,post,put,delete")
- var ops = ops_part.split(',');
- p
<TRUNCATED>