summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormo khan <mo@mokhan.ca>2017-02-26 19:44:45 -0700
committermo khan <mo@mokhan.ca>2017-02-26 19:44:45 -0700
commit546e12eb2e0336998511cdbc1cc01cc8bacb3de9 (patch)
treef6d0c62df7f75fb53fd52aa34dc93ef5db6faae8
parent294e8e669d4dea4751284534f66d02a78a244cd6 (diff)
add calendar view.
-rw-r--r--Gemfile1
-rw-r--r--Gemfile.lock7
-rw-r--r--app/assets/javascripts/application.js1
-rw-r--r--app/assets/stylesheets/application.scss1
-rw-r--r--app/controllers/workouts_controller.rb4
-rw-r--r--app/views/workouts/calendar.html.erb15
-rw-r--r--app/views/workouts/index.html.erb1
-rw-r--r--config/locales/en.yml3
-rw-r--r--config/routes.rb6
9 files changed, 37 insertions, 2 deletions
diff --git a/Gemfile b/Gemfile
index 598f254..9b488bc 100644
--- a/Gemfile
+++ b/Gemfile
@@ -77,6 +77,7 @@ end
source "https://rails-assets.org" do
gem "rails-assets-backbone"
gem "rails-assets-clipboard"
+ gem "rails-assets-fullcalendar"
gem "rails-assets-lodash"
gem "rails-assets-modernizr"
gem "rails-assets-moment"
diff --git a/Gemfile.lock b/Gemfile.lock
index ec774de..cec5705 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -273,6 +273,10 @@ GEM
rails-assets-backbone (1.3.3)
rails-assets-underscore (>= 1.8.3)
rails-assets-clipboard (1.5.12)
+ rails-assets-fullcalendar (3.2.0)
+ rails-assets-jquery (>= 2, < 4)
+ rails-assets-moment (>= 2.9.0, < 3)
+ rails-assets-jquery (3.1.1)
rails-assets-lodash (4.13.1)
rails-assets-modernizr (3.3.1)
rails-assets-moment (2.14.1)
@@ -480,6 +484,7 @@ DEPENDENCIES
rails (~> 5.0.0)!
rails-assets-backbone!
rails-assets-clipboard!
+ rails-assets-fullcalendar!
rails-assets-lodash!
rails-assets-modernizr!
rails-assets-moment!
@@ -513,4 +518,4 @@ DEPENDENCIES
yelp!
BUNDLED WITH
- 1.14.4
+ 1.14.5
diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js
index 2f9085f..df124f6 100644
--- a/app/assets/javascripts/application.js
+++ b/app/assets/javascripts/application.js
@@ -20,6 +20,7 @@
//= require ractive-backbone
//= require Chart.bundle
//= require chartkick
+//= require fullcalendar
//= require_self
//= require_tree .
//= require turbolinks
diff --git a/app/assets/stylesheets/application.scss b/app/assets/stylesheets/application.scss
index af59f91..da39563 100644
--- a/app/assets/stylesheets/application.scss
+++ b/app/assets/stylesheets/application.scss
@@ -12,6 +12,7 @@
*
*= require font-awesome
*= require bulma
+ *= require fullcalendar
*= require_self
*/
diff --git a/app/controllers/workouts_controller.rb b/app/controllers/workouts_controller.rb
index 28d9dcf..f17f098 100644
--- a/app/controllers/workouts_controller.rb
+++ b/app/controllers/workouts_controller.rb
@@ -8,6 +8,10 @@ class WorkoutsController < ApplicationController
@workouts = recent_workouts(@exercise)
end
+ def calendar
+ @workouts = current_user.workouts.recent.includes(:routine)
+ end
+
def new
@routine = find_routine(params[:routine_id])
@all_routines = current_program.routines - [@routine]
diff --git a/app/views/workouts/calendar.html.erb b/app/views/workouts/calendar.html.erb
new file mode 100644
index 0000000..f9c83a7
--- /dev/null
+++ b/app/views/workouts/calendar.html.erb
@@ -0,0 +1,15 @@
+<div class="container">
+ <div class="columns">
+ <div class="column is-12">
+ <div id="calendar"></div>
+ </div>
+ </div>
+</div>
+
+<% content_for :javascript do %>
+ $(function(){
+ $('#calendar').fullCalendar({
+ events: <%= raw @workouts.map { |x| { title: x.routine.name, start: x.occurred_at.strftime("%Y-%m-%d") } }.to_json %>
+ });
+ });
+<% end %>
diff --git a/app/views/workouts/index.html.erb b/app/views/workouts/index.html.erb
index b514523..b8c3fff 100644
--- a/app/views/workouts/index.html.erb
+++ b/app/views/workouts/index.html.erb
@@ -57,6 +57,7 @@
<div class="columns">
<div class="column is-12">
+ <p class="has-text-right"><%= link_to t(".calendar"), calendar_workouts_path %></p>
<table class="table is-bordered is-striped is-narrow">
<thead>
<tr>
diff --git a/config/locales/en.yml b/config/locales/en.yml
index 83af3d0..b7cc3b0 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -109,6 +109,9 @@ en:
blurb_html: This is your custom email address for sending CSV exports from the <a href="http://stronglifts.com/apps/">StrongLifts 5x5 mobile application</a>.
copy: Copy
warning: To ensure your workouts are imported correctly we suggest that you update your timezone.
+ workouts:
+ index:
+ calendar: View Calendar
views:
pagination:
first: "&laquo; First"
diff --git a/config/routes.rb b/config/routes.rb
index 51cd89a..ebe2d0f 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -3,7 +3,11 @@ Rails.application.routes.draw do
resources :sessions, only: [:new, :create, :destroy]
resources :registrations, only: [:new, :create]
resources :sets, only: [:update]
- resources :workouts, only: [:index, :new, :create, :edit]
+ resources :workouts, only: [:index, :new, :create, :edit] do
+ collection do
+ get :calendar
+ end
+ end
resources :programs, only: [:show] do
collection do
get :texas_method