Files
awx/awx/ui/static/js/lists/Jobs.js
2014-03-25 11:07:24 -04:00

127 lines
4.2 KiB
JavaScript

/*********************************************
* Copyright (c) 2014 AnsibleWorks, Inc.
*
* Jobs.js
* List view object for Team data model.
*
*
*/
'use strict';
angular.module('JobsListDefinition', [])
.value( 'JobsList', {
name: 'jobs',
iterator: 'job',
editTitle: 'Jobs',
showTitle: false,
index: false,
hover: true,
well: false,
"class": 'jobs-table',
fields: {
id: {
label: 'Job ID',
key: true,
desc: true,
searchType: 'int'
},
inventory: {
label: 'Inventory ID',
searchType: 'int',
searchOnly: true
},
created: {
label: 'Create On',
link: false,
searchable: false,
filter: "date:'MM/dd HH:mm:ss'"
},
name: {
label: 'Name',
link: false
},
failed: {
label: 'Job failed?',
searchSingleValue: true,
searchType: 'boolean',
searchValue: 'true',
searchOnly: true,
nosort: true
},
status: {
label: 'Status',
"class": 'job-{{ job.status }}',
searchType: 'select',
linkTo: "{{ job.statusLinkTo }}",
searchOptions: [
{ name: "new", value: "new" },
{ name: "waiting", value: "waiting" },
{ name: "pending", value: "pending" },
{ name: "running", value: "running" },
{ name: "successful", value: "successful" },
{ name: "error", value: "error" },
{ name: "failed", value: "failed" },
{ name: "canceled", value: "canceled" }
],
badgeIcon: 'fa icon-job-{{ job.status }}',
badgePlacement: 'left',
badgeToolTip: "{{ job.statusBadgeToolTip }}",
badgeTipPlacement: 'top',
badgeNgHref: "{{ job.statusLinkTo }}",
awToolTip: "{{ job.statusBadgeToolTip }}",
dataPlacement: 'top'
}
},
actions: {
refresh: {
mode: 'all',
awToolTip: "Refresh the page",
ngClick: "refresh()"
}
},
fieldActions: {
submit: {
label: 'Relaunch',
icon: 'icon-rocket',
mode: 'all',
ngClick: 'submitJob(job.id, job.summary_fields.job_template.name)',
awToolTip: 'Start the job',
dataPlacement: 'top'
},
cancel: {
label: 'Stop',
mode: 'all',
ngClick: 'deleteJob(job.id)',
awToolTip: 'Cancel a running or pending job',
ngShow: "job.status == 'pending' || job.status == 'running' || job.status == 'waiting'",
dataPlacement: 'top'
},
"delete": {
label: 'Delete',
mode: 'all',
ngClick: 'deleteJob(job.id)',
awToolTip: 'Delete the job',
ngShow: "job.status != 'pending' && job.status != 'running' && job.status != 'waiting'",
dataPlacement: 'top'
},
dropdown: {
type: 'DropDown',
label: 'View',
icon: 'fa-search-plus',
'class': 'btn-default btn-xs',
options: [
{ ngClick: 'editJob(job.id, job.summary_fields.job_template.name)', label: 'Status' },
{ ngClick: 'viewEvents(job.id, job.summary_fields.job_template.name)', label: 'Events',
ngHide: "job.status == 'new'" },
{ ngClick: 'viewSummary(job.id, job.summary_fields.job_template.name)', label: 'Host Summary',
ngHide: "job.status == 'new'" }
]
}
}
});