[title] add loading configuration about PORT, PATH
authordibs <dibs@core1compiler.(none)>
Thu, 6 Dec 2012 03:18:15 +0000 (12:18 +0900)
committerdibs <dibs@core1compiler.(none)>
Thu, 6 Dec 2012 03:18:15 +0000 (12:18 +0900)
17 files changed:
dibs-web/app/controllers/admin_project_controller.rb
dibs-web/app/controllers/application_controller.rb
dibs-web/app/controllers/jobs_controller.rb
dibs-web/app/controllers/projects_controller.rb
dibs-web/app/controllers/utils.rb
dibs-web/app/models/package.rb
dibs-web/app/models/server_config.rb
dibs-web/config/database.yml
dibs-web/config/routes.rb
dibs-web/public/index.html
dibs-web/public/javascripts/admin-project-add.js
dibs-web/public/javascripts/admin-project-modify.js
dibs-web/public/javascripts/admin-project.js
dibs-web/public/javascripts/dibs-api.js
dibs-web/public/javascripts/log.js
dibs-web/public/javascripts/main.js
dibs-web/public/javascripts/projects.js

index 21fa703b8510432f1d988a4bd926b84cda222e39..372a3462a2f38ad7d611d90a8e4820ff719a89aa 100644 (file)
@@ -24,7 +24,7 @@ class AdminProjectController < ApplicationController
                render :text => out_string, :content_type => "text/xml"
        end
 
-       def queryProjectsInDistribution
+       def queryProjectsInDistributionForAdmin
                dist_name = params[:distribution]
 
                if dist_name.nil? or dist_name.empty? 
@@ -58,6 +58,14 @@ class AdminProjectController < ApplicationController
                                                        doc.ProjectName(project.name)
                                                        doc.Type(project.ptype)
             
+                                                       os_list = ProjectOs.find(:all, :conditions => ["project_id = ?", project.id])
+                                                       if not os_list.nil? then
+                                                               os_list.each do |os|
+                                                                       supported_os = SupportedOs.find(:first, :conditions => ["id = ?", os.supported_os_id])
+                                                                       doc.OS(supported_os.name)
+                                                               end
+                                                       end
+
                                                        case project.ptype.upcase
                                                        when "GIT"
                                                                git = ProjectGit.find(:first, :conditions => ["project_id = ?", project.id])
@@ -66,13 +74,6 @@ class AdminProjectController < ApplicationController
                                                                        doc.GitBranch(git.git_branch)
                                                                end
                     
-                                                               os_list = ProjectOs.find(:all, :conditions => ["project_id = ?", project.id])
-                                                               if not os_list.nil? then
-                                                                       os_list.each do |os|
-                                                                               supported_os = SupportedOs.find(:first, :conditions => ["id = ?", os.supported_os_id])
-                                                                               doc.OS(supported_os.name)
-                                                                       end
-                                                               end
                                                        when "BINARY"
                                                                bin = ProjectBin.find(:first, :conditions => ["project_id = ?", project.id])
                                                                if not bin.nil? then
@@ -114,6 +115,12 @@ class AdminProjectController < ApplicationController
                        return
                end
 
+               if not project_type.eql? "GIT" and not project_type.eql? "BINARY"
+                       errmsg = "project type is invalid"
+                       render :json => { :error => errmsg }, :status => 406
+                       return
+               end
+
                project = Project.new
                project.name = project_name
                project.ptype = project_type
@@ -121,14 +128,7 @@ class AdminProjectController < ApplicationController
                project.distribution_id = distribution.id
                project.save
 
-               case project.ptype
-               when "GIT"
-                       git = ProjectGit.new
-                       git.project_id = project.id
-                       git.git_repos = change_item[:Address]
-                       git.git_branch = change_item[:Branch]
-                       git.save
-
+               if not change_item[:OSNameList].nil?
                        os_name_list = change_item[:OSNameList].split(",")
                        os_name_list.each do |os_name|
                                supported_os = SupportedOs.find(:first, :conditions => ["name = ?", os_name])
@@ -138,16 +138,20 @@ class AdminProjectController < ApplicationController
                                project_os.supported_os_id = supported_os.id
                                project_os.save
                        end
+               end
+
+               case project.ptype
+               when "GIT"
+                       git = ProjectGit.new
+                       git.project_id = project.id
+                       git.git_repos = change_item[:Address]
+                       git.git_branch = change_item[:Branch]
+                       git.save
                when "BINARY"
                        binary = ProjectBin.new
                        binary.project_id = project.id
                        binary.pkg_name = change_item[:PackageName]
                        binary.save
-               else
-                       project.destroy
-                       errmsg = "project type is invalid"
-                       render :json => { :error => errmsg }, :status => 406
-                       return
                end
 
                render :json => { :success => "OK!" }
@@ -190,7 +194,12 @@ class AdminProjectController < ApplicationController
                        return
                end
 
+               # remove project os 
+               ProjectOs.delete_all(["project_id = ?", project.id])
+
+               # remove project 
                project.destroy
+
                render :json => { :success => "OK!" }
        end
 
