end
def listAll
- listQuery("QUERY", params[:distribution], params[:status], params[:lastID], "", "")
- end
-
- def listSearchId
- listQuery("QUERY", "%", "%", "%", "%", "%")
+ #generate to XML
+ doc = Builder::XmlMarkup.new( :target => out_string = "", :indent => 2 )
+ doc.Response {
+ generate_xml_header(doc)
+ doc.Data {
+ listQuery(doc, "QUERY", params[:distribution], params[:status], params[:lastID], "", "")
+ }
+ }
+ render :text => out_string, :content_type => "text/xml"
end
def listSearchUser
- listQuery("QUERY", params[:distribution], params[:status], params[:lastID], params[:user], "")
+ #generate to XML
+ doc = Builder::XmlMarkup.new( :target => out_string = "", :indent => 2 )
+ doc.Response {
+ generate_xml_header(doc)
+ doc.Data {
+ listQuery(doc, "QUERY", params[:distribution], params[:status], params[:lastID], params[:user], "")
+ }
+ }
+ render :text => out_string, :content_type => "text/xml"
end
def listSearchGroup
- listQueryGroup("QUERY", params[:distribution], params[:status], params[:lastID], params[:group])
+ #generate to XML
+ doc = Builder::XmlMarkup.new( :target => out_string = "", :indent => 2 )
+ doc.Response {
+ generate_xml_header(doc)
+ doc.Data {
+ listQueryGroup(doc, "QUERY", params[:distribution], params[:status], params[:lastID], params[:group])
+ }
+ }
+ render :text => out_string, :content_type => "text/xml"
end
def listSearchProject
- listQueryProject("QUERY", params[:distribution], params[:status], params[:lastID], params[:project])
+ #generate to XML
+ doc = Builder::XmlMarkup.new( :target => out_string = "", :indent => 2 )
+ doc.Response {
+ generate_xml_header(doc)
+ doc.Data {
+ listQueryProject(doc, "QUERY", params[:distribution], params[:status], params[:lastID], params[:project])
+ }
+ }
+ render :text => out_string, :content_type => "text/xml"
end
def listSearchDate
- listQuery("QUERY", params[:distribution], params[:status], params[:lastID], "", params[:date])
- end
-
- def updateListAll
- listQuery("UPDATE", params[:distribution], params[:status], params[:lastID], "", "")
- end
-
- def updateListSearchUser
- listQuery("UPDATE", params[:distribution], params[:status], params[:lastID], params[:user], "")
- end
-
- def updateListSearchGroup
- listQueryGroup("UPDATE", params[:distribution], params[:status], params[:lastID], params[:group])
- end
-
- def updateListSearchProject
- listQueryProject("UPDATE", params[:distribution], params[:status], params[:lastID], params[:project])
- end
-
- def updateListSearchDate
- listQuery("UPDATE", params[:distribution], params[:status], params[:lastID], "", params[:date])
+ #generate to XML
+ doc = Builder::XmlMarkup.new( :target => out_string = "", :indent => 2 )
+ doc.Response {
+ generate_xml_header(doc)
+ doc.Data {
+ listQuery(doc, "QUERY", params[:distribution], params[:status], params[:lastID], "", params[:date])
+ }
+ }
+ render :text => out_string, :content_type => "text/xml"
end
- def jobInfo
- job_id = params[:id]
-
- job = get_job_info(job_id)
+ def updateList
+ condition = params[:Condition]
+ param = params[:Param]
+ distribution = params[:Distribution]
+ status = params[:Status]
+ latest_id = params[:LatestId]
+ working_job_list = params[:WorkingJobId]
#generate to XML
doc = Builder::XmlMarkup.new( :target => out_string = "", :indent => 2 )
doc.Response {
generate_xml_header(doc)
doc.Data {
- doc.Id(job.job_id)
- doc.Distribution(job.distribution_name)
- doc.ProjectName(job.project_name)
- doc.JobType(job.job_type)
- 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)
+ #new job list
+ case condition
+ when "all"
+ listQuery(doc, "UPDATE", distribution, status, latest_id, "", "")
+ when "user"
+ listQuery(doc, "UPDATE", distribution, status, latest_id, param, "")
+ when "group"
+ listQueryGroup(doc, "UPDATE", distribution, status, latest_id, param)
+ when "project"
+ listQueryProject(doc, "UPDATE", distribution, status, latest_id, param)
+ when "date"
+ listQuery(doc, "UPDATE", distribution, status, latest_id, "", param)
+ else
+ end
+
+ # working job list for update
+ doc.WorkingJobList {
+ if not working_job_list.nil?
+ working_job_list.each do |job_id|
+ job = get_job_info(job_id)
+ doc.Job {
+ doc.Id(job.job_id)
+ doc.Distribution(job.distribution_name)
+ doc.ProjectName(job.project_name)
+ doc.JobType(job.job_type)
+ 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
+ }
}
}
render :text => out_string, :content_type => "text/xml"
- return
- end
+ end
- def listQuery(query_type, distribution, status, last_id, user, date)
+ def listQuery(doc, query_type, distribution, status, last_id, user, date)
condition = ""
if(distribution == "ALL")
LIMIT #{QUERY_CNT}")
#generate to XML
- doc = Builder::XmlMarkup.new( :target => out_string = "", :indent => 2 )
- doc.Response {
- generate_xml_header(doc)
- doc.Data {
- doc.JobList {
- jobs.each {|job_list|
- job = get_job_info(job_list.id)
+ doc.JobList {
+ jobs.each {|job_list|
+ job = get_job_info(job_list.id)
+
+ doc.Job {
+ doc.Id(job.job_id)
+ doc.Distribution(job.distribution_name)
+ doc.ProjectName(job.project_name)
+ doc.JobType(job.job_type)
+ doc.JobAttribute(job_list.job_attribute)
+ 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_list.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(job_list.job_attribute)
+ doc.JobAttribute("CHILD")
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_list.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.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
}
}
-
- render :text => out_string, :content_type => "text/xml"
- return
end
- def listQueryGroup(query_type, distribution, status, last_id, group)
+ def listQueryGroup(doc, query_type, distribution, status, last_id, group)
if(distribution == "ALL")
distribution = "%"
LIMIT #{QUERY_CNT}")
#generate to XML
- doc = Builder::XmlMarkup.new( :target => out_string = "", :indent => 2 )
- doc.Response {
- generate_xml_header(doc)
- doc.Data {
- doc.JobList {
- jobs.each {|job_list|
- job = get_job_info(job_list.id)
-
- doc.Job {
- doc.Id(job.job_id)
- doc.Distribution(job.distribution_name)
- doc.ProjectName(job.project_name)
- doc.JobType(job.job_type)
- doc.JobAttribute(job_list.job_attribute)
- 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)
- }
+ doc.Data {
+ doc.JobList {
+ jobs.each {|job_list|
+ job = get_job_info(job_list.id)
+
+ doc.Job {
+ doc.Id(job.job_id)
+ doc.Distribution(job.distribution_name)
+ doc.ProjectName(job.project_name)
+ doc.JobType(job.job_type)
+ doc.JobAttribute(job_list.job_attribute)
+ 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_list.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.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_list.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.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
}
}
}
-
- render :text => out_string, :content_type => "text/xml"
- return
end
- def listQueryProject(query_type, distribution, status, last_id, project)
+ def listQueryProject(doc, query_type, distribution, status, last_id, project)
if(distribution == "ALL")
distribution = "%"
end
LIMIT #{QUERY_CNT}")
#generate to XML
- doc = Builder::XmlMarkup.new( :target => out_string = "", :indent => 2 )
- doc.Response {
- generate_xml_header(doc)
- doc.Data {
- doc.JobList {
- jobs.each {|job_list|
- job = get_job_info(job_list.id)
-
- doc.Job {
- doc.Id(job.job_id)
- doc.Distribution(job.distribution_name)
- doc.ProjectName(job.project_name)
- doc.JobType(job.job_type)
- doc.JobAttribute(job_list.job_attribute)
- 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)
- }
+ doc.Data {
+ doc.JobList {
+ jobs.each {|job_list|
+ job = get_job_info(job_list.id)
+
+ doc.Job {
+ doc.Id(job.job_id)
+ doc.Distribution(job.distribution_name)
+ doc.ProjectName(job.project_name)
+ doc.JobType(job.job_type)
+ doc.JobAttribute(job_list.job_attribute)
+ 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)
}
}
}
}
-
- render :text => out_string, :content_type => "text/xml"
- return
end
def get_job_info(job_id)
return job
end
- def log
- @id = params[:id]
- puts @id
- end
-
def log_more
@cursor = nil
@file = nil
get "jobs/list/project/:project/:distribution/:status/:lastID" => "jobs#listSearchProject" , :constraints => { :project => /[0-9A-Za-z\-\.]+/ }
get "jobs/list/date/:date/:distribution/:status/:lastID" => "jobs#listSearchDate", :constraints => { :distribution => /[0-9A-Za-z\-\.\_]+/ }
- get "jobs/updateList/all/:distribution/:status/:lastID" => "jobs#updateListAll", :constraints => { :distribution => /[0-9A-Za-z\-\.\_]+/ }
- get "jobs/updateList/user/:user/:distribution/:status/:lastID" => "jobs#updateListSearchUser", :constraints => { :distribution => /[0-9A-Za-z\-\.\_]+/ }
- get "jobs/updateList/group/:group/:distribution/:status/:lastID" => "jobs#updateListSearchGroup", :constraints => { :distribution => /[0-9A-Za-z\-\.\_]+/ }
- get "jobs/updateList/project/:project/:distribution/:status/:lastID" => "jobs#updateListSearchProject" , :constraints => { :project => /[0-9A-Za-z\-\.]+/ }
- get "jobs/updateList/date/:date/:distribution/:status/:lastID" => "jobs#updateListSearchDate", :constraints => { :distribution => /[0-9A-Za-z\-\.\_]+/ }
-
- match "jobs/jobInfo/:id" => "jobs#jobInfo"
+ match "jobs/update" => "jobs#updateList", :format => "json"
match "jobs/log/:id" => "jobs#log"
match "jobs/log/:id/:line" => "jobs#log_more"
match "jobs/cancel/:id" => "jobs#cancelJob"
function queryJobsList(url, successFunction) {
return getInfoFromServer(url, successFunction);
}
-function updateJobsList(url, successFunction) {
- return getInfoFromServerNoPreProcess(url, successFunction);
-}
-function updateJobsListStatus(url, successFunction) {
- return getInfoFromServerNoPreProcess(url, successFunction);
+function updateList(data, successFunction) {
+ var url = "jobs/update";
+ var param = $.param(data);
+ return getInfoFromServerData(url, param, successFunction);
}
function queryJobsLog(job_id, next_line, successFunction) {
var url = "jobs/log/"+ job_id + "/" + next_line;
});
}
+function getInfoFromServerData(url, data, successFunction) {
+ return $.ajax({
+ url: baseUrl+url,
+ type: 'GET',
+ dataType: 'xml',
+ text: 'JSONP',
+ data: data,
+ timeout: 10000,
+ success: function(xml) {
+ setSessionInfo(xml);
+ successFunction(xml);
+ },
+ error: function(jqXHR) {
+ errorProcess(jqXHR);
+ }
+ });
+}
+
function postForServer(url, changeInfoList, successFunction) {
$.ajax({
url: baseUrl+url,
var request_list = new Array();
var request_idx = 0;
-function classAjax() {
- var polling = false;
- var ajaxObj = undefined;
-}
-
-function addRequestList(ajaxObj) {
- var class_ajax = new classAjax();
- class_ajax.polling = true;
- class_ajax.ajaxObj = ajaxObj;
-
- return request_list.push(class_ajax) - 1;
-}
-
-function clearRequestList() {
- while(request_list.length > 0) {
- var last_request = request_list[request_list.length - 1];
- if(last_request.polling == true && last_request.ajaxObj != undefined) {
- last_request.ajaxObj.abort();
- }
- request_list.pop();
- }
- console.log("Clear all update.");
-}
-
-function isPolling(idx) {
- if(request_list[idx] != undefined) {
- return request_list[idx].polling;
- }
- else {
- return false;
- }
-}
-
$(function() {
$('#jobSearchSelect input[type="radio"]').checkboxradio().click(function() {
jobsSearchSelected();
}
function queryJobListAll(distribution) {
- queryJobListByButton("all", distribution, "LATEST");
+ queryJobListByButton("all", "", distribution, "LATEST");
}
function queryJobListJobId(distribution, jobId) {
- queryJobListByButton("all", distribution, eval(parseInt(jobId) + 1));
+ queryJobListByButton("all", "", distribution, eval(parseInt(jobId) + 1));
}
function queryJobListUserName(distribution, name) {
var encodingName = encodeURIComponent(name);
- queryJobListByButton("user/"+encodingName, distribution, "LATEST");
+ queryJobListByButton("user", encodingName, distribution, "LATEST");
}
function queryJobListUserGroup(distribution, group) {
- queryJobListByButton("group/"+group, distribution, "LATEST");
+ queryJobListByButton("group", group, distribution, "LATEST");
}
function queryJobListProject(distribution, project) {
- queryJobListByButton("project/"+project, distribution, "LATEST");
+ queryJobListByButton("project", project, distribution, "LATEST");
}
function queryJobListDate(distribution, date) {
- queryJobListByButton("date/"+date, distribution, "LATEST");
+ queryJobListByButton("date", date, distribution, "LATEST");
}
-function queryJobListByButton(condition, distribution, jobId) {
+function queryJobListByButton(condition, param, distribution, jobId) {
clearJobList();
clearRequestList();
var selectedStatus= $('#jobStatusSelect').find("input[type='radio']:checked").val();
- var request = queryJobList("jobs/list", condition, distribution, selectedStatus, jobId);
+ var request = queryJobList("jobs/list", condition, param, distribution, selectedStatus, jobId);
if(request != undefined) {
request.done(function() {
console.log("Start update");
- updateJobList(condition, distribution, selectedStatus);
+ jobUpdateList(condition, param, distribution, selectedStatus);
});
}
}
}
}
-function queryJobList(requestUrl, condition, queryDistribution, selectedStatus, jobId) {
- var url = requestUrl+"/"+condition+"/"+queryDistribution+"/"+selectedStatus+"/"+jobId;
- console.log(url);
+function queryJobList(requestUrl, condition, param, queryDistribution, selectedStatus, jobId) {
+ var url = "";
+ if(condition == "all") {
+ url = requestUrl+"/"+condition+"/"+queryDistribution+"/"+selectedStatus+"/"+jobId;
+ }
+ else {
+ url = requestUrl+"/"+condition+"/"+param+"/"+queryDistribution+"/"+selectedStatus+"/"+jobId;
+ }
+ console.log("url :"+url);
return queryJobsList(url, function(xml) {
var lastJobId = 0;
$(xml).find("JobList").find("Job").each(function(){
$("#jobList").append(li).listview('refresh');
});
+ console.log("last job id :"+lastJobId);
if(lastJobId > 0)
{
- var moreJobListUrl = 'queryJobList("'+requestUrl+'", "'+condition+'","'+queryDistribution+'", "'+selectedStatus+'", "'+lastJobId+'")';
+ var moreJobListUrl = 'queryJobList("'+requestUrl+'", "'+condition+'", "'+param+'", "'+queryDistribution+'", "'+selectedStatus+'", "'+lastJobId+'")';
+ console.log(moreJobListUrl);
$('#moreJobList').attr("onClick", moreJobListUrl);
$('#moreJobList').removeClass('ui-disabled');
}
}, errorProcess);
}
-function updateJobList(condition, distribution, selectedStatus) {
+function jobUpdateList(condition, param, distribution, selectedStatus) {
var latest_job_id= $("#jobList li").first().attr("title");
if(latest_job_id == undefined) {
latest_job_id = 0;
}
- update_ajax = queryUpdateJobList("jobs/updateList", condition, distribution, selectedStatus, latest_job_id);
+ var working_job_list = searchWorkingList();
+ item = {"Condition":condition, "Param":param, "Distribution":distribution, "Status":selectedStatus, "LatestId":latest_job_id, "WorkingJobId":working_job_list};
- var idx = addRequestList(update_ajax);
-
- console.log("Update done. Next request in 2sec.");
- update_ajax.done(function() {
- setTimeout(function(){
- if(isPolling(idx) && $.mobile.activePage.attr('id') == "jobs" && idx < 900) {
- console.log("Update request.");
- request_list[idx].polling = false;
- updateJobList(condition, distribution, selectedStatus);
- }
- else {
- console.log("Stop update.");
- }
- }, 2000);
- });
-}
-
-function queryUpdateJobList(requestUrl, condition, queryDistribution, selectedStatus, latest_job_id) {
- var url = requestUrl+"/"+condition+"/"+queryDistribution+"/"+selectedStatus+"/"+latest_job_id;
- return updateJobsList(url, function(xml) {
+ var update_ajax = updateList(item, function(xml) {
var firstLi= $("#jobList li").first();
$(xml).find("JobList").find("Job").each(function(){
$(li).insertBefore(firstLi);
$("#jobList").listview('refresh');
+ console.log("ADD List :"+id);
});
- });
-}
-
-function updateJobListStatus(jobId, id) {
- update_ajax = queryUpdateJobListStatus(jobId, id);
- var idx = addRequestList(update_ajax);
- update_ajax.success(function(xml) {
- var jobStatus = $(xml).find("Data").find("Status").text();
- var font_color = "black";
- var update = false;
+ $(xml).find("WorkingJobList").find("Job").each(function(){
+ console.log($(this).text());
+ var job_id = $(this).find("Id").text();
+ var job_status = $(this).find("Status").text();
+ var font_color = "black";
- switch(jobStatus)
- {
- case "ERROR" :
- case "CANCELED" :
- font_color = "red";
- update = false;
- break;
- case "INITIALIZING" :
- case "JUST_CREATED" :
- case "PENDING" :
- case "WORKING" :
- case "REMOTE_WORKING" :
- font_color = "blue";
- update = true;
- break;
- case "WAITING" :
- font_color = "green";
- update = true;
- break;
- case "FINISHED" :
- font_color = "black";
- update = false;
- break;
- default:
- console.error(job_status+" status is not define.");
- font_color = "black";
- update = false;
- break;
- }
- html = '<strong><font color="'+font_color+'">'+jobStatus+'</strong>';
- $("#"+id).html(html);
+ switch(job_status)
+ {
+ case "ERROR" :
+ case "CANCELED" :
+ font_color = "red";
+ break;
+ case "INITIALIZING" :
+ case "JUST_CREATED" :
+ case "PENDING" :
+ case "WORKING" :
+ case "REMOTE_WORKING" :
+ font_color = "blue";
+ break;
+ case "WAITING" :
+ font_color = "green";
+ break;
+ case "FINISHED" :
+ font_color = "black";
+ break;
+ default:
+ console.error(job_status+" status is not define.");
+ font_color = "black";
+ break;
+ }
+ html = '<strong><font color="'+font_color+'">'+job_status+'</strong>';
+ $("#jobs-li-"+job_id).html(html);
+ console.log("UPDATE List :"+job_id);
+ });
+ });
+ var idx = addRequestList(update_ajax);
+ update_ajax.done(function() {
+ console.log("update complete. retry in 2 sec.");
setTimeout(function(){
- var jobStatus = $(xml).find("Data").find("Status").text();
- console.log(jobStatus);
- if(update && isPolling(idx) && $.mobile.activePage.attr('id') == "jobs" && idx < 900) {
+ if(isPolling(idx) && $.mobile.activePage.attr('id') == "jobs" && idx < 900) {
console.log("Update request.");
request_list[idx].polling = false;
- updateJobListStatus(jobId, id);
+ jobUpdateList(condition, param, distribution, selectedStatus);
}
else {
console.log("Stop update.");
});
}
-function queryUpdateJobListStatus(jobId, id) {
- var url = "jobs/jobInfo/"+jobId;
- console.log("update url: "+url);
- return updateJobsListStatus(url, function(xml) { });
-}
-
function clearSuggestJobSearchList() {
$("#jobSearchList").empty();
}
var endTime = xml.find("EndTime").text();
var li = "";
var font_color = "black";
- var update = false;
switch(jobStatus)
{
case "ERROR" :
case "CANCELED" :
font_color = "red";
- update = false;
break;
case "INITIALIZING" :
case "JUST_CREATED" :
case "WORKING" :
case "REMOTE_WORKING" :
font_color = "blue";
- update = true;
break;
case "WAITING" :
font_color = "green";
- update = true;
break;
case "FINISHED" :
font_color = "black";
- update = false;
break;
default:
console.error(job_status+" status is not define.");
font_color = "black";
- update = false;
break;
}
li = li + '<p>DISTRIBUTION: <strong>' +distribution+ '</strong></p>';
}
- li = li + '<p id="jobs-li-'+id+'" class="ui-li-aside"><strong><font color="'+font_color+'">'+jobStatus+'</strong></p>';
+ li = li + '<p id="jobs-li-'+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 + '<p>DISTRIBUTION: <strong>' +distribution+ '</strong></p>';
}
- li = li + '<p id="jobs-li-'+id+'" class="ui-li-aside"><strong><font color="'+font_color+'">'+jobStatus+'</strong></p>';
+ li = li + '<p id="jobs-li-'+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")
+ '<p>OS : <strong>' +os+ '</strong></p>'
+ '<p>TIME: <strong>' +startTime+ ' ~ '+endTime+ '</strong></p>';
- li = li + '<p id="jobs-li-'+id+'" class="ui-li-aside"><strong><font color="'+font_color+'">'+jobStatus+'</strong></p>';
+ li = li + '<p id="jobs-li-'+id+'" class="ui-li-aside jobs-list-status" title="'+id+'"><strong><font color="'+font_color+'">'+jobStatus+'</strong></p>';
li = li + '</a></li>';
}
- if(update) {
- updateJobListStatus(id, "jobs-li-"+id);
+ return 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");
+ switch(job_status)
+ {
+ case "INITIALIZING" :
+ case "JUST_CREATED" :
+ case "PENDING" :
+ case "WORKING" :
+ case "REMOTE_WORKING" :
+ case "WAITING" :
+ working_job_array.push(job_id);
+ break;
+ default:
+ break;
+ }
+ });
+ return working_job_array;
+}
+
+/* For background update AJAX */
+function classAjax() {
+ var polling = false;
+ var ajaxObj = undefined;
+}
+
+function addRequestList(ajaxObj) {
+ var class_ajax = new classAjax();
+ class_ajax.polling = true;
+ class_ajax.ajaxObj = ajaxObj;
+
+ return request_list.push(class_ajax) - 1;
+}
+
+function clearRequestList() {
+ while(request_list.length > 0) {
+ var last_request = request_list[request_list.length - 1];
+ if(last_request.polling == true && last_request.ajaxObj != undefined) {
+ last_request.ajaxObj.abort();
+ }
+ request_list.pop();
}
+ console.log("Clear all update.");
+}
- return li;
+function isPolling(idx) {
+ if(request_list[idx] != undefined) {
+ return request_list[idx].polling;
+ }
+ else {
+ return false;
+ }
}