Merge pull request #644 from warpc/633-fix-ui-on-build-list-page
[refs #633] Fixed blocking auto publication in personal repository. Refactoring creating build list page.
This commit is contained in:
commit
c690a8446a
|
@ -1,109 +1,32 @@
|
||||||
$(document).ready(function() {
|
$(document).ready(function() {
|
||||||
// TODO: Refactor this handler!! It's too complicated.
|
// TODO: Refactor this handler!! It's too complicated.
|
||||||
$('#build_list_save_to_platform_id').change(function() {
|
$('#build_list_save_to_repository_id').change(function() {
|
||||||
var platform_id = $(this).val();
|
var selected_option = $(this).find("option:selected");
|
||||||
var base_platforms = $('.all_platforms input[type=checkbox].build_bpl_ids');
|
|
||||||
|
|
||||||
base_platforms.each(function(){
|
var platform_id = selected_option.attr('platform_id');
|
||||||
if ($.inArray(platform_id, base_platforms.map(function(){ return $(this).val(); }).get()) >= 0) {
|
var rep_name = selected_option.text().match(/[\w-]+\/([\w-]+)/)[1];
|
||||||
if ($(this).val() == platform_id) {
|
|
||||||
$(this).attr('checked', 'checked').removeAttr('disabled').trigger('change');
|
|
||||||
$(this).parent().find('.offset25 input[type="checkbox"]').removeAttr('disabled');
|
|
||||||
|
|
||||||
var rep_name = $('#build_list_save_to_platform_id option[value="' + $(this).val() + '"]').text().match(/[\w-]+\/([\w-]+)/)[1];
|
var build_platform = $('#build_for_pl_' + platform_id);
|
||||||
if (rep_name != 'main') {
|
var all_repositories = $('.all_platforms input');
|
||||||
$(this).parent().find('.offset25 input[type="checkbox"][rep_name="' + rep_name + '"]').attr('checked', 'checked');
|
all_repositories.removeAttr('checked');
|
||||||
}
|
if (build_platform.length == 0) {
|
||||||
$(this).parent().find('.offset25 input[type="checkbox"][rep_name="main"]').attr('checked', 'checked');
|
all_repositories.removeAttr('disabled');
|
||||||
} else {
|
} else {
|
||||||
$(this).removeAttr('checked').attr('disabled', 'disabled').trigger('change');
|
all_repositories.attr('disabled', 'disabled');
|
||||||
$(this).parent().find('.offset25 input[type="checkbox"]').attr('disabled', 'disabled').removeAttr('checked');
|
var parent = build_platform.parent();
|
||||||
}
|
parent.find('input').removeAttr('disabled');
|
||||||
} else {
|
parent.find('input[rep_name="main"]').attr('checked', 'checked');
|
||||||
$(this).removeAttr('disabled').removeAttr('checked').trigger('change');
|
if (rep_name != 'main') {
|
||||||
$(this).parent().find('.offset25 input[type="checkbox"]').removeAttr('disabled').removeAttr('checked');
|
parent.find('input[rep_name="' + rep_name + '"]').attr('checked', 'checked');
|
||||||
}
|
}
|
||||||
});
|
|
||||||
|
|
||||||
if ($.inArray(platform_id, base_platforms.map(function(){ return $(this).val(); }).get()) === -1) {
|
|
||||||
// For personal platforms update types always enebaled:
|
|
||||||
enableUpdateTypes();
|
|
||||||
}
|
}
|
||||||
|
var build_list_auto_publish = $('#build_list_auto_publish');
|
||||||
|
if (selected_option.attr('publish_without_qa') == '1') {
|
||||||
setBranchSelected();
|
build_list_auto_publish.removeAttr('disabled').attr('checked', 'checked');
|
||||||
checkAccessToAutomatedPublising();
|
} else {
|
||||||
});
|
build_list_auto_publish.removeAttr('checked').attr('disabled', 'disabled');
|
||||||
|
}
|
||||||
$('.all_platforms .offset25 input').change(function() {
|
|
||||||
checkAccessToAutomatedPublising();
|
|
||||||
});
|
|
||||||
|
|
||||||
$('#build_list_save_to_platform_id').trigger('change');
|
|
||||||
|
|
||||||
$('.offset25 label').click(function() {
|
|
||||||
setPlChecked($(this).prev()[0], !$(this).prev().attr('checked'));
|
|
||||||
});
|
|
||||||
$('.offset25 input[type="checkbox"]').click(function() {
|
|
||||||
setPlChecked(this, $(this).attr('checked'));
|
|
||||||
});
|
|
||||||
|
|
||||||
$('.build_bpl_ids').click(function() {
|
|
||||||
return false;
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
$('#build_list_save_to_repository_id').trigger('change');
|
||||||
});
|
});
|
||||||
|
|
||||||
function checkAccessToAutomatedPublising() {
|
|
||||||
if ($('.all_platforms .offset25 input:checked[publish_without_qa="1"]').length > 0) {
|
|
||||||
$('#build_list_auto_publish').removeAttr('disabled').attr('checked', 'checked');
|
|
||||||
//enableUpdateTypes();
|
|
||||||
} else {
|
|
||||||
$('#build_list_auto_publish').removeAttr('checked').attr('disabled', 'disabled');
|
|
||||||
//disableUpdateTypes();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function setPlChecked(pointer, checked) {
|
|
||||||
var pl_cbx = $(pointer).parent().parent().parent().find('input[type="checkbox"].build_bpl_ids');
|
|
||||||
var pl_id = pl_cbx.val();
|
|
||||||
if (checked && !$(pointer).attr('disabled')) {
|
|
||||||
pl_cbx.attr('checked', 'checked').trigger('change');
|
|
||||||
} else if ($('input[pl_id=' + pl_id + '][checked="checked"]').size() === 0) {
|
|
||||||
pl_cbx.removeAttr('checked').trigger('change');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function setBranchSelected() {
|
|
||||||
var pl_id = $('#build_list_save_to_platform_id').val();
|
|
||||||
// Checks if selected platform is main or not:
|
|
||||||
if ( $('.all_platforms').find('input[type="checkbox"][value=' + pl_id + '].build_bpl_ids').size() > 0 ) {
|
|
||||||
var pl_name = $('#build_list_save_to_platform_id option[value="' + pl_id + '"]').text().match(/([\w-.]+)\/[\w-.]+/)[1];
|
|
||||||
var branch_pl_opt = $('#build_list_project_version option[value="latest_' + pl_name + '"]');
|
|
||||||
// If there is branch we need - set it selected:
|
|
||||||
if ( branch_pl_opt.size() > 0 ) {
|
|
||||||
$('#build_list_project_version option[selected]').removeAttr('selected');
|
|
||||||
branch_pl_opt.attr('selected', 'selected');
|
|
||||||
var bl_version_sel = $('#build_list_project_version');
|
|
||||||
bl_version_sel.val(branch_pl_opt);
|
|
||||||
// hack for FF to force render of select box.
|
|
||||||
bl_version_sel[0].innerHTML = bl_version_sel[0].innerHTML;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function disableUpdateTypes() {
|
|
||||||
$("select#build_list_update_type option").each(function(i,el) {
|
|
||||||
if ( $.inArray($(el).attr("value"), ["security", "bugfix"]) == -1 ) {
|
|
||||||
$(el).attr("disabled", "disabled");
|
|
||||||
// If disabled option is selected - select 'bugfix':
|
|
||||||
if ( $(el).attr("selected") ) {
|
|
||||||
$( $('select#build_list_update_type option[value="bugfix"]') ).attr("selected", "selected");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function enableUpdateTypes() {
|
|
||||||
$("select#build_list_update_type option").removeAttr("disabled");
|
|
||||||
}
|
|
||||||
|
|
|
@ -1485,3 +1485,9 @@ div.log-wrapper {
|
||||||
table.tablesorter.platform-maintainers.static-search thead tr.search th input[type="text"] {
|
table.tablesorter.platform-maintainers.static-search thead tr.search th input[type="text"] {
|
||||||
width: 430px;
|
width: 430px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.all_platforms {
|
||||||
|
> .both { margin: 0 0 5px; }
|
||||||
|
.build_for_pl { font-weight: bold; }
|
||||||
|
.offset25 { padding-left: 10px }
|
||||||
|
}
|
||||||
|
|
|
@ -44,15 +44,18 @@ class Projects::BuildListsController < Projects::BaseController
|
||||||
def create
|
def create
|
||||||
notices, errors = [], []
|
notices, errors = [], []
|
||||||
|
|
||||||
@platform = Platform.includes(:repositories).find params[:build_list][:save_to_platform_id]
|
@repository = Repository.find params[:build_list][:save_to_repository_id]
|
||||||
|
@platform = @repository.platform
|
||||||
|
|
||||||
@repository = @project.repositories.where(:id => @platform.repository_ids).first
|
params[:build_list][:save_to_platform_id] = @platform.id
|
||||||
|
|
||||||
params[:build_list][:save_to_repository_id] = @repository.id
|
|
||||||
params[:build_list][:auto_publish] = false unless @repository.publish_without_qa?
|
params[:build_list][:auto_publish] = false unless @repository.publish_without_qa?
|
||||||
|
|
||||||
|
|
||||||
|
build_for_platforms = Repository.select(:platform_id).
|
||||||
|
where(:id => params[:build_list][:include_repos]).group(:platform_id).map(&:platform_id)
|
||||||
|
|
||||||
Arch.where(:id => params[:arches]).each do |arch|
|
Arch.where(:id => params[:arches]).each do |arch|
|
||||||
Platform.main.where(:id => params[:build_for_platforms]).each do |build_for_platform|
|
Platform.main.where(:id => build_for_platforms).each do |build_for_platform|
|
||||||
@build_list = @project.build_lists.build(params[:build_list])
|
@build_list = @project.build_lists.build(params[:build_list])
|
||||||
@build_list.commit_hash = @project.repo.commits(@build_list.project_version.match(/^latest_(.+)/).to_a.last ||
|
@build_list.commit_hash = @project.repo.commits(@build_list.project_version.match(/^latest_(.+)/).to_a.last ||
|
||||||
@build_list.project_version).first.id if @build_list.project_version
|
@build_list.project_version).first.id if @build_list.project_version
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
- platform.repositories.each do |repo|
|
- platform.repositories.each do |repo|
|
||||||
.both
|
.both
|
||||||
= check_box_tag "build_list[include_repos][]", repo.id, repo.name == 'main' || @project.repositories.map(&:id).include?(repo.id), :id => "include_repos_#{repo.id}", :save_to_platform_id => platform.id, :rep_name => repo.name, :publish_without_qa => repo.publish_without_qa? ? 1 : 0
|
= check_box_tag "build_list[include_repos][]", repo.id, repo.name == 'main' || @project.repositories.map(&:id).include?(repo.id), :id => "include_repos_#{repo.id}", :rep_name => repo.name
|
||||||
= label_tag "include_repos_#{repo.id}", repo.name
|
= label_tag "include_repos_#{repo.id}", repo.name
|
||||||
|
|
|
@ -6,12 +6,13 @@
|
||||||
- Platform.main.each do |pl|
|
- Platform.main.each do |pl|
|
||||||
- if pl.repository_ids.size > 0
|
- if pl.repository_ids.size > 0
|
||||||
.both
|
.both
|
||||||
= check_box_tag "build_for_platforms[]", pl.id, (params[:build_for_platforms]||[]).include?(pl.id.to_s), :class => 'build_bpl_ids', :id => "bpls_#{pl.id}"
|
=# check_box_tag "build_for_platforms[]", pl.id, (params[:build_for_platforms]||[]).include?(pl.id.to_s), :class => 'build_bpl_ids', :id => "bpls_#{pl.id}"
|
||||||
= label_tag "bpls_#{pl.id}", pl.name
|
=# label_tag "bpls_#{pl.id}", pl.name
|
||||||
.offset25{:style => 'padding-left: 25px'}= render 'include_repos', :platform => pl
|
%div{:id => "build_for_pl_#{pl.id}", :class => 'build_for_pl'}= pl.name
|
||||||
|
.offset25= render 'include_repos', :platform => pl
|
||||||
%section.right
|
%section.right
|
||||||
%h3= t("activerecord.attributes.build_list.save_to_platform")
|
%h3= t("activerecord.attributes.build_list.save_to_repository")
|
||||||
.lineForm= f.select :save_to_platform_id, @project.repositories.collect{|r| ["#{r.platform.name}/#{r.name}", r.platform.id]}
|
.lineForm= f.select :save_to_repository_id, @project.repositories.collect{|r| ["#{r.platform.name}/#{r.name}", r.id, {:publish_without_qa => r.publish_without_qa? ? 1 : 0, :platform_id => r.platform.id}]}
|
||||||
%h3= t("activerecord.attributes.build_list.project_version")
|
%h3= t("activerecord.attributes.build_list.project_version")
|
||||||
.lineForm= f.select :project_version, versions_for_group_select(@project), :selected => params[:build_list].try(:fetch, :project_version) || "latest_" + @project.default_branch
|
.lineForm= f.select :project_version, versions_for_group_select(@project), :selected => params[:build_list].try(:fetch, :project_version) || "latest_" + @project.default_branch
|
||||||
%h3= t("activerecord.attributes.build_list.arch")
|
%h3= t("activerecord.attributes.build_list.arch")
|
||||||
|
|
|
@ -18,8 +18,7 @@ en:
|
||||||
additional_repos: Additional repositories
|
additional_repos: Additional repositories
|
||||||
include_repos: Included repositories
|
include_repos: Included repositories
|
||||||
created_at: Created on
|
created_at: Created on
|
||||||
save_to_platform: Platform
|
save_to_repository: Save to repository
|
||||||
save_to_repository: Repository
|
|
||||||
build_for_platform: Build for platform
|
build_for_platform: Build for platform
|
||||||
update_type: Update type
|
update_type: Update type
|
||||||
build_requires: Build with all the required packages
|
build_requires: Build with all the required packages
|
||||||
|
|
|
@ -18,8 +18,7 @@ ru:
|
||||||
additional_repos: Дополнительные репозитории
|
additional_repos: Дополнительные репозитории
|
||||||
include_repos: Подключаемые репозитории
|
include_repos: Подключаемые репозитории
|
||||||
created_at: Создан
|
created_at: Создан
|
||||||
save_to_platform: Платформа
|
save_to_repository: Сохранить в репозиторий
|
||||||
save_to_repository: Репозиторий
|
|
||||||
build_for_platform: Собрано для платформы
|
build_for_platform: Собрано для платформы
|
||||||
update_type: Критичность обновления
|
update_type: Критичность обновления
|
||||||
build_requires: Пересборка с зависимостями
|
build_requires: Пересборка с зависимостями
|
||||||
|
|
Loading…
Reference in New Issue