#757: merge master into branch

This commit is contained in:
Vokhmin Alexey V 2013-02-22 02:17:20 +04:00
commit 3e9c28e238
19 changed files with 399 additions and 99 deletions

View File

@ -59,8 +59,42 @@ $(document).ready(function() {
if (dialog.is(':visible')) { dialog.dialog('close'); } else { dialog.dialog('open'); } if (dialog.is(':visible')) { dialog.dialog('close'); } else { dialog.dialog('open'); }
}); });
var ownership_btn = $('.btn.ownership');
ownership_btn.click(function() {
ownership_btn.removeClass('active');
$('#filter_ownership').val($(this).val());
$(this).addClass('active');
return false;
});
var perpage_btn = $('.btn.per_page');
perpage_btn.click(function() {
perpage_btn.removeClass('active');
$('#per_page').val($(this).val());
$(this).addClass('active');
return false;
});
$('a#updated_at_clear').click(function() {
$($(this).attr('href')).val('');
return false;
});
$('#filter_clear').click(function() {
$('#monitoring_filter .input_cleanse').val('');
$('.btn-group .btn').removeClass('active');
if(ownership_btn.length > 0) { ownership_btn[0].click(); }
perpage_btn[0].click();
return false;
});
$('.mediumheight.min').datepicker({
dateFormat: 'dd/mm/yy',
showButtonPanel: true
});
}); });
function updateExtraReposAndContainers() { function updateExtraReposAndContainers() {
$.get("/build_lists/update_extra_repos_and_containers", $('#new_build_list').serialize()) $.get("/build_lists/update_extra_repos_and_containers", $('#new_build_list').serialize())
.done(function(data) { .done(function(data) {

View File

@ -3,3 +3,4 @@
@import "design/git"; @import "design/git";
@import "design/common"; @import "design/common";
@import "design/custom"; @import "design/custom";
@import "design/build_lists_monitoring";

View File

@ -0,0 +1,164 @@
article .all .top {
background: #e9f4fb;
border: 1px solid #dfeefa;
-moz-border-radius: 5px;
-webkit-border-radius: 5px;
border-radius: 5px;
// width: 760px;
color: 477cae;
padding: 8px;
}
article .all .top .column {
width: 190px;
margin: 5px 10px;
float:left;
}
div.reloader {
float: none;
}
.floatright, article input.floatright {
float: right;
margin-right: 8px;
}
.floatleft {
float: left;
}
h3.medium {
font-size: 13px;
margin: 5px 0px;
padding: 3px 0px;
}
.switch {
font-size: 11px;
float: center;
text-align: center;
color: #125687;
font-weight: bold;
//margin: -7px 0;
margin-bottom: -7px;
}
.top .switch a {
text-decoration: none;
}
.btn-group {
width: 180px;
}
.btn-group .btn {
width: 40%;
height: 26px;
padding: 2px 0px;
}
.btn-group > .btn:first-child,
.btn-group > .btn:last-child {
width: 30%;
}
.sel80.medium {
display: inline-block;
width: 180px;
margin-bottom: 0px;
height: 26px;
line-height: 26px;
padding: 4px 2px;
// margin-bottom: 5px;
color: #555;
vertical-align: middle;
-webkit-border-radius: 4px;
-moz-border-radius: 4px;
border-radius: 4px;
background-color: white;
border: 1px solid #CCC;
}
input.mediumheight {
height: 20px;
margin-bottom: 0px;
width: 180px;
margin-right: -19px;
}
input.mediumheight.min {
width: 85px;
font-size: 12px;
}
article .all .top form .butgrp {
margin-top: 20px;
float: right;
margin-right: 17px;
}
article .all .top form .butgrp input[type="submit"] {
width: 100px;
padding: 3px 5px 5px;
float: right;
margin-left: 10px;
}
.ui-datepicker, .ui-widget, .ui-widget-content, .ui-helper-clearfix, .ui-corner-all {
font-size: 75%;
z-index: 99!important;
}
article label {
font-size: 12px;
}
article .all .top form .floatleft a img,
article .all .top form .floatright a img {
vertical-align: middle;
}
/* bootstrap 3149*/
.btn {
display: inline-block;
padding: 4px 12px;
margin-bottom: 0;
line-height: 20px;
color: #333333;
text-align: center;
text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
vertical-align: middle;
cursor: pointer;
background-color: #f5f5f5;
background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6);
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6));
background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6);
background-image: -o-linear-gradient(top, #ffffff, #e6e6e6);
background-image: linear-gradient(to bottom, #ffffff, #e6e6e6);
background-repeat: repeat-x;
border: 1px solid #bbbbbb;
border-color: #e6e6e6 #e6e6e6 #bfbfbf;
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
border-bottom-color: #a2a2a2;
-webkit-border-radius: 4px;
-moz-border-radius: 4px;
border-radius: 4px;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0);
filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
-webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
-moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
}
/* bootstrap 3190*/
.btn:hover, .btn:active, .btn.active, .btn.disabled, .btn[disabled] {
color: #333333;
background-color: #e6e6e6;
}
/* bootstrap 3222*/
.btn.active, .btn:active {
background-image: none;
outline: 0;
-webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
-moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
}

View File

@ -1767,27 +1767,60 @@ table#myTable thead tr.search th form.button_to div input {
border: 1px solid #DDDDDD; border: 1px solid #DDDDDD;
} }
#extra-repos-and-containers {
/* width: 330px;
table.tablesorter { .actions { width: 15px; }
th.lpadding6 {
padding-left: 6px;
}
td a {
font-size: 10px;
}
} }
div.right.slim { .semi {
padding-right: 5px; opacity: 0.5;
width: 705px; }
table.tablesorter { #filter_new_build {
font-size: 10px; display: inline-block;
} white-space: nowrap;
background-color: #125687;
background-image: -webkit-gradient(linear, left top, left bottom, from(#68a3d8), to(#125687));
background-image: -webkit-linear-gradient(top, #68a3d8, #125687);
background-image: -moz-linear-gradient(top, #68a3d8, #125687);
background-image: -ms-linear-gradient(top, #68a3d8, #125687);
background-image: -o-linear-gradient(top, #68a3d8, #125687);
background-image: linear-gradient(top, #68a3d8, #125687);
filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#68a3d8', EndColorStr='#125687');
border: 1px solid #5084b4;
padding: 3px 20px 5px;
margin: 0;
font-size: 12px;
text-decoration: none;
color: #FFF;
-moz-border-radius: 5px;
-webkit-border-radius: 5px;
border-radius: 5px;
text-align: center;
height: auto;
width: auto;
font-family: Tahoma;
}
#filter_new_build:hover{
background-color: #34719d;
background-image: -webkit-gradient(linear, left top, left bottom, from(#7fb3e1), to(#34719d));
background-image: -webkit-linear-gradient(top, #7fb3e1, #34719d);
background-image: -moz-linear-gradient(top, #7fb3e1, #34719d);
background-image: -ms-linear-gradient(top, #7fb3e1, #34719d);
background-image: -o-linear-gradient(top, #7fb3e1, #34719d);
background-image: linear-gradient(top, #7fb3e1, #34719d);
filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#7fb3e1', EndColorStr='#34719d');
text-decoration: none;
cursor: pointer;
}
#filter_new_build {
width: 100px;
padding: 3px 5px 5px;
float: right;
margin-left: 10px;
} }
*/
#extra-repos-and-containers { #extra-repos-and-containers {
width: 330px; width: 330px;

View File

@ -16,6 +16,7 @@ class Projects::BuildListsController < Projects::BaseController
params[:filter].each do |k,v| params[:filter].each do |k,v|
new_params[:filter][k] = v unless v.empty? new_params[:filter][k] = v unless v.empty?
end end
new_params[:per_page] = params[:per_page] if params[:per_page].present?
redirect_to @project ? project_build_lists_path(@project, new_params) : build_lists_path(new_params) redirect_to @project ? project_build_lists_path(@project, new_params) : build_lists_path(new_params)
end end
@ -24,7 +25,8 @@ class Projects::BuildListsController < Projects::BaseController
@filter = BuildList::Filter.new(@project, current_user, params[:filter] || {}) @filter = BuildList::Filter.new(@project, current_user, params[:filter] || {})
page = params[:page].to_i == 0 ? nil : params[:page] page = params[:page].to_i == 0 ? nil : params[:page]
@bls = @filter.find.recent.paginate :page => page @per_page = BuildList::Filter::PER_PAGE.include?(params[:per_page].to_i) ? params[:per_page].to_i : 25
@bls = @filter.find.recent.paginate :page => page, :per_page => @per_page
@build_lists = BuildList.where(:id => @bls.pluck("#{BuildList.table_name}.id")).recent @build_lists = BuildList.where(:id => @bls.pluck("#{BuildList.table_name}.id")).recent
@build_lists = @build_lists.includes [:save_to_platform, :save_to_repository, :arch, :user, :project => [:owner]] @build_lists = @build_lists.includes [:save_to_platform, :save_to_repository, :arch, :user, :project => [:owner]]

View File

@ -10,7 +10,7 @@ class Projects::Git::BaseController < Projects::BaseController
protected protected
def set_treeish_and_path def set_treeish_and_path
@treeish, @path = @project.default_head(params[:treeish]), params[:path] @treeish, @path = params[:treeish].presence || @project.default_head, params[:path]
end end
def set_branch_and_tree def set_branch_and_tree

View File

@ -4,9 +4,10 @@ class Projects::Git::TreesController < Projects::Git::BaseController
skip_before_filter :set_branch_and_tree, :set_treeish_and_path, :only => :archive skip_before_filter :set_branch_and_tree, :set_treeish_and_path, :only => :archive
def show def show
render('empty') and return unless @project.repo.commit nil
@tree = @tree / @path if @path.present? @tree = @tree / @path if @path.present?
@commit = @branch.present? ? @branch.commit() : @project.repo.log(@treeish, @path, :max_count => 1).first @commit = @branch.present? ? @branch.commit() : @project.repo.log(@treeish, @path, :max_count => 1).first
render 'empty' unless @commit raise Grit::NoSuchPathError unless @commit
end end
def archive def archive
@ -32,7 +33,8 @@ class Projects::Git::TreesController < Projects::Git::BaseController
end end
def branches def branches
@branches = @project.repo.branches.sort_by(&:name).select{ |b| b.name != @branch.name }.unshift(@branch) raise Grit::NoSuchPathError if !@branch && @project.repo.commit(nil)
@branches = @project.repo.branches.sort_by(&:name).select{ |b| b.name != @branch.name }.unshift(@branch).compact
render 'refs' render 'refs'
end end

View File

@ -4,8 +4,6 @@ module ApplicationHelper
case case
when controller_name == 'issues' && action_name == 'new' when controller_name == 'issues' && action_name == 'new'
'right nopadding' 'right nopadding'
when controller_name == 'build_lists' && action_name == 'index'
'right slim'
when controller_name == 'build_lists' && ['new', 'create'].include?(action_name) when controller_name == 'build_lists' && ['new', 'create'].include?(action_name)
nil nil
when controller_name == 'platforms' && ['build_all', 'mass_builds'].include?(action_name) when controller_name == 'platforms' && ['build_all', 'mass_builds'].include?(action_name)

View File

@ -1,5 +1,7 @@
# -*- encoding : utf-8 -*- # -*- encoding : utf-8 -*-
class BuildList::Filter class BuildList::Filter
PER_PAGE = [25, 50, 100]
def initialize(project, user, options = {}) def initialize(project, user, options = {})
@project = project @project = project
@user = user @user = user
@ -70,14 +72,10 @@ class BuildList::Filter
end end
def build_date_from_params(field_name, params) def build_date_from_params(field_name, params)
if params[field_name].present? return nil if params[field_name].blank?
Time.at(params[field_name].to_i) params[field_name].strip!
elsif params["#{field_name}(1i)"].present? || params["#{field_name}(2i)"].present? || params["#{field_name}(3i)"].present? return Date.parse(params[field_name]) if params[field_name] =~ /\A\d{2}\/\d{2}\/\d{4}\z/
Date.civil((params["#{field_name}(1i)"].presence || Date.today.year).to_i, return Time.at(params[field_name].to_i) if params[field_name] =~ /\A\d+\z/
(params["#{field_name}(2i)"].presence || Date.today.month).to_i, nil
(params["#{field_name}(3i)"].presence || Date.today.day).to_i)
else
nil
end
end end
end end

View File

@ -1,4 +1,4 @@
- act = action_name.to_sym; contr = controller_name.to_sym; treeish = project.default_head(params[:treeish]) - act = action_name.to_sym; contr = controller_name.to_sym; treeish = project.default_head(params[:treeish]); branch = @branch.try(:name) || project.default_head
#description-top #description-top
-if @commit -if @commit
%ul.nav.zip %ul.nav.zip
@ -34,7 +34,7 @@
%li{:class => ('selected' if act == :index && contr == :commits )} %li{:class => ('selected' if act == :index && contr == :commits )}
= link_to t('project_menu.commits'), commits_path(project, treeish) = link_to t('project_menu.commits'), commits_path(project, treeish)
%li{:class => ('selected' if act == :branches && contr == :trees )} %li{:class => ('selected' if act == :branches && contr == :trees )}
= link_to t('project_menu.branches', :count => project.repo.branches.count), branches_path(project, treeish) = link_to t('project_menu.branches', :count => project.repo.branches.count), branches_path(project, branch)
%li.tags{:class => ('selected' if act == :tags && contr == :trees )} %li.tags{:class => ('selected' if act == :tags && contr == :trees )}
= link_to t('project_menu.tags', :count => project.repo.tags.count), tags_path(project) = link_to t('project_menu.tags', :count => project.repo.tags.count), tags_path(project)
.both .both

View File

@ -20,3 +20,4 @@
%td= link_to "#{build_list.save_to_platform.name}/#{build_list.save_to_repository.name}#{build_for}", [build_list.save_to_platform, build_list.save_to_repository] %td= link_to "#{build_list.save_to_platform.name}/#{build_list.save_to_repository.name}#{build_for}", [build_list.save_to_platform, build_list.save_to_repository]
%td= build_list.arch.try(:name) || t("layout.arches.unexisted_arch") %td= build_list.arch.try(:name) || t("layout.arches.unexisted_arch")
%td= link_to build_list.user.try(:fullname), build_list.user %td= link_to build_list.user.try(:fullname), build_list.user
%td= build_list.updated_at.strftime('%d/%m/%Y')

View File

@ -1,49 +1,107 @@
- content_for :sidebar do -html_options = {:class => 'sel80 medium input_cleanse', :tabindex => 2}
= render 'server_status' .top
.filter
= form_for :filter, :url => @action_url, :html => { :method => :post, :class => :form, :id => 'monitoring_filter' } do |f|
.column
= render 'server_status'
= hidden_field_tag :servertime, Time.now.utc.to_i
.reloader
= label_tag :autoreload do
= check_box_tag :autoreload, true, true
= t 'layout.autoreload_page'
.column
- if current_user
.bordered.nopadding
%h3.medium= t("layout.build_lists.ownership.header")
=f.hidden_field :ownership
.btn-group
- ownerships = %w[owned everything]
- ownerships << 'related' unless @project
- ownerships.each do |ownership|
-options = {:class => @filter.ownership == ownership ? 'active' : '', :value => ownership, :style => (@project ? 'width:50%;' : '')}
%button.btn.ownership{options}= t "layout.build_lists.ownership.#{ownership}"
%h3.medium= t 'number_rows'
=hidden_field_tag :per_page, @per_page
.btn-group
-BuildList::Filter::PER_PAGE.each do |num|
%button.btn.per_page{:value => num, :class => @per_page == num ? 'active' : ''}=num
%h3.medium= t 'activerecord.attributes.build_list.status'
.lineForm.aside
= f.select :status, BuildList::STATUSES.collect{|status| [BuildList.human_status(status), status]}, {:include_blank => true, :selected => @filter.status},
html_options.merge(:id => 'status')
.both
%br/
.column
%h3.medium= t 'activerecord.models.platform'
.lineForm.aside
= f.select :platform_id, Platform.main.collect{|pl| [pl.name, pl.id]}, {:include_blank => true, :selected => @filter.platform_id}, html_options.merge(:id => 'platform')
%h3.medium= t 'activerecord.attributes.build_list.arch'
.lineForm.aside
= f.select :arch_id, Arch.recent.collect{|arch| [arch.name, arch.id]}, {:include_blank => true, :selected => @filter.arch_id}, html_options.merge(:id => 'architecture')
%h3.medium= t 'activerecord.models.mass_build'
.lineForm.aside
= f.select :mass_build_id, options_from_collection_for_select( MassBuild.all, :id, :name, @filter.mass_build_id ), {:include_blank => true, :selected => @filter.mass_build_id},
html_options.merge(:id => 'mass_build')
= form_for :filter, :url => @action_url, :html => { :method => :post, :class => :form } do |f| .column
- if current_user -[:updated_at_start, :updated_at_end].each do |attr|
.bordered.nopadding -class_name, message = attr == :updated_at_start ? %w[floatleft _on] : %w[floatright until]
%h3= t("layout.build_lists.ownership.header") %div{:class => class_name}
.table %h3.medium= t message
.lefter= f.radio_button :ownership, 'owned', :class => 'niceRadio', :id => 'myradio1' -date = @filter.send(attr) ? @filter.send(attr).strftime('%d/%m/%Y') : nil
.lefter= t("layout.build_lists.ownership.owned") =f.text_field attr, :readonly => "readonly", :size => 10, :class => 'mediumheight min input_cleanse', :value => date
=link_to image_tag('x.png', :alt => 'x', :class => 'semi'), "#filter_#{attr}", :id => 'updated_at_clear'
.both .both
- unless @project -%w[project_name bs_id].each do |filter|
.table %h3.medium= t "layout.build_lists.#{filter}_search"
.lefter= f.radio_button :ownership, 'related', :class => 'niceRadio', :id => 'myradio2' %input.mediumheight.input_cleanse{:id => "filter_#{filter}", :name => "filter[#{filter}]", :size => "30", :type => "text"}/
.lefter= t("layout.build_lists.ownership.related") %br/
.both %br/
.table .butgrp
.lefter= f.radio_button :ownership, 'everything', :class => 'niceRadio', :id => 'myradio3' = f.submit t('layout.search.header')
.lefter= t("layout.build_lists.ownership.everything") = f.submit t('reset'), :id => 'filter_clear'
.both -if @project and can?(:create, @project.build_lists.build)
%br %input{:id => 'filter_new_build', :type => 'button', :onclick => "location.href='#{new_project_build_list_path(@project)}'", :value => t('layout.build_lists.new_header')}
= f.submit t("layout.search.header") .both
.block .both
%h3.small= t("activerecord.attributes.build_list.new_core") .switch
.lineForm.aside= f.select :new_core, build_list_options_for_new_core, {:include_blank => true, :selected => @filter.new_core}, {:class => 'sel80 aside', :id => 'new_core', :tabindex => 2} %a{:href => "#"}= t 'layout.build_lists.hide_filter'
%h3.small= t("activerecord.attributes.build_list.status") :javascript
.lineForm.aside= f.select :status, BuildList::STATUSES.collect{|status| [BuildList.human_status(status), status]}, {:include_blank => true, :selected => @filter.status}, {:class => 'sel80 aside', :id => 'status', :tabindex => 2} var MONITORING_FILTER_HIDE = "monitoring_filter_hide";
%h3.small= t("activerecord.models.platform") $(".switch").toggle(
.lineForm.aside= f.select :platform_id, Platform.main.collect{|pl| [pl.name, pl.id]}, {:include_blank => true, :selected => @filter.platform_id}, {:class => 'sel80 aside', :id => 'platform', :tabindex => 2} function () {
%h3.small= t("activerecord.attributes.build_list.mass_build") var d = new Date();
.lineForm.aside= f.select :mass_build_id, options_from_collection_for_select( MassBuild.all, :id, :name, @filter.mass_build_id ), {:include_blank => true} d.setMonth(d.getMonth() + 1);
%h3.small= t("activerecord.attributes.build_list.arch") $(".filter").hide("slow");
.lineForm.aside= f.select :arch_id, Arch.recent.collect{|arch| [arch.name, arch.id]}, {:include_blank => true, :selected => @filter.arch_id}, {:class => 'sel80 aside', :id => 'architecture', :tabindex => 2} $(".switch a").text("#{t 'layout.build_lists.show_filter'}");
-# TODO [BuildList#created_at filters] Uncomment here and in BuildList::Filter to return filters setCookie(MONITORING_FILTER_HIDE, 'true', d);
%h3.small= t("layout.build_lists.created_at_start") },
.date_select= f.date_select(:created_at_start, :include_blank => true, :selected => @filter.created_at_start) function () {
%h3.small= t("layout.build_lists.created_at_end") $(".filter").show("slow");
.date_select= f.date_select(:created_at_end, :include_blank => true, :selected => @filter.created_at_end) $(".switch a").text("#{t 'layout.build_lists.hide_filter'}");
%h3.small= t("layout.build_lists.updated_at_start") var d = new Date();
.date_select= f.date_select(:updated_at_start, :include_blank => true, :selected => @filter.updated_at_start) d.setMonth(d.getMonth() + 1);
%h3.small= t("layout.build_lists.updated_at_end") setCookie(MONITORING_FILTER_HIDE, 'false', d);
.date_select= f.date_select(:updated_at_end, :include_blank => true, :selected => @filter.updated_at_end) }
%h3.small= t("layout.build_lists.project_name_search") );
= f.text_field :project_name #{cookies[:monitoring_filter_hide] == 'true' ? "$('.switch').click();" : ''}
%h3.small= t("layout.build_lists.bs_id_search") #{if I18n.locale == :ru
= f.text_field :bs_id "$.datepicker.regional['ru'] = {
%br closeText: 'Закрыть',
%br prevText: '<Пред',
= f.submit t("layout.search.header") nextText: 'След>',
currentText: 'Сейчас',
monthNames: ['Январь','Февраль','Март','Апрель','Май','Июнь',
'Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь'],
dayNames: ['Воскресенье','Понедельник','Вторник','Среда','Четверг','Пятница','Суббота'],
dayNamesMin: ['Вс','Пн','Вт','Ср','Чт','Пт','Сб'],
weekHeader: 'Не',
dateFormat: 'dd/mm/yy',
firstDay: 1,
isRTL: false,
showMonthAfterYear: false,
yearSuffix: ''
};
$.datepicker.setDefaults($.datepicker.regional['ru']);"
end
}

