Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

w11-d1 #254

Open
wants to merge 4 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file modified .DS_Store
Binary file not shown.
Binary file modified cd20202/.DS_Store
Binary file not shown.
3 changes: 3 additions & 0 deletions cd20202/ang-weekend-lab/.bowerrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"directory": "public/vendor/"
}
2 changes: 2 additions & 0 deletions cd20202/ang-weekend-lab/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
node_modules
public/vendor
1 change: 1 addition & 0 deletions cd20202/ang-weekend-lab/Procfile
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
web: node server.js
1 change: 1 addition & 0 deletions cd20202/ang-weekend-lab/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Angular Weekend Lab
13 changes: 13 additions & 0 deletions cd20202/ang-weekend-lab/bower.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{
"name": "seed-mean-html",
"version": "1.0.0",
"dependencies": {
"angular": "latest",
"angular-ui-router": "~0.2.15",
"angular-resource": "latest",
"angular-sanitize": "latest",
"angular-touch": "latest",
"bootstrap": "latest",
"font-awesome": "latest"
}
}
35 changes: 35 additions & 0 deletions cd20202/ang-weekend-lab/models/post.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
/*
* POST MODEL
*/

var mongoose = require('mongoose'),
Schema = mongoose.Schema;

var PostSchema = new Schema({
created_at: {
type: Date,
default: Date.now()
},
updated_at: { type: Date },
content: {
type: String,
required: true,
trim: true
}
});

// MIDDLEWARE
PostSchema.pre('save', function(next){
// set a created_at and update updated_at
now = new Date();
this.updated_at = now;
if ( !this.created_at ) {
this.created_at = now;
}
next();
});

// export post model
var Post = mongoose.model('Post', PostSchema);

module.exports = Post;
30 changes: 30 additions & 0 deletions cd20202/ang-weekend-lab/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
{
"name": "seed-mean-html",
"version": "1.0.0",
"description": "MEAN seed project",
"main": "server.js",
"scripts": {
"test": "mocha",
"postinstall": "bower cache clean && bower install",
"start": "node server.js"
},
"devDependencies": {
"mocha": "*",
"chai": "*"
},
"engines": {
"node": "0.10.28",
"npm": "2.9.0"
},
"license": "ISC",
"dependencies": {
"body-parser": "^1.12.3",
"bower": "^1.4.1",
"ejs": "^2.3.3",
"express": "^4.13.3",
"mongoose": "^4.0.2"
},
"directories": {
"test": "test"
}
}
22 changes: 22 additions & 0 deletions cd20202/ang-weekend-lab/public/app.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
/*
* ANGULAR APP.JS
*/

'use strict';

angular.module('myApp', ['ui.router',
'myApp.controllers'])

.config(['$stateProvider', '$urlRouterProvider', '$locationProvider', function($stateProvider, $urlRouterProvider, $locationProvider) {
$stateProvider
.state('posts', {
url: "/",
templateUrl: 'templates/posts-index',
controller: 'PostsIndexCtrl'
});

$locationProvider.html5Mode({
enabled: true,
requireBase: false
});
}]);
37 changes: 37 additions & 0 deletions cd20202/ang-weekend-lab/public/controllers.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
/*
* CONTROLLERS
*/

'use strict';

angular.module('myApp.controllers', [])
.controller('MainCtrl', ['$rootScope', '$scope', '$location', function ($rootScope, $scope, $location) {
// INITIALIZATION AND NAVBAR LOGIC
}])

//POSTS
.controller('PostsIndexCtrl', ['$scope', '$location', '$http', function ($scope, $location, $http) {

$http.get("http://api.giphy.com/v1/gifs/search?q=funny+cat&api_key=dc6zaTOxFJmzC")
.success(function(response) {
$scope.gifs = response.data;
})
.error(function(response) {
alert("error: ", response);
});

$scope.searchGifs = function() {
$http.get("http://api.giphy.com/v1/gifs/search?q=" + $scope.term + "&api_key=dc6zaTOxFJmzC")
.success(function(response) {
$scope.gifs = response.data;
})
.error(function(response) {
alert("error: ", response);
});
};
$scope.deleteGif = function(gif) {
var index = $scope.gifs.indexOf(gif);
$scope.gifs.splice(index,1);
};

}]);
1 change: 1 addition & 0 deletions cd20202/ang-weekend-lab/public/css/style.css
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
/*PUT YOUR STYLES HERE*/
Binary file added cd20202/ang-weekend-lab/public/img/logo.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
14 changes: 14 additions & 0 deletions cd20202/ang-weekend-lab/routes/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
/*
* INDEX RESOURCES
*/

exports.index = function(req, res){
res.render('index');
};

exports.templates = function (req, res) {
var name = req.params.name;
res.render('templates/' + name);
};

exports.postRouter = require('./posts.js');
50 changes: 50 additions & 0 deletions cd20202/ang-weekend-lab/routes/posts.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
var express = require('express');
var postRouter = express.Router();

var Post = require('../models/post.js');

postRouter.route('/') // translates to '/api/posts/'
// send all posts
.get(function(request, response){
Post.find().sort('-created_at').exec(function(err, posts) {
if (err) { return response.status(404).send(err); }
response.send(posts);
});
})
// create new post
.post(function(req,res){
// var post = new Post({ content: req.body.content });
// post.save(function (err, post) {
Post.create({ content: req.body.content }, function(err, post){
if (err) { return res.send(err); }
console.log(post);
res.status(201).send(post);
});
});

