@@ -92,6 +92,8 module QueriesHelper | |||
|
92 | 92 | progress_bar(value, :width => '80px') |
|
93 | 93 | elsif column.name == :spent_hours |
|
94 | 94 | sprintf "%.2f", value |
|
95 | elsif column.name == :hours | |
|
96 | html_hours("%.2f" % value) | |
|
95 | 97 | else |
|
96 | 98 | h(value.to_s) |
|
97 | 99 | end |
@@ -106,7 +108,7 module QueriesHelper | |||
|
106 | 108 | when 'FalseClass' |
|
107 | 109 | l(:general_text_No) |
|
108 | 110 | when 'Issue' |
|
109 | link_to_issue(value, :subject => false) | |
|
111 | value.visible? ? link_to_issue(value) : "##{value.id}" | |
|
110 | 112 | when 'IssueRelation' |
|
111 | 113 | other = value.other_issue(issue) |
|
112 | 114 | content_tag('span', |
@@ -21,7 +21,7 class TimeEntryQuery < Query | |||
|
21 | 21 | |
|
22 | 22 | self.available_columns = [ |
|
23 | 23 | QueryColumn.new(:project, :sortable => "#{Project.table_name}.name", :groupable => true), |
|
24 | QueryColumn.new(:spent_on, :sortable => ["#{TimeEntry.table_name}.spent_on", "#{TimeEntry.table_name}.created_on"]), | |
|
24 | QueryColumn.new(:spent_on, :sortable => ["#{TimeEntry.table_name}.spent_on", "#{TimeEntry.table_name}.created_on"], :default_order => 'desc', :groupable => true), | |
|
25 | 25 | QueryColumn.new(:user, :sortable => lambda {User.fields_for_order_statement}, :groupable => true), |
|
26 | 26 | QueryColumn.new(:activity, :sortable => "#{TimeEntryActivity.table_name}.position", :groupable => true), |
|
27 | 27 | QueryColumn.new(:issue, :sortable => "#{Issue.table_name}.id"), |
@@ -96,6 +96,13 class TimeEntryQuery < Query | |||
|
96 | 96 | @available_filters |
|
97 | 97 | end |
|
98 | 98 | |
|
99 | def available_columns | |
|
100 | return @available_columns if @available_columns | |
|
101 | @available_columns = self.class.available_columns.dup | |
|
102 | @available_columns += TimeEntryCustomField.all.map {|cf| QueryCustomFieldColumn.new(cf) } | |
|
103 | @available_columns | |
|
104 | end | |
|
105 | ||
|
99 | 106 | def default_columns_names |
|
100 | 107 | @default_columns_names ||= [:project, :spent_on, :user, :activity, :issue, :comments, :hours] |
|
101 | 108 | end |
@@ -5,10 +5,21 | |||
|
5 | 5 | <%= render :partial => 'queries/filters', :locals => {:query => @query} %> |
|
6 | 6 | </div> |
|
7 | 7 | </fieldset> |
|
8 | <fieldset class="collapsible collapsed"> | |
|
9 | <legend onclick="toggleFieldset(this);"><%= l(:label_options) %></legend> | |
|
10 | <div style="display: none;"> | |
|
11 | <table> | |
|
12 | <tr> | |
|
13 | <td><%= l(:field_column_names) %></td> | |
|
14 | <td><%= render :partial => 'queries/columns', :locals => {:query => @query} %></td> | |
|
15 | </tr> | |
|
16 | </table> | |
|
17 | </div> | |
|
18 | </fieldset> | |
|
8 | 19 | </div> |
|
9 | 20 | |
|
10 | 21 | <p class="buttons hide-when-print"> |
|
11 |
<%= link_to_function l(:button_apply), ' |
|
|
22 | <%= link_to_function l(:button_apply), 'submit_query_form("query_form")', :class => 'icon icon-checked' %> | |
|
12 | 23 | <%= link_to l(:button_clear), {:project_id => @project, :issue_id => @issue}, :class => 'icon icon-reload' %> |
|
13 | 24 | </p> |
|
14 | 25 |
@@ -10,13 +10,9 | |||
|
10 | 10 | :onclick => 'toggleIssuesSelection(this); return false;', |
|
11 | 11 | :title => "#{l(:button_check_all)}/#{l(:button_uncheck_all)}" %> |
|
12 | 12 | </th> |
|
13 | <%= sort_header_tag('spent_on', :caption => l(:label_date), :default_order => 'desc') %> | |
|
14 | <%= sort_header_tag('user', :caption => l(:label_user)) %> | |
|
15 | <%= sort_header_tag('activity', :caption => l(:label_activity)) %> | |
|
16 | <%= sort_header_tag('project', :caption => l(:label_project)) %> | |
|
17 | <%= sort_header_tag('issue', :caption => l(:label_issue), :default_order => 'desc') %> | |
|
18 | <th><%= l(:field_comments) %></th> | |
|
19 | <%= sort_header_tag('hours', :caption => l(:field_hours)) %> | |
|
13 | <% @query.inline_columns.each do |column| %> | |
|
14 | <%= column_header(column) %> | |
|
15 | <% end %> | |
|
20 | 16 | <th></th> |
|
21 | 17 | </tr> |
|
22 | 18 | </thead> |
@@ -24,17 +20,7 | |||
|
24 | 20 | <% entries.each do |entry| -%> |
|
25 | 21 | <tr class="time-entry <%= cycle("odd", "even") %> hascontextmenu"> |
|
26 | 22 | <td class="checkbox hide-when-print"><%= check_box_tag("ids[]", entry.id, false, :id => nil) %></td> |
|
27 | <td class="spent_on"><%= format_date(entry.spent_on) %></td> | |
|
28 | <td class="user"><%= link_to_user(entry.user) %></td> | |
|
29 | <td class="activity"><%=h entry.activity %></td> | |
|
30 | <td class="project"><%= link_to_project(entry.project) %></td> | |
|
31 | <td class="subject"> | |
|
32 | <% if entry.issue -%> | |
|
33 | <%= entry.issue.visible? ? link_to_issue(entry.issue, :truncate => 50) : "##{entry.issue.id}" -%> | |
|
34 | <% end -%> | |
|
35 | </td> | |
|
36 | <td class="comments"><%=h entry.comments %></td> | |
|
37 | <td class="hours"><%= html_hours("%.2f" % entry.hours) %></td> | |
|
23 | <%= raw @query.inline_columns.map {|column| "<td class=\"#{column.css_classes}\">#{column_content(column, entry)}</td>"}.join %> | |
|
38 | 24 | <td align="center"> |
|
39 | 25 | <% if entry.editable_by?(User.current) -%> |
|
40 | 26 | <%= link_to image_tag('edit.png'), edit_time_entry_path(entry), |
@@ -211,7 +211,7 table.permissions td.role {color:#999;font-size:90%;font-weight:normal !importan | |||
|
211 | 211 | tr.wiki-page-version td.updated_on, tr.wiki-page-version td.author {text-align:center;} |
|
212 | 212 | |
|
213 | 213 | tr.time-entry { text-align: center; white-space: nowrap; } |
|
214 |
tr.time-entry td.su |
|
|
214 | tr.time-entry td.issue, tr.time-entry td.comments { text-align: left; white-space: normal; } | |
|
215 | 215 | td.hours { text-align: right; font-weight: bold; padding-right: 0.5em; } |
|
216 | 216 | td.hours .hours-dec { font-size: 0.9em; } |
|
217 | 217 |
General Comments 0
You need to be logged in to leave comments.
Login now