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?
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])
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
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
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])
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!" }
return
end
+ # remove project os
+ ProjectOs.delete_all(["project_id = ?", project.id])
+
+ # remove project
project.destroy
+
render :json => { :success => "OK!" }
end
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])
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
class ApplicationController < ActionController::Base
#protect_from_forgery
+ JOBS_STAUTS_WAITING = "WAITING"
+
helper_method :current_user
def get_user_id
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)
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
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)
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
}
}
}
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
# 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(",")} "
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}]]]"
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
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)
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
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
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
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
# 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"
<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">
-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");
});
}
+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 = [];
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");
});
}
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");
});
}
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() {
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);
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 () {
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 () {
$("#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;
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;
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);
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');
$(".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');
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;
}
function queryProjectsInDistributionForAdmin(distName, successFunction) {
- var url = '/admin_project/queryProjectsInDistribution/' + distName;
+ var url = '/admin_project/queryProjectsInDistributionForAdmin/' + distName;
getInfoFromServer(url, successFunction);
}
scrollToBottom();
if(conti && stop) {
- requestLog();
+ waitRequestLog();
}
}
requestLog();
}
+function waitRequestLog() {
+ sleep(3000);
+ requestLog();
+}
+
function requestLog() {
createHttpRequest();
if(request) {
adminServerModifyRemoteBuildServerInit();
break;
case "addGitProject":
- adminProjectAddInit();
+ adminProjectAddGitInit();
+ break;
+ case "addBinaryProject":
+ adminProjectAddBinaryInit();
break;
case "adminServerAddSupportedOs":
adminServerAddSupportedOsInit();
});
}
+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();