doc.Distribution(job.distribution_name)
doc.ProjectName(job.project_name)
doc.JobType(job.job_type)
+ doc.JobAttribute(job.job_attribute)
+ doc.ParentJobId(job.parent_job_id)
doc.Os(job.supported_os_name)
doc.Status(job.status)
doc.UserName(job.user_name)
doc.StartTime(job.start_time)
doc.EndTime(job.end_time)
}
+
+ if job.job_attribute == "MULTI"
+ child_jobs = get_child_job_info(job.job_id)
+ child_jobs.each {|job|
+ doc.Job {
+ doc.Id(job.job_id)
+ doc.Distribution(job.distribution_name)
+ doc.ProjectName(job.project_name)
+ doc.JobType(job.job_type)
+ doc.JobAttribute("CHILD")
+ doc.ParentJobId(job.parent_job_id)
+ doc.Os(job.supported_os_name)
+ doc.Status(job.status)
+ doc.UserName(job.user_name)
+ doc.StartTime(job.start_time)
+ doc.EndTime(job.end_time)
+ }
+ }
+ end
end
end
}
doc.ProjectName(job.project_name)
doc.JobType(job.job_type)
doc.JobAttribute(job_list.job_attribute)
+ doc.ParentJobId(job.parent_job_id)
doc.Os(job.supported_os_name)
doc.Status(job.status)
doc.UserName(job.user_name)
doc.ProjectName(job.project_name)
doc.JobType(job.job_type)
doc.JobAttribute(job_list.job_attribute)
+ doc.ParentJobId(job.parent_job_id)
doc.Os(job.supported_os_name)
doc.Status(job.status)
doc.UserName(job.user_name)
doc.ProjectName(job.project_name)
doc.JobType(job.job_type)
doc.JobAttribute(job_list.job_attribute)
+ doc.ParentJobId(job.parent_job_id)
doc.Os(job.supported_os_name)
doc.Status(job.status)
doc.UserName(job.user_name)
jobs = Job.find_by_sql("SELECT jobs.id AS job_id
, jobs.jtype AS job_type
, jobs.status AS status
+ , jobs.parent_job_id AS parent_job_id
, DATE_FORMAT(jobs.start_time, '%Y-%m-%d %H:%i:%s') AS start_time
, DATE_FORMAT(jobs.end_time, '%Y-%m-%d %H:%i:%s') AS end_time
+ , CASE WHEN jobs.jtype like \"MULTI%\" THEN \"MULTI\"
+ ELSE \"SINGLE\" END \"job_attribute\"
, projects.name AS project_name
, projects.ptype AS project_type
, projects.password AS project_password
job = Job.find_by_sql("SELECT jobs.id AS job_id
, jobs.jtype AS job_type
, jobs.status AS status
+ , jobs.parent_job_id AS parent_job_id
, DATE_FORMAT(jobs.start_time, '%Y-%m-%d %H:%i:%s') AS start_time
, DATE_FORMAT(jobs.end_time, '%Y-%m-%d %H:%i:%s') AS end_time
, projects.name AS project_name
get "jobs/list/all/:distribution/:status/:lastID" => "jobs#listAll", :constraints => { :distribution => /[0-9A-Za-z\-\.\_]+/ }
get "jobs/list/user/:user/:distribution/:status/:lastID" => "jobs#listSearchUser", :constraints => { :distribution => /[0-9A-Za-z\-\.\_]+/ }
get "jobs/list/group/:group/:distribution/:status/:lastID" => "jobs#listSearchGroup", :constraints => { :distribution => /[0-9A-Za-z\-\.\_]+/ }
- get "jobs/list/project/:project/:distribution/:status/:lastID" => "jobs#listSearchProject" , :constraints => { :project => /[0-9A-Za-z\-\.]+/ }
+ get "jobs/list/project/:project/:distribution/:status/:lastID" => "jobs#listSearchProject" , :constraints => { :distribution => /[0-9A-Za-z\-\.\_]+/, :project => /[0-9A-Za-z\-\.]+/ }
get "jobs/list/date/:date/:distribution/:status/:lastID" => "jobs#listSearchDate", :constraints => { :distribution => /[0-9A-Za-z\-\.\_]+/ }
match "jobs/update" => "jobs#updateList", :format => "json"
post "projects/binaryFileUpload"
# projects
- match "projects/queryRunningProjectsInfoInDistribution/:distribution" => "projects#queryRunningProjectsInfoInDistribution"
+ match "projects/queryRunningProjectsInfoInDistribution/:distribution" => "projects#queryRunningProjectsInfoInDistribution", :constraints => { :distribution => /[0-9A-Za-z\-\.\_]+/ }
match "projects/queryProjectsInfoInDistribution/:distribution" => "projects#queryProjectsInfoInDistribution", :constraints => { :distribution => /[0-9A-Za-z\-\.\_]+/ }
match "projects/queryProjectsInDistribution/:distribution" => "projects#queryProjectsInDistribution" , :constraints => { :distribution => /[0-9A-Za-z\-\.\_]+/ }
post "projects/buildProject"
var update_ajax = updateList(item, function(xml) {
var firstLi= $("#jobList li").first();
+ // Add new job list
$(xml).find("JobList").find("Job").each(function(){
var id = $(this).find("Id").text();
var li = generateHtmlJobList($(this));
console.log("ADD List :"+id);
});
+ // Update working job list
$(xml).find("WorkingJobList").find("Job").each(function(){
var job_id = $(this).find("Id").text();
+ var parent_job_id = $(this).find("ParentJobId").text();
var job_status = $(this).find("Status").text();
var start_time = $(this).find("StartTime").text();
var end_time = $(this).find("EndTime").text();
font_color = "black";
break;
}
- var html_status = '<strong><font color="'+font_color+'">'+job_status+'</strong>';
- var html_time = 'TIME: <strong>' +start_time+ ' ~ '+end_time+ '</strong>';
- $("#jobs-li-status-"+job_id).html(html_status);
- $("#jobs-li-time-"+job_id).html(html_time);
- console.log("UPDATE List :"+job_id);
+
+ // in case, exist job list element or not exist
+ if($("#jobs-li-"+job_id).length != 0) {
+ var html_status = '<strong><font color="'+font_color+'">'+job_status+'</strong>';
+ var html_time = 'TIME: <strong>' +start_time+ ' ~ '+end_time+ '</strong>';
+ $("#jobs-li-status-"+job_id).html(html_status);
+ $("#jobs-li-time-"+job_id).html(html_time);
+ console.log("UPDATE List :"+job_id);
+ }
+ else {
+ var next_parent_job_li = $("#jobs-li-"+parent_job_id).nextAll(".jobs-li-header").first();
+ console.log(parent_job_id);
+ console.log($("#jobs-li-"+parent_job_id));
+ console.log(next_parent_job_li);
+ console.log(next_parent_job_li.text());
+
+ var li = generateHtmlJobList($(this));
+
+ $(li).insertBefore(next_parent_job_li);
+ $("#jobList").listview('refresh');
+ $("#jobs-li-link-"+job_id).popupWindow({
+ height:900,
+ width:800,
+ top:30,
+ left:50
+ });
+ console.log("ADD child list :"+job_id);
+ }
});
});
if(jobAttribute == "SINGLE")
{
- li = '<li id="jobs-li-'+id+'" title="'+id+'" data-role="list-divider">'
- + id+ ' ' +projectName+ '</li>'
- + '<li title="'+id+'"><a href=log.html?jobid='+id+' id="jobs-li-link-'+id+'" class="logWindow" data-ajax="false">'
+ li = '<li class="jobs-li-header" data-role="list-divider" title="'+id+'">'
+ + '<span>'+id+ ' ' +projectName+ '</span><span style="float: right">'+distribution+'</span></li>'
+ + '<li id="jobs-li-'+id+'" class="jobs-list-data" title="'+id+'">'
+ + '<a href=log.html?jobid='+id+' id="jobs-li-link-'+id+'" class="logWindow" data-ajax="false">'
+ '<h3>' +projectName+ '</h3>'
+ '<p>ID : <strong>' +id+ '</strong></p>'
+ '<p>TYPE : <strong>' +jobType+ '</strong></p>'
+ '<p>OS : <strong>' + os + '</strong></p>'
+ '<p>USER : <strong>' +userName+ '</strong></p>'
+ '<p id="jobs-li-time-'+id+'">TIME: <strong>' +startTime+ ' ~ '+endTime+ '</strong></p>';
+
+ li = li + '<p id="jobs-li-status-'+id+'" class="ui-li-aside jobs-li-status"><strong><font color="'+font_color+'">'+jobStatus+'</strong></p>';
+ li = li + '<div hidden="hidden" class="jobs-li-hidden ui-screen-hidden">'
+ + '<p class="jobs-li-hidden-id">'+id+'</p>'
+ + '<p class="jobs-li-hidden-attr">'+jobAttribute+'</p>'
+ + '</div>';
if(queryDistribution == "ALL") {
li = li + '<p>DISTRIBUTION: <strong>' +distribution+ '</strong></p>';
}
-
- li = li + '<p id="jobs-li-status-'+id+'" class="ui-li-aside jobs-list-status" title="'+id+'"><strong><font color="'+font_color+'">'+jobStatus+'</strong></p>';
li = li + '</a></li>';
}
else if(jobAttribute == "MULTI")
{
- li = '<li title="'+id+'" data-role="list-divider">' +id+ ' ' +jobType+ '</li>'
- + '<li id="jobs-li-'+id+'" title="'+id+'"><a href=log.html?jobid='+id+' id="jobs-li-link-'+id+'" class="logWindow" data-ajax="false">'
+ li = '<li class="jobs-li-header" data-role="list-divider" title="'+id+'">'
+ + '<span>'+id+ ' ' +projectName+ '</span><span style="float: right">'+distribution+'</span></li>'
+ + '<li id="jobs-li-'+id+'" class="jobs-list-data" title="'+id+'">'
+ + '<a href=log.html?jobid='+id+' id="jobs-li-link-'+id+'" class="logWindow" data-ajax="false">'
+ '<p>USER : <strong>' +userName+ '</strong></p>'
+ '<p id="jobs-li-time-'+id+'">TIME: <strong>' +startTime+ ' ~ '+endTime+ '</strong></p>';
+ + '<p id="jobs-li-attr-'+id+'" hidden="hidden">'+jobAttribute+'</p>';
+
+ li = li + '<p id="jobs-li-status-'+id+'" class="ui-li-aside jobs-li-status" title="'+id+'"><strong><font color="'+font_color+'">'+jobStatus+'</strong></p>';
+ li = li + '<div hidden="hidden" class="jobs-li-hidden ui-screen-hidden">'
+ + '<p class="jobs-li-hidden-id">'+id+'</p>'
+ + '<p class="jobs-li-hidden-attr">'+jobAttribute+'</p>'
+ + '</div>';
if(queryDistribution == "ALL") {
li = li + '<p>DISTRIBUTION: <strong>' +distribution+ '</strong></p>';
}
-
- li = li + '<p id="jobs-li-status-'+id+'" class="ui-li-aside jobs-list-status" title="'+id+'"><strong><font color="'+font_color+'">'+jobStatus+'</strong></p>';
li = li + '</a></li>';
}
else if(jobAttribute == "CHILD")
{
- li = '<li id="jobs-li-'+id+'" title="'+id+'"><a href=log.html?jobid='+id+' id="jobs-li-link-'+id+'" class="logWindow" data-ajax="false">'
+ li = '<li id="jobs-li-'+id+'" class="jobs-list-data" title="'+id+'">'
+ + '<a href=log.html?jobid='+id+' id="jobs-li-link-'+id+'" class="logWindow" data-ajax="false">'
+ '<h3>' +projectName+ '</h3>'
+ '<p>ID : <strong>' +id+ '</strong></p>'
+ '<p>TYPE : <strong>' +jobType+ '</strong></p>'
+ '<p>OS : <strong>' +os+ '</strong></p>'
+ '<p id="jobs-li-time-'+id+'">TIME: <strong>' +startTime+ ' ~ '+endTime+ '</strong></p>';
+ + '<p id="jobs-li-attr-'+id+'" hidden="hidden">'+jobAttribute+'</p>';
li = li + '<p id="jobs-li-status-'+id+'" class="ui-li-aside jobs-list-status" title="'+id+'"><strong><font color="'+font_color+'">'+jobStatus+'</strong></p>';
+ li = li + '<div hidden="hidden" class="jobs-li-hidden ui-screen-hidden">'
+ + '<p class="jobs-li-hidden-id">'+id+'</p>'
+ + '<p class="jobs-li-hidden-attr">'+jobAttribute+'</p>'
+ + '</div>';
li = li + '</a></li>';
}
function searchWorkingList() {
working_job_array = new Array();
- $("#jobList .jobs-list-status").each(function(index) {
- var job_status = $(this).text();
- var job_id = $(this).attr("title");
+ $("#jobList .jobs-list-data").each(function(index) {
+ var job_attr = $(this).find(".jobs-li-hidden-attr").text();
+ var job_id = $(this).find(".jobs-li-hidden-id").text();
+ var job_status= $(this).find(".jobs-li-status").text();
switch(job_status)
{
case "INITIALIZING" :
case "WORKING" :
case "REMOTE_WORKING" :
case "WAITING" :
- working_job_array.push(job_id);
+ if(job_attr != "CHILD") {
+ working_job_array.push(job_id);
+ }
break;
default:
break;