Compare commits

..

1 Commits

Author SHA1 Message Date
Matthew F. Short b40cccf2aa changes
10 years ago

@ -11,7 +11,7 @@ POST /session will create a new session, redirect to SPA page
---
## JSON
GET /session will return JSON object containing currently logged in user
GET /current_user will return JSON object containing currently logged in user
GET /transgressions will return array of transgressions complete with confessions subarray

@ -1,86 +0,0 @@
var app = angular.module('SinsApp', []);
//Header Controller
app.controller('HeaderController', ['$http', function($http){
var controller = this;
//Get current user fromroute
$http.get('/session').success(function(data){
//setting current user to data.current user because
//data comes back like {current_user:{email:'asdf.asdf'}}
controller.current_user = data.current_user;
})
}]);
//Transgressions Controller
app.controller('TransgressionsController', ['$http', function($http){
//get authenticity_token from DOM (rails injects it on load)
var authenticity_token = document.querySelector('meta[name="csrf-token"]').getAttribute('content');
var controller = this;
// Sin Types for Select in HTML
this.SIN_TYPES = [ 'Gluttony', 'Greed', 'Anger', 'Pride', 'Lust', 'Sloth', 'Envy' ];
this.newTransgressionSinType = 'Gluttony';
//this fetches transgression data and adds it to controller
this.getTransgressions = function(){
// get transgressions for current User
$http.get('/transgressions').success(function(data){
//just add the transgressions to the controller, data comes back with sinner as well
controller.current_user_transgressions = data.transgressions;
});
}
//fetch transgression data for current user as TransgressionsController initializes
this.getTransgressions();
// create a transgression
this.createTransgression = function(){
//as soon as function is called,
//get transgression data (from form)
//and push it onto controller's current_user_transgressions property
//this way the data is there immeditely, while we wait for the ajax calls to return
controller.current_user_transgressions.push({
sin_type: this.newTransgressionSinType + "...loading",
description: this.newTransgressionDescription + "...loading"
});
//make a post to /transgressions
$http.post('/transgressions', {
//include authenticity_token
authenticity_token: authenticity_token,
//values from form
transgression: {
sin_type: this.newTransgressionSinType,
description: this.newTransgressionDescription
}
}).success(function(data){
//once response to create transgression comes back,
//pop off what was pushed at beginning of this.createTransgression
//push the response's data on...
controller.current_user_transgressions.pop();
controller.current_user_transgressions.push(data.transgression);
//...and begin refreshing transgression data
controller.getTransgressions();
});
}
}]);
app.controller('ConfessionsController', ['$http', '$scope', function($http, $scope){
//get authenticity_token from DOM (rails injects it on load)
var authenticity_token = document.querySelector('meta[name="csrf-token"]').getAttribute('content');
// create a confession.!
this.createConfession = function(){
//AJAX call using parameter that identifies transgression
$http.post('/transgressions/'+$scope.$parent.transgression.id+'/confessions', {
//include authenticity_token
authenticity_token: authenticity_token,
confession: {
description: this.newConfessionDescription,
occurred_at: this.newConfessionDate
}
}).success(function(data){
//refresh transgression data once POST is complete
$scope.$parent.transgressionsCtrl.getTransgressions();
});
}
}]);

@ -0,0 +1 @@
alert("I'm home")

@ -5,14 +5,14 @@ class ApplicationController < ActionController::Base
helper_method :current_user
def angular
render '/angular_partial', layout: 'angular'
end
def welcome
render '/welcome'
end
def home
render '/home', layout: "angular"
end
private
def current_user

@ -13,12 +13,11 @@ class SessionController < ApplicationController
user.update(session_token: token)
flash[:message] = "Thanks for logging in, sinner."
redirect_to application_angular_path
else
flash[:message] = "Email / Password combo does not exist!"
redirect_to root_path
end
redirect_to application_home_path
end
def destroy

