awx/awx/ui/static/js/app.js

341 lines
14 KiB
JavaScript

/************************************
* Copyright (c) 2014 AnsibleWorks, Inc.
*
* Our main application mdoule. Declare application routes and perform initialization chores.
*
*/
var urlPrefix = $basePath;
angular.module('ansible', [
'RestServices',
'AuthService',
'Utilities',
'OrganizationFormDefinition',
'UserFormDefinition',
'FormGenerator',
'OrganizationListDefinition',
'UserListDefinition',
'UserHelper',
'ListGenerator',
'PromptDialog',
'ApiLoader',
'RelatedSearchHelper',
'RelatedPaginateHelper',
'SearchHelper',
'PaginateHelper',
'RefreshHelper',
'AdminListDefinition',
'AWDirectives',
'InventoriesListDefinition',
'InventoryFormDefinition',
'InventoryHelper',
'InventoryGroupsDefinition',
'InventoryHostsDefinition',
'HostsHelper',
'AWFilters',
'HostFormDefinition',
'HostListDefinition',
'GroupFormDefinition',
'GroupListDefinition',
'GroupsHelper',
'TeamsListDefinition',
'TeamFormDefinition',
'TeamHelper',
'CredentialsListDefinition',
'CredentialFormDefinition',
'LookUpHelper',
'JobTemplatesListDefinition',
'JobTemplateFormDefinition',
'JobSubmissionHelper',
'ProjectsListDefinition',
'ProjectFormDefinition',
'ProjectStatusDefinition',
'ProjectsHelper',
'PermissionFormDefinition',
'PermissionListDefinition',
'PermissionsHelper',
'JobsListDefinition',
'JobFormDefinition',
'JobEventsListDefinition',
'JobEventDataDefinition',
'JobHostDefinition',
'JobSummaryDefinition',
'ParseHelper',
'ChildrenHelper',
'EventsHelper',
'ProjectPathHelper',
'md5Helper',
'AccessHelper',
'SelectionHelper',
'License',
'HostGroupsFormDefinition',
'JobStatusWidget',
'InventorySyncStatusWidget',
'SCMSyncStatusWidget',
'ObjectCountWidget',
'StreamWidget',
'JobsHelper',
'InventoryStatusDefinition',
'InventorySummaryHelpDefinition',
'InventoryHostsHelpDefinition',
'InventoryTree',
'CredentialsHelper',
'TimerService',
'StreamListDefinition',
'HomeGroupListDefinition',
'HomeHostListDefinition',
'ActivityDetailDefinition'
])
.config(['$routeProvider', function($routeProvider) {
$routeProvider.
when('/jobs',
{ templateUrl: urlPrefix + 'partials/jobs.html', controller: JobsListCtrl }).
when('/jobs/:id',
{ templateUrl: urlPrefix + 'partials/jobs.html', controller: JobsEdit }).
when('/jobs/:id/job_events',
{ templateUrl: urlPrefix + 'partials/jobs.html', controller: JobEventsList }).
when('/jobs/:id/job_host_summaries',
{ templateUrl: urlPrefix + 'partials/jobs.html', controller: JobHostSummaryList }).
when('/jobs/:job_id/job_events/:event_id',
{ templateUrl: urlPrefix + 'partials/jobs.html', controller: JobEventsEdit }).
when('/job_templates',
{ templateUrl: urlPrefix + 'partials/job_templates.html', controller: JobTemplatesList }).
when('/job_templates/add',
{ templateUrl: urlPrefix + 'partials/job_templates.html', controller: JobTemplatesAdd }).
when('/job_templates/:id',
{ templateUrl: urlPrefix + 'partials/job_templates.html', controller: JobTemplatesEdit }).
when('/projects',
{ templateUrl: urlPrefix + 'partials/projects.html', controller: ProjectsList }).
when('/projects/add',
{ templateUrl: urlPrefix + 'partials/projects.html', controller: ProjectsAdd }).
when('/projects/:id',
{ templateUrl: urlPrefix + 'partials/projects.html', controller: ProjectsEdit }).
when('/projects/:project_id/organizations',
{ templateUrl: urlPrefix + 'partials/projects.html', controller: OrganizationsList }).
when('/projects/:project_id/organizations/add',
{ templateUrl: urlPrefix + 'partials/projects.html', controller: OrganizationsAdd }).
when('/hosts/:id/job_host_summaries',
{ templateUrl: urlPrefix + 'partials/jobs.html', controller: JobHostSummaryList }).
when('/inventories',
{ templateUrl: urlPrefix + 'partials/inventories.html', controller: InventoriesList }).
when('/inventories/add',
{ templateUrl: urlPrefix + 'partials/inventories.html', controller: InventoriesAdd }).
when('/inventories/:inventory_id',
{ templateUrl: urlPrefix + 'partials/inventory-edit.html', controller: InventoriesEdit }).
when('/organizations', { templateUrl: urlPrefix + 'partials/organizations.html',
controller: OrganizationsList }).
when('/organizations/add', { templateUrl: urlPrefix + 'partials/organizations.html',
controller: OrganizationsAdd }).
when('/organizations/:organization_id', { templateUrl: urlPrefix + 'partials/organizations.html',
controller: OrganizationsEdit }).
when('/organizations/:organization_id/admins', { templateUrl: urlPrefix + 'partials/organizations.html',
controller: AdminsList }).
when('/organizations/:organization_id/users', { templateUrl: urlPrefix + 'partials/users.html',
controller: UsersList }).
when('/organizations/:organization_id/users/add', { templateUrl: urlPrefix + 'partials/users.html',
controller: UsersAdd }).
when('/organizations/:organization_id/users/:user_id', { templateUrl: urlPrefix + 'partials/users.html',
controller: UsersEdit }).
when('/teams', { templateUrl: urlPrefix + 'partials/teams.html',
controller: TeamsList }).
when('/teams/add', { templateUrl: urlPrefix + 'partials/teams.html',
controller: TeamsAdd }).
when('/teams/:team_id', { templateUrl: urlPrefix + 'partials/teams.html',
controller: TeamsEdit }).
when('/teams/:team_id/permissions/add', { templateUrl: urlPrefix + 'partials/teams.html',
controller: PermissionsAdd }).
when('/teams/:team_id/permissions', { templateUrl: urlPrefix + 'partials/teams.html',
controller: PermissionsList }).
when('/teams/:team_id/permissions/:permission_id', { templateUrl: urlPrefix + 'partials/teams.html',
controller: PermissionsEdit }).
when('/teams/:team_id/users', { templateUrl: urlPrefix + 'partials/teams.html',
controller: UsersList }).
when('/teams/:team_id/users/:user_id', { templateUrl: urlPrefix + 'partials/teams.html',
controller: UsersEdit }).
when('/teams/:team_id/projects', { templateUrl: urlPrefix + 'partials/teams.html',
controller: ProjectsList }).
when('/teams/:team_id/projects/add', { templateUrl: urlPrefix + 'partials/teams.html',
controller: ProjectsAdd }).
when('/teams/:team_id/projects/:project_id', { templateUrl: urlPrefix + 'partials/teams.html',
controller: ProjectsEdit }).
when('/teams/:team_id/credentials', { templateUrl: urlPrefix + 'partials/teams.html',
controller: CredentialsList }).
when('/teams/:team_id/credentials/add', { templateUrl: urlPrefix + 'partials/teams.html',
controller: CredentialsAdd }).
when('/teams/:team_id/credentials/:credential_id', { templateUrl: urlPrefix + 'partials/teams.html',
controller: CredentialsEdit }).
when('/credentials', { templateUrl: urlPrefix + 'partials/credentials.html',
controller: CredentialsList }).
when('/credentials/add', { templateUrl: urlPrefix + 'partials/credentials.html',
controller: CredentialsAdd }).
when('/credentials/:credential_id', { templateUrl: urlPrefix + 'partials/credentials.html',
controller: CredentialsEdit }).
when('/users', { templateUrl: urlPrefix + 'partials/users.html',
controller: UsersList }).
when('/users/add', { templateUrl: urlPrefix + 'partials/users.html',
controller: UsersAdd }).
when('/users/:user_id', { templateUrl: urlPrefix + 'partials/users.html',
controller: UsersEdit }).
when('/users/:user_id/credentials', { templateUrl: urlPrefix + 'partials/users.html',
controller: CredentialsList }).
when('/users/:user_id/permissions/add', { templateUrl: urlPrefix + 'partials/users.html',
controller: PermissionsAdd }).
when('/users/:user_id/permissions', { templateUrl: urlPrefix + 'partials/users.html',
controller: PermissionsList }).
when('/users/:user_id/permissions/:permission_id', { templateUrl: urlPrefix + 'partials/users.html',
controller: PermissionsEdit }).
when('/users/:user_id/credentials/add', { templateUrl: urlPrefix + 'partials/teams.html',
controller: CredentialsAdd }).
when('/teams/:user_id/credentials/:credential_id', { templateUrl: urlPrefix + 'partials/teams.html',
controller: CredentialsEdit }).
when('/login', { templateUrl: urlPrefix + 'partials/home.html', controller: Authenticate }).
when('/logout', { templateUrl: urlPrefix + 'partials/home.html', controller: Authenticate }).
when('/home', { templateUrl: urlPrefix + 'partials/home.html', controller: Home }).
when('/home/groups', { templateUrl: urlPrefix + 'partials/subhome.html', controller: HomeGroups }).
when('/home/hosts', { templateUrl: urlPrefix + 'partials/subhome.html', controller: HomeHosts }).
otherwise({redirectTo: '/home'});
}])
.run(['$cookieStore', '$rootScope', 'CheckLicense', '$location', 'Authorization','LoadBasePaths', 'ViewLicense',
'Timer', 'ClearScope', 'HideStream',
function($cookieStore, $rootScope, CheckLicense, $location, Authorization, LoadBasePaths, ViewLicense,
Timer, ClearScope, HideStream) {
LoadBasePaths();
$rootScope.breadcrumbs = new Array();
$rootScope.crumbCache = new Array();
$rootScope.sessionTimer = Timer.init();
$rootScope.$on("$routeChangeStart", function(event, next, current) {
// Before navigating away from current tab, make sure the primary view is visible
if ($('#stream-container').is(':visible')) {
HideStream();
}
// On each navigation request, check that the user is logged in
var tst = /(login|logout)/;
var path = $location.path();
if ( !tst.test($location.path()) ) {
// capture most recent URL, excluding login/logout
$rootScope.lastPath = path;
$cookieStore.put('lastPath', path);
}
if (Authorization.isUserLoggedIn() == false) {
if ( next.templateUrl != (urlPrefix + 'partials/login.html') ) {
$location.path('/login');
}
}
else if ($rootScope.sessionTimer.isExpired()) {
if ( next.templateUrl != (urlPrefix + 'partials/login.html') ) {
$rootScope.sessionTimer.expireSession();
$location.path('/login');
}
}
else {
if ($rootScope.current_user == undefined || $rootScope.current_user == null) {
Authorization.restoreUserInfo(); //user must have hit browser refresh
}
CheckLicense();
}
// Make the correct tab active
var base = $location.path().replace(/^\//,'').split('/')[0];
if (base == '') {
base = 'home';
}
else {
base.replace(/\_/g,' ');
}
$('.nav-tabs a[href="#' + base + '"]').tab('show');
});
if (!Authorization.getToken()) {
// When the app first loads, redirect to login page
$rootScope.sessionExpired = false;
$cookieStore.put('sessionExpired', false);
$location.path('/login');
}
else {
// If browser refresh, set the user_is_superuser value
$rootScope['user_is_superuser'] = Authorization.getUserInfo('is_superuser');
}
// If browser refresh, activate the correct tab
var base = ($location.path().replace(/^\//,'').split('/')[0]);
if (base == '') {
base = 'home';
$location.path('/home');
}
else {
base.replace(/\_/g,' ');
}
$('.nav-tabs a[href="#' + base + '"]').tab('show');
$rootScope.viewCurrentUser = function() {
$location.path('/users/' + $rootScope.current_user.id);
}
$rootScope.viewLicense = function() {
//$location.path('/license');
ViewLicense();
}
}]);