blob: 8d2bcb1e001ea5097605123ad5aa2c9b22b1569e [file] [log] [blame]
/*
* Usergrid.Navigation
*
* Functions to control the navigation of the Console client
*
* Uses: Backbone.router
*
* Requires: Backbonejs, Underscore.js
*
*/
Usergrid.Navigation = Backbone.Router.extend({
routes: {
":organization/:application/organization": "home",
":organization/:application/dashboard": "dashboard",
":organization/:application/users": "users",
":organization/:application/groups": "groups",
":organization/:application/roles": "roles",
":organization/:application/activities": "activities",
":organization/:application/collections": "collections",
":organization/:application/notifications": "notifications",
":organization/:application/sendNotification": "sendNotification",
":organization/:application/messageHistory": "messageHistory",
":organization/:application/notificationsReceipt": "notificationsReceipt",
":organization/:application/configuration": "configuration",
":organization/:application/getStarted": "getStarted",
":organization/:application/analytics": "analytics",
":organization/:application/properties": "properties",
":organization/:application/shell": "shell",
":organization/:application/account": "account",
":organization/home": "home",
":organization": "home",
"": "home"
},
//Router Methods
home: function(organization, application) {
$('body').scrollTop(0);
if(organization) {
this.checkOrganization(organization);
}
this.checkApplication(application);
Pages.SelectPanel('organization');
$('#left2').hide();
},
dashboard: function(organization,application) {
$('body').scrollTop(0);
this.checkOrganization(organization);
this.checkApplication(application);
Usergrid.console.pageSelect(application);
Pages.SelectPanel('dashboard');
$('#left2').hide();
},
users: function(organization, application) {
$('body').scrollTop(0);
this.checkOrganization(organization);
this.checkApplication(application);
Pages.SelectPanel('users');
this.showAppUserContent();
},
groups: function(organization, application) {
$('body').scrollTop(0);
this.checkOrganization(organization);
this.checkApplication(application);
Pages.SelectPanel('groups');
this.showAppUserContent();
},
roles: function(organization, application) {
$('body').scrollTop(0);
this.checkOrganization(organization);
this.checkApplication(application);
Pages.SelectPanel('roles');
this.showAppUserContent();
},
activities: function(organization, application) {
$('body').scrollTop(0);
this.checkOrganization(organization);
this.checkApplication(application);
Pages.SelectPanel('activities');
$('#left2').hide();
},
collections: function(organization, application) {
$('body').scrollTop(0);
this.checkOrganization(organization);
this.checkApplication(application);
Pages.ActivatePanel("collections");
Pages.SelectPanel('collections');
this.showAppDataContent();
},
notifications: function(organization, application) {
$('body').scrollTop(0);
this.checkOrganization(organization);
this.checkApplication(application);
Usergrid.console.getNotifiers();
},
sendNotification: function(organization, application) {
$('body').scrollTop(0);
this.checkOrganization(organization);
this.checkApplication(application);
Pages.ActivatePanel('notifications');
Pages.SelectPanel('notifications');
Usergrid.console.getNotifiers();
},
messageHistory: function(organization, application) {
$('body').scrollTop(0);
this.checkOrganization(organization);
this.checkApplication(application);
Pages.ActivatePanel('messageHistory');
Pages.SelectPanel('messageHistory');
Usergrid.console.bindPagingEvents('notifications-history');
Usergrid.console.getNotifications();
this.showAppNotificationsContent();
},
notificationsReceipt: function(organization, application) {
$('body').scrollTop(0);
this.checkOrganization(organization);
this.checkApplication(application);
if (Usergrid.console.checkForSelectedNotification()) {
Pages.ActivatePanel('notificationsReceipt');
Pages.SelectPanel('notificationsReceipt');
Usergrid.console.bindPagingEvents('notification-receipt');
} else {
Pages.ActivatePanel('messageHistory');
Pages.SelectPanel('messageHistory');
Usergrid.console.bindPagingEvents('notifications-history');
Usergrid.console.getNotifications();
}
this.showAppNotificationsContent();
},
configuration: function(organization, application) {
$('body').scrollTop(0);
this.checkOrganization(organization);
this.checkApplication(application);
Pages.ActivatePanel("configuration");
Pages.SelectPanel('configuration');
Usergrid.console.getCertList();
this.showAppNotificationsContent();
},
getStarted: function(organization, application) {
$('body').scrollTop(0);
this.checkOrganization(organization);
this.checkApplication(application);
Pages.ActivatePanel("getStarted");
Pages.SelectPanel('getStarted');
this.showAppNotificationsContent();
},
analytics: function(organization, application) {
$('body').scrollTop(0);
this.checkOrganization(organization);
this.checkApplication(application);
Pages.SelectPanel('analytics');
$('#left2').hide();
},
properties: function(organization, application) {
$('body').scrollTop(0);
this.checkOrganization(organization);
this.checkApplication(application);
Pages.SelectPanel('properties');
$('#left2').hide();
},
shell: function(organization, application) {
$('body').scrollTop(0);
this.checkOrganization(organization);
this.checkApplication(application);
Pages.SelectPanel('shell');
$('#left2').hide();
},
account: function(organization, application) {
$('body').scrollTop(0);
Pages.SelectPanel('account');
$('#left2').hide();
},
//Utils
checkOrganization: function(org) {
if(!this.isActiveOrganization(org)) {
Usergrid.console.selectOrganization(org);
}
},
isActiveOrganization: function(org) {
if(org) {
if(Usergrid.ApiClient.getOrganizationName() === org ) {
return true
}
}
return false
},
checkApplication: function(app) {
if(app){
if(!this.isActiveApplication(app)) {
Usergrid.console.pageSelect(app);
}
}
},
isActiveApplication: function(app) {
if(app) {
if(Usergrid.ApiClient.getApplicationName() === app) {
return true
}
}
return false
},
getAppNameFromURL: function(){
name = '';
try {
name = window.location.hash.split('/')[1];
} catch (e) {}
return name;
},
getOrgNameFromURL: function(){
name = '';
try {
name = window.location.hash.split('/')[0];
name = name.replace("#","");
} catch (e) {}
return name;
},
showAppUserContent: function(){
$('#left2').show();
$('#sidebar-menu2').show();
$('#left-collections-menu').hide();
$('#left-notifications-menu').hide();
},
showAppDataContent: function(){
$('#left2').show();
$('#sidebar-menu2').hide();
$('#left-collections-menu').show();
$('#left-notifications-menu').hide();
},
showAppNotificationsContent: function(){
$('#left2').show();
$('#sidebar-menu2').hide();
$('#left-collections-menu').hide();
$('#left-notifications-menu').show();
$('#notifications-link').parent().addClass('active');
},
navigateTo: function(address) {
var url;
url = Usergrid.ApiClient.getOrganizationName();
url += "/" + Usergrid.ApiClient.getApplicationName();
url += "/" + address;
// Backbone navigate only triggers page loading if url changes
// loading manually if the url hasn't changed is necessary.
if(Backbone.history.fragment === url) {
Backbone.history.loadUrl(url);
} else {
this.navigate(url, {trigger: true});
}
}
});
Usergrid.Navigation.router = new Usergrid.Navigation();
_.bindAll(Usergrid.Navigation.router);