@@ -199,30 +208,30 @@ class AdminProjectController < ApplicationController
                change_item = change_group_list[0]
                errmsg = ""
                
-               if change_item[:Name].nil? or change_item[:Name].empty? then
-                       errmsg = "Can't find [Name] information"
+               dist_name = change_item[:Distribution]
+               old_project_name = change_item[:Name]
+               project_type = change_item[:ProjectType].upcase
+
+               if old_project_name.nil? or old_project_name.empty? then
+                       errmsg = "Can't find [#{old_project_name}] information"
                        render :json => { :error => errmsg }, :status => 406
                        return
                end
 
-               dist_name = change_item[:Distribution]
-               old_project_name = change_item[:Name]
-               project_type = change_item[:ProjectType].upcase
+               if not project_type.eql? "GIT" and not project_type.eql? "BINARY"
+                       errmsg = "project type is invalid"
+                       render :json => { :error => errmsg }, :status => 406
+                       return
+               end
 
                distribution = Distribution.find(:first, :conditions => ["name = ?", dist_name])
                project = Project.find(:first, :conditions => ["name = ? and distribution_id = ? and ptype = ?", old_project_name, distribution.id, project_type])
                project.name = change_item[:NewProjectName]
                project.password = change_item[:ProjectPass]
 
-               case project_type
-               when "GIT"
-                       project_git = ProjectGit.find(:first, :conditions => ["project_id = ?", project.id])
-                       project_git.git_repos = change_item[:ProjectAddress]
-                       project_git.git_branch = change_item[:ProjectBranch]
-                       project_git.save
-
-                       ProjectOs.delete_all(["project_id = ?", project.id])
-
+               # remove project os and reset project os
+               ProjectOs.delete_all(["project_id = ?", project.id])
+               if not change_item[:OSNameList].nil?
                        os_name_list = change_item[:OSNameList].split(",")
                        os_name_list.each do |os_name|
                                supported_os = SupportedOs.find(:first, :conditions => ["name = ?", os_name])
@@ -232,14 +241,27 @@ class AdminProjectController < ApplicationController
                                project_os.supported_os_id = supported_os.id
                                project_os.save
                        end
+               end
+
+               case project_type
+               when "GIT"
+                       project_git = ProjectGit.find(:first, :conditions => ["project_id = ?", project.id])
+                       if project_git.nil?
+                               project_git.project_id = project.id
+                               project_git = ProjectGit.new
+                       end
+                       project_git.git_repos = change_item[:ProjectAddress]
+                       project_git.git_branch = change_item[:ProjectBranch]
+                       project_git.save
+
                when "BINARY"
                        project_bin = ProjectBin.find(:first, :conditions => ["project_id = ?", project.id])
+                       if project_bin.nil?
+                               project_bin = ProjectBin.new
+                               project_bin.project_id = project.id
+                       end
                        project_bin.pkg_name = change_item[:PackageName]
                        project_bin.save
-               else
-                       errmsg = "project type invalid"
-                       render :json => { :error=> errmsg }, :status => 406
-                       return
                end
 
                project.save
index c3be25792eda934a039cc1c6cc85aaa462198792..bcebb23722205a726b3944c91a63018c3e7fde0c 100644 (file)
@@ -1,6 +1,8 @@
 class ApplicationController < ActionController::Base
        #protect_from_forgery
 
+       JOBS_STAUTS_WAITING = "WAITING"
+
        helper_method :current_user
        
        def get_user_id
index f1b4fe169718ddacca6d4cc46bae35f0d279a2f9..dd374fe6def322f653905768afd473eaa20fc8a3 100644 (file)
@@ -344,7 +344,8 @@ class JobsController < ApplicationController
                line = params[:line].to_i
        
                file_name = "log"
-               directory = "~/temp/sdk-build/test/build-server.basic1/buildsvr01/jobs/#{id}"
+               buildsvr_path = Server_config.find(:first, :conditions => ["property = ?", "path"])
+               directory = "#{buildsvr_path.value}/jobs/#{id}"
        
                # create the file path                                                                         
                path = File.join(directory, file_name)                                                              
index 77728e7cbf3babf81015f7cb2f8592428ea8c662..b45071d3febca537dc0d5bcc9b5e98d26438e5a5 100644 (file)
@@ -42,7 +42,12 @@ class ProjectsController < ApplicationController
 
        if (project_list.length > 1) or (not (project_list[0].nil? or project_list[0].empty?))
                # execute build command
-               ret = Utils.sbi_build_command(build_type, dist_name, project_list, os_list, password_list, get_user_email)
+               begin
+                       Utils.sbi_build_command(build_type, dist_name, project_list, os_list, password_list, get_user_email)
+               rescue => e
+                       render :text => e.message, :status => 406
+                       return
+               end
     
                render :json => { :success => "OK!" }
        else
@@ -52,23 +57,31 @@ class ProjectsController < ApplicationController
   end
 
   def queryPackageInfo(project_id, os_id)
