about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorKelly Rauchenberger <fefferburbia@gmail.com>2019-03-13 15:48:14 -0400
committerKelly Rauchenberger <fefferburbia@gmail.com>2019-03-13 15:48:14 -0400
commitb62d43ccde70aa6fccf5341e57a695a2cfb289c1 (patch)
tree8e612d68c89e8358c80663f2dcfab35f33ba89c3
parentb6018ad11156d8b38a87dc682064495cd788608c (diff)
downloadthoughts-b62d43ccde70aa6fccf5341e57a695a2cfb289c1.tar.gz
thoughts-b62d43ccde70aa6fccf5341e57a695a2cfb289c1.tar.bz2
thoughts-b62d43ccde70aa6fccf5341e57a695a2cfb289c1.zip
Game list is sortable
-rw-r--r--app/assets/images/down_arrow.gifbin0 -> 843 bytes
-rw-r--r--app/assets/images/up_arrow.gifbin0 -> 835 bytes
-rw-r--r--app/assets/javascripts/entries.coffee3
-rw-r--r--app/assets/stylesheets/main/games.scss40
-rw-r--r--app/controllers/games_controller.rb14
-rw-r--r--app/helpers/application_helper.rb7
-rw-r--r--app/views/games/index.html.haml45
7 files changed, 84 insertions, 25 deletions
diff --git a/app/assets/images/down_arrow.gif b/app/assets/images/down_arrow.gif new file mode 100644 index 0000000..3438db3 --- /dev/null +++ b/app/assets/images/down_arrow.gif
Binary files differ
diff --git a/app/assets/images/up_arrow.gif b/app/assets/images/up_arrow.gif new file mode 100644 index 0000000..6438c97 --- /dev/null +++ b/app/assets/images/up_arrow.gif
Binary files differ
diff --git a/app/assets/javascripts/entries.coffee b/app/assets/javascripts/entries.coffee deleted file mode 100644 index 24f83d1..0000000 --- a/app/assets/javascripts/entries.coffee +++ /dev/null
@@ -1,3 +0,0 @@
1# Place all the behaviors and hooks related to the matching controller here.
2# All this logic will automatically be available in application.js.
3# You can use CoffeeScript in this file: http://coffeescript.org/
diff --git a/app/assets/stylesheets/main/games.scss b/app/assets/stylesheets/main/games.scss index 98aca43..901d30d 100644 --- a/app/assets/stylesheets/main/games.scss +++ b/app/assets/stylesheets/main/games.scss
@@ -18,6 +18,36 @@
18 td { 18 td {
19 padding: 0.5em; 19 padding: 0.5em;
20 } 20 }
21
22 thead {
23 th {
24 border-bottom: 1px solid #aaa;
25 text-align: left;
26 padding: 0.5em;
27
28 a {
29 text-decoration: none;
30
31 &:visited {
32 color: blue;
33 }
34 }
35
36 .current {
37 padding-right: 12px;
38 background-repeat: no-repeat;
39 background-position: right center;
40
41 &.asc {
42 background-image: image-url("up_arrow.gif");
43 }
44
45 &.desc {
46 background-image: image-url("down_arrow.gif");
47 }
48 }
49 }
50 }
21} 51}
22 52
23.game-progress p { 53.game-progress p {
@@ -34,3 +64,13 @@
34 font-size: 0.8em; 64 font-size: 0.8em;
35 color: #777; 65 color: #777;
36} 66}
67
68h2#games-title {
69 background-color: #d6aeff;
70 display: block;
71 font-size: 20px;
72 font-family: 'Roboto', sans-serif;
73 padding: 0.5em 20px;
74 border-top: 1px solid #edf;
75 border-bottom: 1px solid #edf;
76}
diff --git a/app/controllers/games_controller.rb b/app/controllers/games_controller.rb index 8ddcf24..dcbe226 100644 --- a/app/controllers/games_controller.rb +++ b/app/controllers/games_controller.rb
@@ -1,9 +1,21 @@
1class GamesController < ApplicationController 1class GamesController < ApplicationController
2 helper_method :sort_column, :sort_direction
3
2 def index 4 def index
3 @games = Game.order(started_on: :desc) 5 @games = Game.order(sort_column + " " + sort_direction)
4 6
5 if params[:status] 7 if params[:status]
6 @games = @games.where(status: params[:status]) 8 @games = @games.where(status: params[:status])
7 end 9 end
8 end 10 end
11
12 private
13
14 def sort_column
15 Game.column_names.include?(params[:sort]) ? params[:sort] : "started_on"
16 end
17
18 def sort_direction
19 %[asc desc].include?(params[:dir]) ? params[:dir] : "asc"
20 end
9end 21end
diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index a8b1c7e..8008b04 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb
@@ -4,4 +4,11 @@ module ApplicationHelper
4 content_for :title, text 4 content_for :title, text
5 end 5 end
6 6
7 def sortable(col, title = nil)
8 title ||= col.titleize
9 css_class = (col == sort_column) ? "current #{sort_direction}" : nil
10 direction = (col == sort_column and sort_direction == "asc") ? "desc" : "asc"
11 link_to title, {:sort => col, :dir => direction}, {:class => css_class}
12 end
13
7end 14end
diff --git a/app/views/games/index.html.haml b/app/views/games/index.html.haml index f7e7a44..56c5a05 100644 --- a/app/views/games/index.html.haml +++ b/app/views/games/index.html.haml
@@ -1,23 +1,26 @@
1- title "Games" 1- title "Games"
2%h2 Games 2.breadcrumb= link_to "← Back to home page", root_path
3%h2#games-title Games
3%table#games-table 4%table#games-table
4 %tr 5 %thead
5 %th Title 6 %tr
6 %th Status 7 %th= sortable "title"
7 %th Score 8 %th= sortable "status"
8 %th Progress 9 %th= sortable "score"
9 - @games.each do |game| 10 %th= sortable "progress"
10 %tr{ class: cycle("even", "odd") } 11 %tbody
11 %td 12 - @games.each do |game|
12 %span.game-title= game.title 13 %tr{ class: cycle("even", "odd") }
13 - unless game.started_on.blank? 14 %td
14 %span.game-started 15 %span.game-title= game.title
15 Started on 16 - unless game.started_on.blank?
16 %time= game.started_on 17 %span.game-started
17 - unless game.finished_on.blank? 18 Started on
18 %span.game-finished 19 %time= game.started_on
19 Finished on 20 - unless game.finished_on.blank?
20 %time= game.finished_on 21 %span.game-finished
21 %td= game.status 22 Finished on
22 %td= game.score 23 %time= game.finished_on
23 %td.game-progress= simple_format game.progress 24 %td= game.status
25 %td= game.score
26 %td.game-progress= simple_format game.progress