OSDN Git Service

Pagination and better perfomance for projects page.
authorrandx <dmitriy.zaporozhets@gmail.com>
Fri, 20 Apr 2012 16:11:49 +0000 (19:11 +0300)
committerrandx <dmitriy.zaporozhets@gmail.com>
Fri, 20 Apr 2012 16:11:49 +0000 (19:11 +0300)
app/assets/stylesheets/common.scss
app/assets/stylesheets/main.scss
app/assets/stylesheets/sections/projects.scss [new file with mode: 0644]
app/controllers/commits_controller.rb
app/controllers/projects_controller.rb
app/views/projects/index.html.haml

index 90d793e..a0b3abb 100644 (file)
@@ -668,12 +668,15 @@ p.time {
       }
     }
   }
+  .bottom { 
+    padding:10px;
+  }
 }
 
 .btn { 
   &.very_small { 
     font-size:11px;
-    padding:4px;
+    padding:2px 6px;
     margin:2px;
   }
 }
index c7ebbeb..dfc9315 100644 (file)
@@ -104,6 +104,11 @@ $hover: #FDF5D9;
 @import "sections/issues.scss";
 
 /**
+ * Styles related to projects
+ */
+@import "sections/projects.scss";
+
+/**
  * This scss file redefine chozen selectbox styles for
  * project Branch/Tag select element
  */
diff --git a/app/assets/stylesheets/sections/projects.scss b/app/assets/stylesheets/sections/projects.scss
new file mode 100644 (file)
index 0000000..eb39c8e
--- /dev/null
@@ -0,0 +1,15 @@
+.projects { 
+  @extend .row;
+  .activities {
+  }
+
+  .side { 
+    @extend .span4;
+    @extend .right;
+
+    .projects_box { 
+      @extend .leftbar;
+      @extend .ui-box;
+    }
+  }
+}
index 061592a..9a97e5c 100644 (file)
@@ -43,8 +43,8 @@ class CommitsController < ApplicationController
   end
 
   def compare
-    first = project.commit(params[:to])
-    last = project.commit(params[:from])
+    first = project.commit(params[:to].try(:strip))
+    last = project.commit(params[:from].try(:strip))
 
     @diffs = []
     @commits = []
index c832250..38fd6f3 100644 (file)
@@ -11,9 +11,9 @@ class ProjectsController < ApplicationController
   before_filter :require_non_empty_project, :only => [:blob, :tree, :graph]
 
   def index
-    @projects = current_user.projects
-    @projects = @projects.select(&:last_activity_date).sort_by(&:last_activity_date).reverse
-    @events = Event.where(:project_id => @projects.map(&:id)).recent.limit(20)
+    @projects = current_user.projects.includes(:events).order("events.created_at DESC")
+    @projects = @projects.page(params[:page]).per(40)
+    @events = Event.where(:project_id => current_user.projects.map(&:id)).recent.limit(20)
   end
 
   def new
index d918259..46e6170 100644 (file)
@@ -1,6 +1,6 @@
 - if @projects.any?
-  .row
-    .span8
+  .projects
+    .activities.span8
       - if current_user.require_ssh_key?
         .alert.alert-error.padded
           %span
       - else
         .padded
           %strong.cgray Projects activity will be displayed here
-    .span4.right
-      %div.leftbar.ui-box
+    .side
+      .projects_box
         %h5
           Projects
           %small
-            (#{@projects.count})
+            (#{@projects.total_count})
           - if current_user.can_create_project?
             %span.right
               = link_to new_project_path, :class => "btn very_small info" do 
                 New Project
-        .content_list
-          - @projects.each do |project|
-            = link_to project_path(project), :class => dom_class(project) do
-              %h4
-                %span.ico.project
-                = truncate(project.name, :length => 25)
-                %span.right
-                  &rarr;
+        - @projects.each do |project|
+          = link_to project_path(project), :class => dom_class(project) do
+            %h4
+              %span.ico.project
+              = truncate(project.name, :length => 25)
+              %span.right
+                &rarr;
+        .bottom= paginate @projects, :theme => "gitlab"
 
 - else 
   %h3 Nothing here