@ -1,45 +0,0 @@
<header ng-controller="HeaderController as header">
<h1>Greetings {{header.current_user.email}}, you are a glorious reprobate!</h1>
</header>
<main ng-controller="TransgressionsController as transgressionsCtrl">
<h2>This is How You've Pleased Me: Your Current Transgressions</h2>
<ul>
<li ng-repeat="transgression in transgressionsCtrl.current_user_transgressions">
Sin Type: {{transgression.sin_type}}
<br/>
Description: {{transgression.description}}
<div ng-controller="ConfessionsController as confessionsCtrl">
{{confessionsCtrl.bar}}
<h3>Show me what you got (confessions):</h3>
<ul>
<li ng-repeat="confession in transgression.confessions">
What happened: {{confession.description}}
<br/>
When: {{confession.occurred_at}}
</li>
</ul>
<!-- Confessions go are displayed/created -->
<h3>Add a confession (yum):</h3>
<form ng-submit="confessionsCtrl.createConfession()">
<input type="text" ng-model="confessionsCtrl.newConfessionDescription" placeholder="How did you please me?"/>
<br/>
<input type="text" ng-model="confessionsCtrl.newConfessionDate" placeholder="When did it happen?"/>
<br/>
<input type="submit" value="YESSS!" />
<br/>
<br/>
</form>
</div>
</li>
</ul>
<h2>The Flesh is Weak: Admit Your Transgressions</h2>
<form ng-submit="transgressionsCtrl.createTransgression()">
<select ng-model="transgressionsCtrl.newTransgressionSinType">
<option ng-repeat="sinType in transgressionsCtrl.SIN_TYPES">{{sinType}}</option>
</select>
<input type="text" ng-model="transgressionsCtrl.newTransgressionDescription" placeholder="How Have You Pleased Me?"/>
<input type="submit" value="Feed Me Your Regrets" />
</form>
</main>

@ -3,5 +3,5 @@ json.transgression_id @confession.transgression_id
json.confession do
json.id @confession.id
json.description @confession.description
json.occurred_at time_ago_in_words(@confession.occurred_at) + " ago"
json.occurred_at time_ago_in_words(@confession.created_at) + " ago"
end

@ -0,0 +1,4 @@
<!-- ANGULAR STUFF -->
<h1>Angular Is AWESOME</h1>
<%= javascript_include_tag 'angular/app.js' %>

@ -1,13 +1,13 @@
<!DOCTYPE html>
<html ng-app="SinsApp">
<html>
<head>
<title>TheSinsWeCommit</title>
<%= stylesheet_link_tag 'angular', media: 'all', 'data-turbolinks-track' => true %>
<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true %>
<%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>
<%= csrf_meta_tags %>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.7/angular.min.js" charset="utf-8"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.2/angular.min.js"></script>
</head>
<body>
<%= yield %>
<%= javascript_include_tag 'angular', 'data-turbolinks-track' => true %>
</body>
</html>

@ -7,24 +7,6 @@
<%= csrf_meta_tags %>
</head>
<body>
<%= render partial: 'layouts/header' %>
<% if flash[:message] %>
<div class="alert">
<%= flash[:message] %>
</div>
<% end %>
<%= yield %>
<% if current_user %>
<hr/>
<form action="<%= session_path %>" method="POST">
<input type="hidden" name="authenticity_token"
value="<%= form_authenticity_token %>">
<input type="hidden" name="_method" value="DELETE">
<input type="submit" value="Log Out!">
</form>
<% end %>
</body>
</html>

@ -10,6 +10,6 @@ json.transgressions(@transgressions) do |trans|
json.confessions(trans.confessions) do |conf|
json.id conf.id
json.description conf.description
json.occurred_at time_ago_in_words(conf.occurred_at) + " ago"
json.occurred_at time_ago_in_words(conf.created_at) + " ago"
end
end

@ -1,3 +1,10 @@
<%= render partial: 'layouts/header' %>
<% if flash[:message] %>
<div class="alert">
<%= flash[:message] %>
</div>
<% end %>
<h1>Welcome, sinner</h1>
<h3>Please sign <em>up</em> to lift your burdens</h3>
@ -27,3 +34,13 @@
placeholder="desired password"><br/>
<input type="submit" value="Sign in">
</form>
<% if current_user %>
<hr/>
<form action="<%= session_path %>" method="POST">
<input type="hidden" name="authenticity_token"
value="<%= form_authenticity_token %>">
<input type="hidden" name="_method" value="DELETE">
<input type="submit" value="Log Out!">
</form>
<% end %>

@ -8,4 +8,4 @@ Rails.application.config.assets.version = '1.0'
# Precompile additional assets.
# application.js, application.css, and all non-JS/CSS in app/assets folder are already added.
Rails.application.config.assets.precompile += %w( login_signup.js angular.js angular.css )
Rails.application.config.assets.precompile += %w( login_signup.js angular/app.js )

@ -1,7 +1,7 @@
Rails.application.routes.draw do
root 'application#welcome'
get 'application/angular'
get 'application/home' #, to: 'application#home', as: :application_home
resources :transgressions, only: [:index, :create], defaults: { format: :json } do
resources :confessions, only: [:create], shallow: true

@ -18,7 +18,7 @@ ActiveRecord::Schema.define(version: 20151102165102) do
create_table "confessions", force: :cascade do |t|
t.integer "transgression_id"
t.datetime "occurred_at", default: '2015-11-03 15:03:28', null: false
t.datetime "occurred_at", default: '2015-10-30 13:30:09', null: false
t.string "description", null: false
t.datetime "created_at", null: false
t.datetime "updated_at", null: false

Loading…
Cancel
Save