mirror of
https://github.com/ansible/awx.git
synced 2026-05-23 16:47:45 -02:30
/lib/Socket.js removed disconnect code
Removing some code for attempting to disconnect a socket. we found a work around from this and are no longer using this
This commit is contained in:
@@ -19,7 +19,7 @@
|
|||||||
|
|
||||||
tooltip_delay: {show: 500, hide: 100}, // Default number of milliseconds to delay displaying/hiding tooltips
|
tooltip_delay: {show: 500, hide: 100}, // Default number of milliseconds to delay displaying/hiding tooltips
|
||||||
|
|
||||||
debug_mode: false, // Enable console logging messages
|
debug_mode: true, // Enable console logging messages
|
||||||
|
|
||||||
password_strength: 45, // User password strength. Integer between 0 and 100, 100 being impossibly strong.
|
password_strength: 45, // User password strength. Integer between 0 and 100, 100 being impossibly strong.
|
||||||
// This value controls progress bar colors:
|
// This value controls progress bar colors:
|
||||||
|
|||||||
@@ -79,6 +79,8 @@ function JobsListController ($rootScope, $log, $scope, $compile, $routeParams, C
|
|||||||
queued_scope.search('queued_job');
|
queued_scope.search('queued_job');
|
||||||
break;
|
break;
|
||||||
case 'successful':
|
case 'successful':
|
||||||
|
completed_scope.search('completed_job');
|
||||||
|
break;
|
||||||
case 'failed':
|
case 'failed':
|
||||||
case 'error':
|
case 'error':
|
||||||
case 'canceled':
|
case 'canceled':
|
||||||
|
|||||||
@@ -31,8 +31,7 @@ function PortalController($scope, $compile, $routeParams, $rootScope, $location,
|
|||||||
|
|
||||||
var html,
|
var html,
|
||||||
e,
|
e,
|
||||||
// winHeight,
|
jobs_scope,
|
||||||
// available_height,
|
|
||||||
list = PortalJobTemplateList,
|
list = PortalJobTemplateList,
|
||||||
view= GenerateList,
|
view= GenerateList,
|
||||||
defaultUrl = GetBasePath('job_templates'),
|
defaultUrl = GetBasePath('job_templates'),
|
||||||
@@ -112,12 +111,60 @@ function PortalController($scope, $compile, $routeParams, $rootScope, $location,
|
|||||||
if ($scope.removeWidgetLoaded) {
|
if ($scope.removeWidgetLoaded) {
|
||||||
$scope.removeWidgetLoaded();
|
$scope.removeWidgetLoaded();
|
||||||
}
|
}
|
||||||
$scope.removeWidgetLoaded = $scope.$on('WidgetLoaded', function () {
|
$scope.removeWidgetLoaded = $scope.$on('WidgetLoaded', function (e, label, jobscope) {
|
||||||
|
if(label==="portal_jobs"){
|
||||||
|
jobs_scope = jobscope;
|
||||||
|
}
|
||||||
$('.actions-column:eq(0)').text('Launch');
|
$('.actions-column:eq(0)').text('Launch');
|
||||||
$('.actions-column:eq(1)').text('Details');
|
$('.actions-column:eq(1)').text('Details');
|
||||||
$('.list-well:eq(1)').css('margin-top' , '0px');
|
$('.list-well:eq(1)').css('margin-top' , '0px');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// function processEvent(event) {
|
||||||
|
// switch(event.status) {
|
||||||
|
// case 'running':
|
||||||
|
// jobs_scope.search('running_job');
|
||||||
|
// jobs_scope.search('queued_job');
|
||||||
|
|
||||||
|
// break;
|
||||||
|
// case 'new':
|
||||||
|
// case 'pending':
|
||||||
|
// case 'waiting':
|
||||||
|
// jobs_scope.search('queued_job');
|
||||||
|
|
||||||
|
// break;
|
||||||
|
// case 'successful':
|
||||||
|
// jobs_scope.search('completed_job');
|
||||||
|
// case 'failed':
|
||||||
|
// case 'error':
|
||||||
|
// case 'canceled':
|
||||||
|
// jobs_scope.search('completed_job');
|
||||||
|
// jobs_scope.search('running_job');
|
||||||
|
// jobs_scope.search('queued_job');
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
if ($rootScope.removeJobStatusChange) {
|
||||||
|
$rootScope.removeJobStatusChange();
|
||||||
|
}
|
||||||
|
$rootScope.removeJobStatusChange = $rootScope.$on('JobStatusChange', function() {
|
||||||
|
jobs_scope.refreshJobs();
|
||||||
|
// if(data.status==='pending'){
|
||||||
|
// // $scope.refresh();
|
||||||
|
// $('#portal-jobs').empty();
|
||||||
|
// // $rootScope.flashMessage = null;
|
||||||
|
// PortalJobsWidget({
|
||||||
|
// scope: $scope,
|
||||||
|
// target: 'portal-jobs',
|
||||||
|
// searchSize: 'col-lg-6 col-md-6'
|
||||||
|
// });
|
||||||
|
// }
|
||||||
|
|
||||||
|
|
||||||
|
//x`processEvent(data);
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
$scope.submitJob = function (id) {
|
$scope.submitJob = function (id) {
|
||||||
PlaybookRun({ scope: $scope, id: id });
|
PlaybookRun({ scope: $scope, id: id });
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -760,7 +760,7 @@ function($location, Wait, GetBasePath, LookUpInit, JobTemplateForm, CredentialLi
|
|||||||
}
|
}
|
||||||
scope.removePlaybookLaunchFinished = scope.$on('PlaybookLaunchFinished', function(e, data) {
|
scope.removePlaybookLaunchFinished = scope.$on('PlaybookLaunchFinished', function(e, data) {
|
||||||
//var base = $location.path().replace(/^\//, '').split('/')[0];
|
//var base = $location.path().replace(/^\//, '').split('/')[0];
|
||||||
if(scope.portalMode===false){
|
if(scope.portalMode===false || scope.$parent.portalMode===false){
|
||||||
$location.path('/jobs/' + data.job);
|
$location.path('/jobs/' + data.job);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -19,10 +19,24 @@ angular.module('JobTemplatesHelper', ['Utilities'])
|
|||||||
* Add bits to $scope for handling callback url help
|
* Add bits to $scope for handling callback url help
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
.factory('CallbackHelpInit', ['$location', 'GetBasePath', function($location, GetBasePath) {
|
|
||||||
|
.factory('CallbackHelpInit', ['$location', 'GetBasePath', 'Rest', 'JobTemplateForm', 'GenerateForm', '$routeParams', 'LoadBreadCrumbs', 'ProcessErrors', 'ParseTypeChange',
|
||||||
|
'ParseVariableString', 'Empty', 'LookUpInit', 'InventoryList', 'CredentialList','ProjectList', 'RelatedSearchInit', 'RelatedPaginateInit',
|
||||||
|
function($location, GetBasePath, Rest, JobTemplateForm, GenerateForm, $routeParams, LoadBreadCrumbs, ProcessErrors,ParseTypeChange,
|
||||||
|
ParseVariableString, Empty, LookUpInit, InventoryList, CredentialList, ProjectList, RelatedSearchInit, RelatedPaginateInit) {
|
||||||
return function(params) {
|
return function(params) {
|
||||||
|
|
||||||
var scope = params.scope;
|
var scope = params.scope,
|
||||||
|
defaultUrl = GetBasePath('job_templates'),
|
||||||
|
// generator = GenerateForm,
|
||||||
|
form = JobTemplateForm(),
|
||||||
|
// loadingFinishedCount = 0,
|
||||||
|
// base = $location.path().replace(/^\//, '').split('/')[0],
|
||||||
|
master = {},
|
||||||
|
id = $routeParams.template_id,
|
||||||
|
relatedSets = {};
|
||||||
|
// checkSCMStatus, getPlaybooks, callback,
|
||||||
|
// choicesCount = 0;
|
||||||
|
|
||||||
// The form uses awPopOverWatch directive to 'watch' scope.callback_help for changes. Each time the
|
// The form uses awPopOverWatch directive to 'watch' scope.callback_help for changes. Each time the
|
||||||
// popover is activated, a function checks the value of scope.callback_help before constructing the content.
|
// popover is activated, a function checks the value of scope.callback_help before constructing the content.
|
||||||
@@ -56,8 +70,132 @@ angular.module('JobTemplatesHelper', ['Utilities'])
|
|||||||
scope.example_config_key = '5a8ec154832b780b9bdef1061764ae5a';
|
scope.example_config_key = '5a8ec154832b780b9bdef1061764ae5a';
|
||||||
scope.example_template_id = 'N';
|
scope.example_template_id = 'N';
|
||||||
scope.setCallbackHelp();
|
scope.setCallbackHelp();
|
||||||
|
|
||||||
|
scope.fillJobTemplate = function(){
|
||||||
|
// id = id || $rootScope.copy.id;
|
||||||
|
// Retrieve detail record and prepopulate the form
|
||||||
|
Rest.setUrl(defaultUrl + id);
|
||||||
|
Rest.get()
|
||||||
|
.success(function (data) {
|
||||||
|
var fld, i;
|
||||||
|
LoadBreadCrumbs({ path: '/job_templates/' + id, title: data.name });
|
||||||
|
for (fld in form.fields) {
|
||||||
|
if (fld !== 'variables' && data[fld] !== null && data[fld] !== undefined) {
|
||||||
|
if (form.fields[fld].type === 'select') {
|
||||||
|
if (scope[fld + '_options'] && scope[fld + '_options'].length > 0) {
|
||||||
|
for (i = 0; i < scope[fld + '_options'].length; i++) {
|
||||||
|
if (data[fld] === scope[fld + '_options'][i].value) {
|
||||||
|
scope[fld] = scope[fld + '_options'][i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
scope[fld] = data[fld];
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
scope[fld] = data[fld];
|
||||||
|
if(fld ==='survey_enabled'){
|
||||||
|
// $scope.$emit('EnableSurvey', fld);
|
||||||
|
$('#job_templates_survey_enabled_chbox').attr('checked', scope[fld]);
|
||||||
|
if(Empty(data.summary_fields.survey)) {
|
||||||
|
$('#job_templates_delete_survey_btn').hide();
|
||||||
|
$('#job_templates_edit_survey_btn').hide();
|
||||||
|
$('#job_templates_create_survey_btn').show();
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
$('#job_templates_delete_survey_btn').show();
|
||||||
|
$('#job_templates_edit_survey_btn').show();
|
||||||
|
$('#job_templates_create_survey_btn').hide();
|
||||||
|
scope.survey_exists = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
master[fld] = scope[fld];
|
||||||
|
}
|
||||||
|
if (fld === 'variables') {
|
||||||
|
// Parse extra_vars, converting to YAML.
|
||||||
|
scope.variables = ParseVariableString(data.extra_vars);
|
||||||
|
master.variables = scope.variables;
|
||||||
|
}
|
||||||
|
if (form.fields[fld].type === 'lookup' && data.summary_fields[form.fields[fld].sourceModel]) {
|
||||||
|
scope[form.fields[fld].sourceModel + '_' + form.fields[fld].sourceField] =
|
||||||
|
data.summary_fields[form.fields[fld].sourceModel][form.fields[fld].sourceField];
|
||||||
|
master[form.fields[fld].sourceModel + '_' + form.fields[fld].sourceField] =
|
||||||
|
scope[form.fields[fld].sourceModel + '_' + form.fields[fld].sourceField];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
scope.url = data.url;
|
||||||
|
|
||||||
|
scope.ask_variables_on_launch = (data.ask_variables_on_launch) ? 'true' : 'false';
|
||||||
|
master.ask_variables_on_launch = scope.ask_variables_on_launch;
|
||||||
|
|
||||||
|
relatedSets = form.relatedSets(data.related);
|
||||||
|
|
||||||
|
if (data.host_config_key) {
|
||||||
|
scope.example_config_key = data.host_config_key;
|
||||||
|
}
|
||||||
|
scope.example_template_id = id;
|
||||||
|
scope.setCallbackHelp();
|
||||||
|
|
||||||
|
scope.callback_url = scope.callback_server_path + ((data.related.callback) ? data.related.callback :
|
||||||
|
GetBasePath('job_templates') + id + '/callback/');
|
||||||
|
master.callback_url = scope.callback_url;
|
||||||
|
|
||||||
|
LookUpInit({
|
||||||
|
scope: scope,
|
||||||
|
form: form,
|
||||||
|
current_item: data.inventory,
|
||||||
|
list: InventoryList,
|
||||||
|
field: 'inventory',
|
||||||
|
input_type: "radio"
|
||||||
|
});
|
||||||
|
|
||||||
|
LookUpInit({
|
||||||
|
url: GetBasePath('credentials') + '?kind=ssh',
|
||||||
|
scope: scope,
|
||||||
|
form: form,
|
||||||
|
current_item: data.credential,
|
||||||
|
list: CredentialList,
|
||||||
|
field: 'credential',
|
||||||
|
hdr: 'Select Machine Credential',
|
||||||
|
input_type: "radio"
|
||||||
|
});
|
||||||
|
|
||||||
|
LookUpInit({
|
||||||
|
scope: scope,
|
||||||
|
form: form,
|
||||||
|
current_item: data.project,
|
||||||
|
list: ProjectList,
|
||||||
|
field: 'project',
|
||||||
|
input_type: "radio"
|
||||||
|
});
|
||||||
|
|
||||||
|
RelatedSearchInit({
|
||||||
|
scope: scope,
|
||||||
|
form: form,
|
||||||
|
relatedSets: relatedSets
|
||||||
|
});
|
||||||
|
|
||||||
|
RelatedPaginateInit({
|
||||||
|
scope: scope,
|
||||||
|
relatedSets: relatedSets
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
scope.$emit('jobTemplateLoaded', data.related.cloud_credential);
|
||||||
|
})
|
||||||
|
.error(function (data, status) {
|
||||||
|
ProcessErrors(scope, data, status, form, {
|
||||||
|
hdr: 'Error!',
|
||||||
|
msg: 'Failed to retrieve job template: ' + $routeParams.template_id + '. GET status: ' + status
|
||||||
|
});
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}]);
|
}]);
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -32,6 +32,7 @@ angular.module('VariablesHelper', ['Utilities'])
|
|||||||
json_obj = JSON.parse(variables);
|
json_obj = JSON.parse(variables);
|
||||||
json_obj = SortVariables(json_obj);
|
json_obj = SortVariables(json_obj);
|
||||||
result = jsyaml.safeDump(json_obj);
|
result = jsyaml.safeDump(json_obj);
|
||||||
|
|
||||||
}
|
}
|
||||||
catch (e) {
|
catch (e) {
|
||||||
$log.info('Attempt to parse extra_vars as JSON failed. Attempting to parse as YAML');
|
$log.info('Attempt to parse extra_vars as JSON failed. Attempting to parse as YAML');
|
||||||
@@ -56,6 +57,7 @@ angular.module('VariablesHelper', ['Utilities'])
|
|||||||
try {
|
try {
|
||||||
json_obj = SortVariables(variables);
|
json_obj = SortVariables(variables);
|
||||||
result = jsyaml.safeDump(json_obj);
|
result = jsyaml.safeDump(json_obj);
|
||||||
|
// result = variables;
|
||||||
}
|
}
|
||||||
catch(e3) {
|
catch(e3) {
|
||||||
ProcessErrors(null, variables, e3.message, null, { hdr: 'Error!',
|
ProcessErrors(null, variables, e3.message, null, { hdr: 'Error!',
|
||||||
@@ -78,7 +80,11 @@ angular.module('VariablesHelper', ['Utilities'])
|
|||||||
**/
|
**/
|
||||||
.factory('ToJSON', ['$log', 'ProcessErrors', function($log, ProcessErrors) {
|
.factory('ToJSON', ['$log', 'ProcessErrors', function($log, ProcessErrors) {
|
||||||
return function(parseType, variables, stringify, reviver) {
|
return function(parseType, variables, stringify, reviver) {
|
||||||
var json_data, result;
|
var json_data,
|
||||||
|
result;
|
||||||
|
// bracketVar,
|
||||||
|
// key,
|
||||||
|
// lines, i, newVars = [];
|
||||||
if (parseType === 'json') {
|
if (parseType === 'json') {
|
||||||
try {
|
try {
|
||||||
//parse a JSON string
|
//parse a JSON string
|
||||||
@@ -97,7 +103,30 @@ angular.module('VariablesHelper', ['Utilities'])
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
try {
|
try {
|
||||||
|
// if(variables.indexOf('{{')>-1){
|
||||||
|
// lines = variables.split(/\n/);
|
||||||
|
// for(i=0; i<lines.length; i++){
|
||||||
|
// if(lines[i].indexOf('{{')>-1){
|
||||||
|
// lines[i] = lines[i].replace('{{', '"{{');
|
||||||
|
// // lines[i] = lines[i].replace(lines[i].lastIndexOf('}}'), '}}"');
|
||||||
|
// lines[i] = lines[i]+'"';
|
||||||
|
// // newVars = newVars+ lines[i];
|
||||||
|
// newVars.push(lines[i])
|
||||||
|
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// json_data = jsyaml.load(newVars.toString());
|
||||||
|
|
||||||
|
// bracketVar = variables.substr(variables.indexOf('{{'), variables.indexOf('}}'));
|
||||||
|
// bracketVar = bracketVar.trimRight();
|
||||||
|
// key = variables.substr(0, variables.indexOf(':'));
|
||||||
|
// json_data = jsyaml.load(variables);
|
||||||
|
// json_data[key] = bracketVar;
|
||||||
|
// }
|
||||||
|
// else
|
||||||
json_data = jsyaml.load(variables);
|
json_data = jsyaml.load(variables);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
catch(e) {
|
catch(e) {
|
||||||
json_data = {};
|
json_data = {};
|
||||||
|
|||||||
@@ -64,7 +64,6 @@ angular.module('JobTemplatesListDefinition', [])
|
|||||||
ngHref: '#/job_templates/{{ job_template.id }}/schedules',
|
ngHref: '#/job_templates/{{ job_template.id }}/schedules',
|
||||||
awToolTip: 'Schedule future job template runs',
|
awToolTip: 'Schedule future job template runs',
|
||||||
dataPlacement: 'top',
|
dataPlacement: 'top',
|
||||||
ngHide: 'portalMode===true'
|
|
||||||
},
|
},
|
||||||
edit: {
|
edit: {
|
||||||
label: 'Edit',
|
label: 'Edit',
|
||||||
@@ -72,7 +71,6 @@ angular.module('JobTemplatesListDefinition', [])
|
|||||||
awToolTip: 'Edit template',
|
awToolTip: 'Edit template',
|
||||||
"class": 'btn-default btn-xs',
|
"class": 'btn-default btn-xs',
|
||||||
dataPlacement: 'top',
|
dataPlacement: 'top',
|
||||||
ngHide: 'portalMode===true'
|
|
||||||
},
|
},
|
||||||
"delete": {
|
"delete": {
|
||||||
label: 'Delete',
|
label: 'Delete',
|
||||||
@@ -80,7 +78,14 @@ angular.module('JobTemplatesListDefinition', [])
|
|||||||
"class": 'btn-danger btn-xs',
|
"class": 'btn-danger btn-xs',
|
||||||
awToolTip: 'Delete template',
|
awToolTip: 'Delete template',
|
||||||
dataPlacement: 'top',
|
dataPlacement: 'top',
|
||||||
ngHide: 'portalMode===true'
|
},
|
||||||
|
copy: {
|
||||||
|
label: 'Copy',
|
||||||
|
ngClick: "copyJobTemplate(job_template.id, job_template.name)",
|
||||||
|
"class": 'btn-danger btn-xs',
|
||||||
|
awToolTip: 'Copy template',
|
||||||
|
dataPlacement: 'top',
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -19,6 +19,9 @@ angular.module('PortalJobsWidget', ['RestServices', 'Utilities'])
|
|||||||
choicesCount = 0,
|
choicesCount = 0,
|
||||||
listCount = 0,
|
listCount = 0,
|
||||||
jobs_scope = scope.$new(true),
|
jobs_scope = scope.$new(true),
|
||||||
|
// completed_scope = scope.$new(true),
|
||||||
|
// running_scope = scope.$new(true),
|
||||||
|
// queued_scope = scope.$new(true),
|
||||||
// scheduled_scope = scope.$new(true),
|
// scheduled_scope = scope.$new(true),
|
||||||
max_rows,
|
max_rows,
|
||||||
html, e;
|
html, e;
|
||||||
@@ -56,7 +59,7 @@ angular.module('PortalJobsWidget', ['RestServices', 'Utilities'])
|
|||||||
listCount++;
|
listCount++;
|
||||||
if (listCount === 1) {
|
if (listCount === 1) {
|
||||||
//api_complete = true;
|
//api_complete = true;
|
||||||
scope.$emit('WidgetLoaded', jobs_scope);
|
scope.$emit('WidgetLoaded', "portal_jobs", jobs_scope);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -75,16 +78,36 @@ angular.module('PortalJobsWidget', ['RestServices', 'Utilities'])
|
|||||||
id: 'active-jobs',
|
id: 'active-jobs',
|
||||||
url: GetBasePath('unified_jobs') + '?status__in=running,completed,failed,successful,error,canceled',
|
url: GetBasePath('unified_jobs') + '?status__in=running,completed,failed,successful,error,canceled',
|
||||||
pageSize: max_rows,
|
pageSize: max_rows,
|
||||||
spinner: false
|
spinner: true
|
||||||
});
|
});
|
||||||
// LoadSchedulesScope({
|
|
||||||
|
// completed_scope.showJobType = true;
|
||||||
|
// LoadJobsScope({
|
||||||
// parent_scope: scope,
|
// parent_scope: scope,
|
||||||
// scope: scheduled_scope,
|
// scope: completed_scope,
|
||||||
// list: ScheduledJobsList,
|
// list: PortalJobsList,
|
||||||
// id: 'scheduled-jobs-tab',
|
// id: 'active-jobs',
|
||||||
// url: GetBasePath('schedules') + '?next_run__isnull=false',
|
// url: GetBasePath('unified_jobs') + '?or__status=successful&or__status=failed&or__status=error&or__status=canceled',
|
||||||
// pageSize: max_rows,
|
// // searchParams: search_params,
|
||||||
// spinner: false
|
// pageSize: max_rows
|
||||||
|
// });
|
||||||
|
|
||||||
|
// LoadJobsScope({
|
||||||
|
// parent_scope: scope,
|
||||||
|
// scope: running_scope,
|
||||||
|
// list: PortalJobsList,
|
||||||
|
// id: 'active-jobs',
|
||||||
|
// url: GetBasePath('unified_jobs') + '?status=running',
|
||||||
|
// pageSize: max_rows
|
||||||
|
// });
|
||||||
|
|
||||||
|
// LoadJobsScope({
|
||||||
|
// parent_scope: scope,
|
||||||
|
// scope: queued_scope,
|
||||||
|
// list: PortalJobsList,
|
||||||
|
// id: 'active-jobs',
|
||||||
|
// url: GetBasePath('unified_jobs') + '?or__status=pending&or__status=waiting&or__status=new',
|
||||||
|
// pageSize: max_rows
|
||||||
// });
|
// });
|
||||||
|
|
||||||
$(window).resize(_.debounce(function() {
|
$(window).resize(_.debounce(function() {
|
||||||
|
|||||||
@@ -28,7 +28,8 @@ angular.module('SocketIO', ['AuthService', 'Utilities'])
|
|||||||
endpoint = params.endpoint,
|
endpoint = params.endpoint,
|
||||||
protocol = $location.protocol(),
|
protocol = $location.protocol(),
|
||||||
config, socketPort,
|
config, socketPort,
|
||||||
handshakeData, url;
|
// handshakeData,
|
||||||
|
url;
|
||||||
|
|
||||||
// Since some pages are opened in a new tab, we might get here before AnsibleConfig is available.
|
// Since some pages are opened in a new tab, we might get here before AnsibleConfig is available.
|
||||||
// In that case, load from local storage.
|
// In that case, load from local storage.
|
||||||
@@ -70,19 +71,20 @@ angular.module('SocketIO', ['AuthService', 'Utilities'])
|
|||||||
// We have a valid session token, so attempt socket connection
|
// We have a valid session token, so attempt socket connection
|
||||||
$log.debug('Socket connecting to: ' + url);
|
$log.debug('Socket connecting to: ' + url);
|
||||||
self.scope.socket_url = url;
|
self.scope.socket_url = url;
|
||||||
handshakeData = {
|
// handshakeData = {
|
||||||
headers: {
|
// headers: {
|
||||||
'Authorization': 'Token ' + token,
|
// 'Authorization': 'Token ' + token,
|
||||||
'X-Auth-Token': 'Token ' + token
|
// 'X-Auth-Token': 'Token ' + token
|
||||||
}
|
// }
|
||||||
};
|
// }
|
||||||
|
|
||||||
|
|
||||||
self.socket = io.connect(url, {
|
self.socket = io.connect(url, {
|
||||||
// headers:
|
headers:
|
||||||
// {
|
{
|
||||||
// 'Authorization': 'Token ' + token,
|
'Authorization': 'Token ' + token,
|
||||||
// 'X-Auth-Token': 'Token ' + token
|
'X-Auth-Token': 'Token ' + token
|
||||||
// },
|
},
|
||||||
'connect timeout': 3000,
|
'connect timeout': 3000,
|
||||||
'try multiple transports': false,
|
'try multiple transports': false,
|
||||||
'max reconneciton attemps': 3,
|
'max reconneciton attemps': 3,
|
||||||
@@ -180,19 +182,6 @@ angular.module('SocketIO', ['AuthService', 'Utilities'])
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
disconnect: function(){
|
|
||||||
var self = this;
|
|
||||||
$rootScope.disconnect_timer = setInterval(function(){disconnectSocket();}, 1000);
|
|
||||||
|
|
||||||
function disconnectSocket() {
|
|
||||||
self.socket.socket.disconnect();
|
|
||||||
window.clearInterval($rootScope.disconnect_timer);
|
|
||||||
}
|
|
||||||
// self.scope.$apply(function () {
|
|
||||||
|
|
||||||
// });
|
|
||||||
|
|
||||||
},
|
|
||||||
emit: function (eventName, data, callback) {
|
emit: function (eventName, data, callback) {
|
||||||
var self = this;
|
var self = this;
|
||||||
self.socket.emit(eventName, data, function () {
|
self.socket.emit(eventName, data, function () {
|
||||||
|
|||||||
@@ -159,7 +159,7 @@ angular.module('GeneratorHelpers', [])
|
|||||||
icon = 'fa-list-ul';
|
icon = 'fa-list-ul';
|
||||||
break;
|
break;
|
||||||
case 'copy':
|
case 'copy':
|
||||||
icon = "fa-cut";
|
icon = "fa-copy";
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
icon += (size) ? " " + size : "";
|
icon += (size) ? " " + size : "";
|
||||||
|
|||||||
@@ -3,4 +3,12 @@
|
|||||||
<div ng-include="'/static/partials/schedule_dialog.html'"></div>
|
<div ng-include="'/static/partials/schedule_dialog.html'"></div>
|
||||||
<div ng-include="'/static/partials/logviewer.html'"></div>
|
<div ng-include="'/static/partials/logviewer.html'"></div>
|
||||||
<div id="survey-modal-dialog"></div>
|
<div id="survey-modal-dialog"></div>
|
||||||
|
|
||||||
|
<div id="copy-job-modal" style="display:none">
|
||||||
|
<form name="copy_form" id="copy_form">
|
||||||
|
What would you like to name the copy of job template <b><span id=job_name></span></b>?<br>
|
||||||
|
<input id="new_copy_name" name="new_copy_name" ng-model ="new_copy_name" ng-required="true" class="form-control ng-pristine ng-invalid-required ng-invalid" style="margin-top:10px;">
|
||||||
|
<div class="error survey_error ng-hide" ng-show="copy_form.new_copy_name.$dirty && copy_form.new_copy_name.$error.required">A value is required!</div></input>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
Reference in New Issue
Block a user