Implement job lists

This commit is contained in:
Eike Foken
2011-09-20 22:35:24 +02:00
parent aebde4aa79
commit 4b2ca67e68
5 changed files with 236 additions and 13 deletions

View File

@@ -29,20 +29,50 @@
class Jobs extends MY_Controller {
/**
* Constructor.
*/
public function __construct() {
parent::__construct();
* Constructor.
*/
public function __construct() {
parent::__construct();
$this->load->model('job');
$this->load->model('experiment');
$this->load->model('program');
}
}
/**
* Starts a job for the specified experiment.
*
* @param string $experimentId
*/
/**
* Shows a list all jobs.
*/
public function index() {
$jobs = $this->job->getRecent();
$data['running_jobs'] = array();
foreach ($jobs as $job) {
if ($job['status'] == 'running' && $job['started_by'] == $this->session->userdata('user_id')) {
$data['running_jobs'][] = $job;
}
}
$data['finished_jobs'] = array();
foreach ($jobs as $job) {
if ($job['status'] == 'complete' && $job['started_by'] == $this->session->userdata('user_id')) {
$data['finished_jobs'][] = $job;
}
}
$data['pending_jobs'] = array();
foreach ($jobs as $job) {
if ($job['status'] == 'pending' && $job['started_by'] == $this->session->userdata('user_id')) {
$data['pending_jobs'][] = $job;
}
}
$this->load->view('jobs/list', $data);
}
/**
* Allows users to start a job for the specified experiment.
*
* @param string $experimentId
*/
public function start($experimentId = '') {
$experiment = $this->experiment->getByID($experimentId);
if (isset($experiment['id'])) {
@@ -57,6 +87,29 @@ class Jobs extends MY_Controller {
}
}
/**
* Allows users to cancel the specified job.
*
* @param string $jobId
*/
public function cancel($jobId) {
$this->job->delete($jobId);
redirect('jobs');
}
/**
* Allows users to mark all finished jobs as seen.
*/
public function mark_all_seen() {
$jobs = $this->job->getRecent();
foreach ($jobs as $job) {
if ($job['status'] == 'complete' && $job['started_by'] == $this->session->userdata('user_id')) {
$this->job->markSeen($job['id']);
}
}
redirect('jobs', 303);
}
/**
* Get jobs belonging to projects owned by the user.
*/
@@ -114,3 +167,6 @@ class Jobs extends MY_Controller {
));
}
}
/* End of file jobs.php */
/* Location: ./application/controllers/jobs.php */