View File

@ -1,7 +1,6 @@
- queues ||= [:rpm, :publish] - queues ||= [:rpm, :publish]
.bordered.nopadding .bordered.nopadding
%h3= t('layout.build_lists.build_server_status.header') %h3.medium= t('layout.build_lists.build_server_status.header')
- queues.each do |queue| - queues.each do |queue|
.table .table
.lefter= t("layout.build_lists.build_server_status.#{queue}_workers") .lefter= t("layout.build_lists.build_server_status.#{queue}_workers")
@ -12,4 +11,3 @@
.righter= @build_server_status[queue][metric] .righter= @build_server_status[queue][metric]
.both .both
%br %br
= link_to t('layout.build_lists.new_header'), new_project_build_list_path(@project), :class => 'button' if @project and can?(:create, @project.build_lists.build)

View File

@ -1,11 +1,6 @@
-set_meta_tags :title => t('.title') -set_meta_tags :title => t('.title')
= hidden_field_tag :servertime, Time.now.utc.to_i = render 'filter'
%div.reloader
= label_tag :autoreload do
= check_box_tag :autoreload, true, true
= t("layout.autoreload_page")
.both
%table.tablesorter{:cellpadding => "0", :cellspacing => "0"} %table.tablesorter{:cellpadding => "0", :cellspacing => "0"}
%thead %thead
@ -18,6 +13,7 @@
%th.lpadding16= t("activerecord.attributes.build_list.save_to_repository") %th.lpadding16= t("activerecord.attributes.build_list.save_to_repository")
%th.lpadding6= t("activerecord.attributes.build_list.arch_short") %th.lpadding6= t("activerecord.attributes.build_list.arch_short")
%th.lpadding16= t("activerecord.attributes.build_list.user") %th.lpadding16= t("activerecord.attributes.build_list.user")
%th.lpadding6= t("activerecord.attributes.build_list.updated_at")
%tbody= render :partial => 'projects/build_lists/build_list', :collection => @build_lists %tbody= render :partial => 'projects/build_lists/build_list', :collection => @build_lists
.both .both
@ -74,5 +70,4 @@
= will_paginate @bls = will_paginate @bls
= render 'filter'
= render @project ? 'projects/base/submenu' : 'projects/build_lists/submenu' = render @project ? 'projects/base/submenu' : 'projects/build_lists/submenu'

