diff --git a/app/models/project.rb b/app/models/project.rb index 63c37ec..3a2b6a8 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -10,11 +10,15 @@ class Project < ActiveRecord::Base validates :name, presence: true def task_status_counts + status_counts = tasks.group(:status).count + + total = status_counts.values.sum + { - total: tasks.count, - in_progress: tasks.where(status: Task.statuses[:in_progress]).count, - done: tasks.where(status: Task.statuses[:done]).count, - not_started: tasks.where(status: Task.statuses[:not_started]).count + total: total, + in_progress: status_counts[Task.statuses[:in_progress]] || 0, + done: status_counts[Task.statuses[:done]] || 0, + not_started: status_counts[Task.statuses[:not_started]] || 0 } end diff --git a/app/routes/projects_routes.rb b/app/routes/projects_routes.rb index 84244d7..135dea5 100644 --- a/app/routes/projects_routes.rb +++ b/app/routes/projects_routes.rb @@ -1,6 +1,11 @@ class Sinatra::Application get '/projects' do - @projects_with_tasks = current_user.projects.includes(:tasks, :area).order('areas.name ASC, projects.name ASC') + @projects_with_tasks = current_user.projects.left_joins(:tasks, :area).order('areas.name ASC, projects.name ASC') + + @task_status_counts = @projects_with_tasks.each_with_object({}) do |project, counts| + counts[project.id] = project.task_status_counts + end + @grouped_projects = @projects_with_tasks.group_by(&:area) erb :'projects/index' diff --git a/app/routes/tasks_routes.rb b/app/routes/tasks_routes.rb index 9253bfc..6f2d6c5 100644 --- a/app/routes/tasks_routes.rb +++ b/app/routes/tasks_routes.rb @@ -58,7 +58,7 @@ module Sinatra @tasks = @tasks.where(id: tagged_task_ids) end - @tasks = @tasks.joins(:tags).distinct + @tasks = @tasks.left_joins(:tags).distinct erb :'tasks/index' end diff --git a/app/views/notes/_note.erb b/app/views/notes/_note.erb index b458aa4..f36a0ec 100644 --- a/app/views/notes/_note.erb +++ b/app/views/notes/_note.erb @@ -1,4 +1,4 @@ -
+
diff --git a/app/views/projects/_cards.erb b/app/views/projects/_cards.erb new file mode 100644 index 0000000..1055ba6 --- /dev/null +++ b/app/views/projects/_cards.erb @@ -0,0 +1,39 @@ +<% projects.each do |project| %> +<% counts = @task_status_counts[project.id] %> + +<% end %> + \ No newline at end of file diff --git a/app/views/projects/_list.erb b/app/views/projects/_list.erb new file mode 100644 index 0000000..d99d5ea --- /dev/null +++ b/app/views/projects/_list.erb @@ -0,0 +1,43 @@ + + + + + + + + + + + + + <% projects.each_with_index do |project, index| %> + <% counts = @task_status_counts[project.id] %> + + + + + + + + + <% end %> + +
#Project NameProgressTotal TasksTasks in ProgressAction
<%= index + 1 %><%= project.name %> +
+
+
+ <%= project.progress_percentage %>% +
<%= counts[:total] %> Tasks + <% if counts[:in_progress] > 0 %> + <%= counts[:in_progress] %> + <% else %> + 0 + <% end %> + + View +
+ + + diff --git a/app/views/projects/index.erb b/app/views/projects/index.erb index fc9717a..05ba637 100644 --- a/app/views/projects/index.erb +++ b/app/views/projects/index.erb @@ -1,67 +1,38 @@ -

Areas & Projects

+

Projects

<% @grouped_projects.each do |area, projects| %> -
-
- - -
-
- <% projects.each do |project| %> -
- -
-
-
-
-
- -
<%= project.name.upcase %>
-
- <%= project.task_status_counts[:total] %> Tasks - <% if project.task_status_counts[:in_progress] > 0 %> - , <%= project.task_status_counts[:in_progress] %> in progress - <% end %> -
-
-
-
-
-
+ <% projects.each_with_index do |project, index| %> + <% counts = @task_status_counts[project.id] %> +
+
+
+ + <%= project.name %> + — <%= area&.name || 'No area' %>
- <% end %> -
- -
-
- -
+
+
+
-
+ + <%= counts[:total] %> / + <% if counts[:in_progress] > 0 %> + <%= counts[:in_progress] %> + <% else %> + 0 + <% end %> + +
-
+ <% end %> <% end %>
+ + + <%= partial :'tasks/_edit_task_modal' %> <% current_user.areas.each do |area| %> <%= partial :'areas/_edit_area_modal', locals: { area: area } %> diff --git a/app/views/sidebar.erb b/app/views/sidebar.erb index d94df30..d89f381 100644 --- a/app/views/sidebar.erb +++ b/app/views/sidebar.erb @@ -44,7 +44,7 @@