mirror of
https://github.com/mmumshad/ansible-playable.git
synced 2025-03-09 23:38:54 +00:00
Change $scope to use project controller object.
Use ansible projects folder location from config file
This commit is contained in:
parent
95cd7370af
commit
7c19035cc1
2 changed files with 93 additions and 75 deletions
|
@ -7,11 +7,14 @@ import routes from './project.routes';
|
||||||
|
|
||||||
export class ProjectComponent {
|
export class ProjectComponent {
|
||||||
/*@ngInject*/
|
/*@ngInject*/
|
||||||
constructor($scope, Projects, Auth) {
|
constructor($scope, Projects, Auth, appConfig) {
|
||||||
'ngInject';
|
'ngInject';
|
||||||
var default_project_folder = '/opt/ehc-ansible-projects/';
|
var default_project_folder = '/opt/ehc-ansible-projects/';
|
||||||
|
|
||||||
$scope.blankProject = {
|
var projectCtrl = this;
|
||||||
|
|
||||||
|
// Define a blank project object
|
||||||
|
projectCtrl.blankProject = {
|
||||||
name: '',
|
name: '',
|
||||||
ansibleEngine: {
|
ansibleEngine: {
|
||||||
ansibleHost: '',
|
ansibleHost: '',
|
||||||
|
@ -23,94 +26,109 @@ export class ProjectComponent {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
$scope.msg = "";
|
projectCtrl.msg = "";
|
||||||
$scope.msg_status = "";
|
projectCtrl.msg_status = "";
|
||||||
|
|
||||||
$scope.newProject = $scope.blankProject;
|
projectCtrl.newProject = projectCtrl.blankProject;
|
||||||
|
|
||||||
$scope.editProjectFlag = false;
|
projectCtrl.editProjectFlag = false;
|
||||||
|
|
||||||
$scope.saveButtonIcon = "fa-save";
|
projectCtrl.saveButtonIcon = "fa-save";
|
||||||
|
|
||||||
$scope.showProjectForm = function(){
|
/**
|
||||||
$scope.showCreateProject = true;
|
* Show Project Form when the create button is clicked
|
||||||
$scope.editProjectFlag = false;
|
*/
|
||||||
$scope.newProject = $scope.blankProject;
|
projectCtrl.showProjectForm = function(){
|
||||||
$scope.msg = "";
|
projectCtrl.showCreateProject = true;
|
||||||
$scope.msg_status = "";
|
projectCtrl.editProjectFlag = false;
|
||||||
|
projectCtrl.newProject = projectCtrl.blankProject;
|
||||||
|
projectCtrl.msg = "";
|
||||||
|
projectCtrl.msg_status = "";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
$scope.hideProjectForm = function(){
|
* Hide Project form when cancel button is clicked
|
||||||
$scope.showCreateProject = false;
|
*/
|
||||||
$scope.editProjectFlag = false;
|
projectCtrl.hideProjectForm = function(){
|
||||||
$scope.newProject = $scope.blankProject;
|
projectCtrl.showCreateProject = false;
|
||||||
$scope.msg = "";
|
projectCtrl.editProjectFlag = false;
|
||||||
$scope.msg_status = "";
|
projectCtrl.newProject = projectCtrl.blankProject;
|
||||||
|
projectCtrl.msg = "";
|
||||||
|
projectCtrl.msg_status = "";
|
||||||
};
|
};
|
||||||
|
|
||||||
$scope.getProjects = function(){
|
/**
|
||||||
console.log("Getting Projects");
|
* Get list of all projects
|
||||||
$scope.projects = Projects.resource.query(function(){
|
*/
|
||||||
console.log($scope.projects);
|
projectCtrl.getProjects = function(){
|
||||||
|
projectCtrl.projects = Projects.resource.query(function(){
|
||||||
|
console.log(projectCtrl.projects);
|
||||||
})
|
})
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
$scope.getProjects();
|
/**
|
||||||
|
* Delete Project
|
||||||
$scope.deleteProject = function(project){
|
* @param project
|
||||||
|
*/
|
||||||
|
projectCtrl.deleteProject = function(project){
|
||||||
project.$remove(function(){
|
project.$remove(function(){
|
||||||
$scope.getProjects();
|
projectCtrl.getProjects();
|
||||||
})
|
})
|
||||||
};
|
};
|
||||||
|
|
||||||
$scope.editProject = function(project){
|
/**
|
||||||
$scope.showCreateProject = true;
|
* Edit Project
|
||||||
$scope.editProjectFlag = true;
|
* @param project
|
||||||
$scope.newProject = project;
|
*/
|
||||||
|
projectCtrl.editProject = function(project){
|
||||||
|
projectCtrl.showCreateProject = true;
|
||||||
|
projectCtrl.editProjectFlag = true;
|
||||||
|
projectCtrl.newProject = project;
|
||||||
};
|
};
|
||||||
|
|
||||||
$scope.createProject = function(){
|
/**
|
||||||
$scope.newProject.creationTime = new Date();
|
* Create a new Project
|
||||||
//$scope.newProject.ansibleEngine.projectFolder = default_project_folder + '/' + $scope.newProject.name
|
*/
|
||||||
//$scope.newProject.ansibleEngine.customModules = $scope.newProject.ansibleEngine.projectFolder + '/library'
|
projectCtrl.createProject = function(){
|
||||||
|
projectCtrl.newProject.creationTime = new Date();
|
||||||
|
|
||||||
var projectSavedCallback = function(){
|
var projectSavedCallback = function(){
|
||||||
$scope.showCreateProject = false;
|
projectCtrl.showCreateProject = false;
|
||||||
$scope.msg = "Project Saved Successfully";
|
projectCtrl.msg = "Project Saved Successfully";
|
||||||
$scope.msg_status = "success";
|
projectCtrl.msg_status = "success";
|
||||||
$scope.getProjects();
|
projectCtrl.getProjects();
|
||||||
$scope.saveButtonIcon = 'fa-save';
|
projectCtrl.saveButtonIcon = 'fa-save';
|
||||||
};
|
};
|
||||||
|
|
||||||
var projectSaveFailedCallback = function(errResponse){
|
var projectSaveFailedCallback = function(errResponse){
|
||||||
$scope.msg = errResponse.data;
|
projectCtrl.msg = errResponse.data;
|
||||||
$scope.msg_status = "danger";
|
projectCtrl.msg_status = "danger";
|
||||||
$scope.saveButtonIcon = 'fa-save';
|
projectCtrl.saveButtonIcon = 'fa-save';
|
||||||
};
|
};
|
||||||
|
|
||||||
$scope.saveButtonIcon = 'fa-spinner fa-spin';
|
projectCtrl.saveButtonIcon = 'fa-spinner fa-spin';
|
||||||
|
|
||||||
if($scope.editProjectFlag){
|
if(projectCtrl.editProjectFlag){
|
||||||
$scope.editProjectFlag = false;
|
projectCtrl.editProjectFlag = false;
|
||||||
$scope.newProject.$update(projectSavedCallback,projectSaveFailedCallback);
|
projectCtrl.newProject.$update(projectSavedCallback,projectSaveFailedCallback);
|
||||||
}else{
|
}else{
|
||||||
Projects.resource.save($scope.newProject,projectSavedCallback,projectSaveFailedCallback);
|
Projects.resource.save(projectCtrl.newProject,projectSavedCallback,projectSaveFailedCallback);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
$scope.$watch('newProject.name', function(newValue, oldValue){
|
// Watch for project name change in create mode and update project and custom modules folder dynamically
|
||||||
console.log("Changed");
|
$scope.$watch('projectCtrl.newProject.name', function(newValue, oldValue){
|
||||||
// Project folders cannot be edited once created
|
// Project folders cannot be edited once created
|
||||||
var user_id = Auth.getCurrentUserSync()._id;
|
var user_id = Auth.getCurrentUserSync()._id;
|
||||||
if($scope.editProjectFlag)return;
|
if(projectCtrl.editProjectFlag)return;
|
||||||
$scope.newProject.ansibleEngine.projectFolder = '/opt/ansible-projects/' + user_id + '_' + newValue;
|
projectCtrl.newProject.ansibleEngine.projectFolder = appConfig.paths.ansible_projects + '/' + user_id + '_' + newValue;
|
||||||
$scope.newProject.ansibleEngine.customModules = '/opt/ansible-projects/' + user_id + '_' + newValue + '/library';
|
projectCtrl.newProject.ansibleEngine.customModules = appConfig.paths.ansible_projects + '/' + user_id + '_' + newValue + '/library';
|
||||||
});
|
});
|
||||||
|
|
||||||
|
projectCtrl.getProjects();
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2,48 +2,48 @@
|
||||||
<div class="row" style="margin-top:50px;">
|
<div class="row" style="margin-top:50px;">
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
|
|
||||||
<button class="btn btn-default" ng-click="showProjectForm()">Create <span class="fa fa-plus"></span></button>
|
<button class="btn btn-default" ng-click="projectCtrl.showProjectForm()">Create <span class="fa fa-plus"></span></button>
|
||||||
|
|
||||||
<form ng-show="showCreateProject">
|
<form ng-show="projectCtrl.showCreateProject">
|
||||||
<p class="form-group">
|
<p class="form-group">
|
||||||
<label>Project Name</label>
|
<label>Project Name</label>
|
||||||
<input type="text" ng-model="newProject.name" class="form-control" ng-required="true">
|
<input type="text" ng-model="projectCtrl.newProject.name" class="form-control" ng-required="true">
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p class="form-group">
|
<p class="form-group">
|
||||||
<label>Ansible Host</label>
|
<label>Ansible Host</label>
|
||||||
<input type="text" ng-model="newProject.ansibleEngine.ansibleHost" class="form-control">
|
<input type="text" ng-model="projectCtrl.newProject.ansibleEngine.ansibleHost" class="form-control">
|
||||||
<div class="hint">Ansible Controller system - A linux system with Ansible Installed on it. Required if you want to execute Ansible playbooks. You could skip this and still generate playbooks but not test them.</div>
|
<div class="hint">Ansible Controller system - A linux system with Ansible Installed on it. Required if you want to execute Ansible playbooks. You could skip this and still generate playbooks but not test them.</div>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p class="form-group" ng-if="newProject.ansibleEngine.ansibleHost">
|
<p class="form-group" ng-if="projectCtrl.newProject.ansibleEngine.ansibleHost">
|
||||||
<label>User</label>
|
<label>User</label>
|
||||||
<input type="text" ng-model="newProject.ansibleEngine.ansibleHostUser" class="form-control">
|
<input type="text" ng-model="projectCtrl.newProject.ansibleEngine.ansibleHostUser" class="form-control">
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p class="form-group" ng-if="newProject.ansibleEngine.ansibleHost">
|
<p class="form-group" ng-if="projectCtrl.newProject.ansibleEngine.ansibleHost">
|
||||||
<label>Host Password</label>
|
<label>Host Password</label>
|
||||||
<input type="password" ng-model="newProject.ansibleEngine.ansibleHostPassword" class="form-control">
|
<input type="password" ng-model="projectCtrl.newProject.ansibleEngine.ansibleHostPassword" class="form-control">
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p class="form-group" ng-if="newProject.ansibleEngine.ansibleHost">
|
<p class="form-group" ng-if="projectCtrl.newProject.ansibleEngine.ansibleHost">
|
||||||
<label>Project Folder</label>
|
<label>Project Folder</label>
|
||||||
<input ng-readonly="editProjectFlag" ng-model="newProject.ansibleEngine.projectFolder" class="form-control">
|
<input ng-readonly="projectCtrl.editProjectFlag" ng-model="projectCtrl.newProject.ansibleEngine.projectFolder" class="form-control">
|
||||||
<div ng-if="newProject.ansibleEngine.ansibleHost" class="hint">A directory path on the Ansible Host to store files of this project </div>
|
<div ng-if="projectCtrl.newProject.ansibleEngine.ansibleHost" class="hint">A directory path on the Ansible Host to store files of this project </div>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p class="form-group" ng-if="newProject.ansibleEngine.ansibleHost">
|
<p class="form-group" ng-if="projectCtrl.newProject.ansibleEngine.ansibleHost">
|
||||||
<label>Custom Modules Location</label>
|
<label>Custom Modules Location</label>
|
||||||
<input ng-readonly="editProjectFlag" ng-model="newProject.ansibleEngine.customModules" class="form-control">
|
<input ng-readonly="projectCtrl.editProjectFlag" ng-model="projectCtrl.newProject.ansibleEngine.customModules" class="form-control">
|
||||||
<div ng-if="newProject.ansibleEngine.ansibleHost" class="hint">A directory path on the Ansible Host to store custom modules for this project </div>
|
<div ng-if="projectCtrl.newProject.ansibleEngine.ansibleHost" class="hint">A directory path on the Ansible Host to store custom modules for this project </div>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<button class="btn btn-success" ng-disabled="!newProject.name" ng-click="createProject()"> Save <span class="fa {{saveButtonIcon}}"></span></button>
|
<button class="btn btn-success" ng-disabled="!projectCtrl.newProject.name" ng-click="projectCtrl.createProject()"> Save <span class="fa {{projectCtrl.saveButtonIcon}}"></span></button>
|
||||||
<button class="btn btn-warning" ng-click="hideProjectForm()"> Cancel <span class="fa fa-times"></span></button>
|
<button class="btn btn-warning" ng-click="projectCtrl.hideProjectForm()"> Cancel <span class="fa fa-times"></span></button>
|
||||||
|
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
<div ng-if="msg" class="alert alert-{{msg_status}}">{{msg}}</div>
|
<div ng-if="msg" class="alert alert-{{ projectCtrl.msg_status }}">{{ projectCtrl.msg }}</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -63,7 +63,7 @@
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr ng-repeat="project in projects | orderBy : 'executionTime'">
|
<tr ng-repeat="project in projectCtrl.projects | orderBy : 'executionTime'">
|
||||||
<td>{{project.name}}</td>
|
<td>{{project.name}}</td>
|
||||||
<td>{{project.ansibleEngine.ansibleHost}}</td>
|
<td>{{project.ansibleEngine.ansibleHost}}</td>
|
||||||
<td>{{project.ansibleVersion}}</td>
|
<td>{{project.ansibleVersion}}</td>
|
||||||
|
@ -71,8 +71,8 @@
|
||||||
<td>{{project.creationTime | date : 'medium'}}</td>
|
<td>{{project.creationTime | date : 'medium'}}</td>
|
||||||
<td>
|
<td>
|
||||||
<div class="btn-group">
|
<div class="btn-group">
|
||||||
<label class="btn btn-default" ng-click="editProject(project)" ><span class="fa fa-edit"></span></label>
|
<label class="btn btn-default" ng-click="projectCtrl.editProject(project)" ><span class="fa fa-edit"></span></label>
|
||||||
<label class="btn btn-danger" ng-click="deleteProject(project)" confirm="Are you sure you want to delete?" ><span class="fa fa-trash"></span></label>
|
<label class="btn btn-danger" ng-click="projectCtrl.deleteProject(project)" confirm="Are you sure you want to delete?" ><span class="fa fa-trash"></span></label>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue