[title] fixed update job list about child job
authordibs <dibs@samsung.com>
Tue, 22 Jan 2013 04:54:56 +0000 (13:54 +0900)
committerdibs <dibs@samsung.com>
Tue, 22 Jan 2013 04:54:56 +0000 (13:54 +0900)
dibs-web/app/controllers/admin_project_controller.rb
dibs-web/app/controllers/jobs_controller.rb
dibs-web/config/routes.rb
dibs-web/public/index.html
dibs-web/public/javascripts/jobs.js

index f4496f1ef8ae980ade001a47df1cd6d6a600d6c1..a0f7b72adb04c7f4f7c63743354d6fdddd2ab9d0 100644 (file)
@@ -155,6 +155,8 @@ class AdminProjectController < ApplicationController
                project.ptype = project_type
                project.password = project_password
                project.distribution_id = distribution.id
+               #TODO: set project user is admin. admin user id is '1'
+               project.user_id = 1
                project.save
 
                if not change_item[:OSNameList].nil?
index f12642a9b5421071b65db22055fc381cbde05016..b4f379751845e0d1b4942ff2c96d066221101385 100644 (file)
@@ -133,12 +133,33 @@ class JobsController < ApplicationController
                                                                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
                                }
@@ -220,6 +241,7 @@ class JobsController < ApplicationController
                                        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)
@@ -309,6 +331,7 @@ class JobsController < ApplicationController
                                                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)
@@ -403,6 +426,7 @@ class JobsController < ApplicationController
                                                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)
@@ -418,8 +442,11 @@ class JobsController < ApplicationController
                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
@@ -455,6 +482,7 @@ class JobsController < ApplicationController
                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
index 5d2eec8728144174d74f3f102cb94e05ef41e0eb..5d0385e1e19fc48156e42d8af69a7ac13f320770 100644 (file)
@@ -55,7 +55,7 @@ Dibs::Application.routes.draw do
     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"
@@ -69,7 +69,7 @@ Dibs::Application.routes.draw do
        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" 
index 3a72cb57ae6b0e6a8f03070c8ee08d219015ffa6..c782c5fc23aa7e5404b7e88f8c93a37eadab9686 100644 (file)
@@ -680,14 +680,6 @@ Contributors:
                                <label for="popup:addGitProjectName"> Project name </label>
                                <input type="text" id="popup:addGitProjectName"/>
                                <br>
-                               <label for="popup:addGitProjectType"> Project type </label>
-                               <div data-role="fieldcontain">
-                                       <select id="popup:addGitProjectType" disabled="disabled">
-                                               <option value="git" selected='selected'>Git</option>
-                                               <option value="binary">Binary</option>
-                                       </select>
-                               </div>
-                               <br>
                                <label for="popup:addGitProjectPassword"> Project password </label>
                                <input type="text" id="popup:addGitProjectPassword"/>
                                <br>
@@ -718,14 +710,6 @@ Contributors:
                                <label for="popup:addBinaryProjectName"> Project name </label>
                                <input type="text" id="popup:addBinaryProjectName"/>
                                <br>
-                               <label for="popup:addBinaryProjectType"> Project type </label>
-                               <div data-role="fieldcontain">
-                                       <select id="popup:addBinaryProjectType" disabled="disabled">
-                                               <option value="git">Git</option>
-                                               <option value="binary" selected='selected'>Binary</option>
-                                       </select>
-                               </div>
-                               <br>
                                <label for="popup:addBinaryProjectPassword"> Project password</label>
                                <input type="text" id="popup:addBinaryProjectPassword"/>
                                <br>
index 4935ad2cf87a8a0ce712fdf4e42725dffaa7b962..c221472528859f8ee6d192c8bf0832215e2e9d21 100644 (file)
@@ -351,6 +351,7 @@ function jobUpdateList(condition, param, distribution, selectedStatus) {
        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));
@@ -366,8 +367,10 @@ function jobUpdateList(condition, param, distribution, selectedStatus) {
                        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();
@@ -397,11 +400,34 @@ function jobUpdateList(condition, param, distribution, selectedStatus) {
                                        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);
+                       }
                });
        });
 
@@ -551,45 +577,63 @@ function generateHtmlJobList(xml) {
 
        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>';
        }
 
@@ -598,9 +642,10 @@ function generateHtmlJobList(xml) {
 
 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" :
@@ -609,7 +654,9 @@ function searchWorkingList() {
                        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;