-               packages = Project.find_by_sql("SELECT sources.pkg_ver AS pkg_ver
-                                                                                        , packages.pkg_name AS pkg_name
-                                                                                        , 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
-                                                                                    , users.name AS user_name
-                                                                                    , users.email AS user_email
+
+               source = Project.find_by_sql("SELECT sources.pkg_ver AS pkg_ver
+                                                                                        , 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
+                                                                                        , jobs.source_id AS source_id
+                                                                                        , jobs.supported_os_id AS supported_os_id
+                                                                                        , users.name AS user_name
+                                                                                        , users.email AS user_email
                                                                                  FROM projects
-                                                                                 LEFT JOIN sources       ON projects.id = sources.project_id
-                                                                                 LEFT JOIN packages      ON sources.id = packages.source_id
-                                                                                 LEFT JOIN jobs          ON jobs.source_id = sources.id 
-                                                                                                                                        AND jobs.supported_os_id = packages.supported_os_id
-                                                                                 LEFT JOIN users         ON jobs.user_id = users.id
-                                                                                WHERE projects.id = #{project_id}
-                                                                                  AND packages.supported_os_id = #{os_id}
-                                                                                GROUP BY packages.pkg_name
-                                                                                ORDER BY jobs.id DESC")
-               return packages
+                                                                                        , sources 
+                                                                                        , jobs
+                                                                                        , users
+                                                                                WHERE projects.id = sources.project_id
+                                                                                       AND jobs.source_id = sources.id 
+                                                                                       AND jobs.user_id = users.id
+                                                                                       AND projects.id = #{project_id}
+                                                                                       AND jobs.supported_os_id = #{os_id}
+                                                                               ORDER BY jobs.id DESC")
+
+
+               if source.nil?
+                       return nil
+               else
+                       return source[0]
+               end
   end
 
   def checkUserAccessProject(user_id, project_id)
@@ -114,29 +127,33 @@ class ProjectsController < ApplicationController
                                                os_list.each { |os|
                                                        doc.ProjectOs {
                                                                os_info = SupportedOs.find(:first, :conditions => ["id = ?", os.supported_os_id])
-                                                               packageList = queryPackageInfo(project.id, os.supported_os_id) 
-
                                                                doc.OsName(os_info.name)
-                                
-                                                               packageList.each { |package| 
+
+                                                               source = queryPackageInfo(project.id, os.supported_os_id) 
+                                                               if source.nil?
                                                                        doc.Package {
-                                                                               if package.nil?
-                                                                                       doc.PackageName()
-                                                                                       doc.PackageVersion()
-                                                                                       doc.StartTime()
-                                                                                       doc.EndTime()
-                                                                                       doc.UserName()
-                                                                                       doc.UserEmail()
-                                                                               else
+                                                                               doc.PackageName()
+                                                                               doc.PackageVersion()
+                                                                               doc.StartTime()
+                                                                               doc.EndTime()
+                                                                               doc.UserName()
+                                                                               doc.UserEmail()
+                                                                       }
+                                                               else
+                                                                       packageList = Package.find(:all, :conditions => ["source_id = ? AND supported_os_id = ?", source.source_id, source.supported_os_id])
+
+                                       
+                                                                       packageList.each { |package| 
+                                                                               doc.Package {
                                                                                        doc.PackageName(package.pkg_name)
-                                                                                       doc.PackageVersion(package.pkg_ver)
-                                                                                       doc.StartTime(package.start_time)
-                                                                                       doc.EndTime(package.end_time)
-                                                                                       doc.UserName(package.user_name)
-                                                                                       doc.UserEmail(package.user_email)
-                                                                               end
+                                                                                       doc.PackageVersion(source.pkg_ver)
+                                                                                       doc.StartTime(source.start_time)
+                                                                                       doc.EndTime(source.end_time)
+                                                                                       doc.UserName(source.user_name)
+                                                                                       doc.UserEmail(source.user_email)
+                                                                               }
                                                                        }
-                                                               }
+                                                               end
                                                        }
                                                }
                                        }
@@ -298,7 +315,12 @@ class ProjectsController < ApplicationController
                return
        end
 
-       ret = Utils.sbi_register_command(distribution.name, file_path,  project.password, get_user_email)
+       begin
+               Utils.sbi_register_command(distribution.name, file_path,  project.password, get_user_email)
+       rescue => e
+               render :text => e.message, :status => 406
+               return
+       end
 
        render :nothing => true
        return
index 2742e9a9c9acc38892580ec80100d7ab18409d8b..e768855cc699d4e39d78a0e83447555e3b5260bc 100644 (file)
@@ -1,58 +1,17 @@
 # constant
-DIBS_PATH = "~/sdk-build"
-BUILD_SERVER_ADDRESS = "172.21.110.234:2223"
+BUILD_SERVER_ADDRESS = "127.0.0.1"
 
-class Utils
-  def Utils.query_build_server
-
-    cmd = "#{DIBS_PATH}/build-cli query -d #{BUILD_SERVER_ADDRESS}"
-    ret = execute_shell_return(cmd)
-       if ret.nil? or ret.empty? then 
-               logger.error "[[[[ dibs query command return empty string ]]]]"
-               return 
+class Utils < ApplicationController
+  def Utils.sbi_build_command(sub_cmd, distribution, project_list, os_list, password_list, email)
+       dibs_path = File.dirname(File.dirname(File.dirname(File.dirname(__FILE__))))
+       dibs_config = Server_config.find(:first, :conditions => ["property = \"port\""])
+       if dibs_config.nil?
+               raise RuntimeError, "Build sever not started"
+       else
+               dibs_address = BUILD_SERVER_ADDRESS + ":" + dibs_config.value
        end
-    buildServer = Struct.new(:info, :ftp, :os_list, :friend_list, :projects, :jobs, :distribution, :etc)
-    server = buildServer.new([], [], [], [], [], [], [], []) 
-    status = "etc"
-    ret.each do |l|
-      l.strip! 
-      if l.empty? then next end 
-      if l.start_with? "*" and l.end_with? "*" then
-        case l
-        when "* SYSTEM INFO *" then status = "info" 
-        when "* FTP *" then status = "ftp"
-        when "* SUPPORTED OS LIST *" then status = "os_list"
-        when "* FRIEND SERVER LIST (WAIT|WORK/MAX) jobs [transfer count] *" then status = "friend_list"
-        when "* PROJECT(S) *" then status = "projects"
-        when "* JOB(S) *" then status = "jobs"
-        else status = "etc"
-        end 
-        # go next line
-        next
-      end 
-      case status
-      when "info" then server.info.push l 
-      when "ftp" then server.ftp.push l 
-      when "os_list" then server.os_list.push l
-      when "friend_list" then server.friend_list.push l
-      when "projects" then server.projects.push l.split(" ")[0]
-      when "etc" then server.etc.push l
-      else
-        server.etc.push l
-      end 
-    end
 
-    return server
-  end
-  
-  def Utils.sbi_build_command(sub_cmd, distribution, project_list, os_list, password_list, email)
-       options = "-d #{BUILD_SERVER_ADDRESS} --async "
+       options = "-d #{dibs_address} --async "
        options = options + " -N #{project_list.join(",")} -D #{distribution} " 
        if (os_list.length > 1) or (not os_list[0].nil?)
                options = options + " -o #{os_list.join(",")} "
@@ -64,7 +23,7 @@ class Utils
                options = options + " -U #{email} "
        end
 
-       cmd = "#{DIBS_PATH}/build-cli #{sub_cmd} #{options}"
+       cmd = "#{dibs_path}/build-cli #{sub_cmd} #{options}"
 puts "Build command"
 puts "[[[#{cmd}]]]"
 
@@ -72,7 +31,15 @@ puts "[[[#{cmd}]]]"
   end
 
   def Utils.sbi_register_command(distribution, file_path, password, email)
-       options = "-P #{file_path} -d #{BUILD_SERVER_ADDRESS} -D #{distribution}"
+       dibs_path = File.dirname(File.dirname(File.dirname(File.dirname(__FILE__))))
+       dibs_config = Server_config.find(:first, :conditions => ["property = \"port\""])
+       if dibs_config.nil?
+               raise RuntimeError, "Build sever not started"
+       else
+               dibs_address = BUILD_SERVER_ADDRESS + ":" + dibs_config.value
+       end
+
+       options = "-P #{file_path} -d #{dibs_address} -D #{distribution} --async "
        if (not password.nil?)
                options = options + " -w #{password}"
        end
@@ -80,7 +47,7 @@ puts "[[[#{cmd}]]]"
                options = options + " -U #{email} "
        end
 
-       cmd = "#{DIBS_PATH}/build-cli register #{options}"
+       cmd = "#{dibs_path}/build-cli register #{options}"
 puts "Register command"
 puts "[[[#{cmd}]]]"
        return execute_shell_return(cmd)
@@ -91,17 +58,9 @@ puts "[[[#{cmd}]]]"
     ret = false
   
     # get result
-    IO.popen("#{cmd} 2>&1") { |io|
-      io.each do |line|
-        result_lines.push line
-      end
-    }
+    IO.popen("#{cmd}")
 
-    if $?.to_i == 0 then
-      return result_lines
-    else
-      return nil
-    end
+       return true
   end
 
 end
index 57c4437e6dfe00e0b76d01456bc5548cfa131427..7e6b44f2d416ba3fc29b850b4d98c4c90911b816 100644 (file)
@@ -1,3 +1,3 @@
 class Package < ActiveRecord::Base
-  attr_accessible :id, :pkg_name, :sources_id, :supported_os_id
+  attr_accessible :id, :pkg_name, :source_id, :supported_os_id
 end
index 624f2aa61895b9260055287eb75cb54f1141dab9..68f2df8cbf5cfc4ffbe0b7f79359de973792f7bc 100644 (file)
@@ -1,3 +1,3 @@
 class Server_config < ActiveRecord::Base
-  attr_accessible :chage_log_check, :db_version, :id, :job_keep_time, :job_log_url, :max_working_job, :pkg_sync_period, :send_mail
+  attr_accessible :property, :value
 end
index 6e35958ca81eea308ca574d9390ab0e5828fdca9..bac51a20b556b8c5106d5900416bb118a586535a 100644 (file)
    timeout: 
 
  development:
-   adapter: 
-   encoding:
-   host:
-   port:
-   database:
-   username:
-   password:
-   pool:
-   timeout:
+   adapter: mysql2
+   encoding: utf8
+   host: 172.21.111.131
+   port: 3306
+   database: dibs
+   username: root
+   password: sua1004
+   pool: 5
+   timeout: 5000
index f6d2ac64a67e64d3982aec26f39947ce724b0f5b..273cacce48831bb583efc631c08d70c389aa9ccf 100644 (file)
@@ -71,7 +71,7 @@ Dibs::Application.routes.draw do
 
        # admin project 
        get "admin_project/queryAllProject" 
-       match "admin_project/queryProjectsInDistribution/:distribution" => "admin_project#queryProjectsInDistribution" 
+       match "admin_project/queryProjectsInDistributionForAdmin/:distribution" => "admin_project#queryProjectsInDistributionForAdmin" 
        post "admin_project/addProject" 
        post "admin_project/removeProject" 
        post "admin_project/modifyProject" 
index 6298ca27c794231109a3118308c2dab8fac72c27..6dee6f19061b64dea54c487d9657c8dd5cf4e1a7 100644 (file)
@@ -54,8 +54,7 @@
                        <div class="content-primary">
                                <h2>Welcome to DIBS</h2>
                                <ul>
-                                       <li>BUILD is menu for general user.
-                                       <li>ADMIN is menu for administrator.
+                                       <li>This system is support to build project.
                                </ul>
                        </div><!--/content-primary -->
 
                                        </select>
                                </div>
                                <br>
+                               <div id="projectsSearchSelect">
+                                       <fieldset data-role="controlgroup" data-type="horizontal" data-mini="true">
+                                               <input type="radio" name="radio-choice" id="projects-project-select-1" value="ALL" checked="checked" onClick='projectsQueryProjectList()'/>
+                                               <label for="projects-project-select-1">ALL</label>
+                                               
+                                               <input type="radio" name="radio-choice" id="projects-project-select-2" value="MY PROJECT" onClick='projectsQueryProjectListType("MY")' />
+                                               <label for="projects-project-select-2">MY PROJECT</label>
+                                               <input type="radio" name="radio-choice" id="projects-project-select-3" value="GIT PROJECT" onClick='projectsQueryProjectListType("GIT")' />
+                                               <label for="projects-project-select-3">GIT PROJECT</label>
+                                               <input type="radio" name="radio-choice" id="projects-project-select-4" value="BINARY PROJECT" onClick='projectsQueryProjectListType("BINARY")' />
+                                               <label for="projects-project-select-4">BINARY PROJECT</label>
+                                       </fieldset>
+                               </div>
+                               <br>
                                <div id="projects-project-list">
                                </div>
                        </div><!--/content-primary -->
                                <br>
                                <label for="popup:addBinaryPackageName"> Pakcage name</label>
                                <input type="text" id="popup:addBinaryPackageName"/>
+                               <div data-role="fieldcontain">
+                                       <fieldset data-role="controlgroup" data-mini="true" id="popup:addBinaryProjectOs">
+                                       </fieldset>
+                                       <br>
+                               </div>
                        </form>
                </div>
                <div align="right" style="font-size: 10px">
                                <br>
                                <label for="popup:modifyBinaryPackageName"> Pakcage name</label>
                                <input type="text" id="popup:modifyBinaryPackageName"/>
+                               <div data-role="fieldcontain">
+                                       <fieldset data-role="controlgroup" data-mini="true" id="popup:modifyBinaryProjectOs">
+                                       </fieldset>
+                                       <br>
+                               </div>
                        </form>
                </div>
                <div align="right" style="font-size: 10px">
index 7318cea7478f2db04be0918600a04d59dff0d634..6cfbe48f436907c655f2347f49bc0ae6c27cc6b2 100644 (file)
@@ -1,4 +1,9 @@
-function adminProjectAddInit() {
+function adminProjectAddGitInit() {
+       document.getElementById("popup:addGitProjectName").value = "";
+       document.getElementById("popup:addGitProjectPassword").value = "";
+       document.getElementById("popup:addGitAddress").value = "";
+       document.getElementById("popup:addGitBranch").value = "";
+
        queryAllOS( function (xml) {
                var osList = $(xml).find("Data").find("OsName");
 
@@ -36,6 +41,48 @@ function adminProjectAddInit() {
        });
 }
 
+function adminProjectAddBinaryInit() {
+       document.getElementById("popup:addBinaryProjectName").value = "";
+       document.getElementById("popup:addBinaryProjectPassword").value = "";
+       document.getElementById("popup:addBinaryPackageName").value = "";
+
+       queryAllOS( function (xml) {
+               var osList = $(xml).find("Data").find("OsName");
+
+               fieldset = document.getElementById('popup:addBinaryProjectOs');
+               /* remove all table rows */
+               while(fieldset.hasChildNodes())
+               {
+                       fieldset.removeChild(fieldset.firstChild);
+               }
+        
+               legend = document.createElement('legend');
+               legend.innerHTML = "Project os list";
+               fieldset.appendChild(legend);
+        
+               osList.each(function(){
+                       var osName = $(this).text();
+        
+                       var input = document.createElement('input');
+                       input.type = 'checkbox';
+                       input.id = 'popup:addBinaryProjectOsCheckbox:'+osName;
+                       input.name = 'popup:addBinaryProjectOsCheckbox';
+                       input.value = osName;
+                       input.setAttribute('class', 'popup:addBinaryProjectOsCheckbox');
+                       input.setAttribute('checked', 'checked');
+        
+                       var label = document.createElement('label');
+                       label.setAttribute('for', 'popup:addBinaryProjectOsCheckbox:'+osName);
+                       label.innerHTML = osName;
+                       
+                       fieldset.appendChild(input);
+                       fieldset.appendChild(label);
+               });
+        
+               $('.popup\\:addBinaryProjectOsCheckbox').checkboxradio();
+       });
+}
+
 function adminProjectAddGitProject() {
        var distName = $("#adminProjectDistributionSelect option:selected").val();
        var changeInfoList = [];
@@ -65,11 +112,6 @@ function adminProjectAddGitProject() {
        changeInfoList.push(changeInfoItem);
        
        addProject(changeInfoList, function () {
-               document.getElementById("popup:addGitProjectName").value = "";
-               document.getElementById("popup:addGitProjectPassword").value = "";
-               document.getElementById("popup:addGitAddress").value = "";
-               document.getElementById("popup:addGitBranch").value = "";
-
                $.mobile.changePage("#adminProject"); 
        });
 }
@@ -82,20 +124,25 @@ function adminProjectAddBinaryProject() {
        var name = document.getElementById("popup:addBinaryProjectName").value;
        var password = document.getElementById("popup:addBinaryProjectPassword").value;
        var pkgName = document.getElementById("popup:addBinaryPackageName").value;
+       var selectArray = document.getElementsByName('popup:addBinaryProjectOsCheckbox');
+       var selectOsList = [];
+
+       for(var i = 0; i < selectArray.length; i++) {
+               if (selectArray[i].checked == true) {
+                       var osName = selectArray[i].id.split(":")[2];
+                       selectOsList.push(osName);
+               }
+       }
 
        if(name == "" || pkgName == ""){
                alert("You must input full data(Project name, Package name");
                return;
        }
 
-       changeInfoItem = {"Distribution":distName, "Name":name, "ProjectType":type, "ProjectPass":password, "PackageName":pkgName};
+       changeInfoItem = {"Distribution":distName, "Name":name, "ProjectType":type, "ProjectPass":password, "PackageName":pkgName, "OSNameList":selectOsList.toString()};
        changeInfoList.push(changeInfoItem);
        
        addProject(changeInfoList, function () {
-               document.getElementById("popup:addBinaryProjectName").value = "";
-               document.getElementById("popup:addBinaryProjectPassword").value = "";
-               document.getElementById("popup:addBinaryPackageName").value = "";
-
                $.mobile.changePage("#adminProject"); 
        });
 }
index 3769bba88bcdd9b7ab6484ddd9fa0eb0be92ab68..0fd80e264163fc0e74541cfb1edfae8bd78274cd 100644 (file)
@@ -6,6 +6,53 @@ function adminProjectModifyBinaryProjectInit() {
        document.getElementById('popup:modifyBinaryNewProjectName').value = projectName;
        document.getElementById('popup:modifyBinaryProjectPassword').value = "";
        document.getElementById('popup:modifyBinaryPackageName').value = packageName;
+
+       queryAllOS( function (xml) {
+               var osList = $(xml).find("Data").find("OsName");
+               var selectedOsList = [];
+               var projectName = localStorage.projectName;
+       
+               var osListElement = document.getElementById('adminBINARYProjectTableOsList:'+projectName);
+               for(var i = 0; i < osListElement.childNodes.length; i++)
+               {
+                       selectedOsList.push(osListElement.childNodes[i].innerHTML);
+               }
+
+               fieldset = document.getElementById('popup:modifyBinaryProjectOs');
+               /* remove all table rows */
+               while(fieldset.hasChildNodes())
+               {
+                       fieldset.removeChild(fieldset.firstChild);
+               }
+        
+               legend = document.createElement('legend');
+               legend.innerHTML = "Project os list";
+               fieldset.appendChild(legend);
+        
+               osList.each(function(){
+                       var osName = $(this).text();
+        
+                       var input = document.createElement('input');
+                       input.type = 'checkbox';
+                       input.id = 'popup:modifyBinaryProjectOs:'+osName;
+                       input.name = 'popup:modifyBinaryProjectOs'
+                       input.value = osName;
+                       input.setAttribute('class', 'popup:modifyBinaryProjectOs');
+                       if(contains(selectedOsList, osName))
+                       {
+                               input.setAttribute('checked', 'checked');
+                       }
+        
+                       var label = document.createElement('label');
+                       label.setAttribute('for', 'popup:modifyBinaryProjectOs:'+osName);
+                       label.innerHTML = osName;
+                       
+                       fieldset.appendChild(input);
+                       fieldset.appendChild(label);
+               });
+        
+               $('.popup\\:modifyBinaryProjectOs').checkboxradio();
+       });
 }
 
 function adminProjectModifyGitProjectInit() {
@@ -24,7 +71,7 @@ function adminProjectModifyGitProjectInit() {
                var selectedOsList = [];
                var projectName = localStorage.projectName;
        
-               var osListElement = document.getElementById('adminGitProjectTableOsList:'+projectName);
+               var osListElement = document.getElementById('adminGITProjectTableOsList:'+projectName);
                for(var i = 0; i < osListElement.childNodes.length; i++)
                {
                        selectedOsList.push(osListElement.childNodes[i].innerHTML);
@@ -76,13 +123,22 @@ function adminProjectModfyBinaryProject() {
        var projectType = document.getElementById('popup:modifyBinaryProjectType').value;
        var projectPassword = document.getElementById('popup:modifyBinaryProjectPassword').value;
        var packageName = document.getElementById('popup:modifyBinaryPackageName').value;
+       var selectArray = document.getElementsByName('popup:modifyBinaryProjectOs');
+       var selectOsList = [];
+
+       for(var i = 0; i < selectArray.length; i++) {
+               if (selectArray[i].checked == true) {
+                       var osName = selectArray[i].id.split(":")[2];
+                       selectOsList.push(osName);
+               }
+       }
 
        if(oldProjectName == "" || newProjectName == "" || projectPassword == "" || projectType == "" || packageName == ""){
                alert("You must input full data");
                return;
        }
                
-       changeInfoItem = {"Distribution":distName, "Name":oldProjectName, "NewProjectName":newProjectName, "ProjectType":projectType, "ProjectPass":projectPassword, "PackageName":packageName};
+       changeInfoItem = {"Distribution":distName, "Name":oldProjectName, "NewProjectName":newProjectName, "ProjectType":projectType, "ProjectPass":projectPassword, "PackageName":packageName, "OSNameList":selectOsList.toString()};
        changeInfoList.push(changeInfoItem);
 
        modifyProject(changeInfoList, function () {
@@ -101,25 +157,21 @@ function adminProjectModfyGitProject() {
        var projectAddress = document.getElementById('popup:modifyGitProjectAddress').value;
        var projectBranch = document.getElementById('popup:modifyGitProjectBranch').value;
        var selectArray = document.getElementsByName('popup:modifyGitProjectOs');
-       var selectOsList = "";
+       var selectOsList = [];
 
        for(var i = 0; i < selectArray.length; i++) {
                if (selectArray[i].checked == true) {
                        var osName = selectArray[i].id.split(":")[2];
-                       selectOsList = selectOsList + "," + osName;
+                       selectOsList.push(osName);
                }
        }
 
-       if(selectOsList.length > 0) {
-               selectOsList = selectOsList.substring(1,selectOsList.length);
-       }
-               
        if(oldProjectName == "" || newProjectName == "" || projectPassword == "" || projectType == "" || projectAddress == "" || projectBranch == ""){
                alert("You must input full data");
                return;
        }
                
-       changeInfoItem = {"Distribution":distName, "Name":oldProjectName, "NewProjectName":newProjectName, "ProjectType":projectType, "ProjectPass":projectPassword, "ProjectAddress":projectAddress, "ProjectBranch":projectBranch, "OSNameList":selectOsList};
+       changeInfoItem = {"Distribution":distName, "Name":oldProjectName, "NewProjectName":newProjectName, "ProjectType":projectType, "ProjectPass":projectPassword, "ProjectAddress":projectAddress, "ProjectBranch":projectBranch, "OSNameList":selectOsList.toString()};
        changeInfoList.push(changeInfoItem);
 
        modifyProject(changeInfoList, function () {
index b8705e12b40862f3d91339831d0975544931b8af..2c14b8aa6f3909bf95cf1d15b00b41c4bf3050ce 100644 (file)
@@ -87,7 +87,7 @@ function adminProjectUpdateTable(projectList) {
        $("#adminProjectTable").append(tableHeader);
 
        // Binary project table header
-       var tableHeader = "<tr><th>Project</th><th>Package name</th><th>Modify</th><th>Delete</th>";
+       var tableHeader = "<tr><th>Project</th><th>Package name</th><th>OS list</th><th>Modify</th><th>Delete</th>";
        $("#adminBinaryProjectTable").append(tableHeader);
 
        var projectIdx = 1;
@@ -96,10 +96,10 @@ function adminProjectUpdateTable(projectList) {
        projectList.each(function(){
                var name = $(this).find("ProjectName").text();
                var type = $(this).find("Type").text();
+               var osList = $(this).find("OS");
 
                if(type.toUpperCase() == "GIT")
                {
-                       var osList = $(this).find("OS");
                        var row = projectTable.insertRow(-1);
                        var cell;
 
@@ -119,7 +119,7 @@ function adminProjectUpdateTable(projectList) {
                        cell.innerHTML = $(this).find("GitBranch").text();
 
                        cell = row.insertCell(-1);
-                       div = adminProjectApendOsCell(osList, name);
+                       div = adminProjectApendOsCell(osList, name, "GIT");
                        cell.appendChild(div);
 
                        cell = row.insertCell(-1);
@@ -160,6 +160,10 @@ function adminProjectUpdateTable(projectList) {
                        cell.setAttribute('id',"modifyBinaryPackageName:"+name);
                        cell.innerHTML = $(this).find("PackageName").text();
 
+                       cell = row.insertCell(-1);
+                       div = adminProjectApendOsCell(osList, name, "BINARY");
+                       cell.appendChild(div);
+
                        cell = row.insertCell(-1);
                        var button = document.createElement('a');
                        button.setAttribute('href','#modifyBinaryProject');
@@ -191,8 +195,10 @@ function adminProjectUpdateTable(projectList) {
        $(".groupProjectList").collapsible();
 }
 
-function adminProjectApendOsCell(osList, projectName) {
+function adminProjectApendOsCell(osList, projectName, projectType) {
+
        var div = document.createElement('div');
+
        div.setAttribute('data-role', 'collapsible');
        div.setAttribute('data-mini', 'true');
        div.setAttribute('data-content-theme', 'b');
@@ -203,13 +209,16 @@ function adminProjectApendOsCell(osList, projectName) {
        div.appendChild(header);
 
        var ul = document.createElement('ul');
-       ul.setAttribute('id', 'adminGitProjectTableOsList:'+projectName);
-
-       osList.each(function(){
-               var item = document.createElement('li');
-               item.innerHTML = $(this).text();
-               ul.appendChild(item);
-       });
+       ul.setAttribute('id', 'admin'+projectType+'ProjectTableOsList:'+projectName);
+
+       // if osList does not exist then just return 
+       if (osList != undefined) {
+               osList.each(function(){
+                       var item = document.createElement('li');
+                       item.innerHTML = $(this).text();
+                       ul.appendChild(item);
+               });
+       }
 
        div.appendChild(ul);
        return div;
index 045101119110272519982834ecc802fa447763e5..2036678bf4d41b5275fa5c80ff09c57cdf1b88ce 100644 (file)
@@ -162,7 +162,7 @@ function queryAllProject(successFunction) {
 }
 
 function queryProjectsInDistributionForAdmin(distName, successFunction) {
-       var url = '/admin_project/queryProjectsInDistribution/' + distName;
+       var url = '/admin_project/queryProjectsInDistributionForAdmin/' + distName;
        getInfoFromServer(url, successFunction);
 }
 
index c16f7d81a691c9920907f0703b1fed2c35bbd07a..74b1ed43ecf81020710f599b7ac727e2c9bd9bc0 100644 (file)
@@ -52,7 +52,7 @@ function receiveData() {
        scrollToBottom();
 
        if(conti && stop) {
-               requestLog();
+               waitRequestLog();
        }
 }
 
@@ -65,6 +65,11 @@ function moreLog() {
        requestLog();
 }
 
+function waitRequestLog() {
+       sleep(3000);
+       requestLog();
+}
+
 function requestLog() {
        createHttpRequest();
        if(request) {
index 967687b686b647cb53449a85b24d6a2ff5002c95..65abe8c9a49ad208608b1e92f9beec64a7ce1373 100644 (file)
@@ -87,7 +87,10 @@ $( document ).bind( "pagechange", function( event, data ){
                        adminServerModifyRemoteBuildServerInit();
                        break;
                case "addGitProject":
-                       adminProjectAddInit();
+                       adminProjectAddGitInit();
+                       break;
+               case "addBinaryProject":
+                       adminProjectAddBinaryInit();
                        break;
                case "adminServerAddSupportedOs":
                        adminServerAddSupportedOsInit();
index 8326df8910f2221cb763897aefb5780403b1d35b..c5eee39bb9d0b9c58a86114e16a26d02932c9a91 100644 (file)
@@ -18,6 +18,49 @@ function projectsInit() {
        });
 }
 
+function projectsQueryProjectListType(queryType) {
+       var distName = $("#projects-select-distribution option:selected").val();
+
+       queryProjectsInfoInDistribution( distName, function(xml) {
+               var projectList = document.getElementById("projects-project-list");
+
+               /* remove all list */
+               while(projectList.hasChildNodes())
+               {
+                       projectList.removeChild(projectList.firstChild);
+               }
+
+               $(xml).find("Data").find("ProjectList").find("Project").each(function(){
+                       switch(queryType) {
+                               case "MY":
+                                       var groupAccess = $(this).find("GroupAccess").text();
+                                       if(groupAccess == "TRUE") {
+                                               projectsAppendProjectList($(this), projectList);
+                                       }
+                                       break;
+                               case "GIT":
+                                       var type = $(this).find("Type").text();
+                                       if(type == "GIT") {
+                                               projectsAppendProjectList($(this), projectList);
+                                       }
+                                       break;
+                               case "BINARY":
+                                       var type = $(this).find("Type").text();
+                                       if(type == "BINARY") {
+                                               projectsAppendProjectList($(this), projectList);
+                                       }
+                                       break;
+                               default:
+                                       ;
+                       }
+               });
+
+               $('.projects-project-list-collapsible').collapsible();
+               $('.projects-project-list-listview').listview();
+               
+       });
+}
+
 function projectsQueryProjectList() {
        var distName = $("#projects-select-distribution option:selected").val();