Skip to content
Snippets Groups Projects
Unverified Commit b54358b4 authored by Dmitriy Zaporozhets's avatar Dmitriy Zaporozhets
Browse files

Refactor project list rendering

parent c27c8133
No related branches found
No related tags found
No related merge requests found
Showing
with 119 additions and 77 deletions
Loading
Loading
@@ -55,7 +55,6 @@ class Dispatcher
new Activities()
when 'dashboard:projects:starred'
new Activities()
new ProjectsList()
when 'projects:commit:show'
new Commit()
new Diff()
Loading
Loading
@@ -70,7 +69,6 @@ class Dispatcher
when 'groups:show'
new Activities()
shortcut_handler = new ShortcutsNavigation()
new ProjectsList()
when 'groups:group_members:index'
new GroupMembers()
new UsersSelect()
Loading
Loading
@@ -96,8 +94,6 @@ class Dispatcher
when 'users:show'
new User()
new Activities()
when 'admin:users:show'
new ProjectsList()
 
switch path.first()
when 'admin'
Loading
Loading
Loading
Loading
@@ -157,3 +157,40 @@
white-space: nowrap;
max-width: $max_width;
}
/*
* Base mixin for lists in GitLab
*/
@mixin basic-list {
margin: 5px 0px;
padding: 0px;
li {
padding: 10px 0;
border-bottom: 1px solid #EEE;
overflow: hidden;
display: block;
margin: 0px;
&:last-child {
border:none
}
&.active {
background: #f9f9f9;
a {
font-weight: bold;
}
}
&.hide {
display: none;
}
&.light {
a {
color: #777;
}
}
}
}
Loading
Loading
@@ -93,28 +93,12 @@ ol, ul {
 
/** light list with border-bottom between li **/
ul.bordered-list {
margin: 5px 0px;
padding: 0px;
li {
padding: 5px 0;
border-bottom: 1px solid #EEE;
overflow: hidden;
display: block;
margin: 0px;
&:last-child { border:none }
&.active {
background: #f9f9f9;
a { font-weight: bold; }
}
&.light {
a { color: #777; }
}
}
@include basic-list;
 
&.top-list {
li:first-child {
padding-top: 0;
h4, h5 {
margin-top: 0;
}
Loading
Loading
Loading
Loading
@@ -334,23 +334,32 @@ pre.light-well {
}
}
 
.project-row {
.project-full-name {
font-weight: bold;
font-size: 15px;
}
.project-description {
color: #888;
font-size: 13px;
/*
* Projects list rendered on dashboard and user page
*/
.projects-list {
@include basic-list;
.project-row {
.project-full-name {
@include str-truncated;
font-weight: bold;
font-size: 15px;
}
 
p {
margin-bottom: 0;
.project-description {
color: #888;
font-size: 13px;
p {
@include str-truncated;
margin-bottom: 0;
color: #888;
}
}
}
}
 
.my-projects .project-row {
padding: 10px 0;
.panel .projects-list li {
padding: 10px 15px;
}
Loading
Loading
@@ -7,7 +7,4 @@
= link_to new_project_path, class: 'btn btn-success' do
New project
 
%ul.projects-list.bordered-list.my-projects
- @projects.each do |project|
%li.project-row
= render partial: 'shared/project', locals: { project: project, avatar: true, stars: true }
= render 'shared/projects/list', projects: @projects
Loading
Loading
@@ -17,8 +17,7 @@
= link_to new_project_path, class: 'btn btn-success' do
New project
 
= render 'shared/projects_list', projects: @projects,
projects_limit: 20, stars: true, avatar: false
= render 'shared/projects/list', projects: @projects, projects_limit: 20
 
- else
%h3 You don't have starred projects yet
Loading
Loading
%ul.projects-list.bordered-list.my-projects.public-projects
- projects.each do |project|
%li.project-row
= render partial: 'shared/project', locals: { project: project, avatar: true, stars: true }
- unless projects.present?
.nothing-here-block No such projects
- if projects.any?
.public-projects
= render 'shared/projects/list', projects: projects
- else
.nothing-here-block
No such projects
Loading
Loading
@@ -7,4 +7,4 @@
= link_to new_project_path(namespace_id: @group.id), class: 'btn btn-success' do
New project
 
= render 'shared/projects_list', projects: @projects, projects_limit: 20
= render 'shared/projects/list', projects: @projects, projects_limit: 20
Loading
Loading
@@ -14,7 +14,11 @@
%br
.results.prepend-top-10
.search-results
= render partial: "search/results/#{@scope.singularize}", collection: @objects
- if @scope == 'projects'
.term
= render 'shared/projects/list', projects: @objects
- else
= render partial: "search/results/#{@scope.singularize}", collection: @objects
= paginate @objects, theme: 'gitlab'
 
:javascript
Loading
Loading
.search-result-row
%h4
= link_to [project.namespace.becomes(Namespace), project] do
%span.term= project.name_with_namespace
- if project.description.present?
%span.light.term= project.description
= cache [project.namespace, project, controller.controller_name, controller.action_name] do
= link_to project_path(project), class: dom_class(project) do
- if avatar
.dash-project-avatar
= project_icon(project, alt: '', class: 'avatar project-avatar s40')
%span.str-truncated.project-full-name
%span.namespace-name
- if project.namespace
= project.namespace.human_name
\/
%span.project-name.filter-title
= project.name
- if stars
%span.pull-right.light
%i.fa.fa-star
= project.star_count
- if project.description.present?
.project-description
.str-truncated
= markdown(project.description, pipeline: :description)
- projects_limit = 20 unless local_assigns[:projects_limit]
- avatar = true unless local_assigns[:avatar] == false
- stars = false unless local_assigns[:stars] == true
%ul.well-list.projects-list
- stars = true unless local_assigns[:stars] == false
%ul.projects-list
- projects.each_with_index do |project, i|
%li{class: (i >= projects_limit) ? 'project-row hide' : 'project-row'}
= render "shared/project", project: project, avatar: avatar, stars: stars
- if projects.blank?
%li
.nothing-here-block There are no projects here.
- css_class = (i >= projects_limit) ? 'hide' : nil
= render "shared/projects/project", project: project,
avatar: avatar, stars: stars, css_class: css_class
- if projects.count > projects_limit
%li.bottom
%span.light
%li.bottom.center
.light
#{projects_limit} of #{pluralize(projects.count, 'project')} displayed.
%span
= link_to '#', class: 'js-expand' do
Show all
:coffeescript
new ProjectsList()
- avatar = true unless local_assigns[:avatar] == false
- stars = true unless local_assigns[:stars] == false
- css_class = nil unless local_assigns[:css_class]
%li.project-row{ class: css_class }
= cache [project.namespace, project, controller.controller_name, controller.action_name, 'v2'] do
= link_to project_path(project), class: dom_class(project) do
- if avatar
.dash-project-avatar
= project_icon(project, alt: '', class: 'avatar project-avatar s40')
%span.project-full-name
%span.namespace-name
- if project.namespace
= project.namespace.human_name
\/
%span.project-name.filter-title
= project.name
- if stars
%span.pull-right.light
%i.fa.fa-star
= project.star_count
- if project.description.present?
.project-description
= markdown(project.description, pipeline: :description)
- if local_assigns.has_key?(:contributed_projects) && contributed_projects.present?
.panel.panel-default.contributed-projects
.panel-heading Projects contributed to
= render 'shared/projects_list',
= render 'shared/projects/list',
projects: contributed_projects.sort_by(&:star_count).reverse,
projects_limit: 5, stars: true, avatar: false
 
- if local_assigns.has_key?(:projects) && projects.present?
.panel.panel-default
.panel-heading Personal projects
= render 'shared/projects_list',
= render 'shared/projects/list',
projects: projects.sort_by(&:star_count).reverse,
projects_limit: 10, stars: true, avatar: false
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment