From 4d3e002c81ba9c6f8dd3810cfcb3e2741726d1a8 Mon Sep 17 00:00:00 2001 From: Oleksii Kriuchykhin Date: Fri, 23 Dec 2016 15:40:01 +0100 Subject: [PATCH] Add sorting to Project's experiments overview [SCI-361] --- app/controllers/projects_controller.rb | 1 + app/models/project.rb | 10 ++++++++-- app/views/projects/show.html.erb | 27 +++++++++++++++++++++----- 3 files changed, 31 insertions(+), 7 deletions(-) diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index daafa4761..74925878c 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -251,6 +251,7 @@ class ProjectsController < ApplicationController def show # This is the "info" view current_organization_switch(@project.organization) + @current_sort = params[:sort].to_s end def notifications diff --git a/app/models/project.rb b/app/models/project.rb index c9b689671..5762b287d 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -107,8 +107,14 @@ class Project < ActiveRecord::Base return (self.user_projects.select { |up| up.user == user }).first.role end - def active_experiments(ordered = 'created_at DESC') - experiments.is_archived(false).order(ordered) + def active_experiments(sort_by = :new) + sort = case sort_by + when 'old' then { created_at: :asc } + when 'atoz' then { name: :asc } + when 'ztoa' then { name: :desc } + else { created_at: :desc } + end + experiments.is_archived(false).order(sort) end def archived_experiments diff --git a/app/views/projects/show.html.erb b/app/views/projects/show.html.erb index 9fee1caef..ba6be23aa 100644 --- a/app/views/projects/show.html.erb +++ b/app/views/projects/show.html.erb @@ -6,9 +6,9 @@
- <% if can_create_experiment(@project) %> -
-
+
+
+ <% if can_create_experiment(@project) %> <%= link_to new_project_experiment_url(@project), remote: true, type: "button", @@ -22,9 +22,26 @@ <% end %> + <% end %> + +
- <% end %> +

<%= t'projects.show.page_title' %>

@@ -33,7 +50,7 @@
- <% @project.active_experiments.each_with_index do |experiment, index| %> + <% @project.active_experiments(@current_sort).each_with_index do |experiment, index| %> <%= render partial: 'projects/show/experiment', locals: { experiment: experiment } %>