1
0
Fork 0
mirror of https://github.com/mmumshad/ansible-playable.git synced 2025-02-15 04:42:05 +00:00
ansible-playable/client/app/project/project.component.js

143 lines
3.9 KiB
JavaScript
Raw Normal View History

2017-06-07 17:36:44 +00:00
'use strict';
const angular = require('angular');
const uiRouter = require('angular-ui-router');
import routes from './project.routes';
export class ProjectComponent {
/*@ngInject*/
constructor($scope, Projects, Auth, appConfig) {
2017-06-07 17:36:44 +00:00
'ngInject';
var default_project_folder = '/opt/ehc-ansible-projects/';
var projectCtrl = this;
// Define a blank project object
projectCtrl.blankProject = {
2017-06-07 17:36:44 +00:00
name: '',
ansibleEngine: {
ansibleHost: '',
ansibleHostUser: '',
ansibleHostPassword: '',
projectFolder: '',
customModules: ''
}
};
projectCtrl.msg = "";
projectCtrl.msg_status = "";
2017-06-07 17:36:44 +00:00
projectCtrl.newProject = projectCtrl.blankProject;
2017-06-07 17:36:44 +00:00
projectCtrl.editProjectFlag = false;
2017-06-07 17:36:44 +00:00
projectCtrl.saveButtonIcon = "fa-save";
2017-06-07 17:36:44 +00:00
/**
* Show Project Form when the create button is clicked
*/
projectCtrl.showProjectForm = function(){
projectCtrl.showCreateProject = true;
projectCtrl.editProjectFlag = false;
projectCtrl.newProject = projectCtrl.blankProject;
projectCtrl.msg = "";
projectCtrl.msg_status = "";
2017-06-07 17:36:44 +00:00
};
/**
* Hide Project form when cancel button is clicked
*/
projectCtrl.hideProjectForm = function(){
projectCtrl.showCreateProject = false;
projectCtrl.editProjectFlag = false;
projectCtrl.newProject = projectCtrl.blankProject;
projectCtrl.msg = "";
projectCtrl.msg_status = "";
2017-06-07 17:36:44 +00:00
};
/**
* Get list of all projects
*/
projectCtrl.getProjects = function(){
projectCtrl.projects = Projects.resource.query(function(){
console.log(projectCtrl.projects);
2017-06-07 17:36:44 +00:00
})
};
/**
* Delete Project
* @param project
*/
projectCtrl.deleteProject = function(project){
2017-06-07 17:36:44 +00:00
project.$remove(function(){
projectCtrl.getProjects();
2017-06-07 17:36:44 +00:00
})
};
/**
* Edit Project
* @param project
*/
projectCtrl.editProject = function(project){
projectCtrl.showCreateProject = true;
projectCtrl.editProjectFlag = true;
projectCtrl.newProject = project;
2017-06-07 17:36:44 +00:00
};
/**
* Create a new Project
*/
projectCtrl.createProject = function(){
projectCtrl.newProject.creationTime = new Date();
2017-06-07 17:36:44 +00:00
var projectSavedCallback = function(){
projectCtrl.showCreateProject = false;
projectCtrl.msg = "Project Saved Successfully";
projectCtrl.msg_status = "success";
projectCtrl.getProjects();
projectCtrl.saveButtonIcon = 'fa-save';
2017-06-07 17:36:44 +00:00
};
var projectSaveFailedCallback = function(errResponse){
projectCtrl.msg = errResponse.data;
projectCtrl.msg_status = "danger";
projectCtrl.saveButtonIcon = 'fa-save';
2017-06-07 17:36:44 +00:00
};
projectCtrl.saveButtonIcon = 'fa-spinner fa-spin';
2017-06-07 17:36:44 +00:00
if(projectCtrl.editProjectFlag){
projectCtrl.editProjectFlag = false;
projectCtrl.newProject.$update(projectSavedCallback,projectSaveFailedCallback);
2017-06-07 17:36:44 +00:00
}else{
Projects.resource.save(projectCtrl.newProject,projectSavedCallback,projectSaveFailedCallback);
2017-06-07 17:36:44 +00:00
}
};
// Watch for project name change in create mode and update project and custom modules folder dynamically
$scope.$watch('projectCtrl.newProject.name', function(newValue, oldValue){
// Project folders cannot be edited once created
var user_id = Auth.getCurrentUserSync()._id;
if(projectCtrl.editProjectFlag)return;
projectCtrl.newProject.ansibleEngine.projectFolder = appConfig.paths.ansible_projects + '/' + user_id + '_' + newValue;
projectCtrl.newProject.ansibleEngine.customModules = appConfig.paths.ansible_projects + '/' + user_id + '_' + newValue + '/library';
2017-06-07 17:36:44 +00:00
});
projectCtrl.getProjects();
2017-06-07 17:36:44 +00:00
}
}
export default angular.module('webAppApp.project', [uiRouter])
.config(routes)
.component('project', {
template: require('./project.html'),
controller: ProjectComponent,
controllerAs: 'projectCtrl'
})
.name;