View File

@ -20,6 +20,7 @@ en:
user_list: User list user_list: User list
edit: Edit edit: Edit
show: View show: View
hide: Hide
cancel: Cancel cancel: Cancel
create: Create create: Create
update: Update update: Update
@ -203,3 +204,7 @@ en:
from: from from: from
by: by by: by
diff: Diff diff: Diff
number_rows: Number rows
reset: Reset
_on: 'On'
until: Until

View File

@ -154,6 +154,9 @@ en:
600000: "10 m" 600000: "10 m"
900000: "15 m" 900000: "15 m"
show_filter: Show filters
hide_filter: Hide filters
flash: flash:
build_list: build_list:
saved: Build list for project version '%{project_version}', platform '%{build_for_platform}' and architecture '%{arch}' has been created successfully saved: Build list for project version '%{project_version}', platform '%{build_for_platform}' and architecture '%{arch}' has been created successfully

View File

@ -97,8 +97,8 @@ ru:
ownership: ownership:
header: Принадлежность заданий header: Принадлежность заданий
owned: Мне owned: Мои
related: Связанные со мной related: Связанные
everything: Все everything: Все
build_server_status: build_server_status:
@ -153,6 +153,9 @@ ru:
600000: "10 мин" 600000: "10 мин"
900000: "15 мин" 900000: "15 мин"
show_filter: Показать фильтры
hide_filter: Скрыть фильтры
flash: flash:
build_list: build_list:
saved: Билд лист для версии '%{project_version}', платформы '%{build_for_platform}' и архитектуры '%{arch}' создан успешно saved: Билд лист для версии '%{project_version}', платформы '%{build_for_platform}' и архитектуры '%{arch}' создан успешно

View File

@ -20,6 +20,7 @@ ru:
user_list: Список пользователей user_list: Список пользователей
edit: Редактировать edit: Редактировать
show: Просмотр show: Просмотр
hide: Скрыть
cancel: Отмена cancel: Отмена
create: Создать create: Создать
update: Обновить update: Обновить
@ -204,3 +205,7 @@ ru:
from: из from: из
by: от by: от
diff: Изменения diff: Изменения
number_rows: Количество строк
reset: Сброс
_on: с
until: по