From: dibs Date: Thu, 6 Dec 2012 03:18:15 +0000 (+0900) Subject: [title] add loading configuration about PORT, PATH X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=b07317a6ec040f48c8dd62a95373a2ab36ef8d16;p=sdk%2Ftools%2Fsdk-build.git [title] add loading configuration about PORT, PATH --- diff --git a/dibs-web/app/controllers/admin_project_controller.rb b/dibs-web/app/controllers/admin_project_controller.rb index 21fa703..372a346 100644 --- a/dibs-web/app/controllers/admin_project_controller.rb +++ b/dibs-web/app/controllers/admin_project_controller.rb @@ -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 diff --git a/dibs-web/app/controllers/application_controller.rb b/dibs-web/app/controllers/application_controller.rb index c3be257..bcebb23 100644 --- a/dibs-web/app/controllers/application_controller.rb +++ b/dibs-web/app/controllers/application_controller.rb @@ -1,6 +1,8 @@ class ApplicationController < ActionController::Base #protect_from_forgery + JOBS_STAUTS_WAITING = "WAITING" + helper_method :current_user def get_user_id diff --git a/dibs-web/app/controllers/jobs_controller.rb b/dibs-web/app/controllers/jobs_controller.rb index f1b4fe1..dd374fe 100644 --- a/dibs-web/app/controllers/jobs_controller.rb +++ b/dibs-web/app/controllers/jobs_controller.rb @@ -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) diff --git a/dibs-web/app/controllers/projects_controller.rb b/dibs-web/app/controllers/projects_controller.rb index 77728e7..b45071d 100644 --- a/dibs-web/app/controllers/projects_controller.rb +++ b/dibs-web/app/controllers/projects_controller.rb @@ -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 diff --git a/dibs-web/app/controllers/utils.rb b/dibs-web/app/controllers/utils.rb index 2742e9a..e768855 100644 --- a/dibs-web/app/controllers/utils.rb +++ b/dibs-web/app/controllers/utils.rb @@ -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 diff --git a/dibs-web/app/models/package.rb b/dibs-web/app/models/package.rb index 57c4437..7e6b44f 100644 --- a/dibs-web/app/models/package.rb +++ b/dibs-web/app/models/package.rb @@ -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 diff --git a/dibs-web/app/models/server_config.rb b/dibs-web/app/models/server_config.rb index 624f2aa..68f2df8 100644 --- a/dibs-web/app/models/server_config.rb +++ b/dibs-web/app/models/server_config.rb @@ -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 diff --git a/dibs-web/config/database.yml b/dibs-web/config/database.yml index 6e35958..bac51a2 100644 --- a/dibs-web/config/database.yml +++ b/dibs-web/config/database.yml @@ -35,12 +35,12 @@ 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 diff --git a/dibs-web/config/routes.rb b/dibs-web/config/routes.rb index f6d2ac6..273cacc 100644 --- a/dibs-web/config/routes.rb +++ b/dibs-web/config/routes.rb @@ -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" diff --git a/dibs-web/public/index.html b/dibs-web/public/index.html index 6298ca2..6dee6f1 100644 --- a/dibs-web/public/index.html +++ b/dibs-web/public/index.html @@ -54,8 +54,7 @@

Welcome to DIBS

@@ -138,6 +137,20 @@
+
+
+ + + + + + + + + +
+
+
@@ -654,6 +667,11 @@
+
+
+
+
+
@@ -686,6 +704,11 @@
+
+
+
+
+
diff --git a/dibs-web/public/javascripts/admin-project-add.js b/dibs-web/public/javascripts/admin-project-add.js index 7318cea..6cfbe48 100644 --- a/dibs-web/public/javascripts/admin-project-add.js +++ b/dibs-web/public/javascripts/admin-project-add.js @@ -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"); }); } diff --git a/dibs-web/public/javascripts/admin-project-modify.js b/dibs-web/public/javascripts/admin-project-modify.js index 3769bba..0fd80e2 100644 --- a/dibs-web/public/javascripts/admin-project-modify.js +++ b/dibs-web/public/javascripts/admin-project-modify.js @@ -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 () { diff --git a/dibs-web/public/javascripts/admin-project.js b/dibs-web/public/javascripts/admin-project.js index b8705e1..2c14b8a 100644 --- a/dibs-web/public/javascripts/admin-project.js +++ b/dibs-web/public/javascripts/admin-project.js @@ -87,7 +87,7 @@ function adminProjectUpdateTable(projectList) { $("#adminProjectTable").append(tableHeader); // Binary project table header - var tableHeader = "ProjectPackage nameModifyDelete"; + var tableHeader = "ProjectPackage nameOS listModifyDelete"; $("#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; diff --git a/dibs-web/public/javascripts/dibs-api.js b/dibs-web/public/javascripts/dibs-api.js index 0451011..2036678 100644 --- a/dibs-web/public/javascripts/dibs-api.js +++ b/dibs-web/public/javascripts/dibs-api.js @@ -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); } diff --git a/dibs-web/public/javascripts/log.js b/dibs-web/public/javascripts/log.js index c16f7d8..74b1ed4 100644 --- a/dibs-web/public/javascripts/log.js +++ b/dibs-web/public/javascripts/log.js @@ -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) { diff --git a/dibs-web/public/javascripts/main.js b/dibs-web/public/javascripts/main.js index 967687b..65abe8c 100644 --- a/dibs-web/public/javascripts/main.js +++ b/dibs-web/public/javascripts/main.js @@ -87,7 +87,10 @@ $( document ).bind( "pagechange", function( event, data ){ adminServerModifyRemoteBuildServerInit(); break; case "addGitProject": - adminProjectAddInit(); + adminProjectAddGitInit(); + break; + case "addBinaryProject": + adminProjectAddBinaryInit(); break; case "adminServerAddSupportedOs": adminServerAddSupportedOsInit(); diff --git a/dibs-web/public/javascripts/projects.js b/dibs-web/public/javascripts/projects.js index 8326df8..c5eee39 100644 --- a/dibs-web/public/javascripts/projects.js +++ b/dibs-web/public/javascripts/projects.js @@ -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();