Commit 37eeeb9fca90aa34c502181b9967fb62f9f87752

Authored by Dmitriy Zaporozhets
1 parent 39f46046

Redesign issues, mr lists

app/assets/stylesheets/common.scss
... ... @@ -279,7 +279,7 @@ li.note {
279 279 cursor: pointer;
280 280 }
281 281  
282   -.merge_request,
  282 +.merge-request,
283 283 .issue {
284 284 &.today{
285 285 background: #EFE;
... ...
app/assets/stylesheets/sections/dashboard.scss 0 → 100644
... ... @@ -0,0 +1,48 @@
  1 +.dashboard {
  2 + @extend .row;
  3 + .activities {
  4 + }
  5 +
  6 + .side {
  7 + @extend .pull-right;
  8 +
  9 + .ui-box {
  10 + margin: 3px;
  11 + > .title {
  12 + padding: 2px 15px;
  13 + }
  14 + .nav-projects-tabs li { padding: 0; }
  15 + .well-list {
  16 + li { padding: 15px; }
  17 + .arrow {
  18 + float: right;
  19 + padding: 10px;
  20 + margin: 0;
  21 + }
  22 + .last_activity {
  23 + padding-top: 5px;
  24 + display: block;
  25 + span, strong {
  26 + font-size: 12px;
  27 + color: #666;
  28 + }
  29 + }
  30 + }
  31 + @extend .ui-box;
  32 + }
  33 + }
  34 +}
  35 +
  36 +.dashboard-search-filter {
  37 + padding:5px;
  38 +
  39 + .search-text-input {
  40 + float:left;
  41 + @extend .span2;
  42 + }
  43 + .btn {
  44 + margin-left: 5px;
  45 + float:left;
  46 + }
  47 +}
  48 +
... ...
app/assets/stylesheets/sections/issues.scss
1   -.issues_table {
  1 +.issues-list {
2 2 .issue {
3 3 padding: 10px;
  4 + position: relative;
4 5  
5   - .issue_check {
  6 + .issue-title {
  7 + margin-bottom: 5px;
  8 + font-size: 14px;
  9 + }
  10 +
  11 + .issue-info {
  12 + color: #999;
  13 + }
  14 +
  15 + .issue-check {
6 16 float: left;
7 17 padding: 8px 0;
8 18 padding-right: 8px;
9 19 min-width: 15px;
10 20 }
11 21  
12   - p {
13   - padding-top: 0;
14   - padding-bottom: 2px;
  22 + .issue-labels {
  23 + display: inline-block;
  24 + }
  25 +
  26 + .issue-actions {
  27 + display: none;
  28 + position: absolute;
  29 + top: 10px;
  30 + right: 2px;
15 31 }
16 32  
17   - img.avatar {
18   - width: 32px;
19   - margin-top: 1px;
  33 + &:hover {
  34 + .issue-actions {
  35 + display: block;
  36 + }
20 37 }
21 38 }
22 39 }
... ...
app/assets/stylesheets/sections/merge_requests.scss
... ... @@ -53,18 +53,6 @@
53 53 }
54 54 }
55 55  
56   -li.merge_request {
57   - padding: 10px;
58   - img.avatar {
59   - width: 32px;
60   - margin-top: 1px;
61   - }
62   - p {
63   - padding: 0px;
64   - padding-bottom: 2px;
65   - }
66   -}
67   -
68 56 .merge-in-progress {
69 57 @extend .padded;
70 58 @extend .append-bottom-10;
... ... @@ -97,3 +85,31 @@ li.merge_request {
97 85 .mr_direction_tip {
98 86 margin-top:40px
99 87 }
  88 +
  89 +.label-branch {
  90 + @include border-radius(4px);
  91 + padding: 2px 4px;
  92 + border: none;
  93 + font-size: 14px;
  94 + background: #474D57;
  95 + color: #fff;
  96 + font-family: $monospace_font;
  97 + text-shadow: 0 1px 1px #111;
  98 + font-weight: normal;
  99 +}
  100 +
  101 +.mr-list {
  102 + .merge-request {
  103 + padding: 10px;
  104 + position: relative;
  105 +
  106 + .merge-request-title {
  107 + margin-bottom: 5px;
  108 + font-size: 14px;
  109 + }
  110 +
  111 + .merge-request-info {
  112 + color: #999;
  113 + }
  114 + }
  115 +}
... ...
app/assets/stylesheets/sections/votes.scss
... ... @@ -35,9 +35,4 @@
35 35 .votes-inline {
36 36 display: inline-block;
37 37 margin: 0 8px;
38   - .progress {
39   - display: inline-block;
40   - padding: 0 0 2px;
41   - width: 45px;
42   - }
43 38 }
... ...
app/helpers/merge_requests_helper.rb
... ... @@ -11,7 +11,7 @@ module MergeRequestsHelper
11 11 end
12 12  
13 13 def mr_css_classes mr
14   - classes = "merge_request"
  14 + classes = "merge-request"
15 15 classes << " closed" if mr.closed?
16 16 classes << " merged" if mr.merged?
17 17 classes
... ...
app/helpers/projects_helper.rb
... ... @@ -25,7 +25,7 @@ module ProjectsHelper
25 25 author_html = ""
26 26  
27 27 # Build avatar image tag
28   - author_html << image_tag(gravatar_icon(author.try(:email)), width: 16, class: "lil_av") if opts[:avatar]
  28 + author_html << image_tag(gravatar_icon(author.try(:email)), width: 16, class: "avatar avatar-inline s16") if opts[:avatar]
29 29  
30 30 # Build name span tag
31 31 author_html << content_tag(:span, sanitize(author.name), class: 'author')
... ...
app/views/dashboard/issues.html.haml
... ... @@ -15,7 +15,7 @@
15 15 - project = group[0]
16 16 %h5.title
17 17 = link_to_project project
18   - %ul.well-list.issues_table
  18 + %ul.well-list.issues-list
19 19 - group[1].each do |issue|
20 20 = render issue
21 21 %hr
... ...
app/views/dashboard/projects.html.haml
... ... @@ -28,7 +28,7 @@
28 28 = button_tag type: 'submit', class: 'btn' do
29 29 %i.icon-search
30 30  
31   - %ul.well-list
  31 + %ul.bordered-list
32 32 - @projects.each do |project|
33 33 %li.clearfix
34 34 .clearfix
... ...
app/views/dashboard/show.html.haml
1 1 - if @has_authorized_projects
2   - .projects
  2 + .dashboard
3 3 .activities.span8
4 4 = render 'activities'
5 5 .side.span4
... ...
app/views/groups/issues.html.haml
... ... @@ -14,7 +14,7 @@
14 14 - project = group[0]
15 15 %h5.title
16 16 = link_to_project project
17   - %ul.well-list.issues_table
  17 + %ul.well-list.issues-list
18 18 - group[1].each do |issue|
19 19 = render issue
20 20 %hr
... ...
app/views/groups/show.html.haml
1   -.projects
  1 +.dashboard
2 2 .activities.span8
3 3 = render "events/event_last_push", event: @last_push
4 4 = link_to dashboard_path, class: 'btn btn-tiny' do
... ... @@ -13,7 +13,7 @@
13 13 .loading.hide
14 14 .side.span4
15 15 - if @group.description.present?
16   - .description.well.light
  16 + .description.well.well-small.light
17 17 = @group.description
18 18 = render "projects", projects: @projects
19 19 .prepend-top-20
... ...
app/views/issues/_issue.html.haml
1 1 %li{ id: dom_id(issue), class: issue_css_classes(issue), url: project_issue_path(issue.project, issue) }
2 2 - if controller.controller_name == 'issues'
3   - .issue_check
  3 + .issue-check
4 4 = check_box_tag dom_id(issue,"selected"), nil, false, 'data-id' => issue.id, class: "selected_issue", disabled: !can?(current_user, :modify_issue, issue)
5   - .pull-right
  5 +
  6 + .issue-title
  7 + %span.light= "##{issue.id}"
  8 + = link_to_gfm truncate(issue.title, length: 100), project_issue_path(issue.project, issue), class: "row_title"
  9 +
  10 + .issue-info
  11 + - if issue.assignee
  12 + assigned to #{link_to_member(@project, issue.assignee)}
  13 + - else
  14 + unassigned
  15 + - if issue.votes_count > 0
  16 + = render 'votes/votes_inline', votable: issue
6 17 - if issue.notes.any?
7   - %span.btn.btn-small.disabled.grouped
8   - %i.icon-comment
  18 + %span
  19 + %i.icon-comments
9 20 = issue.notes.count
  21 + - if issue.milestone_id?
  22 + %span
  23 + %i.icon-time
  24 + = issue.milestone.title
  25 + .pull-right
  26 + %small updated #{time_ago_in_words(issue.updated_at)} ago
  27 +
  28 + .issue-labels
  29 + - issue.labels.each do |label|
  30 + %span.label.label-info
  31 + %i.icon-tag
  32 + = label.name
  33 +
  34 + .issue-actions
10 35 - if can? current_user, :modify_issue, issue
11 36 - if issue.closed?
12 37 = link_to 'Reopen', project_issue_path(issue.project, issue, issue: {state_event: :reopen }, status_only: true), method: :put, class: "btn btn-small grouped reopen_issue", remote: true
... ... @@ -16,24 +41,4 @@
16 41 %i.icon-edit
17 42 Edit
18 43  
19   - - if issue.assignee
20   - = image_tag gravatar_icon(issue.assignee_email), class: "avatar"
21   - - else
22   - = image_tag "no_avatar.png", class: "avatar"
23   -
24   - %p= link_to_gfm truncate(issue.title, length: 100), project_issue_path(issue.project, issue), class: "row_title"
25   -
26   - %span.update-author
27   - %span.cdark= "##{issue.id}"
28   - - if issue.assignee
29   - assigned to #{issue.assignee_name}
30   - - else
31   - &nbsp;
32 44  
33   - - if issue.votes_count > 0
34   - = render 'votes/votes_inline', votable: issue
35   - %span
36   - - issue.labels.each do |label|
37   - %span.label.label-info
38   - %i.icon-tag
39   - = label.name
... ...
app/views/issues/index.html.haml
... ... @@ -12,7 +12,7 @@
12 12 = form_tag search_project_issues_path(@project), method: :get, remote: true, id: "issue_search_form", class: 'pull-right' do
13 13 = hidden_field_tag :project_id, @project.id, { id: 'project_id' }
14 14 = hidden_field_tag :status, params[:status]
15   - = search_field_tag :issue_search, nil, { placeholder: 'Search', class: 'issue_search span3 pull-right neib search-text-input' }
  15 + = search_field_tag :issue_search, nil, { placeholder: 'Search', class: 'issue_search input-xlarge append-right-10 search-text-input' }
16 16  
17 17 .clearfix
18 18  
... ... @@ -41,7 +41,7 @@
41 41 = select_tag(:milestone_id, options_from_collection_for_select([unassigned_filter] + issues_active_milestones, "id", "title", params[:milestone_id]), prompt: "Milestone")
42 42 = hidden_field_tag :status, params[:status]
43 43  
44   - %ul#issues-table.well-list.issues_table
  44 + %ul#issues-table.well-list.issues-list
45 45 = render "issues"
46 46  
47 47 :javascript
... ...
app/views/merge_requests/_merge_request.html.haml
1 1 %li{ class: mr_css_classes(merge_request) }
2   - .pull-right
3   - .left
4   - - if merge_request.merged?
5   - %span.btn.btn-small.disabled.grouped
6   - %strong
7   - %i.icon-ok
8   - = "MERGED"
9   - - if merge_request.notes.any?
10   - %span.btn.btn-small.disabled.grouped
11   - %i.icon-comment
12   - = merge_request.mr_and_commit_notes.count
13   - - if merge_request.milestone_id?
14   - %span.btn.btn-small.disabled.grouped
15   - %i.icon-time
16   - = merge_request.milestone.title
17   - %span.btn.btn-small.disabled.grouped
18   - = merge_request.source_branch
19   - &rarr;
  2 + .merge-request-title
  3 + %span.light= "##{merge_request.id}"
  4 + = link_to_gfm truncate(merge_request.title, length: 80), project_merge_request_path(merge_request.project, merge_request), class: "row_title"
  5 + - if merge_request.merged?
  6 + %small.pull-right
  7 + %i.icon-ok
  8 + = "MERGED"
  9 + - else
  10 + %span.pull-right
  11 + %i.icon-angle-right
20 12 = merge_request.target_branch
21   - = image_tag gravatar_icon(merge_request.author_email), class: "avatar"
22   -
23   - %p= link_to_gfm truncate(merge_request.title, length: 80), project_merge_request_path(merge_request.project, merge_request), class: "row_title"
24   -
25   - %span.update-author
26   - %small.cdark= "##{merge_request.id}"
27   - authored by #{merge_request.author_name}
28   - = time_ago_in_words(merge_request.created_at)
29   - ago
30   -
  13 + .merge-request-info
  14 + - if merge_request.author
  15 + authored by #{link_to_member(@project, merge_request.author)}
31 16 - if merge_request.votes_count > 0
32 17 = render 'votes/votes_inline', votable: merge_request
  18 + - if merge_request.notes.any?
  19 + %span
  20 + %i.icon-comments
  21 + = merge_request.mr_and_commit_notes.count
  22 + - if merge_request.milestone_id?
  23 + %span
  24 + %i.icon-time
  25 + = merge_request.milestone.title
  26 +
  27 +
  28 + .pull-right
  29 + %small updated #{time_ago_in_words(merge_request.updated_at)} ago
... ...
app/views/merge_requests/index.html.haml
... ... @@ -20,7 +20,7 @@
20 20 = hidden_field_tag :f, params[:f]
21 21 .clearfix
22 22  
23   - %ul.well-list
  23 + %ul.well-list.mr-list
24 24 = render @merge_requests
25 25 - if @merge_requests.blank?
26 26 %li
... ...
app/views/milestones/show.html.haml
... ... @@ -87,7 +87,7 @@
87 87 %h6 Participants:
88 88 %div
89 89 - @users.each do |user|
90   - = link_to user, class: 'float-link' do
  90 + = link_to user do
91 91 = link_to_member(@project, user)
92 92  
93 93 .clearfix
... ...
app/views/repositories/tags.html.haml
... ... @@ -14,7 +14,7 @@
14 14 %span.light
15 15 = time_ago_in_words(commit.committed_date)
16 16 ago
17   - %div.prepend-left
  17 + %div.prepend-left-20
18 18 = link_to commit.short_id(8), project_commit_path(@project, commit), class: "monospace"
19 19 &ndash;
20 20 = link_to_gfm truncate(commit.title, length: 70), project_commit_path(@project, commit.id), class: "cdark"
... ...
app/views/teams/issues.html.haml
... ... @@ -14,7 +14,7 @@
14 14 - @project = group[0]
15 15 %h5.title
16 16 = link_to_project @project
17   - %ul.well-list.issues_table
  17 + %ul.well-list.issues-list
18 18 - group[1].each do |issue|
19 19 = render issue
20 20 %hr
... ...
app/views/teams/show.html.haml
1   -.projects
  1 +.dashboard
2 2 .activities.span8
3 3 = link_to dashboard_path, class: 'btn btn-tiny' do
4 4 &larr; To dashboard
... ... @@ -12,7 +12,7 @@
12 12 .loading.hide
13 13 .side.span4
14 14 - if @team.description.present?
15   - .description.well.light
  15 + .description.well.well-small.light
16 16 = @team.description
17 17 = render "projects", projects: @projects
18 18 .prepend-top-20
... ...
app/views/votes/_votes_inline.html.haml
1 1 .votes.votes-inline
2   - .upvotes= votable.upvotes
3   - .progress
4   - .bar.bar-success{style: "width: #{votable.upvotes_in_percent}%;"}
5   - .bar.bar-danger{style: "width: #{votable.downvotes_in_percent}%;"}
6   - .downvotes= votable.downvotes
  2 + - unless votable.upvotes.zero?
  3 + .upvotes
  4 + + #{votable.upvotes}
  5 + - unless votable.downvotes.zero?
  6 + \/
  7 + - unless votable.downvotes.zero?
  8 + .downvotes
  9 + \- #{votable.downvotes}
... ...