postRouter.route('/:post_id') // translates to '/api/posts/:post_id'
// send one post by id
.get(function(req,res){
Post.findById(req.params.post_id, function(err, post) {
if (err) { return res.status(404).send(err); }
res.send(post);
});
})

// full update of one post by id
.put(function(req,res){
Post.findOneAndUpdate({ _id: req.params.post_id}, req.query.post, function (err, post) {
if (err) { return res.send(err); }
res.send(post);
});
})

// delete one post by id
.delete(function(req,res){
Post.findByIdAndRemove(req.params.post_id, function (err, post) {
if (err) { return res.send(err); }
res.status(200).send('Success');
});
});

module.exports = postRouter;
69 changes: 69 additions & 0 deletions cd20202/ang-weekend-lab/server.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
/*
* SERVER.JS - setup for server, modules, middleware, database
*/

// set up base express app
var express = require('express');
var app = express();

// other modules and middleware
var path = require('path'); // built-in module for dealing with file paths
var bodyParser = require('body-parser'); // parse form data into req.body
var mongoose = require('mongoose'); // object document mapper

// configure bodyparser
app.use(bodyParser.urlencoded({
extended: true
}));
app.use(bodyParser.json());

// connect to database
var dbName = 'seed-mean-html';
mongoose.connect(process.env.MONGOLAB_URI || 'mongodb://localhost/' + dbName);

// serve public folder as static assets on the root route
var publicPath = path.join(__dirname, 'public');
app.use("/", express.static(publicPath));

// alias the views folder
// var viewsPath = path.join(__dirname, 'views');
// app.set('views', viewsPath);

// set 'html' as the engine, using ejs's renderFile function
var ejs = require('ejs');
app.engine('html', ejs.renderFile);
app.set('view engine', 'html');

/*** ROUTES ***/
var routes = require('./routes');

// INDEX and TEMPLATE ROUTES
app.get('/', routes.index);
// app.get('/', function(request, response){
// response.render('index');
// });

app.get('/templates/:name', routes.templates);
// app.get('/templates/:name', function(request, response){
// var name = request.params.name;
// response.render('templates/' + name);
// });

// API ROUTES
// post routes
app.use('/api/posts', routes.postRouter);


// ALL OTHER ROUTES (ANGULAR HANDLES)
// redirect all other paths to index
app.get('*', routes.index);


// SERVER
process.env.NODE_ENV = process.env.NODE_ENV || 'development';
var port = process.env.PORT || 1337;

var server = require('http').createServer(app);
server = server.listen(port);
console.log(process.env.NODE_ENV + ' server running at port:' + port);

4 changes: 4 additions & 0 deletions cd20202/ang-weekend-lab/test/conf.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
exports.config = {
seleniumAddress: 'http://localhost:4444/wd/hub',
specs: ['gen-spec.js']
};
15 changes: 15 additions & 0 deletions cd20202/ang-weekend-lab/test/gen-spec.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
/*
* TESTS - PROTRACTOR
*/

// HERE ARE YOUR PROTRACTOR TESTS
// TO RUN THEM RUN THE FOLLOWING IN THE TERMINAL
// $ webdriver-manager start
// $ protractor test/conf.js

describe('Home Page', function() {
it('should have the correct title', function() {
browser.get('http://localhost:1337/');
expect(browser.getTitle()).toEqual('MEAN Seed');
});
})
71 changes: 71 additions & 0 deletions cd20202/ang-weekend-lab/views/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
<!DOCTYPE html>
<html lang="en" ng-app="myApp">
<head>
<meta charset="utf8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<meta name="description" content="">

<base href="/">
<title>MEAN Seed</title>

<!-- STYLESHEETS -->
<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css">
<link rel="stylesheet" href="http://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css">
<link rel="stylesheet" href="/css/animate.css">
<link rel="stylesheet" href="/css/style.css">
</head>

<body ng-controller="MainCtrl">
<nav class="navbar navbar-default animated slideInDown">
<div class="container-fluid">
<!-- Brand and toggle get grouped for better mobile display -->
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="/">MEAN Seed</a>
</div>

<!-- Collect the nav links, forms, and other content for toggling -->
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav">
</ul>
<ul class="nav navbar-nav navbar-right">
<!-- <li ng-hide='isLoggedIn' ng-cloak><a href="/login">Login</a></li>
<li ng-hide='isLoggedIn' ng-cloak><a href="/sign-up">Signup</a></li>
--> <li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false"><span class="caret"></span></a>
<ul class="dropdown-menu">
<li><a href="#">Action</a></li>
<li><a href="#">Another action</a></li>
<li><a href="#">Something else here</a></li>
</ul>
</li>
</ul>
</div><!-- /.navbar-collapse -->
</div><!-- /.container-fluid -->
</nav>

<!-- ANGULAR APP INSERTER HERE -->
<div ui-view class="container"></div>

</body>

<!-- THIRD PARTY LIBRARIES -->
<script src="//code.jquery.com/jquery-1.9.1.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>
<script src="//code.jquery.com/ui/1.10.3/jquery-ui.js"></script>
<script type="text/javascript" src="/vendor/angular/angular.js"></script>
<script type="text/javascript" src="/vendor/angular-resource/angular-resource.js"></script>
<script type="text/javascript" src="/vendor/angular-ui-router/release/angular-ui-router.js"></script>
<script type="text/javascript" src="/vendor/angular-sanitize/angular-sanitize.js"></script>
<script type="text/javascript" src="/vendor/angular-touch/angular-touch.js"></script>

<!-- YOUR SCRIPTS -->
<script type="text/javascript" src="/app.js"></script>
<script type="text/javascript" src="/controllers.js"></script>
</html>
Loading